@knpkv/control-center 0.3.0 → 0.4.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.md +52 -9
- package/dist/client/.vite/manifest.json +183 -170
- package/dist/client/assets/{ActiveWorkPage-DJQgGZeV.js → ActiveWorkPage-Dd1mxPrq.js} +2 -2
- package/dist/client/assets/{ActiveWorkPage-DJQgGZeV.js.map → ActiveWorkPage-Dd1mxPrq.js.map} +1 -1
- package/dist/client/assets/AgentPage-C3LThgPZ.js +3 -0
- package/dist/client/assets/AgentPage-C3LThgPZ.js.map +1 -0
- package/dist/client/assets/{AtlassianOAuthCallbackPage-D1F1xE_2.js → AtlassianOAuthCallbackPage-BPoF6oKf.js} +2 -2
- package/dist/client/assets/{AtlassianOAuthCallbackPage-D1F1xE_2.js.map → AtlassianOAuthCallbackPage-BPoF6oKf.js.map} +1 -1
- package/dist/client/assets/AuthorizedSharePage-jjqu6W_f.js +2 -0
- package/dist/client/assets/AuthorizedSharePage-jjqu6W_f.js.map +1 -0
- package/dist/client/assets/BrowserCrypto-BMbjhcvP.js +2 -0
- package/dist/client/assets/{BrowserCrypto-DVWR7DFd.js.map → BrowserCrypto-BMbjhcvP.js.map} +1 -1
- package/dist/client/assets/BrowserSessionHydrator-BC1ymLkL.js +2 -0
- package/dist/client/assets/BrowserSessionHydrator-BC1ymLkL.js.map +1 -0
- package/dist/client/assets/CommandSearch-WwAVDrD9.js +2 -0
- package/dist/client/assets/{CommandSearch-CP_QCbkm.js.map → CommandSearch-WwAVDrD9.js.map} +1 -1
- package/dist/client/assets/ItemsPage-CKK_KkJ2.js +2 -0
- package/dist/client/assets/{ItemsPage-BGFUkRL2.js.map → ItemsPage-CKK_KkJ2.js.map} +1 -1
- package/dist/client/assets/{PairPage-DIgzx0K2.js → PairPage-DA6cmyqF.js} +2 -2
- package/dist/client/assets/{PairPage-DIgzx0K2.js.map → PairPage-DA6cmyqF.js.map} +1 -1
- package/dist/client/assets/PortfolioOverview-CEI4gpXi.js +2 -0
- package/dist/client/assets/PortfolioOverview-CEI4gpXi.js.map +1 -0
- package/dist/client/assets/PullRequestReviewPanel-D7AKnwL-.js +6 -0
- package/dist/client/assets/PullRequestReviewPanel-D7AKnwL-.js.map +1 -0
- package/dist/client/assets/ReleaseRoute-CbPW3qUT.js +2 -0
- package/dist/client/assets/{ReleaseRoute-DXJ8Jg60.js.map → ReleaseRoute-CbPW3qUT.js.map} +1 -1
- package/dist/client/assets/ReleaseWorkset-BluAe7Sq.js +2 -0
- package/dist/client/assets/{ReleaseWorkset-Dtzalmji.js.map → ReleaseWorkset-BluAe7Sq.js.map} +1 -1
- package/dist/client/assets/ServicesPage-_B89DAvG.js +2 -0
- package/dist/client/assets/ServicesPage-_B89DAvG.js.map +1 -0
- package/dist/client/assets/TimelinePage-DvpgD8AY.js +2 -0
- package/dist/client/assets/TimelinePage-DvpgD8AY.js.map +1 -0
- package/dist/client/assets/WorkspaceEntityLink-DPj6MKI2.js +2 -0
- package/dist/client/assets/{WorkspaceEntityLink-AdZ_T-Wk.js.map → WorkspaceEntityLink-DPj6MKI2.js.map} +1 -1
- package/dist/client/assets/WorkspaceEntityRoute-B01fxxB3.js +3 -0
- package/dist/client/assets/WorkspaceEntityRoute-B01fxxB3.js.map +1 -0
- package/dist/client/assets/{WorkspaceHomeLink-XbKSPths.js → WorkspaceHomeLink-CkJfzO25.js} +2 -2
- package/dist/client/assets/{WorkspaceHomeLink-XbKSPths.js.map → WorkspaceHomeLink-CkJfzO25.js.map} +1 -1
- package/dist/client/assets/WorkspacePullRequestDetails-HwDgp12e.js +3 -0
- package/dist/client/assets/WorkspacePullRequestDetails-HwDgp12e.js.map +1 -0
- package/dist/client/assets/{WorkspaceReleaseLayout-cfboC5Qh.js → WorkspaceReleaseLayout-CGHi8eoo.js} +2 -2
- package/dist/client/assets/{WorkspaceReleaseLayout-cfboC5Qh.js.map → WorkspaceReleaseLayout-CGHi8eoo.js.map} +1 -1
- package/dist/client/assets/{WorkspaceSettingsPage-Fy7Wx8Y2.js → WorkspaceSettingsPage-DyoGiGJG.js} +2 -2
- package/dist/client/assets/{WorkspaceSettingsPage-Fy7Wx8Y2.js.map → WorkspaceSettingsPage-DyoGiGJG.js.map} +1 -1
- package/dist/client/assets/agent-api-CeONl_8w.js +19 -0
- package/dist/client/assets/agent-api-CeONl_8w.js.map +1 -0
- package/dist/client/assets/authenticatedMutationClient-DYaieXUe.js +2 -0
- package/dist/client/assets/{authenticatedMutationClient-Ccwguc3i.js.map → authenticatedMutationClient-DYaieXUe.js.map} +1 -1
- package/dist/client/assets/authorizedShareTransport-cxBoQzQ2.js +2 -0
- package/dist/client/assets/{authorizedShareTransport-DZHgFEkh.js.map → authorizedShareTransport-cxBoQzQ2.js.map} +1 -1
- package/dist/client/assets/client-DKS82kT_.js +5 -0
- package/dist/client/assets/client-DKS82kT_.js.map +1 -0
- package/dist/client/assets/connectionTestTransport-I_Ga9UNs.js +2 -0
- package/dist/client/assets/{connectionTestTransport-BQ55d6Me.js.map → connectionTestTransport-I_Ga9UNs.js.map} +1 -1
- package/dist/client/assets/index-C7_FDTU7.js +11 -0
- package/dist/client/assets/index-C7_FDTU7.js.map +1 -0
- package/dist/client/assets/{patterns-5N-j-AD2-BwypFm-e.js → patterns-5N-j-AD2-B9qgekXA.js} +2 -2
- package/dist/client/assets/{patterns-5N-j-AD2-BwypFm-e.js.map → patterns-5N-j-AD2-B9qgekXA.js.map} +1 -1
- package/dist/client/assets/{presentPortfolio-D3ZIcnqt.js → presentPortfolio-C_JsoSWg.js} +2 -2
- package/dist/client/assets/presentPortfolio-C_JsoSWg.js.map +1 -0
- package/dist/client/assets/{presentWorkspaceItems-Bmh4oEbH.js → presentWorkspaceItems-DboAfwGc.js} +2 -2
- package/dist/client/assets/{presentWorkspaceItems-Bmh4oEbH.js.map → presentWorkspaceItems-DboAfwGc.js.map} +1 -1
- package/dist/client/assets/{pullRequestReviewFailures-S74M-fOk.js → pullRequestReviewFailures-DHmYwffV.js} +2 -2
- package/dist/client/assets/{pullRequestReviewFailures-S74M-fOk.js.map → pullRequestReviewFailures-DHmYwffV.js.map} +1 -1
- package/dist/client/assets/pullRequestReviewThreadReplay-Vy1k53qE.js +2 -0
- package/dist/client/assets/pullRequestReviewThreadReplay-Vy1k53qE.js.map +1 -0
- package/dist/client/assets/releaseRoutes-t9uCfs5T.js +2 -0
- package/dist/client/assets/{releaseRoutes-BCuIdZyA.js.map → releaseRoutes-t9uCfs5T.js.map} +1 -1
- package/dist/client/assets/serviceOnboarding-DLINCon7.js +2 -0
- package/dist/client/assets/{serviceOnboarding-Jg_0yNjf.js.map → serviceOnboarding-DLINCon7.js.map} +1 -1
- package/dist/client/assets/{useWorkspaceDefaultLanding-CzlDdEF-.js → useWorkspaceDefaultLanding-CC5ImHkL.js} +3 -3
- package/dist/client/assets/{useWorkspaceDefaultLanding-CzlDdEF-.js.map → useWorkspaceDefaultLanding-CC5ImHkL.js.map} +1 -1
- package/dist/client/assets/{useWorkspaceItems-Cd3MPke2.js → useWorkspaceItems-B1X-JNwq.js} +2 -2
- package/dist/client/assets/{useWorkspaceItems-Cd3MPke2.js.map → useWorkspaceItems-B1X-JNwq.js.map} +1 -1
- package/dist/client/assets/workspaceEntityRoutes-2TejMrzb.js +2 -0
- package/dist/client/assets/workspaceEntityRoutes-2TejMrzb.js.map +1 -0
- package/dist/client/assets/workspaceScrollCapture-BsjcWVsk.js +2 -0
- package/dist/client/assets/workspaceScrollCapture-BsjcWVsk.js.map +1 -0
- package/dist/client/assets/workspaceSettingsTransport-Dw2hueXv.js +2 -0
- package/dist/client/assets/{workspaceSettingsTransport-CZWYL5T7.js.map → workspaceSettingsTransport-Dw2hueXv.js.map} +1 -1
- package/dist/client/build-graph.json +17 -0
- package/dist/client/index.html +1 -1
- package/dist/server/api/agent.d.ts +563 -44
- package/dist/server/api/agent.d.ts.map +1 -1
- package/dist/server/api/deliveryGraph.d.ts +454 -454
- package/dist/server/api/index.d.ts +1 -1
- package/dist/server/api/index.d.ts.map +1 -1
- package/dist/server/api/index.js +4 -4
- package/dist/server/api/liveEvents.d.ts +20 -0
- package/dist/server/api/liveEvents.d.ts.map +1 -1
- package/dist/server/api/portfolio.d.ts +23 -0
- package/dist/server/api/portfolio.d.ts.map +1 -1
- package/dist/server/api/shares.d.ts +2 -2
- package/dist/server/assets/{BindConfig-DIsf2Rnh.js → BindConfig-Bj282xDC.js} +2094 -290
- package/dist/server/assets/BindConfig-Bj282xDC.js.map +1 -0
- package/dist/server/assets/{CodePipelineStateDecoder-CVf1A2zG.js → CodePipelineStateDecoder-CNiFRgSi.js} +2 -2
- package/dist/server/assets/{CodePipelineStateDecoder-CVf1A2zG.js.map → CodePipelineStateDecoder-CNiFRgSi.js.map} +1 -1
- package/dist/server/assets/{agent-CyZ40zs1.js → agent-ZvwskOQu.js} +160 -10
- package/dist/server/assets/agent-ZvwskOQu.js.map +1 -0
- package/dist/server/assets/{controlCenterApi-ZUX3Y-LE.js → controlCenterApi-5j3gOXgE.js} +5 -5
- package/dist/server/assets/{controlCenterApi-ZUX3Y-LE.js.map → controlCenterApi-5j3gOXgE.js.map} +1 -1
- package/dist/server/assets/{descriptor-CKtTnhef.js → descriptor-CCvNzSZL.js} +10 -10
- package/dist/server/assets/{descriptor-CKtTnhef.js.map → descriptor-CCvNzSZL.js.map} +1 -1
- package/dist/server/assets/{failures-mgYDkUZy.js → failures-CesHLYbN.js} +2 -2
- package/dist/server/assets/{failures-mgYDkUZy.js.map → failures-CesHLYbN.js.map} +1 -1
- package/dist/server/assets/{firstPartyServices-D7b8BOek.js → firstPartyServices-Cdzjcs2H.js} +2 -2
- package/dist/server/assets/{firstPartyServices-D7b8BOek.js.map → firstPartyServices-Cdzjcs2H.js.map} +1 -1
- package/dist/server/assets/{manualPluginSynchronization-DFlhKvav.js → manualPluginSynchronization-CzIhZ_Dw.js} +5 -5
- package/dist/server/assets/{manualPluginSynchronization-DFlhKvav.js.map → manualPluginSynchronization-CzIhZ_Dw.js.map} +1 -1
- package/dist/server/assets/{plugins-D__oMDpI.js → plugins-DiPrfzV8.js} +2 -2
- package/dist/server/assets/{plugins-D__oMDpI.js.map → plugins-DiPrfzV8.js.map} +1 -1
- package/dist/server/assets/{readiness-BhA-Nr9c.js → readiness-BtntBhDj.js} +3 -3
- package/dist/server/assets/{readiness-BhA-Nr9c.js.map → readiness-BtntBhDj.js.map} +1 -1
- package/dist/server/assets/{relationshipInferenceMaterialization-DYBcaWhQ.js → relationshipInferenceMaterialization-CR6xyMNL.js} +1121 -159
- package/dist/server/assets/relationshipInferenceMaterialization-CR6xyMNL.js.map +1 -0
- package/dist/server/assets/{workspaceSettings-BE713Oe8.js → workspaceSettings-C2Zsk6RI.js} +2784 -2700
- package/dist/server/assets/workspaceSettings-C2Zsk6RI.js.map +1 -0
- package/dist/server/build-graph.json +117 -4
- package/dist/server/domain/actors.d.ts +12 -12
- package/dist/server/domain/deliveryGraph.d.ts +49 -49
- package/dist/server/domain/governedAction/bindings.d.ts +24 -12
- package/dist/server/domain/governedAction/bindings.d.ts.map +1 -1
- package/dist/server/domain/governedAction/lifecycle.d.ts +8 -8
- package/dist/server/domain/governedAction/model.d.ts +39 -18
- package/dist/server/domain/governedAction/model.d.ts.map +1 -1
- package/dist/server/domain/governedAction/stateMachine.d.ts +34 -34
- package/dist/server/domain/index.js +6 -6
- package/dist/server/domain/normalizedIssue.d.ts +1 -1
- package/dist/server/domain/prReview.d.ts +38 -0
- package/dist/server/domain/prReview.d.ts.map +1 -1
- package/dist/server/domain/prReviewReconciliation.d.ts +56 -0
- package/dist/server/domain/prReviewReconciliation.d.ts.map +1 -0
- package/dist/server/domain/prReviewRevision.d.ts +1 -0
- package/dist/server/domain/prReviewRevision.d.ts.map +1 -1
- package/dist/server/domain/readiness/model.d.ts +3 -3
- package/dist/server/domain/release.d.ts +3 -3
- package/dist/server/domain/releasePublication.d.ts +4 -0
- package/dist/server/domain/releasePublication.d.ts.map +1 -0
- package/dist/server/index.js +8 -8
- package/dist/server/server/agent/AgentJobWorker.d.ts +10 -1
- package/dist/server/server/agent/AgentJobWorker.d.ts.map +1 -1
- package/dist/server/server/agent/ReleaseAgentPrompt.d.ts.map +1 -1
- package/dist/server/server/agent/internal/AgentJobTaskExecutor.d.ts +4 -3
- package/dist/server/server/agent/internal/AgentJobTaskExecutor.d.ts.map +1 -1
- package/dist/server/server/agent/internal/PrReviewSandboxSession.d.ts +17 -1
- package/dist/server/server/agent/internal/PrReviewSandboxSession.d.ts.map +1 -1
- package/dist/server/server/agent/internal/PrReviewTaskExecutor.d.ts +76 -2
- package/dist/server/server/agent/internal/PrReviewTaskExecutor.d.ts.map +1 -1
- package/dist/server/server/agent/internal/PrReviewTelemetry.d.ts +27 -0
- package/dist/server/server/agent/internal/PrReviewTelemetry.d.ts.map +1 -0
- package/dist/server/server/api/ApplicationServices.d.ts +39 -5
- package/dist/server/server/api/ApplicationServices.d.ts.map +1 -1
- package/dist/server/server/api/Handlers.d.ts.map +1 -1
- package/dist/server/server/api/RequestBoundary.d.ts.map +1 -1
- package/dist/server/server/application/GovernedReviewSuggestionPublicationGateway.d.ts.map +1 -1
- package/dist/server/server/application/ReviewSuggestionPublicationGateway.d.ts +4 -0
- package/dist/server/server/application/ReviewSuggestionPublicationGateway.d.ts.map +1 -1
- package/dist/server/server/application/index.d.ts +1 -0
- package/dist/server/server/application/index.d.ts.map +1 -1
- package/dist/server/server/application/liveEvents.d.ts.map +1 -1
- package/dist/server/server/application/pipelineExecutionProjection.d.ts +6 -6
- package/dist/server/server/application/portfolioSnapshots.d.ts +2014 -4
- package/dist/server/server/application/portfolioSnapshots.d.ts.map +1 -1
- package/dist/server/server/application/pullRequestReviews.d.ts.map +1 -1
- package/dist/server/server/application/releaseAgent.d.ts +11 -3
- package/dist/server/server/application/releaseAgent.d.ts.map +1 -1
- package/dist/server/server/application/releasePublicationIntent.d.ts +7 -0
- package/dist/server/server/application/releasePublicationIntent.d.ts.map +1 -0
- package/dist/server/server/application/releasePublicationMetadata.d.ts +61 -0
- package/dist/server/server/application/releasePublicationMetadata.d.ts.map +1 -0
- package/dist/server/server/application/releasePublicationSubmissions.d.ts +3699 -0
- package/dist/server/server/application/releasePublicationSubmissions.d.ts.map +1 -0
- package/dist/server/server/application/releaseSynchronization.d.ts.map +1 -1
- package/dist/server/server/cli.js +8 -8
- package/dist/server/server/cli.js.map +1 -1
- package/dist/server/server/governance/governedActionDigests.d.ts +233 -218
- package/dist/server/server/governance/governedActionDigests.d.ts.map +1 -1
- package/dist/server/server/governance/internal/GovernedActionExecutionEngine.d.ts +3 -4
- package/dist/server/server/governance/internal/GovernedActionExecutionEngine.d.ts.map +1 -1
- package/dist/server/server/governance/internal/execution-store/begin.d.ts.map +1 -1
- package/dist/server/server/governance/internal/execution-store/dispatch-inbox.d.ts +1 -1
- package/dist/server/server/governance/internal/execution-store/dispatch-outcome.d.ts +8 -8
- package/dist/server/server/governance/internal/execution-store/provider-outcome-fold.d.ts +2 -2
- package/dist/server/server/governance/internal/execution-store/reconciliation-inbox.d.ts +1 -1
- package/dist/server/server/governance/internal/execution-store/recovery-claim.d.ts +36 -30
- package/dist/server/server/governance/internal/execution-store/recovery-claim.d.ts.map +1 -1
- package/dist/server/server/index.js +5 -5
- package/dist/server/server/internal/codepipeline-state-probe.js +1 -1
- package/dist/server/server/persistence/Database.d.ts +1 -1
- package/dist/server/server/persistence/Database.d.ts.map +1 -1
- package/dist/server/server/persistence/Persistence.d.ts +1539 -577
- package/dist/server/server/persistence/Persistence.d.ts.map +1 -1
- package/dist/server/server/persistence/backup/BackupArchive.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/agentJobModels.d.ts +345 -8
- package/dist/server/server/persistence/repositories/agentJobModels.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/agentJobRepository.d.ts +654 -192
- package/dist/server/server/persistence/repositories/agentJobRepository.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/delivery-graph/contract.d.ts +138 -138
- package/dist/server/server/persistence/repositories/delivery-graph/decode.d.ts +25 -25
- package/dist/server/server/persistence/repositories/delivery-graph/read.d.ts +111 -111
- package/dist/server/server/persistence/repositories/delivery-graph/rows.d.ts +27 -27
- package/dist/server/server/persistence/repositories/delivery-graph/write.d.ts +48 -48
- package/dist/server/server/persistence/repositories/deliveryGraphRepository.d.ts +111 -111
- package/dist/server/server/persistence/repositories/governed-action/codec.d.ts +255 -234
- package/dist/server/server/persistence/repositories/governed-action/codec.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/governed-action/contract.d.ts +66 -46
- package/dist/server/server/persistence/repositories/governed-action/contract.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/governed-action/read.d.ts +664 -190
- package/dist/server/server/persistence/repositories/governed-action/read.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/governed-action/transaction.d.ts +676 -206
- package/dist/server/server/persistence/repositories/governed-action/transaction.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/governed-action/write-preparation.d.ts +37 -31
- package/dist/server/server/persistence/repositories/governed-action/write-preparation.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/governed-action/write-replay.d.ts +44 -32
- package/dist/server/server/persistence/repositories/governed-action/write-replay.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/governed-action/write.d.ts +44 -32
- package/dist/server/server/persistence/repositories/governed-action/write.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/governedActionRepository.d.ts +674 -205
- package/dist/server/server/persistence/repositories/governedActionRepository.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/internal/reviewSuggestionRevisions.d.ts +85 -4
- package/dist/server/server/persistence/repositories/internal/reviewSuggestionRevisions.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/models.d.ts +9 -9
- package/dist/server/server/persistence/repositories/peopleRepository.d.ts +36 -36
- package/dist/server/server/persistence/repositories/providerAccountRepository.d.ts +1 -1
- package/dist/server/server/persistence/repositories/readiness/assessments.d.ts +6 -6
- package/dist/server/server/persistence/repositories/readiness/contract.d.ts +450 -450
- package/dist/server/server/persistence/repositories/readiness/queue.d.ts +14 -14
- package/dist/server/server/persistence/repositories/readinessRepository.d.ts +7 -7
- package/dist/server/server/persistence/repositories/releaseRepository.d.ts +18 -18
- package/dist/server/server/persistence/repositories/retentionRepository.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/timelineRepository.d.ts +4 -4
- package/dist/server/server/plugins/atlassian/AtlassianOAuthGrants.d.ts.map +1 -1
- package/dist/server/server/plugins/atlassian/AtlassianOAuthScopes.d.ts +9 -0
- package/dist/server/server/plugins/atlassian/AtlassianOAuthScopes.d.ts.map +1 -0
- package/dist/server/server/plugins/atlassian/AtlassianProfiles.d.ts.map +1 -1
- package/dist/server/server/plugins/codecommit/CodeCommitPluginDefinition.d.ts.map +1 -1
- package/dist/server/server/plugins/jira/JiraReadPlugin.d.ts +2 -2
- package/dist/server/server/plugins/jira/JiraReadPlugin.d.ts.map +1 -1
- package/dist/server/server/plugins/jira/JiraReadProvider.d.ts.map +1 -1
- package/dist/server/server/plugins/jira/JiraReleaseVersionLimits.d.ts +8 -0
- package/dist/server/server/plugins/jira/JiraReleaseVersionLimits.d.ts.map +1 -0
- package/dist/server/server/plugins/jira/index.d.ts +1 -1
- package/dist/server/server/plugins/jira/index.d.ts.map +1 -1
- package/dist/server/server/runtime/Bootstrap.d.ts +1 -1
- package/dist/server/server/runtime/Bootstrap.d.ts.map +1 -1
- package/dist/server/server/runtime/ControlCenterServer.d.ts +3 -3
- package/dist/server/server/runtime/ControlCenterServer.d.ts.map +1 -1
- package/dist/server/server/runtime/PrReviewWorkerStartup.d.ts +11 -1
- package/dist/server/server/runtime/PrReviewWorkerStartup.d.ts.map +1 -1
- package/dist/server/server/runtime/RetentionStartup.d.ts.map +1 -1
- package/dist/server/server/runtime/ServerLifecycle.d.ts.map +1 -1
- package/dist/server/server/secrets/SecretStore.d.ts.map +1 -1
- package/package.json +9 -8
- package/dist/client/assets/AgentPage-DGL93TJU.js +0 -3
- package/dist/client/assets/AgentPage-DGL93TJU.js.map +0 -1
- package/dist/client/assets/AuthorizedSharePage-DCQUFY2I.js +0 -2
- package/dist/client/assets/AuthorizedSharePage-DCQUFY2I.js.map +0 -1
- package/dist/client/assets/BrowserCrypto-DVWR7DFd.js +0 -2
- package/dist/client/assets/BrowserSessionHydrator-DE46feEX.js +0 -2
- package/dist/client/assets/BrowserSessionHydrator-DE46feEX.js.map +0 -1
- package/dist/client/assets/CommandSearch-CP_QCbkm.js +0 -2
- package/dist/client/assets/ItemsPage-BGFUkRL2.js +0 -2
- package/dist/client/assets/PortfolioOverview-D45rk8Hl.js +0 -2
- package/dist/client/assets/PortfolioOverview-D45rk8Hl.js.map +0 -1
- package/dist/client/assets/PullRequestReviewPanel-CqPtjhVW.js +0 -6
- package/dist/client/assets/PullRequestReviewPanel-CqPtjhVW.js.map +0 -1
- package/dist/client/assets/ReleaseRoute-DXJ8Jg60.js +0 -2
- package/dist/client/assets/ReleaseWorkset-Dtzalmji.js +0 -2
- package/dist/client/assets/ServicesPage-DGcUjd2H.js +0 -2
- package/dist/client/assets/ServicesPage-DGcUjd2H.js.map +0 -1
- package/dist/client/assets/TimelinePage-Bq1RTQlP.js +0 -2
- package/dist/client/assets/TimelinePage-Bq1RTQlP.js.map +0 -1
- package/dist/client/assets/WorkspaceEntityLink-AdZ_T-Wk.js +0 -2
- package/dist/client/assets/WorkspaceEntityRoute-Bxxnc8us.js +0 -3
- package/dist/client/assets/WorkspaceEntityRoute-Bxxnc8us.js.map +0 -1
- package/dist/client/assets/WorkspacePullRequestDetails-BErJ5bk8.js +0 -3
- package/dist/client/assets/WorkspacePullRequestDetails-BErJ5bk8.js.map +0 -1
- package/dist/client/assets/agent-api-QVqt4a0O.js +0 -19
- package/dist/client/assets/agent-api-QVqt4a0O.js.map +0 -1
- package/dist/client/assets/authenticatedMutationClient-Ccwguc3i.js +0 -2
- package/dist/client/assets/authorizedShareTransport-DZHgFEkh.js +0 -2
- package/dist/client/assets/client-D27unen8.js +0 -5
- package/dist/client/assets/client-D27unen8.js.map +0 -1
- package/dist/client/assets/connectionTestTransport-BQ55d6Me.js +0 -2
- package/dist/client/assets/index-j5ze816l.js +0 -11
- package/dist/client/assets/index-j5ze816l.js.map +0 -1
- package/dist/client/assets/presentPortfolio-D3ZIcnqt.js.map +0 -1
- package/dist/client/assets/pullRequestReviewThreadReplay-oljKM7Xz.js +0 -2
- package/dist/client/assets/pullRequestReviewThreadReplay-oljKM7Xz.js.map +0 -1
- package/dist/client/assets/releaseRoutes-BCuIdZyA.js +0 -2
- package/dist/client/assets/serviceOnboarding-Jg_0yNjf.js +0 -2
- package/dist/client/assets/workspaceScrollCapture-CJ4QUptr.js +0 -2
- package/dist/client/assets/workspaceScrollCapture-CJ4QUptr.js.map +0 -1
- package/dist/client/assets/workspaceSettingsTransport-CZWYL5T7.js +0 -2
- package/dist/server/assets/BindConfig-DIsf2Rnh.js.map +0 -1
- package/dist/server/assets/agent-CyZ40zs1.js.map +0 -1
- package/dist/server/assets/relationshipInferenceMaterialization-DYBcaWhQ.js.map +0 -1
- package/dist/server/assets/workspaceSettings-BE713Oe8.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workspaceSettings-BE713Oe8.js","names":[],"sources":["../../../src/domain/agentProviderIdentifier.ts","../../../src/domain/prReview.ts","../../../src/domain/prReviewRevision.ts","../../../src/domain/freshness.ts","../../../src/domain/readiness/policy.ts","../../../src/domain/readiness/model.ts","../../../src/domain/actors.ts","../../../src/domain/releaseRelay.ts","../../../src/domain/release.ts","../../../src/domain/normalizedIssue.ts","../../../src/domain/normalizedPage.ts","../../../src/domain/deliveryGraph.ts","../../../src/domain/domainEvent.ts","../../../src/domain/governedAction/model.ts","../../../src/domain/governedAction/bindings.ts","../../../src/domain/governedAction/stateMachine.ts","../../../src/domain/governedAction/lifecycle.ts","../../../src/domain/relationshipRepair.ts","../../../src/domain/timeline.ts","../../../src/domain/workspaceSettings.ts"],"sourcesContent":["import * as Schema from \"effect/Schema\"\n\n/**\n * Canonical provider identifier accepted at Control Center settings, API, and\n * runtime-registry boundaries.\n */\nexport const AgentProviderIdentifier = Schema.String.check(\n Schema.isTrimmed(),\n Schema.isNonEmpty(),\n Schema.isMaxLength(200),\n Schema.isPattern(/^[a-z0-9][a-z0-9._-]*$/u, {\n expected: \"a lowercase agent provider identifier\"\n })\n)\n","/** Evidence-anchored pull-request review suggestion contracts. @module */\nimport * as Effect from \"effect/Effect\"\nimport * as Schema from \"effect/Schema\"\n\n/** Maximum UTF-8 JSON size retained inside the existing durable event envelope. */\nexport const MAXIMUM_PR_REVIEW_REPORT_BYTES = 32_768\n\nconst jsonEncoder = new TextEncoder()\n\nconst hasNoControlCharacters = (value: string): boolean =>\n Array.from(value).every((character) => {\n const codePoint = character.codePointAt(0)\n return (\n codePoint !== undefined && !((codePoint >= 0 && codePoint <= 0x1f) || (codePoint >= 0x7f && codePoint <= 0x9f))\n )\n })\n\nconst hasNoUnsafeMultilineControlCharacters = (value: string): boolean =>\n Array.from(value).every((character) => {\n const codePoint = character.codePointAt(0)\n return (\n codePoint !== undefined &&\n (codePoint === 0x09 ||\n codePoint === 0x0a ||\n codePoint === 0x0d ||\n !((codePoint >= 0 && codePoint <= 0x1f) || (codePoint >= 0x7f && codePoint <= 0x9f)))\n )\n })\n\nconst boundedSingleLine = (maximumLength: number, identifier: string) =>\n Schema.String.check(\n Schema.isTrimmed(),\n Schema.isNonEmpty(),\n Schema.isMaxLength(maximumLength),\n Schema.makeFilter(hasNoControlCharacters, { expected: \"text without control characters\" })\n ).annotate({ identifier })\n\nconst boundedMultiline = (maximumLength: number, identifier: string) =>\n Schema.String.check(\n Schema.isTrimmed(),\n Schema.isNonEmpty(),\n Schema.isMaxLength(maximumLength),\n Schema.makeFilter(hasNoUnsafeMultilineControlCharacters, {\n expected: \"text without unsafe control characters\"\n })\n ).annotate({ identifier })\n\nconst isSafeRepositoryPath = (value: string): boolean => {\n if (value.startsWith(\"/\") || value.startsWith(\"\\\\\") || /^[A-Za-z]:/u.test(value) || value.includes(\"\\\\\")) return false\n const segments = value.split(\"/\")\n return segments.every((segment) => segment.length > 0 && segment !== \".\" && segment !== \"..\")\n}\n\n/** Normalized repository-relative path safe to compare with an immutable diff. */\nexport const PrReviewPath = boundedSingleLine(1_024, \"PrReviewPath\")\n .check(\n Schema.makeFilter(isSafeRepositoryPath, {\n expected: \"a normalized repository-relative path without traversal\"\n })\n )\n .pipe(Schema.brand(\"PrReviewPath\"))\n\n/** Decoded normalized PR-review path. */\nexport type PrReviewPath = typeof PrReviewPath.Type\n\n/** Exact immutable pull request revision reviewed by an agent. */\nexport const PrReviewSubject = Schema.Struct({\n providerId: Schema.Literal(\"codecommit\"),\n repository: boundedSingleLine(200, \"PrReviewRepository\"),\n pullRequestId: boundedSingleLine(512, \"PrReviewPullRequestId\"),\n baseRevision: boundedSingleLine(512, \"PrReviewBaseRevision\"),\n headRevision: boundedSingleLine(512, \"PrReviewHeadRevision\")\n}).annotate({ identifier: \"PrReviewSubject\" })\n\n/** Decoded immutable pull request review subject. */\nexport type PrReviewSubject = typeof PrReviewSubject.Type\n\n/** Static or behavioral enforcement layer proposed by one suggestion. */\nexport const PrReviewPreventionEnforcement = Schema.Literals([\n \"ast-grep\",\n \"ESLint\",\n \"type-check\",\n \"test\",\n \"instruction\"\n])\n\n/** Decoded PR-review prevention enforcement layer. */\nexport type PrReviewPreventionEnforcement = typeof PrReviewPreventionEnforcement.Type\n\nconst PreventionProposal = Schema.Struct({\n summary: boundedSingleLine(500, \"PrReviewPreventionSummary\"),\n enforcement: PrReviewPreventionEnforcement,\n existingRuleOrConfig: boundedSingleLine(500, \"PrReviewExistingRuleOrConfig\"),\n recurrenceEvidence: boundedMultiline(2_000, \"PrReviewPreventionRecurrenceEvidence\"),\n targetFile: PrReviewPath,\n sourcePaths: Schema.Array(PrReviewPath).check(Schema.isMinLength(1), Schema.isMaxLength(32), Schema.isUnique()),\n matcherOrInvariant: boundedMultiline(4_000, \"PrReviewPreventionMatcherOrInvariant\"),\n invalidFixture: boundedMultiline(8_000, \"PrReviewInvalidFixture\"),\n validFixture: boundedMultiline(8_000, \"PrReviewValidFixture\"),\n boundary: boundedMultiline(4_000, \"PrReviewPreventionBoundary\")\n}).check(\n Schema.makeFilter(({ invalidFixture, validFixture }) => invalidFixture !== validFixture, {\n expected: \"distinct invalid and valid prevention fixtures\"\n })\n)\n\nconst NoPreventionProposal = Schema.Struct({\n summary: boundedSingleLine(500, \"PrReviewPreventionSummary\"),\n enforcement: Schema.Literal(\"none\"),\n rationale: boundedMultiline(2_000, \"PrReviewNoPreventionRationale\")\n})\n\n/** Implementation-ready guardrail proposal, or a bounded explanation for omitting one. */\nexport const PrReviewPrevention = Schema.Union([PreventionProposal, NoPreventionProposal])\n\n/** Decoded PR-review prevention note. */\nexport type PrReviewPrevention = typeof PrReviewPrevention.Type\n\n/** Stable host-derived suggestion identity within one immutable review. */\nexport const PrReviewSuggestionId = Schema.String.check(\n Schema.isPattern(/^sha256:[a-f0-9]{64}$/u, {\n expected: \"a sha256 suggestion identity\"\n })\n).pipe(Schema.brand(\"PrReviewSuggestionId\"))\n\n/** Decoded PR-review suggestion identity. */\nexport type PrReviewSuggestionId = typeof PrReviewSuggestionId.Type\n\n/** Current durable presentation state; lifecycle transitions remain host-owned. */\nexport const PrReviewSuggestionState = Schema.Literals([\n \"draft\",\n \"published\",\n \"stale\",\n \"resolved\",\n \"dismissed\",\n \"reopened\"\n])\n\n/** Decoded suggestion presentation state. */\nexport type PrReviewSuggestionState = typeof PrReviewSuggestionState.Type\n\nconst PrReviewLine = Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: Number.MAX_SAFE_INTEGER }))\n\nconst PrReviewLocation = Schema.Struct({\n path: PrReviewPath,\n startLine: PrReviewLine,\n endLine: PrReviewLine\n}).check(\n Schema.makeFilter(({ endLine, startLine }) => startLine <= endLine, {\n expected: \"a location end line at or after its start line\"\n })\n)\n\n/** Exact source evidence which must be verified against an added diff line. */\nexport const PrReviewSuggestionEvidence = Schema.Struct({\n ...PrReviewLocation.fields,\n excerpt: Schema.String.check(\n Schema.isNonEmpty(),\n Schema.isMaxLength(8_000),\n Schema.makeFilter(hasNoUnsafeMultilineControlCharacters, {\n expected: \"source evidence without unsafe control characters\"\n })\n )\n})\n .check(\n Schema.makeFilter(({ endLine, startLine }) => startLine <= endLine, {\n expected: \"an evidence end line at or after its start line\"\n })\n )\n .annotate({ identifier: \"PrReviewSuggestionEvidence\" })\n\n/** Decoded PR-review suggestion evidence. */\nexport type PrReviewSuggestionEvidence = typeof PrReviewSuggestionEvidence.Type\n\n/** Model-authored anchor before the host resolves file-level positions. */\nexport const PrReviewSuggestionDraftAnchor = Schema.Union([\n Schema.Struct({\n _tag: Schema.Literal(\"line\"),\n path: PrReviewPath,\n line: PrReviewLine\n }),\n Schema.Struct({\n _tag: Schema.Literal(\"file\"),\n path: PrReviewPath\n }),\n Schema.Struct({\n _tag: Schema.Literal(\"changes\")\n })\n]).annotate({ identifier: \"PrReviewSuggestionDraftAnchor\" })\n\n/** Decoded unresolved model-authored suggestion anchor. */\nexport type PrReviewSuggestionDraftAnchor = typeof PrReviewSuggestionDraftAnchor.Type\n\n/** Host-resolved primary anchor for line, file, or whole-change advice. */\nconst PrReviewAfterRelativeFileVersion = Schema.Literal(\"AFTER\").pipe(\n Schema.withDecodingDefaultTypeKey(Effect.succeed(\"AFTER\"))\n)\nconst PrReviewRelativeFileVersion = Schema.Literals([\"BEFORE\", \"AFTER\"]).pipe(\n Schema.withDecodingDefaultTypeKey(Effect.succeed(\"AFTER\"))\n)\n\nexport const PrReviewSuggestionAnchor = Schema.Union([\n Schema.Struct({\n _tag: Schema.Literal(\"line\"),\n path: PrReviewPath,\n line: PrReviewLine,\n relativeFileVersion: PrReviewAfterRelativeFileVersion\n }),\n Schema.Struct({\n _tag: Schema.Literal(\"file\"),\n path: PrReviewPath,\n line: PrReviewLine,\n relativeFileVersion: PrReviewRelativeFileVersion\n }),\n Schema.Struct({\n _tag: Schema.Literal(\"changes\")\n })\n]).annotate({ identifier: \"PrReviewSuggestionAnchor\" })\n\n/** Decoded host-resolved suggestion anchor. */\nexport type PrReviewSuggestionAnchor = typeof PrReviewSuggestionAnchor.Type\n\n/** Secondary code location grouped under one root-cause suggestion. */\nexport const PrReviewRelatedLocation = Schema.Struct({\n ...PrReviewLocation.fields,\n label: boundedSingleLine(500, \"PrReviewRelatedLocationLabel\")\n})\n .check(\n Schema.makeFilter(({ endLine, startLine }) => startLine <= endLine, {\n expected: \"a related-location end line at or after its start line\"\n })\n )\n .annotate({ identifier: \"PrReviewRelatedLocation\" })\n\n/** Decoded related suggestion location. */\nexport type PrReviewRelatedLocation = typeof PrReviewRelatedLocation.Type\n\nconst isUnifiedDiff = (value: string): boolean => {\n const lines = value.split(\"\\n\")\n return (\n lines.some((line) => line.startsWith(\"--- \")) &&\n lines.some((line) => line.startsWith(\"+++ \")) &&\n lines.some((line) => line.startsWith(\"@@ \"))\n )\n}\n\n/** Optional inert unified-diff replacement for the exact reviewed head. */\nexport const PrReviewReplacement = Schema.Struct({\n reviewedHead: boundedSingleLine(512, \"PrReviewReplacementReviewedHead\"),\n unifiedDiff: boundedMultiline(16_000, \"PrReviewReplacementUnifiedDiff\").check(\n Schema.makeFilter(isUnifiedDiff, { expected: \"a unified diff with file headers and at least one hunk\" })\n ),\n explanation: boundedMultiline(2_000, \"PrReviewReplacementExplanation\")\n}).annotate({ identifier: \"PrReviewReplacement\" })\n\n/** Decoded PR-review replacement. */\nexport type PrReviewReplacement = typeof PrReviewReplacement.Type\n\n/** Confidence is explicit and always accompanied by model reasoning. */\nexport const PrReviewConfidence = Schema.Struct({\n level: Schema.Literals([\"low\", \"medium\", \"high\"]),\n reason: boundedMultiline(2_000, \"PrReviewConfidenceReason\")\n}).annotate({ identifier: \"PrReviewConfidence\" })\n\n/** Decoded PR-review confidence. */\nexport type PrReviewConfidence = typeof PrReviewConfidence.Type\n\nconst prReviewSuggestionDraftFields = {\n title: boundedSingleLine(500, \"PrReviewSuggestionTitle\"),\n severity: Schema.Literals([\"P1\", \"P2\", \"P3\", \"P4\"]),\n problem: boundedMultiline(4_000, \"PrReviewSuggestionProblem\"),\n impact: boundedMultiline(4_000, \"PrReviewSuggestionImpact\"),\n evidence: PrReviewSuggestionEvidence,\n recommendation: boundedMultiline(8_000, \"PrReviewSuggestionRecommendation\"),\n confidence: PrReviewConfidence,\n relatedLocations: Schema.Array(PrReviewRelatedLocation).check(\n Schema.isMaxLength(32),\n Schema.makeFilter(\n (locations) =>\n new Set(locations.map(({ endLine, path, startLine }) => `${path}:${String(startLine)}:${String(endLine)}`))\n .size === locations.length,\n { expected: \"unique related suggestion locations\" }\n )\n ),\n prevention: Schema.optionalKey(PrReviewPrevention),\n replacement: Schema.optionalKey(PrReviewReplacement)\n}\n\n/** Model output for one suggestion before immutable identity is derived. */\nexport const PrReviewSuggestionDraft = Schema.Struct({\n ...prReviewSuggestionDraftFields,\n anchor: PrReviewSuggestionDraftAnchor\n})\n .check(\n Schema.makeFilter(\n ({ anchor, confidence, evidence }) =>\n confidence.level !== \"low\" &&\n (anchor._tag === \"changes\" ||\n (anchor.path === evidence.path &&\n (anchor._tag === \"file\" || anchor.line === evidence.startLine))),\n { expected: \"a medium/high-confidence suggestion whose file or line anchor matches its exact evidence\" }\n ),\n Schema.makeFilter(\n ({ prevention, severity }) =>\n prevention === undefined ||\n prevention.enforcement === \"none\" ||\n severity === \"P1\" ||\n severity === \"P2\",\n { expected: \"prevention proposals only for high-impact P1 or P2 defect classes\" }\n )\n )\n .annotate({ identifier: \"PrReviewSuggestionDraft\" })\n\n/** Decoded model-authored suggestion awaiting evidence verification. */\nexport type PrReviewSuggestionDraft = typeof PrReviewSuggestionDraft.Type\n\n/** One schema-valid and evidence-verified suggestion. */\nexport const PrReviewSuggestion = Schema.Struct({\n suggestionId: PrReviewSuggestionId,\n state: PrReviewSuggestionState,\n ...prReviewSuggestionDraftFields,\n anchor: PrReviewSuggestionAnchor\n})\n .check(\n Schema.makeFilter(\n ({ anchor, confidence, evidence }) =>\n confidence.level !== \"low\" &&\n (anchor._tag === \"changes\" ||\n (anchor.path === evidence.path &&\n (anchor._tag === \"file\" || anchor.line === evidence.startLine))),\n { expected: \"a medium/high-confidence suggestion whose file or line anchor matches its exact evidence\" }\n ),\n Schema.makeFilter(\n ({ prevention, severity }) =>\n prevention === undefined ||\n prevention.enforcement === \"none\" ||\n severity === \"P1\" ||\n severity === \"P2\",\n { expected: \"prevention proposals only for high-impact P1 or P2 defect classes\" }\n )\n )\n .annotate({ identifier: \"PrReviewSuggestion\" })\n\n/** Decoded PR-review suggestion. */\nexport type PrReviewSuggestion = typeof PrReviewSuggestion.Type\n\n/** Stable host-derived identity for a non-publishable review note. */\nexport const PrReviewNoteId = Schema.String.check(\n Schema.isPattern(/^sha256:[a-f0-9]{64}$/u, {\n expected: \"a sha256 review-note identity\"\n })\n).pipe(Schema.brand(\"PrReviewNoteId\"))\n\n/** Decoded review-note identity. */\nexport type PrReviewNoteId = typeof PrReviewNoteId.Type\n\nconst prReviewNoteDraftFields = {\n reason: Schema.Literals([\"low-confidence\", \"pre-existing\"]),\n title: boundedSingleLine(500, \"PrReviewNoteTitle\"),\n observation: boundedMultiline(4_000, \"PrReviewNoteObservation\"),\n confidence: PrReviewConfidence,\n location: Schema.optionalKey(PrReviewLocation)\n}\n\n/** Model output for a concern that must not be published. */\nexport const PrReviewNoteDraft = Schema.Struct(prReviewNoteDraftFields)\n .check(\n Schema.makeFilter(\n ({ confidence, reason }) => reason !== \"low-confidence\" || confidence.level === \"low\",\n { expected: \"a low-confidence note with explicitly low confidence\" }\n )\n )\n .annotate({ identifier: \"PrReviewNoteDraft\" })\n\n/** Decoded model-authored review note awaiting host identity. */\nexport type PrReviewNoteDraft = typeof PrReviewNoteDraft.Type\n\n/** Durable non-publishable concern separated from Review Suggestions. */\nexport const PrReviewNote = Schema.Struct({\n noteId: PrReviewNoteId,\n ...prReviewNoteDraftFields\n})\n .check(\n Schema.makeFilter(\n ({ confidence, reason }) => reason !== \"low-confidence\" || confidence.level === \"low\",\n { expected: \"a low-confidence note with explicitly low confidence\" }\n )\n )\n .annotate({ identifier: \"PrReviewNote\" })\n\n/** Decoded durable review note. */\nexport type PrReviewNote = typeof PrReviewNote.Type\n\n/** Epistemic completion state; this is not an approval or overall model verdict. */\nexport const PrReviewCompletion = Schema.Union([\n Schema.Struct({ status: Schema.Literal(\"complete\") }),\n Schema.Struct({\n status: Schema.Literal(\"unable-to-conclude\"),\n reason: boundedMultiline(4_000, \"PrReviewUnableToConcludeReason\")\n })\n]).annotate({ identifier: \"PrReviewCompletion\" })\n\n/** Decoded review completion state. */\nexport type PrReviewCompletion = typeof PrReviewCompletion.Type\n\nconst hasMaximumReportBytes = Schema.makeFilter(\n (value: unknown) => {\n const serialized = JSON.stringify(value)\n if (serialized === undefined) return false\n const maximumLifecycleProjection = serialized.replace(\n /\"state\":\"(?:draft|stale|resolved|reopened)\"/gu,\n \"\\\"state\\\":\\\"published\\\"\"\n )\n return jsonEncoder.encode(maximumLifecycleProjection).byteLength <= MAXIMUM_PR_REVIEW_REPORT_BYTES\n },\n {\n expected:\n `JSON encoded as at most ${MAXIMUM_PR_REVIEW_REPORT_BYTES} UTF-8 bytes after the longest lifecycle projection`\n }\n)\n\n/**\n * Complete sanitized result for one immutable PR subject.\n *\n * Suggestions have no count cap. The durable event byte envelope remains the\n * only aggregate storage bound.\n */\nexport const PrReviewReport = Schema.Struct({\n schemaVersion: Schema.Literal(3),\n subject: PrReviewSubject,\n completion: PrReviewCompletion,\n suggestions: Schema.Array(PrReviewSuggestion).check(\n Schema.makeFilter(\n (suggestions) => new Set(suggestions.map(({ suggestionId }) => suggestionId)).size === suggestions.length,\n { expected: \"unique PR review suggestion identifiers\" }\n )\n ),\n notes: Schema.Array(PrReviewNote).check(\n Schema.makeFilter(\n (notes) => new Set(notes.map(({ noteId }) => noteId)).size === notes.length,\n { expected: \"unique PR review note identifiers\" }\n )\n )\n})\n .check(\n Schema.makeFilter(\n ({ subject, suggestions }) =>\n suggestions.every(\n ({ replacement }) => replacement === undefined || replacement.reviewedHead === subject.headRevision\n ),\n { expected: \"replacement patches bound to the exact reviewed head\" }\n )\n )\n .check(hasMaximumReportBytes)\n .annotate({ identifier: \"PrReviewReport\" })\n\n/** Decoded complete PR-review report. */\nexport type PrReviewReport = typeof PrReviewReport.Type\n\n/** Outcome derived by Control Center, never authored by the model. */\nexport const PrReviewOutcome = Schema.Literals([\n \"changes-required\",\n \"non-blocking-suggestions\",\n \"no-issues-found\",\n \"unable-to-conclude\"\n])\n\n/** Decoded derived PR-review outcome. */\nexport type PrReviewOutcome = typeof PrReviewOutcome.Type\n\n/** Derive the browser verdict from validated durable suggestions. */\nexport const derivePrReviewOutcome = (report: PrReviewReport): PrReviewOutcome => {\n if (report.completion.status === \"unable-to-conclude\") return \"unable-to-conclude\"\n const openSuggestions = report.suggestions.filter(\n ({ state }) => state === \"draft\" || state === \"published\" || state === \"reopened\"\n )\n if (openSuggestions.some(({ severity }) => severity === \"P1\" || severity === \"P2\")) {\n return \"changes-required\"\n }\n return openSuggestions.length > 0 ? \"non-blocking-suggestions\" : \"no-issues-found\"\n}\n","/** Immutable revision history for evidence-backed PR-review suggestions. @module */\nimport { AgentProviderId, AgentRuntimeMetadata } from \"@knpkv/ai-runtime\"\nimport * as Schema from \"effect/Schema\"\n\nimport { JobId, PersonId, PrReviewSuggestionRevisionId } from \"./identifiers.js\"\nimport { PrReviewSubject, PrReviewSuggestion } from \"./prReview.js\"\nimport { UtcTimestamp } from \"./utcTimestamp.js\"\n\n/** Maximum revisions returned by one bounded history page. */\nexport const MAXIMUM_PR_REVIEW_SUGGESTION_REVISION_PAGE_SIZE = 128\n\n/** Maximum UTF-8 JSON size of one complete durable suggestion revision. */\nexport const MAXIMUM_PR_REVIEW_SUGGESTION_REVISION_BYTES = 65_536\n\n/** Strictly positive aggregate-local suggestion revision sequence. */\nexport const PrReviewSuggestionRevisionSequence = Schema.Int.check(\n Schema.isBetween({ minimum: 1, maximum: Number.MAX_SAFE_INTEGER })\n).pipe(Schema.brand(\"PrReviewSuggestionRevisionSequence\"))\n\n/** Decoded aggregate-local suggestion revision sequence. */\nexport type PrReviewSuggestionRevisionSequence = typeof PrReviewSuggestionRevisionSequence.Type\n\n/** Bounded page size accepted by the suggestion revision repository and API. */\nexport const PrReviewSuggestionRevisionPageSize = Schema.Int.check(\n Schema.isBetween({\n minimum: 1,\n maximum: MAXIMUM_PR_REVIEW_SUGGESTION_REVISION_PAGE_SIZE\n })\n).pipe(Schema.brand(\"PrReviewSuggestionRevisionPageSize\"))\n\n/** Decoded bounded suggestion revision page size. */\nexport type PrReviewSuggestionRevisionPageSize = typeof PrReviewSuggestionRevisionPageSize.Type\n\n/** Human author of one immutable manual suggestion edit. */\nexport class PrReviewSuggestionOperatorAuthor extends Schema.TaggedClass<PrReviewSuggestionOperatorAuthor>()(\n \"operator\",\n { personId: PersonId }\n) {}\n\nconst AgentModel = Schema.String.check(\n Schema.isTrimmed(),\n Schema.isNonEmpty(),\n Schema.isMaxLength(500)\n)\n\n/** Agent provenance retained with one immutable edit or revalidation result. */\nexport class PrReviewSuggestionAgentAuthor extends Schema.TaggedClass<PrReviewSuggestionAgentAuthor>()(\n \"agent\",\n {\n jobId: JobId,\n providerId: AgentProviderId,\n model: Schema.NullOr(AgentModel),\n runtimeMetadata: Schema.NullOr(AgentRuntimeMetadata)\n }\n) {}\n\n/** Complete author provenance for one suggestion revision. */\nexport const PrReviewSuggestionRevisionAuthor = Schema.Union([\n PrReviewSuggestionOperatorAuthor,\n PrReviewSuggestionAgentAuthor\n]).pipe(Schema.toTaggedUnion(\"_tag\"))\n\n/** Decoded suggestion revision author. */\nexport type PrReviewSuggestionRevisionAuthor = typeof PrReviewSuggestionRevisionAuthor.Type\n\n/** Evidence for this revision was validated by one exact agent run and head. */\nexport class PrReviewSuggestionValidated extends Schema.TaggedClass<PrReviewSuggestionValidated>()(\n \"validated\",\n {\n reviewedHead: PrReviewSubject.fields.headRevision,\n validatingJobId: JobId,\n sourceRevisionId: PrReviewSuggestionRevisionId\n }\n) {}\n\n/** Technical content changed and must be checked before publication. */\nexport class PrReviewSuggestionRequiresRevalidation\n extends Schema.TaggedClass<PrReviewSuggestionRequiresRevalidation>()(\n \"requires-revalidation\",\n {\n reviewedHead: PrReviewSubject.fields.headRevision,\n sourceRevisionId: PrReviewSuggestionRevisionId,\n reason: Schema.Literals([\n \"technical-claim-edited\",\n \"agent-edit-not-validated\"\n ])\n }\n )\n{}\n\n/** Exact validation state attached to one immutable suggestion revision. */\nexport const PrReviewSuggestionRevisionValidation = Schema.Union([\n PrReviewSuggestionValidated,\n PrReviewSuggestionRequiresRevalidation\n]).pipe(Schema.toTaggedUnion(\"_tag\"))\n\n/** Decoded suggestion revision validation state. */\nexport type PrReviewSuggestionRevisionValidation = typeof PrReviewSuggestionRevisionValidation.Type\n\nconst editableSuggestionFields = {\n title: PrReviewSuggestion.fields.title,\n severity: PrReviewSuggestion.fields.severity,\n problem: PrReviewSuggestion.fields.problem,\n impact: PrReviewSuggestion.fields.impact,\n evidence: PrReviewSuggestion.fields.evidence,\n recommendation: PrReviewSuggestion.fields.recommendation,\n confidence: PrReviewSuggestion.fields.confidence,\n relatedLocations: PrReviewSuggestion.fields.relatedLocations,\n prevention: PrReviewSuggestion.fields.prevention,\n replacement: PrReviewSuggestion.fields.replacement,\n anchor: PrReviewSuggestion.fields.anchor\n}\n\n/** Complete operator- or agent-editable suggestion content. */\nexport const PrReviewSuggestionEdit = Schema.Struct(editableSuggestionFields)\n .check(\n Schema.makeFilter(\n ({ anchor, confidence, evidence }) =>\n confidence.level !== \"low\" &&\n (anchor._tag === \"changes\" ||\n (anchor.path === evidence.path &&\n (anchor._tag === \"file\" || anchor.line === evidence.startLine))),\n {\n expected: \"a medium/high-confidence suggestion whose file or line anchor matches its exact evidence\"\n }\n ),\n Schema.makeFilter(\n ({ prevention, severity }) =>\n prevention === undefined ||\n prevention.enforcement === \"none\" ||\n severity === \"P1\" ||\n severity === \"P2\",\n {\n expected: \"prevention proposals only for high-impact P1 or P2 defect classes\"\n }\n )\n )\n .annotate({ identifier: \"PrReviewSuggestionEdit\" })\n\n/** Decoded complete suggestion edit. */\nexport type PrReviewSuggestionEdit = typeof PrReviewSuggestionEdit.Type\n\n/** One complete immutable revision of a stable review suggestion. */\nexport class PrReviewSuggestionRevision extends Schema.Class<PrReviewSuggestionRevision>(\n \"PrReviewSuggestionRevision\"\n)(\n Schema.Struct({\n revisionId: PrReviewSuggestionRevisionId,\n sequence: PrReviewSuggestionRevisionSequence,\n predecessorRevisionId: Schema.NullOr(PrReviewSuggestionRevisionId),\n sourceJobId: JobId,\n subject: PrReviewSubject,\n suggestion: PrReviewSuggestion,\n validation: PrReviewSuggestionRevisionValidation,\n author: PrReviewSuggestionRevisionAuthor,\n createdAt: UtcTimestamp\n }).check(\n Schema.makeFilter(\n ({ predecessorRevisionId, sequence }) => (sequence === 1) === (predecessorRevisionId === null),\n {\n expected: \"only original sequence one to omit a predecessor revision\"\n }\n ),\n Schema.makeFilter(\n ({ subject, suggestion, validation }) =>\n validation.reviewedHead === subject.headRevision &&\n (suggestion.replacement === undefined ||\n suggestion.replacement.reviewedHead === subject.headRevision),\n {\n expected: \"revision validation and replacement bound to the exact reviewed head\"\n }\n )\n )\n) {}\n\n/** Cursor-bounded immutable revision history, newest first. */\nexport const PrReviewSuggestionRevisionPage = Schema.Struct({\n current: PrReviewSuggestionRevision,\n revisions: Schema.Array(PrReviewSuggestionRevision).check(\n Schema.isMaxLength(MAXIMUM_PR_REVIEW_SUGGESTION_REVISION_PAGE_SIZE)\n ),\n hasMore: Schema.Boolean,\n nextBeforeSequence: Schema.NullOr(PrReviewSuggestionRevisionSequence)\n})\n\n/** Decoded cursor-bounded suggestion revision page. */\nexport type PrReviewSuggestionRevisionPage = typeof PrReviewSuggestionRevisionPage.Type\n\nconst PrReviewTechnicalClaim = Schema.Struct({\n severity: PrReviewSuggestion.fields.severity,\n problem: PrReviewSuggestion.fields.problem,\n impact: PrReviewSuggestion.fields.impact,\n evidence: PrReviewSuggestion.fields.evidence,\n recommendation: PrReviewSuggestion.fields.recommendation,\n confidence: PrReviewSuggestion.fields.confidence,\n relatedLocations: PrReviewSuggestion.fields.relatedLocations,\n prevention: PrReviewSuggestion.fields.prevention,\n replacement: PrReviewSuggestion.fields.replacement,\n anchor: PrReviewSuggestion.fields.anchor\n})\n\nconst encodeTechnicalClaim = Schema.encodeSync(PrReviewTechnicalClaim)\n\n/** Compare only content whose change invalidates prior technical evidence. */\nexport const hasSamePrReviewTechnicalClaim = (\n left: PrReviewSuggestionEdit,\n right: PrReviewSuggestionEdit\n): boolean =>\n JSON.stringify(encodeTechnicalClaim(left)) ===\n JSON.stringify(encodeTechnicalClaim(right))\n","import * as DateTime from \"effect/DateTime\"\nimport * as Effect from \"effect/Effect\"\nimport * as Schema from \"effect/Schema\"\nimport { PluginConnectionId } from \"./identifiers.js\"\nimport { SourceRevision } from \"./sourceRevision.js\"\nimport { UtcTimestamp } from \"./utcTimestamp.js\"\n\nconst StaleAfterSeconds = Schema.Int.check(Schema.isGreaterThan(0))\nconst SafeHealthMessage = Schema.String.check(\n Schema.isTrimmed(),\n Schema.isMinLength(1),\n Schema.isMaxLength(500)\n)\n\n/** Stable failure classes exposed by plugin health without leaking raw causes. */\nexport const PluginFailureClass = Schema.Literals([\n \"authentication\",\n \"authorization\",\n \"rate-limit\",\n \"timeout\",\n \"malformed-response\",\n \"outage\",\n \"unknown\"\n])\n\n/** Decoded plugin failure classification. */\nexport type PluginFailureClass = typeof PluginFailureClass.Type\n\nconst HealthyPluginHealth = Schema.TaggedStruct(\"healthy\", {\n checkedAt: UtcTimestamp\n})\n\nconst DegradedPluginHealth = Schema.TaggedStruct(\"degraded\", {\n checkedAt: UtcTimestamp,\n failureClass: PluginFailureClass,\n retryAt: Schema.NullOr(UtcTimestamp),\n safeMessage: SafeHealthMessage\n}).check(\n Schema.makeFilter(\n ({ checkedAt, retryAt }) => retryAt === null || DateTime.Order(checkedAt, retryAt) <= 0,\n { expected: \"plugin retry time to be at or after its health check\" }\n )\n)\n\nconst UnavailablePluginHealth = Schema.TaggedStruct(\"unavailable\", {\n checkedAt: UtcTimestamp,\n failureClass: PluginFailureClass,\n retryAt: Schema.NullOr(UtcTimestamp),\n safeMessage: SafeHealthMessage\n}).check(\n Schema.makeFilter(\n ({ checkedAt, retryAt }) => retryAt === null || DateTime.Order(checkedAt, retryAt) <= 0,\n { expected: \"plugin retry time to be at or after its health check\" }\n )\n)\n\nconst DisabledPluginHealth = Schema.TaggedStruct(\"disabled\", {\n checkedAt: UtcTimestamp\n})\n\n/** Health of the plugin connection responsible for a normalized object. */\nexport const PluginHealth = Schema.Union([\n HealthyPluginHealth,\n DegradedPluginHealth,\n UnavailablePluginHealth,\n DisabledPluginHealth\n]).pipe(Schema.toTaggedUnion(\"_tag\"))\n\n/** Decoded plugin connection health. */\nexport type PluginHealth = typeof PluginHealth.Type\n\nconst UsablePluginHealth = Schema.Union([HealthyPluginHealth, DegradedPluginHealth])\n\nconst ProviderProvenance = Schema.TaggedStruct(\"provider\", {\n sourceRevision: SourceRevision\n})\n\nconst CachedProvenance = Schema.TaggedStruct(\"cache\", {\n cachedAt: UtcTimestamp,\n sourceRevision: SourceRevision\n}).check(\n Schema.makeFilter(\n ({ cachedAt, sourceRevision }) => DateTime.Order(sourceRevision.synchronizedAt, cachedAt) <= 0,\n { expected: \"the cache time to be at or after source synchronization\" }\n )\n)\n\nconst NoCacheProvenance = Schema.TaggedStruct(\"none\", {\n pluginConnectionId: PluginConnectionId\n})\n\nconst sourceAgeSecondsAt = (sourceObservedAt: UtcTimestamp, evaluatedAt: UtcTimestamp): number =>\n (DateTime.toEpochMillis(evaluatedAt) - DateTime.toEpochMillis(sourceObservedAt)) / 1_000\n\nconst freshnessEvaluation = {\n // Older persisted revisions predate explicit projection-time evaluation. In\n // that case their plugin health check remains the historical evaluation time.\n evaluatedAt: Schema.optional(UtcTimestamp)\n}\n\nconst evaluatedAtOrHealthCheck = (\n evaluatedAt: UtcTimestamp | undefined,\n pluginHealth: PluginHealth\n): UtcTimestamp => evaluatedAt ?? pluginHealth.checkedAt\n\nconst CurrentFreshness = Schema.TaggedStruct(\"current\", {\n ...freshnessEvaluation,\n pluginHealth: UsablePluginHealth,\n provenance: Schema.Union([ProviderProvenance, CachedProvenance]),\n sourceObservedAt: UtcTimestamp,\n staleAfterSeconds: StaleAfterSeconds,\n synchronizedAt: UtcTimestamp\n}).check(\n Schema.makeFilter(\n ({ evaluatedAt, pluginHealth, provenance, sourceObservedAt, staleAfterSeconds, synchronizedAt }) =>\n DateTime.Equivalence(sourceObservedAt, provenance.sourceRevision.lastObservedAt) &&\n DateTime.Order(provenance.sourceRevision.synchronizedAt, synchronizedAt) <= 0 &&\n (provenance._tag === \"provider\" || DateTime.Order(provenance.cachedAt, synchronizedAt) <= 0) &&\n DateTime.Order(synchronizedAt, pluginHealth.checkedAt) <= 0 &&\n (evaluatedAt === undefined || DateTime.Order(pluginHealth.checkedAt, evaluatedAt) <= 0) &&\n sourceAgeSecondsAt(sourceObservedAt, evaluatedAtOrHealthCheck(evaluatedAt, pluginHealth)) >= 0 &&\n sourceAgeSecondsAt(sourceObservedAt, evaluatedAtOrHealthCheck(evaluatedAt, pluginHealth)) < staleAfterSeconds,\n {\n expected: \"current source data to match its revision and remain within its stale threshold\"\n }\n )\n)\n\nconst StaleFreshness = Schema.TaggedStruct(\"stale\", {\n ...freshnessEvaluation,\n pluginHealth: PluginHealth,\n provenance: CachedProvenance,\n sourceObservedAt: UtcTimestamp,\n staleAfterSeconds: StaleAfterSeconds,\n synchronizedAt: UtcTimestamp\n}).check(\n Schema.makeFilter(\n ({ evaluatedAt, pluginHealth, provenance, sourceObservedAt, staleAfterSeconds, synchronizedAt }) =>\n DateTime.Equivalence(sourceObservedAt, provenance.sourceRevision.lastObservedAt) &&\n DateTime.Order(sourceObservedAt, synchronizedAt) <= 0 &&\n DateTime.Order(provenance.cachedAt, synchronizedAt) <= 0 &&\n DateTime.Order(synchronizedAt, pluginHealth.checkedAt) <= 0 &&\n (evaluatedAt === undefined || DateTime.Order(pluginHealth.checkedAt, evaluatedAt) <= 0) &&\n sourceAgeSecondsAt(sourceObservedAt, evaluatedAtOrHealthCheck(evaluatedAt, pluginHealth)) >= staleAfterSeconds,\n {\n expected: \"stale cache data to be chronological and beyond its stale threshold\"\n }\n )\n)\n\nconst MissingFreshness = Schema.TaggedStruct(\"missing\", {\n pluginHealth: HealthyPluginHealth,\n provenance: NoCacheProvenance,\n sourceObservedAt: Schema.Null,\n staleAfterSeconds: StaleAfterSeconds,\n synchronizedAt: UtcTimestamp\n})\n\nconst UnavailableFreshness = Schema.TaggedStruct(\"unavailable\", {\n pluginHealth: Schema.Union([UnavailablePluginHealth, DisabledPluginHealth]),\n provenance: NoCacheProvenance,\n sourceObservedAt: Schema.Null,\n staleAfterSeconds: StaleAfterSeconds,\n synchronizedAt: Schema.Null\n})\n\n/**\n * Freshness of normalized data, preserving cached stale data while separating\n * absence from a connection that cannot currently be queried.\n */\nexport const Freshness = Schema.Union([\n CurrentFreshness,\n StaleFreshness,\n MissingFreshness,\n UnavailableFreshness\n]).pipe(Schema.toTaggedUnion(\"_tag\"))\n\n/** Decoded normalized-data freshness. */\nexport type Freshness = typeof Freshness.Type\n\n/** Re-evaluate persisted freshness for a read projection without rewriting its source facts. */\nexport const evaluateFreshnessAt = Effect.fn(\"Freshness.evaluateAt\")(function*(\n freshness: Freshness,\n evaluatedAt: UtcTimestamp\n): Effect.fn.Return<Freshness, Schema.SchemaError> {\n if (freshness._tag !== \"current\" && freshness._tag !== \"stale\") return freshness\n const isStale = freshness._tag === \"stale\" ||\n sourceAgeSecondsAt(freshness.sourceObservedAt, evaluatedAt) >= freshness.staleAfterSeconds\n const provenance = isStale\n ? freshness.provenance._tag === \"cache\"\n ? freshness.provenance\n : {\n _tag: \"cache\",\n cachedAt: freshness.synchronizedAt,\n sourceRevision: freshness.provenance.sourceRevision\n }\n : freshness.provenance\n return yield* Schema.decodeUnknownEffect(Schema.toType(Freshness))({\n ...freshness,\n _tag: isStale ? \"stale\" : \"current\",\n evaluatedAt,\n provenance\n })\n})\n","import * as DateTime from \"effect/DateTime\"\n\nimport type { EvidenceId, PluginConnectionId } from \"../identifiers.js\"\nimport type { UtcTimestamp } from \"../utcTimestamp.js\"\nimport type {\n ReadinessEvidenceReference,\n ReadinessFactDefinition,\n ReadinessFactEvaluation,\n ReadinessFactObservation,\n ReadinessFactResult,\n ReadinessFinding,\n ReadinessFindingCode,\n ReadinessProgress,\n ReadinessSourceSummary,\n ReadinessStages,\n ReadinessVerdict\n} from \"./model.js\"\n\n/** Locale-independent ordering used by canonical readiness records and digests. */\nexport const compareReadinessText = (left: string, right: string): number => left < right ? -1 : left > right ? 1 : 0\n\n/** Sorted unique string-like values for deterministic assessment material. */\nexport const sortedReadinessUnique = <Value extends string>(\n values: ReadonlyArray<Value>\n): Array<Value> => Array.from(new Set(values)).sort(compareReadinessText)\n\n/** Whether definitions form the complete provider-neutral V1 delivery policy. */\nexport const readinessDefinitionsShapeIsV1 = (\n definitions: ReadonlyArray<ReadinessFactDefinition>\n): boolean => {\n const deployments = definitions.filter(({ kind }) => kind === \"deployment\")\n return definitions.some(({ kind, requirement }) => kind === \"execution\" && requirement === \"required\") &&\n definitions.some(({ kind, requirement }) =>\n requirement === \"required\" && [\"relationship\", \"approval\", \"check\", \"documentation\"].includes(kind)\n ) &&\n deployments.length === 1 &&\n deployments[0]?.requirement === \"advisory\"\n}\n\n/** Whether definitions and observations form a complete V1 delivery policy shape. */\nexport const readinessPolicyShapeIsV1 = (\n definitions: ReadonlyArray<ReadinessFactDefinition>,\n observations: ReadonlyArray<ReadinessFactObservation>\n): boolean =>\n readinessDefinitionsShapeIsV1(definitions) &&\n observations.some(({ state }) => state._tag === \"deployment\")\n\n/** Whether one exact evidence dependency is current enough for a verdict. */\nexport const readinessEvidenceIsCurrent = (evidence: ReadinessEvidenceReference): boolean =>\n evidence.freshness === \"current\" &&\n evidence.validity === \"valid\" &&\n (evidence.source._tag === \"local\" ||\n evidence.source.health === \"healthy\" ||\n evidence.source.health === \"degraded\")\n\n/** Whether every evidence dependency of an observed fact is current and valid. */\nexport const readinessObservationIsCurrent = (\n observation: ReadinessFactObservation\n): boolean => observation.evidence.length > 0 && observation.evidence.every(readinessEvidenceIsCurrent)\n\n/** Whether a normalized observation is semantically positive. */\nexport const readinessObservationIsPositive = (\n observation: ReadinessFactObservation\n): boolean => {\n switch (observation.state._tag) {\n case \"relationship\":\n return observation.state.status === \"verified\" || observation.state.status === \"governed\"\n case \"approval\":\n return observation.state.status === \"approved\"\n case \"check\":\n return observation.state.status === \"passed\"\n case \"execution\":\n return observation.state.status === \"succeeded\"\n case \"documentation\":\n return observation.state.status === \"current\"\n case \"deployment\":\n return observation.state.status === \"succeeded\"\n }\n}\n\n/** Machine-readable explicit-failure reason, independent of freshness. */\nexport const readinessFailureCode = (\n observation: ReadinessFactObservation\n): ReadinessFindingCode | null => {\n switch (observation.state._tag) {\n case \"relationship\":\n return observation.state.status === \"rejected\" ? \"relationship-rejected\" : null\n case \"approval\":\n return observation.state.status === \"rejected\" ? \"approval-rejected\" : null\n case \"check\":\n return observation.state.status === \"failed\"\n ? \"check-failed\"\n : observation.state.status === \"cancelled\"\n ? \"check-cancelled\"\n : null\n case \"execution\":\n return observation.state.status === \"failed\"\n ? \"execution-failed\"\n : observation.state.status === \"stopped\"\n ? \"execution-stopped\"\n : null\n case \"documentation\":\n return null\n case \"deployment\":\n return observation.state.status === \"failed\"\n ? \"deployment-failed\"\n : observation.state.status === \"rolled-back\"\n ? \"deployment-rolled-back\"\n : null\n }\n}\n\n/** Machine-readable non-positive reason for one normalized observation. */\nexport const readinessNonPositiveCode = (\n observation: ReadinessFactObservation\n): ReadinessFindingCode | null => {\n switch (observation.state._tag) {\n case \"relationship\":\n switch (observation.state.status) {\n case \"missing\":\n return \"relationship-missing\"\n case \"inferred\":\n case \"proposed\":\n return \"relationship-unverified\"\n case \"superseded\":\n return \"relationship-superseded\"\n default:\n return null\n }\n case \"approval\":\n switch (observation.state.status) {\n case \"missing\":\n return \"approval-missing\"\n case \"pending\":\n return \"approval-pending\"\n case \"expired\":\n return \"approval-expired\"\n default:\n return null\n }\n case \"check\":\n return observation.state.status === \"missing\"\n ? \"check-missing\"\n : observation.state.status === \"queued\" || observation.state.status === \"running\"\n ? \"check-pending\"\n : null\n case \"execution\":\n return observation.state.status === \"missing\"\n ? \"execution-missing\"\n : observation.state.status === \"queued\" || observation.state.status === \"running\"\n ? \"execution-pending\"\n : null\n case \"documentation\":\n switch (observation.state.status) {\n case \"missing\":\n return \"documentation-missing\"\n case \"draft\":\n return \"documentation-draft\"\n case \"stale\":\n return \"documentation-stale\"\n case \"superseded\":\n return \"documentation-superseded\"\n default:\n return null\n }\n case \"deployment\":\n return null\n }\n}\n\n/** Whether this observation represents active build or check work. */\nexport const readinessObservationIsDeliveryActivity = (\n definition: ReadinessFactDefinition,\n observation: ReadinessFactObservation | null\n): boolean =>\n definition.requirement === \"required\" &&\n observation !== null &&\n ((observation.state._tag === \"execution\" &&\n (observation.state.status === \"queued\" || observation.state.status === \"running\")) ||\n (observation.state._tag === \"check\" &&\n (observation.state.status === \"queued\" || observation.state.status === \"running\"))) &&\n readinessObservationIsCurrent(observation)\n\n/** Canonical semantic result retained for one fact evaluation. */\nexport const readinessFactResult = (\n definition: ReadinessFactDefinition,\n observation: ReadinessFactObservation | null\n): ReadinessFactResult => {\n if (observation === null) return definition.requirement === \"required\" ? \"gap\" : \"advisory\"\n if (readinessFailureCode(observation) !== null) {\n return definition.requirement === \"required\" || definition.kind === \"deployment\"\n ? \"failed\"\n : \"advisory\"\n }\n if (readinessObservationIsPositive(observation) && readinessObservationIsCurrent(observation)) {\n return \"verified\"\n }\n const code = readinessNonPositiveCode(observation)\n if (code === \"approval-pending\" || code === \"check-pending\" || code === \"execution-pending\") {\n return \"pending\"\n }\n return definition.requirement === \"required\" ? \"gap\" : \"advisory\"\n}\n\nconst missingCode = (definition: ReadinessFactDefinition): ReadinessFindingCode => {\n switch (definition.kind) {\n case \"relationship\":\n return \"relationship-missing\"\n case \"approval\":\n return \"approval-missing\"\n case \"check\":\n return \"check-missing\"\n case \"execution\":\n return \"execution-missing\"\n case \"documentation\":\n return \"documentation-missing\"\n case \"deployment\":\n return \"deployment-missing\"\n }\n}\n\nconst observationEvidenceIds = (\n observation: ReadinessFactObservation | null\n): Array<EvidenceId> =>\n observation === null\n ? []\n : sortedReadinessUnique(observation.evidence.map(({ evidenceId }) => evidenceId))\n\nconst factFinding = (\n code: ReadinessFindingCode,\n definition: ReadinessFactDefinition,\n observation: ReadinessFactObservation | null\n): ReadinessFinding => ({\n code,\n subject: { _tag: \"fact\", factId: definition.factId },\n evidenceIds: observationEvidenceIds(observation)\n})\n\nconst evidenceFinding = (\n evidence: ReadinessEvidenceReference,\n definition: ReadinessFactDefinition\n): ReadinessFinding | null => {\n const code: ReadinessFindingCode | null = evidence.validity === \"expired\"\n ? \"evidence-expired\"\n : evidence.freshness === \"stale\"\n ? \"source-stale\"\n : evidence.freshness === \"missing\"\n ? \"source-missing\"\n : evidence.freshness === \"unavailable\" ||\n (evidence.source._tag === \"plugin\" &&\n (evidence.source.health === \"unavailable\" || evidence.source.health === \"disabled\"))\n ? \"source-unavailable\"\n : evidence.source._tag === \"plugin\" && evidence.source.health === \"degraded\"\n ? \"plugin-degraded\"\n : null\n if (code === null) return null\n return {\n code,\n subject: evidence.source._tag === \"plugin\"\n ? { _tag: \"source\", pluginConnectionId: evidence.source.pluginConnectionId }\n : { _tag: \"fact\", factId: definition.factId },\n evidenceIds: [evidence.evidenceId]\n }\n}\n\n/** Stable sort/deduplication key for readiness findings. */\nexport const readinessFindingKey = (finding: ReadinessFinding): string => {\n const subject = finding.subject._tag === \"fact\"\n ? finding.subject.factId\n : finding.subject._tag === \"source\"\n ? finding.subject.pluginConnectionId\n : \"candidate\"\n return `${finding.code}:${finding.subject._tag}:${subject}:${finding.evidenceIds.join(\",\")}`\n}\n\nconst normalizedFindings = (\n findings: ReadonlyArray<ReadinessFinding>\n): Array<ReadinessFinding> => {\n const byKey = new Map(findings.map((finding) => [readinessFindingKey(finding), finding]))\n return Array.from(byKey.values()).sort((left, right) =>\n compareReadinessText(readinessFindingKey(left), readinessFindingKey(right))\n )\n}\n\n/** Exact blocker, warning, and gap sets implied by retained fact evaluations. */\nexport const deriveReadinessFindings = (\n facts: ReadonlyArray<ReadinessFactEvaluation>,\n complete: boolean\n): {\n readonly blockers: Array<ReadinessFinding>\n readonly warnings: Array<ReadinessFinding>\n readonly gaps: Array<ReadinessFinding>\n} => {\n const blockers: Array<ReadinessFinding> = []\n const warnings: Array<ReadinessFinding> = []\n const gaps: Array<ReadinessFinding> = complete\n ? []\n : [{ code: \"input-incomplete\", subject: { _tag: \"candidate\" }, evidenceIds: [] }]\n\n for (const { definition, observation } of facts) {\n if (observation === null) {\n if (definition.requirement === \"required\") {\n gaps.push(factFinding(missingCode(definition), definition, observation))\n }\n continue\n }\n\n const failure = readinessFailureCode(observation)\n if (failure !== null) {\n const finding = factFinding(failure, definition, observation)\n if (definition.requirement === \"required\" || definition.kind === \"deployment\") {\n blockers.push(finding)\n } else {\n warnings.push(finding)\n }\n } else if (!readinessObservationIsPositive(observation) || !readinessObservationIsCurrent(observation)) {\n const code = readinessNonPositiveCode(observation)\n if (code !== null) {\n const finding = factFinding(code, definition, observation)\n const active = code === \"approval-pending\" || code === \"check-pending\" || code === \"execution-pending\"\n if (active || definition.requirement === \"advisory\") warnings.push(finding)\n if (!active && definition.requirement === \"required\") gaps.push(finding)\n }\n }\n\n for (const evidence of observation.evidence) {\n const finding = evidenceFinding(evidence, definition)\n if (finding === null) continue\n warnings.push(finding)\n if (\n definition.requirement === \"required\" &&\n finding.code !== \"plugin-degraded\" &&\n failure === null\n ) gaps.push(finding)\n }\n }\n\n return {\n blockers: normalizedFindings(blockers),\n warnings: normalizedFindings(warnings),\n gaps: normalizedFindings(gaps)\n }\n}\n\nconst freshnessRank = { current: 0, stale: 1, missing: 2, unavailable: 3 }\nconst healthRank = { healthy: 0, degraded: 1, unavailable: 2, disabled: 3 }\n\n/** Exact worst-state summaries for plugin evidence retained by facts. */\nexport const deriveReadinessSourceSummaries = (\n facts: ReadonlyArray<ReadinessFactEvaluation>\n): Array<ReadinessSourceSummary> => {\n const grouped = new Map<PluginConnectionId, Array<ReadinessEvidenceReference>>()\n for (const evidence of facts.flatMap(({ observation }) => observation?.evidence ?? [])) {\n if (evidence.source._tag !== \"plugin\") continue\n const current = grouped.get(evidence.source.pluginConnectionId) ?? []\n current.push(evidence)\n grouped.set(evidence.source.pluginConnectionId, current)\n }\n return Array.from(grouped.entries())\n .map(([pluginConnectionId, evidence]): ReadinessSourceSummary => ({\n pluginConnectionId,\n freshness: evidence.reduce<ReadinessSourceSummary[\"freshness\"]>(\n (worst, item) =>\n freshnessRank[item.freshness] > freshnessRank[worst]\n ? item.freshness\n : worst,\n \"current\"\n ),\n health: evidence.reduce<ReadinessSourceSummary[\"health\"]>((worst, item) => {\n const health = item.source._tag === \"plugin\" ? item.source.health : \"healthy\"\n return healthRank[health] > healthRank[worst] ? health : worst\n }, \"healthy\"),\n evidenceIds: sortedReadinessUnique(evidence.map(({ evidenceId }) => evidenceId))\n }))\n .sort((left, right) => compareReadinessText(left.pluginConnectionId, right.pluginConnectionId))\n}\n\n/** Earliest evidence freshness boundary retained by one environment assessment. */\nexport const deriveReadinessNextEvaluationAt = (\n facts: ReadonlyArray<ReadinessFactEvaluation>\n): UtcTimestamp | null =>\n facts\n .flatMap(({ observation }) => observation?.evidence ?? [])\n .flatMap(({ reevaluateAt }) => reevaluateAt === null ? [] : [reevaluateAt])\n .reduce<UtcTimestamp | null>(\n (earliest, boundary) => earliest === null || DateTime.Order(boundary, earliest) < 0 ? boundary : earliest,\n null\n )\n\nconst observationProgress = (\n observation: ReadinessFactObservation | undefined\n): ReadinessProgress | null => {\n if (observation?.state._tag === \"execution\" || observation?.state._tag === \"deployment\") {\n return observation.state.progress\n }\n return null\n}\n\nconst stageEvidence = (facts: ReadonlyArray<ReadinessFactEvaluation>) =>\n sortedReadinessUnique(facts.flatMap(({ evidenceIds }) => evidenceIds))\n\n/** Derive the exact three delivery stages from canonical fact evaluations. */\nexport const deriveReadinessStages = (\n facts: ReadonlyArray<ReadinessFactEvaluation>\n): ReadinessStages => {\n const build = facts.filter(({ definition }) => definition.kind === \"execution\")\n const verify = facts.filter(({ definition }) =>\n [\"relationship\", \"approval\", \"check\", \"documentation\"].includes(definition.kind)\n )\n const production = facts.filter(({ definition }) => definition.kind === \"deployment\")\n const deployment = production.find(({ observation }) => observation?.state._tag === \"deployment\")?.observation\n const requiredBuild = build.filter(({ definition }) => definition.requirement === \"required\")\n const requiredVerify = verify.filter(({ definition }) => definition.requirement === \"required\")\n const activeBuild = requiredBuild.filter(({ observation }) =>\n observation !== null &&\n observation.state._tag === \"execution\" &&\n (observation.state.status === \"queued\" || observation.state.status === \"running\") &&\n readinessObservationIsCurrent(observation)\n )\n const runningBuild = activeBuild.find(({ observation }) =>\n observation?.state._tag === \"execution\" && observation.state.status === \"running\"\n )\n const queuedBuild = activeBuild.find(({ observation }) =>\n observation?.state._tag === \"execution\" && observation.state.status === \"queued\"\n )\n const activeVerify = requiredVerify.find(({ observation }) =>\n observation !== null &&\n ((observation.state._tag === \"check\" &&\n (observation.state.status === \"queued\" || observation.state.status === \"running\")) ||\n (observation.state._tag === \"approval\" && observation.state.status === \"pending\")) &&\n readinessObservationIsCurrent(observation)\n )\n\n const buildState: ReadinessStages[\"build\"][\"state\"] = build.some(({ result }) => result === \"failed\")\n ? \"failed\"\n : runningBuild !== undefined\n ? \"running\"\n : queuedBuild !== undefined\n ? \"queued\"\n : requiredBuild.every(({ result }) => result === \"verified\")\n ? \"succeeded\"\n : build.some(({ observation }) => observation !== null)\n ? \"held\"\n : \"not-started\"\n\n const verifyState: ReadinessStages[\"verify\"][\"state\"] = verify.some(({ result }) => result === \"failed\")\n ? \"failed\"\n : activeVerify !== undefined\n ? \"pending\"\n : requiredVerify.every(({ result }) => result === \"verified\")\n ? \"passed\"\n : verify.some(({ observation }) => observation !== null)\n ? \"held\"\n : \"not-started\"\n\n let productionState: ReadinessStages[\"production\"][\"state\"] = \"not-started\"\n if (deployment?.state._tag === \"deployment\") {\n const current = readinessObservationIsCurrent(deployment)\n switch (deployment.state.status) {\n case \"failed\":\n productionState = \"failed\"\n break\n case \"rolled-back\":\n productionState = \"rolled-back\"\n break\n case \"deploying\":\n productionState = current ? \"deploying\" : \"held\"\n break\n case \"pending\":\n productionState = current ? \"waiting\" : \"held\"\n break\n case \"succeeded\":\n productionState = current ? \"succeeded\" : \"held\"\n break\n case \"not-started\":\n productionState = current ? \"not-started\" : \"held\"\n break\n }\n }\n\n return {\n build: {\n state: buildState,\n factIds: sortedReadinessUnique(build.map(({ definition }) => definition.factId)),\n evidenceIds: stageEvidence(build),\n progress: observationProgress(\n runningBuild?.observation ?? queuedBuild?.observation ?? undefined\n )\n },\n verify: {\n state: verifyState,\n factIds: sortedReadinessUnique(verify.map(({ definition }) => definition.factId)),\n evidenceIds: stageEvidence(verify),\n progress: null\n },\n production: {\n state: productionState,\n factIds: sortedReadinessUnique(production.map(({ definition }) => definition.factId)),\n evidenceIds: stageEvidence(production),\n progress: observationProgress(deployment ?? undefined)\n }\n }\n}\n\n/** Derive the canonical verdict from facts, findings, and exact stage state. */\nexport const deriveEnvironmentReadinessVerdict = (input: {\n readonly blockers: ReadonlyArray<ReadinessFinding>\n readonly facts: ReadonlyArray<ReadinessFactEvaluation>\n readonly gaps: ReadonlyArray<ReadinessFinding>\n readonly stages: ReadinessStages\n}): ReadinessVerdict => {\n if (input.blockers.length > 0) return \"blocked\"\n if (input.stages.production.state === \"deploying\") return \"deploying\"\n if (\n input.facts.some(({ definition, observation }) => readinessObservationIsDeliveryActivity(definition, observation))\n ) return \"building\"\n if (\n input.gaps.length > 0 ||\n input.stages.build.state === \"held\" ||\n input.stages.verify.state === \"held\" ||\n input.stages.production.state === \"held\" ||\n input.facts.some(({ definition, result }) => definition.requirement === \"required\" && result !== \"verified\")\n ) return \"held\"\n return input.stages.production.state === \"succeeded\" ? \"shipped\" : \"ready\"\n}\n\ntype ReleaseEnvironmentReadiness = {\n readonly blockers: ReadonlyArray<ReadinessFinding>\n readonly environmentId: string\n readonly gaps: ReadonlyArray<ReadinessFinding>\n readonly nextEvaluationAt: UtcTimestamp | null\n readonly sourceFreshness: ReadonlyArray<ReadinessSourceSummary>\n readonly stages: ReadinessStages\n readonly verdict: ReadinessVerdict\n readonly warnings: ReadonlyArray<ReadinessFinding>\n}\n\n/** Exact merged findings implied by retained environment summaries. */\nexport const deriveReleaseReadinessFindings = (\n environments: ReadonlyArray<ReleaseEnvironmentReadiness>\n): {\n readonly blockers: Array<ReadinessFinding>\n readonly warnings: Array<ReadinessFinding>\n readonly gaps: Array<ReadinessFinding>\n} => ({\n blockers: normalizedFindings(environments.flatMap(({ blockers }) => blockers)),\n warnings: normalizedFindings(environments.flatMap(({ warnings }) => warnings)),\n gaps: normalizedFindings(environments.flatMap(({ gaps }) => gaps))\n})\n\n/** Exact worst-state source summaries implied by retained environments. */\nexport const deriveReleaseReadinessSourceSummaries = (\n environments: ReadonlyArray<ReleaseEnvironmentReadiness>\n): Array<ReadinessSourceSummary> => {\n const grouped = new Map<PluginConnectionId, Array<ReadinessSourceSummary>>()\n for (const summary of environments.flatMap(({ sourceFreshness }) => sourceFreshness)) {\n const current = grouped.get(summary.pluginConnectionId) ?? []\n current.push(summary)\n grouped.set(summary.pluginConnectionId, current)\n }\n return Array.from(grouped.entries())\n .map(([pluginConnectionId, summaries]): ReadinessSourceSummary => ({\n pluginConnectionId,\n freshness: summaries.reduce<ReadinessSourceSummary[\"freshness\"]>(\n (worst, summary) => freshnessRank[summary.freshness] > freshnessRank[worst] ? summary.freshness : worst,\n \"current\"\n ),\n health: summaries.reduce<ReadinessSourceSummary[\"health\"]>(\n (worst, summary) => healthRank[summary.health] > healthRank[worst] ? summary.health : worst,\n \"healthy\"\n ),\n evidenceIds: sortedReadinessUnique(summaries.flatMap(({ evidenceIds }) => evidenceIds))\n }))\n .sort((left, right) => compareReadinessText(left.pluginConnectionId, right.pluginConnectionId))\n}\n\n/** Earliest child freshness boundary implied by retained environments. */\nexport const deriveReleaseReadinessNextEvaluationAt = (\n environments: ReadonlyArray<ReleaseEnvironmentReadiness>\n): UtcTimestamp | null =>\n environments.reduce<UtcTimestamp | null>((earliest, { nextEvaluationAt }) => {\n if (nextEvaluationAt === null) return earliest\n return earliest === null || DateTime.Order(nextEvaluationAt, earliest) < 0 ? nextEvaluationAt : earliest\n }, null)\n\nconst firstReleaseProgress = (\n environments: ReadonlyArray<ReleaseEnvironmentReadiness>,\n stage: \"build\" | \"production\"\n): ReadinessProgress | null =>\n environments\n .slice()\n .sort((left, right) => compareReadinessText(left.environmentId, right.environmentId))\n .find((environment) => environment.stages[stage].progress !== null)?.stages[stage].progress ?? null\n\n/** Exact three-stage roll-up implied by retained environment summaries. */\nexport const deriveReleaseReadinessStages = (\n environments: ReadonlyArray<ReleaseEnvironmentReadiness>\n): ReadinessStages => {\n const buildStates = environments.map(({ stages }) => stages.build.state)\n const verifyStates = environments.map(({ stages }) => stages.verify.state)\n const productionStates = environments.map(({ stages }) => stages.production.state)\n const buildState: ReadinessStages[\"build\"][\"state\"] = buildStates.includes(\"failed\")\n ? \"failed\"\n : buildStates.includes(\"running\")\n ? \"running\"\n : buildStates.includes(\"queued\")\n ? \"queued\"\n : buildStates.every((state) => state === \"succeeded\")\n ? \"succeeded\"\n : buildStates.every((state) => state === \"not-started\")\n ? \"not-started\"\n : \"held\"\n const verifyState: ReadinessStages[\"verify\"][\"state\"] = verifyStates.includes(\"failed\")\n ? \"failed\"\n : verifyStates.includes(\"pending\")\n ? \"pending\"\n : verifyStates.every((state) => state === \"passed\")\n ? \"passed\"\n : verifyStates.every((state) => state === \"not-started\")\n ? \"not-started\"\n : \"held\"\n let productionState: ReadinessStages[\"production\"][\"state\"] = \"not-started\"\n if (productionStates.includes(\"failed\")) productionState = \"failed\"\n else if (productionStates.includes(\"rolled-back\")) productionState = \"rolled-back\"\n else if (productionStates.includes(\"deploying\")) productionState = \"deploying\"\n else if (productionStates.includes(\"held\")) productionState = \"held\"\n else if (productionStates.every((state) => state === \"succeeded\")) productionState = \"succeeded\"\n else if (productionStates.some((state) => state === \"waiting\" || state === \"succeeded\")) {\n productionState = \"waiting\"\n }\n\n return {\n build: {\n state: buildState,\n factIds: sortedReadinessUnique(environments.flatMap(({ stages }) => stages.build.factIds)),\n evidenceIds: sortedReadinessUnique(environments.flatMap(({ stages }) => stages.build.evidenceIds)),\n progress: firstReleaseProgress(environments, \"build\")\n },\n verify: {\n state: verifyState,\n factIds: sortedReadinessUnique(environments.flatMap(({ stages }) => stages.verify.factIds)),\n evidenceIds: sortedReadinessUnique(environments.flatMap(({ stages }) => stages.verify.evidenceIds)),\n progress: null\n },\n production: {\n state: productionState,\n factIds: sortedReadinessUnique(environments.flatMap(({ stages }) => stages.production.factIds)),\n evidenceIds: sortedReadinessUnique(environments.flatMap(({ stages }) => stages.production.evidenceIds)),\n progress: firstReleaseProgress(environments, \"production\")\n }\n }\n}\n\n/** Canonical cross-environment precedence for release readiness. */\nexport const deriveReleaseReadinessVerdict = (\n environments: ReadonlyArray<ReleaseEnvironmentReadiness>\n): ReadinessVerdict => {\n const verdicts = environments.map(({ verdict }) => verdict)\n if (verdicts.includes(\"blocked\")) return \"blocked\"\n if (verdicts.includes(\"deploying\")) return \"deploying\"\n if (verdicts.includes(\"building\")) return \"building\"\n if (verdicts.includes(\"held\")) return \"held\"\n return verdicts.every((verdict) => verdict === \"shipped\") ? \"shipped\" : \"ready\"\n}\n\nconst sameStringArray = (\n left: ReadonlyArray<string>,\n right: ReadonlyArray<string>\n): boolean => left.length === right.length && left.every((value, index) => value === right[index])\n\nconst progressIsEqual = (\n left: ReadinessProgress | null,\n right: ReadinessProgress | null\n): boolean =>\n left === null || right === null\n ? left === right\n : left._tag === \"count\" && right._tag === \"count\"\n ? left.completed === right.completed && left.total === right.total\n : left._tag === \"percent\" && right._tag === \"percent\" && left.value === right.value\n\n/** Structural equality for canonical stage records without serialization shortcuts. */\nexport const readinessStagesAreEqual = (\n left: ReadinessStages,\n right: ReadinessStages\n): boolean =>\n left.build.state === right.build.state &&\n sameStringArray(left.build.factIds, right.build.factIds) &&\n sameStringArray(left.build.evidenceIds, right.build.evidenceIds) &&\n progressIsEqual(left.build.progress, right.build.progress) &&\n left.verify.state === right.verify.state &&\n sameStringArray(left.verify.factIds, right.verify.factIds) &&\n sameStringArray(left.verify.evidenceIds, right.verify.evidenceIds) &&\n progressIsEqual(left.verify.progress, right.verify.progress) &&\n left.production.state === right.production.state &&\n sameStringArray(left.production.factIds, right.production.factIds) &&\n sameStringArray(left.production.evidenceIds, right.production.evidenceIds) &&\n progressIsEqual(left.production.progress, right.production.progress)\n","import * as DateTime from \"effect/DateTime\"\nimport * as Schema from \"effect/Schema\"\n\nimport {\n EnvironmentId,\n EvidenceId,\n PluginConnectionId,\n ReadinessAssessmentId,\n ReleaseId,\n WorkspaceId\n} from \"../identifiers.js\"\nimport { UtcTimestamp } from \"../utcTimestamp.js\"\nimport {\n compareReadinessText,\n deriveEnvironmentReadinessVerdict,\n deriveReadinessFindings,\n deriveReadinessNextEvaluationAt,\n deriveReadinessSourceSummaries,\n deriveReadinessStages,\n deriveReleaseReadinessFindings,\n deriveReleaseReadinessNextEvaluationAt,\n deriveReleaseReadinessSourceSummaries,\n deriveReleaseReadinessStages,\n deriveReleaseReadinessVerdict,\n readinessFactResult,\n readinessFindingKey,\n readinessPolicyShapeIsV1,\n readinessStagesAreEqual,\n sortedReadinessUnique\n} from \"./policy.js\"\n\nconst boundedIdentifier = (maximumLength: number, identifier: string) =>\n Schema.String.check(\n Schema.isTrimmed(),\n Schema.isMinLength(1),\n Schema.isMaxLength(maximumLength)\n ).annotate({ identifier })\n\nconst unique = <Value>(values: ReadonlyArray<Value>): boolean => new Set(values).size === values.length\n\nconst sameOrderedStrings = (\n left: ReadonlyArray<string>,\n right: ReadonlyArray<string>\n): boolean => left.length === right.length && left.every((value, index) => value === right[index])\n\nconst isCanonicalStrings = (values: ReadonlyArray<string>): boolean =>\n sameOrderedStrings(values, sortedReadinessUnique(values))\n\n/** Maximum exact evidence dependencies in one environment or release assessment. */\nexport const MAX_READINESS_EVIDENCE_REFERENCES = 512\n\n/** Maximum blockers, warnings, or gaps retained in one assessment. */\nexport const MAX_READINESS_FINDINGS = 1_025\n\n/** Stable identity of one V1 readiness fact, independent of display copy. */\nexport const ReadinessFactId = boundedIdentifier(200, \"ReadinessFactId\").pipe(\n Schema.check(Schema.isPattern(/^[a-z0-9][a-z0-9._:/-]*$/u)),\n Schema.brand(\"ReadinessFactId\")\n)\n\n/** Decoded readiness-fact identity. */\nexport type ReadinessFactId = typeof ReadinessFactId.Type\n\n/** Hash of the complete canonical candidate input assembled by the application layer. */\nexport const ReadinessCandidateDigest = Schema.String.check(\n Schema.isPattern(/^sha256:[0-9a-f]{64}$/u)\n).pipe(Schema.brand(\"ReadinessCandidateDigest\"))\n\n/** Decoded candidate digest. */\nexport type ReadinessCandidateDigest = typeof ReadinessCandidateDigest.Type\n\n/** Positive version of the rule policy used for one assessment. */\nexport const ReadinessRuleVersion = Schema.Int.check(Schema.isGreaterThan(0)).pipe(\n Schema.brand(\"ReadinessRuleVersion\")\n)\n\n/** Decoded readiness-rule version. */\nexport type ReadinessRuleVersion = typeof ReadinessRuleVersion.Type\n\n/** Positive version of the evaluator implementation used for one assessment. */\nexport const ReadinessDerivationVersion = Schema.Int.check(Schema.isGreaterThan(0)).pipe(\n Schema.brand(\"ReadinessDerivationVersion\")\n)\n\n/** Decoded readiness-derivation version. */\nexport type ReadinessDerivationVersion = typeof ReadinessDerivationVersion.Type\n\n/** V1 readiness policy version. */\nexport const READINESS_RULE_VERSION_V1 = ReadinessRuleVersion.make(1)\n\n/** V1 evaluator implementation version. */\nexport const READINESS_DERIVATION_VERSION_V1 = ReadinessDerivationVersion.make(1)\n\n/** Positive source revision of the release candidate. */\nexport const ReadinessReleaseRevision = Schema.Int.check(Schema.isGreaterThan(0))\n\n/** Decoded release-candidate revision. */\nexport type ReadinessReleaseRevision = typeof ReadinessReleaseRevision.Type\n\n/** Bounded immutable artifact revision, such as a commit or image digest. */\nexport const ReadinessArtifactRevision = boundedIdentifier(512, \"ReadinessArtifactRevision\")\n\n/** Decoded artifact revision. */\nexport type ReadinessArtifactRevision = typeof ReadinessArtifactRevision.Type\n\n/** Stable identity of a readiness rule set. */\nexport const ReadinessRuleId = boundedIdentifier(200, \"ReadinessRuleId\")\n\n/** Decoded readiness-rule identity. */\nexport type ReadinessRuleId = typeof ReadinessRuleId.Type\n\n/** Explicit release or target-environment scope of an assessment. */\nexport const ReadinessScope = Schema.TaggedUnion({\n release: { releaseId: ReleaseId },\n environment: { releaseId: ReleaseId, environmentId: EnvironmentId }\n})\n\n/** Decoded readiness scope. */\nexport type ReadinessScope = typeof ReadinessScope.Type\n\nconst CandidateIdentityBase = {\n workspaceId: WorkspaceId,\n releaseRevision: ReadinessReleaseRevision,\n artifactRevision: ReadinessArtifactRevision,\n digest: ReadinessCandidateDigest\n}\n\n/** Immutable target-environment candidate whose complete material is digest-bound. */\nexport const EnvironmentReadinessCandidateIdentity = Schema.Struct({\n ...CandidateIdentityBase,\n scope: Schema.TaggedStruct(\"environment\", {\n releaseId: ReleaseId,\n environmentId: EnvironmentId\n })\n})\n\n/** Immutable release-scope candidate whose child assessments are digest-bound. */\nexport const ReleaseReadinessCandidateIdentity = Schema.Struct({\n ...CandidateIdentityBase,\n scope: Schema.TaggedStruct(\"release\", { releaseId: ReleaseId })\n})\n\n/** Immutable deployable candidate whose complete material is bound by a digest. */\nexport const ReadinessCandidateIdentity = Schema.Union([\n EnvironmentReadinessCandidateIdentity,\n ReleaseReadinessCandidateIdentity\n])\n\n/** Decoded deployable candidate identity. */\nexport type ReadinessCandidateIdentity = typeof ReadinessCandidateIdentity.Type\n\n/** Stable rule-set identity and content digest retained with every assessment. */\nexport const ReadinessRuleReference = Schema.Struct({\n ruleId: ReadinessRuleId,\n version: ReadinessRuleVersion,\n digest: ReadinessCandidateDigest\n})\n\n/** Decoded readiness rule reference. */\nexport type ReadinessRuleReference = typeof ReadinessRuleReference.Type\n\n/** Canonical six-state readiness verdict. */\nexport const ReadinessVerdict = Schema.Literals([\n \"blocked\",\n \"ready\",\n \"deploying\",\n \"building\",\n \"shipped\",\n \"held\"\n])\n\n/** Decoded readiness verdict. */\nexport type ReadinessVerdict = typeof ReadinessVerdict.Type\n\n/** Closed provider-neutral fact categories understood by the V1 evaluator. */\nexport const ReadinessFactKind = Schema.Literals([\n \"relationship\",\n \"approval\",\n \"check\",\n \"execution\",\n \"documentation\",\n \"deployment\"\n])\n\n/** Decoded readiness-fact category. */\nexport type ReadinessFactKind = typeof ReadinessFactKind.Type\n\n/** Whether a fact gates readiness or only contributes context. */\nexport const ReadinessFactRequirement = Schema.Literals([\"required\", \"advisory\"])\n\n/** Decoded fact requirement. */\nexport type ReadinessFactRequirement = typeof ReadinessFactRequirement.Type\n\n/** Policy definition that makes missing observations explicit rather than successful by absence. */\nexport const ReadinessFactDefinition = Schema.Struct({\n factId: ReadinessFactId,\n kind: ReadinessFactKind,\n requirement: ReadinessFactRequirement\n})\n\n/** Decoded readiness-fact definition. */\nexport type ReadinessFactDefinition = typeof ReadinessFactDefinition.Type\n\nconst CountProgress = Schema.TaggedStruct(\"count\", {\n completed: Schema.Int.check(Schema.isGreaterThanOrEqualTo(0)),\n total: Schema.Int.check(Schema.isGreaterThan(0))\n}).check(\n Schema.makeFilter(({ completed, total }) => completed <= total, {\n expected: \"readiness progress completed count not to exceed its total\"\n })\n)\n\nconst PercentProgress = Schema.TaggedStruct(\"percent\", {\n value: Schema.Number.check(\n Schema.makeFilter((value) => value >= 0 && value <= 100, {\n expected: \"readiness progress percentage between zero and one hundred\"\n })\n )\n})\n\n/** Typed progress for builds and deployments without copied display text. */\nexport const ReadinessProgress = Schema.Union([CountProgress, PercentProgress]).pipe(\n Schema.toTaggedUnion(\"_tag\")\n)\n\n/** Decoded readiness progress. */\nexport type ReadinessProgress = typeof ReadinessProgress.Type\n\n/** Closed normalized observation states; vendor strings never enter rule evaluation. */\nexport const ReadinessFactState = Schema.TaggedUnion({\n relationship: {\n status: Schema.Literals([\n \"missing\",\n \"inferred\",\n \"proposed\",\n \"verified\",\n \"governed\",\n \"rejected\",\n \"superseded\"\n ])\n },\n approval: {\n status: Schema.Literals([\"missing\", \"pending\", \"approved\", \"rejected\", \"expired\"])\n },\n check: {\n status: Schema.Literals([\"missing\", \"queued\", \"running\", \"passed\", \"failed\", \"cancelled\"])\n },\n execution: {\n status: Schema.Literals([\"missing\", \"queued\", \"running\", \"succeeded\", \"failed\", \"stopped\"]),\n progress: Schema.NullOr(ReadinessProgress)\n },\n documentation: {\n status: Schema.Literals([\"missing\", \"draft\", \"current\", \"stale\", \"superseded\"])\n },\n deployment: {\n status: Schema.Literals([\"not-started\", \"pending\", \"deploying\", \"succeeded\", \"failed\", \"rolled-back\"]),\n progress: Schema.NullOr(ReadinessProgress)\n }\n})\n\n/** Decoded normalized readiness observation state. */\nexport type ReadinessFactState = typeof ReadinessFactState.Type\n\n/** Exact origin of evidence used for dependency tracking and plugin-health invalidation. */\nexport const ReadinessEvidenceSource = Schema.TaggedUnion({\n plugin: {\n pluginConnectionId: PluginConnectionId,\n health: Schema.Literals([\"healthy\", \"degraded\", \"unavailable\", \"disabled\"])\n },\n local: { origin: Schema.Literals([\"human\", \"agent\", \"system\"]) }\n})\n\n/** Decoded readiness-evidence source. */\nexport type ReadinessEvidenceSource = typeof ReadinessEvidenceSource.Type\n\n/** Exact evidence dependency and its freshness at the injected evaluation boundary. */\nexport const ReadinessEvidenceReference = Schema.Struct({\n evidenceId: EvidenceId,\n source: ReadinessEvidenceSource,\n freshness: Schema.Literals([\"current\", \"stale\", \"missing\", \"unavailable\"]),\n validity: Schema.Literals([\"valid\", \"expired\"]),\n reevaluateAt: Schema.NullOr(UtcTimestamp)\n})\n\n/** Decoded readiness-evidence dependency. */\nexport type ReadinessEvidenceReference = typeof ReadinessEvidenceReference.Type\n\nconst stateRequiresEvidence = (state: ReadinessFactState): boolean => state.status !== \"missing\"\n\n/** One normalized observation for a policy-defined fact. */\nexport const ReadinessFactObservation = Schema.Struct({\n factId: ReadinessFactId,\n state: ReadinessFactState,\n evidence: Schema.Array(ReadinessEvidenceReference).check(Schema.isMaxLength(128))\n}).check(\n Schema.makeFilter(({ evidence }) => unique(evidence.map(({ evidenceId }) => evidenceId)), {\n expected: \"readiness observation evidence identifiers to be unique\"\n }),\n Schema.makeFilter(({ evidence, state }) => !stateRequiresEvidence(state) || evidence.length > 0, {\n expected: \"a non-empty readiness observation state to reference evidence\"\n })\n)\n\n/** Decoded readiness-fact observation. */\nexport type ReadinessFactObservation = typeof ReadinessFactObservation.Type\n\n/** Stable machine-readable reason emitted by the V1 rule policy. */\nexport const ReadinessFindingCode = Schema.Literals([\n \"input-incomplete\",\n \"relationship-missing\",\n \"relationship-unverified\",\n \"relationship-rejected\",\n \"relationship-superseded\",\n \"approval-missing\",\n \"approval-pending\",\n \"approval-rejected\",\n \"approval-expired\",\n \"check-missing\",\n \"check-pending\",\n \"check-failed\",\n \"check-cancelled\",\n \"execution-missing\",\n \"execution-pending\",\n \"execution-failed\",\n \"execution-stopped\",\n \"documentation-missing\",\n \"documentation-draft\",\n \"documentation-stale\",\n \"documentation-superseded\",\n \"deployment-missing\",\n \"deployment-failed\",\n \"deployment-rolled-back\",\n \"source-stale\",\n \"source-missing\",\n \"source-unavailable\",\n \"plugin-degraded\",\n \"evidence-expired\"\n])\n\n/** Decoded readiness finding code. */\nexport type ReadinessFindingCode = typeof ReadinessFindingCode.Type\n\n/** Stable subject of a readiness finding. */\nexport const ReadinessFindingSubject = Schema.TaggedUnion({\n fact: { factId: ReadinessFactId },\n source: { pluginConnectionId: PluginConnectionId },\n candidate: {}\n})\n\n/** One blocker, warning, or evidence gap without presentation prose. */\nexport const ReadinessFinding = Schema.Struct({\n code: ReadinessFindingCode,\n subject: ReadinessFindingSubject,\n evidenceIds: Schema.Array(EvidenceId).check(Schema.isMaxLength(128))\n}).check(\n Schema.makeFilter(({ evidenceIds }) => unique(evidenceIds), {\n expected: \"readiness finding evidence identifiers to be unique\"\n })\n)\n\n/** Decoded readiness finding. */\nexport type ReadinessFinding = typeof ReadinessFinding.Type\n\n/** Outcome retained for every evaluated fact. */\nexport const ReadinessFactResult = Schema.Literals([\"verified\", \"pending\", \"failed\", \"gap\", \"advisory\"])\n\n/** Decoded readiness-fact outcome. */\nexport type ReadinessFactResult = typeof ReadinessFactResult.Type\n\n/** Auditable fact evaluation retained in an environment assessment. */\nexport const ReadinessFactEvaluation = Schema.Struct({\n definition: ReadinessFactDefinition,\n observation: Schema.NullOr(ReadinessFactObservation),\n result: ReadinessFactResult,\n evidenceIds: Schema.Array(EvidenceId).check(Schema.isMaxLength(128))\n}).check(\n Schema.makeFilter(({ definition, evidenceIds, observation, result }) =>\n observation === null\n ? evidenceIds.length === 0 && result === readinessFactResult(definition, observation)\n : observation.factId === definition.factId &&\n observation.state._tag === definition.kind &&\n sameOrderedStrings(\n evidenceIds,\n sortedReadinessUnique(observation.evidence.map(({ evidenceId }) => evidenceId))\n ) &&\n result === readinessFactResult(definition, observation), {\n expected: \"readiness fact evaluation to match its definition, observation, evidence, and result\"\n })\n)\n\n/** Decoded readiness-fact evaluation. */\nexport type ReadinessFactEvaluation = typeof ReadinessFactEvaluation.Type\n\n/** Worst current source state for one contributing plugin connection. */\nexport const ReadinessSourceSummary = Schema.Struct({\n pluginConnectionId: PluginConnectionId,\n freshness: Schema.Literals([\"current\", \"stale\", \"missing\", \"unavailable\"]),\n health: Schema.Literals([\"healthy\", \"degraded\", \"unavailable\", \"disabled\"]),\n evidenceIds: Schema.Array(EvidenceId).check(Schema.isMaxLength(512))\n})\n\n/** Decoded source summary. */\nexport type ReadinessSourceSummary = typeof ReadinessSourceSummary.Type\n\nconst ReadinessStageBase = {\n factIds: Schema.Array(ReadinessFactId).check(Schema.isMaxLength(512)),\n evidenceIds: Schema.Array(EvidenceId).check(Schema.isMaxLength(512)),\n progress: Schema.NullOr(ReadinessProgress)\n}\n\n/** Server-derived Build stage. */\nexport const BuildReadinessStage = Schema.Struct({\n ...ReadinessStageBase,\n state: Schema.Literals([\"not-started\", \"queued\", \"running\", \"succeeded\", \"failed\", \"held\"])\n})\n\n/** Server-derived Verify stage. */\nexport const VerifyReadinessStage = Schema.Struct({\n ...ReadinessStageBase,\n state: Schema.Literals([\"not-started\", \"pending\", \"passed\", \"failed\", \"held\"])\n})\n\n/** Server-derived Production stage. */\nexport const ProductionReadinessStage = Schema.Struct({\n ...ReadinessStageBase,\n state: Schema.Literals([\n \"not-started\",\n \"waiting\",\n \"deploying\",\n \"succeeded\",\n \"failed\",\n \"rolled-back\",\n \"held\"\n ])\n})\n\n/** Exactly three authoritative delivery stages. */\nexport const ReadinessStages = Schema.Struct({\n build: BuildReadinessStage,\n verify: VerifyReadinessStage,\n production: ProductionReadinessStage\n})\n\n/** Decoded readiness stages. */\nexport type ReadinessStages = typeof ReadinessStages.Type\n\n/** Complete, decoded input for one environment evaluation. */\nexport const EnvironmentReadinessEvaluationInput = Schema.Struct({\n assessmentId: ReadinessAssessmentId,\n previousAssessmentId: Schema.NullOr(ReadinessAssessmentId),\n candidate: EnvironmentReadinessCandidateIdentity,\n rule: ReadinessRuleReference,\n derivationVersion: ReadinessDerivationVersion,\n evaluatedAt: UtcTimestamp,\n complete: Schema.Boolean,\n definitions: Schema.Array(ReadinessFactDefinition).check(Schema.isMaxLength(512)),\n observations: Schema.Array(ReadinessFactObservation).check(Schema.isMaxLength(512))\n}).check(\n Schema.makeFilter(\n ({ assessmentId, previousAssessmentId }) => previousAssessmentId === null || previousAssessmentId !== assessmentId,\n { expected: \"an environment readiness input not to supersede itself\" }\n ),\n Schema.makeFilter(\n ({ derivationVersion }) => derivationVersion === READINESS_DERIVATION_VERSION_V1,\n { expected: \"the V1 environment evaluator to use derivation version 1\" }\n ),\n Schema.makeFilter(({ definitions }) => unique(definitions.map(({ factId }) => factId)), {\n expected: \"readiness fact definitions to have unique identities\"\n }),\n Schema.makeFilter(({ observations }) => unique(observations.map(({ factId }) => factId)), {\n expected: \"readiness fact observations to have unique identities\"\n }),\n Schema.makeFilter(\n ({ observations }) =>\n observations.reduce((total, observation) => total + observation.evidence.length, 0) <=\n MAX_READINESS_EVIDENCE_REFERENCES,\n {\n expected: \"environment readiness input to fit its bounded assessment evidence set\"\n }\n ),\n Schema.makeFilter(({ definitions, observations }) => {\n const definitionsById = new Map(definitions.map((definition) => [definition.factId, definition]))\n return observations.every((observation) => definitionsById.get(observation.factId)?.kind === observation.state._tag)\n }, { expected: \"readiness observations to match one policy fact of the same kind\" }),\n Schema.makeFilter(({ definitions, observations }) => readinessPolicyShapeIsV1(definitions, observations), {\n expected: \"environment readiness input to contain the complete V1 policy shape\"\n })\n)\n\n/** Decoded environment-readiness input. */\nexport type EnvironmentReadinessEvaluationInput = typeof EnvironmentReadinessEvaluationInput.Type\n\nconst factEvidenceIds = (facts: ReadonlyArray<ReadinessFactEvaluation>): Array<EvidenceId> =>\n sortedReadinessUnique(facts.flatMap(({ evidenceIds }) => evidenceIds))\n\nconst factsOfKinds = (\n facts: ReadonlyArray<ReadinessFactEvaluation>,\n kinds: ReadonlyArray<ReadinessFactKind>\n): ReadonlyArray<ReadinessFactEvaluation> => facts.filter(({ definition }) => kinds.includes(definition.kind))\n\nconst stageMatchesFacts = (\n stage: ReadinessStages[\"build\"] | ReadinessStages[\"verify\"] | ReadinessStages[\"production\"],\n facts: ReadonlyArray<ReadinessFactEvaluation>\n): boolean =>\n sameOrderedStrings(\n stage.factIds,\n sortedReadinessUnique(facts.map(({ definition }) => definition.factId))\n ) && sameOrderedStrings(stage.evidenceIds, factEvidenceIds(facts))\n\nconst canonicalAssessmentCollections = (assessment: {\n readonly blockers: ReadonlyArray<ReadinessFinding>\n readonly evidenceIds: ReadonlyArray<EvidenceId>\n readonly gaps: ReadonlyArray<ReadinessFinding>\n readonly sourceFreshness: ReadonlyArray<ReadinessSourceSummary>\n readonly stages: ReadinessStages\n readonly warnings: ReadonlyArray<ReadinessFinding>\n}): boolean => {\n const evidence = new Set(assessment.evidenceIds)\n const findings = [assessment.blockers, assessment.warnings, assessment.gaps]\n return isCanonicalStrings(assessment.evidenceIds) &&\n findings.every((items) =>\n sameOrderedStrings(items.map(readinessFindingKey), items.map(readinessFindingKey).sort(compareReadinessText)) &&\n unique(items.map(readinessFindingKey)) &&\n items.every(({ evidenceIds }) =>\n isCanonicalStrings(evidenceIds) && evidenceIds.every((evidenceId) => evidence.has(evidenceId))\n )\n ) &&\n isCanonicalStrings(assessment.stages.build.factIds) &&\n isCanonicalStrings(assessment.stages.build.evidenceIds) &&\n isCanonicalStrings(assessment.stages.verify.factIds) &&\n isCanonicalStrings(assessment.stages.verify.evidenceIds) &&\n isCanonicalStrings(assessment.stages.production.factIds) &&\n isCanonicalStrings(assessment.stages.production.evidenceIds) &&\n isCanonicalStrings(assessment.sourceFreshness.map(({ pluginConnectionId }) => pluginConnectionId)) &&\n assessment.sourceFreshness.every(({ evidenceIds }) =>\n isCanonicalStrings(evidenceIds) && evidenceIds.every((evidenceId) => evidence.has(evidenceId))\n )\n}\n\nconst AssessmentBase = {\n assessmentId: ReadinessAssessmentId,\n previousAssessmentId: Schema.NullOr(ReadinessAssessmentId),\n candidate: ReadinessCandidateIdentity,\n rule: ReadinessRuleReference,\n derivationVersion: ReadinessDerivationVersion,\n evaluatedAt: UtcTimestamp,\n nextEvaluationAt: Schema.NullOr(UtcTimestamp),\n verdict: ReadinessVerdict,\n stages: ReadinessStages,\n blockers: Schema.Array(ReadinessFinding).check(Schema.isMaxLength(MAX_READINESS_FINDINGS)),\n warnings: Schema.Array(ReadinessFinding).check(Schema.isMaxLength(MAX_READINESS_FINDINGS)),\n gaps: Schema.Array(ReadinessFinding).check(Schema.isMaxLength(MAX_READINESS_FINDINGS)),\n sourceFreshness: Schema.Array(ReadinessSourceSummary).check(Schema.isMaxLength(512)),\n evidenceIds: Schema.Array(EvidenceId).check(Schema.isMaxLength(MAX_READINESS_EVIDENCE_REFERENCES))\n}\n\n/** Immutable environment assessment retaining exact facts and evidence. */\nexport const EnvironmentReadinessAssessment = Schema.Struct({\n ...AssessmentBase,\n _tag: Schema.Literal(\"environment\"),\n candidate: EnvironmentReadinessCandidateIdentity,\n inputComplete: Schema.Boolean,\n facts: Schema.Array(ReadinessFactEvaluation).check(Schema.isMaxLength(512)),\n requiredFactIds: Schema.Array(ReadinessFactId).check(Schema.isMaxLength(512)),\n verifiedFactIds: Schema.Array(ReadinessFactId).check(Schema.isMaxLength(512))\n}).check(\n Schema.makeFilter(\n ({ derivationVersion }) => derivationVersion === READINESS_DERIVATION_VERSION_V1,\n { expected: \"an environment readiness assessment derived by V1\" }\n ),\n Schema.makeFilter(\n ({ assessmentId, previousAssessmentId }) => previousAssessmentId === null || previousAssessmentId !== assessmentId,\n {\n expected: \"a readiness assessment not to supersede itself\"\n }\n ),\n Schema.makeFilter(({ facts }) => isCanonicalStrings(facts.map(({ definition }) => definition.factId)), {\n expected: \"environment readiness facts to have canonical unique identities\"\n }),\n Schema.makeFilter(\n ({ facts }) =>\n readinessPolicyShapeIsV1(\n facts.map(({ definition }) => definition),\n facts.flatMap(({ observation }) => observation === null ? [] : [observation])\n ),\n { expected: \"environment readiness assessment to retain the complete V1 policy shape\" }\n ),\n Schema.makeFilter(({ facts, requiredFactIds }) =>\n sameOrderedStrings(\n requiredFactIds,\n sortedReadinessUnique(\n facts\n .filter(({ definition }) => definition.requirement === \"required\")\n .map(({ definition }) => definition.factId)\n )\n ), { expected: \"environment readiness required facts to match retained evaluations\" }),\n Schema.makeFilter(({ facts, verifiedFactIds }) =>\n sameOrderedStrings(\n verifiedFactIds,\n sortedReadinessUnique(\n facts\n .filter(({ result }) => result === \"verified\")\n .map(({ definition }) => definition.factId)\n )\n ), { expected: \"environment readiness verified facts to match retained evaluations\" }),\n Schema.makeFilter(({ blockers, facts, gaps, inputComplete, warnings }) => {\n const expected = deriveReadinessFindings(facts, inputComplete)\n return sameOrderedStrings(blockers.map(readinessFindingKey), expected.blockers.map(readinessFindingKey)) &&\n sameOrderedStrings(warnings.map(readinessFindingKey), expected.warnings.map(readinessFindingKey)) &&\n sameOrderedStrings(gaps.map(readinessFindingKey), expected.gaps.map(readinessFindingKey))\n }, { expected: \"environment readiness findings to match retained fact evaluations\" }),\n Schema.makeFilter(({ evidenceIds, facts }) =>\n sameOrderedStrings(\n evidenceIds,\n factEvidenceIds(facts)\n ), { expected: \"environment readiness evidence to match retained fact dependencies\" }),\n Schema.makeFilter(({ facts, stages }) => {\n const build = factsOfKinds(facts, [\"execution\"])\n const verify = factsOfKinds(facts, [\"relationship\", \"approval\", \"check\", \"documentation\"])\n const production = factsOfKinds(facts, [\"deployment\"])\n return stageMatchesFacts(stages.build, build) &&\n stageMatchesFacts(stages.verify, verify) &&\n stageMatchesFacts(stages.production, production)\n }, { expected: \"environment readiness stages to retain their exact fact and evidence dependencies\" }),\n Schema.makeFilter(({ facts, stages }) => readinessStagesAreEqual(stages, deriveReadinessStages(facts)), {\n expected: \"environment readiness stage states to match retained fact evaluations\"\n }),\n Schema.makeFilter(({ facts, sourceFreshness }) => {\n const expected = deriveReadinessSourceSummaries(facts)\n return sourceFreshness.length === expected.length && sourceFreshness.every((summary, index) => {\n const item = expected[index]\n return item !== undefined &&\n summary.pluginConnectionId === item.pluginConnectionId &&\n summary.freshness === item.freshness &&\n summary.health === item.health &&\n sameOrderedStrings(summary.evidenceIds, item.evidenceIds)\n })\n }, { expected: \"environment readiness source summaries to match retained evidence\" }),\n Schema.makeFilter(({ facts, nextEvaluationAt }) => {\n const expected = deriveReadinessNextEvaluationAt(facts)\n return expected === null || nextEvaluationAt === null\n ? expected === nextEvaluationAt\n : DateTime.Order(expected, nextEvaluationAt) === 0\n }, { expected: \"environment readiness reevaluation time to match retained evidence\" }),\n Schema.makeFilter(canonicalAssessmentCollections, {\n expected: \"environment readiness collections to be canonical and evidence-bound\"\n }),\n Schema.makeFilter((assessment) => assessment.verdict === deriveEnvironmentReadinessVerdict(assessment), {\n expected: \"environment readiness verdict to agree with retained facts, findings, and stages\"\n })\n)\n\n/** Decoded immutable environment assessment. */\nexport type EnvironmentReadinessAssessment = typeof EnvironmentReadinessAssessment.Type\n\n/** Compact immutable child retained by a release-scope roll-up. */\nexport const EnvironmentReadinessSummary = Schema.Struct({\n assessmentId: ReadinessAssessmentId,\n environmentId: EnvironmentId,\n candidateDigest: ReadinessCandidateDigest,\n inputComplete: Schema.Boolean,\n facts: Schema.Array(ReadinessFactEvaluation).check(Schema.isMaxLength(512)),\n nextEvaluationAt: Schema.NullOr(UtcTimestamp),\n verdict: ReadinessVerdict,\n stages: ReadinessStages,\n blockers: Schema.Array(ReadinessFinding).check(Schema.isMaxLength(MAX_READINESS_FINDINGS)),\n warnings: Schema.Array(ReadinessFinding).check(Schema.isMaxLength(MAX_READINESS_FINDINGS)),\n gaps: Schema.Array(ReadinessFinding).check(Schema.isMaxLength(MAX_READINESS_FINDINGS)),\n sourceFreshness: Schema.Array(ReadinessSourceSummary).check(Schema.isMaxLength(512)),\n evidenceIds: Schema.Array(EvidenceId).check(Schema.isMaxLength(MAX_READINESS_EVIDENCE_REFERENCES))\n}).check(\n Schema.makeFilter(({ facts }) => isCanonicalStrings(facts.map(({ definition }) => definition.factId)), {\n expected: \"an environment readiness summary to have canonical unique facts\"\n }),\n Schema.makeFilter(\n ({ facts }) =>\n readinessPolicyShapeIsV1(\n facts.map(({ definition }) => definition),\n facts.flatMap(({ observation }) => observation === null ? [] : [observation])\n ),\n { expected: \"an environment readiness summary to retain the complete V1 policy shape\" }\n ),\n Schema.makeFilter(({ blockers, facts, gaps, inputComplete, warnings }) => {\n const expected = deriveReadinessFindings(facts, inputComplete)\n return sameOrderedStrings(blockers.map(readinessFindingKey), expected.blockers.map(readinessFindingKey)) &&\n sameOrderedStrings(warnings.map(readinessFindingKey), expected.warnings.map(readinessFindingKey)) &&\n sameOrderedStrings(gaps.map(readinessFindingKey), expected.gaps.map(readinessFindingKey))\n }, { expected: \"environment readiness summary findings to match retained facts\" }),\n Schema.makeFilter(({ evidenceIds, facts }) => sameOrderedStrings(evidenceIds, factEvidenceIds(facts)), {\n expected: \"environment readiness summary evidence to match retained facts\"\n }),\n Schema.makeFilter(({ facts, stages }) => readinessStagesAreEqual(stages, deriveReadinessStages(facts)), {\n expected: \"environment readiness summary stages to match retained facts\"\n }),\n Schema.makeFilter(({ facts, sourceFreshness }) => {\n const expected = deriveReadinessSourceSummaries(facts)\n return sourceFreshness.length === expected.length && sourceFreshness.every((summary, index) => {\n const item = expected[index]\n return item !== undefined &&\n summary.pluginConnectionId === item.pluginConnectionId &&\n summary.freshness === item.freshness &&\n summary.health === item.health &&\n sameOrderedStrings(summary.evidenceIds, item.evidenceIds)\n })\n }, { expected: \"environment readiness summary sources to match retained facts\" }),\n Schema.makeFilter(({ facts, nextEvaluationAt }) => {\n const expected = deriveReadinessNextEvaluationAt(facts)\n return expected === null || nextEvaluationAt === null\n ? expected === nextEvaluationAt\n : DateTime.Order(expected, nextEvaluationAt) === 0\n }, { expected: \"environment readiness summary reevaluation time to match retained facts\" }),\n Schema.makeFilter(canonicalAssessmentCollections, {\n expected: \"environment readiness summary collections to be canonical and evidence-bound\"\n }),\n Schema.makeFilter((summary) => summary.verdict === deriveEnvironmentReadinessVerdict(summary), {\n expected: \"environment readiness summary verdict to match retained facts, findings, and stages\"\n })\n)\n\n/** Immutable release assessment rolled up from current target environments. */\nexport const ReleaseReadinessAssessment = Schema.Struct({\n ...AssessmentBase,\n _tag: Schema.Literal(\"release\"),\n candidate: ReleaseReadinessCandidateIdentity,\n environments: Schema.NonEmptyArray(EnvironmentReadinessSummary).check(Schema.isMaxLength(512))\n}).check(\n Schema.makeFilter(\n ({ derivationVersion }) => derivationVersion === READINESS_DERIVATION_VERSION_V1,\n { expected: \"a release readiness assessment derived by V1\" }\n ),\n Schema.makeFilter(\n ({ assessmentId, previousAssessmentId }) => previousAssessmentId === null || previousAssessmentId !== assessmentId,\n {\n expected: \"a release readiness assessment not to supersede itself\"\n }\n ),\n Schema.makeFilter(({ environments }) => isCanonicalStrings(environments.map(({ environmentId }) => environmentId)), {\n expected: \"release readiness environments to have canonical unique identities\"\n }),\n Schema.makeFilter(\n ({ environments, stages }) => readinessStagesAreEqual(stages, deriveReleaseReadinessStages(environments)),\n { expected: \"release readiness stages to match retained environment summaries\" }\n ),\n Schema.makeFilter(({ blockers, environments, gaps, warnings }) => {\n const expected = deriveReleaseReadinessFindings(environments)\n return sameOrderedStrings(blockers.map(readinessFindingKey), expected.blockers.map(readinessFindingKey)) &&\n sameOrderedStrings(warnings.map(readinessFindingKey), expected.warnings.map(readinessFindingKey)) &&\n sameOrderedStrings(gaps.map(readinessFindingKey), expected.gaps.map(readinessFindingKey))\n }, { expected: \"release readiness findings to match retained environment summaries\" }),\n Schema.makeFilter(({ environments, sourceFreshness }) => {\n const expected = deriveReleaseReadinessSourceSummaries(environments)\n return sourceFreshness.length === expected.length && sourceFreshness.every((summary, index) => {\n const item = expected[index]\n return item !== undefined &&\n summary.pluginConnectionId === item.pluginConnectionId &&\n summary.freshness === item.freshness &&\n summary.health === item.health &&\n sameOrderedStrings(summary.evidenceIds, item.evidenceIds)\n })\n }, { expected: \"release readiness sources to match retained environment summaries\" }),\n Schema.makeFilter(({ environments, nextEvaluationAt }) => {\n const expected = deriveReleaseReadinessNextEvaluationAt(environments)\n return expected === null || nextEvaluationAt === null\n ? expected === nextEvaluationAt\n : DateTime.Order(expected, nextEvaluationAt) === 0\n }, { expected: \"release readiness reevaluation time to match retained environment summaries\" }),\n Schema.makeFilter(({ environments, evidenceIds }) =>\n sameOrderedStrings(\n evidenceIds,\n sortedReadinessUnique(environments.flatMap(({ evidenceIds }) => evidenceIds))\n ), { expected: \"release readiness evidence to match retained environment summaries\" }),\n Schema.makeFilter(canonicalAssessmentCollections, {\n expected: \"release readiness collections to be canonical and evidence-bound\"\n }),\n Schema.makeFilter(({ environments, verdict }) => verdict === deriveReleaseReadinessVerdict(environments), {\n expected: \"release readiness verdict to agree with its environment summaries\"\n })\n)\n\n/** Decoded immutable release readiness assessment. */\nexport type ReleaseReadinessAssessment = typeof ReleaseReadinessAssessment.Type\n\n/** Any immutable server-authoritative readiness assessment. */\nexport const ReadinessAssessment = Schema.Union([\n EnvironmentReadinessAssessment,\n ReleaseReadinessAssessment\n]).pipe(Schema.toTaggedUnion(\"_tag\"))\n\n/** Decoded readiness assessment. */\nexport type ReadinessAssessment = typeof ReadinessAssessment.Type\n\n/** Complete, decoded input for one release-scope roll-up. */\nexport const ReleaseReadinessRollupInput = Schema.Struct({\n assessmentId: ReadinessAssessmentId,\n previousAssessmentId: Schema.NullOr(ReadinessAssessmentId),\n candidate: ReleaseReadinessCandidateIdentity,\n evaluatedAt: UtcTimestamp,\n environments: Schema.NonEmptyArray(EnvironmentReadinessAssessment).check(Schema.isMaxLength(512))\n}).check(\n Schema.makeFilter(\n ({ assessmentId, previousAssessmentId }) => previousAssessmentId === null || previousAssessmentId !== assessmentId,\n { expected: \"a release readiness roll-up input not to supersede itself\" }\n ),\n Schema.makeFilter(({ environments }) => unique(environments.map(({ candidate }) => candidate.scope.environmentId)), {\n expected: \"release readiness roll-up environment identities to be unique\"\n }),\n Schema.makeFilter(\n ({ candidate, environments }) =>\n environments.every((assessment) =>\n assessment.candidate.workspaceId === candidate.workspaceId &&\n assessment.candidate.scope.releaseId === candidate.scope.releaseId &&\n assessment.candidate.releaseRevision === candidate.releaseRevision &&\n assessment.candidate.artifactRevision === candidate.artifactRevision\n ),\n {\n expected: \"release readiness roll-up children to name the same workspace, release, and candidate revision\"\n }\n ),\n Schema.makeFilter(\n ({ environments }) =>\n environments.every((assessment) =>\n assessment.rule.ruleId === environments[0]?.rule.ruleId &&\n assessment.rule.version === environments[0]?.rule.version &&\n assessment.rule.digest === environments[0]?.rule.digest &&\n assessment.derivationVersion === environments[0]?.derivationVersion\n ),\n { expected: \"release readiness roll-up children to use one rule and derivation version\" }\n ),\n Schema.makeFilter(\n ({ environments }) =>\n sortedReadinessUnique(environments.flatMap(({ evidenceIds }) => evidenceIds)).length <=\n MAX_READINESS_EVIDENCE_REFERENCES,\n {\n expected: \"release readiness roll-up evidence to fit its bounded assessment\"\n }\n ),\n Schema.makeFilter(({ environments }) =>\n [\"build\", \"verify\", \"production\"].every((stage) => {\n if (stage === \"build\") {\n return sortedReadinessUnique(environments.flatMap(({ stages }) => stages.build.factIds)).length <= 512\n }\n if (stage === \"verify\") {\n return sortedReadinessUnique(environments.flatMap(({ stages }) => stages.verify.factIds)).length <= 512\n }\n return sortedReadinessUnique(environments.flatMap(({ stages }) => stages.production.factIds)).length <= 512\n }), { expected: \"release readiness roll-up facts to fit its bounded stages\" }),\n Schema.makeFilter(\n ({ environments }) =>\n environments.reduce((total, assessment) => total + assessment.blockers.length, 0) <=\n MAX_READINESS_FINDINGS &&\n environments.reduce((total, assessment) => total + assessment.warnings.length, 0) <=\n MAX_READINESS_FINDINGS &&\n environments.reduce((total, assessment) => total + assessment.gaps.length, 0) <=\n MAX_READINESS_FINDINGS,\n {\n expected: \"release readiness roll-up findings to fit its bounded assessment\"\n }\n ),\n Schema.makeFilter(\n ({ environments }) =>\n sortedReadinessUnique(\n environments.flatMap(({ sourceFreshness }) =>\n sourceFreshness.map(({ pluginConnectionId }) => pluginConnectionId)\n )\n ).length <= 512,\n {\n expected: \"release readiness roll-up sources to fit its bounded assessment\"\n }\n ),\n Schema.makeFilter(\n ({ environments, evaluatedAt }) =>\n environments.every((assessment) => DateTime.Order(assessment.evaluatedAt, evaluatedAt) <= 0),\n { expected: \"release readiness roll-up not to predate its child assessments\" }\n )\n)\n\n/** Decoded release-readiness roll-up input. */\nexport type ReleaseReadinessRollupInput = typeof ReleaseReadinessRollupInput.Type\n","import * as DateTime from \"effect/DateTime\"\nimport * as Schema from \"effect/Schema\"\nimport {\n AgentId,\n EntityId,\n EnvironmentId,\n PersonId,\n PluginConnectionId,\n ReleaseId,\n RoleAssignmentId,\n WorkspaceId\n} from \"./identifiers.js\"\nimport { ProviderId, VendorImmutableId } from \"./sourceRevision.js\"\nimport { UtcTimestamp } from \"./utcTimestamp.js\"\n\nconst DisplayName = Schema.String.check(Schema.isTrimmed(), Schema.isMinLength(1), Schema.isMaxLength(200))\nconst AvatarReferenceValue = Schema.String.check(\n Schema.isTrimmed(),\n Schema.isMinLength(1),\n Schema.isMaxLength(500)\n)\nconst Initials = Schema.String.check(Schema.isTrimmed(), Schema.isMinLength(1), Schema.isMaxLength(4))\n\n/** An immutable provider identity associated with a canonical person. */\nexport const PersonSourceIdentity = Schema.Struct({\n pluginConnectionId: PluginConnectionId,\n providerId: ProviderId,\n vendorPersonId: VendorImmutableId\n})\n\n/** Decoded person identity from a provider. */\nexport type PersonSourceIdentity = typeof PersonSourceIdentity.Type\n\n/** Avatar media reference or deterministic initials fallback. */\nexport const PersonAvatar = Schema.TaggedUnion({\n initials: {\n text: Initials\n },\n reference: {\n reference: AvatarReferenceValue\n }\n})\n\n/** Decoded person avatar representation. */\nexport type PersonAvatar = typeof PersonAvatar.Type\n\n/**\n * Derives a stable one- or two-token initials fallback from a display name.\n * The first code point of the first and last non-empty tokens is used.\n */\nexport const derivePersonInitials = (displayName: string): string => {\n const tokens = displayName.trim().split(/\\s+/u).filter(Boolean)\n const firstToken = tokens.at(0) ?? \"\"\n const lastToken = tokens.at(-1) ?? \"\"\n const firstInitial = Array.from(firstToken).at(0) ?? \"\"\n const lastInitial = tokens.length > 1 ? (Array.from(lastToken).at(0) ?? \"\") : \"\"\n return `${firstInitial}${lastInitial}`.toLocaleUpperCase(\"en-US\")\n}\n\nconst PersonSchema = Schema.Struct({\n avatar: PersonAvatar,\n displayName: DisplayName,\n isActive: Schema.Boolean,\n personId: PersonId,\n sourceIdentities: Schema.Array(PersonSourceIdentity)\n}).check(\n Schema.makeFilter(\n ({ avatar, displayName }) => avatar._tag === \"reference\" || avatar.text === derivePersonInitials(displayName),\n { expected: \"initials avatar to match the deterministic display-name fallback\" }\n ),\n Schema.makeFilter(\n ({ sourceIdentities }) => {\n const identityKeys = sourceIdentities.map(\n ({ pluginConnectionId, providerId, vendorPersonId }) =>\n `${providerId}\\u0000${pluginConnectionId}\\u0000${vendorPersonId}`\n )\n return new Set(identityKeys).size === identityKeys.length\n },\n { expected: \"person source identities to be unique\" }\n )\n)\n\n/** Canonical person with provider identities and an accessible avatar fallback. */\nexport const Person = PersonSchema\n\n/** Decoded canonical person. */\nexport type Person = typeof Person.Type\n\n/** Human collaborator responsible for a domain action. */\nexport const HumanActor = Schema.TaggedStruct(\"human\", {\n personId: PersonId\n})\n\n/** Decoded human actor. */\nexport type HumanActor = typeof HumanActor.Type\n\n/** Automated agent responsible for a domain action. */\nexport const AgentActor = Schema.TaggedStruct(\"agent\", {\n agentId: AgentId\n})\n\n/** Decoded agent actor. */\nexport type AgentActor = typeof AgentActor.Type\n\n/** Human or agent responsible for a domain action. */\nexport const Actor = Schema.Union([HumanActor, AgentActor]).pipe(Schema.toTaggedUnion(\"_tag\"))\n\n/** Decoded human or agent actor. */\nexport type Actor = typeof Actor.Type\n\n/** Explicit collaboration role stored with an assignment. */\nexport const Role = Schema.Literals([\n \"workspace-owner\",\n \"workspace-approver\",\n \"release-owner\",\n \"release-approver\",\n \"change-owner\",\n \"issue-owner\",\n \"issue-assignee\",\n \"page-owner\",\n \"author\",\n \"contributor\",\n \"reviewer\",\n \"operator\",\n \"deployment-approver\",\n \"merge-approver\",\n \"watcher\"\n])\n\n/** Decoded collaboration role. */\nexport type Role = typeof Role.Type\n\n/** Exact domain scope to which a role assignment applies. */\nexport const RoleScope = Schema.TaggedUnion({\n entity: {\n entityId: EntityId,\n workspaceId: WorkspaceId\n },\n environment: {\n environmentId: EnvironmentId,\n releaseId: ReleaseId,\n workspaceId: WorkspaceId\n },\n release: {\n releaseId: ReleaseId,\n workspaceId: WorkspaceId\n },\n workspace: {\n workspaceId: WorkspaceId\n }\n})\n\n/** Decoded role-assignment scope. */\nexport type RoleScope = typeof RoleScope.Type\n\nconst ActiveAssignmentLifecycle = Schema.TaggedStruct(\"active\", {\n assignedAt: UtcTimestamp\n})\n\nconst EndedAssignmentLifecycle = Schema.TaggedStruct(\"ended\", {\n assignedAt: UtcTimestamp,\n endedAt: UtcTimestamp\n}).check(\n Schema.makeFilter(\n ({ assignedAt, endedAt }) => DateTime.Order(assignedAt, endedAt) <= 0,\n { expected: \"assignment end time to be at or after assignment time\" }\n )\n)\n\nconst RevokedAssignmentLifecycle = Schema.TaggedStruct(\"revoked\", {\n assignedAt: UtcTimestamp,\n revokedAt: UtcTimestamp\n}).check(\n Schema.makeFilter(\n ({ assignedAt, revokedAt }) => DateTime.Order(assignedAt, revokedAt) <= 0,\n { expected: \"assignment revocation time to be at or after assignment time\" }\n )\n)\n\n/** Lifecycle and chronological bounds of a role assignment. */\nexport const AssignmentLifecycle = Schema.Union([\n ActiveAssignmentLifecycle,\n EndedAssignmentLifecycle,\n RevokedAssignmentLifecycle\n]).pipe(Schema.toTaggedUnion(\"_tag\"))\n\n/** Decoded assignment lifecycle. */\nexport type AssignmentLifecycle = typeof AssignmentLifecycle.Type\n\n/** Persisted binding of a human or agent role to one exact domain scope. */\nexport const RoleAssignment = Schema.Struct({\n actor: Actor,\n assignmentId: RoleAssignmentId,\n lifecycle: AssignmentLifecycle,\n role: Role,\n scope: RoleScope\n})\n\n/** Decoded role assignment. */\nexport type RoleAssignment = typeof RoleAssignment.Type\n","import { Schema } from \"effect\"\nimport type { ReleaseId } from \"./identifiers.js\"\n\n/** Canonical persisted algorithm label for the current Release Relay projection. */\nexport const RELEASE_RELAY_ALGORITHM = \"relay/v1\"\n\n/** Explicit v1 alias retained beside the versioned catalog constants. */\nexport const RELEASE_RELAY_V1_ALGORITHM = RELEASE_RELAY_ALGORITHM\n\ntype RelayCatalog = readonly [\n string,\n string,\n string,\n string,\n string,\n string,\n string,\n string,\n string,\n string,\n string,\n string,\n string,\n string,\n string,\n string\n]\n\nconst freezeCatalog = <const Catalog extends RelayCatalog>(catalog: Catalog): Readonly<Catalog> =>\n Object.freeze(catalog)\n\n/** Frozen adjective catalog whose order is part of the relay/v1 contract. */\nexport const RELEASE_RELAY_V1_ADJECTIVES = freezeCatalog([\n \"Amber\",\n \"Azure\",\n \"Copper\",\n \"Ember\",\n \"Golden\",\n \"Lunar\",\n \"Moss\",\n \"Nova\",\n \"Quiet\",\n \"Silver\",\n \"Solar\",\n \"Tidal\",\n \"Velvet\",\n \"Verdant\",\n \"Wild\",\n \"Winter\"\n])\n\n/** Frozen noun catalog whose order is part of the relay/v1 contract. */\nexport const RELEASE_RELAY_V1_NOUNS = freezeCatalog([\n \"Anchor\",\n \"Beacon\",\n \"Bridge\",\n \"Comet\",\n \"Finch\",\n \"Fork\",\n \"Gate\",\n \"Grove\",\n \"Harbor\",\n \"Orbit\",\n \"Pulse\",\n \"Reef\",\n \"Relay\",\n \"Spark\",\n \"Wave\",\n \"Willow\"\n])\n\n/** Schema for the relay/v1 algorithm discriminator. */\nexport const ReleaseRelayAlgorithm = Schema.Literal(RELEASE_RELAY_ALGORITHM)\n\n/** Persisted relay/v1 adjective. */\nexport const ReleaseRelayAdjective = Schema.Literals(RELEASE_RELAY_V1_ADJECTIVES)\n\n/** Persisted relay/v1 noun. */\nexport const ReleaseRelayNoun = Schema.Literals(RELEASE_RELAY_V1_NOUNS)\n\n/** Persisted relay/v1 codename assembled from the frozen catalogs. */\nexport const ReleaseRelayCodename = Schema.TemplateLiteral([ReleaseRelayAdjective, \" \", ReleaseRelayNoun])\n\n/** Closed index into rly's separately versioned 16-symbol presentation catalog. */\nexport const ReleaseRelaySymbolIndex = Schema.Literals([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])\n\n/** Decoded relay/v1 symbol index. */\nexport type ReleaseRelaySymbolIndex = typeof ReleaseRelaySymbolIndex.Type\n\n/** Exactly three distinct persisted indices into the release-symbol catalog. */\nexport const ReleaseRelaySymbolIndices = Schema.Tuple([\n ReleaseRelaySymbolIndex,\n ReleaseRelaySymbolIndex,\n ReleaseRelaySymbolIndex\n]).check(Schema.isUnique({ expected: \"three distinct release symbol indices\" }))\n\n/** Decoded three-symbol relay projection. */\nexport type ReleaseRelaySymbolIndices = typeof ReleaseRelaySymbolIndices.Type\n\n/** Versioned, persisted Release Relay identity owned by the Control Center domain. */\nexport const ReleaseRelayProjection = Schema.Struct({\n algorithm: ReleaseRelayAlgorithm,\n codename: ReleaseRelayCodename,\n symbolIndices: ReleaseRelaySymbolIndices\n})\n\n/** Decoded versioned Release Relay projection. */\nexport type ReleaseRelayProjection = typeof ReleaseRelayProjection.Type\n\nconst FNV_1A_OFFSET_BASIS = 0x81_1c_9d_c5\nconst FNV_1A_PRIME = 0x01_00_01_93\n\nconst fnv1a32 = (asciiValue: string): number => {\n let hash = FNV_1A_OFFSET_BASIS\n for (let index = 0; index < asciiValue.length; index += 1) {\n hash ^= asciiValue.charCodeAt(index)\n hash = Math.imul(hash, FNV_1A_PRIME) >>> 0\n }\n return hash\n}\n\nconst symbolIndexFromRemainder = (remainder: number): ReleaseRelaySymbolIndex => {\n switch (remainder) {\n case 0:\n return 0\n case 1:\n return 1\n case 2:\n return 2\n case 3:\n return 3\n case 4:\n return 4\n case 5:\n return 5\n case 6:\n return 6\n case 7:\n return 7\n case 8:\n return 8\n case 9:\n return 9\n case 10:\n return 10\n case 11:\n return 11\n case 12:\n return 12\n case 13:\n return 13\n case 14:\n return 14\n default:\n return 15\n }\n}\n\nconst catalogValueAt = <const Catalog extends RelayCatalog>(\n catalog: Catalog,\n index: ReleaseRelaySymbolIndex\n): Catalog[number] => {\n switch (index) {\n case 0:\n return catalog[0]\n case 1:\n return catalog[1]\n case 2:\n return catalog[2]\n case 3:\n return catalog[3]\n case 4:\n return catalog[4]\n case 5:\n return catalog[5]\n case 6:\n return catalog[6]\n case 7:\n return catalog[7]\n case 8:\n return catalog[8]\n case 9:\n return catalog[9]\n case 10:\n return catalog[10]\n case 11:\n return catalog[11]\n case 12:\n return catalog[12]\n case 13:\n return catalog[13]\n case 14:\n return catalog[14]\n default:\n return catalog[15]\n }\n}\n\nconst deriveSymbolIndices = (releaseId: ReleaseId): ReleaseRelaySymbolIndices => {\n const firstIndex = symbolIndexFromRemainder(fnv1a32(`${RELEASE_RELAY_ALGORITHM}|symbol/0|${releaseId}`) % 16)\n\n const secondRank = fnv1a32(`${RELEASE_RELAY_ALGORITHM}|symbol/1|${releaseId}`) % 15\n const secondIndex = symbolIndexFromRemainder(secondRank < firstIndex ? secondRank : secondRank + 1)\n\n const lowerExcludedIndex = Math.min(firstIndex, secondIndex)\n const upperExcludedIndex = Math.max(firstIndex, secondIndex)\n const thirdRank = fnv1a32(`${RELEASE_RELAY_ALGORITHM}|symbol/2|${releaseId}`) % 14\n const thirdIndex = symbolIndexFromRemainder(\n thirdRank < lowerExcludedIndex ? thirdRank : thirdRank < upperExcludedIndex - 1 ? thirdRank + 1 : thirdRank + 2\n )\n\n return [firstIndex, secondIndex, thirdIndex]\n}\n\n/**\n * Derive the stable relay/v1 projection for one canonical immutable release identifier.\n *\n * relay/v1 applies unsigned 32-bit FNV-1a to the ASCII domains\n * `relay/v1|adjective|<release-id>`, `relay/v1|noun|<release-id>`, and\n * `relay/v1|symbol/<position>|<release-id>`. Symbol hashes select ranks from the\n * remaining 16, 15, then 14 indices, making distinctness constructive.\n */\nexport const deriveReleaseRelay = (releaseId: ReleaseId): ReleaseRelayProjection => {\n const adjectiveIndex = symbolIndexFromRemainder(fnv1a32(`${RELEASE_RELAY_ALGORITHM}|adjective|${releaseId}`) % 16)\n const nounIndex = symbolIndexFromRemainder(fnv1a32(`${RELEASE_RELAY_ALGORITHM}|noun|${releaseId}`) % 16)\n const adjective = catalogValueAt(RELEASE_RELAY_V1_ADJECTIVES, adjectiveIndex)\n const noun = catalogValueAt(RELEASE_RELAY_V1_NOUNS, nounIndex)\n\n return {\n algorithm: RELEASE_RELAY_ALGORITHM,\n codename: `${adjective} ${noun}`,\n symbolIndices: deriveSymbolIndices(releaseId)\n }\n}\n","import * as DateTime from \"effect/DateTime\"\nimport * as Schema from \"effect/Schema\"\nimport { RoleAssignment } from \"./actors.js\"\nimport { Freshness } from \"./freshness.js\"\nimport { EnvironmentId, ReleaseId, WorkspaceId } from \"./identifiers.js\"\nimport { deriveReleaseRelay, ReleaseRelayProjection } from \"./releaseRelay.js\"\nimport { SourceRevision } from \"./sourceRevision.js\"\nimport { UtcTimestamp } from \"./utcTimestamp.js\"\n\n/** Human-readable service name retained independently of provider identity. */\nexport const ReleaseServiceName = Schema.String.check(\n Schema.isTrimmed(),\n Schema.isNonEmpty(),\n Schema.isMaxLength(200)\n).pipe(Schema.brand(\"ReleaseServiceName\"))\n\n/** Decoded release service name. */\nexport type ReleaseServiceName = typeof ReleaseServiceName.Type\n\n/** Provider-neutral release version or immutable release label. */\nexport const ReleaseVersion = Schema.String.check(\n Schema.isTrimmed(),\n Schema.isNonEmpty(),\n Schema.isMaxLength(100)\n).pipe(Schema.brand(\"ReleaseVersion\"))\n\n/** Decoded release version. */\nexport type ReleaseVersion = typeof ReleaseVersion.Type\n\n/** Lifecycle of the release aggregate, separate from readiness and pipeline state. */\nexport const ReleaseLifecycle = Schema.Literals([\n \"assembling\",\n \"candidate\",\n \"deploying\",\n \"released\",\n \"cancelled\"\n])\n\n/** Decoded release lifecycle. */\nexport type ReleaseLifecycle = typeof ReleaseLifecycle.Type\n\nconst ReleaseRecord = Schema.Struct({\n createdAt: UtcTimestamp,\n freshness: Freshness,\n id: ReleaseId,\n lifecycle: ReleaseLifecycle,\n relay: ReleaseRelayProjection,\n roleAssignments: Schema.Array(RoleAssignment),\n serviceName: ReleaseServiceName,\n sourceRevisions: Schema.Array(SourceRevision),\n targetEnvironmentIds: Schema.Array(EnvironmentId).check(\n Schema.isUnique({ expected: \"unique target environment identifiers\" })\n ),\n updatedAt: UtcTimestamp,\n version: ReleaseVersion,\n workspaceId: WorkspaceId\n})\n\nconst encodeSourceRevision = Schema.encodeSync(SourceRevision)\nconst sourceRevisionEquivalence = Schema.toEquivalence(Schema.toEncoded(SourceRevision))\n\n/**\n * Foundational release aggregate. Readiness, evidence, stages, and delivery\n * relationships extend this record in their owning slices.\n */\nexport const Release = ReleaseRecord.check(\n Schema.makeFilter(\n ({ createdAt, updatedAt }) => DateTime.Order(createdAt, updatedAt) <= 0,\n { expected: \"release update time to be at or after creation time\" }\n ),\n Schema.makeFilter(\n ({ roleAssignments, workspaceId }) => roleAssignments.every(({ scope }) => scope.workspaceId === workspaceId),\n { expected: \"every role assignment to belong to the release workspace\" }\n ),\n Schema.makeFilter(\n ({ id, roleAssignments }) =>\n roleAssignments.every(({ scope }) =>\n scope._tag === \"release\" || scope._tag === \"environment\" ? scope.releaseId === id : true\n ),\n { expected: \"release-scoped assignments to name this release\" }\n ),\n Schema.makeFilter(\n ({ roleAssignments, targetEnvironmentIds }) => {\n const targets = new Set(targetEnvironmentIds)\n return roleAssignments.every(({ scope }) =>\n scope._tag === \"environment\" ? targets.has(scope.environmentId) : true\n )\n },\n { expected: \"environment-scoped assignments to name a release target\" }\n ),\n Schema.makeFilter(\n ({ roleAssignments }) => {\n const assignmentIds = roleAssignments.map(({ assignmentId }) => assignmentId)\n return new Set(assignmentIds).size === assignmentIds.length\n },\n { expected: \"unique role assignment identifiers\" }\n ),\n Schema.makeFilter(\n ({ sourceRevisions }) => {\n const sourceKeys = sourceRevisions.map(\n ({ pluginConnectionId, providerId, vendorImmutableId }) =>\n `${providerId}\\u0000${pluginConnectionId}\\u0000${vendorImmutableId}`\n )\n return new Set(sourceKeys).size === sourceKeys.length\n },\n { expected: \"one current source revision per provider object\" }\n ),\n Schema.makeFilter(\n ({ freshness, sourceRevisions }) => {\n if (freshness._tag !== \"current\" && freshness._tag !== \"stale\") return true\n const freshnessRevision = encodeSourceRevision(freshness.provenance.sourceRevision)\n return (\n sourceRevisions.filter((sourceRevision) =>\n sourceRevisionEquivalence(encodeSourceRevision(sourceRevision), freshnessRevision)\n ).length === 1\n )\n },\n { expected: \"current or stale freshness provenance to match one release source revision\" }\n ),\n Schema.makeFilter(\n ({ id, relay }) => {\n const expected = deriveReleaseRelay(id)\n return (\n relay.algorithm === expected.algorithm &&\n relay.codename === expected.codename &&\n relay.symbolIndices.every((symbolIndex, index) => symbolIndex === expected.symbolIndices[index])\n )\n },\n { expected: \"persisted relay projection to match the canonical release identifier\" }\n )\n).annotate({ identifier: \"Release\" })\n\n/** Decoded foundational release aggregate. */\nexport type Release = typeof Release.Type\n","import * as Result from \"effect/Result\"\nimport * as Schema from \"effect/Schema\"\n\nimport { SourceUrl } from \"./sourceRevision.js\"\n\nconst boundedText = (maximum: number, identifier: string) =>\n Schema.String.check(Schema.isMaxLength(maximum)).annotate({ identifier })\n\nconst boundedNonEmptyText = (maximum: number, identifier: string) =>\n boundedText(maximum, identifier).check(Schema.isTrimmed(), Schema.isNonEmpty())\n\nconst boundedArray = <T, E, RD, RE>(schema: Schema.Codec<T, E, RD, RE>, maximum: number) =>\n Schema.Array(schema).check(Schema.isMaxLength(maximum))\n\nexport const MAXIMUM_NORMALIZED_ISSUE_LABELS = 200\nexport const MAXIMUM_NORMALIZED_ISSUE_COMPONENTS = 100\n// One issue, its activity evidence, 200 people, and three events per fix version must fit one 500-event page.\nexport const MAXIMUM_NORMALIZED_ISSUE_FIX_VERSIONS = 99\nexport const MAXIMUM_NORMALIZED_ISSUE_SUBTASKS = 200\nexport const MAXIMUM_NORMALIZED_ISSUE_COLLABORATORS = 200\nexport const MAXIMUM_NORMALIZED_ISSUE_COMMENTS = 200\nexport const MAXIMUM_NORMALIZED_ISSUE_HISTORY = 200\nexport const MAXIMUM_NORMALIZED_ISSUE_HISTORY_CHANGES = 100\n\nconst SourceObjectId = boundedNonEmptyText(512, \"NormalizedIssueSourceObjectId\")\nconst SourcePersonId = boundedNonEmptyText(512, \"NormalizedIssueSourcePersonId\")\nconst ShortText = boundedText(255, \"NormalizedIssueShortText\")\nconst RichText = boundedText(16_000, \"NormalizedIssueRichText\")\nconst TimestampText = boundedNonEmptyText(100, \"NormalizedIssueTimestamp\")\nconst AvatarUrl = boundedNonEmptyText(2_048, \"NormalizedIssueAvatarUrl\").check(\n Schema.makeFilter((value) => Result.isSuccess(Schema.decodeUnknownResult(SourceUrl)(value)), {\n expected: \"an HTTP(S) source URL without embedded credentials\"\n })\n)\n\n/** Provider-neutral named source object retained with a bounded source identity. */\nexport const NormalizedIssueNamedValue = Schema.Struct({\n sourceId: Schema.NullOr(SourceObjectId),\n name: Schema.NullOr(ShortText)\n}).annotate({ identifier: \"NormalizedIssueNamedValue\" })\n\n/** Provider-neutral project identity and presentation retained from an issue source. */\nexport const NormalizedIssueProject = Schema.Struct({\n sourceId: Schema.NullOr(SourceObjectId),\n key: Schema.NullOr(boundedNonEmptyText(100, \"NormalizedIssueProjectKey\")),\n name: Schema.NullOr(ShortText)\n}).annotate({ identifier: \"NormalizedIssueProject\" })\n\n/** Provider-neutral release/version reference retained from an issue source. */\nexport const NormalizedIssueFixVersion = Schema.Struct({\n sourceId: Schema.NullOr(SourceObjectId),\n name: Schema.NullOr(ShortText),\n released: Schema.Boolean,\n releaseDate: Schema.NullOr(TimestampText)\n}).annotate({ identifier: \"NormalizedIssueFixVersion\" })\n\n/** Provider-neutral parent or subtask reference retained from an issue source. */\nexport const NormalizedRelatedIssue = Schema.Struct({\n sourceId: Schema.NullOr(SourceObjectId),\n key: Schema.NullOr(boundedNonEmptyText(100, \"NormalizedRelatedIssueKey\")),\n summary: Schema.NullOr(boundedText(500, \"NormalizedRelatedIssueSummary\")),\n status: Schema.NullOr(NormalizedIssueNamedValue)\n}).annotate({ identifier: \"NormalizedRelatedIssue\" })\n\n/** Bounded source collaborator used for attribution without provider response types. */\nexport const NormalizedIssueCollaborator = Schema.Struct({\n sourcePersonId: SourcePersonId,\n displayName: boundedNonEmptyText(200, \"NormalizedIssueCollaboratorDisplayName\"),\n avatarUrl: Schema.NullOr(AvatarUrl),\n active: Schema.Boolean,\n roles: boundedArray(boundedNonEmptyText(100, \"NormalizedIssueCollaboratorRole\"), 16).check(Schema.isUnique())\n}).annotate({ identifier: \"NormalizedIssueCollaborator\" })\n\n/** Bounded provider-neutral issue comment. */\nexport const NormalizedIssueComment = Schema.Struct({\n sourceId: SourceObjectId,\n authorSourcePersonId: Schema.NullOr(SourcePersonId),\n updateAuthorSourcePersonId: Schema.NullOr(SourcePersonId),\n body: Schema.NullOr(RichText),\n createdAt: Schema.NullOr(TimestampText),\n updatedAt: Schema.NullOr(TimestampText)\n}).annotate({ identifier: \"NormalizedIssueComment\" })\n\n/** One bounded provider-neutral field transition. */\nexport const NormalizedIssueHistoryChange = Schema.Struct({\n field: boundedNonEmptyText(255, \"NormalizedIssueHistoryField\"),\n from: Schema.NullOr(boundedText(1_000, \"NormalizedIssueHistoryValue\")),\n to: Schema.NullOr(boundedText(1_000, \"NormalizedIssueHistoryValue\"))\n}).annotate({ identifier: \"NormalizedIssueHistoryChange\" })\n\n/** Bounded provider-neutral issue history entry. */\nexport const NormalizedIssueHistoryEntry = Schema.Struct({\n sourceId: SourceObjectId,\n authorSourcePersonId: Schema.NullOr(SourcePersonId),\n createdAt: Schema.NullOr(TimestampText),\n changes: boundedArray(NormalizedIssueHistoryChange, MAXIMUM_NORMALIZED_ISSUE_HISTORY_CHANGES)\n}).annotate({ identifier: \"NormalizedIssueHistoryEntry\" })\n\n/** Fields whose source material may be deliberately reduced to remain within synchronization bounds. */\nexport const NormalizedIssueTruncatedField = Schema.Literals([\n \"acceptanceCriteria\",\n \"collaborators\",\n \"comments\",\n \"components\",\n \"description\",\n \"environment\",\n \"fixVersions\",\n \"history\",\n \"issueType\",\n \"key\",\n \"labels\",\n \"parent\",\n \"priority\",\n \"project\",\n \"resolution\",\n \"summary\",\n \"status\",\n \"subtasks\",\n \"updatedAt\",\n \"createdAt\",\n \"dueDate\",\n \"resolvedAt\"\n])\n\n/**\n * Shared provider-neutral issue detail accepted from normalized plugins.\n *\n * The original compact key/status/priority/estimate fields remain required.\n * Rich fields are optional so older normalized plugins and persisted projections\n * remain valid; first-party Jira synchronization always supplies every rich field.\n */\nexport const NormalizedIssueAttributes = Schema.Struct({\n key: boundedNonEmptyText(100, \"NormalizedIssueKey\"),\n status: boundedNonEmptyText(100, \"NormalizedIssueStatus\"),\n priority: Schema.NullOr(boundedNonEmptyText(100, \"NormalizedIssuePriority\")),\n estimatePoints: Schema.NullOr(Schema.Number.check(Schema.isGreaterThanOrEqualTo(0))),\n summary: Schema.optionalKey(boundedText(500, \"NormalizedIssueSummary\")),\n description: Schema.optionalKey(Schema.NullOr(RichText)),\n acceptanceCriteria: Schema.optionalKey(Schema.NullOr(RichText)),\n environment: Schema.optionalKey(Schema.NullOr(RichText)),\n issueType: Schema.optionalKey(Schema.NullOr(NormalizedIssueNamedValue)),\n project: Schema.optionalKey(Schema.NullOr(NormalizedIssueProject)),\n resolution: Schema.optionalKey(Schema.NullOr(NormalizedIssueNamedValue)),\n labels: Schema.optionalKey(\n boundedArray(boundedNonEmptyText(255, \"NormalizedIssueLabel\"), MAXIMUM_NORMALIZED_ISSUE_LABELS)\n ),\n components: Schema.optionalKey(boundedArray(NormalizedIssueNamedValue, MAXIMUM_NORMALIZED_ISSUE_COMPONENTS)),\n fixVersions: Schema.optionalKey(boundedArray(NormalizedIssueFixVersion, MAXIMUM_NORMALIZED_ISSUE_FIX_VERSIONS)),\n createdAt: Schema.optionalKey(Schema.NullOr(TimestampText)),\n updatedAt: Schema.optionalKey(Schema.NullOr(TimestampText)),\n dueDate: Schema.optionalKey(Schema.NullOr(TimestampText)),\n resolvedAt: Schema.optionalKey(Schema.NullOr(TimestampText)),\n parent: Schema.optionalKey(Schema.NullOr(NormalizedRelatedIssue)),\n subtasks: Schema.optionalKey(boundedArray(NormalizedRelatedIssue, MAXIMUM_NORMALIZED_ISSUE_SUBTASKS)),\n assigneeSourcePersonId: Schema.optionalKey(Schema.NullOr(SourcePersonId)),\n reporterSourcePersonId: Schema.optionalKey(Schema.NullOr(SourcePersonId)),\n creatorSourcePersonId: Schema.optionalKey(Schema.NullOr(SourcePersonId)),\n collaborators: Schema.optionalKey(boundedArray(NormalizedIssueCollaborator, MAXIMUM_NORMALIZED_ISSUE_COLLABORATORS)),\n comments: Schema.optionalKey(boundedArray(NormalizedIssueComment, MAXIMUM_NORMALIZED_ISSUE_COMMENTS)),\n commentTotal: Schema.optionalKey(Schema.Int.check(Schema.isGreaterThanOrEqualTo(0))),\n commentsTruncated: Schema.optionalKey(Schema.Boolean),\n commentBodiesTruncated: Schema.optionalKey(Schema.Boolean),\n history: Schema.optionalKey(boundedArray(NormalizedIssueHistoryEntry, MAXIMUM_NORMALIZED_ISSUE_HISTORY)),\n historyTotal: Schema.optionalKey(Schema.Int.check(Schema.isGreaterThanOrEqualTo(0))),\n historyTruncated: Schema.optionalKey(Schema.Boolean),\n truncatedFields: Schema.optionalKey(boundedArray(NormalizedIssueTruncatedField, 32).check(Schema.isUnique()))\n}).annotate({ identifier: \"NormalizedIssueAttributes\" })\n\n/** Decoded provider-neutral normalized issue detail. */\nexport type NormalizedIssueAttributes = typeof NormalizedIssueAttributes.Type\n","import * as Schema from \"effect/Schema\"\n\nimport { UtcTimestamp } from \"./utcTimestamp.js\"\n\nconst boundedText = (maximum: number, identifier: string) =>\n Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(maximum)).annotate({ identifier })\n\n/** Safely converted document content. Raw provider markup and media are never retained here. */\nexport const NormalizedPageContent = Schema.Struct({\n representation: Schema.Literal(\"safe-markdown\"),\n markdown: Schema.String.check(Schema.isMaxLength(262_144))\n})\n\n/** One immutable revision in the bounded page history. */\nexport const NormalizedPageVersion = Schema.Struct({\n number: Schema.Int.check(Schema.isGreaterThan(0)),\n createdAt: UtcTimestamp,\n message: Schema.NullOr(Schema.String.check(Schema.isMaxLength(2_000))),\n minorEdit: Schema.Boolean,\n authorSourcePersonId: Schema.NullOr(boundedText(512, \"PageVersionAuthorSourcePersonId\"))\n})\n\n/** One provider identity associated with a page and its document role. */\nexport const NormalizedPageContributor = Schema.Struct({\n sourcePersonId: boundedText(512, \"PageContributorSourcePersonId\"),\n displayName: boundedText(200, \"PageContributorDisplayName\"),\n active: Schema.Boolean,\n external: Schema.Boolean,\n resolved: Schema.Boolean,\n roles: Schema.Array(Schema.Literals([\"owner\", \"author\", \"contributor\", \"watcher\"])).check(\n Schema.isNonEmpty(),\n Schema.isUnique()\n )\n})\n\n/** Attachment metadata only. Bytes remain behind the authenticated provider boundary. */\nexport const NormalizedPageAttachment = Schema.Struct({\n id: boundedText(512, \"PageAttachmentId\"),\n title: boundedText(500, \"PageAttachmentTitle\"),\n createdAt: UtcTimestamp,\n mediaType: Schema.NullOr(Schema.String.check(Schema.isTrimmed(), Schema.isMaxLength(255))),\n fileSize: Schema.NullOr(Schema.Int.check(Schema.isGreaterThanOrEqualTo(0))),\n version: Schema.NullOr(Schema.Int.check(Schema.isGreaterThan(0)))\n})\n\nconst BoundedInventory = Schema.Struct({\n complete: Schema.Boolean,\n pagesFetched: Schema.Int.check(Schema.isBetween({ minimum: 0, maximum: 5 }))\n})\n\n/** Optional rich document fields added to the provider-neutral page projection. */\nexport const NormalizedPageAttributes = Schema.Struct({\n sourceSpaceId: Schema.optionalKey(boundedText(512, \"PageSourceSpaceId\")),\n parentSourceId: Schema.optionalKey(Schema.NullOr(boundedText(512, \"PageParentSourceId\"))),\n createdAt: Schema.optionalKey(UtcTimestamp),\n updatedAt: Schema.optionalKey(UtcTimestamp),\n content: Schema.optionalKey(Schema.NullOr(NormalizedPageContent)),\n contentState: Schema.optionalKey(Schema.Literals([\"loaded\", \"lazy\"])),\n versions: Schema.optionalKey(Schema.Array(NormalizedPageVersion).check(Schema.isMaxLength(500))),\n versionHistory: Schema.optionalKey(BoundedInventory),\n contributors: Schema.optionalKey(Schema.Array(NormalizedPageContributor).check(Schema.isMaxLength(502))),\n attachments: Schema.optionalKey(Schema.Array(NormalizedPageAttachment).check(Schema.isMaxLength(50))),\n attachmentInventory: Schema.optionalKey(BoundedInventory),\n watcherInventory: Schema.optionalKey(BoundedInventory)\n})\n\n/** Decoded provider-neutral rich page fields. */\nexport type NormalizedPageAttributes = typeof NormalizedPageAttributes.Type\n","import * as DateTime from \"effect/DateTime\"\nimport * as Schema from \"effect/Schema\"\n\nimport { Freshness } from \"./freshness.js\"\nimport {\n AgentId,\n EntityId,\n EnvironmentId,\n EvidenceClaimId,\n EvidenceId,\n GraphNodeId,\n PersonId,\n PluginConnectionId,\n RelationshipId,\n ReleaseId,\n WorkspaceId\n} from \"./identifiers.js\"\nimport { NormalizedIssueAttributes } from \"./normalizedIssue.js\"\nimport { NormalizedPageAttributes } from \"./normalizedPage.js\"\nimport { UtcTimestamp } from \"./utcTimestamp.js\"\n\nconst boundedText = (maximum: number, identifier: string) =>\n Schema.String.check(\n Schema.isTrimmed(),\n Schema.isNonEmpty(),\n Schema.isMaxLength(maximum)\n ).annotate({ identifier })\n\n/** Provider-neutral kind of an object participating in delivery. */\nexport const DeliveryEntityKind = Schema.Literals([\n \"issue\",\n \"pull-request\",\n \"page\",\n \"pipeline-execution\",\n \"deployment\",\n \"time-entry\"\n])\n\n/** Decoded normalized entity kind. */\nexport type DeliveryEntityKind = typeof DeliveryEntityKind.Type\n\n/** Connected service responsible for a normalized delivery entity. */\nexport const DeliveryEntityService = Schema.Literals([\n \"jira\",\n \"codecommit\",\n \"confluence\",\n \"codepipeline\",\n \"clockify\"\n])\n\n/** Decoded connected delivery service. */\nexport type DeliveryEntityService = typeof DeliveryEntityService.Type\n\n/** Coarse cross-provider lifecycle used by workspace item search. */\nexport const DeliveryEntityStatusGroup = Schema.Literals([\"active\", \"done\", \"failed\"])\n\n/** Decoded cross-provider lifecycle group. */\nexport type DeliveryEntityStatusGroup = typeof DeliveryEntityStatusGroup.Type\n\n/** Canonical semantic kind recorded for either endpoint of a relationship. */\nexport const RelationshipEndpointKind = Schema.Union([\n DeliveryEntityKind,\n Schema.Literals([\"release\", \"environment\"])\n])\n\n/** Decoded semantic relationship endpoint kind. */\nexport type RelationshipEndpointKind = typeof RelationshipEndpointKind.Type\n\n/** Positive immutable revision of a normalized entity or relationship. */\nexport const LedgerRevision = Schema.Int.check(Schema.isGreaterThan(0)).pipe(\n Schema.brand(\"LedgerRevision\")\n)\n\n/** Decoded ledger revision. */\nexport type LedgerRevision = typeof LedgerRevision.Type\n\nconst IssueDetails = Schema.TaggedStruct(\"issue\", {\n ...NormalizedIssueAttributes.fields\n})\n\nconst PullRequestDetails = Schema.TaggedStruct(\"pull-request\", {\n repository: boundedText(200, \"RepositoryName\"),\n sourceBranch: boundedText(500, \"SourceBranch\"),\n targetBranch: boundedText(500, \"TargetBranch\"),\n headRevision: boundedText(512, \"HeadRevision\"),\n reviewState: Schema.Literals([\"not-requested\", \"requested\", \"changes-requested\", \"approved\", \"merged\"]),\n lifecycle: Schema.optionalKey(Schema.NullOr(Schema.Literals([\"open\", \"closed\", \"merged\"]))),\n description: Schema.optionalKey(Schema.NullOr(Schema.String.check(Schema.isMaxLength(50_000)))),\n authorReference: Schema.optionalKey(Schema.NullOr(boundedText(512, \"PullRequestAuthorReference\"))),\n baseRevision: Schema.optionalKey(Schema.NullOr(boundedText(512, \"BaseRevision\"))),\n mergeBaseRevision: Schema.optionalKey(Schema.NullOr(boundedText(512, \"MergeBaseRevision\"))),\n createdAt: Schema.optionalKey(Schema.NullOr(boundedText(64, \"PullRequestCreatedAt\"))),\n updatedAt: Schema.optionalKey(Schema.NullOr(boundedText(64, \"PullRequestUpdatedAt\")))\n})\n\nconst PageDetails = Schema.TaggedStruct(\"page\", {\n ...NormalizedPageAttributes.fields,\n spaceKey: boundedText(100, \"SpaceKey\"),\n revision: boundedText(512, \"PageRevision\"),\n status: Schema.Literals([\"draft\", \"current\", \"superseded\"]),\n linkedIssueKeys: Schema.optional(\n Schema.Array(boundedText(100, \"LinkedIssueKey\")).check(Schema.isUnique(), Schema.isMaxLength(100))\n ),\n linkedReleaseVersions: Schema.optional(\n Schema.Array(boundedText(100, \"LinkedReleaseVersion\")).check(Schema.isUnique(), Schema.isMaxLength(100))\n )\n})\n\nconst PipelineExecutionStatus = Schema.Literals([\"queued\", \"running\", \"succeeded\", \"failed\", \"stopped\"])\n\nconst PipelineSourceRevision = Schema.Struct({\n actionName: boundedText(200, \"PipelineSourceActionName\"),\n revisionId: Schema.NullOr(boundedText(512, \"PipelineSourceRevisionId\")),\n revisionSummary: Schema.NullOr(boundedText(500, \"PipelineSourceRevisionSummary\"))\n})\n\nconst PipelineStage = Schema.Struct({\n name: boundedText(200, \"PipelineStageName\"),\n status: PipelineExecutionStatus,\n actionCount: Schema.Int.check(Schema.isGreaterThanOrEqualTo(0)),\n actionsTruncated: Schema.Boolean\n})\n\nconst PipelineActionArtifact = Schema.Struct({\n name: boundedText(200, \"PipelineActionArtifactName\"),\n direction: Schema.Literals([\"input\", \"output\"]),\n access: Schema.Literal(\"proxy-required\")\n})\n\nconst PipelineAction = Schema.Struct({\n actionExecutionId: boundedText(512, \"PipelineActionExecutionId\"),\n stageName: boundedText(200, \"PipelineActionStageName\"),\n actionName: boundedText(200, \"PipelineActionName\"),\n status: PipelineExecutionStatus,\n startedAt: Schema.NullOr(UtcTimestamp),\n updatedAt: Schema.NullOr(UtcTimestamp),\n updatedBy: Schema.NullOr(boundedText(512, \"PipelineActionActor\")),\n category: Schema.NullOr(boundedText(100, \"PipelineActionCategory\")),\n provider: Schema.NullOr(boundedText(100, \"PipelineActionProvider\")),\n owner: Schema.NullOr(boundedText(100, \"PipelineActionOwner\")),\n version: Schema.NullOr(boundedText(100, \"PipelineActionVersion\")),\n region: Schema.NullOr(boundedText(100, \"PipelineActionRegion\")),\n externalExecutionSummary: Schema.NullOr(boundedText(500, \"PipelineExternalExecutionSummary\")),\n errorCode: Schema.NullOr(boundedText(200, \"PipelineActionErrorCode\")),\n errorMessage: Schema.NullOr(boundedText(500, \"PipelineActionErrorMessage\")),\n artifacts: Schema.Array(PipelineActionArtifact).check(Schema.isMaxLength(100))\n})\n\nconst PipelineSourceArtifact = Schema.Struct({\n name: boundedText(200, \"PipelineSourceArtifactName\"),\n revisionId: Schema.NullOr(boundedText(512, \"PipelineSourceArtifactRevisionId\")),\n revisionSummary: Schema.NullOr(boundedText(500, \"PipelineSourceArtifactRevisionSummary\")),\n createdAt: Schema.NullOr(UtcTimestamp),\n access: Schema.Literal(\"proxy-required\")\n})\n\nconst PipelineDetails = Schema.TaggedStruct(\"pipeline-execution\", {\n pipelineName: boundedText(200, \"PipelineName\"),\n executionId: boundedText(512, \"PipelineExecutionId\"),\n status: PipelineExecutionStatus,\n triggerRevision: boundedText(512, \"PipelineTriggerRevision\"),\n pipelineVersion: Schema.optionalKey(Schema.NullOr(Schema.Int.check(Schema.isGreaterThan(0)))),\n statusSummary: Schema.optionalKey(Schema.NullOr(boundedText(500, \"PipelineStatusSummary\"))),\n startedAt: Schema.optionalKey(Schema.NullOr(UtcTimestamp)),\n updatedAt: Schema.optionalKey(Schema.NullOr(UtcTimestamp)),\n triggerType: Schema.optionalKey(Schema.NullOr(boundedText(100, \"PipelineTriggerType\"))),\n triggerDetail: Schema.optionalKey(Schema.NullOr(boundedText(500, \"PipelineTriggerDetail\"))),\n executionMode: Schema.optionalKey(Schema.NullOr(boundedText(100, \"PipelineExecutionMode\"))),\n executionType: Schema.optionalKey(Schema.NullOr(boundedText(100, \"PipelineExecutionType\"))),\n rollbackTargetExecutionId: Schema.optionalKey(\n Schema.NullOr(boundedText(512, \"PipelineRollbackTargetExecutionId\"))\n ),\n sourceRevisions: Schema.optionalKey(\n Schema.Array(PipelineSourceRevision).check(\n Schema.makeFilter(\n (revisions) => new Set(revisions.map((revision) => revision.actionName)).size === revisions.length,\n { expected: \"unique pipeline source action names\" }\n ),\n Schema.isMaxLength(100)\n )\n ),\n stages: Schema.optionalKey(\n Schema.Array(PipelineStage).check(\n Schema.makeFilter(\n (stages) => new Set(stages.map((stage) => stage.name)).size === stages.length,\n { expected: \"unique pipeline stage names\" }\n ),\n Schema.isMaxLength(100)\n )\n ),\n actions: Schema.optionalKey(\n Schema.Array(PipelineAction).check(\n Schema.makeFilter(\n (actions) => new Set(actions.map((action) => action.actionExecutionId)).size === actions.length,\n { expected: \"unique pipeline action execution identifiers\" }\n ),\n Schema.isMaxLength(200)\n )\n ),\n actionCount: Schema.optionalKey(Schema.Int.check(Schema.isGreaterThanOrEqualTo(0))),\n actionsTruncated: Schema.optionalKey(Schema.Boolean),\n actionPagesRead: Schema.optionalKey(Schema.Int.check(Schema.isBetween({ minimum: 0, maximum: 5 }))),\n sourceArtifacts: Schema.optionalKey(\n Schema.Array(PipelineSourceArtifact).check(Schema.isMaxLength(100))\n )\n})\n\nconst DeploymentDetails = Schema.TaggedStruct(\"deployment\", {\n environmentId: EnvironmentId,\n revision: boundedText(512, \"DeploymentRevision\"),\n status: Schema.Literals([\"pending\", \"deploying\", \"succeeded\", \"failed\", \"rolled-back\"])\n})\n\nconst TimeEntryDetails = Schema.TaggedStruct(\"time-entry\", {\n durationMinutes: Schema.Int.check(Schema.isGreaterThanOrEqualTo(0)),\n billable: Schema.Boolean,\n approvalState: Schema.Literals([\"pending\", \"approved\", \"rejected\", \"not-required\"]),\n locked: Schema.optionalKey(Schema.Boolean),\n description: Schema.optionalKey(Schema.NullOr(boundedText(4_000, \"ClockifyTimeEntryDescription\"))),\n projectId: Schema.optionalKey(Schema.NullOr(boundedText(512, \"ClockifyProjectId\"))),\n userId: Schema.optionalKey(boundedText(512, \"ClockifyUserId\")),\n startedAt: Schema.optionalKey(UtcTimestamp),\n endedAt: Schema.optionalKey(Schema.NullOr(UtcTimestamp))\n})\n\n/** Provider-neutral entity extension decoded before graph persistence. */\nexport const DeliveryEntityDetails = Schema.Union([\n IssueDetails,\n PullRequestDetails,\n PageDetails,\n PipelineDetails,\n DeploymentDetails,\n TimeEntryDetails\n]).pipe(Schema.toTaggedUnion(\"_tag\"))\n\n/** Decoded provider-neutral entity details. */\nexport type DeliveryEntityDetails = typeof DeliveryEntityDetails.Type\n\n/** Immutable normalized projection for one exact entity source revision. */\nexport const DeliveryEntityProjection = Schema.Struct({\n workspaceId: WorkspaceId,\n entityId: EntityId,\n projectionRevision: LedgerRevision,\n sourceEntityRevision: LedgerRevision,\n supersedesProjectionRevision: Schema.NullOr(LedgerRevision),\n projectionSchemaVersion: Schema.Int.check(Schema.isGreaterThan(0)),\n entityState: Schema.Literals([\"present\", \"deleted\"]),\n entityType: DeliveryEntityKind,\n displayKey: boundedText(200, \"EntityDisplayKey\"),\n title: boundedText(500, \"EntityTitle\"),\n details: DeliveryEntityDetails\n}).check(\n Schema.makeFilter(\n ({ details, entityType }) => details._tag === entityType,\n { expected: \"entity details whose tag matches the entity kind\" }\n ),\n Schema.makeFilter(\n ({ projectionRevision, supersedesProjectionRevision }) =>\n projectionRevision === 1\n ? supersedesProjectionRevision === null\n : supersedesProjectionRevision === projectionRevision - 1,\n { expected: \"entity projection to supersede its exact preceding revision\" }\n )\n)\n\n/** Decoded normalized entity projection. */\nexport type DeliveryEntityProjection = typeof DeliveryEntityProjection.Type\n\n/** Resolved graph target with an exact canonical object identity. */\nexport const ResolvedDeliveryNode = Schema.TaggedUnion({\n entity: { entityId: EntityId, entityKind: DeliveryEntityKind },\n environment: { environmentId: EnvironmentId, releaseId: ReleaseId },\n release: { releaseId: ReleaseId }\n})\n\n/** Resolved or intentionally missing node stored as trusted graph state. */\nexport const DeliveryNode = Schema.Struct({\n workspaceId: WorkspaceId,\n nodeId: GraphNodeId,\n endpointKind: RelationshipEndpointKind,\n resolution: Schema.TaggedUnion({\n resolved: { target: ResolvedDeliveryNode },\n missing: {\n expectedKind: Schema.Literals([\"entity\", \"release\", \"environment\"]),\n expectedEntityKind: Schema.NullOr(DeliveryEntityKind),\n missingKey: boundedText(512, \"MissingDeliveryNodeKey\")\n }\n }),\n createdAt: UtcTimestamp\n}).check(\n Schema.makeFilter(\n ({ resolution }) =>\n resolution._tag !== \"missing\" ||\n (resolution.expectedKind === \"entity\") === (resolution.expectedEntityKind !== null),\n { expected: \"only missing entity nodes to carry an expected entity kind\" }\n ),\n Schema.makeFilter(\n ({ endpointKind, resolution }) => {\n if (resolution._tag === \"missing\") {\n return resolution.expectedKind === \"entity\"\n ? endpointKind === resolution.expectedEntityKind\n : endpointKind === resolution.expectedKind\n }\n\n return resolution.target._tag === \"entity\"\n ? endpointKind === resolution.target.entityKind\n : endpointKind === resolution.target._tag\n },\n { expected: \"graph node endpoint kind to match its resolved or expected target kind\" }\n )\n)\n\n/** Decoded graph node. */\nexport type DeliveryNode = typeof DeliveryNode.Type\n\n/** Semantic relationship between delivery nodes. Direction is significant. */\nexport const RelationshipKind = Schema.Literals([\n \"contains\",\n \"implements\",\n \"depends-on\",\n \"verified-by\",\n \"delivered-by\",\n \"documented-by\",\n \"tracks-time-for\"\n])\n\n/** Decoded relationship kind. */\nexport type RelationshipKind = typeof RelationshipKind.Type\n\nconst ALL_RELATIONSHIP_ENDPOINT_KINDS: ReadonlyArray<RelationshipEndpointKind> = [\n \"issue\",\n \"pull-request\",\n \"page\",\n \"pipeline-execution\",\n \"deployment\",\n \"time-entry\",\n \"release\",\n \"environment\"\n]\n\nconst ALL_ENTITY_ENDPOINT_KINDS: ReadonlyArray<RelationshipEndpointKind> = [\n \"issue\",\n \"pull-request\",\n \"page\",\n \"pipeline-execution\",\n \"deployment\",\n \"time-entry\"\n]\n\ntype RelationshipEndpointRule = Readonly<{\n source: ReadonlyArray<RelationshipEndpointKind>\n target: ReadonlyArray<RelationshipEndpointKind>\n}>\n\n/**\n * Version-one canonical direction matrix. Passive relationship names read from\n * source to target: for example, a pull request is `delivered-by` a pipeline\n * execution. `depends-on` is intentionally the one generic graph edge.\n */\nexport const RELATIONSHIP_ENDPOINT_MATRIX_V1: Readonly<\n Record<RelationshipKind, RelationshipEndpointRule>\n> = {\n \"contains\": { source: [\"release\"], target: ALL_ENTITY_ENDPOINT_KINDS },\n \"implements\": { source: [\"pull-request\"], target: [\"issue\"] },\n \"depends-on\": {\n source: ALL_RELATIONSHIP_ENDPOINT_KINDS,\n target: ALL_RELATIONSHIP_ENDPOINT_KINDS\n },\n \"verified-by\": { source: [\"pull-request\"], target: [\"pipeline-execution\"] },\n \"delivered-by\": { source: [\"pull-request\"], target: [\"pipeline-execution\"] },\n \"documented-by\": { source: [\"issue\", \"release\"], target: [\"page\"] },\n \"tracks-time-for\": { source: [\"time-entry\"], target: [\"issue\"] }\n}\n\nconst relationshipEndpointIsAllowed = (\n kind: RelationshipKind,\n sourceNodeKind: RelationshipEndpointKind,\n targetNodeKind: RelationshipEndpointKind\n): boolean => {\n const rule: RelationshipEndpointRule = RELATIONSHIP_ENDPOINT_MATRIX_V1[kind]\n return rule.source.some((candidate) => candidate === sourceNodeKind) &&\n rule.target.some((candidate) => candidate === targetNodeKind)\n}\n\n/** Explainable confidence; inferred links can never masquerade as confirmed. */\nexport const RelationshipConfidence = Schema.TaggedUnion({\n unknown: { rationale: boundedText(1_000, \"UnknownRelationshipConfidenceRationale\") },\n confirmed: {},\n inferred: {\n score: Schema.Number.check(Schema.isBetween({ minimum: 0, maximum: 1 })),\n rationale: boundedText(1_000, \"RelationshipConfidenceRationale\")\n }\n})\n\n/** Decoded relationship confidence. */\nexport type RelationshipConfidence = typeof RelationshipConfidence.Type\n\n/** Attribution for creation of a relationship revision. */\nexport const RelationshipProvenance = Schema.TaggedUnion({\n plugin: {\n pluginConnectionId: PluginConnectionId,\n sourceEntityId: EntityId,\n sourceEntityRevision: LedgerRevision\n },\n human: { personId: PersonId, rationale: boundedText(1_000, \"HumanRelationshipRationale\") },\n agent: { agentId: AgentId, rationale: boundedText(1_000, \"AgentRelationshipRationale\") },\n rule: {\n ruleId: boundedText(200, \"RelationshipRuleId\"),\n ruleVersion: Schema.Int.check(Schema.isGreaterThan(0)),\n rationale: boundedText(1_000, \"RuleRelationshipRationale\")\n }\n})\n\n/** Decoded relationship provenance. */\nexport type RelationshipProvenance = typeof RelationshipProvenance.Type\n\n/** Lifecycle of one relationship revision. Prior revisions remain immutable. */\nexport const RelationshipLifecycle = Schema.TaggedUnion({\n missing: { effectiveAt: UtcTimestamp, reason: boundedText(1_000, \"MissingRelationshipReason\") },\n inferred: { effectiveAt: UtcTimestamp },\n proposed: { effectiveAt: UtcTimestamp },\n verified: { effectiveAt: UtcTimestamp },\n governed: { effectiveAt: UtcTimestamp },\n rejected: { effectiveAt: UtcTimestamp, reason: boundedText(1_000, \"RejectionReason\") },\n superseded: { effectiveAt: UtcTimestamp, reason: boundedText(1_000, \"SupersessionReason\") }\n})\n\n/** Decoded relationship lifecycle. */\nexport type RelationshipLifecycle = typeof RelationshipLifecycle.Type\n\n/** Exact release or environment slice in which a relationship is evaluated. */\nexport const RelationshipScope = Schema.NullOr(\n Schema.TaggedUnion({\n release: { releaseId: ReleaseId },\n environment: { releaseId: ReleaseId, environmentId: EnvironmentId }\n })\n)\n\n/** Human, agent, or system that appended an immutable ledger revision. */\nexport const LedgerActor = Schema.TaggedUnion({\n human: { personId: PersonId },\n agent: { agentId: AgentId },\n system: { component: boundedText(200, \"LedgerSystemComponent\") }\n})\n\n/** Immutable relationship ledger revision. */\nexport const DeliveryRelationship = Schema.Struct({\n workspaceId: WorkspaceId,\n relationshipId: RelationshipId,\n relationshipSchemaVersion: Schema.Literal(1),\n revision: LedgerRevision,\n supersedesRevision: Schema.NullOr(LedgerRevision),\n kind: RelationshipKind,\n sourceNodeId: GraphNodeId,\n sourceNodeKind: RelationshipEndpointKind,\n targetNodeId: GraphNodeId,\n targetNodeKind: RelationshipEndpointKind,\n scope: RelationshipScope,\n lifecycle: RelationshipLifecycle,\n confidence: RelationshipConfidence,\n provenance: RelationshipProvenance,\n recordedBy: LedgerActor,\n evidenceClaimIds: Schema.Array(EvidenceClaimId).check(Schema.isMaxLength(128)),\n recordedAt: UtcTimestamp\n}).check(\n Schema.makeFilter(\n ({ evidenceClaimIds }) => new Set(evidenceClaimIds).size === evidenceClaimIds.length,\n { expected: \"relationship evidence references to be unique\" }\n ),\n Schema.makeFilter(\n ({ confidence, evidenceClaimIds }) => confidence._tag !== \"confirmed\" || evidenceClaimIds.length > 0,\n { expected: \"confirmed relationship confidence to reference immutable evidence\" }\n ),\n Schema.makeFilter(\n ({ sourceNodeId, targetNodeId }) => sourceNodeId !== targetNodeId,\n { expected: \"relationship source and target to differ\" }\n ),\n Schema.makeFilter(\n ({ kind, sourceNodeKind, targetNodeKind }) => relationshipEndpointIsAllowed(kind, sourceNodeKind, targetNodeKind),\n { expected: \"relationship endpoints to follow the canonical version-one direction matrix\" }\n ),\n Schema.makeFilter(\n ({ kind, scope }) => kind !== \"contains\" || scope !== null,\n { expected: \"release containment to carry an explicit release or environment scope\" }\n ),\n Schema.makeFilter(\n ({ confidence, lifecycle }) => lifecycle._tag !== \"inferred\" || confidence._tag !== \"confirmed\",\n { expected: \"an inferred relationship lifecycle not to claim confirmed confidence\" }\n ),\n Schema.makeFilter(\n ({ revision, supersedesRevision }) =>\n revision === 1 ? supersedesRevision === null : supersedesRevision === revision - 1,\n { expected: \"relationship to supersede its exact preceding revision\" }\n )\n)\n\n/** Decoded relationship ledger revision. */\nexport type DeliveryRelationship = typeof DeliveryRelationship.Type\n\n/** Closed assertion vocabulary used by immutable evidence claims. */\nexport const EvidencePredicate = Schema.Literals([\n \"relationship-observed\",\n \"status-observed\",\n \"approval-recorded\",\n \"check-observed\",\n \"execution-observed\",\n \"deployment-observed\",\n \"documentation-observed\",\n \"time-observed\"\n])\n\n/** Decoded evidence predicate. */\nexport type EvidencePredicate = typeof EvidencePredicate.Type\n\n/** Bounded, provider-neutral evidence value. */\nexport const EvidenceValue = Schema.TaggedUnion({\n flag: { value: Schema.Boolean },\n state: { value: boundedText(500, \"EvidenceState\") },\n revision: { value: boundedText(512, \"EvidenceRevision\") },\n reference: { targetNodeId: GraphNodeId }\n})\n\n/** Decoded evidence value. */\nexport type EvidenceValue = typeof EvidenceValue.Type\n\n/** Exact actor or source revision responsible for an evidence claim. */\nexport const EvidenceAttribution = Schema.TaggedUnion({\n plugin: {\n pluginConnectionId: PluginConnectionId,\n sourceEntityId: EntityId,\n sourceEntityRevision: LedgerRevision\n },\n human: { personId: PersonId },\n agent: { agentId: AgentId },\n system: { component: boundedText(200, \"EvidenceSystemComponent\") }\n})\n\n/** Decoded evidence attribution. */\nexport type EvidenceAttribution = typeof EvidenceAttribution.Type\n\n/** Explicit retention policy attached when evidence is recorded. */\nexport const EvidenceRetention = Schema.Struct({\n classification: Schema.Literals([\"audit\", \"evidence\", \"normalized-cache\"]),\n retainUntil: Schema.NullOr(UtcTimestamp),\n legalHold: Schema.Boolean\n})\n\n/** Decoded evidence retention metadata. */\nexport type EvidenceRetention = typeof EvidenceRetention.Type\n\n/** Independent verification of an evidence observation. */\nexport const EvidenceVerifier = Schema.TaggedUnion({\n human: { personId: PersonId },\n agent: { agentId: AgentId },\n system: { component: boundedText(200, \"EvidenceVerifierComponent\") }\n})\n\n/** Immutable observation envelope with provenance, validity, and retention. */\nexport const EvidenceItem = Schema.Struct({\n workspaceId: WorkspaceId,\n evidenceId: EvidenceId,\n schemaVersion: Schema.Int.check(Schema.isGreaterThan(0)),\n attribution: EvidenceAttribution,\n verifier: EvidenceVerifier,\n observedAt: UtcTimestamp,\n recordedAt: UtcTimestamp,\n validUntil: Schema.NullOr(UtcTimestamp),\n freshness: Freshness,\n retention: EvidenceRetention\n}).check(\n Schema.makeFilter(\n ({ attribution, freshness }) => {\n if (attribution._tag !== \"plugin\") return true\n\n return freshness.provenance._tag !== \"none\" &&\n attribution.pluginConnectionId === freshness.provenance.sourceRevision.pluginConnectionId\n },\n { expected: \"plugin evidence attribution to carry its exact freshness source revision\" }\n ),\n Schema.makeFilter(\n ({ observedAt, recordedAt }) => DateTime.Order(observedAt, recordedAt) <= 0,\n { expected: \"evidence observation time not to follow recording time\" }\n ),\n Schema.makeFilter(\n ({ observedAt, validUntil }) => validUntil === null || DateTime.Order(observedAt, validUntil) < 0,\n { expected: \"evidence validity to end after observation\" }\n ),\n Schema.makeFilter(\n ({ recordedAt, retention }) =>\n retention.retainUntil === null || DateTime.Order(recordedAt, retention.retainUntil) <= 0,\n { expected: \"evidence retention not to end before recording\" }\n )\n)\n\n/** Decoded immutable evidence observation. */\nexport type EvidenceItem = typeof EvidenceItem.Type\n\n/** One immutable normalized claim derived from an evidence observation. */\nexport const EvidenceClaim = Schema.Struct({\n workspaceId: WorkspaceId,\n evidenceClaimId: EvidenceClaimId,\n evidenceId: EvidenceId,\n subjectNodeId: GraphNodeId,\n predicate: EvidencePredicate,\n value: EvidenceValue,\n recordedAt: UtcTimestamp,\n supersedesEvidenceClaimId: Schema.NullOr(EvidenceClaimId)\n}).check(\n Schema.makeFilter(\n ({ evidenceClaimId, supersedesEvidenceClaimId }) => evidenceClaimId !== supersedesEvidenceClaimId,\n { expected: \"evidence not to supersede itself\" }\n )\n)\n\n/** Decoded immutable evidence claim. */\nexport type EvidenceClaim = typeof EvidenceClaim.Type\n\n/** Independent source availability and validity dimensions for an evidence item. */\nexport type EvidenceFreshnessAssessment = Readonly<{\n source: \"current\" | \"stale\" | \"missing\" | \"unavailable\"\n validity: \"valid\" | \"expired\"\n}>\n\nconst sourceFreshnessAt = (\n freshness: Freshness,\n at: DateTime.DateTime\n): EvidenceFreshnessAssessment[\"source\"] => {\n if (freshness._tag !== \"current\") return freshness._tag\n\n const ageMilliseconds = DateTime.toEpochMillis(at) - DateTime.toEpochMillis(freshness.sourceObservedAt)\n return ageMilliseconds < freshness.staleAfterSeconds * 1_000 ? \"current\" : \"stale\"\n}\n\n/** Determine source freshness and evidence validity at an injected instant. */\nexport const evidenceFreshnessAt = (\n evidence: EvidenceItem,\n at: DateTime.DateTime\n): EvidenceFreshnessAssessment => ({\n source: sourceFreshnessAt(evidence.freshness, at),\n validity: evidence.validUntil === null || DateTime.Order(at, evidence.validUntil) < 0\n ? \"valid\"\n : \"expired\"\n})\n\n/** Determine whether retained evidence bytes are eligible for governed cleanup. */\nexport const evidenceRetentionEligibilityAt = (\n evidence: EvidenceItem,\n at: DateTime.DateTime\n): \"retain\" | \"eligible\" =>\n !evidence.retention.legalHold &&\n evidence.retention.retainUntil !== null &&\n DateTime.Order(evidence.retention.retainUntil, at) <= 0\n ? \"eligible\"\n : \"retain\"\n","import * as Schema from \"effect/Schema\"\n\nimport {\n DomainEventId,\n EntityId,\n EventCursor,\n JobId,\n PluginConnectionId,\n ReleaseId,\n WorkspaceId\n} from \"./identifiers.js\"\nimport { UtcTimestamp } from \"./utcTimestamp.js\"\n\nconst jsonEncoder = new TextEncoder()\nconst hasMaximumJsonBytes = (maximumBytes: number) =>\n Schema.makeFilter(\n (value: unknown) => {\n const serialized = JSON.stringify(value)\n return serialized !== undefined && jsonEncoder.encode(serialized).byteLength <= maximumBytes\n },\n { expected: `JSON encoded as at most ${maximumBytes} UTF-8 bytes` }\n )\nconst PersistedEventCursor = EventCursor.check(Schema.isGreaterThan(0))\n\n/** Maximum decoded JSON carried by one durable domain event. */\nexport const MaximumDomainEventPayloadBytes = 65_536\n\n/** Bounded trace identifier safe to persist independently of the HTTP API. */\nexport const DomainEventCorrelationId = Schema.String.check(\n Schema.isTrimmed(),\n Schema.isNonEmpty(),\n Schema.isMaxLength(128),\n Schema.isPattern(/^[A-Za-z0-9._:-]+$/u, { expected: \"a domain-safe correlation identifier\" })\n).pipe(Schema.brand(\"DomainEventCorrelationId\"))\n\n/** Decoded durable event correlation identifier. */\nexport type DomainEventCorrelationId = typeof DomainEventCorrelationId.Type\n\n/** Optional normalized identities explaining which portfolio facts changed. */\nexport const DomainEventMetadataV1 = Schema.Struct({\n releaseId: Schema.optionalKey(ReleaseId),\n pluginConnectionId: Schema.optionalKey(PluginConnectionId),\n entityId: Schema.optionalKey(EntityId),\n jobId: Schema.optionalKey(JobId)\n}).annotate({ identifier: \"DomainEventMetadataV1\" })\n\n/** Decoded optional identities attached to a v1 domain event. */\nexport type DomainEventMetadataV1 = typeof DomainEventMetadataV1.Type\n\n/** Portfolio projection that must be refreshed after a durable invalidation. */\nexport const PortfolioInvalidationReason = Schema.Literals([\"release-projection\", \"plugin-health\"])\n\n/** Decoded reason for invalidating an authoritative portfolio projection. */\nexport type PortfolioInvalidationReason = typeof PortfolioInvalidationReason.Type\n\n/** Bounded typed payload persisted with a portfolio invalidation. */\nexport const PortfolioInvalidatedPayloadV1 = Schema.Struct({\n reason: PortfolioInvalidationReason\n}).check(hasMaximumJsonBytes(MaximumDomainEventPayloadBytes)).annotate({ identifier: \"PortfolioInvalidatedPayloadV1\" })\n\n/** Decoded bounded v1 portfolio-invalidation payload. */\nexport type PortfolioInvalidatedPayloadV1 = typeof PortfolioInvalidatedPayloadV1.Type\n\n/** Durable workspace-local event declaring that the authoritative portfolio changed. */\nexport const PortfolioInvalidatedEventV1 = Schema.Struct({\n schemaVersion: Schema.Literal(1),\n eventId: DomainEventId,\n eventCursor: PersistedEventCursor,\n workspaceId: WorkspaceId,\n eventType: Schema.Literal(\"portfolio-invalidated\"),\n occurredAt: UtcTimestamp,\n ingestedAt: UtcTimestamp,\n causationId: Schema.NullOr(DomainEventId),\n correlationId: Schema.NullOr(DomainEventCorrelationId),\n metadata: DomainEventMetadataV1,\n payload: PortfolioInvalidatedPayloadV1\n}).annotate({ identifier: \"PortfolioInvalidatedEventV1\" })\n\n/** Decoded durable v1 portfolio-invalidation event. */\nexport type PortfolioInvalidatedEventV1 = typeof PortfolioInvalidatedEventV1.Type\n","import * as DateTime from \"effect/DateTime\"\nimport * as Schema from \"effect/Schema\"\n\nimport { AgentActor, HumanActor, Role } from \"../actors.js\"\nimport { DomainEventCorrelationId } from \"../domainEvent.js\"\nimport {\n DomainEventId,\n EntityId,\n EvidenceClaimId,\n EvidenceId,\n GovernedActionAttemptId,\n GovernedActionAuthorizationId,\n GovernedActionId,\n JobId,\n PluginConnectionId,\n SessionId,\n WorkspaceId\n} from \"../identifiers.js\"\nimport { PluginActionPayloadDigest, PluginActionProposalV1, ReadyPluginActionPreflightV1 } from \"../plugins/actions.js\"\nimport { PluginId, SemanticVersion } from \"../plugins/descriptor.js\"\nimport { PluginEntityType } from \"../plugins/events.js\"\nimport { ProviderId, Revision, SourceRevision } from \"../sourceRevision.js\"\nimport { UtcTimestamp } from \"../utcTimestamp.js\"\n\nconst PositiveInteger = Schema.Int.check(Schema.isGreaterThan(0))\nconst boundedIdentifier = (name: string, maximumLength: number) =>\n Schema.String.check(\n Schema.isTrimmed(),\n Schema.isNonEmpty(),\n Schema.isMaxLength(maximumLength),\n Schema.isPattern(/^[A-Za-z0-9._:/-]+$/u, { expected: \"a bounded action identifier\" })\n ).pipe(Schema.brand(name))\nconst sha256Digest = (name: string) =>\n Schema.String.check(\n Schema.isPattern(/^sha256:[0-9a-f]{64}$/u, { expected: \"a lowercase SHA-256 digest\" })\n ).pipe(Schema.brand(name))\nconst compareText = (left: string, right: string): number => left < right ? -1 : left > right ? 1 : 0\nconst isCanonicalText = (values: ReadonlyArray<string>): boolean =>\n values.every((value, index) => index === 0 || compareText(values[index - 1] ?? \"\", value) < 0)\n\n/** Digest of every immutable field in a governed action envelope. */\nexport const GovernedActionEnvelopeDigest = sha256Digest(\"GovernedActionEnvelopeDigest\")\n\n/** Decoded governed-action envelope digest. */\nexport type GovernedActionEnvelopeDigest = typeof GovernedActionEnvelopeDigest.Type\n\n/** Digest of the canonical evidence-reference set bound to an action. */\nexport const GovernedActionEvidenceSetDigest = sha256Digest(\"GovernedActionEvidenceSetDigest\")\n\n/** Decoded governed-action evidence-set digest. */\nexport type GovernedActionEvidenceSetDigest = typeof GovernedActionEvidenceSetDigest.Type\n\n/** Digest of a fresh policy evaluation persisted with one exact dispatch attempt. */\nexport const GovernedActionPolicyEvaluationDigest = sha256Digest(\"GovernedActionPolicyEvaluationDigest\")\n\n/** Decoded fresh-policy evaluation digest. */\nexport type GovernedActionPolicyEvaluationDigest = typeof GovernedActionPolicyEvaluationDigest.Type\n\n/** Digest of every immutable field in one human action authorization. */\nexport const GovernedActionAuthorizationDigest = sha256Digest(\"GovernedActionAuthorizationDigest\")\n\n/** Decoded governed-action authorization digest. */\nexport type GovernedActionAuthorizationDigest = typeof GovernedActionAuthorizationDigest.Type\n\n/** Digest of every immutable field in one durable dispatch attempt. */\nexport const GovernedActionAttemptDigest = sha256Digest(\"GovernedActionAttemptDigest\")\n\n/** Decoded governed-action attempt digest. */\nexport type GovernedActionAttemptDigest = typeof GovernedActionAttemptDigest.Type\n\n/** Digest of the exact versioned policy snapshot used for authorization. */\nexport const GovernedActionPolicyDigest = sha256Digest(\"GovernedActionPolicyDigest\")\n\n/** Decoded governed-action policy digest. */\nexport type GovernedActionPolicyDigest = typeof GovernedActionPolicyDigest.Type\n\n/** Stable identity of one governed-action policy family. */\nexport const GovernedActionPolicyId = boundedIdentifier(\"GovernedActionPolicyId\", 200)\n\n/** Decoded governed-action policy identity. */\nexport type GovernedActionPolicyId = typeof GovernedActionPolicyId.Type\n\n/** Workspace-connection scoped key that deduplicates one governed provider mutation. */\nexport const GovernedActionIdempotencyKey = Schema.String.check(\n Schema.isTrimmed(),\n Schema.isNonEmpty(),\n Schema.isMaxLength(512)\n).pipe(Schema.brand(\"GovernedActionIdempotencyKey\"))\n\n/** Decoded governed-action idempotency key. */\nexport type GovernedActionIdempotencyKey = typeof GovernedActionIdempotencyKey.Type\n\n/** Optimistic revision of the exact configured plugin connection authorized for dispatch. */\nexport const GovernedActionPluginConnectionRevision = PositiveInteger.pipe(\n Schema.brand(\"GovernedActionPluginConnectionRevision\")\n)\n\n/** Decoded configured-connection revision bound to a governed action. */\nexport type GovernedActionPluginConnectionRevision = typeof GovernedActionPluginConnectionRevision.Type\n\n/** Non-secret digest that changes with configuration, credentials, or resolved provider account. */\nexport const GovernedActionPluginConnectionAuthorityDigest = sha256Digest(\n \"GovernedActionPluginConnectionAuthorityDigest\"\n)\n\n/** Decoded configured-connection authority generation. */\nexport type GovernedActionPluginConnectionAuthorityDigest = typeof GovernedActionPluginConnectionAuthorityDigest.Type\n\n/** Versioned policy and permission snapshot bound into an action proposal. */\nexport const GovernedActionPolicyBinding = Schema.Struct({\n policyId: GovernedActionPolicyId,\n policyVersion: PositiveInteger,\n policyDigest: GovernedActionPolicyDigest,\n requiredPermission: Role\n})\n\n/** Decoded governed-action policy binding. */\nexport type GovernedActionPolicyBinding = typeof GovernedActionPolicyBinding.Type\n\n/** Fresh policy result recomputed immediately before a provider mutation may dispatch. */\nexport const GovernedActionPolicyEvaluationV1 = Schema.Struct({\n schemaVersion: Schema.Literal(1),\n actionId: GovernedActionId,\n workspaceId: WorkspaceId,\n policy: GovernedActionPolicyBinding,\n payloadDigest: PluginActionPayloadDigest,\n evidenceSetDigest: GovernedActionEvidenceSetDigest,\n expectedRevision: Revision,\n decision: Schema.Literals([\"allowed\", \"denied\"]),\n evaluatedAt: UtcTimestamp\n})\n\n/** Decoded fresh policy evaluation for one exact governed action. */\nexport type GovernedActionPolicyEvaluationV1 = typeof GovernedActionPolicyEvaluationV1.Type\n\n/** Current normalized target and exact provider provenance checked before dispatch. */\nexport const GovernedActionTargetSnapshotV1 = Schema.Struct({\n workspaceId: WorkspaceId,\n entityId: EntityId,\n entityType: PluginEntityType,\n sourceRevision: SourceRevision\n})\n\n/** Decoded current target snapshot used by governed-action authority. */\nexport type GovernedActionTargetSnapshotV1 = typeof GovernedActionTargetSnapshotV1.Type\n\n/** Exact immutable evidence state considered by policy at proposal time. */\nexport const GovernedActionEvidenceReference = Schema.Struct({\n workspaceId: WorkspaceId,\n evidenceId: EvidenceId,\n evidenceClaimIds: Schema.Array(EvidenceClaimId).check(\n Schema.isUnique(),\n Schema.makeFilter(isCanonicalText, { expected: \"evidence claim identities in canonical order\" }),\n Schema.makeFilter((evidenceClaimIds) => evidenceClaimIds.length <= 100, {\n expected: \"at most 100 evidence claims per evidence item\"\n })\n ),\n observedAt: UtcTimestamp,\n validUntil: Schema.NullOr(UtcTimestamp),\n currentUntil: Schema.NullOr(UtcTimestamp),\n evaluatedAt: UtcTimestamp,\n source: Schema.Literals([\"current\", \"stale\", \"missing\", \"unavailable\"]),\n validity: Schema.Literals([\"valid\", \"expired\"])\n}).check(\n Schema.makeFilter(\n ({ evaluatedAt, observedAt }) => DateTime.Order(observedAt, evaluatedAt) <= 0,\n { expected: \"evidence evaluation not to precede observation\" }\n ),\n Schema.makeFilter(\n ({ observedAt, validUntil }) => validUntil === null || DateTime.Order(observedAt, validUntil) < 0,\n { expected: \"evidence validity to end after observation\" }\n ),\n Schema.makeFilter(\n ({ currentUntil, observedAt }) => currentUntil === null || DateTime.Order(observedAt, currentUntil) < 0,\n { expected: \"evidence freshness to end after observation\" }\n ),\n Schema.makeFilter(\n ({ currentUntil, evaluatedAt, source }) => {\n if (source === \"current\") return currentUntil === null || DateTime.Order(evaluatedAt, currentUntil) < 0\n if (source === \"stale\") return currentUntil !== null && DateTime.Order(evaluatedAt, currentUntil) >= 0\n return currentUntil === null\n },\n { expected: \"evidence source state to match its evaluation and freshness window\" }\n ),\n Schema.makeFilter(\n ({ evaluatedAt, validUntil, validity }) => {\n const expectedValidity = validUntil === null || DateTime.Order(evaluatedAt, validUntil) < 0\n ? \"valid\"\n : \"expired\"\n return validity === expectedValidity\n },\n { expected: \"evidence validity to match its evaluation and validity window\" }\n )\n)\n\n/** Decoded immutable evidence reference. */\nexport type GovernedActionEvidenceReference = typeof GovernedActionEvidenceReference.Type\n\n/** Human or agent provenance for a proposal; neither form grants execution authority. */\nexport const GovernedActionProposalOrigin = Schema.TaggedUnion({\n human: {\n actor: HumanActor,\n sessionId: SessionId\n },\n agent: {\n actor: AgentActor,\n jobId: JobId,\n initiatingSessionId: Schema.NullOr(SessionId)\n }\n})\n\n/** Decoded governed-action proposal provenance. */\nexport type GovernedActionProposalOrigin = typeof GovernedActionProposalOrigin.Type\n\nconst canonicalEvidenceReferences = Schema.makeFilter(\n (evidence: ReadonlyArray<GovernedActionEvidenceReference>) =>\n isCanonicalText(evidence.map(({ evidenceId }) => evidenceId)),\n { expected: \"unique evidence references in canonical evidence-id order\" }\n)\n\n/** Bounded canonical set of immutable evidence references used by action authority. */\nexport const GovernedActionEvidenceSet = Schema.Array(GovernedActionEvidenceReference).check(\n Schema.makeFilter((evidence) => evidence.length <= 100, { expected: \"at most 100 evidence references\" }),\n canonicalEvidenceReferences\n)\n\n/** Decoded governed-action evidence set. */\nexport type GovernedActionEvidenceSet = typeof GovernedActionEvidenceSet.Type\n\nconst governedActionEnvelopeMaterialFields = {\n schemaVersion: Schema.Literal(1),\n actionId: GovernedActionId,\n idempotencyKey: GovernedActionIdempotencyKey,\n workspaceId: WorkspaceId,\n pluginConnectionId: PluginConnectionId,\n pluginConnectionRevision: GovernedActionPluginConnectionRevision,\n pluginConnectionAuthorityDigest: GovernedActionPluginConnectionAuthorityDigest,\n pluginId: PluginId,\n pluginContractVersion: SemanticVersion,\n pluginAdapterVersion: SemanticVersion,\n providerId: ProviderId,\n capability: Schema.Struct({\n capabilityId: Schema.Literal(\"action.execute\"),\n version: PositiveInteger\n }),\n targetEntityId: EntityId,\n proposal: PluginActionProposalV1,\n evidence: GovernedActionEvidenceSet,\n evidenceSetDigest: GovernedActionEvidenceSetDigest,\n policy: GovernedActionPolicyBinding,\n origin: GovernedActionProposalOrigin,\n proposalExpiresAt: UtcTimestamp,\n causationId: Schema.NullOr(DomainEventId),\n correlationId: Schema.NullOr(DomainEventCorrelationId)\n}\n\n/** Complete digest-free material used to derive an immutable action envelope identity. */\nexport const GovernedActionEnvelopeMaterialV1 = Schema.Struct(governedActionEnvelopeMaterialFields).check(\n Schema.makeFilter(\n ({ capability, proposal }) => capability.version === proposal.capabilityVersion,\n { expected: \"envelope capability version to match the proposal capability version\" }\n ),\n Schema.makeFilter(\n ({ proposal, proposalExpiresAt }) => DateTime.Order(proposal.proposedAt, proposalExpiresAt) < 0,\n { expected: \"action proposal to expire after it is created\" }\n ),\n Schema.makeFilter(\n ({ evidence, workspaceId }) => evidence.every((reference) => reference.workspaceId === workspaceId),\n { expected: \"every governed-action evidence reference to belong to the action workspace\" }\n )\n)\n\n/** Decoded digest-free V1 governed-action envelope material. */\nexport type GovernedActionEnvelopeMaterialV1 = typeof GovernedActionEnvelopeMaterialV1.Type\n\n/** Immutable, versioned host authority for one proposed provider mutation. */\nexport const GovernedActionEnvelopeV1 = Schema.Struct({\n ...governedActionEnvelopeMaterialFields,\n envelopeDigest: GovernedActionEnvelopeDigest\n}).check(\n Schema.makeFilter(\n ({ capability, proposal }) => capability.version === proposal.capabilityVersion,\n { expected: \"envelope capability version to match the proposal capability version\" }\n ),\n Schema.makeFilter(\n ({ proposal, proposalExpiresAt }) => DateTime.Order(proposal.proposedAt, proposalExpiresAt) < 0,\n { expected: \"action proposal to expire after it is created\" }\n ),\n Schema.makeFilter(\n ({ evidence, workspaceId }) => evidence.every((reference) => reference.workspaceId === workspaceId),\n { expected: \"every governed-action evidence reference to belong to the action workspace\" }\n )\n)\n\n/** Decoded immutable V1 governed-action envelope. */\nexport type GovernedActionEnvelopeV1 = typeof GovernedActionEnvelopeV1.Type\n\n/** Human authorization bound to the complete immutable action and policy inputs. */\nexport const GovernedActionAuthorizationV1 = Schema.Struct({\n schemaVersion: Schema.Literal(1),\n authorizationId: GovernedActionAuthorizationId,\n actionId: GovernedActionId,\n workspaceId: WorkspaceId,\n pluginConnectionId: PluginConnectionId,\n pluginConnectionRevision: GovernedActionPluginConnectionRevision,\n pluginConnectionAuthorityDigest: GovernedActionPluginConnectionAuthorityDigest,\n actionEnvelopeDigest: GovernedActionEnvelopeDigest,\n idempotencyKey: GovernedActionIdempotencyKey,\n payloadDigest: PluginActionPayloadDigest,\n evidenceSetDigest: GovernedActionEvidenceSetDigest,\n policyDigest: GovernedActionPolicyDigest,\n expectedRevision: Revision,\n capabilityVersion: PositiveInteger,\n actor: HumanActor,\n sessionId: SessionId,\n sessionPermission: Role,\n sessionExpiresAt: UtcTimestamp,\n requiredPermission: Role,\n authorizedAt: UtcTimestamp,\n expiresAt: UtcTimestamp\n}).check(\n Schema.makeFilter(\n ({ authorizedAt, expiresAt }) => DateTime.Order(authorizedAt, expiresAt) < 0,\n { expected: \"governed-action authorization to expire after it is issued\" }\n ),\n Schema.makeFilter(\n ({ expiresAt, sessionExpiresAt }) => DateTime.Order(expiresAt, sessionExpiresAt) <= 0,\n { expected: \"governed-action authorization not to outlive its authenticated session\" }\n )\n)\n\n/** Decoded immutable human authorization. */\nexport type GovernedActionAuthorizationV1 = typeof GovernedActionAuthorizationV1.Type\n\n/** Durable dispatch intent created only after an exact ready preflight. */\nexport const GovernedActionAttemptV1 = Schema.Struct({\n schemaVersion: Schema.Literal(1),\n attemptId: GovernedActionAttemptId,\n authorizationId: GovernedActionAuthorizationId,\n actionId: GovernedActionId,\n workspaceId: WorkspaceId,\n pluginConnectionId: PluginConnectionId,\n idempotencyKey: GovernedActionIdempotencyKey,\n attemptNumber: Schema.Literal(1),\n actionEnvelopeDigest: GovernedActionEnvelopeDigest,\n expectedRevision: Revision,\n policyEvaluationDigest: GovernedActionPolicyEvaluationDigest,\n preflight: ReadyPluginActionPreflightV1,\n startedAt: UtcTimestamp\n}).check(\n Schema.makeFilter(\n ({ expectedRevision, preflight }) => expectedRevision === preflight.checkedRevision,\n { expected: \"dispatch intent revision to match the ready preflight revision\" }\n ),\n Schema.makeFilter(\n ({ preflight, startedAt }) => DateTime.Order(preflight.checkedAt, startedAt) <= 0,\n { expected: \"dispatch intent not to precede its ready preflight\" }\n )\n)\n\n/** Decoded immutable dispatch intent. */\nexport type GovernedActionAttemptV1 = typeof GovernedActionAttemptV1.Type\n","import * as DateTime from \"effect/DateTime\"\nimport * as Schema from \"effect/Schema\"\n\nimport type { Role } from \"../actors.js\"\nimport { UtcTimestamp } from \"../utcTimestamp.js\"\nimport { GovernedActionAttemptV1, GovernedActionAuthorizationV1, GovernedActionEnvelopeV1 } from \"./model.js\"\nimport type { GovernedActionTransitionV1 } from \"./stateMachine.js\"\n\n/** Closed reasons why durable authorization or dispatch intent does not match its action. */\nexport const GovernedActionAuthorityMismatch = Schema.Literals([\n \"authorization-action-mismatch\",\n \"authorization-workspace-mismatch\",\n \"authorization-connection-mismatch\",\n \"authorization-connection-revision-mismatch\",\n \"authorization-connection-authority-mismatch\",\n \"authorization-envelope-mismatch\",\n \"authorization-idempotency-mismatch\",\n \"authorization-payload-mismatch\",\n \"authorization-evidence-mismatch\",\n \"authorization-policy-mismatch\",\n \"authorization-revision-mismatch\",\n \"authorization-capability-mismatch\",\n \"authorization-permission-mismatch\",\n \"authorization-outside-proposal-window\",\n \"authorization-expired\",\n \"authorization-session-expired\",\n \"evidence-not-current\",\n \"evidence-set-changed\",\n \"evidence-workspace-mismatch\",\n \"session-id-mismatch\",\n \"session-actor-mismatch\",\n \"session-workspace-mismatch\",\n \"session-permission-mismatch\",\n \"session-revoked\",\n \"authorization-session-chronology\",\n \"current-plugin-connection-mismatch\",\n \"current-plugin-workspace-mismatch\",\n \"current-plugin-provider-mismatch\",\n \"current-plugin-revision-mismatch\",\n \"current-plugin-authority-mismatch\",\n \"current-plugin-unavailable\",\n \"current-plugin-mismatch\",\n \"current-capability-unavailable\",\n \"current-capability-version-mismatch\",\n \"current-policy-denied\",\n \"current-policy-mismatch\",\n \"current-target-workspace-mismatch\",\n \"current-target-entity-mismatch\",\n \"current-target-type-mismatch\",\n \"current-target-source-mismatch\",\n \"current-target-revision-mismatch\",\n \"attempt-action-mismatch\",\n \"attempt-authorization-mismatch\",\n \"attempt-workspace-mismatch\",\n \"attempt-connection-mismatch\",\n \"attempt-envelope-mismatch\",\n \"attempt-idempotency-mismatch\",\n \"attempt-policy-evaluation-mismatch\",\n \"attempt-revision-mismatch\",\n \"attempt-outside-authorization-window\"\n])\n\n/** Decoded governed-action authority mismatch. */\nexport type GovernedActionAuthorityMismatch = typeof GovernedActionAuthorityMismatch.Type\n\n/** Complete aggregate authority checked immediately before durable dispatch intent. */\nexport const GovernedActionAuthorityBindingInput = Schema.Struct({\n envelope: GovernedActionEnvelopeV1,\n authorization: GovernedActionAuthorizationV1,\n attempt: GovernedActionAttemptV1,\n evaluatedAt: UtcTimestamp\n})\n\n/** Decoded aggregate authority inputs checked immediately before dispatch. */\nexport type GovernedActionAuthorityBindingInput = typeof GovernedActionAuthorityBindingInput.Type\n\n/** Immutable authorization inputs that can be verified before a dispatch attempt exists. */\nexport const GovernedActionAuthorizationBindingInput = Schema.Struct({\n envelope: GovernedActionEnvelopeV1,\n authorization: GovernedActionAuthorizationV1\n})\n\n/** Decoded authorization-only binding inputs. */\nexport type GovernedActionAuthorizationBindingInput = typeof GovernedActionAuthorizationBindingInput.Type\n\n/** Explicit V1 permission implication: workspace owner or an exact scoped role. */\nexport const governedActionPermissionGrants = (sessionPermission: Role, requiredPermission: Role): boolean =>\n sessionPermission === \"workspace-owner\" || sessionPermission === requiredPermission\n\n/** Return every fail-closed mismatch between an envelope and its human grant. */\nexport const governedActionAuthorizationMismatches = ({\n authorization,\n envelope\n}: GovernedActionAuthorizationBindingInput): ReadonlyArray<GovernedActionAuthorityMismatch> => {\n const mismatches: Array<GovernedActionAuthorityMismatch> = []\n const addMismatch = (condition: boolean, mismatch: GovernedActionAuthorityMismatch): void => {\n if (condition) mismatches.push(mismatch)\n }\n\n addMismatch(authorization.actionId !== envelope.actionId, \"authorization-action-mismatch\")\n addMismatch(authorization.workspaceId !== envelope.workspaceId, \"authorization-workspace-mismatch\")\n addMismatch(\n authorization.pluginConnectionId !== envelope.pluginConnectionId,\n \"authorization-connection-mismatch\"\n )\n addMismatch(\n authorization.pluginConnectionRevision !== envelope.pluginConnectionRevision,\n \"authorization-connection-revision-mismatch\"\n )\n addMismatch(\n authorization.pluginConnectionAuthorityDigest !== envelope.pluginConnectionAuthorityDigest,\n \"authorization-connection-authority-mismatch\"\n )\n addMismatch(\n authorization.actionEnvelopeDigest !== envelope.envelopeDigest,\n \"authorization-envelope-mismatch\"\n )\n addMismatch(authorization.idempotencyKey !== envelope.idempotencyKey, \"authorization-idempotency-mismatch\")\n addMismatch(\n authorization.payloadDigest !== envelope.proposal.payloadDigest,\n \"authorization-payload-mismatch\"\n )\n addMismatch(\n authorization.evidenceSetDigest !== envelope.evidenceSetDigest,\n \"authorization-evidence-mismatch\"\n )\n addMismatch(authorization.policyDigest !== envelope.policy.policyDigest, \"authorization-policy-mismatch\")\n addMismatch(\n authorization.expectedRevision !== envelope.proposal.request.expectedRevision,\n \"authorization-revision-mismatch\"\n )\n addMismatch(\n authorization.capabilityVersion !== envelope.capability.version,\n \"authorization-capability-mismatch\"\n )\n addMismatch(\n authorization.requiredPermission !== envelope.policy.requiredPermission,\n \"authorization-permission-mismatch\"\n )\n addMismatch(\n !governedActionPermissionGrants(authorization.sessionPermission, authorization.requiredPermission),\n \"authorization-permission-mismatch\"\n )\n addMismatch(\n DateTime.Order(authorization.authorizedAt, envelope.proposal.proposedAt) < 0 ||\n DateTime.Order(authorization.authorizedAt, envelope.proposalExpiresAt) >= 0 ||\n DateTime.Order(authorization.expiresAt, envelope.proposalExpiresAt) > 0,\n \"authorization-outside-proposal-window\"\n )\n\n return mismatches\n}\n\n/** Whether a human grant is attributable to its exact immutable authorize transition. */\nexport const governedActionAuthorizationMatchesTransition = (\n authorization: GovernedActionAuthorizationV1,\n transition: GovernedActionTransitionV1\n): boolean =>\n transition.command._tag === \"authorize\" &&\n transition.command.authorizationId === authorization.authorizationId &&\n transition.actionId === authorization.actionId &&\n transition.workspaceId === authorization.workspaceId &&\n transition.actionEnvelopeDigest === authorization.actionEnvelopeDigest &&\n DateTime.Order(transition.occurredAt, authorization.authorizedAt) === 0 &&\n transition.cause._tag === \"human\" &&\n transition.cause.actor.personId === authorization.actor.personId &&\n transition.cause.sessionId === authorization.sessionId\n\n/** Return every fail-closed mismatch between an envelope, human grant, and dispatch intent. */\nexport const governedActionAuthorityMismatches = ({\n attempt,\n authorization,\n envelope,\n evaluatedAt\n}: GovernedActionAuthorityBindingInput): ReadonlyArray<GovernedActionAuthorityMismatch> => {\n const mismatches: Array<GovernedActionAuthorityMismatch> = [\n ...governedActionAuthorizationMismatches({ authorization, envelope })\n ]\n const addMismatch = (condition: boolean, mismatch: GovernedActionAuthorityMismatch): void => {\n if (condition) mismatches.push(mismatch)\n }\n\n addMismatch(\n DateTime.Order(evaluatedAt, authorization.expiresAt) >= 0 ||\n DateTime.Order(evaluatedAt, envelope.proposalExpiresAt) >= 0,\n \"authorization-expired\"\n )\n addMismatch(\n DateTime.Order(evaluatedAt, authorization.sessionExpiresAt) >= 0,\n \"authorization-session-expired\"\n )\n addMismatch(\n envelope.evidence.some(({ currentUntil, source, validUntil }) =>\n source !== \"current\" ||\n (currentUntil !== null && DateTime.Order(evaluatedAt, currentUntil) >= 0) ||\n (validUntil !== null && DateTime.Order(evaluatedAt, validUntil) >= 0)\n ),\n \"evidence-not-current\"\n )\n\n addMismatch(attempt.actionId !== envelope.actionId, \"attempt-action-mismatch\")\n addMismatch(attempt.authorizationId !== authorization.authorizationId, \"attempt-authorization-mismatch\")\n addMismatch(attempt.workspaceId !== envelope.workspaceId, \"attempt-workspace-mismatch\")\n addMismatch(attempt.pluginConnectionId !== envelope.pluginConnectionId, \"attempt-connection-mismatch\")\n addMismatch(attempt.actionEnvelopeDigest !== envelope.envelopeDigest, \"attempt-envelope-mismatch\")\n addMismatch(attempt.idempotencyKey !== envelope.idempotencyKey, \"attempt-idempotency-mismatch\")\n addMismatch(attempt.expectedRevision !== envelope.proposal.request.expectedRevision, \"attempt-revision-mismatch\")\n addMismatch(\n DateTime.Order(attempt.preflight.checkedAt, authorization.authorizedAt) < 0 ||\n DateTime.Order(attempt.startedAt, authorization.authorizedAt) < 0 ||\n DateTime.Order(attempt.startedAt, authorization.expiresAt) >= 0 ||\n DateTime.Order(attempt.startedAt, envelope.proposalExpiresAt) >= 0 ||\n DateTime.Order(attempt.startedAt, evaluatedAt) > 0,\n \"attempt-outside-authorization-window\"\n )\n\n return mismatches\n}\n","import * as Schema from \"effect/Schema\"\n\nimport { AgentActor, HumanActor } from \"../actors.js\"\nimport { DomainEventCorrelationId } from \"../domainEvent.js\"\nimport {\n DomainEventId,\n GovernedActionAttemptId,\n GovernedActionAuthorizationId,\n GovernedActionId,\n GovernedActionTransitionId,\n JobId,\n SessionId,\n WorkspaceId\n} from \"../identifiers.js\"\nimport {\n PluginAcceptedProviderReceiptV1,\n PluginActionReconciliationKey,\n PluginProviderOperationId,\n PluginTerminalProviderReceiptV1\n} from \"../plugins/actions.js\"\nimport { UtcTimestamp } from \"../utcTimestamp.js\"\nimport { GovernedActionEnvelopeDigest } from \"./model.js\"\n\nconst PositiveInteger = Schema.Int.check(Schema.isGreaterThan(0))\nconst SafeReason = Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(1_000))\nconst boundedIdentifier = (name: string, maximumLength: number) =>\n Schema.String.check(\n Schema.isTrimmed(),\n Schema.isNonEmpty(),\n Schema.isMaxLength(maximumLength),\n Schema.isPattern(/^[A-Za-z0-9._:/-]+$/u, { expected: \"a bounded action identifier\" })\n ).pipe(Schema.brand(name))\n\n/** Complete persisted lifecycle states for a governed action. */\nexport const GovernedActionState = Schema.Literals([\n \"proposed\",\n \"authorized\",\n \"denied\",\n \"expired\",\n \"cancelled\",\n \"started\",\n \"cancel-requested\",\n \"cancel-requested-unknown\",\n \"succeeded\",\n \"failed\",\n \"unknown\"\n])\n\n/** Decoded governed-action lifecycle state. */\nexport type GovernedActionState = typeof GovernedActionState.Type\n\n/** Stable identity supplied by a caller to deduplicate one lifecycle command. */\nexport const GovernedActionCommandId = boundedIdentifier(\"GovernedActionCommandId\", 512)\n\n/** Decoded governed-action command identity. */\nexport type GovernedActionCommandId = typeof GovernedActionCommandId.Type\n\n/** Digest of one canonical transition command used to reject changed command retries. */\nexport const GovernedActionCommandDigest = Schema.String.check(\n Schema.isPattern(/^sha256:[0-9a-f]{64}$/u, { expected: \"a lowercase SHA-256 digest\" })\n).pipe(Schema.brand(\"GovernedActionCommandDigest\"))\n\n/** Decoded governed-action command digest. */\nexport type GovernedActionCommandDigest = typeof GovernedActionCommandDigest.Type\n\n/** Digest of every immutable field in one governed-action transition. */\nexport const GovernedActionTransitionDigest = Schema.String.check(\n Schema.isPattern(/^sha256:[0-9a-f]{64}$/u, { expected: \"a lowercase SHA-256 digest\" })\n).pipe(Schema.brand(\"GovernedActionTransitionDigest\"))\n\n/** Decoded governed-action transition digest. */\nexport type GovernedActionTransitionDigest = typeof GovernedActionTransitionDigest.Type\n\n/** Closed reason why authorization or preflight failed without calling a provider. */\nexport const GovernedActionDenialReason = Schema.Literals([\n \"revision-changed\",\n \"evidence-stale\",\n \"evidence-invalid\",\n \"policy-denied\",\n \"session-invalid\",\n \"capability-changed\",\n \"plugin-unavailable\",\n \"preflight-blocked\"\n])\n\n/** Decoded governed-action denial reason. */\nexport type GovernedActionDenialReason = typeof GovernedActionDenialReason.Type\n\n/** Unknown provider outcome that is either safely reconcilable or explicitly manual. */\nexport const GovernedActionUnknownOutcome = Schema.TaggedUnion({\n reconcilable: {\n reconciliationKey: PluginActionReconciliationKey,\n observedAt: UtcTimestamp,\n safeSummary: SafeReason\n },\n manual: {\n observedAt: UtcTimestamp,\n safeSummary: SafeReason,\n reason: Schema.Literals([\n \"dispatch-deadline-exceeded\",\n \"interrupted-after-intent\",\n \"provider-defect-after-intent\",\n \"malformed-provider-result\",\n \"receipt-persistence-failed\",\n \"missing-reconciliation-locator\"\n ])\n }\n})\n\n/** Decoded truthful unknown-outcome detail. */\nexport type GovernedActionUnknownOutcome = typeof GovernedActionUnknownOutcome.Type\n\nconst SucceededReceipt = PluginTerminalProviderReceiptV1.check(\n Schema.makeFilter(({ status }) => status === \"succeeded\", { expected: \"a succeeded provider receipt\" })\n)\nconst FailedReceipt = PluginTerminalProviderReceiptV1.check(\n Schema.makeFilter(({ status }) => status === \"failed\", { expected: \"a failed provider receipt\" })\n)\nconst CancelledReceipt = PluginTerminalProviderReceiptV1.check(\n Schema.makeFilter(({ status }) => status === \"cancelled\", { expected: \"a cancelled provider receipt\" })\n)\n\n/** Whether a terminal receipt came from dispatch or reconciliation by provider/idempotency identity. */\nexport const GovernedActionOutcomeSource = Schema.TaggedUnion({\n direct: {},\n providerOperation: { providerOperationId: PluginProviderOperationId },\n reconciliation: { reconciliationKey: Schema.NullOr(PluginActionReconciliationKey) }\n})\n\n/** Decoded terminal provider-outcome source. */\nexport type GovernedActionOutcomeSource = typeof GovernedActionOutcomeSource.Type\n\n/** Closed commands that may append one governed-action lifecycle transition. */\nexport const GovernedActionTransitionCommand = Schema.TaggedUnion({\n propose: {},\n authorize: { authorizationId: GovernedActionAuthorizationId },\n deny: {\n reason: GovernedActionDenialReason,\n safeSummary: SafeReason\n },\n expire: {\n reason: Schema.Literals([\"proposal-expired\", \"authorization-expired\"])\n },\n cancel: { safeSummary: SafeReason },\n start: { attemptId: GovernedActionAttemptId },\n requestCancellation: { safeSummary: SafeReason },\n recordAccepted: { receipt: PluginAcceptedProviderReceiptV1 },\n recordSucceeded: { receipt: SucceededReceipt, source: GovernedActionOutcomeSource },\n recordFailed: { receipt: FailedReceipt, source: GovernedActionOutcomeSource },\n recordUnknown: { outcome: GovernedActionUnknownOutcome },\n recordCancelled: { receipt: CancelledReceipt, source: GovernedActionOutcomeSource },\n reconciliationPending: {\n checkedAt: UtcTimestamp,\n reconciliationKey: Schema.NullOr(PluginActionReconciliationKey)\n }\n})\n\n/** Decoded governed-action lifecycle command. */\nexport type GovernedActionTransitionCommand = typeof GovernedActionTransitionCommand.Type\n\n/** Attributable human, agent, or internal component responsible for a transition. */\nexport const GovernedActionTransitionCause = Schema.TaggedUnion({\n human: {\n actor: HumanActor,\n sessionId: SessionId\n },\n agent: {\n actor: AgentActor,\n jobId: JobId\n },\n system: {\n component: boundedIdentifier(\"GovernedActionSystemComponent\", 200)\n }\n})\n\n/** Decoded governed-action transition attribution. */\nexport type GovernedActionTransitionCause = typeof GovernedActionTransitionCause.Type\n\nconst canRecordTerminalOutcome = (\n currentState: GovernedActionState | null,\n source: GovernedActionOutcomeSource\n): boolean =>\n currentState === \"started\" ||\n currentState === \"cancel-requested\" ||\n ((currentState === \"unknown\" || currentState === \"cancel-requested-unknown\") &&\n source._tag === \"reconciliation\")\n\n/**\n * Resolve a lifecycle command without side effects.\n * A null result means the command is not legal from the supplied state.\n */\nexport const reduceGovernedActionState = (\n currentState: GovernedActionState | null,\n command: GovernedActionTransitionCommand\n): GovernedActionState | null => {\n switch (command._tag) {\n case \"propose\":\n return currentState === null ? \"proposed\" : null\n case \"authorize\":\n return currentState === \"proposed\" ? \"authorized\" : null\n case \"deny\":\n return currentState === \"proposed\" || currentState === \"authorized\" ? \"denied\" : null\n case \"expire\":\n return currentState === \"proposed\" || currentState === \"authorized\" ? \"expired\" : null\n case \"cancel\":\n return currentState === \"proposed\" || currentState === \"authorized\" ? \"cancelled\" : null\n case \"start\":\n return currentState === \"authorized\" ? \"started\" : null\n case \"requestCancellation\":\n return currentState === \"started\"\n ? \"cancel-requested\"\n : currentState === \"unknown\"\n ? \"cancel-requested-unknown\"\n : null\n case \"recordAccepted\":\n return currentState === \"started\" || currentState === \"cancel-requested\" ? currentState : null\n case \"recordUnknown\":\n return currentState === \"started\"\n ? \"unknown\"\n : currentState === \"cancel-requested\"\n ? \"cancel-requested-unknown\"\n : null\n case \"recordSucceeded\":\n return canRecordTerminalOutcome(currentState, command.source) ? \"succeeded\" : null\n case \"recordFailed\":\n return canRecordTerminalOutcome(currentState, command.source) ? \"failed\" : null\n case \"recordCancelled\":\n return canRecordTerminalOutcome(currentState, command.source) ? \"cancelled\" : null\n case \"reconciliationPending\":\n return currentState === \"started\" ||\n currentState === \"cancel-requested\" ||\n currentState === \"unknown\" ||\n currentState === \"cancel-requested-unknown\"\n ? currentState\n : null\n }\n}\n\n/** Whether a governed action has reached a state that cannot execute more provider work. */\nexport const isGovernedActionTerminalState = (state: GovernedActionState): boolean =>\n state === \"denied\" ||\n state === \"expired\" ||\n state === \"cancelled\" ||\n state === \"succeeded\" ||\n state === \"failed\"\n\nconst commandCauseIsAllowed = (\n command: GovernedActionTransitionCommand,\n cause: GovernedActionTransitionCause\n): boolean => {\n switch (cause._tag) {\n case \"agent\":\n return command._tag === \"propose\"\n case \"human\":\n return command._tag === \"propose\" ||\n command._tag === \"authorize\" ||\n command._tag === \"deny\" ||\n command._tag === \"cancel\" ||\n command._tag === \"requestCancellation\"\n case \"system\":\n return command._tag === \"deny\" ||\n command._tag === \"expire\" ||\n command._tag === \"cancel\" ||\n command._tag === \"start\" ||\n command._tag === \"requestCancellation\" ||\n command._tag === \"recordAccepted\" ||\n command._tag === \"recordSucceeded\" ||\n command._tag === \"recordFailed\" ||\n command._tag === \"recordUnknown\" ||\n command._tag === \"recordCancelled\" ||\n command._tag === \"reconciliationPending\"\n }\n}\n\nconst governedActionTransitionMaterialFields = {\n schemaVersion: Schema.Literal(1),\n transitionId: GovernedActionTransitionId,\n previousTransitionId: Schema.NullOr(GovernedActionTransitionId),\n commandId: GovernedActionCommandId,\n actionId: GovernedActionId,\n workspaceId: WorkspaceId,\n sequence: PositiveInteger,\n fromState: Schema.NullOr(GovernedActionState),\n toState: GovernedActionState,\n actionEnvelopeDigest: GovernedActionEnvelopeDigest,\n command: GovernedActionTransitionCommand,\n cause: GovernedActionTransitionCause,\n occurredAt: UtcTimestamp,\n causationId: Schema.NullOr(DomainEventId),\n correlationId: Schema.NullOr(DomainEventCorrelationId)\n}\n\n/** Digest-free transition fields used only by the trusted transition constructor. */\nexport const GovernedActionTransitionMaterialV1 = Schema.Struct(\n governedActionTransitionMaterialFields\n).check(\n Schema.makeFilter(\n ({ command, fromState, toState }) => reduceGovernedActionState(fromState, command) === toState,\n { expected: \"a legal governed-action state transition\" }\n ),\n Schema.makeFilter(\n ({ cause, command }) => commandCauseIsAllowed(command, cause),\n { expected: \"transition cause to have authority for the command\" }\n ),\n Schema.makeFilter(\n ({ fromState, previousTransitionId, sequence }) =>\n sequence === 1\n ? fromState === null && previousTransitionId === null\n : fromState !== null && previousTransitionId !== null,\n { expected: \"the first transition to be the only transition without a predecessor\" }\n )\n)\n\n/** Decoded digest-free governed-action transition material. */\nexport type GovernedActionTransitionMaterialV1 = typeof GovernedActionTransitionMaterialV1.Type\n\n/** Immutable append-only audit record for one legal lifecycle command. */\nexport const GovernedActionTransitionV1 = Schema.Struct({\n ...governedActionTransitionMaterialFields,\n commandDigest: GovernedActionCommandDigest\n}).check(\n Schema.makeFilter(\n ({ command, fromState, toState }) => reduceGovernedActionState(fromState, command) === toState,\n { expected: \"a legal governed-action state transition\" }\n ),\n Schema.makeFilter(\n ({ cause, command }) => commandCauseIsAllowed(command, cause),\n { expected: \"transition cause to have authority for the command\" }\n ),\n Schema.makeFilter(\n ({ fromState, previousTransitionId, sequence }) =>\n sequence === 1\n ? fromState === null && previousTransitionId === null\n : fromState !== null && previousTransitionId !== null,\n { expected: \"the first transition to be the only transition without a predecessor\" }\n )\n)\n\n/** Decoded immutable governed-action transition. */\nexport type GovernedActionTransitionV1 = typeof GovernedActionTransitionV1.Type\n","import * as Schema from \"effect/Schema\"\n\nimport {\n PluginAcceptedProviderReceiptV1,\n PluginActionReconciliationKey,\n PluginProviderOperationId,\n PluginTerminalProviderReceiptV1\n} from \"../plugins/actions.js\"\nimport {\n GovernedActionState,\n type GovernedActionState as GovernedActionStateType,\n type GovernedActionTransitionCommand,\n reduceGovernedActionState\n} from \"./stateMachine.js\"\n\n/** Provider identity retained by the durable action head across async and ambiguous work. */\nexport const GovernedActionProviderLineage = Schema.TaggedUnion({\n none: {},\n accepted: { receipt: PluginAcceptedProviderReceiptV1 },\n reconcilable: {\n providerOperationId: Schema.NullOr(PluginProviderOperationId),\n reconciliationKey: PluginActionReconciliationKey\n },\n manual: {\n providerOperationId: Schema.NullOr(PluginProviderOperationId)\n },\n terminal: { receipt: PluginTerminalProviderReceiptV1 }\n})\n\n/** Decoded provider lineage retained by a governed-action lifecycle head. */\nexport type GovernedActionProviderLineage = typeof GovernedActionProviderLineage.Type\n\nconst stateMatchesLineage = (\n state: GovernedActionStateType,\n lineage: GovernedActionProviderLineage\n): boolean => {\n switch (state) {\n case \"proposed\":\n case \"authorized\":\n case \"denied\":\n case \"expired\":\n return lineage._tag === \"none\"\n case \"cancelled\":\n return lineage._tag === \"none\" || (lineage._tag === \"terminal\" && lineage.receipt.status === \"cancelled\")\n case \"started\":\n case \"cancel-requested\":\n return lineage._tag === \"none\" || lineage._tag === \"accepted\"\n case \"unknown\":\n case \"cancel-requested-unknown\":\n return lineage._tag === \"reconcilable\" || lineage._tag === \"manual\"\n case \"succeeded\":\n return lineage._tag === \"terminal\" && lineage.receipt.status === \"succeeded\"\n case \"failed\":\n return lineage._tag === \"terminal\" && lineage.receipt.status === \"failed\"\n }\n}\n\n/** Durable lifecycle state plus the exact provider identity needed for safe recovery. */\nexport const GovernedActionLifecycleHeadV1 = Schema.Struct({\n state: GovernedActionState,\n lineage: GovernedActionProviderLineage\n}).check(\n Schema.makeFilter(\n ({ lineage, state }) => stateMatchesLineage(state, lineage),\n { expected: \"governed-action state and provider lineage to agree\" }\n )\n)\n\n/** Decoded governed-action lifecycle head. */\nexport type GovernedActionLifecycleHeadV1 = typeof GovernedActionLifecycleHeadV1.Type\n\nconst providerOperationIdFromLineage = (\n lineage: GovernedActionProviderLineage\n): PluginProviderOperationId | null => {\n switch (lineage._tag) {\n case \"accepted\":\n return lineage.receipt.providerOperationId\n case \"reconcilable\":\n case \"manual\":\n return lineage.providerOperationId\n case \"none\":\n case \"terminal\":\n return null\n }\n}\n\nconst reconciliationKeyFromLineage = (\n lineage: GovernedActionProviderLineage\n): PluginActionReconciliationKey | null => {\n switch (lineage._tag) {\n case \"accepted\":\n return lineage.receipt.reconciliationKey\n case \"reconcilable\":\n return lineage.reconciliationKey\n case \"none\":\n case \"manual\":\n case \"terminal\":\n return null\n }\n}\n\nconst unknownLineage = (\n current: GovernedActionProviderLineage,\n command: Extract<GovernedActionTransitionCommand, { readonly _tag: \"recordUnknown\" }>\n): GovernedActionProviderLineage => {\n const providerOperationId = providerOperationIdFromLineage(current)\n if (command.outcome._tag === \"reconcilable\") {\n return {\n _tag: \"reconcilable\",\n providerOperationId,\n reconciliationKey: command.outcome.reconciliationKey\n }\n }\n const retainedReconciliationKey = reconciliationKeyFromLineage(current)\n return retainedReconciliationKey === null\n ? { _tag: \"manual\", providerOperationId }\n : { _tag: \"reconcilable\", providerOperationId, reconciliationKey: retainedReconciliationKey }\n}\n\nconst acceptedReceiptMatches = (\n lineage: GovernedActionProviderLineage,\n command: Extract<GovernedActionTransitionCommand, { readonly _tag: \"recordAccepted\" }>\n): boolean =>\n lineage._tag === \"none\" ||\n (lineage._tag === \"accepted\" &&\n lineage.receipt.providerOperationId === command.receipt.providerOperationId &&\n lineage.receipt.reconciliationKey === command.receipt.reconciliationKey)\n\n/** Null is the action envelope's immutable idempotency identity, never a missing provider key. */\nconst reconciliationLocatorMatches = (\n lineage: GovernedActionProviderLineage,\n reconciliationKey: PluginActionReconciliationKey | null\n): boolean =>\n reconciliationKey === null\n ? lineage._tag === \"none\" || lineage._tag === \"manual\"\n : reconciliationKeyFromLineage(lineage) === reconciliationKey\n\nconst terminalSourceMatches = (\n lineage: GovernedActionProviderLineage,\n command: Extract<\n GovernedActionTransitionCommand,\n { readonly _tag: \"recordSucceeded\" | \"recordFailed\" | \"recordCancelled\" }\n >\n): boolean => {\n const providerOperationId = providerOperationIdFromLineage(lineage)\n switch (command.source._tag) {\n case \"direct\":\n return lineage._tag === \"none\"\n case \"providerOperation\":\n return providerOperationId !== null &&\n command.source.providerOperationId === providerOperationId &&\n command.receipt.providerOperationId === providerOperationId\n case \"reconciliation\":\n return reconciliationLocatorMatches(lineage, command.source.reconciliationKey) &&\n (providerOperationId === null || command.receipt.providerOperationId === providerOperationId)\n }\n}\n\nconst reconciliationPendingMatches = (\n lineage: GovernedActionProviderLineage,\n command: Extract<GovernedActionTransitionCommand, { readonly _tag: \"reconciliationPending\" }>\n): boolean => reconciliationLocatorMatches(lineage, command.reconciliationKey)\n\n/**\n * Advance a durable lifecycle head while retaining and matching opaque provider identity.\n * A null result rejects illegal edges, fabricated locators, and unrelated receipts.\n */\nexport const advanceGovernedActionLifecycle = (\n current: GovernedActionLifecycleHeadV1 | null,\n command: GovernedActionTransitionCommand\n): GovernedActionLifecycleHeadV1 | null => {\n const nextState = reduceGovernedActionState(current?.state ?? null, command)\n if (nextState === null) return null\n const currentLineage: GovernedActionProviderLineage = current?.lineage ?? { _tag: \"none\" }\n\n switch (command._tag) {\n case \"recordAccepted\":\n return acceptedReceiptMatches(currentLineage, command)\n ? { state: nextState, lineage: { _tag: \"accepted\", receipt: command.receipt } }\n : null\n case \"recordUnknown\":\n return { state: nextState, lineage: unknownLineage(currentLineage, command) }\n case \"recordSucceeded\":\n case \"recordFailed\":\n case \"recordCancelled\":\n return terminalSourceMatches(currentLineage, command)\n ? { state: nextState, lineage: { _tag: \"terminal\", receipt: command.receipt } }\n : null\n case \"reconciliationPending\":\n return reconciliationPendingMatches(currentLineage, command)\n ? { state: nextState, lineage: currentLineage }\n : null\n case \"propose\":\n case \"authorize\":\n case \"deny\":\n case \"expire\":\n case \"cancel\":\n case \"start\":\n case \"requestCancellation\":\n return { state: nextState, lineage: currentLineage }\n }\n}\n","import * as Schema from \"effect/Schema\"\n\nimport { Actor } from \"./actors.js\"\nimport { LedgerRevision } from \"./deliveryGraph.js\"\nimport {\n EnvironmentId,\n RelationshipId,\n RelationshipRepairProposalId,\n RelationshipRepairReviewId,\n ReleaseId,\n SessionId,\n WorkspaceId\n} from \"./identifiers.js\"\nimport { UtcTimestamp } from \"./utcTimestamp.js\"\n\n/** Explicit decision proposed for an incomplete delivery relationship. */\nexport const RelationshipRepairDisposition = Schema.Literals([\"link\", \"verify\", \"reject\"])\n\n/** Decoded relationship-repair disposition. */\nexport type RelationshipRepairDisposition = typeof RelationshipRepairDisposition.Type\n\n/** Bounded human-readable justification stored with a repair proposal. */\nexport const RelationshipRepairRationale = Schema.String.check(\n Schema.isTrimmed(),\n Schema.isNonEmpty(),\n Schema.isMaxLength(1_000)\n).annotate({ identifier: \"RelationshipRepairRationale\" })\n\n/** Decoded relationship-repair rationale. */\nexport type RelationshipRepairRationale = typeof RelationshipRepairRationale.Type\n\n/** Authenticated origin retained for proposal review and later audit. */\nexport const RelationshipRepairProposalOrigin = Schema.Struct({\n actor: Actor,\n sessionId: SessionId\n})\n\n/** Decoded relationship-repair proposal origin. */\nexport type RelationshipRepairProposalOrigin = typeof RelationshipRepairProposalOrigin.Type\n\n/** Final reviewer decision over one exact proposal. */\nexport const RelationshipRepairReviewDecision = Schema.Literals([\"approved\", \"rejected\"])\n\n/** Decoded relationship-repair review decision. */\nexport type RelationshipRepairReviewDecision = typeof RelationshipRepairReviewDecision.Type\n\n/** Immutable review evidence retained with a finalized proposal. */\nexport const RelationshipRepairReview = Schema.Struct({\n reviewId: RelationshipRepairReviewId,\n decision: RelationshipRepairReviewDecision,\n rationale: RelationshipRepairRationale,\n origin: RelationshipRepairProposalOrigin,\n reviewedAt: UtcTimestamp\n}).annotate({ identifier: \"RelationshipRepairReview\" })\n\n/** Decoded relationship-repair review. */\nexport type RelationshipRepairReview = typeof RelationshipRepairReview.Type\n\n/** Immutable evidence that one approved proposal appended an exact ledger revision. */\nexport const RelationshipRepairApplication = Schema.Struct({\n proposalId: RelationshipRepairProposalId,\n relationshipId: RelationshipId,\n appliedRevision: LedgerRevision,\n origin: RelationshipRepairProposalOrigin,\n appliedAt: UtcTimestamp\n}).annotate({ identifier: \"RelationshipRepairApplication\" })\n\n/** Decoded relationship-repair application evidence. */\nexport type RelationshipRepairApplication = typeof RelationshipRepairApplication.Type\n\n/** Durable proposal bound to one exact immutable relationship revision. */\nexport const RelationshipRepairProposal = Schema.Struct({\n schemaVersion: Schema.Literal(2),\n proposalId: RelationshipRepairProposalId,\n workspaceId: WorkspaceId,\n releaseId: ReleaseId,\n environmentId: Schema.NullOr(EnvironmentId),\n relationshipId: RelationshipId,\n expectedRevision: LedgerRevision,\n disposition: RelationshipRepairDisposition,\n rationale: RelationshipRepairRationale,\n origin: RelationshipRepairProposalOrigin,\n status: Schema.Literals([\"pending\", \"approved\", \"rejected\"]),\n proposedAt: UtcTimestamp,\n review: Schema.NullOr(RelationshipRepairReview)\n}).annotate({ identifier: \"RelationshipRepairProposal\" })\n\n/** Decoded durable relationship-repair proposal. */\nexport type RelationshipRepairProposal = typeof RelationshipRepairProposal.Type\n","import * as Schema from \"effect/Schema\"\n\nimport { UtcTimestamp } from \"./utcTimestamp.js\"\n\n/** Actor classes that can contribute durable activity to a workspace Timeline. */\nexport const TimelineActorKind = Schema.Literals([\"agent\", \"human\", \"plugin\", \"system\"])\n\n/** Decoded Timeline actor class. */\nexport type TimelineActorKind = typeof TimelineActorKind.Type\n\n/** Durable source streams merged by the Timeline projection. */\nexport const TimelineSourceKind = Schema.Literals([\"action\", \"plugin-sync\", \"relationship\", \"system\"])\n\n/** Decoded Timeline source stream. */\nexport type TimelineSourceKind = typeof TimelineSourceKind.Type\n\n/** Connected provider identity retained when a durable event has provenance. */\nexport const TimelineService = Schema.Literals([\"codecommit\", \"codepipeline\", \"jira\", \"confluence\", \"clockify\"])\n\n/** Decoded connected provider identity. */\nexport type TimelineService = typeof TimelineService.Type\n\n/** Stable cursor for newest-first Timeline pagination. */\nexport const TimelineCursor = Schema.Struct({\n eventKey: Schema.String.check(Schema.isNonEmpty(), Schema.isMaxLength(1_024)),\n occurredAt: UtcTimestamp\n}).annotate({ identifier: \"TimelineCursor\" })\n\n/** Decoded stable Timeline cursor. */\nexport type TimelineCursor = typeof TimelineCursor.Type\n\n/** Default-redacted, human-readable event from one durable workspace source. */\nexport const TimelineEvent = Schema.Struct({\n eventKey: TimelineCursor.fields.eventKey,\n occurredAt: UtcTimestamp,\n actor: Schema.Struct({\n kind: TimelineActorKind,\n label: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(200))\n }),\n sourceKind: TimelineSourceKind,\n service: Schema.NullOr(TimelineService),\n eventType: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(200)),\n title: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(300)),\n href: Schema.NullOr(Schema.String.check(Schema.isNonEmpty(), Schema.isMaxLength(2_048)))\n}).annotate({ identifier: \"TimelineEvent\" })\n\n/** Decoded Timeline event. */\nexport type TimelineEvent = typeof TimelineEvent.Type\n\nconst TimelineRawIdentifier = Schema.String.check(Schema.isNonEmpty(), Schema.isMaxLength(2_048))\n\n/** Owner-visible durable identifiers for one exact Timeline event. */\nexport const TimelineEventIdentifiers = Schema.Struct({\n actorId: Schema.NullOr(TimelineRawIdentifier),\n actionId: Schema.NullOr(TimelineRawIdentifier),\n relationshipId: Schema.NullOr(TimelineRawIdentifier),\n pluginConnectionId: Schema.NullOr(TimelineRawIdentifier),\n releaseId: Schema.NullOr(TimelineRawIdentifier),\n entityId: Schema.NullOr(TimelineRawIdentifier)\n}).annotate({ identifier: \"TimelineEventIdentifiers\" })\n\n/** Decoded owner-visible Timeline identifiers. */\nexport type TimelineEventIdentifiers = typeof TimelineEventIdentifiers.Type\n\n/** Owner-visible reference to the local agent job attributable to an event. */\nexport const TimelineAgentJobDetail = Schema.Struct({\n jobId: TimelineRawIdentifier\n}).annotate({ identifier: \"TimelineAgentJobDetail\" })\n\n/** Decoded Timeline agent-job reference. */\nexport type TimelineAgentJobDetail = typeof TimelineAgentJobDetail.Type\n\n/** Deliberate owner-only expansion of one otherwise redacted Timeline event. */\nexport const TimelineEventDetail = Schema.Struct({\n event: TimelineEvent,\n identifiers: TimelineEventIdentifiers,\n agentJob: Schema.NullOr(TimelineAgentJobDetail)\n}).annotate({ identifier: \"TimelineEventDetail\" })\n\n/** Decoded owner-only Timeline event expansion. */\nexport type TimelineEventDetail = typeof TimelineEventDetail.Type\n\n/** One bounded Timeline page. */\nexport const TimelinePage = Schema.Struct({\n events: Schema.Array(TimelineEvent).check(\n Schema.makeFilter((events) => events.length <= 100, { expected: \"at most 100 Timeline events\" })\n ),\n nextCursor: Schema.NullOr(TimelineCursor)\n}).annotate({ identifier: \"TimelinePage\" })\n\n/** Decoded bounded Timeline page. */\nexport type TimelinePage = typeof TimelinePage.Type\n","import * as Schema from \"effect/Schema\"\n\nimport { AgentProviderIdentifier } from \"./agentProviderIdentifier.js\"\n\nconst boundedInteger = (minimum: number, maximum: number) => Schema.Int.check(Schema.isBetween({ minimum, maximum }))\n\nconst AgentModelIdentifier = Schema.String.check(\n Schema.isTrimmed(),\n Schema.isNonEmpty(),\n Schema.isMaxLength(200),\n Schema.isPattern(/^[A-Za-z0-9][A-Za-z0-9._:/-]*$/u, {\n expected: \"a bounded agent model identifier\"\n })\n)\n\nconst canonicalText = Schema.makeFilter(\n (values: ReadonlyArray<string>) => values.every((value, index) => index === 0 || (values[index - 1] ?? \"\") < value),\n { expected: \"values in canonical ascending order\" }\n)\n\n/** Every independently editable section in the workspace settings document. */\nexport const WorkspaceSettingsSection = Schema.Literals([\n \"agent\",\n \"inference\",\n \"investigation\",\n \"jira\",\n \"pipeline\",\n \"presentation\",\n \"retention\",\n \"synchronization\"\n])\n\n/** Decoded workspace-settings section name. */\nexport type WorkspaceSettingsSection = typeof WorkspaceSettingsSection.Type\n\n/** Canonical set of changed settings sections retained by one immutable audit. */\nexport const WorkspaceSettingsSections = Schema.Array(WorkspaceSettingsSection).check(\n Schema.isUnique(),\n canonicalText,\n Schema.makeFilter((sections) => sections.length <= 8, {\n expected: \"at most eight workspace settings sections\"\n })\n)\n\n/** Decoded canonical changed-section set. */\nexport type WorkspaceSettingsSections = typeof WorkspaceSettingsSections.Type\n\n/** Sections whose changes alter authorization, provider-write, or retention policy. */\nexport const GovernedWorkspaceSettingsSection = Schema.Literals([\n \"agent\",\n \"jira\",\n \"pipeline\",\n \"retention\"\n])\n\n/** Decoded governed workspace-settings section name. */\nexport type GovernedWorkspaceSettingsSection = typeof GovernedWorkspaceSettingsSection.Type\n\n/** Canonical exact set of governed sections acknowledged by one mutation. */\nexport const GovernedWorkspaceSettingsSections = Schema.Array(\n GovernedWorkspaceSettingsSection\n).check(\n Schema.isUnique(),\n canonicalText,\n Schema.makeFilter((sections) => sections.length <= 4, {\n expected: \"at most four governed settings sections\"\n })\n)\n\n/** Decoded canonical governed-section acknowledgement. */\nexport type GovernedWorkspaceSettingsSections = typeof GovernedWorkspaceSettingsSections.Type\n\n/** Version-one server-owned workspace settings. */\nexport const WorkspaceSettingsV1 = Schema.Struct({\n schemaVersion: Schema.Literal(1),\n inference: Schema.Struct({\n enabled: Schema.Boolean,\n minimumConfidencePercent: boundedInteger(0, 100)\n }),\n // The cadence is the shared policy input for the scheduled lifecycle work\n // tracked separately from this concurrency/settings slice. The existing\n // owner-triggered synchronization remains manual until that worker exists.\n synchronization: Schema.Struct({\n cadence: Schema.Literals([\"manual\", \"interval\"]),\n intervalMinutes: Schema.NullOr(boundedInteger(5, 10_080)),\n staleAfterMinutes: boundedInteger(5, 43_200)\n }).check(\n Schema.makeFilter(\n ({ cadence, intervalMinutes }) => cadence === \"manual\" ? intervalMinutes === null : intervalMinutes !== null,\n { expected: \"an interval only for interval synchronization\" }\n )\n ),\n retention: Schema.Struct({\n evidenceDays: boundedInteger(1, 3_650),\n // Final durable-class sweeps are lifecycle operations. These settings\n // record their governed workspace policy without weakening immutable\n // audit tables in the settings persistence boundary.\n contentDays: boundedInteger(1, 3_650),\n auditDays: boundedInteger(1, 3_650),\n agentActivityDays: boundedInteger(1, 365),\n sandboxArtifactDays: boundedInteger(1, 30)\n }).check(\n Schema.makeFilter(\n ({ auditDays, evidenceDays }) => auditDays >= evidenceDays,\n { expected: \"audit retention not shorter than evidence retention\" }\n ),\n Schema.makeFilter(\n ({ agentActivityDays, sandboxArtifactDays }) => agentActivityDays >= sandboxArtifactDays,\n { expected: \"agent activity retention not shorter than sandbox artifact retention\" }\n )\n ),\n investigation: Schema.Struct({\n // Investigation automation is a separate application subsystem; this\n // document owns its concurrency-safe policy, not incident creation.\n mode: Schema.Literals([\"manual\", \"automatic\"]),\n consecutiveFailureThreshold: boundedInteger(1, 20)\n }),\n jira: Schema.Struct({\n commentMode: Schema.Literals([\"manual-only\", \"confirm-before-publish\"]),\n includeControlCenterAttribution: Schema.Boolean\n }),\n pipeline: Schema.Struct({\n retryMode: Schema.Literals([\"manual-only\", \"confirm-before-retry\"]),\n maximumAttempts: boundedInteger(1, 10)\n }),\n agent: Schema.Struct({\n allowedProviders: Schema.Array(AgentProviderIdentifier).check(\n Schema.isUnique(),\n canonicalText,\n Schema.makeFilter((providers) => providers.length <= 16, {\n expected: \"at most sixteen allowed agent providers\"\n })\n ),\n defaultProvider: Schema.NullOr(AgentProviderIdentifier),\n defaultModel: Schema.NullOr(AgentModelIdentifier),\n toolPolicy: Schema.Literals([\"read-only\", \"review-sandbox\"]),\n profilePolicy: Schema.Literals([\"isolated\", \"local-profile\"])\n }).check(\n Schema.makeFilter(\n ({ allowedProviders, defaultProvider }) => defaultProvider === null || allowedProviders.includes(defaultProvider),\n { expected: \"the default agent provider to be allowed\" }\n ),\n Schema.makeFilter(\n ({ defaultModel, defaultProvider }) => defaultModel === null || defaultProvider !== null,\n { expected: \"a default provider when a default model is configured\" }\n )\n ),\n presentation: Schema.Struct({\n density: Schema.Literals([\"comfortable\", \"compact\"]),\n defaultLanding: Schema.Literals([\"overview\", \"active-work\"])\n })\n}).annotate({ identifier: \"WorkspaceSettingsV1\" })\n\n/** Decoded version-one workspace settings. */\nexport type WorkspaceSettingsV1 = typeof WorkspaceSettingsV1.Type\n\n/** Canonical defaults installed for every existing or newly created workspace. */\nexport const DEFAULT_WORKSPACE_SETTINGS = WorkspaceSettingsV1.make({\n schemaVersion: 1,\n inference: {\n enabled: true,\n minimumConfidencePercent: 80\n },\n synchronization: {\n cadence: \"manual\",\n intervalMinutes: null,\n staleAfterMinutes: 1_440\n },\n retention: {\n evidenceDays: 365,\n contentDays: 90,\n auditDays: 365,\n agentActivityDays: 30,\n sandboxArtifactDays: 7\n },\n investigation: {\n mode: \"manual\",\n consecutiveFailureThreshold: 3\n },\n jira: {\n commentMode: \"manual-only\",\n includeControlCenterAttribution: true\n },\n pipeline: {\n retryMode: \"manual-only\",\n maximumAttempts: 1\n },\n agent: {\n allowedProviders: [],\n defaultProvider: null,\n defaultModel: null,\n toolPolicy: \"read-only\",\n profilePolicy: \"isolated\"\n },\n presentation: {\n density: \"comfortable\",\n defaultLanding: \"overview\"\n }\n})\n\nconst agentSettingsEqual = Schema.toEquivalence(WorkspaceSettingsV1.fields.agent)\nconst inferenceSettingsEqual = Schema.toEquivalence(WorkspaceSettingsV1.fields.inference)\nconst investigationSettingsEqual = Schema.toEquivalence(WorkspaceSettingsV1.fields.investigation)\nconst jiraSettingsEqual = Schema.toEquivalence(WorkspaceSettingsV1.fields.jira)\nconst pipelineSettingsEqual = Schema.toEquivalence(WorkspaceSettingsV1.fields.pipeline)\nconst presentationSettingsEqual = Schema.toEquivalence(WorkspaceSettingsV1.fields.presentation)\nconst retentionSettingsEqual = Schema.toEquivalence(WorkspaceSettingsV1.fields.retention)\nconst synchronizationSettingsEqual = Schema.toEquivalence(WorkspaceSettingsV1.fields.synchronization)\n\nconst orderedSections: ReadonlyArray<WorkspaceSettingsSection> = WorkspaceSettingsSection.literals\n\nconst workspaceSettingsSectionChanged = (\n section: WorkspaceSettingsSection,\n current: WorkspaceSettingsV1,\n candidate: WorkspaceSettingsV1\n): boolean => {\n switch (section) {\n case \"agent\":\n return !agentSettingsEqual(current.agent, candidate.agent)\n case \"inference\":\n return !inferenceSettingsEqual(current.inference, candidate.inference)\n case \"investigation\":\n return !investigationSettingsEqual(current.investigation, candidate.investigation)\n case \"jira\":\n return !jiraSettingsEqual(current.jira, candidate.jira)\n case \"pipeline\":\n return !pipelineSettingsEqual(current.pipeline, candidate.pipeline)\n case \"presentation\":\n return !presentationSettingsEqual(current.presentation, candidate.presentation)\n case \"retention\":\n return !retentionSettingsEqual(current.retention, candidate.retention)\n case \"synchronization\":\n return !synchronizationSettingsEqual(current.synchronization, candidate.synchronization)\n }\n}\n\n/** Determine the canonical set of sections changed by a complete settings replacement. */\nexport const changedWorkspaceSettingsSections = (\n current: WorkspaceSettingsV1,\n candidate: WorkspaceSettingsV1\n): ReadonlyArray<WorkspaceSettingsSection> =>\n orderedSections.filter((section) => workspaceSettingsSectionChanged(section, current, candidate))\n\n/** Narrow one settings section to the subset that requires governed acknowledgement. */\nexport const isGovernedWorkspaceSettingsSection = (\n section: WorkspaceSettingsSection\n): section is GovernedWorkspaceSettingsSection => Schema.is(GovernedWorkspaceSettingsSection)(section)\n"],"mappings":";;;;;;;;;;;;AAMA,IAAa,0BAA0B,SAAO,OAAO,MACnD,SAAO,UAAU,GACjB,SAAO,WAAW,GAClB,SAAO,YAAY,GAAG,GACtB,SAAO,UAAU,2BAA2B,EAC1C,UAAU,wCACZ,CAAC,CACH;;;;;ACRA,IAAa,iCAAiC;AAE9C,IAAM,gBAAc,IAAI,YAAY;AAEpC,IAAM,0BAA0B,UAC9B,MAAM,KAAK,KAAK,CAAC,CAAC,OAAO,cAAc;CACrC,MAAM,YAAY,UAAU,YAAY,CAAC;CACzC,OACE,cAAc,KAAA,KAAa,EAAG,aAAa,KAAK,aAAa,MAAU,aAAa,OAAQ,aAAa;AAE7G,CAAC;AAEH,IAAM,yCAAyC,UAC7C,MAAM,KAAK,KAAK,CAAC,CAAC,OAAO,cAAc;CACrC,MAAM,YAAY,UAAU,YAAY,CAAC;CACzC,OACE,cAAc,KAAA,MACb,cAAc,KACb,cAAc,MACd,cAAc,MACd,EAAG,aAAa,KAAK,aAAa,MAAU,aAAa,OAAQ,aAAa;AAEpF,CAAC;AAEH,IAAM,qBAAqB,eAAuB,eAChD,SAAO,OAAO,MACZ,SAAO,UAAU,GACjB,SAAO,WAAW,GAClB,SAAO,YAAY,aAAa,GAChC,SAAO,WAAW,wBAAwB,EAAE,UAAU,kCAAkC,CAAC,CAC3F,CAAC,CAAC,SAAS,EAAE,WAAW,CAAC;AAE3B,IAAM,oBAAoB,eAAuB,eAC/C,SAAO,OAAO,MACZ,SAAO,UAAU,GACjB,SAAO,WAAW,GAClB,SAAO,YAAY,aAAa,GAChC,SAAO,WAAW,uCAAuC,EACvD,UAAU,yCACZ,CAAC,CACH,CAAC,CAAC,SAAS,EAAE,WAAW,CAAC;AAE3B,IAAM,wBAAwB,UAA2B;CACvD,IAAI,MAAM,WAAW,GAAG,KAAK,MAAM,WAAW,IAAI,KAAK,cAAc,KAAK,KAAK,KAAK,MAAM,SAAS,IAAI,GAAG,OAAO;CAEjH,OADiB,MAAM,MAAM,GACtB,CAAA,CAAS,OAAO,YAAY,QAAQ,SAAS,KAAK,YAAY,OAAO,YAAY,IAAI;AAC9F;;AAGA,IAAa,eAAe,kBAAkB,MAAO,cAAc,CAAC,CACjE,MACC,SAAO,WAAW,sBAAsB,EACtC,UAAU,0DACZ,CAAC,CACH,CAAC,CACA,KAAK,SAAO,MAAM,cAAc,CAAC;;AAMpC,IAAa,kBAAkB,SAAO,OAAO;CAC3C,YAAY,SAAO,QAAQ,YAAY;CACvC,YAAY,kBAAkB,KAAK,oBAAoB;CACvD,eAAe,kBAAkB,KAAK,uBAAuB;CAC7D,cAAc,kBAAkB,KAAK,sBAAsB;CAC3D,cAAc,kBAAkB,KAAK,sBAAsB;AAC7D,CAAC,CAAC,CAAC,SAAS,EAAE,YAAY,kBAAkB,CAAC;;AAM7C,IAAa,gCAAgC,SAAO,SAAS;CAC3D;CACA;CACA;CACA;CACA;AACF,CAAC;AAKD,IAAM,qBAAqB,SAAO,OAAO;CACvC,SAAS,kBAAkB,KAAK,2BAA2B;CAC3D,aAAa;CACb,sBAAsB,kBAAkB,KAAK,8BAA8B;CAC3E,oBAAoB,iBAAiB,KAAO,sCAAsC;CAClF,YAAY;CACZ,aAAa,SAAO,MAAM,YAAY,CAAC,CAAC,MAAM,SAAO,YAAY,CAAC,GAAG,SAAO,YAAY,EAAE,GAAG,SAAO,SAAS,CAAC;CAC9G,oBAAoB,iBAAiB,KAAO,sCAAsC;CAClF,gBAAgB,iBAAiB,KAAO,wBAAwB;CAChE,cAAc,iBAAiB,KAAO,sBAAsB;CAC5D,UAAU,iBAAiB,KAAO,4BAA4B;AAChE,CAAC,CAAC,CAAC,MACD,SAAO,YAAY,EAAE,gBAAgB,mBAAmB,mBAAmB,cAAc,EACvF,UAAU,iDACZ,CAAC,CACH;AAEA,IAAM,uBAAuB,SAAO,OAAO;CACzC,SAAS,kBAAkB,KAAK,2BAA2B;CAC3D,aAAa,SAAO,QAAQ,MAAM;CAClC,WAAW,iBAAiB,KAAO,+BAA+B;AACpE,CAAC;;AAGD,IAAa,qBAAqB,SAAO,MAAM,CAAC,oBAAoB,oBAAoB,CAAC;;AAMzF,IAAa,uBAAuB,SAAO,OAAO,MAChD,SAAO,UAAU,0BAA0B,EACzC,UAAU,+BACZ,CAAC,CACH,CAAC,CAAC,KAAK,SAAO,MAAM,sBAAsB,CAAC;;AAM3C,IAAa,0BAA0B,SAAO,SAAS;CACrD;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AAKD,IAAM,eAAe,SAAO,IAAI,MAAM,SAAO,UAAU;CAAE,SAAS;CAAG,SAAS,OAAO;AAAiB,CAAC,CAAC;AAExG,IAAM,mBAAmB,SAAO,OAAO;CACrC,MAAM;CACN,WAAW;CACX,SAAS;AACX,CAAC,CAAC,CAAC,MACD,SAAO,YAAY,EAAE,SAAS,gBAAgB,aAAa,SAAS,EAClE,UAAU,iDACZ,CAAC,CACH;;AAGA,IAAa,6BAA6B,SAAO,OAAO;CACtD,GAAG,iBAAiB;CACpB,SAAS,SAAO,OAAO,MACrB,SAAO,WAAW,GAClB,SAAO,YAAY,GAAK,GACxB,SAAO,WAAW,uCAAuC,EACvD,UAAU,oDACZ,CAAC,CACH;AACF,CAAC,CAAC,CACC,MACC,SAAO,YAAY,EAAE,SAAS,gBAAgB,aAAa,SAAS,EAClE,UAAU,kDACZ,CAAC,CACH,CAAC,CACA,SAAS,EAAE,YAAY,6BAA6B,CAAC;;AAMxD,IAAa,gCAAgC,SAAO,MAAM;CACxD,SAAO,OAAO;EACZ,MAAM,SAAO,QAAQ,MAAM;EAC3B,MAAM;EACN,MAAM;CACR,CAAC;CACD,SAAO,OAAO;EACZ,MAAM,SAAO,QAAQ,MAAM;EAC3B,MAAM;CACR,CAAC;CACD,SAAO,OAAO,EACZ,MAAM,SAAO,QAAQ,SAAS,EAChC,CAAC;AACH,CAAC,CAAC,CAAC,SAAS,EAAE,YAAY,gCAAgC,CAAC;;AAM3D,IAAM,mCAAmC,SAAO,QAAQ,OAAO,CAAC,CAAC,KAC/D,SAAO,2BAA2B,SAAO,QAAQ,OAAO,CAAC,CAC3D;AACA,IAAM,8BAA8B,SAAO,SAAS,CAAC,UAAU,OAAO,CAAC,CAAC,CAAC,KACvE,SAAO,2BAA2B,SAAO,QAAQ,OAAO,CAAC,CAC3D;AAEA,IAAa,2BAA2B,SAAO,MAAM;CACnD,SAAO,OAAO;EACZ,MAAM,SAAO,QAAQ,MAAM;EAC3B,MAAM;EACN,MAAM;EACN,qBAAqB;CACvB,CAAC;CACD,SAAO,OAAO;EACZ,MAAM,SAAO,QAAQ,MAAM;EAC3B,MAAM;EACN,MAAM;EACN,qBAAqB;CACvB,CAAC;CACD,SAAO,OAAO,EACZ,MAAM,SAAO,QAAQ,SAAS,EAChC,CAAC;AACH,CAAC,CAAC,CAAC,SAAS,EAAE,YAAY,2BAA2B,CAAC;;AAMtD,IAAa,0BAA0B,SAAO,OAAO;CACnD,GAAG,iBAAiB;CACpB,OAAO,kBAAkB,KAAK,8BAA8B;AAC9D,CAAC,CAAC,CACC,MACC,SAAO,YAAY,EAAE,SAAS,gBAAgB,aAAa,SAAS,EAClE,UAAU,yDACZ,CAAC,CACH,CAAC,CACA,SAAS,EAAE,YAAY,0BAA0B,CAAC;AAKrD,IAAM,iBAAiB,UAA2B;CAChD,MAAM,QAAQ,MAAM,MAAM,IAAI;CAC9B,OACE,MAAM,MAAM,SAAS,KAAK,WAAW,MAAM,CAAC,KAC5C,MAAM,MAAM,SAAS,KAAK,WAAW,MAAM,CAAC,KAC5C,MAAM,MAAM,SAAS,KAAK,WAAW,KAAK,CAAC;AAE/C;;AAGA,IAAa,sBAAsB,SAAO,OAAO;CAC/C,cAAc,kBAAkB,KAAK,iCAAiC;CACtE,aAAa,iBAAiB,MAAQ,gCAAgC,CAAC,CAAC,MACtE,SAAO,WAAW,eAAe,EAAE,UAAU,yDAAyD,CAAC,CACzG;CACA,aAAa,iBAAiB,KAAO,gCAAgC;AACvE,CAAC,CAAC,CAAC,SAAS,EAAE,YAAY,sBAAsB,CAAC;;AAMjD,IAAa,qBAAqB,SAAO,OAAO;CAC9C,OAAO,SAAO,SAAS;EAAC;EAAO;EAAU;CAAM,CAAC;CAChD,QAAQ,iBAAiB,KAAO,0BAA0B;AAC5D,CAAC,CAAC,CAAC,SAAS,EAAE,YAAY,qBAAqB,CAAC;AAKhD,IAAM,gCAAgC;CACpC,OAAO,kBAAkB,KAAK,yBAAyB;CACvD,UAAU,SAAO,SAAS;EAAC;EAAM;EAAM;EAAM;CAAI,CAAC;CAClD,SAAS,iBAAiB,KAAO,2BAA2B;CAC5D,QAAQ,iBAAiB,KAAO,0BAA0B;CAC1D,UAAU;CACV,gBAAgB,iBAAiB,KAAO,kCAAkC;CAC1E,YAAY;CACZ,kBAAkB,SAAO,MAAM,uBAAuB,CAAC,CAAC,MACtD,SAAO,YAAY,EAAE,GACrB,SAAO,YACJ,cACC,IAAI,IAAI,UAAU,KAAK,EAAE,SAAS,MAAM,gBAAgB,GAAG,KAAK,GAAG,OAAO,SAAS,EAAE,GAAG,OAAO,OAAO,GAAG,CAAC,CAAC,CACxG,SAAS,UAAU,QACxB,EAAE,UAAU,sCAAsC,CACpD,CACF;CACA,YAAY,SAAO,YAAY,kBAAkB;CACjD,aAAa,SAAO,YAAY,mBAAmB;AACrD;;AAGA,IAAa,0BAA0B,SAAO,OAAO;CACnD,GAAG;CACH,QAAQ;AACV,CAAC,CAAC,CACC,MACC,SAAO,YACJ,EAAE,QAAQ,YAAY,eACrB,WAAW,UAAU,UACpB,OAAO,SAAS,aACd,OAAO,SAAS,SAAS,SACvB,OAAO,SAAS,UAAU,OAAO,SAAS,SAAS,aAC1D,EAAE,UAAU,2FAA2F,CACzG,GACA,SAAO,YACJ,EAAE,YAAY,eACb,eAAe,KAAA,KACf,WAAW,gBAAgB,UAC3B,aAAa,QACb,aAAa,MACf,EAAE,UAAU,oEAAoE,CAClF,CACF,CAAC,CACA,SAAS,EAAE,YAAY,0BAA0B,CAAC;;AAMrD,IAAa,qBAAqB,SAAO,OAAO;CAC9C,cAAc;CACd,OAAO;CACP,GAAG;CACH,QAAQ;AACV,CAAC,CAAC,CACC,MACC,SAAO,YACJ,EAAE,QAAQ,YAAY,eACrB,WAAW,UAAU,UACpB,OAAO,SAAS,aACd,OAAO,SAAS,SAAS,SACvB,OAAO,SAAS,UAAU,OAAO,SAAS,SAAS,aAC1D,EAAE,UAAU,2FAA2F,CACzG,GACA,SAAO,YACJ,EAAE,YAAY,eACb,eAAe,KAAA,KACf,WAAW,gBAAgB,UAC3B,aAAa,QACb,aAAa,MACf,EAAE,UAAU,oEAAoE,CAClF,CACF,CAAC,CACA,SAAS,EAAE,YAAY,qBAAqB,CAAC;;AAMhD,IAAa,iBAAiB,SAAO,OAAO,MAC1C,SAAO,UAAU,0BAA0B,EACzC,UAAU,gCACZ,CAAC,CACH,CAAC,CAAC,KAAK,SAAO,MAAM,gBAAgB,CAAC;AAKrC,IAAM,0BAA0B;CAC9B,QAAQ,SAAO,SAAS,CAAC,kBAAkB,cAAc,CAAC;CAC1D,OAAO,kBAAkB,KAAK,mBAAmB;CACjD,aAAa,iBAAiB,KAAO,yBAAyB;CAC9D,YAAY;CACZ,UAAU,SAAO,YAAY,gBAAgB;AAC/C;;AAGA,IAAa,oBAAoB,SAAO,OAAO,uBAAuB,CAAC,CACpE,MACC,SAAO,YACJ,EAAE,YAAY,aAAa,WAAW,oBAAoB,WAAW,UAAU,OAChF,EAAE,UAAU,uDAAuD,CACrE,CACF,CAAC,CACA,SAAS,EAAE,YAAY,oBAAoB,CAAC;;AAM/C,IAAa,eAAe,SAAO,OAAO;CACxC,QAAQ;CACR,GAAG;AACL,CAAC,CAAC,CACC,MACC,SAAO,YACJ,EAAE,YAAY,aAAa,WAAW,oBAAoB,WAAW,UAAU,OAChF,EAAE,UAAU,uDAAuD,CACrE,CACF,CAAC,CACA,SAAS,EAAE,YAAY,eAAe,CAAC;;AAM1C,IAAa,qBAAqB,SAAO,MAAM,CAC7C,SAAO,OAAO,EAAE,QAAQ,SAAO,QAAQ,UAAU,EAAE,CAAC,GACpD,SAAO,OAAO;CACZ,QAAQ,SAAO,QAAQ,oBAAoB;CAC3C,QAAQ,iBAAiB,KAAO,gCAAgC;AAClE,CAAC,CACH,CAAC,CAAC,CAAC,SAAS,EAAE,YAAY,qBAAqB,CAAC;AAKhD,IAAM,wBAAwB,SAAO,YAClC,UAAmB;CAClB,MAAM,aAAa,KAAK,UAAU,KAAK;CACvC,IAAI,eAAe,KAAA,GAAW,OAAO;CACrC,MAAM,6BAA6B,WAAW,QAC5C,iDACA,yBACF;CACA,OAAO,cAAY,OAAO,0BAA0B,CAAC,CAAC,cAAc;AACtE,GACA,EACE,UACE,2BAA2B,+BAA+B,qDAC9D,CACF;;;;;;;AAQA,IAAa,iBAAiB,SAAO,OAAO;CAC1C,eAAe,SAAO,QAAQ,CAAC;CAC/B,SAAS;CACT,YAAY;CACZ,aAAa,SAAO,MAAM,kBAAkB,CAAC,CAAC,MAC5C,SAAO,YACJ,gBAAgB,IAAI,IAAI,YAAY,KAAK,EAAE,mBAAmB,YAAY,CAAC,CAAC,CAAC,SAAS,YAAY,QACnG,EAAE,UAAU,0CAA0C,CACxD,CACF;CACA,OAAO,SAAO,MAAM,YAAY,CAAC,CAAC,MAChC,SAAO,YACJ,UAAU,IAAI,IAAI,MAAM,KAAK,EAAE,aAAa,MAAM,CAAC,CAAC,CAAC,SAAS,MAAM,QACrE,EAAE,UAAU,oCAAoC,CAClD,CACF;AACF,CAAC,CAAC,CACC,MACC,SAAO,YACJ,EAAE,SAAS,kBACV,YAAY,OACT,EAAE,kBAAkB,gBAAgB,KAAA,KAAa,YAAY,iBAAiB,QAAQ,YACzF,GACF,EAAE,UAAU,uDAAuD,CACrE,CACF,CAAC,CACA,MAAM,qBAAqB,CAAC,CAC5B,SAAS,EAAE,YAAY,iBAAiB,CAAC;;AAM5C,IAAa,kBAAkB,SAAO,SAAS;CAC7C;CACA;CACA;CACA;AACF,CAAC;;AAMD,IAAa,yBAAyB,WAA4C;CAChF,IAAI,OAAO,WAAW,WAAW,sBAAsB,OAAO;CAC9D,MAAM,kBAAkB,OAAO,YAAY,QACxC,EAAE,YAAY,UAAU,WAAW,UAAU,eAAe,UAAU,UACzE;CACA,IAAI,gBAAgB,MAAM,EAAE,eAAe,aAAa,QAAQ,aAAa,IAAI,GAC/E,OAAO;CAET,OAAO,gBAAgB,SAAS,IAAI,6BAA6B;AACnE;;;;;ACvdA,IAAa,kDAAkD;;AAG/D,IAAa,8CAA8C;;AAG3D,IAAa,qCAAqC,SAAO,IAAI,MAC3D,SAAO,UAAU;CAAE,SAAS;CAAG,SAAS,OAAO;AAAiB,CAAC,CACnE,CAAC,CAAC,KAAK,SAAO,MAAM,oCAAoC,CAAC;;AAMzD,IAAa,qCAAqC,SAAO,IAAI,MAC3D,SAAO,UAAU;CACf,SAAS;CACT,SAAA;AACF,CAAC,CACH,CAAC,CAAC,KAAK,SAAO,MAAM,oCAAoC,CAAC;;AAMzD,IAAa,mCAAb,cAAsD,SAAO,YAA8C,CAAC,CAC1G,YACA,EAAE,UAAU,SAAS,CACvB,CAAC,CAAC,CAAC;AAEH,IAAM,aAAa,SAAO,OAAO,MAC/B,SAAO,UAAU,GACjB,SAAO,WAAW,GAClB,SAAO,YAAY,GAAG,CACxB;;AAGA,IAAa,gCAAb,cAAmD,SAAO,YAA2C,CAAC,CACpG,SACA;CACE,OAAO;CACP,YAAY;CACZ,OAAO,SAAO,OAAO,UAAU;CAC/B,iBAAiB,SAAO,OAAO,oBAAoB;AACrD,CACF,CAAC,CAAC,CAAC;;AAGH,IAAa,mCAAmC,SAAO,MAAM,CAC3D,kCACA,6BACF,CAAC,CAAC,CAAC,KAAK,SAAO,cAAc,MAAM,CAAC;;AAMpC,IAAa,8BAAb,cAAiD,SAAO,YAAyC,CAAC,CAChG,aACA;CACE,cAAc,gBAAgB,OAAO;CACrC,iBAAiB;CACjB,kBAAkB;AACpB,CACF,CAAC,CAAC,CAAC;;AAGH,IAAa,yCAAb,cACU,SAAO,YAAoD,CAAC,CAClE,yBACA;CACE,cAAc,gBAAgB,OAAO;CACrC,kBAAkB;CAClB,QAAQ,SAAO,SAAS,CACtB,0BACA,0BACF,CAAC;AACH,CACF,CAAC,CACH,CAAC;;AAGD,IAAa,uCAAuC,SAAO,MAAM,CAC/D,6BACA,sCACF,CAAC,CAAC,CAAC,KAAK,SAAO,cAAc,MAAM,CAAC;AAKpC,IAAM,2BAA2B;CAC/B,OAAO,mBAAmB,OAAO;CACjC,UAAU,mBAAmB,OAAO;CACpC,SAAS,mBAAmB,OAAO;CACnC,QAAQ,mBAAmB,OAAO;CAClC,UAAU,mBAAmB,OAAO;CACpC,gBAAgB,mBAAmB,OAAO;CAC1C,YAAY,mBAAmB,OAAO;CACtC,kBAAkB,mBAAmB,OAAO;CAC5C,YAAY,mBAAmB,OAAO;CACtC,aAAa,mBAAmB,OAAO;CACvC,QAAQ,mBAAmB,OAAO;AACpC;;AAGA,IAAa,yBAAyB,SAAO,OAAO,wBAAwB,CAAC,CAC1E,MACC,SAAO,YACJ,EAAE,QAAQ,YAAY,eACrB,WAAW,UAAU,UACpB,OAAO,SAAS,aACd,OAAO,SAAS,SAAS,SACvB,OAAO,SAAS,UAAU,OAAO,SAAS,SAAS,aAC1D,EACE,UAAU,2FACZ,CACF,GACA,SAAO,YACJ,EAAE,YAAY,eACb,eAAe,KAAA,KACf,WAAW,gBAAgB,UAC3B,aAAa,QACb,aAAa,MACf,EACE,UAAU,oEACZ,CACF,CACF,CAAC,CACA,SAAS,EAAE,YAAY,yBAAyB,CAAC;;AAMpD,IAAa,6BAAb,cAAgD,SAAO,MACrD,4BACF,CAAC,CACC,SAAO,OAAO;CACZ,YAAY;CACZ,UAAU;CACV,uBAAuB,SAAO,OAAO,4BAA4B;CACjE,aAAa;CACb,SAAS;CACT,YAAY;CACZ,YAAY;CACZ,QAAQ;CACR,WAAW;AACb,CAAC,CAAC,CAAC,MACD,SAAO,YACJ,EAAE,uBAAuB,eAAgB,aAAa,OAAQ,0BAA0B,OACzF,EACE,UAAU,4DACZ,CACF,GACA,SAAO,YACJ,EAAE,SAAS,YAAY,iBACtB,WAAW,iBAAiB,QAAQ,iBACnC,WAAW,gBAAgB,KAAA,KAC1B,WAAW,YAAY,iBAAiB,QAAQ,eACpD,EACE,UAAU,uEACZ,CACF,CACF,CACF,CAAC,CAAC,CAAC;;AAGH,IAAa,iCAAiC,SAAO,OAAO;CAC1D,SAAS;CACT,WAAW,SAAO,MAAM,0BAA0B,CAAC,CAAC,MAClD,SAAO,YAAA,GAA2D,CACpE;CACA,SAAS,SAAO;CAChB,oBAAoB,SAAO,OAAO,kCAAkC;AACtE,CAAC;AAKD,IAAM,yBAAyB,SAAO,OAAO;CAC3C,UAAU,mBAAmB,OAAO;CACpC,SAAS,mBAAmB,OAAO;CACnC,QAAQ,mBAAmB,OAAO;CAClC,UAAU,mBAAmB,OAAO;CACpC,gBAAgB,mBAAmB,OAAO;CAC1C,YAAY,mBAAmB,OAAO;CACtC,kBAAkB,mBAAmB,OAAO;CAC5C,YAAY,mBAAmB,OAAO;CACtC,aAAa,mBAAmB,OAAO;CACvC,QAAQ,mBAAmB,OAAO;AACpC,CAAC;AAED,IAAM,uBAAuB,SAAO,WAAW,sBAAsB;;AAGrE,IAAa,iCACX,MACA,UAEA,KAAK,UAAU,qBAAqB,IAAI,CAAC,MACvC,KAAK,UAAU,qBAAqB,KAAK,CAAC;;;AC1M9C,IAAM,oBAAoB,SAAO,IAAI,MAAM,SAAO,cAAc,CAAC,CAAC;AAClE,IAAM,oBAAoB,SAAO,OAAO,MACtC,SAAO,UAAU,GACjB,SAAO,YAAY,CAAC,GACpB,SAAO,YAAY,GAAG,CACxB;;AAGA,IAAa,qBAAqB,SAAO,SAAS;CAChD;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AAKD,IAAM,sBAAsB,SAAO,aAAa,WAAW,EACzD,WAAW,aACb,CAAC;AAED,IAAM,uBAAuB,SAAO,aAAa,YAAY;CAC3D,WAAW;CACX,cAAc;CACd,SAAS,SAAO,OAAO,YAAY;CACnC,aAAa;AACf,CAAC,CAAC,CAAC,MACD,SAAO,YACJ,EAAE,WAAW,cAAc,YAAY,QAAQ,WAAS,MAAM,WAAW,OAAO,KAAK,GACtF,EAAE,UAAU,uDAAuD,CACrE,CACF;AAEA,IAAM,0BAA0B,SAAO,aAAa,eAAe;CACjE,WAAW;CACX,cAAc;CACd,SAAS,SAAO,OAAO,YAAY;CACnC,aAAa;AACf,CAAC,CAAC,CAAC,MACD,SAAO,YACJ,EAAE,WAAW,cAAc,YAAY,QAAQ,WAAS,MAAM,WAAW,OAAO,KAAK,GACtF,EAAE,UAAU,uDAAuD,CACrE,CACF;AAEA,IAAM,uBAAuB,SAAO,aAAa,YAAY,EAC3D,WAAW,aACb,CAAC;;AAGD,IAAa,eAAe,SAAO,MAAM;CACvC;CACA;CACA;CACA;AACF,CAAC,CAAC,CAAC,KAAK,SAAO,cAAc,MAAM,CAAC;AAKpC,IAAM,qBAAqB,SAAO,MAAM,CAAC,qBAAqB,oBAAoB,CAAC;AAEnF,IAAM,qBAAqB,SAAO,aAAa,YAAY,EACzD,gBAAgB,eAClB,CAAC;AAED,IAAM,mBAAmB,SAAO,aAAa,SAAS;CACpD,UAAU;CACV,gBAAgB;AAClB,CAAC,CAAC,CAAC,MACD,SAAO,YACJ,EAAE,UAAU,qBAAqB,WAAS,MAAM,eAAe,gBAAgB,QAAQ,KAAK,GAC7F,EAAE,UAAU,0DAA0D,CACxE,CACF;AAEA,IAAM,oBAAoB,SAAO,aAAa,QAAQ,EACpD,oBAAoB,mBACtB,CAAC;AAED,IAAM,sBAAsB,kBAAgC,iBACzD,WAAS,cAAc,WAAW,IAAI,WAAS,cAAc,gBAAgB,KAAK;AAErF,IAAM,sBAAsB,EAG1B,aAAa,SAAO,SAAS,YAAY,EAC3C;AAEA,IAAM,4BACJ,aACA,iBACiB,eAAe,aAAa;AAE/C,IAAM,mBAAmB,SAAO,aAAa,WAAW;CACtD,GAAG;CACH,cAAc;CACd,YAAY,SAAO,MAAM,CAAC,oBAAoB,gBAAgB,CAAC;CAC/D,kBAAkB;CAClB,mBAAmB;CACnB,gBAAgB;AAClB,CAAC,CAAC,CAAC,MACD,SAAO,YACJ,EAAE,aAAa,cAAc,YAAY,kBAAkB,mBAAmB,qBAC7E,WAAS,YAAY,kBAAkB,WAAW,eAAe,cAAc,KAC/E,WAAS,MAAM,WAAW,eAAe,gBAAgB,cAAc,KAAK,MAC3E,WAAW,SAAS,cAAc,WAAS,MAAM,WAAW,UAAU,cAAc,KAAK,MAC1F,WAAS,MAAM,gBAAgB,aAAa,SAAS,KAAK,MACzD,gBAAgB,KAAA,KAAa,WAAS,MAAM,aAAa,WAAW,WAAW,KAAK,MACrF,mBAAmB,kBAAkB,yBAAyB,aAAa,YAAY,CAAC,KAAK,KAC7F,mBAAmB,kBAAkB,yBAAyB,aAAa,YAAY,CAAC,IAAI,mBAC9F,EACE,UAAU,kFACZ,CACF,CACF;AAEA,IAAM,iBAAiB,SAAO,aAAa,SAAS;CAClD,GAAG;CACH,cAAc;CACd,YAAY;CACZ,kBAAkB;CAClB,mBAAmB;CACnB,gBAAgB;AAClB,CAAC,CAAC,CAAC,MACD,SAAO,YACJ,EAAE,aAAa,cAAc,YAAY,kBAAkB,mBAAmB,qBAC7E,WAAS,YAAY,kBAAkB,WAAW,eAAe,cAAc,KAC/E,WAAS,MAAM,kBAAkB,cAAc,KAAK,KACpD,WAAS,MAAM,WAAW,UAAU,cAAc,KAAK,KACvD,WAAS,MAAM,gBAAgB,aAAa,SAAS,KAAK,MACzD,gBAAgB,KAAA,KAAa,WAAS,MAAM,aAAa,WAAW,WAAW,KAAK,MACrF,mBAAmB,kBAAkB,yBAAyB,aAAa,YAAY,CAAC,KAAK,mBAC/F,EACE,UAAU,sEACZ,CACF,CACF;AAEA,IAAM,mBAAmB,SAAO,aAAa,WAAW;CACtD,cAAc;CACd,YAAY;CACZ,kBAAkB,SAAO;CACzB,mBAAmB;CACnB,gBAAgB;AAClB,CAAC;AAED,IAAM,uBAAuB,SAAO,aAAa,eAAe;CAC9D,cAAc,SAAO,MAAM,CAAC,yBAAyB,oBAAoB,CAAC;CAC1E,YAAY;CACZ,kBAAkB,SAAO;CACzB,mBAAmB;CACnB,gBAAgB,SAAO;AACzB,CAAC;;;;;AAMD,IAAa,YAAY,SAAO,MAAM;CACpC;CACA;CACA;CACA;AACF,CAAC,CAAC,CAAC,KAAK,SAAO,cAAc,MAAM,CAAC;;AAMpC,IAAa,sBAAsB,SAAO,GAAG,sBAAsB,CAAC,CAAC,WACnE,WACA,aACiD;CACjD,IAAI,UAAU,SAAS,aAAa,UAAU,SAAS,SAAS,OAAO;CACvE,MAAM,UAAU,UAAU,SAAS,WACjC,mBAAmB,UAAU,kBAAkB,WAAW,KAAK,UAAU;CAC3E,MAAM,aAAa,UACf,UAAU,WAAW,SAAS,UAC5B,UAAU,aACV;EACA,MAAM;EACN,UAAU,UAAU;EACpB,gBAAgB,UAAU,WAAW;CACvC,IACA,UAAU;CACd,OAAO,OAAO,SAAO,oBAAoB,SAAO,OAAO,SAAS,CAAC,CAAC,CAAC;EACjE,GAAG;EACH,MAAM,UAAU,UAAU;EAC1B;EACA;CACF,CAAC;AACH,CAAC;;;;ACxLD,IAAa,wBAAwB,MAAc,UAA0B,OAAO,QAAQ,KAAK,OAAO,QAAQ,IAAI;;AAGpH,IAAa,yBACX,WACiB,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,oBAAoB;;AAGxE,IAAa,iCACX,gBACY;CACZ,MAAM,cAAc,YAAY,QAAQ,EAAE,WAAW,SAAS,YAAY;CAC1E,OAAO,YAAY,MAAM,EAAE,MAAM,kBAAkB,SAAS,eAAe,gBAAgB,UAAU,KACnG,YAAY,MAAM,EAAE,MAAM,kBACxB,gBAAgB,cAAc;EAAC;EAAgB;EAAY;EAAS;CAAe,CAAC,CAAC,SAAS,IAAI,CACpG,KACA,YAAY,WAAW,KACvB,YAAY,EAAE,EAAE,gBAAgB;AACpC;;AAGA,IAAa,4BACX,aACA,iBAEA,8BAA8B,WAAW,KACzC,aAAa,MAAM,EAAE,YAAY,MAAM,SAAS,YAAY;;AAG9D,IAAa,8BAA8B,aACzC,SAAS,cAAc,aACvB,SAAS,aAAa,YACrB,SAAS,OAAO,SAAS,WACxB,SAAS,OAAO,WAAW,aAC3B,SAAS,OAAO,WAAW;;AAG/B,IAAa,iCACX,gBACY,YAAY,SAAS,SAAS,KAAK,YAAY,SAAS,MAAM,0BAA0B;;AAGtG,IAAa,kCACX,gBACY;CACZ,QAAQ,YAAY,MAAM,MAA1B;EACE,KAAK,gBACH,OAAO,YAAY,MAAM,WAAW,cAAc,YAAY,MAAM,WAAW;EACjF,KAAK,YACH,OAAO,YAAY,MAAM,WAAW;EACtC,KAAK,SACH,OAAO,YAAY,MAAM,WAAW;EACtC,KAAK,aACH,OAAO,YAAY,MAAM,WAAW;EACtC,KAAK,iBACH,OAAO,YAAY,MAAM,WAAW;EACtC,KAAK,cACH,OAAO,YAAY,MAAM,WAAW;CACxC;AACF;;AAGA,IAAa,wBACX,gBACgC;CAChC,QAAQ,YAAY,MAAM,MAA1B;EACE,KAAK,gBACH,OAAO,YAAY,MAAM,WAAW,aAAa,0BAA0B;EAC7E,KAAK,YACH,OAAO,YAAY,MAAM,WAAW,aAAa,sBAAsB;EACzE,KAAK,SACH,OAAO,YAAY,MAAM,WAAW,WAChC,iBACA,YAAY,MAAM,WAAW,cAC7B,oBACA;EACN,KAAK,aACH,OAAO,YAAY,MAAM,WAAW,WAChC,qBACA,YAAY,MAAM,WAAW,YAC7B,sBACA;EACN,KAAK,iBACH,OAAO;EACT,KAAK,cACH,OAAO,YAAY,MAAM,WAAW,WAChC,sBACA,YAAY,MAAM,WAAW,gBAC7B,2BACA;CACR;AACF;;AAGA,IAAa,4BACX,gBACgC;CAChC,QAAQ,YAAY,MAAM,MAA1B;EACE,KAAK,gBACH,QAAQ,YAAY,MAAM,QAA1B;GACE,KAAK,WACH,OAAO;GACT,KAAK;GACL,KAAK,YACH,OAAO;GACT,KAAK,cACH,OAAO;GACT,SACE,OAAO;EACX;EACF,KAAK,YACH,QAAQ,YAAY,MAAM,QAA1B;GACE,KAAK,WACH,OAAO;GACT,KAAK,WACH,OAAO;GACT,KAAK,WACH,OAAO;GACT,SACE,OAAO;EACX;EACF,KAAK,SACH,OAAO,YAAY,MAAM,WAAW,YAChC,kBACA,YAAY,MAAM,WAAW,YAAY,YAAY,MAAM,WAAW,YACtE,kBACA;EACN,KAAK,aACH,OAAO,YAAY,MAAM,WAAW,YAChC,sBACA,YAAY,MAAM,WAAW,YAAY,YAAY,MAAM,WAAW,YACtE,sBACA;EACN,KAAK,iBACH,QAAQ,YAAY,MAAM,QAA1B;GACE,KAAK,WACH,OAAO;GACT,KAAK,SACH,OAAO;GACT,KAAK,SACH,OAAO;GACT,KAAK,cACH,OAAO;GACT,SACE,OAAO;EACX;EACF,KAAK,cACH,OAAO;CACX;AACF;;AAGA,IAAa,0CACX,YACA,gBAEA,WAAW,gBAAgB,cAC3B,gBAAgB,SACd,YAAY,MAAM,SAAS,gBAC1B,YAAY,MAAM,WAAW,YAAY,YAAY,MAAM,WAAW,cACtE,YAAY,MAAM,SAAS,YACzB,YAAY,MAAM,WAAW,YAAY,YAAY,MAAM,WAAW,eAC3E,8BAA8B,WAAW;;AAG3C,IAAa,uBACX,YACA,gBACwB;CACxB,IAAI,gBAAgB,MAAM,OAAO,WAAW,gBAAgB,aAAa,QAAQ;CACjF,IAAI,qBAAqB,WAAW,MAAM,MACxC,OAAO,WAAW,gBAAgB,cAAc,WAAW,SAAS,eAChE,WACA;CAEN,IAAI,+BAA+B,WAAW,KAAK,8BAA8B,WAAW,GAC1F,OAAO;CAET,MAAM,OAAO,yBAAyB,WAAW;CACjD,IAAI,SAAS,sBAAsB,SAAS,mBAAmB,SAAS,qBACtE,OAAO;CAET,OAAO,WAAW,gBAAgB,aAAa,QAAQ;AACzD;AAEA,IAAM,eAAe,eAA8D;CACjF,QAAQ,WAAW,MAAnB;EACE,KAAK,gBACH,OAAO;EACT,KAAK,YACH,OAAO;EACT,KAAK,SACH,OAAO;EACT,KAAK,aACH,OAAO;EACT,KAAK,iBACH,OAAO;EACT,KAAK,cACH,OAAO;CACX;AACF;AAEA,IAAM,0BACJ,gBAEA,gBAAgB,OACZ,CAAC,IACD,sBAAsB,YAAY,SAAS,KAAK,EAAE,iBAAiB,UAAU,CAAC;AAEpF,IAAM,eACJ,MACA,YACA,iBACsB;CACtB;CACA,SAAS;EAAE,MAAM;EAAQ,QAAQ,WAAW;CAAO;CACnD,aAAa,uBAAuB,WAAW;AACjD;AAEA,IAAM,mBACJ,UACA,eAC4B;CAC5B,MAAM,OAAoC,SAAS,aAAa,YAC5D,qBACA,SAAS,cAAc,UACvB,iBACA,SAAS,cAAc,YACvB,mBACA,SAAS,cAAc,iBACpB,SAAS,OAAO,SAAS,aACvB,SAAS,OAAO,WAAW,iBAAiB,SAAS,OAAO,WAAW,cAC5E,uBACA,SAAS,OAAO,SAAS,YAAY,SAAS,OAAO,WAAW,aAChE,oBACA;CACJ,IAAI,SAAS,MAAM,OAAO;CAC1B,OAAO;EACL;EACA,SAAS,SAAS,OAAO,SAAS,WAC9B;GAAE,MAAM;GAAU,oBAAoB,SAAS,OAAO;EAAmB,IACzE;GAAE,MAAM;GAAQ,QAAQ,WAAW;EAAO;EAC9C,aAAa,CAAC,SAAS,UAAU;CACnC;AACF;;AAGA,IAAa,uBAAuB,YAAsC;CACxE,MAAM,UAAU,QAAQ,QAAQ,SAAS,SACrC,QAAQ,QAAQ,SAChB,QAAQ,QAAQ,SAAS,WACzB,QAAQ,QAAQ,qBAChB;CACJ,OAAO,GAAG,QAAQ,KAAK,GAAG,QAAQ,QAAQ,KAAK,GAAG,QAAQ,GAAG,QAAQ,YAAY,KAAK,GAAG;AAC3F;AAEA,IAAM,sBACJ,aAC4B;CAC5B,MAAM,QAAQ,IAAI,IAAI,SAAS,KAAK,YAAY,CAAC,oBAAoB,OAAO,GAAG,OAAO,CAAC,CAAC;CACxF,OAAO,MAAM,KAAK,MAAM,OAAO,CAAC,CAAC,CAAC,MAAM,MAAM,UAC5C,qBAAqB,oBAAoB,IAAI,GAAG,oBAAoB,KAAK,CAAC,CAC5E;AACF;;AAGA,IAAa,2BACX,OACA,aAKG;CACH,MAAM,WAAoC,CAAC;CAC3C,MAAM,WAAoC,CAAC;CAC3C,MAAM,OAAgC,WAClC,CAAC,IACD,CAAC;EAAE,MAAM;EAAoB,SAAS,EAAE,MAAM,YAAY;EAAG,aAAa,CAAC;CAAE,CAAC;CAElF,KAAK,MAAM,EAAE,YAAY,iBAAiB,OAAO;EAC/C,IAAI,gBAAgB,MAAM;GACxB,IAAI,WAAW,gBAAgB,YAC7B,KAAK,KAAK,YAAY,YAAY,UAAU,GAAG,YAAY,WAAW,CAAC;GAEzE;EACF;EAEA,MAAM,UAAU,qBAAqB,WAAW;EAChD,IAAI,YAAY,MAAM;GACpB,MAAM,UAAU,YAAY,SAAS,YAAY,WAAW;GAC5D,IAAI,WAAW,gBAAgB,cAAc,WAAW,SAAS,cAC/D,SAAS,KAAK,OAAO;QAErB,SAAS,KAAK,OAAO;EAEzB,OAAO,IAAI,CAAC,+BAA+B,WAAW,KAAK,CAAC,8BAA8B,WAAW,GAAG;GACtG,MAAM,OAAO,yBAAyB,WAAW;GACjD,IAAI,SAAS,MAAM;IACjB,MAAM,UAAU,YAAY,MAAM,YAAY,WAAW;IACzD,MAAM,SAAS,SAAS,sBAAsB,SAAS,mBAAmB,SAAS;IACnF,IAAI,UAAU,WAAW,gBAAgB,YAAY,SAAS,KAAK,OAAO;IAC1E,IAAI,CAAC,UAAU,WAAW,gBAAgB,YAAY,KAAK,KAAK,OAAO;GACzE;EACF;EAEA,KAAK,MAAM,YAAY,YAAY,UAAU;GAC3C,MAAM,UAAU,gBAAgB,UAAU,UAAU;GACpD,IAAI,YAAY,MAAM;GACtB,SAAS,KAAK,OAAO;GACrB,IACE,WAAW,gBAAgB,cAC3B,QAAQ,SAAS,qBACjB,YAAY,MACZ,KAAK,KAAK,OAAO;EACrB;CACF;CAEA,OAAO;EACL,UAAU,mBAAmB,QAAQ;EACrC,UAAU,mBAAmB,QAAQ;EACrC,MAAM,mBAAmB,IAAI;CAC/B;AACF;AAEA,IAAM,gBAAgB;CAAE,SAAS;CAAG,OAAO;CAAG,SAAS;CAAG,aAAa;AAAE;AACzE,IAAM,aAAa;CAAE,SAAS;CAAG,UAAU;CAAG,aAAa;CAAG,UAAU;AAAE;;AAG1E,IAAa,kCACX,UACkC;CAClC,MAAM,0BAAU,IAAI,IAA2D;CAC/E,KAAK,MAAM,YAAY,MAAM,SAAS,EAAE,kBAAkB,aAAa,YAAY,CAAC,CAAC,GAAG;EACtF,IAAI,SAAS,OAAO,SAAS,UAAU;EACvC,MAAM,UAAU,QAAQ,IAAI,SAAS,OAAO,kBAAkB,KAAK,CAAC;EACpE,QAAQ,KAAK,QAAQ;EACrB,QAAQ,IAAI,SAAS,OAAO,oBAAoB,OAAO;CACzD;CACA,OAAO,MAAM,KAAK,QAAQ,QAAQ,CAAC,CAAC,CACjC,KAAK,CAAC,oBAAoB,eAAuC;EAChE;EACA,WAAW,SAAS,QACjB,OAAO,SACN,cAAc,KAAK,aAAa,cAAc,SAC1C,KAAK,YACL,OACN,SACF;EACA,QAAQ,SAAS,QAA0C,OAAO,SAAS;GACzE,MAAM,SAAS,KAAK,OAAO,SAAS,WAAW,KAAK,OAAO,SAAS;GACpE,OAAO,WAAW,UAAU,WAAW,SAAS,SAAS;EAC3D,GAAG,SAAS;EACZ,aAAa,sBAAsB,SAAS,KAAK,EAAE,iBAAiB,UAAU,CAAC;CACjF,EAAE,CAAC,CACF,MAAM,MAAM,UAAU,qBAAqB,KAAK,oBAAoB,MAAM,kBAAkB,CAAC;AAClG;;AAGA,IAAa,mCACX,UAEA,MACG,SAAS,EAAE,kBAAkB,aAAa,YAAY,CAAC,CAAC,CAAC,CACzD,SAAS,EAAE,mBAAmB,iBAAiB,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAC1E,QACE,UAAU,aAAa,aAAa,QAAQ,WAAS,MAAM,UAAU,QAAQ,IAAI,IAAI,WAAW,UACjG,IACF;AAEJ,IAAM,uBACJ,gBAC6B;CAC7B,IAAI,aAAa,MAAM,SAAS,eAAe,aAAa,MAAM,SAAS,cACzE,OAAO,YAAY,MAAM;CAE3B,OAAO;AACT;AAEA,IAAM,iBAAiB,UACrB,sBAAsB,MAAM,SAAS,EAAE,kBAAkB,WAAW,CAAC;;AAGvE,IAAa,yBACX,UACoB;CACpB,MAAM,QAAQ,MAAM,QAAQ,EAAE,iBAAiB,WAAW,SAAS,WAAW;CAC9E,MAAM,SAAS,MAAM,QAAQ,EAAE,iBAC7B;EAAC;EAAgB;EAAY;EAAS;CAAe,CAAC,CAAC,SAAS,WAAW,IAAI,CACjF;CACA,MAAM,aAAa,MAAM,QAAQ,EAAE,iBAAiB,WAAW,SAAS,YAAY;CACpF,MAAM,aAAa,WAAW,MAAM,EAAE,kBAAkB,aAAa,MAAM,SAAS,YAAY,CAAC,EAAE;CACnG,MAAM,gBAAgB,MAAM,QAAQ,EAAE,iBAAiB,WAAW,gBAAgB,UAAU;CAC5F,MAAM,iBAAiB,OAAO,QAAQ,EAAE,iBAAiB,WAAW,gBAAgB,UAAU;CAC9F,MAAM,cAAc,cAAc,QAAQ,EAAE,kBAC1C,gBAAgB,QAChB,YAAY,MAAM,SAAS,gBAC1B,YAAY,MAAM,WAAW,YAAY,YAAY,MAAM,WAAW,cACvE,8BAA8B,WAAW,CAC3C;CACA,MAAM,eAAe,YAAY,MAAM,EAAE,kBACvC,aAAa,MAAM,SAAS,eAAe,YAAY,MAAM,WAAW,SAC1E;CACA,MAAM,cAAc,YAAY,MAAM,EAAE,kBACtC,aAAa,MAAM,SAAS,eAAe,YAAY,MAAM,WAAW,QAC1E;CACA,MAAM,eAAe,eAAe,MAAM,EAAE,kBAC1C,gBAAgB,SACd,YAAY,MAAM,SAAS,YAC1B,YAAY,MAAM,WAAW,YAAY,YAAY,MAAM,WAAW,cACtE,YAAY,MAAM,SAAS,cAAc,YAAY,MAAM,WAAW,cACzE,8BAA8B,WAAW,CAC3C;CAEA,MAAM,aAAgD,MAAM,MAAM,EAAE,aAAa,WAAW,QAAQ,IAChG,WACA,iBAAiB,KAAA,IACjB,YACA,gBAAgB,KAAA,IAChB,WACA,cAAc,OAAO,EAAE,aAAa,WAAW,UAAU,IACzD,cACA,MAAM,MAAM,EAAE,kBAAkB,gBAAgB,IAAI,IACpD,SACA;CAEJ,MAAM,cAAkD,OAAO,MAAM,EAAE,aAAa,WAAW,QAAQ,IACnG,WACA,iBAAiB,KAAA,IACjB,YACA,eAAe,OAAO,EAAE,aAAa,WAAW,UAAU,IAC1D,WACA,OAAO,MAAM,EAAE,kBAAkB,gBAAgB,IAAI,IACrD,SACA;CAEJ,IAAI,kBAA0D;CAC9D,IAAI,YAAY,MAAM,SAAS,cAAc;EAC3C,MAAM,UAAU,8BAA8B,UAAU;EACxD,QAAQ,WAAW,MAAM,QAAzB;GACE,KAAK;IACH,kBAAkB;IAClB;GACF,KAAK;IACH,kBAAkB;IAClB;GACF,KAAK;IACH,kBAAkB,UAAU,cAAc;IAC1C;GACF,KAAK;IACH,kBAAkB,UAAU,YAAY;IACxC;GACF,KAAK;IACH,kBAAkB,UAAU,cAAc;IAC1C;GACF,KAAK;IACH,kBAAkB,UAAU,gBAAgB;IAC5C;EACJ;CACF;CAEA,OAAO;EACL,OAAO;GACL,OAAO;GACP,SAAS,sBAAsB,MAAM,KAAK,EAAE,iBAAiB,WAAW,MAAM,CAAC;GAC/E,aAAa,cAAc,KAAK;GAChC,UAAU,oBACR,cAAc,eAAe,aAAa,eAAe,KAAA,CAC3D;EACF;EACA,QAAQ;GACN,OAAO;GACP,SAAS,sBAAsB,OAAO,KAAK,EAAE,iBAAiB,WAAW,MAAM,CAAC;GAChF,aAAa,cAAc,MAAM;GACjC,UAAU;EACZ;EACA,YAAY;GACV,OAAO;GACP,SAAS,sBAAsB,WAAW,KAAK,EAAE,iBAAiB,WAAW,MAAM,CAAC;GACpF,aAAa,cAAc,UAAU;GACrC,UAAU,oBAAoB,cAAc,KAAA,CAAS;EACvD;CACF;AACF;;AAGA,IAAa,qCAAqC,UAK1B;CACtB,IAAI,MAAM,SAAS,SAAS,GAAG,OAAO;CACtC,IAAI,MAAM,OAAO,WAAW,UAAU,aAAa,OAAO;CAC1D,IACE,MAAM,MAAM,MAAM,EAAE,YAAY,kBAAkB,uCAAuC,YAAY,WAAW,CAAC,GACjH,OAAO;CACT,IACE,MAAM,KAAK,SAAS,KACpB,MAAM,OAAO,MAAM,UAAU,UAC7B,MAAM,OAAO,OAAO,UAAU,UAC9B,MAAM,OAAO,WAAW,UAAU,UAClC,MAAM,MAAM,MAAM,EAAE,YAAY,aAAa,WAAW,gBAAgB,cAAc,WAAW,UAAU,GAC3G,OAAO;CACT,OAAO,MAAM,OAAO,WAAW,UAAU,cAAc,YAAY;AACrE;;AAcA,IAAa,kCACX,kBAKI;CACJ,UAAU,mBAAmB,aAAa,SAAS,EAAE,eAAe,QAAQ,CAAC;CAC7E,UAAU,mBAAmB,aAAa,SAAS,EAAE,eAAe,QAAQ,CAAC;CAC7E,MAAM,mBAAmB,aAAa,SAAS,EAAE,WAAW,IAAI,CAAC;AACnE;;AAGA,IAAa,yCACX,iBACkC;CAClC,MAAM,0BAAU,IAAI,IAAuD;CAC3E,KAAK,MAAM,WAAW,aAAa,SAAS,EAAE,sBAAsB,eAAe,GAAG;EACpF,MAAM,UAAU,QAAQ,IAAI,QAAQ,kBAAkB,KAAK,CAAC;EAC5D,QAAQ,KAAK,OAAO;EACpB,QAAQ,IAAI,QAAQ,oBAAoB,OAAO;CACjD;CACA,OAAO,MAAM,KAAK,QAAQ,QAAQ,CAAC,CAAC,CACjC,KAAK,CAAC,oBAAoB,gBAAwC;EACjE;EACA,WAAW,UAAU,QAClB,OAAO,YAAY,cAAc,QAAQ,aAAa,cAAc,SAAS,QAAQ,YAAY,OAClG,SACF;EACA,QAAQ,UAAU,QACf,OAAO,YAAY,WAAW,QAAQ,UAAU,WAAW,SAAS,QAAQ,SAAS,OACtF,SACF;EACA,aAAa,sBAAsB,UAAU,SAAS,EAAE,kBAAkB,WAAW,CAAC;CACxF,EAAE,CAAC,CACF,MAAM,MAAM,UAAU,qBAAqB,KAAK,oBAAoB,MAAM,kBAAkB,CAAC;AAClG;;AAGA,IAAa,0CACX,iBAEA,aAAa,QAA6B,UAAU,EAAE,uBAAuB;CAC3E,IAAI,qBAAqB,MAAM,OAAO;CACtC,OAAO,aAAa,QAAQ,WAAS,MAAM,kBAAkB,QAAQ,IAAI,IAAI,mBAAmB;AAClG,GAAG,IAAI;AAET,IAAM,wBACJ,cACA,UAEA,aACG,MAAM,CAAC,CACP,MAAM,MAAM,UAAU,qBAAqB,KAAK,eAAe,MAAM,aAAa,CAAC,CAAC,CACpF,MAAM,gBAAgB,YAAY,OAAO,MAAM,CAAC,aAAa,IAAI,CAAC,EAAE,OAAO,MAAM,CAAC,YAAY;;AAGnG,IAAa,gCACX,iBACoB;CACpB,MAAM,cAAc,aAAa,KAAK,EAAE,aAAa,OAAO,MAAM,KAAK;CACvE,MAAM,eAAe,aAAa,KAAK,EAAE,aAAa,OAAO,OAAO,KAAK;CACzE,MAAM,mBAAmB,aAAa,KAAK,EAAE,aAAa,OAAO,WAAW,KAAK;CACjF,MAAM,aAAgD,YAAY,SAAS,QAAQ,IAC/E,WACA,YAAY,SAAS,SAAS,IAC9B,YACA,YAAY,SAAS,QAAQ,IAC7B,WACA,YAAY,OAAO,UAAU,UAAU,WAAW,IAClD,cACA,YAAY,OAAO,UAAU,UAAU,aAAa,IACpD,gBACA;CACJ,MAAM,cAAkD,aAAa,SAAS,QAAQ,IAClF,WACA,aAAa,SAAS,SAAS,IAC/B,YACA,aAAa,OAAO,UAAU,UAAU,QAAQ,IAChD,WACA,aAAa,OAAO,UAAU,UAAU,aAAa,IACrD,gBACA;CACJ,IAAI,kBAA0D;CAC9D,IAAI,iBAAiB,SAAS,QAAQ,GAAG,kBAAkB;MACtD,IAAI,iBAAiB,SAAS,aAAa,GAAG,kBAAkB;MAChE,IAAI,iBAAiB,SAAS,WAAW,GAAG,kBAAkB;MAC9D,IAAI,iBAAiB,SAAS,MAAM,GAAG,kBAAkB;MACzD,IAAI,iBAAiB,OAAO,UAAU,UAAU,WAAW,GAAG,kBAAkB;MAChF,IAAI,iBAAiB,MAAM,UAAU,UAAU,aAAa,UAAU,WAAW,GACpF,kBAAkB;CAGpB,OAAO;EACL,OAAO;GACL,OAAO;GACP,SAAS,sBAAsB,aAAa,SAAS,EAAE,aAAa,OAAO,MAAM,OAAO,CAAC;GACzF,aAAa,sBAAsB,aAAa,SAAS,EAAE,aAAa,OAAO,MAAM,WAAW,CAAC;GACjG,UAAU,qBAAqB,cAAc,OAAO;EACtD;EACA,QAAQ;GACN,OAAO;GACP,SAAS,sBAAsB,aAAa,SAAS,EAAE,aAAa,OAAO,OAAO,OAAO,CAAC;GAC1F,aAAa,sBAAsB,aAAa,SAAS,EAAE,aAAa,OAAO,OAAO,WAAW,CAAC;GAClG,UAAU;EACZ;EACA,YAAY;GACV,OAAO;GACP,SAAS,sBAAsB,aAAa,SAAS,EAAE,aAAa,OAAO,WAAW,OAAO,CAAC;GAC9F,aAAa,sBAAsB,aAAa,SAAS,EAAE,aAAa,OAAO,WAAW,WAAW,CAAC;GACtG,UAAU,qBAAqB,cAAc,YAAY;EAC3D;CACF;AACF;;AAGA,IAAa,iCACX,iBACqB;CACrB,MAAM,WAAW,aAAa,KAAK,EAAE,cAAc,OAAO;CAC1D,IAAI,SAAS,SAAS,SAAS,GAAG,OAAO;CACzC,IAAI,SAAS,SAAS,WAAW,GAAG,OAAO;CAC3C,IAAI,SAAS,SAAS,UAAU,GAAG,OAAO;CAC1C,IAAI,SAAS,SAAS,MAAM,GAAG,OAAO;CACtC,OAAO,SAAS,OAAO,YAAY,YAAY,SAAS,IAAI,YAAY;AAC1E;AAEA,IAAM,mBACJ,MACA,UACY,KAAK,WAAW,MAAM,UAAU,KAAK,OAAO,OAAO,UAAU,UAAU,MAAM,MAAM;AAEjG,IAAM,mBACJ,MACA,UAEA,SAAS,QAAQ,UAAU,OACvB,SAAS,QACT,KAAK,SAAS,WAAW,MAAM,SAAS,UACxC,KAAK,cAAc,MAAM,aAAa,KAAK,UAAU,MAAM,QAC3D,KAAK,SAAS,aAAa,MAAM,SAAS,aAAa,KAAK,UAAU,MAAM;;AAGlF,IAAa,2BACX,MACA,UAEA,KAAK,MAAM,UAAU,MAAM,MAAM,SACjC,gBAAgB,KAAK,MAAM,SAAS,MAAM,MAAM,OAAO,KACvD,gBAAgB,KAAK,MAAM,aAAa,MAAM,MAAM,WAAW,KAC/D,gBAAgB,KAAK,MAAM,UAAU,MAAM,MAAM,QAAQ,KACzD,KAAK,OAAO,UAAU,MAAM,OAAO,SACnC,gBAAgB,KAAK,OAAO,SAAS,MAAM,OAAO,OAAO,KACzD,gBAAgB,KAAK,OAAO,aAAa,MAAM,OAAO,WAAW,KACjE,gBAAgB,KAAK,OAAO,UAAU,MAAM,OAAO,QAAQ,KAC3D,KAAK,WAAW,UAAU,MAAM,WAAW,SAC3C,gBAAgB,KAAK,WAAW,SAAS,MAAM,WAAW,OAAO,KACjE,gBAAgB,KAAK,WAAW,aAAa,MAAM,WAAW,WAAW,KACzE,gBAAgB,KAAK,WAAW,UAAU,MAAM,WAAW,QAAQ;;;ACzpBrE,IAAM,uBAAqB,eAAuB,eAChD,SAAO,OAAO,MACZ,SAAO,UAAU,GACjB,SAAO,YAAY,CAAC,GACpB,SAAO,YAAY,aAAa,CAClC,CAAC,CAAC,SAAS,EAAE,WAAW,CAAC;AAE3B,IAAM,UAAiB,WAA0C,IAAI,IAAI,MAAM,CAAC,CAAC,SAAS,OAAO;AAEjG,IAAM,sBACJ,MACA,UACY,KAAK,WAAW,MAAM,UAAU,KAAK,OAAO,OAAO,UAAU,UAAU,MAAM,MAAM;AAEjG,IAAM,sBAAsB,WAC1B,mBAAmB,QAAQ,sBAAsB,MAAM,CAAC;;AAG1D,IAAa,oCAAoC;;AAGjD,IAAa,yBAAyB;;AAGtC,IAAa,kBAAkB,oBAAkB,KAAK,iBAAiB,CAAC,CAAC,KACvE,SAAO,MAAM,SAAO,UAAU,2BAA2B,CAAC,GAC1D,SAAO,MAAM,iBAAiB,CAChC;;AAMA,IAAa,2BAA2B,SAAO,OAAO,MACpD,SAAO,UAAU,wBAAwB,CAC3C,CAAC,CAAC,KAAK,SAAO,MAAM,0BAA0B,CAAC;;AAM/C,IAAa,uBAAuB,SAAO,IAAI,MAAM,SAAO,cAAc,CAAC,CAAC,CAAC,CAAC,KAC5E,SAAO,MAAM,sBAAsB,CACrC;;AAMA,IAAa,6BAA6B,SAAO,IAAI,MAAM,SAAO,cAAc,CAAC,CAAC,CAAC,CAAC,KAClF,SAAO,MAAM,4BAA4B,CAC3C;;AAMA,IAAa,4BAA4B,qBAAqB,KAAK,CAAC;;AAGpE,IAAa,kCAAkC,2BAA2B,KAAK,CAAC;;AAGhF,IAAa,2BAA2B,SAAO,IAAI,MAAM,SAAO,cAAc,CAAC,CAAC;;AAMhF,IAAa,4BAA4B,oBAAkB,KAAK,2BAA2B;;AAM3F,IAAa,kBAAkB,oBAAkB,KAAK,iBAAiB;;AAMvE,IAAa,iBAAiB,SAAO,YAAY;CAC/C,SAAS,EAAE,WAAW,UAAU;CAChC,aAAa;EAAE,WAAW;EAAW,eAAe;CAAc;AACpE,CAAC;AAKD,IAAM,wBAAwB;CAC5B,aAAa;CACb,iBAAiB;CACjB,kBAAkB;CAClB,QAAQ;AACV;;AAGA,IAAa,wCAAwC,SAAO,OAAO;CACjE,GAAG;CACH,OAAO,SAAO,aAAa,eAAe;EACxC,WAAW;EACX,eAAe;CACjB,CAAC;AACH,CAAC;;AAGD,IAAa,oCAAoC,SAAO,OAAO;CAC7D,GAAG;CACH,OAAO,SAAO,aAAa,WAAW,EAAE,WAAW,UAAU,CAAC;AAChE,CAAC;;AAGD,IAAa,6BAA6B,SAAO,MAAM,CACrD,uCACA,iCACF,CAAC;;AAMD,IAAa,yBAAyB,SAAO,OAAO;CAClD,QAAQ;CACR,SAAS;CACT,QAAQ;AACV,CAAC;;AAMD,IAAa,mBAAmB,SAAO,SAAS;CAC9C;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;;AAMD,IAAa,oBAAoB,SAAO,SAAS;CAC/C;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;;AAMD,IAAa,2BAA2B,SAAO,SAAS,CAAC,YAAY,UAAU,CAAC;;AAMhF,IAAa,0BAA0B,SAAO,OAAO;CACnD,QAAQ;CACR,MAAM;CACN,aAAa;AACf,CAAC;AAKD,IAAM,gBAAgB,SAAO,aAAa,SAAS;CACjD,WAAW,SAAO,IAAI,MAAM,SAAO,uBAAuB,CAAC,CAAC;CAC5D,OAAO,SAAO,IAAI,MAAM,SAAO,cAAc,CAAC,CAAC;AACjD,CAAC,CAAC,CAAC,MACD,SAAO,YAAY,EAAE,WAAW,YAAY,aAAa,OAAO,EAC9D,UAAU,6DACZ,CAAC,CACH;AAEA,IAAM,kBAAkB,SAAO,aAAa,WAAW,EACrD,OAAO,SAAO,OAAO,MACnB,SAAO,YAAY,UAAU,SAAS,KAAK,SAAS,KAAK,EACvD,UAAU,6DACZ,CAAC,CACH,EACF,CAAC;;AAGD,IAAa,oBAAoB,SAAO,MAAM,CAAC,eAAe,eAAe,CAAC,CAAC,CAAC,KAC9E,SAAO,cAAc,MAAM,CAC7B;;AAMA,IAAa,qBAAqB,SAAO,YAAY;CACnD,cAAc,EACZ,QAAQ,SAAO,SAAS;EACtB;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC,EACH;CACA,UAAU,EACR,QAAQ,SAAO,SAAS;EAAC;EAAW;EAAW;EAAY;EAAY;CAAS,CAAC,EACnF;CACA,OAAO,EACL,QAAQ,SAAO,SAAS;EAAC;EAAW;EAAU;EAAW;EAAU;EAAU;CAAW,CAAC,EAC3F;CACA,WAAW;EACT,QAAQ,SAAO,SAAS;GAAC;GAAW;GAAU;GAAW;GAAa;GAAU;EAAS,CAAC;EAC1F,UAAU,SAAO,OAAO,iBAAiB;CAC3C;CACA,eAAe,EACb,QAAQ,SAAO,SAAS;EAAC;EAAW;EAAS;EAAW;EAAS;CAAY,CAAC,EAChF;CACA,YAAY;EACV,QAAQ,SAAO,SAAS;GAAC;GAAe;GAAW;GAAa;GAAa;GAAU;EAAa,CAAC;EACrG,UAAU,SAAO,OAAO,iBAAiB;CAC3C;AACF,CAAC;;AAMD,IAAa,0BAA0B,SAAO,YAAY;CACxD,QAAQ;EACN,oBAAoB;EACpB,QAAQ,SAAO,SAAS;GAAC;GAAW;GAAY;GAAe;EAAU,CAAC;CAC5E;CACA,OAAO,EAAE,QAAQ,SAAO,SAAS;EAAC;EAAS;EAAS;CAAQ,CAAC,EAAE;AACjE,CAAC;;AAMD,IAAa,6BAA6B,SAAO,OAAO;CACtD,YAAY;CACZ,QAAQ;CACR,WAAW,SAAO,SAAS;EAAC;EAAW;EAAS;EAAW;CAAa,CAAC;CACzE,UAAU,SAAO,SAAS,CAAC,SAAS,SAAS,CAAC;CAC9C,cAAc,SAAO,OAAO,YAAY;AAC1C,CAAC;AAKD,IAAM,yBAAyB,UAAuC,MAAM,WAAW;;AAGvF,IAAa,2BAA2B,SAAO,OAAO;CACpD,QAAQ;CACR,OAAO;CACP,UAAU,SAAO,MAAM,0BAA0B,CAAC,CAAC,MAAM,SAAO,YAAY,GAAG,CAAC;AAClF,CAAC,CAAC,CAAC,MACD,SAAO,YAAY,EAAE,eAAe,OAAO,SAAS,KAAK,EAAE,iBAAiB,UAAU,CAAC,GAAG,EACxF,UAAU,0DACZ,CAAC,GACD,SAAO,YAAY,EAAE,UAAU,YAAY,CAAC,sBAAsB,KAAK,KAAK,SAAS,SAAS,GAAG,EAC/F,UAAU,gEACZ,CAAC,CACH;;AAMA,IAAa,uBAAuB,SAAO,SAAS;CAClD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;;AAMD,IAAa,0BAA0B,SAAO,YAAY;CACxD,MAAM,EAAE,QAAQ,gBAAgB;CAChC,QAAQ,EAAE,oBAAoB,mBAAmB;CACjD,WAAW,CAAC;AACd,CAAC;;AAGD,IAAa,mBAAmB,SAAO,OAAO;CAC5C,MAAM;CACN,SAAS;CACT,aAAa,SAAO,MAAM,UAAU,CAAC,CAAC,MAAM,SAAO,YAAY,GAAG,CAAC;AACrE,CAAC,CAAC,CAAC,MACD,SAAO,YAAY,EAAE,kBAAkB,OAAO,WAAW,GAAG,EAC1D,UAAU,sDACZ,CAAC,CACH;;AAMA,IAAa,sBAAsB,SAAO,SAAS;CAAC;CAAY;CAAW;CAAU;CAAO;AAAU,CAAC;;AAMvG,IAAa,0BAA0B,SAAO,OAAO;CACnD,YAAY;CACZ,aAAa,SAAO,OAAO,wBAAwB;CACnD,QAAQ;CACR,aAAa,SAAO,MAAM,UAAU,CAAC,CAAC,MAAM,SAAO,YAAY,GAAG,CAAC;AACrE,CAAC,CAAC,CAAC,MACD,SAAO,YAAY,EAAE,YAAY,aAAa,aAAa,aACzD,gBAAgB,OACZ,YAAY,WAAW,KAAK,WAAW,oBAAoB,YAAY,WAAW,IAClF,YAAY,WAAW,WAAW,UAClC,YAAY,MAAM,SAAS,WAAW,QACtC,mBACE,aACA,sBAAsB,YAAY,SAAS,KAAK,EAAE,iBAAiB,UAAU,CAAC,CAChF,KACA,WAAW,oBAAoB,YAAY,WAAW,GAAG,EAC7D,UAAU,uFACZ,CAAC,CACH;;AAMA,IAAa,yBAAyB,SAAO,OAAO;CAClD,oBAAoB;CACpB,WAAW,SAAO,SAAS;EAAC;EAAW;EAAS;EAAW;CAAa,CAAC;CACzE,QAAQ,SAAO,SAAS;EAAC;EAAW;EAAY;EAAe;CAAU,CAAC;CAC1E,aAAa,SAAO,MAAM,UAAU,CAAC,CAAC,MAAM,SAAO,YAAY,GAAG,CAAC;AACrE,CAAC;AAKD,IAAM,qBAAqB;CACzB,SAAS,SAAO,MAAM,eAAe,CAAC,CAAC,MAAM,SAAO,YAAY,GAAG,CAAC;CACpE,aAAa,SAAO,MAAM,UAAU,CAAC,CAAC,MAAM,SAAO,YAAY,GAAG,CAAC;CACnE,UAAU,SAAO,OAAO,iBAAiB;AAC3C;;AAGA,IAAa,sBAAsB,SAAO,OAAO;CAC/C,GAAG;CACH,OAAO,SAAO,SAAS;EAAC;EAAe;EAAU;EAAW;EAAa;EAAU;CAAM,CAAC;AAC5F,CAAC;;AAGD,IAAa,uBAAuB,SAAO,OAAO;CAChD,GAAG;CACH,OAAO,SAAO,SAAS;EAAC;EAAe;EAAW;EAAU;EAAU;CAAM,CAAC;AAC/E,CAAC;;AAGD,IAAa,2BAA2B,SAAO,OAAO;CACpD,GAAG;CACH,OAAO,SAAO,SAAS;EACrB;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;AACH,CAAC;;AAGD,IAAa,kBAAkB,SAAO,OAAO;CAC3C,OAAO;CACP,QAAQ;CACR,YAAY;AACd,CAAC;;AAMD,IAAa,sCAAsC,SAAO,OAAO;CAC/D,cAAc;CACd,sBAAsB,SAAO,OAAO,qBAAqB;CACzD,WAAW;CACX,MAAM;CACN,mBAAmB;CACnB,aAAa;CACb,UAAU,SAAO;CACjB,aAAa,SAAO,MAAM,uBAAuB,CAAC,CAAC,MAAM,SAAO,YAAY,GAAG,CAAC;CAChF,cAAc,SAAO,MAAM,wBAAwB,CAAC,CAAC,MAAM,SAAO,YAAY,GAAG,CAAC;AACpF,CAAC,CAAC,CAAC,MACD,SAAO,YACJ,EAAE,cAAc,2BAA2B,yBAAyB,QAAQ,yBAAyB,cACtG,EAAE,UAAU,yDAAyD,CACvE,GACA,SAAO,YACJ,EAAE,wBAAwB,sBAAsB,iCACjD,EAAE,UAAU,2DAA2D,CACzE,GACA,SAAO,YAAY,EAAE,kBAAkB,OAAO,YAAY,KAAK,EAAE,aAAa,MAAM,CAAC,GAAG,EACtF,UAAU,uDACZ,CAAC,GACD,SAAO,YAAY,EAAE,mBAAmB,OAAO,aAAa,KAAK,EAAE,aAAa,MAAM,CAAC,GAAG,EACxF,UAAU,wDACZ,CAAC,GACD,SAAO,YACJ,EAAE,mBACD,aAAa,QAAQ,OAAO,gBAAgB,QAAQ,YAAY,SAAS,QAAQ,CAAC,KAAA,KAEpF,EACE,UAAU,yEACZ,CACF,GACA,SAAO,YAAY,EAAE,aAAa,mBAAmB;CACnD,MAAM,kBAAkB,IAAI,IAAI,YAAY,KAAK,eAAe,CAAC,WAAW,QAAQ,UAAU,CAAC,CAAC;CAChG,OAAO,aAAa,OAAO,gBAAgB,gBAAgB,IAAI,YAAY,MAAM,CAAC,EAAE,SAAS,YAAY,MAAM,IAAI;AACrH,GAAG,EAAE,UAAU,mEAAmE,CAAC,GACnF,SAAO,YAAY,EAAE,aAAa,mBAAmB,yBAAyB,aAAa,YAAY,GAAG,EACxG,UAAU,sEACZ,CAAC,CACH;AAKA,IAAM,mBAAmB,UACvB,sBAAsB,MAAM,SAAS,EAAE,kBAAkB,WAAW,CAAC;AAEvE,IAAM,gBACJ,OACA,UAC2C,MAAM,QAAQ,EAAE,iBAAiB,MAAM,SAAS,WAAW,IAAI,CAAC;AAE7G,IAAM,qBACJ,OACA,UAEA,mBACE,MAAM,SACN,sBAAsB,MAAM,KAAK,EAAE,iBAAiB,WAAW,MAAM,CAAC,CACxE,KAAK,mBAAmB,MAAM,aAAa,gBAAgB,KAAK,CAAC;AAEnE,IAAM,kCAAkC,eAOzB;CACb,MAAM,WAAW,IAAI,IAAI,WAAW,WAAW;CAC/C,MAAM,WAAW;EAAC,WAAW;EAAU,WAAW;EAAU,WAAW;CAAI;CAC3E,OAAO,mBAAmB,WAAW,WAAW,KAC9C,SAAS,OAAO,UACd,mBAAmB,MAAM,IAAI,mBAAmB,GAAG,MAAM,IAAI,mBAAmB,CAAC,CAAC,KAAK,oBAAoB,CAAC,KAC5G,OAAO,MAAM,IAAI,mBAAmB,CAAC,KACrC,MAAM,OAAO,EAAE,kBACb,mBAAmB,WAAW,KAAK,YAAY,OAAO,eAAe,SAAS,IAAI,UAAU,CAAC,CAC/F,CACF,KACA,mBAAmB,WAAW,OAAO,MAAM,OAAO,KAClD,mBAAmB,WAAW,OAAO,MAAM,WAAW,KACtD,mBAAmB,WAAW,OAAO,OAAO,OAAO,KACnD,mBAAmB,WAAW,OAAO,OAAO,WAAW,KACvD,mBAAmB,WAAW,OAAO,WAAW,OAAO,KACvD,mBAAmB,WAAW,OAAO,WAAW,WAAW,KAC3D,mBAAmB,WAAW,gBAAgB,KAAK,EAAE,yBAAyB,kBAAkB,CAAC,KACjG,WAAW,gBAAgB,OAAO,EAAE,kBAClC,mBAAmB,WAAW,KAAK,YAAY,OAAO,eAAe,SAAS,IAAI,UAAU,CAAC,CAC/F;AACJ;AAEA,IAAM,iBAAiB;CACrB,cAAc;CACd,sBAAsB,SAAO,OAAO,qBAAqB;CACzD,WAAW;CACX,MAAM;CACN,mBAAmB;CACnB,aAAa;CACb,kBAAkB,SAAO,OAAO,YAAY;CAC5C,SAAS;CACT,QAAQ;CACR,UAAU,SAAO,MAAM,gBAAgB,CAAC,CAAC,MAAM,SAAO,YAAY,sBAAsB,CAAC;CACzF,UAAU,SAAO,MAAM,gBAAgB,CAAC,CAAC,MAAM,SAAO,YAAY,sBAAsB,CAAC;CACzF,MAAM,SAAO,MAAM,gBAAgB,CAAC,CAAC,MAAM,SAAO,YAAY,sBAAsB,CAAC;CACrF,iBAAiB,SAAO,MAAM,sBAAsB,CAAC,CAAC,MAAM,SAAO,YAAY,GAAG,CAAC;CACnF,aAAa,SAAO,MAAM,UAAU,CAAC,CAAC,MAAM,SAAO,YAAA,GAA6C,CAAC;AACnG;;AAGA,IAAa,iCAAiC,SAAO,OAAO;CAC1D,GAAG;CACH,MAAM,SAAO,QAAQ,aAAa;CAClC,WAAW;CACX,eAAe,SAAO;CACtB,OAAO,SAAO,MAAM,uBAAuB,CAAC,CAAC,MAAM,SAAO,YAAY,GAAG,CAAC;CAC1E,iBAAiB,SAAO,MAAM,eAAe,CAAC,CAAC,MAAM,SAAO,YAAY,GAAG,CAAC;CAC5E,iBAAiB,SAAO,MAAM,eAAe,CAAC,CAAC,MAAM,SAAO,YAAY,GAAG,CAAC;AAC9E,CAAC,CAAC,CAAC,MACD,SAAO,YACJ,EAAE,wBAAwB,sBAAsB,iCACjD,EAAE,UAAU,oDAAoD,CAClE,GACA,SAAO,YACJ,EAAE,cAAc,2BAA2B,yBAAyB,QAAQ,yBAAyB,cACtG,EACE,UAAU,iDACZ,CACF,GACA,SAAO,YAAY,EAAE,YAAY,mBAAmB,MAAM,KAAK,EAAE,iBAAiB,WAAW,MAAM,CAAC,GAAG,EACrG,UAAU,kEACZ,CAAC,GACD,SAAO,YACJ,EAAE,YACD,yBACE,MAAM,KAAK,EAAE,iBAAiB,UAAU,GACxC,MAAM,SAAS,EAAE,kBAAkB,gBAAgB,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAC9E,GACF,EAAE,UAAU,0EAA0E,CACxF,GACA,SAAO,YAAY,EAAE,OAAO,sBAC1B,mBACE,iBACA,sBACE,MACG,QAAQ,EAAE,iBAAiB,WAAW,gBAAgB,UAAU,CAAC,CACjE,KAAK,EAAE,iBAAiB,WAAW,MAAM,CAC9C,CACF,GAAG,EAAE,UAAU,qEAAqE,CAAC,GACvF,SAAO,YAAY,EAAE,OAAO,sBAC1B,mBACE,iBACA,sBACE,MACG,QAAQ,EAAE,aAAa,WAAW,UAAU,CAAC,CAC7C,KAAK,EAAE,iBAAiB,WAAW,MAAM,CAC9C,CACF,GAAG,EAAE,UAAU,qEAAqE,CAAC,GACvF,SAAO,YAAY,EAAE,UAAU,OAAO,MAAM,eAAe,eAAe;CACxE,MAAM,WAAW,wBAAwB,OAAO,aAAa;CAC7D,OAAO,mBAAmB,SAAS,IAAI,mBAAmB,GAAG,SAAS,SAAS,IAAI,mBAAmB,CAAC,KACrG,mBAAmB,SAAS,IAAI,mBAAmB,GAAG,SAAS,SAAS,IAAI,mBAAmB,CAAC,KAChG,mBAAmB,KAAK,IAAI,mBAAmB,GAAG,SAAS,KAAK,IAAI,mBAAmB,CAAC;AAC5F,GAAG,EAAE,UAAU,oEAAoE,CAAC,GACpF,SAAO,YAAY,EAAE,aAAa,YAChC,mBACE,aACA,gBAAgB,KAAK,CACvB,GAAG,EAAE,UAAU,qEAAqE,CAAC,GACvF,SAAO,YAAY,EAAE,OAAO,aAAa;CACvC,MAAM,QAAQ,aAAa,OAAO,CAAC,WAAW,CAAC;CAC/C,MAAM,SAAS,aAAa,OAAO;EAAC;EAAgB;EAAY;EAAS;CAAe,CAAC;CACzF,MAAM,aAAa,aAAa,OAAO,CAAC,YAAY,CAAC;CACrD,OAAO,kBAAkB,OAAO,OAAO,KAAK,KAC1C,kBAAkB,OAAO,QAAQ,MAAM,KACvC,kBAAkB,OAAO,YAAY,UAAU;AACnD,GAAG,EAAE,UAAU,oFAAoF,CAAC,GACpG,SAAO,YAAY,EAAE,OAAO,aAAa,wBAAwB,QAAQ,sBAAsB,KAAK,CAAC,GAAG,EACtG,UAAU,wEACZ,CAAC,GACD,SAAO,YAAY,EAAE,OAAO,sBAAsB;CAChD,MAAM,WAAW,+BAA+B,KAAK;CACrD,OAAO,gBAAgB,WAAW,SAAS,UAAU,gBAAgB,OAAO,SAAS,UAAU;EAC7F,MAAM,OAAO,SAAS;EACtB,OAAO,SAAS,KAAA,KACd,QAAQ,uBAAuB,KAAK,sBACpC,QAAQ,cAAc,KAAK,aAC3B,QAAQ,WAAW,KAAK,UACxB,mBAAmB,QAAQ,aAAa,KAAK,WAAW;CAC5D,CAAC;AACH,GAAG,EAAE,UAAU,oEAAoE,CAAC,GACpF,SAAO,YAAY,EAAE,OAAO,uBAAuB;CACjD,MAAM,WAAW,gCAAgC,KAAK;CACtD,OAAO,aAAa,QAAQ,qBAAqB,OAC7C,aAAa,mBACb,WAAS,MAAM,UAAU,gBAAgB,MAAM;AACrD,GAAG,EAAE,UAAU,qEAAqE,CAAC,GACrF,SAAO,WAAW,gCAAgC,EAChD,UAAU,uEACZ,CAAC,GACD,SAAO,YAAY,eAAe,WAAW,YAAY,kCAAkC,UAAU,GAAG,EACtG,UAAU,mFACZ,CAAC,CACH;;AAMA,IAAa,8BAA8B,SAAO,OAAO;CACvD,cAAc;CACd,eAAe;CACf,iBAAiB;CACjB,eAAe,SAAO;CACtB,OAAO,SAAO,MAAM,uBAAuB,CAAC,CAAC,MAAM,SAAO,YAAY,GAAG,CAAC;CAC1E,kBAAkB,SAAO,OAAO,YAAY;CAC5C,SAAS;CACT,QAAQ;CACR,UAAU,SAAO,MAAM,gBAAgB,CAAC,CAAC,MAAM,SAAO,YAAY,sBAAsB,CAAC;CACzF,UAAU,SAAO,MAAM,gBAAgB,CAAC,CAAC,MAAM,SAAO,YAAY,sBAAsB,CAAC;CACzF,MAAM,SAAO,MAAM,gBAAgB,CAAC,CAAC,MAAM,SAAO,YAAY,sBAAsB,CAAC;CACrF,iBAAiB,SAAO,MAAM,sBAAsB,CAAC,CAAC,MAAM,SAAO,YAAY,GAAG,CAAC;CACnF,aAAa,SAAO,MAAM,UAAU,CAAC,CAAC,MAAM,SAAO,YAAA,GAA6C,CAAC;AACnG,CAAC,CAAC,CAAC,MACD,SAAO,YAAY,EAAE,YAAY,mBAAmB,MAAM,KAAK,EAAE,iBAAiB,WAAW,MAAM,CAAC,GAAG,EACrG,UAAU,kEACZ,CAAC,GACD,SAAO,YACJ,EAAE,YACD,yBACE,MAAM,KAAK,EAAE,iBAAiB,UAAU,GACxC,MAAM,SAAS,EAAE,kBAAkB,gBAAgB,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAC9E,GACF,EAAE,UAAU,0EAA0E,CACxF,GACA,SAAO,YAAY,EAAE,UAAU,OAAO,MAAM,eAAe,eAAe;CACxE,MAAM,WAAW,wBAAwB,OAAO,aAAa;CAC7D,OAAO,mBAAmB,SAAS,IAAI,mBAAmB,GAAG,SAAS,SAAS,IAAI,mBAAmB,CAAC,KACrG,mBAAmB,SAAS,IAAI,mBAAmB,GAAG,SAAS,SAAS,IAAI,mBAAmB,CAAC,KAChG,mBAAmB,KAAK,IAAI,mBAAmB,GAAG,SAAS,KAAK,IAAI,mBAAmB,CAAC;AAC5F,GAAG,EAAE,UAAU,iEAAiE,CAAC,GACjF,SAAO,YAAY,EAAE,aAAa,YAAY,mBAAmB,aAAa,gBAAgB,KAAK,CAAC,GAAG,EACrG,UAAU,iEACZ,CAAC,GACD,SAAO,YAAY,EAAE,OAAO,aAAa,wBAAwB,QAAQ,sBAAsB,KAAK,CAAC,GAAG,EACtG,UAAU,+DACZ,CAAC,GACD,SAAO,YAAY,EAAE,OAAO,sBAAsB;CAChD,MAAM,WAAW,+BAA+B,KAAK;CACrD,OAAO,gBAAgB,WAAW,SAAS,UAAU,gBAAgB,OAAO,SAAS,UAAU;EAC7F,MAAM,OAAO,SAAS;EACtB,OAAO,SAAS,KAAA,KACd,QAAQ,uBAAuB,KAAK,sBACpC,QAAQ,cAAc,KAAK,aAC3B,QAAQ,WAAW,KAAK,UACxB,mBAAmB,QAAQ,aAAa,KAAK,WAAW;CAC5D,CAAC;AACH,GAAG,EAAE,UAAU,gEAAgE,CAAC,GAChF,SAAO,YAAY,EAAE,OAAO,uBAAuB;CACjD,MAAM,WAAW,gCAAgC,KAAK;CACtD,OAAO,aAAa,QAAQ,qBAAqB,OAC7C,aAAa,mBACb,WAAS,MAAM,UAAU,gBAAgB,MAAM;AACrD,GAAG,EAAE,UAAU,0EAA0E,CAAC,GAC1F,SAAO,WAAW,gCAAgC,EAChD,UAAU,+EACZ,CAAC,GACD,SAAO,YAAY,YAAY,QAAQ,YAAY,kCAAkC,OAAO,GAAG,EAC7F,UAAU,sFACZ,CAAC,CACH;;AAGA,IAAa,6BAA6B,SAAO,OAAO;CACtD,GAAG;CACH,MAAM,SAAO,QAAQ,SAAS;CAC9B,WAAW;CACX,cAAc,SAAO,cAAc,2BAA2B,CAAC,CAAC,MAAM,SAAO,YAAY,GAAG,CAAC;AAC/F,CAAC,CAAC,CAAC,MACD,SAAO,YACJ,EAAE,wBAAwB,sBAAsB,iCACjD,EAAE,UAAU,+CAA+C,CAC7D,GACA,SAAO,YACJ,EAAE,cAAc,2BAA2B,yBAAyB,QAAQ,yBAAyB,cACtG,EACE,UAAU,yDACZ,CACF,GACA,SAAO,YAAY,EAAE,mBAAmB,mBAAmB,aAAa,KAAK,EAAE,oBAAoB,aAAa,CAAC,GAAG,EAClH,UAAU,qEACZ,CAAC,GACD,SAAO,YACJ,EAAE,cAAc,aAAa,wBAAwB,QAAQ,6BAA6B,YAAY,CAAC,GACxG,EAAE,UAAU,mEAAmE,CACjF,GACA,SAAO,YAAY,EAAE,UAAU,cAAc,MAAM,eAAe;CAChE,MAAM,WAAW,+BAA+B,YAAY;CAC5D,OAAO,mBAAmB,SAAS,IAAI,mBAAmB,GAAG,SAAS,SAAS,IAAI,mBAAmB,CAAC,KACrG,mBAAmB,SAAS,IAAI,mBAAmB,GAAG,SAAS,SAAS,IAAI,mBAAmB,CAAC,KAChG,mBAAmB,KAAK,IAAI,mBAAmB,GAAG,SAAS,KAAK,IAAI,mBAAmB,CAAC;AAC5F,GAAG,EAAE,UAAU,qEAAqE,CAAC,GACrF,SAAO,YAAY,EAAE,cAAc,sBAAsB;CACvD,MAAM,WAAW,sCAAsC,YAAY;CACnE,OAAO,gBAAgB,WAAW,SAAS,UAAU,gBAAgB,OAAO,SAAS,UAAU;EAC7F,MAAM,OAAO,SAAS;EACtB,OAAO,SAAS,KAAA,KACd,QAAQ,uBAAuB,KAAK,sBACpC,QAAQ,cAAc,KAAK,aAC3B,QAAQ,WAAW,KAAK,UACxB,mBAAmB,QAAQ,aAAa,KAAK,WAAW;CAC5D,CAAC;AACH,GAAG,EAAE,UAAU,oEAAoE,CAAC,GACpF,SAAO,YAAY,EAAE,cAAc,uBAAuB;CACxD,MAAM,WAAW,uCAAuC,YAAY;CACpE,OAAO,aAAa,QAAQ,qBAAqB,OAC7C,aAAa,mBACb,WAAS,MAAM,UAAU,gBAAgB,MAAM;AACrD,GAAG,EAAE,UAAU,8EAA8E,CAAC,GAC9F,SAAO,YAAY,EAAE,cAAc,kBACjC,mBACE,aACA,sBAAsB,aAAa,SAAS,EAAE,kBAAkB,WAAW,CAAC,CAC9E,GAAG,EAAE,UAAU,qEAAqE,CAAC,GACvF,SAAO,WAAW,gCAAgC,EAChD,UAAU,mEACZ,CAAC,GACD,SAAO,YAAY,EAAE,cAAc,cAAc,YAAY,8BAA8B,YAAY,GAAG,EACxG,UAAU,oEACZ,CAAC,CACH;;AAMA,IAAa,sBAAsB,SAAO,MAAM,CAC9C,gCACA,0BACF,CAAC,CAAC,CAAC,KAAK,SAAO,cAAc,MAAM,CAAC;;AAMpC,IAAa,8BAA8B,SAAO,OAAO;CACvD,cAAc;CACd,sBAAsB,SAAO,OAAO,qBAAqB;CACzD,WAAW;CACX,aAAa;CACb,cAAc,SAAO,cAAc,8BAA8B,CAAC,CAAC,MAAM,SAAO,YAAY,GAAG,CAAC;AAClG,CAAC,CAAC,CAAC,MACD,SAAO,YACJ,EAAE,cAAc,2BAA2B,yBAAyB,QAAQ,yBAAyB,cACtG,EAAE,UAAU,4DAA4D,CAC1E,GACA,SAAO,YAAY,EAAE,mBAAmB,OAAO,aAAa,KAAK,EAAE,gBAAgB,UAAU,MAAM,aAAa,CAAC,GAAG,EAClH,UAAU,gEACZ,CAAC,GACD,SAAO,YACJ,EAAE,WAAW,mBACZ,aAAa,OAAO,eAClB,WAAW,UAAU,gBAAgB,UAAU,eAC/C,WAAW,UAAU,MAAM,cAAc,UAAU,MAAM,aACzD,WAAW,UAAU,oBAAoB,UAAU,mBACnD,WAAW,UAAU,qBAAqB,UAAU,gBACtD,GACF,EACE,UAAU,iGACZ,CACF,GACA,SAAO,YACJ,EAAE,mBACD,aAAa,OAAO,eAClB,WAAW,KAAK,WAAW,aAAa,EAAE,EAAE,KAAK,UACjD,WAAW,KAAK,YAAY,aAAa,EAAE,EAAE,KAAK,WAClD,WAAW,KAAK,WAAW,aAAa,EAAE,EAAE,KAAK,UACjD,WAAW,sBAAsB,aAAa,EAAE,EAAE,iBACpD,GACF,EAAE,UAAU,4EAA4E,CAC1F,GACA,SAAO,YACJ,EAAE,mBACD,sBAAsB,aAAa,SAAS,EAAE,kBAAkB,WAAW,CAAC,CAAC,CAAC,UAAA,KAEhF,EACE,UAAU,mEACZ,CACF,GACA,SAAO,YAAY,EAAE,mBACnB;CAAC;CAAS;CAAU;AAAY,CAAC,CAAC,OAAO,UAAU;CACjD,IAAI,UAAU,SACZ,OAAO,sBAAsB,aAAa,SAAS,EAAE,aAAa,OAAO,MAAM,OAAO,CAAC,CAAC,CAAC,UAAU;CAErG,IAAI,UAAU,UACZ,OAAO,sBAAsB,aAAa,SAAS,EAAE,aAAa,OAAO,OAAO,OAAO,CAAC,CAAC,CAAC,UAAU;CAEtG,OAAO,sBAAsB,aAAa,SAAS,EAAE,aAAa,OAAO,WAAW,OAAO,CAAC,CAAC,CAAC,UAAU;AAC1G,CAAC,GAAG,EAAE,UAAU,4DAA4D,CAAC,GAC/E,SAAO,YACJ,EAAE,mBACD,aAAa,QAAQ,OAAO,eAAe,QAAQ,WAAW,SAAS,QAAQ,CAAC,KAAA,QAEhF,aAAa,QAAQ,OAAO,eAAe,QAAQ,WAAW,SAAS,QAAQ,CAAC,KAAA,QAEhF,aAAa,QAAQ,OAAO,eAAe,QAAQ,WAAW,KAAK,QAAQ,CAAC,KAAA,MAE9E,EACE,UAAU,mEACZ,CACF,GACA,SAAO,YACJ,EAAE,mBACD,sBACE,aAAa,SAAS,EAAE,sBACtB,gBAAgB,KAAK,EAAE,yBAAyB,kBAAkB,CACpE,CACF,CAAC,CAAC,UAAU,KACd,EACE,UAAU,kEACZ,CACF,GACA,SAAO,YACJ,EAAE,cAAc,kBACf,aAAa,OAAO,eAAe,WAAS,MAAM,WAAW,aAAa,WAAW,KAAK,CAAC,GAC7F,EAAE,UAAU,iEAAiE,CAC/E,CACF;;;AC31BA,IAAM,cAAc,SAAO,OAAO,MAAM,SAAO,UAAU,GAAG,SAAO,YAAY,CAAC,GAAG,SAAO,YAAY,GAAG,CAAC;AAC1G,IAAM,uBAAuB,SAAO,OAAO,MACzC,SAAO,UAAU,GACjB,SAAO,YAAY,CAAC,GACpB,SAAO,YAAY,GAAG,CACxB;AACA,IAAM,WAAW,SAAO,OAAO,MAAM,SAAO,UAAU,GAAG,SAAO,YAAY,CAAC,GAAG,SAAO,YAAY,CAAC,CAAC;;AAGrG,IAAa,uBAAuB,SAAO,OAAO;CAChD,oBAAoB;CACpB,YAAY;CACZ,gBAAgB;AAClB,CAAC;;AAMD,IAAa,eAAe,SAAO,YAAY;CAC7C,UAAU,EACR,MAAM,SACR;CACA,WAAW,EACT,WAAW,qBACb;AACF,CAAC;;;;;AASD,IAAa,wBAAwB,gBAAgC;CACnE,MAAM,SAAS,YAAY,KAAK,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,OAAO,OAAO;CAC9D,MAAM,aAAa,OAAO,GAAG,CAAC,KAAK;CACnC,MAAM,YAAY,OAAO,GAAG,EAAE,KAAK;CAGnC,OAAO,GAFc,MAAM,KAAK,UAAU,CAAC,CAAC,GAAG,CAAC,KAAK,KACjC,OAAO,SAAS,IAAK,MAAM,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,KAAK,KAAM,KACvC,kBAAkB,OAAO;AAClE;;AA0BA,IAAa,SAxBQ,SAAO,OAAO;CACjC,QAAQ;CACR,aAAa;CACb,UAAU,SAAO;CACjB,UAAU;CACV,kBAAkB,SAAO,MAAM,oBAAoB;AACrD,CAAC,CAAC,CAAC,MACD,SAAO,YACJ,EAAE,QAAQ,kBAAkB,OAAO,SAAS,eAAe,OAAO,SAAS,qBAAqB,WAAW,GAC5G,EAAE,UAAU,mEAAmE,CACjF,GACA,SAAO,YACJ,EAAE,uBAAuB;CACxB,MAAM,eAAe,iBAAiB,KACnC,EAAE,oBAAoB,YAAY,qBACjC,GAAG,WAAW,QAAQ,mBAAmB,QAAQ,gBACrD;CACA,OAAO,IAAI,IAAI,YAAY,CAAC,CAAC,SAAS,aAAa;AACrD,GACA,EAAE,UAAU,wCAAwC,CACtD,CAIoB;;AAMtB,IAAa,aAAa,SAAO,aAAa,SAAS,EACrD,UAAU,SACZ,CAAC;;AAMD,IAAa,aAAa,SAAO,aAAa,SAAS,EACrD,SAAS,QACX,CAAC;;AAMD,IAAa,QAAQ,SAAO,MAAM,CAAC,YAAY,UAAU,CAAC,CAAC,CAAC,KAAK,SAAO,cAAc,MAAM,CAAC;;AAM7F,IAAa,OAAO,SAAO,SAAS;CAClC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;;AAMD,IAAa,YAAY,SAAO,YAAY;CAC1C,QAAQ;EACN,UAAU;EACV,aAAa;CACf;CACA,aAAa;EACX,eAAe;EACf,WAAW;EACX,aAAa;CACf;CACA,SAAS;EACP,WAAW;EACX,aAAa;CACf;CACA,WAAW,EACT,aAAa,YACf;AACF,CAAC;AAKD,IAAM,4BAA4B,SAAO,aAAa,UAAU,EAC9D,YAAY,aACd,CAAC;AAED,IAAM,2BAA2B,SAAO,aAAa,SAAS;CAC5D,YAAY;CACZ,SAAS;AACX,CAAC,CAAC,CAAC,MACD,SAAO,YACJ,EAAE,YAAY,cAAc,WAAS,MAAM,YAAY,OAAO,KAAK,GACpE,EAAE,UAAU,wDAAwD,CACtE,CACF;AAEA,IAAM,6BAA6B,SAAO,aAAa,WAAW;CAChE,YAAY;CACZ,WAAW;AACb,CAAC,CAAC,CAAC,MACD,SAAO,YACJ,EAAE,YAAY,gBAAgB,WAAS,MAAM,YAAY,SAAS,KAAK,GACxE,EAAE,UAAU,+DAA+D,CAC7E,CACF;;AAGA,IAAa,sBAAsB,SAAO,MAAM;CAC9C;CACA;CACA;AACF,CAAC,CAAC,CAAC,KAAK,SAAO,cAAc,MAAM,CAAC;;AAMpC,IAAa,iBAAiB,SAAO,OAAO;CAC1C,OAAO;CACP,cAAc;CACd,WAAW;CACX,MAAM;CACN,OAAO;AACT,CAAC;;;;AChMD,IAAa,0BAA0B;;AAGvC,IAAa,6BAA6B;AAqB1C,IAAM,iBAAqD,YACzD,OAAO,OAAO,OAAO;;AAGvB,IAAa,8BAA8B,cAAc;CACvD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;;AAGD,IAAa,yBAAyB,cAAc;CAClD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;;AAGD,IAAa,wBAAwB,OAAO,QAAQ,uBAAuB;;AAG3E,IAAa,wBAAwB,OAAO,SAAS,2BAA2B;;AAGhF,IAAa,mBAAmB,OAAO,SAAS,sBAAsB;;AAGtE,IAAa,uBAAuB,OAAO,gBAAgB;CAAC;CAAuB;CAAK;AAAgB,CAAC;;AAGzG,IAAa,0BAA0B,OAAO,SAAS;CAAC;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAI;CAAI;CAAI;CAAI;CAAI;AAAE,CAAC;;AAM7G,IAAa,4BAA4B,OAAO,MAAM;CACpD;CACA;CACA;AACF,CAAC,CAAC,CAAC,MAAM,OAAO,SAAS,EAAE,UAAU,wCAAwC,CAAC,CAAC;;AAM/E,IAAa,yBAAyB,OAAO,OAAO;CAClD,WAAW;CACX,UAAU;CACV,eAAe;AACjB,CAAC;AAKD,IAAM,sBAAsB;AAC5B,IAAM,eAAe;AAErB,IAAM,WAAW,eAA+B;CAC9C,IAAI,OAAO;CACX,KAAK,IAAI,QAAQ,GAAG,QAAQ,WAAW,QAAQ,SAAS,GAAG;EACzD,QAAQ,WAAW,WAAW,KAAK;EACnC,OAAO,KAAK,KAAK,MAAM,YAAY,MAAM;CAC3C;CACA,OAAO;AACT;AAEA,IAAM,4BAA4B,cAA+C;CAC/E,QAAQ,WAAR;EACE,KAAK,GACH,OAAO;EACT,KAAK,GACH,OAAO;EACT,KAAK,GACH,OAAO;EACT,KAAK,GACH,OAAO;EACT,KAAK,GACH,OAAO;EACT,KAAK,GACH,OAAO;EACT,KAAK,GACH,OAAO;EACT,KAAK,GACH,OAAO;EACT,KAAK,GACH,OAAO;EACT,KAAK,GACH,OAAO;EACT,KAAK,IACH,OAAO;EACT,KAAK,IACH,OAAO;EACT,KAAK,IACH,OAAO;EACT,KAAK,IACH,OAAO;EACT,KAAK,IACH,OAAO;EACT,SACE,OAAO;CACX;AACF;AAEA,IAAM,kBACJ,SACA,UACoB;CACpB,QAAQ,OAAR;EACE,KAAK,GACH,OAAO,QAAQ;EACjB,KAAK,GACH,OAAO,QAAQ;EACjB,KAAK,GACH,OAAO,QAAQ;EACjB,KAAK,GACH,OAAO,QAAQ;EACjB,KAAK,GACH,OAAO,QAAQ;EACjB,KAAK,GACH,OAAO,QAAQ;EACjB,KAAK,GACH,OAAO,QAAQ;EACjB,KAAK,GACH,OAAO,QAAQ;EACjB,KAAK,GACH,OAAO,QAAQ;EACjB,KAAK,GACH,OAAO,QAAQ;EACjB,KAAK,IACH,OAAO,QAAQ;EACjB,KAAK,IACH,OAAO,QAAQ;EACjB,KAAK,IACH,OAAO,QAAQ;EACjB,KAAK,IACH,OAAO,QAAQ;EACjB,KAAK,IACH,OAAO,QAAQ;EACjB,SACE,OAAO,QAAQ;CACnB;AACF;AAEA,IAAM,uBAAuB,cAAoD;CAC/E,MAAM,aAAa,yBAAyB,QAAQ,GAAG,wBAAwB,YAAY,WAAW,IAAI,EAAE;CAE5G,MAAM,aAAa,QAAQ,GAAG,wBAAwB,YAAY,WAAW,IAAI;CACjF,MAAM,cAAc,yBAAyB,aAAa,aAAa,aAAa,aAAa,CAAC;CAElG,MAAM,qBAAqB,KAAK,IAAI,YAAY,WAAW;CAC3D,MAAM,qBAAqB,KAAK,IAAI,YAAY,WAAW;CAC3D,MAAM,YAAY,QAAQ,GAAG,wBAAwB,YAAY,WAAW,IAAI;CAKhF,OAAO;EAAC;EAAY;EAJD,yBACjB,YAAY,qBAAqB,YAAY,YAAY,qBAAqB,IAAI,YAAY,IAAI,YAAY,CAG/E;CAAU;AAC7C;;;;;;;;;AAUA,IAAa,sBAAsB,cAAiD;CAClF,MAAM,iBAAiB,yBAAyB,QAAQ,GAAG,wBAAwB,aAAa,WAAW,IAAI,EAAE;CACjH,MAAM,YAAY,yBAAyB,QAAQ,GAAG,wBAAwB,QAAQ,WAAW,IAAI,EAAE;CAIvG,OAAO;EACL,WAAW;EACX,UAAU,GALM,eAAe,6BAA6B,cAK/C,EAAU,GAJZ,eAAe,wBAAwB,SAIxB;EAC1B,eAAe,oBAAoB,SAAS;CAC9C;AACF;;;;AC/NA,IAAa,qBAAqB,SAAO,OAAO,MAC9C,SAAO,UAAU,GACjB,SAAO,WAAW,GAClB,SAAO,YAAY,GAAG,CACxB,CAAC,CAAC,KAAK,SAAO,MAAM,oBAAoB,CAAC;;AAMzC,IAAa,iBAAiB,SAAO,OAAO,MAC1C,SAAO,UAAU,GACjB,SAAO,WAAW,GAClB,SAAO,YAAY,GAAG,CACxB,CAAC,CAAC,KAAK,SAAO,MAAM,gBAAgB,CAAC;;AAMrC,IAAa,mBAAmB,SAAO,SAAS;CAC9C;CACA;CACA;CACA;CACA;AACF,CAAC;AAKD,IAAM,gBAAgB,SAAO,OAAO;CAClC,WAAW;CACX,WAAW;CACX,IAAI;CACJ,WAAW;CACX,OAAO;CACP,iBAAiB,SAAO,MAAM,cAAc;CAC5C,aAAa;CACb,iBAAiB,SAAO,MAAM,cAAc;CAC5C,sBAAsB,SAAO,MAAM,aAAa,CAAC,CAAC,MAChD,SAAO,SAAS,EAAE,UAAU,wCAAwC,CAAC,CACvE;CACA,WAAW;CACX,SAAS;CACT,aAAa;AACf,CAAC;AAED,IAAM,uBAAuB,SAAO,WAAW,cAAc;AAC7D,IAAM,4BAA4B,SAAO,cAAc,SAAO,UAAU,cAAc,CAAC;;;;;AAMvF,IAAa,UAAU,cAAc,MACnC,SAAO,YACJ,EAAE,WAAW,gBAAgB,WAAS,MAAM,WAAW,SAAS,KAAK,GACtE,EAAE,UAAU,sDAAsD,CACpE,GACA,SAAO,YACJ,EAAE,iBAAiB,kBAAkB,gBAAgB,OAAO,EAAE,YAAY,MAAM,gBAAgB,WAAW,GAC5G,EAAE,UAAU,2DAA2D,CACzE,GACA,SAAO,YACJ,EAAE,IAAI,sBACL,gBAAgB,OAAO,EAAE,YACvB,MAAM,SAAS,aAAa,MAAM,SAAS,gBAAgB,MAAM,cAAc,KAAK,IACtF,GACF,EAAE,UAAU,kDAAkD,CAChE,GACA,SAAO,YACJ,EAAE,iBAAiB,2BAA2B;CAC7C,MAAM,UAAU,IAAI,IAAI,oBAAoB;CAC5C,OAAO,gBAAgB,OAAO,EAAE,YAC9B,MAAM,SAAS,gBAAgB,QAAQ,IAAI,MAAM,aAAa,IAAI,IACpE;AACF,GACA,EAAE,UAAU,0DAA0D,CACxE,GACA,SAAO,YACJ,EAAE,sBAAsB;CACvB,MAAM,gBAAgB,gBAAgB,KAAK,EAAE,mBAAmB,YAAY;CAC5E,OAAO,IAAI,IAAI,aAAa,CAAC,CAAC,SAAS,cAAc;AACvD,GACA,EAAE,UAAU,qCAAqC,CACnD,GACA,SAAO,YACJ,EAAE,sBAAsB;CACvB,MAAM,aAAa,gBAAgB,KAChC,EAAE,oBAAoB,YAAY,wBACjC,GAAG,WAAW,QAAQ,mBAAmB,QAAQ,mBACrD;CACA,OAAO,IAAI,IAAI,UAAU,CAAC,CAAC,SAAS,WAAW;AACjD,GACA,EAAE,UAAU,kDAAkD,CAChE,GACA,SAAO,YACJ,EAAE,WAAW,sBAAsB;CAClC,IAAI,UAAU,SAAS,aAAa,UAAU,SAAS,SAAS,OAAO;CACvE,MAAM,oBAAoB,qBAAqB,UAAU,WAAW,cAAc;CAClF,OACE,gBAAgB,QAAQ,mBACtB,0BAA0B,qBAAqB,cAAc,GAAG,iBAAiB,CACnF,CAAC,CAAC,WAAW;AAEjB,GACA,EAAE,UAAU,6EAA6E,CAC3F,GACA,SAAO,YACJ,EAAE,IAAI,YAAY;CACjB,MAAM,WAAW,mBAAmB,EAAE;CACtC,OACE,MAAM,cAAc,SAAS,aAC7B,MAAM,aAAa,SAAS,YAC5B,MAAM,cAAc,OAAO,aAAa,UAAU,gBAAgB,SAAS,cAAc,MAAM;AAEnG,GACA,EAAE,UAAU,uEAAuE,CACrF,CACF,CAAC,CAAC,SAAS,EAAE,YAAY,UAAU,CAAC;;;AC7HpC,IAAM,iBAAe,SAAiB,eACpC,SAAO,OAAO,MAAM,SAAO,YAAY,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,WAAW,CAAC;AAE1E,IAAM,uBAAuB,SAAiB,eAC5C,cAAY,SAAS,UAAU,CAAC,CAAC,MAAM,SAAO,UAAU,GAAG,SAAO,WAAW,CAAC;AAEhF,IAAM,gBAA8B,QAAoC,YACtE,SAAO,MAAM,MAAM,CAAC,CAAC,MAAM,SAAO,YAAY,OAAO,CAAC;AAExD,IAAa,kCAAkC;AAC/C,IAAa,sCAAsC;AAEnD,IAAa,wCAAwC;AACrD,IAAa,oCAAoC;AACjD,IAAa,yCAAyC;AACtD,IAAa,oCAAoC;AACjD,IAAa,mCAAmC;AAChD,IAAa,2CAA2C;AAExD,IAAM,iBAAiB,oBAAoB,KAAK,+BAA+B;AAC/E,IAAM,iBAAiB,oBAAoB,KAAK,+BAA+B;AAC/E,IAAM,YAAY,cAAY,KAAK,0BAA0B;AAC7D,IAAM,WAAW,cAAY,MAAQ,yBAAyB;AAC9D,IAAM,gBAAgB,oBAAoB,KAAK,0BAA0B;AACzE,IAAM,YAAY,oBAAoB,MAAO,0BAA0B,CAAC,CAAC,MACvE,SAAO,YAAY,UAAU,SAAO,UAAU,SAAO,oBAAoB,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,EAC3F,UAAU,qDACZ,CAAC,CACH;;AAGA,IAAa,4BAA4B,SAAO,OAAO;CACrD,UAAU,SAAO,OAAO,cAAc;CACtC,MAAM,SAAO,OAAO,SAAS;AAC/B,CAAC,CAAC,CAAC,SAAS,EAAE,YAAY,4BAA4B,CAAC;;AAGvD,IAAa,yBAAyB,SAAO,OAAO;CAClD,UAAU,SAAO,OAAO,cAAc;CACtC,KAAK,SAAO,OAAO,oBAAoB,KAAK,2BAA2B,CAAC;CACxE,MAAM,SAAO,OAAO,SAAS;AAC/B,CAAC,CAAC,CAAC,SAAS,EAAE,YAAY,yBAAyB,CAAC;;AAGpD,IAAa,4BAA4B,SAAO,OAAO;CACrD,UAAU,SAAO,OAAO,cAAc;CACtC,MAAM,SAAO,OAAO,SAAS;CAC7B,UAAU,SAAO;CACjB,aAAa,SAAO,OAAO,aAAa;AAC1C,CAAC,CAAC,CAAC,SAAS,EAAE,YAAY,4BAA4B,CAAC;;AAGvD,IAAa,yBAAyB,SAAO,OAAO;CAClD,UAAU,SAAO,OAAO,cAAc;CACtC,KAAK,SAAO,OAAO,oBAAoB,KAAK,2BAA2B,CAAC;CACxE,SAAS,SAAO,OAAO,cAAY,KAAK,+BAA+B,CAAC;CACxE,QAAQ,SAAO,OAAO,yBAAyB;AACjD,CAAC,CAAC,CAAC,SAAS,EAAE,YAAY,yBAAyB,CAAC;;AAGpD,IAAa,8BAA8B,SAAO,OAAO;CACvD,gBAAgB;CAChB,aAAa,oBAAoB,KAAK,wCAAwC;CAC9E,WAAW,SAAO,OAAO,SAAS;CAClC,QAAQ,SAAO;CACf,OAAO,aAAa,oBAAoB,KAAK,iCAAiC,GAAG,EAAE,CAAC,CAAC,MAAM,SAAO,SAAS,CAAC;AAC9G,CAAC,CAAC,CAAC,SAAS,EAAE,YAAY,8BAA8B,CAAC;;AAGzD,IAAa,yBAAyB,SAAO,OAAO;CAClD,UAAU;CACV,sBAAsB,SAAO,OAAO,cAAc;CAClD,4BAA4B,SAAO,OAAO,cAAc;CACxD,MAAM,SAAO,OAAO,QAAQ;CAC5B,WAAW,SAAO,OAAO,aAAa;CACtC,WAAW,SAAO,OAAO,aAAa;AACxC,CAAC,CAAC,CAAC,SAAS,EAAE,YAAY,yBAAyB,CAAC;;AAGpD,IAAa,+BAA+B,SAAO,OAAO;CACxD,OAAO,oBAAoB,KAAK,6BAA6B;CAC7D,MAAM,SAAO,OAAO,cAAY,KAAO,6BAA6B,CAAC;CACrE,IAAI,SAAO,OAAO,cAAY,KAAO,6BAA6B,CAAC;AACrE,CAAC,CAAC,CAAC,SAAS,EAAE,YAAY,+BAA+B,CAAC;;AAG1D,IAAa,8BAA8B,SAAO,OAAO;CACvD,UAAU;CACV,sBAAsB,SAAO,OAAO,cAAc;CAClD,WAAW,SAAO,OAAO,aAAa;CACtC,SAAS,aAAa,8BAAA,GAAsE;AAC9F,CAAC,CAAC,CAAC,SAAS,EAAE,YAAY,8BAA8B,CAAC;;AAGzD,IAAa,gCAAgC,SAAO,SAAS;CAC3D;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;;;;;;;;AASD,IAAa,4BAA4B,SAAO,OAAO;CACrD,KAAK,oBAAoB,KAAK,oBAAoB;CAClD,QAAQ,oBAAoB,KAAK,uBAAuB;CACxD,UAAU,SAAO,OAAO,oBAAoB,KAAK,yBAAyB,CAAC;CAC3E,gBAAgB,SAAO,OAAO,SAAO,OAAO,MAAM,SAAO,uBAAuB,CAAC,CAAC,CAAC;CACnF,SAAS,SAAO,YAAY,cAAY,KAAK,wBAAwB,CAAC;CACtE,aAAa,SAAO,YAAY,SAAO,OAAO,QAAQ,CAAC;CACvD,oBAAoB,SAAO,YAAY,SAAO,OAAO,QAAQ,CAAC;CAC9D,aAAa,SAAO,YAAY,SAAO,OAAO,QAAQ,CAAC;CACvD,WAAW,SAAO,YAAY,SAAO,OAAO,yBAAyB,CAAC;CACtE,SAAS,SAAO,YAAY,SAAO,OAAO,sBAAsB,CAAC;CACjE,YAAY,SAAO,YAAY,SAAO,OAAO,yBAAyB,CAAC;CACvE,QAAQ,SAAO,YACb,aAAa,oBAAoB,KAAK,sBAAsB,GAAA,GAAkC,CAChG;CACA,YAAY,SAAO,YAAY,aAAa,2BAAA,GAA8D,CAAC;CAC3G,aAAa,SAAO,YAAY,aAAa,2BAAA,EAAgE,CAAC;CAC9G,WAAW,SAAO,YAAY,SAAO,OAAO,aAAa,CAAC;CAC1D,WAAW,SAAO,YAAY,SAAO,OAAO,aAAa,CAAC;CAC1D,SAAS,SAAO,YAAY,SAAO,OAAO,aAAa,CAAC;CACxD,YAAY,SAAO,YAAY,SAAO,OAAO,aAAa,CAAC;CAC3D,QAAQ,SAAO,YAAY,SAAO,OAAO,sBAAsB,CAAC;CAChE,UAAU,SAAO,YAAY,aAAa,wBAAA,GAAyD,CAAC;CACpG,wBAAwB,SAAO,YAAY,SAAO,OAAO,cAAc,CAAC;CACxE,wBAAwB,SAAO,YAAY,SAAO,OAAO,cAAc,CAAC;CACxE,uBAAuB,SAAO,YAAY,SAAO,OAAO,cAAc,CAAC;CACvE,eAAe,SAAO,YAAY,aAAa,6BAAA,GAAmE,CAAC;CACnH,UAAU,SAAO,YAAY,aAAa,wBAAA,GAAyD,CAAC;CACpG,cAAc,SAAO,YAAY,SAAO,IAAI,MAAM,SAAO,uBAAuB,CAAC,CAAC,CAAC;CACnF,mBAAmB,SAAO,YAAY,SAAO,OAAO;CACpD,wBAAwB,SAAO,YAAY,SAAO,OAAO;CACzD,SAAS,SAAO,YAAY,aAAa,6BAAA,GAA6D,CAAC;CACvG,cAAc,SAAO,YAAY,SAAO,IAAI,MAAM,SAAO,uBAAuB,CAAC,CAAC,CAAC;CACnF,kBAAkB,SAAO,YAAY,SAAO,OAAO;CACnD,iBAAiB,SAAO,YAAY,aAAa,+BAA+B,EAAE,CAAC,CAAC,MAAM,SAAO,SAAS,CAAC,CAAC;AAC9G,CAAC,CAAC,CAAC,SAAS,EAAE,YAAY,4BAA4B,CAAC;;;AClKvD,IAAM,iBAAe,SAAiB,eACpC,SAAO,OAAO,MAAM,SAAO,UAAU,GAAG,SAAO,WAAW,GAAG,SAAO,YAAY,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,WAAW,CAAC;;AAGnH,IAAa,wBAAwB,SAAO,OAAO;CACjD,gBAAgB,SAAO,QAAQ,eAAe;CAC9C,UAAU,SAAO,OAAO,MAAM,SAAO,YAAY,MAAO,CAAC;AAC3D,CAAC;;AAGD,IAAa,wBAAwB,SAAO,OAAO;CACjD,QAAQ,SAAO,IAAI,MAAM,SAAO,cAAc,CAAC,CAAC;CAChD,WAAW;CACX,SAAS,SAAO,OAAO,SAAO,OAAO,MAAM,SAAO,YAAY,GAAK,CAAC,CAAC;CACrE,WAAW,SAAO;CAClB,sBAAsB,SAAO,OAAO,cAAY,KAAK,iCAAiC,CAAC;AACzF,CAAC;;AAGD,IAAa,4BAA4B,SAAO,OAAO;CACrD,gBAAgB,cAAY,KAAK,+BAA+B;CAChE,aAAa,cAAY,KAAK,4BAA4B;CAC1D,QAAQ,SAAO;CACf,UAAU,SAAO;CACjB,UAAU,SAAO;CACjB,OAAO,SAAO,MAAM,SAAO,SAAS;EAAC;EAAS;EAAU;EAAe;CAAS,CAAC,CAAC,CAAC,CAAC,MAClF,SAAO,WAAW,GAClB,SAAO,SAAS,CAClB;AACF,CAAC;;AAGD,IAAa,2BAA2B,SAAO,OAAO;CACpD,IAAI,cAAY,KAAK,kBAAkB;CACvC,OAAO,cAAY,KAAK,qBAAqB;CAC7C,WAAW;CACX,WAAW,SAAO,OAAO,SAAO,OAAO,MAAM,SAAO,UAAU,GAAG,SAAO,YAAY,GAAG,CAAC,CAAC;CACzF,UAAU,SAAO,OAAO,SAAO,IAAI,MAAM,SAAO,uBAAuB,CAAC,CAAC,CAAC;CAC1E,SAAS,SAAO,OAAO,SAAO,IAAI,MAAM,SAAO,cAAc,CAAC,CAAC,CAAC;AAClE,CAAC;AAED,IAAM,mBAAmB,SAAO,OAAO;CACrC,UAAU,SAAO;CACjB,cAAc,SAAO,IAAI,MAAM,SAAO,UAAU;EAAE,SAAS;EAAG,SAAS;CAAE,CAAC,CAAC;AAC7E,CAAC;;AAGD,IAAa,2BAA2B,SAAO,OAAO;CACpD,eAAe,SAAO,YAAY,cAAY,KAAK,mBAAmB,CAAC;CACvE,gBAAgB,SAAO,YAAY,SAAO,OAAO,cAAY,KAAK,oBAAoB,CAAC,CAAC;CACxF,WAAW,SAAO,YAAY,YAAY;CAC1C,WAAW,SAAO,YAAY,YAAY;CAC1C,SAAS,SAAO,YAAY,SAAO,OAAO,qBAAqB,CAAC;CAChE,cAAc,SAAO,YAAY,SAAO,SAAS,CAAC,UAAU,MAAM,CAAC,CAAC;CACpE,UAAU,SAAO,YAAY,SAAO,MAAM,qBAAqB,CAAC,CAAC,MAAM,SAAO,YAAY,GAAG,CAAC,CAAC;CAC/F,gBAAgB,SAAO,YAAY,gBAAgB;CACnD,cAAc,SAAO,YAAY,SAAO,MAAM,yBAAyB,CAAC,CAAC,MAAM,SAAO,YAAY,GAAG,CAAC,CAAC;CACvG,aAAa,SAAO,YAAY,SAAO,MAAM,wBAAwB,CAAC,CAAC,MAAM,SAAO,YAAY,EAAE,CAAC,CAAC;CACpG,qBAAqB,SAAO,YAAY,gBAAgB;CACxD,kBAAkB,SAAO,YAAY,gBAAgB;AACvD,CAAC;;;AC3CD,IAAM,eAAe,SAAiB,eACpC,SAAO,OAAO,MACZ,SAAO,UAAU,GACjB,SAAO,WAAW,GAClB,SAAO,YAAY,OAAO,CAC5B,CAAC,CAAC,SAAS,EAAE,WAAW,CAAC;;AAG3B,IAAa,qBAAqB,SAAO,SAAS;CAChD;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;;AAMD,IAAa,wBAAwB,SAAO,SAAS;CACnD;CACA;CACA;CACA;CACA;AACF,CAAC;;AAMD,IAAa,4BAA4B,SAAO,SAAS;CAAC;CAAU;CAAQ;AAAQ,CAAC;;AAMrF,IAAa,2BAA2B,SAAO,MAAM,CACnD,oBACA,SAAO,SAAS,CAAC,WAAW,aAAa,CAAC,CAC5C,CAAC;;AAMD,IAAa,iBAAiB,SAAO,IAAI,MAAM,SAAO,cAAc,CAAC,CAAC,CAAC,CAAC,KACtE,SAAO,MAAM,gBAAgB,CAC/B;AAKA,IAAM,eAAe,SAAO,aAAa,SAAS,EAChD,GAAG,0BAA0B,OAC/B,CAAC;AAED,IAAM,qBAAqB,SAAO,aAAa,gBAAgB;CAC7D,YAAY,YAAY,KAAK,gBAAgB;CAC7C,cAAc,YAAY,KAAK,cAAc;CAC7C,cAAc,YAAY,KAAK,cAAc;CAC7C,cAAc,YAAY,KAAK,cAAc;CAC7C,aAAa,SAAO,SAAS;EAAC;EAAiB;EAAa;EAAqB;EAAY;CAAQ,CAAC;CACtG,WAAW,SAAO,YAAY,SAAO,OAAO,SAAO,SAAS;EAAC;EAAQ;EAAU;CAAQ,CAAC,CAAC,CAAC;CAC1F,aAAa,SAAO,YAAY,SAAO,OAAO,SAAO,OAAO,MAAM,SAAO,YAAY,GAAM,CAAC,CAAC,CAAC;CAC9F,iBAAiB,SAAO,YAAY,SAAO,OAAO,YAAY,KAAK,4BAA4B,CAAC,CAAC;CACjG,cAAc,SAAO,YAAY,SAAO,OAAO,YAAY,KAAK,cAAc,CAAC,CAAC;CAChF,mBAAmB,SAAO,YAAY,SAAO,OAAO,YAAY,KAAK,mBAAmB,CAAC,CAAC;CAC1F,WAAW,SAAO,YAAY,SAAO,OAAO,YAAY,IAAI,sBAAsB,CAAC,CAAC;CACpF,WAAW,SAAO,YAAY,SAAO,OAAO,YAAY,IAAI,sBAAsB,CAAC,CAAC;AACtF,CAAC;AAED,IAAM,cAAc,SAAO,aAAa,QAAQ;CAC9C,GAAG,yBAAyB;CAC5B,UAAU,YAAY,KAAK,UAAU;CACrC,UAAU,YAAY,KAAK,cAAc;CACzC,QAAQ,SAAO,SAAS;EAAC;EAAS;EAAW;CAAY,CAAC;CAC1D,iBAAiB,SAAO,SACtB,SAAO,MAAM,YAAY,KAAK,gBAAgB,CAAC,CAAC,CAAC,MAAM,SAAO,SAAS,GAAG,SAAO,YAAY,GAAG,CAAC,CACnG;CACA,uBAAuB,SAAO,SAC5B,SAAO,MAAM,YAAY,KAAK,sBAAsB,CAAC,CAAC,CAAC,MAAM,SAAO,SAAS,GAAG,SAAO,YAAY,GAAG,CAAC,CACzG;AACF,CAAC;AAED,IAAM,0BAA0B,SAAO,SAAS;CAAC;CAAU;CAAW;CAAa;CAAU;AAAS,CAAC;AAEvG,IAAM,yBAAyB,SAAO,OAAO;CAC3C,YAAY,YAAY,KAAK,0BAA0B;CACvD,YAAY,SAAO,OAAO,YAAY,KAAK,0BAA0B,CAAC;CACtE,iBAAiB,SAAO,OAAO,YAAY,KAAK,+BAA+B,CAAC;AAClF,CAAC;AAED,IAAM,gBAAgB,SAAO,OAAO;CAClC,MAAM,YAAY,KAAK,mBAAmB;CAC1C,QAAQ;CACR,aAAa,SAAO,IAAI,MAAM,SAAO,uBAAuB,CAAC,CAAC;CAC9D,kBAAkB,SAAO;AAC3B,CAAC;AAED,IAAM,yBAAyB,SAAO,OAAO;CAC3C,MAAM,YAAY,KAAK,4BAA4B;CACnD,WAAW,SAAO,SAAS,CAAC,SAAS,QAAQ,CAAC;CAC9C,QAAQ,SAAO,QAAQ,gBAAgB;AACzC,CAAC;AAED,IAAM,iBAAiB,SAAO,OAAO;CACnC,mBAAmB,YAAY,KAAK,2BAA2B;CAC/D,WAAW,YAAY,KAAK,yBAAyB;CACrD,YAAY,YAAY,KAAK,oBAAoB;CACjD,QAAQ;CACR,WAAW,SAAO,OAAO,YAAY;CACrC,WAAW,SAAO,OAAO,YAAY;CACrC,WAAW,SAAO,OAAO,YAAY,KAAK,qBAAqB,CAAC;CAChE,UAAU,SAAO,OAAO,YAAY,KAAK,wBAAwB,CAAC;CAClE,UAAU,SAAO,OAAO,YAAY,KAAK,wBAAwB,CAAC;CAClE,OAAO,SAAO,OAAO,YAAY,KAAK,qBAAqB,CAAC;CAC5D,SAAS,SAAO,OAAO,YAAY,KAAK,uBAAuB,CAAC;CAChE,QAAQ,SAAO,OAAO,YAAY,KAAK,sBAAsB,CAAC;CAC9D,0BAA0B,SAAO,OAAO,YAAY,KAAK,kCAAkC,CAAC;CAC5F,WAAW,SAAO,OAAO,YAAY,KAAK,yBAAyB,CAAC;CACpE,cAAc,SAAO,OAAO,YAAY,KAAK,4BAA4B,CAAC;CAC1E,WAAW,SAAO,MAAM,sBAAsB,CAAC,CAAC,MAAM,SAAO,YAAY,GAAG,CAAC;AAC/E,CAAC;AAED,IAAM,yBAAyB,SAAO,OAAO;CAC3C,MAAM,YAAY,KAAK,4BAA4B;CACnD,YAAY,SAAO,OAAO,YAAY,KAAK,kCAAkC,CAAC;CAC9E,iBAAiB,SAAO,OAAO,YAAY,KAAK,uCAAuC,CAAC;CACxF,WAAW,SAAO,OAAO,YAAY;CACrC,QAAQ,SAAO,QAAQ,gBAAgB;AACzC,CAAC;AAED,IAAM,kBAAkB,SAAO,aAAa,sBAAsB;CAChE,cAAc,YAAY,KAAK,cAAc;CAC7C,aAAa,YAAY,KAAK,qBAAqB;CACnD,QAAQ;CACR,iBAAiB,YAAY,KAAK,yBAAyB;CAC3D,iBAAiB,SAAO,YAAY,SAAO,OAAO,SAAO,IAAI,MAAM,SAAO,cAAc,CAAC,CAAC,CAAC,CAAC;CAC5F,eAAe,SAAO,YAAY,SAAO,OAAO,YAAY,KAAK,uBAAuB,CAAC,CAAC;CAC1F,WAAW,SAAO,YAAY,SAAO,OAAO,YAAY,CAAC;CACzD,WAAW,SAAO,YAAY,SAAO,OAAO,YAAY,CAAC;CACzD,aAAa,SAAO,YAAY,SAAO,OAAO,YAAY,KAAK,qBAAqB,CAAC,CAAC;CACtF,eAAe,SAAO,YAAY,SAAO,OAAO,YAAY,KAAK,uBAAuB,CAAC,CAAC;CAC1F,eAAe,SAAO,YAAY,SAAO,OAAO,YAAY,KAAK,uBAAuB,CAAC,CAAC;CAC1F,eAAe,SAAO,YAAY,SAAO,OAAO,YAAY,KAAK,uBAAuB,CAAC,CAAC;CAC1F,2BAA2B,SAAO,YAChC,SAAO,OAAO,YAAY,KAAK,mCAAmC,CAAC,CACrE;CACA,iBAAiB,SAAO,YACtB,SAAO,MAAM,sBAAsB,CAAC,CAAC,MACnC,SAAO,YACJ,cAAc,IAAI,IAAI,UAAU,KAAK,aAAa,SAAS,UAAU,CAAC,CAAC,CAAC,SAAS,UAAU,QAC5F,EAAE,UAAU,sCAAsC,CACpD,GACA,SAAO,YAAY,GAAG,CACxB,CACF;CACA,QAAQ,SAAO,YACb,SAAO,MAAM,aAAa,CAAC,CAAC,MAC1B,SAAO,YACJ,WAAW,IAAI,IAAI,OAAO,KAAK,UAAU,MAAM,IAAI,CAAC,CAAC,CAAC,SAAS,OAAO,QACvE,EAAE,UAAU,8BAA8B,CAC5C,GACA,SAAO,YAAY,GAAG,CACxB,CACF;CACA,SAAS,SAAO,YACd,SAAO,MAAM,cAAc,CAAC,CAAC,MAC3B,SAAO,YACJ,YAAY,IAAI,IAAI,QAAQ,KAAK,WAAW,OAAO,iBAAiB,CAAC,CAAC,CAAC,SAAS,QAAQ,QACzF,EAAE,UAAU,+CAA+C,CAC7D,GACA,SAAO,YAAY,GAAG,CACxB,CACF;CACA,aAAa,SAAO,YAAY,SAAO,IAAI,MAAM,SAAO,uBAAuB,CAAC,CAAC,CAAC;CAClF,kBAAkB,SAAO,YAAY,SAAO,OAAO;CACnD,iBAAiB,SAAO,YAAY,SAAO,IAAI,MAAM,SAAO,UAAU;EAAE,SAAS;EAAG,SAAS;CAAE,CAAC,CAAC,CAAC;CAClG,iBAAiB,SAAO,YACtB,SAAO,MAAM,sBAAsB,CAAC,CAAC,MAAM,SAAO,YAAY,GAAG,CAAC,CACpE;AACF,CAAC;AAED,IAAM,oBAAoB,SAAO,aAAa,cAAc;CAC1D,eAAe;CACf,UAAU,YAAY,KAAK,oBAAoB;CAC/C,QAAQ,SAAO,SAAS;EAAC;EAAW;EAAa;EAAa;EAAU;CAAa,CAAC;AACxF,CAAC;AAED,IAAM,mBAAmB,SAAO,aAAa,cAAc;CACzD,iBAAiB,SAAO,IAAI,MAAM,SAAO,uBAAuB,CAAC,CAAC;CAClE,UAAU,SAAO;CACjB,eAAe,SAAO,SAAS;EAAC;EAAW;EAAY;EAAY;CAAc,CAAC;CAClF,QAAQ,SAAO,YAAY,SAAO,OAAO;CACzC,aAAa,SAAO,YAAY,SAAO,OAAO,YAAY,KAAO,8BAA8B,CAAC,CAAC;CACjG,WAAW,SAAO,YAAY,SAAO,OAAO,YAAY,KAAK,mBAAmB,CAAC,CAAC;CAClF,QAAQ,SAAO,YAAY,YAAY,KAAK,gBAAgB,CAAC;CAC7D,WAAW,SAAO,YAAY,YAAY;CAC1C,SAAS,SAAO,YAAY,SAAO,OAAO,YAAY,CAAC;AACzD,CAAC;;AAGD,IAAa,wBAAwB,SAAO,MAAM;CAChD;CACA;CACA;CACA;CACA;CACA;AACF,CAAC,CAAC,CAAC,KAAK,SAAO,cAAc,MAAM,CAAC;;AAMpC,IAAa,2BAA2B,SAAO,OAAO;CACpD,aAAa;CACb,UAAU;CACV,oBAAoB;CACpB,sBAAsB;CACtB,8BAA8B,SAAO,OAAO,cAAc;CAC1D,yBAAyB,SAAO,IAAI,MAAM,SAAO,cAAc,CAAC,CAAC;CACjE,aAAa,SAAO,SAAS,CAAC,WAAW,SAAS,CAAC;CACnD,YAAY;CACZ,YAAY,YAAY,KAAK,kBAAkB;CAC/C,OAAO,YAAY,KAAK,aAAa;CACrC,SAAS;AACX,CAAC,CAAC,CAAC,MACD,SAAO,YACJ,EAAE,SAAS,iBAAiB,QAAQ,SAAS,YAC9C,EAAE,UAAU,mDAAmD,CACjE,GACA,SAAO,YACJ,EAAE,oBAAoB,mCACrB,uBAAuB,IACnB,iCAAiC,OACjC,iCAAiC,qBAAqB,GAC5D,EAAE,UAAU,8DAA8D,CAC5E,CACF;;AAMA,IAAa,uBAAuB,SAAO,YAAY;CACrD,QAAQ;EAAE,UAAU;EAAU,YAAY;CAAmB;CAC7D,aAAa;EAAE,eAAe;EAAe,WAAW;CAAU;CAClE,SAAS,EAAE,WAAW,UAAU;AAClC,CAAC;;AAGD,IAAa,eAAe,SAAO,OAAO;CACxC,aAAa;CACb,QAAQ;CACR,cAAc;CACd,YAAY,SAAO,YAAY;EAC7B,UAAU,EAAE,QAAQ,qBAAqB;EACzC,SAAS;GACP,cAAc,SAAO,SAAS;IAAC;IAAU;IAAW;GAAa,CAAC;GAClE,oBAAoB,SAAO,OAAO,kBAAkB;GACpD,YAAY,YAAY,KAAK,wBAAwB;EACvD;CACF,CAAC;CACD,WAAW;AACb,CAAC,CAAC,CAAC,MACD,SAAO,YACJ,EAAE,iBACD,WAAW,SAAS,aACnB,WAAW,iBAAiB,cAAe,WAAW,uBAAuB,OAChF,EAAE,UAAU,6DAA6D,CAC3E,GACA,SAAO,YACJ,EAAE,cAAc,iBAAiB;CAChC,IAAI,WAAW,SAAS,WACtB,OAAO,WAAW,iBAAiB,WAC/B,iBAAiB,WAAW,qBAC5B,iBAAiB,WAAW;CAGlC,OAAO,WAAW,OAAO,SAAS,WAC9B,iBAAiB,WAAW,OAAO,aACnC,iBAAiB,WAAW,OAAO;AACzC,GACA,EAAE,UAAU,yEAAyE,CACvF,CACF;;AAMA,IAAa,mBAAmB,SAAO,SAAS;CAC9C;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AAKD,IAAM,kCAA2E;CAC/E;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF;;;;;;AAqBA,IAAa,kCAET;CACF,YAAY;EAAE,QAAQ,CAAC,SAAS;EAAG,QAAQ;GArB3C;GACA;GACA;GACA;GACA;GACA;EAgB2C;CAA0B;CACrE,cAAc;EAAE,QAAQ,CAAC,cAAc;EAAG,QAAQ,CAAC,OAAO;CAAE;CAC5D,cAAc;EACZ,QAAQ;EACR,QAAQ;CACV;CACA,eAAe;EAAE,QAAQ,CAAC,cAAc;EAAG,QAAQ,CAAC,oBAAoB;CAAE;CAC1E,gBAAgB;EAAE,QAAQ,CAAC,cAAc;EAAG,QAAQ,CAAC,oBAAoB;CAAE;CAC3E,iBAAiB;EAAE,QAAQ,CAAC,SAAS,SAAS;EAAG,QAAQ,CAAC,MAAM;CAAE;CAClE,mBAAmB;EAAE,QAAQ,CAAC,YAAY;EAAG,QAAQ,CAAC,OAAO;CAAE;AACjE;AAEA,IAAM,iCACJ,MACA,gBACA,mBACY;CACZ,MAAM,OAAiC,gCAAgC;CACvE,OAAO,KAAK,OAAO,MAAM,cAAc,cAAc,cAAc,KACjE,KAAK,OAAO,MAAM,cAAc,cAAc,cAAc;AAChE;;AAGA,IAAa,yBAAyB,SAAO,YAAY;CACvD,SAAS,EAAE,WAAW,YAAY,KAAO,wCAAwC,EAAE;CACnF,WAAW,CAAC;CACZ,UAAU;EACR,OAAO,SAAO,OAAO,MAAM,SAAO,UAAU;GAAE,SAAS;GAAG,SAAS;EAAE,CAAC,CAAC;EACvE,WAAW,YAAY,KAAO,iCAAiC;CACjE;AACF,CAAC;;AAMD,IAAa,yBAAyB,SAAO,YAAY;CACvD,QAAQ;EACN,oBAAoB;EACpB,gBAAgB;EAChB,sBAAsB;CACxB;CACA,OAAO;EAAE,UAAU;EAAU,WAAW,YAAY,KAAO,4BAA4B;CAAE;CACzF,OAAO;EAAE,SAAS;EAAS,WAAW,YAAY,KAAO,4BAA4B;CAAE;CACvF,MAAM;EACJ,QAAQ,YAAY,KAAK,oBAAoB;EAC7C,aAAa,SAAO,IAAI,MAAM,SAAO,cAAc,CAAC,CAAC;EACrD,WAAW,YAAY,KAAO,2BAA2B;CAC3D;AACF,CAAC;;AAMD,IAAa,wBAAwB,SAAO,YAAY;CACtD,SAAS;EAAE,aAAa;EAAc,QAAQ,YAAY,KAAO,2BAA2B;CAAE;CAC9F,UAAU,EAAE,aAAa,aAAa;CACtC,UAAU,EAAE,aAAa,aAAa;CACtC,UAAU,EAAE,aAAa,aAAa;CACtC,UAAU,EAAE,aAAa,aAAa;CACtC,UAAU;EAAE,aAAa;EAAc,QAAQ,YAAY,KAAO,iBAAiB;CAAE;CACrF,YAAY;EAAE,aAAa;EAAc,QAAQ,YAAY,KAAO,oBAAoB;CAAE;AAC5F,CAAC;;AAMD,IAAa,oBAAoB,SAAO,OACtC,SAAO,YAAY;CACjB,SAAS,EAAE,WAAW,UAAU;CAChC,aAAa;EAAE,WAAW;EAAW,eAAe;CAAc;AACpE,CAAC,CACH;;AAGA,IAAa,cAAc,SAAO,YAAY;CAC5C,OAAO,EAAE,UAAU,SAAS;CAC5B,OAAO,EAAE,SAAS,QAAQ;CAC1B,QAAQ,EAAE,WAAW,YAAY,KAAK,uBAAuB,EAAE;AACjE,CAAC;;AAGD,IAAa,uBAAuB,SAAO,OAAO;CAChD,aAAa;CACb,gBAAgB;CAChB,2BAA2B,SAAO,QAAQ,CAAC;CAC3C,UAAU;CACV,oBAAoB,SAAO,OAAO,cAAc;CAChD,MAAM;CACN,cAAc;CACd,gBAAgB;CAChB,cAAc;CACd,gBAAgB;CAChB,OAAO;CACP,WAAW;CACX,YAAY;CACZ,YAAY;CACZ,YAAY;CACZ,kBAAkB,SAAO,MAAM,eAAe,CAAC,CAAC,MAAM,SAAO,YAAY,GAAG,CAAC;CAC7E,YAAY;AACd,CAAC,CAAC,CAAC,MACD,SAAO,YACJ,EAAE,uBAAuB,IAAI,IAAI,gBAAgB,CAAC,CAAC,SAAS,iBAAiB,QAC9E,EAAE,UAAU,gDAAgD,CAC9D,GACA,SAAO,YACJ,EAAE,YAAY,uBAAuB,WAAW,SAAS,eAAe,iBAAiB,SAAS,GACnG,EAAE,UAAU,oEAAoE,CAClF,GACA,SAAO,YACJ,EAAE,cAAc,mBAAmB,iBAAiB,cACrD,EAAE,UAAU,2CAA2C,CACzD,GACA,SAAO,YACJ,EAAE,MAAM,gBAAgB,qBAAqB,8BAA8B,MAAM,gBAAgB,cAAc,GAChH,EAAE,UAAU,8EAA8E,CAC5F,GACA,SAAO,YACJ,EAAE,MAAM,YAAY,SAAS,cAAc,UAAU,MACtD,EAAE,UAAU,wEAAwE,CACtF,GACA,SAAO,YACJ,EAAE,YAAY,gBAAgB,UAAU,SAAS,cAAc,WAAW,SAAS,aACpF,EAAE,UAAU,uEAAuE,CACrF,GACA,SAAO,YACJ,EAAE,UAAU,yBACX,aAAa,IAAI,uBAAuB,OAAO,uBAAuB,WAAW,GACnF,EAAE,UAAU,yDAAyD,CACvE,CACF;;AAMA,IAAa,oBAAoB,SAAO,SAAS;CAC/C;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;;AAMD,IAAa,gBAAgB,SAAO,YAAY;CAC9C,MAAM,EAAE,OAAO,SAAO,QAAQ;CAC9B,OAAO,EAAE,OAAO,YAAY,KAAK,eAAe,EAAE;CAClD,UAAU,EAAE,OAAO,YAAY,KAAK,kBAAkB,EAAE;CACxD,WAAW,EAAE,cAAc,YAAY;AACzC,CAAC;;AAMD,IAAa,sBAAsB,SAAO,YAAY;CACpD,QAAQ;EACN,oBAAoB;EACpB,gBAAgB;EAChB,sBAAsB;CACxB;CACA,OAAO,EAAE,UAAU,SAAS;CAC5B,OAAO,EAAE,SAAS,QAAQ;CAC1B,QAAQ,EAAE,WAAW,YAAY,KAAK,yBAAyB,EAAE;AACnE,CAAC;;AAMD,IAAa,oBAAoB,SAAO,OAAO;CAC7C,gBAAgB,SAAO,SAAS;EAAC;EAAS;EAAY;CAAkB,CAAC;CACzE,aAAa,SAAO,OAAO,YAAY;CACvC,WAAW,SAAO;AACpB,CAAC;;AAMD,IAAa,mBAAmB,SAAO,YAAY;CACjD,OAAO,EAAE,UAAU,SAAS;CAC5B,OAAO,EAAE,SAAS,QAAQ;CAC1B,QAAQ,EAAE,WAAW,YAAY,KAAK,2BAA2B,EAAE;AACrE,CAAC;;AAGD,IAAa,eAAe,SAAO,OAAO;CACxC,aAAa;CACb,YAAY;CACZ,eAAe,SAAO,IAAI,MAAM,SAAO,cAAc,CAAC,CAAC;CACvD,aAAa;CACb,UAAU;CACV,YAAY;CACZ,YAAY;CACZ,YAAY,SAAO,OAAO,YAAY;CACtC,WAAW;CACX,WAAW;AACb,CAAC,CAAC,CAAC,MACD,SAAO,YACJ,EAAE,aAAa,gBAAgB;CAC9B,IAAI,YAAY,SAAS,UAAU,OAAO;CAE1C,OAAO,UAAU,WAAW,SAAS,UACnC,YAAY,uBAAuB,UAAU,WAAW,eAAe;AAC3E,GACA,EAAE,UAAU,2EAA2E,CACzF,GACA,SAAO,YACJ,EAAE,YAAY,iBAAiB,WAAS,MAAM,YAAY,UAAU,KAAK,GAC1E,EAAE,UAAU,yDAAyD,CACvE,GACA,SAAO,YACJ,EAAE,YAAY,iBAAiB,eAAe,QAAQ,WAAS,MAAM,YAAY,UAAU,IAAI,GAChG,EAAE,UAAU,6CAA6C,CAC3D,GACA,SAAO,YACJ,EAAE,YAAY,gBACb,UAAU,gBAAgB,QAAQ,WAAS,MAAM,YAAY,UAAU,WAAW,KAAK,GACzF,EAAE,UAAU,iDAAiD,CAC/D,CACF;;AAMA,IAAa,gBAAgB,SAAO,OAAO;CACzC,aAAa;CACb,iBAAiB;CACjB,YAAY;CACZ,eAAe;CACf,WAAW;CACX,OAAO;CACP,YAAY;CACZ,2BAA2B,SAAO,OAAO,eAAe;AAC1D,CAAC,CAAC,CAAC,MACD,SAAO,YACJ,EAAE,iBAAiB,gCAAgC,oBAAoB,2BACxE,EAAE,UAAU,mCAAmC,CACjD,CACF;AAWA,IAAM,qBACJ,WACA,OAC0C;CAC1C,IAAI,UAAU,SAAS,WAAW,OAAO,UAAU;CAGnD,OADwB,WAAS,cAAc,EAAE,IAAI,WAAS,cAAc,UAAU,gBAAgB,IAC7E,UAAU,oBAAoB,MAAQ,YAAY;AAC7E;;AAGA,IAAa,uBACX,UACA,QACiC;CACjC,QAAQ,kBAAkB,SAAS,WAAW,EAAE;CAChD,UAAU,SAAS,eAAe,QAAQ,WAAS,MAAM,IAAI,SAAS,UAAU,IAAI,IAChF,UACA;AACN;;AAGA,IAAa,kCACX,UACA,OAEA,CAAC,SAAS,UAAU,aAClB,SAAS,UAAU,gBAAgB,QACnC,WAAS,MAAM,SAAS,UAAU,aAAa,EAAE,KAAK,IACpD,aACA;;;AChoBN,IAAM,cAAc,IAAI,YAAY;AACpC,IAAM,uBAAuB,iBAC3B,SAAO,YACJ,UAAmB;CAClB,MAAM,aAAa,KAAK,UAAU,KAAK;CACvC,OAAO,eAAe,KAAA,KAAa,YAAY,OAAO,UAAU,CAAC,CAAC,cAAc;AAClF,GACA,EAAE,UAAU,2BAA2B,aAAa,cAAc,CACpE;AACF,IAAM,uBAAuB,YAAY,MAAM,SAAO,cAAc,CAAC,CAAC;;AAGtE,IAAa,iCAAiC;;AAG9C,IAAa,2BAA2B,SAAO,OAAO,MACpD,SAAO,UAAU,GACjB,SAAO,WAAW,GAClB,SAAO,YAAY,GAAG,GACtB,SAAO,UAAU,uBAAuB,EAAE,UAAU,uCAAuC,CAAC,CAC9F,CAAC,CAAC,KAAK,SAAO,MAAM,0BAA0B,CAAC;;AAM/C,IAAa,wBAAwB,SAAO,OAAO;CACjD,WAAW,SAAO,YAAY,SAAS;CACvC,oBAAoB,SAAO,YAAY,kBAAkB;CACzD,UAAU,SAAO,YAAY,QAAQ;CACrC,OAAO,SAAO,YAAY,KAAK;AACjC,CAAC,CAAC,CAAC,SAAS,EAAE,YAAY,wBAAwB,CAAC;;AAMnD,IAAa,8BAA8B,SAAO,SAAS,CAAC,sBAAsB,eAAe,CAAC;;AAMlG,IAAa,gCAAgC,SAAO,OAAO,EACzD,QAAQ,4BACV,CAAC,CAAC,CAAC,MAAM,oBAAoB,8BAA8B,CAAC,CAAC,CAAC,SAAS,EAAE,YAAY,gCAAgC,CAAC;;AAMtH,IAAa,8BAA8B,SAAO,OAAO;CACvD,eAAe,SAAO,QAAQ,CAAC;CAC/B,SAAS;CACT,aAAa;CACb,aAAa;CACb,WAAW,SAAO,QAAQ,uBAAuB;CACjD,YAAY;CACZ,YAAY;CACZ,aAAa,SAAO,OAAO,aAAa;CACxC,eAAe,SAAO,OAAO,wBAAwB;CACrD,UAAU;CACV,SAAS;AACX,CAAC,CAAC,CAAC,SAAS,EAAE,YAAY,8BAA8B,CAAC;;;ACpDzD,IAAM,oBAAkB,SAAO,IAAI,MAAM,SAAO,cAAc,CAAC,CAAC;AAChE,IAAM,uBAAqB,MAAc,kBACvC,SAAO,OAAO,MACZ,SAAO,UAAU,GACjB,SAAO,WAAW,GAClB,SAAO,YAAY,aAAa,GAChC,SAAO,UAAU,wBAAwB,EAAE,UAAU,8BAA8B,CAAC,CACtF,CAAC,CAAC,KAAK,SAAO,MAAM,IAAI,CAAC;AAC3B,IAAM,gBAAgB,SACpB,SAAO,OAAO,MACZ,SAAO,UAAU,0BAA0B,EAAE,UAAU,6BAA6B,CAAC,CACvF,CAAC,CAAC,KAAK,SAAO,MAAM,IAAI,CAAC;AAC3B,IAAM,eAAe,MAAc,UAA0B,OAAO,QAAQ,KAAK,OAAO,QAAQ,IAAI;AACpG,IAAM,mBAAmB,WACvB,OAAO,OAAO,OAAO,UAAU,UAAU,KAAK,YAAY,OAAO,QAAQ,MAAM,IAAI,KAAK,IAAI,CAAC;;AAG/F,IAAa,+BAA+B,aAAa,8BAA8B;;AAMvF,IAAa,kCAAkC,aAAa,iCAAiC;;AAM7F,IAAa,uCAAuC,aAAa,sCAAsC;;AAMvG,IAAa,oCAAoC,aAAa,mCAAmC;;AAMjG,IAAa,8BAA8B,aAAa,6BAA6B;;AAMrF,IAAa,6BAA6B,aAAa,4BAA4B;;AAMnF,IAAa,yBAAyB,oBAAkB,0BAA0B,GAAG;;AAMrF,IAAa,+BAA+B,SAAO,OAAO,MACxD,SAAO,UAAU,GACjB,SAAO,WAAW,GAClB,SAAO,YAAY,GAAG,CACxB,CAAC,CAAC,KAAK,SAAO,MAAM,8BAA8B,CAAC;;AAMnD,IAAa,yCAAyC,kBAAgB,KACpE,SAAO,MAAM,wCAAwC,CACvD;;AAMA,IAAa,gDAAgD,aAC3D,+CACF;;AAMA,IAAa,8BAA8B,SAAO,OAAO;CACvD,UAAU;CACV,eAAe;CACf,cAAc;CACd,oBAAoB;AACtB,CAAC;;AAMD,IAAa,mCAAmC,SAAO,OAAO;CAC5D,eAAe,SAAO,QAAQ,CAAC;CAC/B,UAAU;CACV,aAAa;CACb,QAAQ;CACR,eAAe;CACf,mBAAmB;CACnB,kBAAkB;CAClB,UAAU,SAAO,SAAS,CAAC,WAAW,QAAQ,CAAC;CAC/C,aAAa;AACf,CAAC;;AAMD,IAAa,iCAAiC,SAAO,OAAO;CAC1D,aAAa;CACb,UAAU;CACV,YAAY;CACZ,gBAAgB;AAClB,CAAC;;AAMD,IAAa,kCAAkC,SAAO,OAAO;CAC3D,aAAa;CACb,YAAY;CACZ,kBAAkB,SAAO,MAAM,eAAe,CAAC,CAAC,MAC9C,SAAO,SAAS,GAChB,SAAO,WAAW,iBAAiB,EAAE,UAAU,+CAA+C,CAAC,GAC/F,SAAO,YAAY,qBAAqB,iBAAiB,UAAU,KAAK,EACtE,UAAU,gDACZ,CAAC,CACH;CACA,YAAY;CACZ,YAAY,SAAO,OAAO,YAAY;CACtC,cAAc,SAAO,OAAO,YAAY;CACxC,aAAa;CACb,QAAQ,SAAO,SAAS;EAAC;EAAW;EAAS;EAAW;CAAa,CAAC;CACtE,UAAU,SAAO,SAAS,CAAC,SAAS,SAAS,CAAC;AAChD,CAAC,CAAC,CAAC,MACD,SAAO,YACJ,EAAE,aAAa,iBAAiB,WAAS,MAAM,YAAY,WAAW,KAAK,GAC5E,EAAE,UAAU,iDAAiD,CAC/D,GACA,SAAO,YACJ,EAAE,YAAY,iBAAiB,eAAe,QAAQ,WAAS,MAAM,YAAY,UAAU,IAAI,GAChG,EAAE,UAAU,6CAA6C,CAC3D,GACA,SAAO,YACJ,EAAE,cAAc,iBAAiB,iBAAiB,QAAQ,WAAS,MAAM,YAAY,YAAY,IAAI,GACtG,EAAE,UAAU,8CAA8C,CAC5D,GACA,SAAO,YACJ,EAAE,cAAc,aAAa,aAAa;CACzC,IAAI,WAAW,WAAW,OAAO,iBAAiB,QAAQ,WAAS,MAAM,aAAa,YAAY,IAAI;CACtG,IAAI,WAAW,SAAS,OAAO,iBAAiB,QAAQ,WAAS,MAAM,aAAa,YAAY,KAAK;CACrG,OAAO,iBAAiB;AAC1B,GACA,EAAE,UAAU,qEAAqE,CACnF,GACA,SAAO,YACJ,EAAE,aAAa,YAAY,eAAe;CAIzC,OAAO,cAHkB,eAAe,QAAQ,WAAS,MAAM,aAAa,UAAU,IAAI,IACtF,UACA;AAEN,GACA,EAAE,UAAU,gEAAgE,CAC9E,CACF;;AAMA,IAAa,+BAA+B,SAAO,YAAY;CAC7D,OAAO;EACL,OAAO;EACP,WAAW;CACb;CACA,OAAO;EACL,OAAO;EACP,OAAO;EACP,qBAAqB,SAAO,OAAO,SAAS;CAC9C;AACF,CAAC;AAKD,IAAM,8BAA8B,SAAO,YACxC,aACC,gBAAgB,SAAS,KAAK,EAAE,iBAAiB,UAAU,CAAC,GAC9D,EAAE,UAAU,4DAA4D,CAC1E;;AAGA,IAAa,4BAA4B,SAAO,MAAM,+BAA+B,CAAC,CAAC,MACrF,SAAO,YAAY,aAAa,SAAS,UAAU,KAAK,EAAE,UAAU,kCAAkC,CAAC,GACvG,2BACF;AAKA,IAAM,uCAAuC;CAC3C,eAAe,SAAO,QAAQ,CAAC;CAC/B,UAAU;CACV,gBAAgB;CAChB,aAAa;CACb,oBAAoB;CACpB,0BAA0B;CAC1B,iCAAiC;CACjC,UAAU;CACV,uBAAuB;CACvB,sBAAsB;CACtB,YAAY;CACZ,YAAY,SAAO,OAAO;EACxB,cAAc,SAAO,QAAQ,gBAAgB;EAC7C,SAAS;CACX,CAAC;CACD,gBAAgB;CAChB,UAAU;CACV,UAAU;CACV,mBAAmB;CACnB,QAAQ;CACR,QAAQ;CACR,mBAAmB;CACnB,aAAa,SAAO,OAAO,aAAa;CACxC,eAAe,SAAO,OAAO,wBAAwB;AACvD;;AAGA,IAAa,mCAAmC,SAAO,OAAO,oCAAoC,CAAC,CAAC,MAClG,SAAO,YACJ,EAAE,YAAY,eAAe,WAAW,YAAY,SAAS,mBAC9D,EAAE,UAAU,uEAAuE,CACrF,GACA,SAAO,YACJ,EAAE,UAAU,wBAAwB,WAAS,MAAM,SAAS,YAAY,iBAAiB,IAAI,GAC9F,EAAE,UAAU,gDAAgD,CAC9D,GACA,SAAO,YACJ,EAAE,UAAU,kBAAkB,SAAS,OAAO,cAAc,UAAU,gBAAgB,WAAW,GAClG,EAAE,UAAU,6EAA6E,CAC3F,CACF;;AAMA,IAAa,2BAA2B,SAAO,OAAO;CACpD,GAAG;CACH,gBAAgB;AAClB,CAAC,CAAC,CAAC,MACD,SAAO,YACJ,EAAE,YAAY,eAAe,WAAW,YAAY,SAAS,mBAC9D,EAAE,UAAU,uEAAuE,CACrF,GACA,SAAO,YACJ,EAAE,UAAU,wBAAwB,WAAS,MAAM,SAAS,YAAY,iBAAiB,IAAI,GAC9F,EAAE,UAAU,gDAAgD,CAC9D,GACA,SAAO,YACJ,EAAE,UAAU,kBAAkB,SAAS,OAAO,cAAc,UAAU,gBAAgB,WAAW,GAClG,EAAE,UAAU,6EAA6E,CAC3F,CACF;;AAMA,IAAa,gCAAgC,SAAO,OAAO;CACzD,eAAe,SAAO,QAAQ,CAAC;CAC/B,iBAAiB;CACjB,UAAU;CACV,aAAa;CACb,oBAAoB;CACpB,0BAA0B;CAC1B,iCAAiC;CACjC,sBAAsB;CACtB,gBAAgB;CAChB,eAAe;CACf,mBAAmB;CACnB,cAAc;CACd,kBAAkB;CAClB,mBAAmB;CACnB,OAAO;CACP,WAAW;CACX,mBAAmB;CACnB,kBAAkB;CAClB,oBAAoB;CACpB,cAAc;CACd,WAAW;AACb,CAAC,CAAC,CAAC,MACD,SAAO,YACJ,EAAE,cAAc,gBAAgB,WAAS,MAAM,cAAc,SAAS,IAAI,GAC3E,EAAE,UAAU,6DAA6D,CAC3E,GACA,SAAO,YACJ,EAAE,WAAW,uBAAuB,WAAS,MAAM,WAAW,gBAAgB,KAAK,GACpF,EAAE,UAAU,yEAAyE,CACvF,CACF;;AAMA,IAAa,0BAA0B,SAAO,OAAO;CACnD,eAAe,SAAO,QAAQ,CAAC;CAC/B,WAAW;CACX,iBAAiB;CACjB,UAAU;CACV,aAAa;CACb,oBAAoB;CACpB,gBAAgB;CAChB,eAAe,SAAO,QAAQ,CAAC;CAC/B,sBAAsB;CACtB,kBAAkB;CAClB,wBAAwB;CACxB,WAAW;CACX,WAAW;AACb,CAAC,CAAC,CAAC,MACD,SAAO,YACJ,EAAE,kBAAkB,gBAAgB,qBAAqB,UAAU,iBACpE,EAAE,UAAU,iEAAiE,CAC/E,GACA,SAAO,YACJ,EAAE,WAAW,gBAAgB,WAAS,MAAM,UAAU,WAAW,SAAS,KAAK,GAChF,EAAE,UAAU,qDAAqD,CACnE,CACF;;;;AC7VA,IAAa,kCAAkC,SAAO,SAAS;CAC7D;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;;AAMD,IAAa,sCAAsC,SAAO,OAAO;CAC/D,UAAU;CACV,eAAe;CACf,SAAS;CACT,aAAa;AACf,CAAC;;AAMD,IAAa,0CAA0C,SAAO,OAAO;CACnE,UAAU;CACV,eAAe;AACjB,CAAC;;AAMD,IAAa,kCAAkC,mBAAyB,uBACtE,sBAAsB,qBAAqB,sBAAsB;;AAGnE,IAAa,yCAAyC,EACpD,eACA,eAC6F;CAC7F,MAAM,aAAqD,CAAC;CAC5D,MAAM,eAAe,WAAoB,aAAoD;EAC3F,IAAI,WAAW,WAAW,KAAK,QAAQ;CACzC;CAEA,YAAY,cAAc,aAAa,SAAS,UAAU,+BAA+B;CACzF,YAAY,cAAc,gBAAgB,SAAS,aAAa,kCAAkC;CAClG,YACE,cAAc,uBAAuB,SAAS,oBAC9C,mCACF;CACA,YACE,cAAc,6BAA6B,SAAS,0BACpD,4CACF;CACA,YACE,cAAc,oCAAoC,SAAS,iCAC3D,6CACF;CACA,YACE,cAAc,yBAAyB,SAAS,gBAChD,iCACF;CACA,YAAY,cAAc,mBAAmB,SAAS,gBAAgB,oCAAoC;CAC1G,YACE,cAAc,kBAAkB,SAAS,SAAS,eAClD,gCACF;CACA,YACE,cAAc,sBAAsB,SAAS,mBAC7C,iCACF;CACA,YAAY,cAAc,iBAAiB,SAAS,OAAO,cAAc,+BAA+B;CACxG,YACE,cAAc,qBAAqB,SAAS,SAAS,QAAQ,kBAC7D,iCACF;CACA,YACE,cAAc,sBAAsB,SAAS,WAAW,SACxD,mCACF;CACA,YACE,cAAc,uBAAuB,SAAS,OAAO,oBACrD,mCACF;CACA,YACE,CAAC,+BAA+B,cAAc,mBAAmB,cAAc,kBAAkB,GACjG,mCACF;CACA,YACE,WAAS,MAAM,cAAc,cAAc,SAAS,SAAS,UAAU,IAAI,KACzE,WAAS,MAAM,cAAc,cAAc,SAAS,iBAAiB,KAAK,KAC1E,WAAS,MAAM,cAAc,WAAW,SAAS,iBAAiB,IAAI,GACxE,uCACF;CAEA,OAAO;AACT;;AAGA,IAAa,gDACX,eACA,eAEA,WAAW,QAAQ,SAAS,eAC5B,WAAW,QAAQ,oBAAoB,cAAc,mBACrD,WAAW,aAAa,cAAc,YACtC,WAAW,gBAAgB,cAAc,eACzC,WAAW,yBAAyB,cAAc,wBAClD,WAAS,MAAM,WAAW,YAAY,cAAc,YAAY,MAAM,KACtE,WAAW,MAAM,SAAS,WAC1B,WAAW,MAAM,MAAM,aAAa,cAAc,MAAM,YACxD,WAAW,MAAM,cAAc,cAAc;;AAG/C,IAAa,qCAAqC,EAChD,SACA,eACA,UACA,kBACyF;CACzF,MAAM,aAAqD,CACzD,GAAG,sCAAsC;EAAE;EAAe;CAAS,CAAC,CACtE;CACA,MAAM,eAAe,WAAoB,aAAoD;EAC3F,IAAI,WAAW,WAAW,KAAK,QAAQ;CACzC;CAEA,YACE,WAAS,MAAM,aAAa,cAAc,SAAS,KAAK,KACtD,WAAS,MAAM,aAAa,SAAS,iBAAiB,KAAK,GAC7D,uBACF;CACA,YACE,WAAS,MAAM,aAAa,cAAc,gBAAgB,KAAK,GAC/D,+BACF;CACA,YACE,SAAS,SAAS,MAAM,EAAE,cAAc,QAAQ,iBAC9C,WAAW,aACV,iBAAiB,QAAQ,WAAS,MAAM,aAAa,YAAY,KAAK,KACtE,eAAe,QAAQ,WAAS,MAAM,aAAa,UAAU,KAAK,CACrE,GACA,sBACF;CAEA,YAAY,QAAQ,aAAa,SAAS,UAAU,yBAAyB;CAC7E,YAAY,QAAQ,oBAAoB,cAAc,iBAAiB,gCAAgC;CACvG,YAAY,QAAQ,gBAAgB,SAAS,aAAa,4BAA4B;CACtF,YAAY,QAAQ,uBAAuB,SAAS,oBAAoB,6BAA6B;CACrG,YAAY,QAAQ,yBAAyB,SAAS,gBAAgB,2BAA2B;CACjG,YAAY,QAAQ,mBAAmB,SAAS,gBAAgB,8BAA8B;CAC9F,YAAY,QAAQ,qBAAqB,SAAS,SAAS,QAAQ,kBAAkB,2BAA2B;CAChH,YACE,WAAS,MAAM,QAAQ,UAAU,WAAW,cAAc,YAAY,IAAI,KACxE,WAAS,MAAM,QAAQ,WAAW,cAAc,YAAY,IAAI,KAChE,WAAS,MAAM,QAAQ,WAAW,cAAc,SAAS,KAAK,KAC9D,WAAS,MAAM,QAAQ,WAAW,SAAS,iBAAiB,KAAK,KACjE,WAAS,MAAM,QAAQ,WAAW,WAAW,IAAI,GACnD,sCACF;CAEA,OAAO;AACT;;;AClMA,IAAM,kBAAkB,SAAO,IAAI,MAAM,SAAO,cAAc,CAAC,CAAC;AAChE,IAAM,aAAa,SAAO,OAAO,MAAM,SAAO,UAAU,GAAG,SAAO,WAAW,GAAG,SAAO,YAAY,GAAK,CAAC;AACzG,IAAM,qBAAqB,MAAc,kBACvC,SAAO,OAAO,MACZ,SAAO,UAAU,GACjB,SAAO,WAAW,GAClB,SAAO,YAAY,aAAa,GAChC,SAAO,UAAU,wBAAwB,EAAE,UAAU,8BAA8B,CAAC,CACtF,CAAC,CAAC,KAAK,SAAO,MAAM,IAAI,CAAC;;AAG3B,IAAa,sBAAsB,SAAO,SAAS;CACjD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;;AAMD,IAAa,0BAA0B,kBAAkB,2BAA2B,GAAG;;AAMvF,IAAa,8BAA8B,SAAO,OAAO,MACvD,SAAO,UAAU,0BAA0B,EAAE,UAAU,6BAA6B,CAAC,CACvF,CAAC,CAAC,KAAK,SAAO,MAAM,6BAA6B,CAAC;;AAMlD,IAAa,iCAAiC,SAAO,OAAO,MAC1D,SAAO,UAAU,0BAA0B,EAAE,UAAU,6BAA6B,CAAC,CACvF,CAAC,CAAC,KAAK,SAAO,MAAM,gCAAgC,CAAC;;AAMrD,IAAa,6BAA6B,SAAO,SAAS;CACxD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;;AAMD,IAAa,+BAA+B,SAAO,YAAY;CAC7D,cAAc;EACZ,mBAAmB;EACnB,YAAY;EACZ,aAAa;CACf;CACA,QAAQ;EACN,YAAY;EACZ,aAAa;EACb,QAAQ,SAAO,SAAS;GACtB;GACA;GACA;GACA;GACA;GACA;EACF,CAAC;CACH;AACF,CAAC;AAKD,IAAM,mBAAmB,gCAAgC,MACvD,SAAO,YAAY,EAAE,aAAa,WAAW,aAAa,EAAE,UAAU,+BAA+B,CAAC,CACxG;AACA,IAAM,gBAAgB,gCAAgC,MACpD,SAAO,YAAY,EAAE,aAAa,WAAW,UAAU,EAAE,UAAU,4BAA4B,CAAC,CAClG;AACA,IAAM,mBAAmB,gCAAgC,MACvD,SAAO,YAAY,EAAE,aAAa,WAAW,aAAa,EAAE,UAAU,+BAA+B,CAAC,CACxG;;AAGA,IAAa,8BAA8B,SAAO,YAAY;CAC5D,QAAQ,CAAC;CACT,mBAAmB,EAAE,qBAAqB,0BAA0B;CACpE,gBAAgB,EAAE,mBAAmB,SAAO,OAAO,6BAA6B,EAAE;AACpF,CAAC;;AAMD,IAAa,kCAAkC,SAAO,YAAY;CAChE,SAAS,CAAC;CACV,WAAW,EAAE,iBAAiB,8BAA8B;CAC5D,MAAM;EACJ,QAAQ;EACR,aAAa;CACf;CACA,QAAQ,EACN,QAAQ,SAAO,SAAS,CAAC,oBAAoB,uBAAuB,CAAC,EACvE;CACA,QAAQ,EAAE,aAAa,WAAW;CAClC,OAAO,EAAE,WAAW,wBAAwB;CAC5C,qBAAqB,EAAE,aAAa,WAAW;CAC/C,gBAAgB,EAAE,SAAS,gCAAgC;CAC3D,iBAAiB;EAAE,SAAS;EAAkB,QAAQ;CAA4B;CAClF,cAAc;EAAE,SAAS;EAAe,QAAQ;CAA4B;CAC5E,eAAe,EAAE,SAAS,6BAA6B;CACvD,iBAAiB;EAAE,SAAS;EAAkB,QAAQ;CAA4B;CAClF,uBAAuB;EACrB,WAAW;EACX,mBAAmB,SAAO,OAAO,6BAA6B;CAChE;AACF,CAAC;;AAMD,IAAa,gCAAgC,SAAO,YAAY;CAC9D,OAAO;EACL,OAAO;EACP,WAAW;CACb;CACA,OAAO;EACL,OAAO;EACP,OAAO;CACT;CACA,QAAQ,EACN,WAAW,kBAAkB,iCAAiC,GAAG,EACnE;AACF,CAAC;AAKD,IAAM,4BACJ,cACA,WAEA,iBAAiB,aACjB,iBAAiB,uBACf,iBAAiB,aAAa,iBAAiB,+BAC/C,OAAO,SAAS;;;;;AAMpB,IAAa,6BACX,cACA,YAC+B;CAC/B,QAAQ,QAAQ,MAAhB;EACE,KAAK,WACH,OAAO,iBAAiB,OAAO,aAAa;EAC9C,KAAK,aACH,OAAO,iBAAiB,aAAa,eAAe;EACtD,KAAK,QACH,OAAO,iBAAiB,cAAc,iBAAiB,eAAe,WAAW;EACnF,KAAK,UACH,OAAO,iBAAiB,cAAc,iBAAiB,eAAe,YAAY;EACpF,KAAK,UACH,OAAO,iBAAiB,cAAc,iBAAiB,eAAe,cAAc;EACtF,KAAK,SACH,OAAO,iBAAiB,eAAe,YAAY;EACrD,KAAK,uBACH,OAAO,iBAAiB,YACpB,qBACA,iBAAiB,YACjB,6BACA;EACN,KAAK,kBACH,OAAO,iBAAiB,aAAa,iBAAiB,qBAAqB,eAAe;EAC5F,KAAK,iBACH,OAAO,iBAAiB,YACpB,YACA,iBAAiB,qBACjB,6BACA;EACN,KAAK,mBACH,OAAO,yBAAyB,cAAc,QAAQ,MAAM,IAAI,cAAc;EAChF,KAAK,gBACH,OAAO,yBAAyB,cAAc,QAAQ,MAAM,IAAI,WAAW;EAC7E,KAAK,mBACH,OAAO,yBAAyB,cAAc,QAAQ,MAAM,IAAI,cAAc;EAChF,KAAK,yBACH,OAAO,iBAAiB,aACpB,iBAAiB,sBACjB,iBAAiB,aACjB,iBAAiB,6BACjB,eACA;CACR;AACF;;AAGA,IAAa,iCAAiC,UAC5C,UAAU,YACV,UAAU,aACV,UAAU,eACV,UAAU,eACV,UAAU;AAEZ,IAAM,yBACJ,SACA,UACY;CACZ,QAAQ,MAAM,MAAd;EACE,KAAK,SACH,OAAO,QAAQ,SAAS;EAC1B,KAAK,SACH,OAAO,QAAQ,SAAS,aACtB,QAAQ,SAAS,eACjB,QAAQ,SAAS,UACjB,QAAQ,SAAS,YACjB,QAAQ,SAAS;EACrB,KAAK,UACH,OAAO,QAAQ,SAAS,UACtB,QAAQ,SAAS,YACjB,QAAQ,SAAS,YACjB,QAAQ,SAAS,WACjB,QAAQ,SAAS,yBACjB,QAAQ,SAAS,oBACjB,QAAQ,SAAS,qBACjB,QAAQ,SAAS,kBACjB,QAAQ,SAAS,mBACjB,QAAQ,SAAS,qBACjB,QAAQ,SAAS;CACvB;AACF;AAEA,IAAM,yCAAyC;CAC7C,eAAe,SAAO,QAAQ,CAAC;CAC/B,cAAc;CACd,sBAAsB,SAAO,OAAO,0BAA0B;CAC9D,WAAW;CACX,UAAU;CACV,aAAa;CACb,UAAU;CACV,WAAW,SAAO,OAAO,mBAAmB;CAC5C,SAAS;CACT,sBAAsB;CACtB,SAAS;CACT,OAAO;CACP,YAAY;CACZ,aAAa,SAAO,OAAO,aAAa;CACxC,eAAe,SAAO,OAAO,wBAAwB;AACvD;;AAGA,IAAa,qCAAqC,SAAO,OACvD,sCACF,CAAC,CAAC,MACA,SAAO,YACJ,EAAE,SAAS,WAAW,cAAc,0BAA0B,WAAW,OAAO,MAAM,SACvF,EAAE,UAAU,2CAA2C,CACzD,GACA,SAAO,YACJ,EAAE,OAAO,cAAc,sBAAsB,SAAS,KAAK,GAC5D,EAAE,UAAU,qDAAqD,CACnE,GACA,SAAO,YACJ,EAAE,WAAW,sBAAsB,eAClC,aAAa,IACT,cAAc,QAAQ,yBAAyB,OAC/C,cAAc,QAAQ,yBAAyB,MACrD,EAAE,UAAU,uEAAuE,CACrF,CACF;;AAMA,IAAa,6BAA6B,SAAO,OAAO;CACtD,GAAG;CACH,eAAe;AACjB,CAAC,CAAC,CAAC,MACD,SAAO,YACJ,EAAE,SAAS,WAAW,cAAc,0BAA0B,WAAW,OAAO,MAAM,SACvF,EAAE,UAAU,2CAA2C,CACzD,GACA,SAAO,YACJ,EAAE,OAAO,cAAc,sBAAsB,SAAS,KAAK,GAC5D,EAAE,UAAU,qDAAqD,CACnE,GACA,SAAO,YACJ,EAAE,WAAW,sBAAsB,eAClC,aAAa,IACT,cAAc,QAAQ,yBAAyB,OAC/C,cAAc,QAAQ,yBAAyB,MACrD,EAAE,UAAU,uEAAuE,CACrF,CACF;;;;AChUA,IAAa,gCAAgC,SAAO,YAAY;CAC9D,MAAM,CAAC;CACP,UAAU,EAAE,SAAS,gCAAgC;CACrD,cAAc;EACZ,qBAAqB,SAAO,OAAO,yBAAyB;EAC5D,mBAAmB;CACrB;CACA,QAAQ,EACN,qBAAqB,SAAO,OAAO,yBAAyB,EAC9D;CACA,UAAU,EAAE,SAAS,gCAAgC;AACvD,CAAC;AAKD,IAAM,uBACJ,OACA,YACY;CACZ,QAAQ,OAAR;EACE,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK,WACH,OAAO,QAAQ,SAAS;EAC1B,KAAK,aACH,OAAO,QAAQ,SAAS,UAAW,QAAQ,SAAS,cAAc,QAAQ,QAAQ,WAAW;EAC/F,KAAK;EACL,KAAK,oBACH,OAAO,QAAQ,SAAS,UAAU,QAAQ,SAAS;EACrD,KAAK;EACL,KAAK,4BACH,OAAO,QAAQ,SAAS,kBAAkB,QAAQ,SAAS;EAC7D,KAAK,aACH,OAAO,QAAQ,SAAS,cAAc,QAAQ,QAAQ,WAAW;EACnE,KAAK,UACH,OAAO,QAAQ,SAAS,cAAc,QAAQ,QAAQ,WAAW;CACrE;AACF;;AAGA,IAAa,gCAAgC,SAAO,OAAO;CACzD,OAAO;CACP,SAAS;AACX,CAAC,CAAC,CAAC,MACD,SAAO,YACJ,EAAE,SAAS,YAAY,oBAAoB,OAAO,OAAO,GAC1D,EAAE,UAAU,sDAAsD,CACpE,CACF;AAKA,IAAM,kCACJ,YACqC;CACrC,QAAQ,QAAQ,MAAhB;EACE,KAAK,YACH,OAAO,QAAQ,QAAQ;EACzB,KAAK;EACL,KAAK,UACH,OAAO,QAAQ;EACjB,KAAK;EACL,KAAK,YACH,OAAO;CACX;AACF;AAEA,IAAM,gCACJ,YACyC;CACzC,QAAQ,QAAQ,MAAhB;EACE,KAAK,YACH,OAAO,QAAQ,QAAQ;EACzB,KAAK,gBACH,OAAO,QAAQ;EACjB,KAAK;EACL,KAAK;EACL,KAAK,YACH,OAAO;CACX;AACF;AAEA,IAAM,kBACJ,SACA,YACkC;CAClC,MAAM,sBAAsB,+BAA+B,OAAO;CAClE,IAAI,QAAQ,QAAQ,SAAS,gBAC3B,OAAO;EACL,MAAM;EACN;EACA,mBAAmB,QAAQ,QAAQ;CACrC;CAEF,MAAM,4BAA4B,6BAA6B,OAAO;CACtE,OAAO,8BAA8B,OACjC;EAAE,MAAM;EAAU;CAAoB,IACtC;EAAE,MAAM;EAAgB;EAAqB,mBAAmB;CAA0B;AAChG;AAEA,IAAM,0BACJ,SACA,YAEA,QAAQ,SAAS,UAChB,QAAQ,SAAS,cAChB,QAAQ,QAAQ,wBAAwB,QAAQ,QAAQ,uBACxD,QAAQ,QAAQ,sBAAsB,QAAQ,QAAQ;;AAG1D,IAAM,gCACJ,SACA,sBAEA,sBAAsB,OAClB,QAAQ,SAAS,UAAU,QAAQ,SAAS,WAC5C,6BAA6B,OAAO,MAAM;AAEhD,IAAM,yBACJ,SACA,YAIY;CACZ,MAAM,sBAAsB,+BAA+B,OAAO;CAClE,QAAQ,QAAQ,OAAO,MAAvB;EACE,KAAK,UACH,OAAO,QAAQ,SAAS;EAC1B,KAAK,qBACH,OAAO,wBAAwB,QAC7B,QAAQ,OAAO,wBAAwB,uBACvC,QAAQ,QAAQ,wBAAwB;EAC5C,KAAK,kBACH,OAAO,6BAA6B,SAAS,QAAQ,OAAO,iBAAiB,MAC1E,wBAAwB,QAAQ,QAAQ,QAAQ,wBAAwB;CAC/E;AACF;AAEA,IAAM,gCACJ,SACA,YACY,6BAA6B,SAAS,QAAQ,iBAAiB;;;;;AAM7E,IAAa,kCACX,SACA,YACyC;CACzC,MAAM,YAAY,0BAA0B,SAAS,SAAS,MAAM,OAAO;CAC3E,IAAI,cAAc,MAAM,OAAO;CAC/B,MAAM,iBAAgD,SAAS,WAAW,EAAE,MAAM,OAAO;CAEzF,QAAQ,QAAQ,MAAhB;EACE,KAAK,kBACH,OAAO,uBAAuB,gBAAgB,OAAO,IACjD;GAAE,OAAO;GAAW,SAAS;IAAE,MAAM;IAAY,SAAS,QAAQ;GAAQ;EAAE,IAC5E;EACN,KAAK,iBACH,OAAO;GAAE,OAAO;GAAW,SAAS,eAAe,gBAAgB,OAAO;EAAE;EAC9E,KAAK;EACL,KAAK;EACL,KAAK,mBACH,OAAO,sBAAsB,gBAAgB,OAAO,IAChD;GAAE,OAAO;GAAW,SAAS;IAAE,MAAM;IAAY,SAAS,QAAQ;GAAQ;EAAE,IAC5E;EACN,KAAK,yBACH,OAAO,6BAA6B,gBAAgB,OAAO,IACvD;GAAE,OAAO;GAAW,SAAS;EAAe,IAC5C;EACN,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK,uBACH,OAAO;GAAE,OAAO;GAAW,SAAS;EAAe;CACvD;AACF;;;;ACzLA,IAAa,gCAAgC,SAAO,SAAS;CAAC;CAAQ;CAAU;AAAQ,CAAC;;AAMzF,IAAa,8BAA8B,SAAO,OAAO,MACvD,SAAO,UAAU,GACjB,SAAO,WAAW,GAClB,SAAO,YAAY,GAAK,CAC1B,CAAC,CAAC,SAAS,EAAE,YAAY,8BAA8B,CAAC;;AAMxD,IAAa,mCAAmC,SAAO,OAAO;CAC5D,OAAO;CACP,WAAW;AACb,CAAC;;AAMD,IAAa,mCAAmC,SAAO,SAAS,CAAC,YAAY,UAAU,CAAC;;AAMxF,IAAa,2BAA2B,SAAO,OAAO;CACpD,UAAU;CACV,UAAU;CACV,WAAW;CACX,QAAQ;CACR,YAAY;AACd,CAAC,CAAC,CAAC,SAAS,EAAE,YAAY,2BAA2B,CAAC;;AAMtD,IAAa,gCAAgC,SAAO,OAAO;CACzD,YAAY;CACZ,gBAAgB;CAChB,iBAAiB;CACjB,QAAQ;CACR,WAAW;AACb,CAAC,CAAC,CAAC,SAAS,EAAE,YAAY,gCAAgC,CAAC;;AAM3D,IAAa,6BAA6B,SAAO,OAAO;CACtD,eAAe,SAAO,QAAQ,CAAC;CAC/B,YAAY;CACZ,aAAa;CACb,WAAW;CACX,eAAe,SAAO,OAAO,aAAa;CAC1C,gBAAgB;CAChB,kBAAkB;CAClB,aAAa;CACb,WAAW;CACX,QAAQ;CACR,QAAQ,SAAO,SAAS;EAAC;EAAW;EAAY;CAAU,CAAC;CAC3D,YAAY;CACZ,QAAQ,SAAO,OAAO,wBAAwB;AAChD,CAAC,CAAC,CAAC,SAAS,EAAE,YAAY,6BAA6B,CAAC;;;;AChFxD,IAAa,oBAAoB,SAAO,SAAS;CAAC;CAAS;CAAS;CAAU;AAAQ,CAAC;;AAMvF,IAAa,qBAAqB,SAAO,SAAS;CAAC;CAAU;CAAe;CAAgB;AAAQ,CAAC;;AAMrG,IAAa,kBAAkB,SAAO,SAAS;CAAC;CAAc;CAAgB;CAAQ;CAAc;AAAU,CAAC;;AAM/G,IAAa,iBAAiB,SAAO,OAAO;CAC1C,UAAU,SAAO,OAAO,MAAM,SAAO,WAAW,GAAG,SAAO,YAAY,IAAK,CAAC;CAC5E,YAAY;AACd,CAAC,CAAC,CAAC,SAAS,EAAE,YAAY,iBAAiB,CAAC;;AAM5C,IAAa,gBAAgB,SAAO,OAAO;CACzC,UAAU,eAAe,OAAO;CAChC,YAAY;CACZ,OAAO,SAAO,OAAO;EACnB,MAAM;EACN,OAAO,SAAO,OAAO,MAAM,SAAO,UAAU,GAAG,SAAO,WAAW,GAAG,SAAO,YAAY,GAAG,CAAC;CAC7F,CAAC;CACD,YAAY;CACZ,SAAS,SAAO,OAAO,eAAe;CACtC,WAAW,SAAO,OAAO,MAAM,SAAO,UAAU,GAAG,SAAO,WAAW,GAAG,SAAO,YAAY,GAAG,CAAC;CAC/F,OAAO,SAAO,OAAO,MAAM,SAAO,UAAU,GAAG,SAAO,WAAW,GAAG,SAAO,YAAY,GAAG,CAAC;CAC3F,MAAM,SAAO,OAAO,SAAO,OAAO,MAAM,SAAO,WAAW,GAAG,SAAO,YAAY,IAAK,CAAC,CAAC;AACzF,CAAC,CAAC,CAAC,SAAS,EAAE,YAAY,gBAAgB,CAAC;AAK3C,IAAM,wBAAwB,SAAO,OAAO,MAAM,SAAO,WAAW,GAAG,SAAO,YAAY,IAAK,CAAC;;AAGhG,IAAa,2BAA2B,SAAO,OAAO;CACpD,SAAS,SAAO,OAAO,qBAAqB;CAC5C,UAAU,SAAO,OAAO,qBAAqB;CAC7C,gBAAgB,SAAO,OAAO,qBAAqB;CACnD,oBAAoB,SAAO,OAAO,qBAAqB;CACvD,WAAW,SAAO,OAAO,qBAAqB;CAC9C,UAAU,SAAO,OAAO,qBAAqB;AAC/C,CAAC,CAAC,CAAC,SAAS,EAAE,YAAY,2BAA2B,CAAC;;AAMtD,IAAa,yBAAyB,SAAO,OAAO,EAClD,OAAO,sBACT,CAAC,CAAC,CAAC,SAAS,EAAE,YAAY,yBAAyB,CAAC;;AAMpD,IAAa,sBAAsB,SAAO,OAAO;CAC/C,OAAO;CACP,aAAa;CACb,UAAU,SAAO,OAAO,sBAAsB;AAChD,CAAC,CAAC,CAAC,SAAS,EAAE,YAAY,sBAAsB,CAAC;;AAMjD,IAAa,eAAe,SAAO,OAAO;CACxC,QAAQ,SAAO,MAAM,aAAa,CAAC,CAAC,MAClC,SAAO,YAAY,WAAW,OAAO,UAAU,KAAK,EAAE,UAAU,8BAA8B,CAAC,CACjG;CACA,YAAY,SAAO,OAAO,cAAc;AAC1C,CAAC,CAAC,CAAC,SAAS,EAAE,YAAY,eAAe,CAAC;;;ACpF1C,IAAM,kBAAkB,SAAiB,YAAoB,SAAO,IAAI,MAAM,SAAO,UAAU;CAAE;CAAS;AAAQ,CAAC,CAAC;AAEpH,IAAM,uBAAuB,SAAO,OAAO,MACzC,SAAO,UAAU,GACjB,SAAO,WAAW,GAClB,SAAO,YAAY,GAAG,GACtB,SAAO,UAAU,mCAAmC,EAClD,UAAU,mCACZ,CAAC,CACH;AAEA,IAAM,gBAAgB,SAAO,YAC1B,WAAkC,OAAO,OAAO,OAAO,UAAU,UAAU,MAAM,OAAO,QAAQ,MAAM,MAAM,KAAK,GAClH,EAAE,UAAU,sCAAsC,CACpD;;AAGA,IAAa,2BAA2B,SAAO,SAAS;CACtD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;;AAMD,IAAa,4BAA4B,SAAO,MAAM,wBAAwB,CAAC,CAAC,MAC9E,SAAO,SAAS,GAChB,eACA,SAAO,YAAY,aAAa,SAAS,UAAU,GAAG,EACpD,UAAU,4CACZ,CAAC,CACH;;AAMA,IAAa,mCAAmC,SAAO,SAAS;CAC9D;CACA;CACA;CACA;AACF,CAAC;;AAMD,IAAa,oCAAoC,SAAO,MACtD,gCACF,CAAC,CAAC,MACA,SAAO,SAAS,GAChB,eACA,SAAO,YAAY,aAAa,SAAS,UAAU,GAAG,EACpD,UAAU,0CACZ,CAAC,CACH;;AAMA,IAAa,sBAAsB,SAAO,OAAO;CAC/C,eAAe,SAAO,QAAQ,CAAC;CAC/B,WAAW,SAAO,OAAO;EACvB,SAAS,SAAO;EAChB,0BAA0B,eAAe,GAAG,GAAG;CACjD,CAAC;CAID,iBAAiB,SAAO,OAAO;EAC7B,SAAS,SAAO,SAAS,CAAC,UAAU,UAAU,CAAC;EAC/C,iBAAiB,SAAO,OAAO,eAAe,GAAG,KAAM,CAAC;EACxD,mBAAmB,eAAe,GAAG,KAAM;CAC7C,CAAC,CAAC,CAAC,MACD,SAAO,YACJ,EAAE,SAAS,sBAAsB,YAAY,WAAW,oBAAoB,OAAO,oBAAoB,MACxG,EAAE,UAAU,gDAAgD,CAC9D,CACF;CACA,WAAW,SAAO,OAAO;EACvB,cAAc,eAAe,GAAG,IAAK;EAIrC,aAAa,eAAe,GAAG,IAAK;EACpC,WAAW,eAAe,GAAG,IAAK;EAClC,mBAAmB,eAAe,GAAG,GAAG;EACxC,qBAAqB,eAAe,GAAG,EAAE;CAC3C,CAAC,CAAC,CAAC,MACD,SAAO,YACJ,EAAE,WAAW,mBAAmB,aAAa,cAC9C,EAAE,UAAU,sDAAsD,CACpE,GACA,SAAO,YACJ,EAAE,mBAAmB,0BAA0B,qBAAqB,qBACrE,EAAE,UAAU,uEAAuE,CACrF,CACF;CACA,eAAe,SAAO,OAAO;EAG3B,MAAM,SAAO,SAAS,CAAC,UAAU,WAAW,CAAC;EAC7C,6BAA6B,eAAe,GAAG,EAAE;CACnD,CAAC;CACD,MAAM,SAAO,OAAO;EAClB,aAAa,SAAO,SAAS,CAAC,eAAe,wBAAwB,CAAC;EACtE,iCAAiC,SAAO;CAC1C,CAAC;CACD,UAAU,SAAO,OAAO;EACtB,WAAW,SAAO,SAAS,CAAC,eAAe,sBAAsB,CAAC;EAClE,iBAAiB,eAAe,GAAG,EAAE;CACvC,CAAC;CACD,OAAO,SAAO,OAAO;EACnB,kBAAkB,SAAO,MAAM,uBAAuB,CAAC,CAAC,MACtD,SAAO,SAAS,GAChB,eACA,SAAO,YAAY,cAAc,UAAU,UAAU,IAAI,EACvD,UAAU,0CACZ,CAAC,CACH;EACA,iBAAiB,SAAO,OAAO,uBAAuB;EACtD,cAAc,SAAO,OAAO,oBAAoB;EAChD,YAAY,SAAO,SAAS,CAAC,aAAa,gBAAgB,CAAC;EAC3D,eAAe,SAAO,SAAS,CAAC,YAAY,eAAe,CAAC;CAC9D,CAAC,CAAC,CAAC,MACD,SAAO,YACJ,EAAE,kBAAkB,sBAAsB,oBAAoB,QAAQ,iBAAiB,SAAS,eAAe,GAChH,EAAE,UAAU,2CAA2C,CACzD,GACA,SAAO,YACJ,EAAE,cAAc,sBAAsB,iBAAiB,QAAQ,oBAAoB,MACpF,EAAE,UAAU,wDAAwD,CACtE,CACF;CACA,cAAc,SAAO,OAAO;EAC1B,SAAS,SAAO,SAAS,CAAC,eAAe,SAAS,CAAC;EACnD,gBAAgB,SAAO,SAAS,CAAC,YAAY,aAAa,CAAC;CAC7D,CAAC;AACH,CAAC,CAAC,CAAC,SAAS,EAAE,YAAY,sBAAsB,CAAC;;AAMjD,IAAa,6BAA6B,oBAAoB,KAAK;CACjE,eAAe;CACf,WAAW;EACT,SAAS;EACT,0BAA0B;CAC5B;CACA,iBAAiB;EACf,SAAS;EACT,iBAAiB;EACjB,mBAAmB;CACrB;CACA,WAAW;EACT,cAAc;EACd,aAAa;EACb,WAAW;EACX,mBAAmB;EACnB,qBAAqB;CACvB;CACA,eAAe;EACb,MAAM;EACN,6BAA6B;CAC/B;CACA,MAAM;EACJ,aAAa;EACb,iCAAiC;CACnC;CACA,UAAU;EACR,WAAW;EACX,iBAAiB;CACnB;CACA,OAAO;EACL,kBAAkB,CAAC;EACnB,iBAAiB;EACjB,cAAc;EACd,YAAY;EACZ,eAAe;CACjB;CACA,cAAc;EACZ,SAAS;EACT,gBAAgB;CAClB;AACF,CAAC;AAED,IAAM,qBAAqB,SAAO,cAAc,oBAAoB,OAAO,KAAK;AAChF,IAAM,yBAAyB,SAAO,cAAc,oBAAoB,OAAO,SAAS;AACxF,IAAM,6BAA6B,SAAO,cAAc,oBAAoB,OAAO,aAAa;AAChG,IAAM,oBAAoB,SAAO,cAAc,oBAAoB,OAAO,IAAI;AAC9E,IAAM,wBAAwB,SAAO,cAAc,oBAAoB,OAAO,QAAQ;AACtF,IAAM,4BAA4B,SAAO,cAAc,oBAAoB,OAAO,YAAY;AAC9F,IAAM,yBAAyB,SAAO,cAAc,oBAAoB,OAAO,SAAS;AACxF,IAAM,+BAA+B,SAAO,cAAc,oBAAoB,OAAO,eAAe;AAEpG,IAAM,kBAA2D,yBAAyB;AAE1F,IAAM,mCACJ,SACA,SACA,cACY;CACZ,QAAQ,SAAR;EACE,KAAK,SACH,OAAO,CAAC,mBAAmB,QAAQ,OAAO,UAAU,KAAK;EAC3D,KAAK,aACH,OAAO,CAAC,uBAAuB,QAAQ,WAAW,UAAU,SAAS;EACvE,KAAK,iBACH,OAAO,CAAC,2BAA2B,QAAQ,eAAe,UAAU,aAAa;EACnF,KAAK,QACH,OAAO,CAAC,kBAAkB,QAAQ,MAAM,UAAU,IAAI;EACxD,KAAK,YACH,OAAO,CAAC,sBAAsB,QAAQ,UAAU,UAAU,QAAQ;EACpE,KAAK,gBACH,OAAO,CAAC,0BAA0B,QAAQ,cAAc,UAAU,YAAY;EAChF,KAAK,aACH,OAAO,CAAC,uBAAuB,QAAQ,WAAW,UAAU,SAAS;EACvE,KAAK,mBACH,OAAO,CAAC,6BAA6B,QAAQ,iBAAiB,UAAU,eAAe;CAC3F;AACF;;AAGA,IAAa,oCACX,SACA,cAEA,gBAAgB,QAAQ,YAAY,gCAAgC,SAAS,SAAS,SAAS,CAAC;;AAGlG,IAAa,sCACX,YACgD,SAAO,GAAG,gCAAgC,CAAC,CAAC,OAAO"}
|