{"version":3,"file":"SSONewConnectionConfigureScreen.mjs","sources":["../../../../../../../../web/src/adminPortal/sso/SSONewConnectionConfigureScreen.tsx"],"sourcesContent":["import { ChevronLeft } from '@mui/icons-material';\nimport { B2BSSOOIDCUpdateConnectionOptions, B2BSSOSAMLUpdateConnectionOptions } from '@stytch/core/public';\nimport { adminPortalAssets } from '@stytch/internal-assets';\nimport React, { useCallback, useMemo, useState } from 'react';\n\nimport { extractErrorMessage } from '../../utils/extractErrorMessage';\nimport { Accordion, AccordionDetails, AccordionSummary } from '../components/Accordion';\nimport { Button } from '../components/Button';\nimport { FlexBox } from '../components/FlexBox';\nimport { Input } from '../components/Input';\nimport { Instruction } from '../components/Instruction';\nimport { Modal } from '../components/Modal';\nimport { PaddedContainer } from '../components/PaddedContainer';\nimport { useToast } from '../components/Toast';\nimport { Typography } from '../components/Typography';\nimport { Screenshot } from '../shared/components/Screenshot';\nimport { useMutateSsoConnection, useMutateSsoConnectionByUrl } from '../utils/useMutateSsoConnection';\nimport { useOrgInfo } from '../utils/useOrgInfo';\nimport { AppDetails } from './AppDetails';\nimport { AttributeMappingState } from './AttributeMappingTable';\nimport { CreateApplication } from './CreateApplication';\nimport { DetailedAttributeMappingTable } from './DetailedAttributeMappingTable';\nimport { getIdpAndConnectionInfo, SamlIdpValue, SamlSetupStep, TaggedIdpInfo, typeToUserFriendlyName } from './IdpInfo';\nimport { useSsoRouterController } from './SSORouter';\nimport { OIDCTaggedConnection, SAMLTaggedConnection } from './TaggedConnection';\n\nconst useManualConfigurationState = ({ idp, type }: TaggedIdpInfo) => {\n  const [manualConfigurationState, setManualConfigurationState] = useState(false);\n  const idpRequiresManualConfig = type === 'saml' && idp.metadataUrlLabel === false;\n  const manualConfiguration = manualConfigurationState || idpRequiresManualConfig;\n\n  return [manualConfiguration, setManualConfigurationState] as const;\n};\n\nconst getDefaultAttributeMapping = (idpType: string | undefined): Record<string, string> => {\n  const baseMapping = {\n    email: 'NameID',\n    first_name: 'firstName',\n    last_name: 'lastName',\n    groups: '',\n    idp_user_id: '',\n  };\n\n  switch (idpType) {\n    case 'okta':\n      return {\n        ...baseMapping,\n        idp_user_id: 'id',\n      };\n    case 'microsoft-entra':\n      return {\n        ...baseMapping,\n        idp_user_id: 'http://schemas.microsoft.com/identity/claims/objectidentifier',\n      };\n    // Google Workspace and Generic SAML use the base mapping without modifications\n    case 'google-workspace':\n    case 'generic':\n    default:\n      return baseMapping;\n  }\n};\n\nconst OktaSamlInstructions = ({\n  connection: connectionProp,\n  metadataUrl,\n  setMetadataUrl,\n}: {\n  connection: SAMLTaggedConnection;\n  metadataUrl: string;\n  setMetadataUrl: (value: string) => void;\n}) => {\n  const { idp } = getIdpAndConnectionInfo(connectionProp);\n\n  const { data } = useOrgInfo();\n  const organizationName = data?.organization_name ?? '';\n\n  return (\n    <>\n      <div>\n        <Instruction>\n          Within your newly created SAML Application, navigate to <b>Sign On</b> tab and under{' '}\n          <b>Settings → SAML 2.0 → Metadata Details</b> copy the provided <b>Metadata URL</b>.\n        </Instruction>\n        <PaddedContainer>\n          <Input\n            label={`${idp.metadataUrlLabel}`}\n            placeholder={`Enter ${idp.metadataUrlLabel}`}\n            value={metadataUrl}\n            onChange={setMetadataUrl}\n          />\n        </PaddedContainer>\n        <Screenshot src={adminPortalAssets.oktaSamlGetMetadataUrl} alt=\"Okta SAML get metadata URL\" />\n      </div>\n      <Instruction>\n        Navigate to <b>Assignments</b> and assign users who should be able to access {organizationName} manually or via\n        group membership.\n      </Instruction>\n      <Screenshot src={adminPortalAssets.oktaAssign} alt=\"Okta assign\" />\n    </>\n  );\n};\n\nconst EntraSamlInstructions = ({\n  connection: connectionProp,\n  metadataUrl,\n  setMetadataUrl,\n}: {\n  connection: SAMLTaggedConnection;\n  metadataUrl: string;\n  setMetadataUrl: (value: string) => void;\n}) => {\n  const { idp } = getIdpAndConnectionInfo(connectionProp);\n\n  return (\n    <>\n      <div>\n        <Instruction>\n          Within <b>Step 3: SAML Certificates</b> you will see the <b>App Federation Metadata Url</b> value. Copy to\n          clipboard and paste below:\n        </Instruction>\n        <PaddedContainer>\n          <Input\n            label=\"App Federation Metadata Url\"\n            placeholder={`Enter ${idp.metadataUrlLabel}`}\n            value={metadataUrl}\n            onChange={setMetadataUrl}\n          />\n        </PaddedContainer>\n        <Screenshot src={adminPortalAssets.entraSamlMetadataUrl} alt=\"Entra SAML Metadata URL\" />\n        <Instruction>\n          You can add users to your application in Entra by navigating to <b>Users and groups</b> in the left-hand\n          navigation and selecting <b>Add user/group</b> from the top.\n        </Instruction>\n        <Screenshot src={adminPortalAssets.entraAddUsersAndGroups} alt=\"Entra Add Users and Groups\" />\n      </div>\n    </>\n  );\n};\n\ntype OidcInstructionProps = {\n  connection: OIDCTaggedConnection;\n  clientId: string;\n  setClientId: (value: string) => void;\n  clientSecret: string;\n  setClientSecret: (value: string) => void;\n  issuer: string;\n  setIssuer: (value: string) => void;\n  issuerDerivedValue: string;\n  setIssuerDerivedValue: (value: string) => void;\n};\n\nconst TransformInputToIssuer = ({\n  connection: connectionProp,\n  issuer,\n  setIssuer,\n  issuerDerivedValue,\n  setIssuerDerivedValue,\n}: {\n  connection: OIDCTaggedConnection;\n  issuer: string;\n  setIssuer: (value: string) => void;\n  issuerDerivedValue: string;\n  setIssuerDerivedValue: (value: string) => void;\n}) => {\n  const { idp } = getIdpAndConnectionInfo(connectionProp);\n\n  return idp.transformInputToIssuer ? (\n    <Input\n      label={idp.issuerDerivedLabel}\n      labelVariant=\"body1\"\n      placeholder={`Enter ${idp.issuerDerivedLabel}`}\n      value={issuerDerivedValue}\n      onChange={setIssuerDerivedValue}\n    />\n  ) : (\n    <Input\n      label={idp.issuerLabel}\n      labelVariant=\"body1\"\n      placeholder={`Enter ${idp.issuerLabel}`}\n      value={issuer}\n      onChange={setIssuer}\n    />\n  );\n};\n\nconst OktaOidcInstructions = ({\n  connection: connectionProp,\n  clientId,\n  setClientId,\n  clientSecret,\n  setClientSecret,\n  issuer,\n  setIssuer,\n  issuerDerivedValue,\n  setIssuerDerivedValue,\n}: OidcInstructionProps) => {\n  const { idp } = getIdpAndConnectionInfo(connectionProp);\n\n  return (\n    <>\n      <div>\n        <Instruction>\n          Within the <b>General</b> tab for your newly created OIDC Application, copy over the ClientID provided:\n        </Instruction>\n        <PaddedContainer>\n          <Input\n            label={idp.clientIdLabel}\n            labelVariant=\"body1\"\n            placeholder={`Enter ${idp.clientIdLabel}`}\n            value={clientId}\n            onChange={setClientId}\n          />\n        </PaddedContainer>\n      </div>\n      <div>\n        <Instruction>\n          Ensure that <b>Client authentication</b> is set to <b>Client secret</b> and generate and copy a Client Secret:\n        </Instruction>\n        <PaddedContainer>\n          <Input\n            label={idp.clientSecretLabel}\n            labelVariant=\"body1\"\n            placeholder={`Enter ${idp.clientSecretLabel}`}\n            value={clientSecret}\n            onChange={setClientSecret}\n          />\n        </PaddedContainer>\n      </div>\n      <div>\n        <Screenshot src={adminPortalAssets.oktaClientSecret} alt=\"Okta client secret\" />\n      </div>\n      <div>\n        <Instruction>\n          Input your Okta URL (Issuer), which can be found in the far right-hand dropdown in the top navigation bar\n          under your email. It should look like {`https://<tenant_name>.okta.com`}.\n        </Instruction>\n        <PaddedContainer>\n          <TransformInputToIssuer\n            connection={connectionProp}\n            issuer={issuer}\n            setIssuer={setIssuer}\n            issuerDerivedValue={issuerDerivedValue}\n            setIssuerDerivedValue={setIssuerDerivedValue}\n          />\n        </PaddedContainer>\n      </div>\n    </>\n  );\n};\n\nconst EntraOidcInstructions = ({\n  connection: connectionProp,\n  clientId,\n  setClientId,\n  clientSecret,\n  setClientSecret,\n  issuer,\n  setIssuer,\n  issuerDerivedValue,\n  setIssuerDerivedValue,\n}: OidcInstructionProps) => {\n  const { idp } = getIdpAndConnectionInfo(connectionProp);\n\n  return (\n    <>\n      <div>\n        <Instruction>\n          Navigate to <b>App registration → Overview</b> and under <b>Essentials</b> copy over the following values:\n        </Instruction>\n        <PaddedContainer>\n          <Input\n            label={idp.clientIdLabel}\n            labelVariant=\"body1\"\n            placeholder={`Enter ${idp.clientIdLabel}`}\n            value={clientId}\n            onChange={setClientId}\n          />\n          <TransformInputToIssuer\n            connection={connectionProp}\n            issuer={issuer}\n            setIssuer={setIssuer}\n            issuerDerivedValue={issuerDerivedValue}\n            setIssuerDerivedValue={setIssuerDerivedValue}\n          />\n        </PaddedContainer>\n        <Screenshot src={adminPortalAssets.entraOidcClientIdAndIssuer} alt=\"Entra OIDC Client ID and Issuer\" />\n      </div>\n      <Instruction>\n        Navigate to <b>Certificates & secrets</b> from the left-hand navigation and select <b>New client secrets</b>{' '}\n        from the <b>Client secrets</b> section. Add a description, select an expiry, and click <b>Add</b>. Your new\n        secret will now be listed in the client secrets table.\n      </Instruction>\n      <Screenshot src={adminPortalAssets.entraOidcNewClientSecret} alt=\"Entra OIDC New Client Secret\" />\n      <div>\n        <Instruction>\n          Copy the secret from the <b>Value</b> column and input below:\n        </Instruction>\n        <PaddedContainer>\n          <Input\n            label={idp.clientSecretLabel}\n            labelVariant=\"body1\"\n            placeholder={`Enter ${idp.clientSecretLabel}`}\n            value={clientSecret}\n            onChange={setClientSecret}\n          />\n        </PaddedContainer>\n        <Screenshot src={adminPortalAssets.entraOidcSecretValue} alt=\"Entra OIDC Secret Value\" />\n      </div>\n    </>\n  );\n};\n\nconst OktaSamlManualConfigurationInstructions = ({\n  connection: connectionProp,\n  idpValueInputs,\n}: {\n  connection: SAMLTaggedConnection;\n  idpValueInputs: Record<SamlIdpValue, React.ReactNode> | undefined;\n}) => {\n  const { idp } = getIdpAndConnectionInfo(connectionProp);\n\n  const { data } = useOrgInfo();\n  const organizationName = data?.organization_name ?? '';\n\n  return (\n    <>\n      <div>\n        <Instruction>\n          Expand <b>More details</b> within the <b>Metadata Details</b> and copy over the following information:\n        </Instruction>\n        <PaddedContainer>\n          {idpValueInputs\n            ? idp.idpValueOrder.map((key) => <React.Fragment key={key}>{idpValueInputs[key]}</React.Fragment>)\n            : undefined}\n        </PaddedContainer>\n      </div>\n      <Instruction>\n        Navigate to <b>Assignments</b> and assign users who should be able to access {organizationName} manually or via\n        group membership.\n      </Instruction>\n      <Screenshot src={adminPortalAssets.oktaAssign} alt=\"Okta assign\" />\n    </>\n  );\n};\n\nconst EntraSamlManualConfigurationInstructions = ({\n  connection: connectionProp,\n  x509Certificate,\n  setX509Certificate,\n  ssoUrl,\n  setSsoUrl,\n  entityId,\n  setEntityId,\n}: {\n  connection: SAMLTaggedConnection;\n  x509Certificate: string;\n  setX509Certificate: (value: string) => void;\n  ssoUrl: string;\n  setSsoUrl: (value: string) => void;\n  entityId: string;\n  setEntityId: (value: string) => void;\n}) => {\n  const { idp } = getIdpAndConnectionInfo(connectionProp);\n\n  const { data } = useOrgInfo();\n  const organizationName = data?.organization_name ?? '';\n\n  return (\n    <>\n      <div>\n        <Instruction>\n          Click <b>Edit</b> on the <b>SAML Certificate</b> section, and select <b>PEM Certificate download</b> on the\n          right hand action toggle for the currently Active certificate, open the Certificate and copy below:\n        </Instruction>\n        <PaddedContainer>\n          <Input\n            label={idp.x509CertificateLabel}\n            labelVariant=\"body1\"\n            placeholder={`Enter ${idp.x509CertificateLabel}`}\n            value={x509Certificate}\n            onChange={setX509Certificate}\n          />\n        </PaddedContainer>\n      </div>\n      <div>\n        <Instruction>\n          Close the SAML Certificate section, and under Step 4: Set up {organizationName} copy over the following\n          values:\n        </Instruction>\n        <PaddedContainer>\n          <Input\n            label={idp.idpSsoUrlLabel}\n            labelVariant=\"body1\"\n            placeholder={`Enter ${idp.idpSsoUrlLabel}`}\n            value={ssoUrl}\n            onChange={setSsoUrl}\n          />\n          <Input\n            label={idp.idpEntityIdLabel}\n            labelVariant=\"body1\"\n            placeholder={`Enter ${idp.idpEntityIdLabel}`}\n            value={entityId}\n            onChange={setEntityId}\n          />\n        </PaddedContainer>\n      </div>\n      <Instruction>\n        Click <b>Save</b>.\n      </Instruction>\n      <Instruction>\n        You can add users to your application in Entra by navigating to <b>Users and groups</b> in the left-hand\n        navigation and selecting <b>Add user/group</b> from the top.\n      </Instruction>\n      <Screenshot src={adminPortalAssets.entraAddUsersAndGroups} alt=\"Entra Add Users and Groups\" />\n    </>\n  );\n};\n\nconst GoogleSamlManualConfigurationInstructions = ({\n  connection: connectionProp,\n  idpValueInputs,\n}: {\n  connection: SAMLTaggedConnection;\n  idpValueInputs: Record<SamlIdpValue, React.ReactNode> | undefined;\n}) => {\n  const { idp } = getIdpAndConnectionInfo(connectionProp);\n\n  return (\n    <>\n      <div>\n        <Instruction>\n          From <b>Option 2: Copy the SSO URL, entity ID and certificate</b> copy over the following values:\n        </Instruction>\n        <PaddedContainer>\n          {idpValueInputs\n            ? idp.idpValueOrder.map((key) => <React.Fragment key={key}>{idpValueInputs[key]}</React.Fragment>)\n            : undefined}\n        </PaddedContainer>\n        <Screenshot src={adminPortalAssets.googleSamlConfigInfo} alt=\"Google SAML Config Info\" />\n      </div>\n      <Instruction>\n        Click <b>Continue</b>.\n      </Instruction>\n    </>\n  );\n};\n\nexport const SSONewConnectionConfigureScreen = ({\n  connection: connectionProp,\n}: {\n  connection: SAMLTaggedConnection | OIDCTaggedConnection;\n}) => {\n  const { navigate } = useSsoRouterController();\n\n  const info = getIdpAndConnectionInfo(connectionProp);\n  const { connection, idp, type } = info;\n\n  const connectionDisplayName = connection.display_name;\n\n  const { mutate } = useMutateSsoConnection(type);\n  const { mutate: mutateByUrl } = useMutateSsoConnectionByUrl();\n\n  const { useBlockNavigation } = useSsoRouterController();\n  const [block, setBlock] = useState(true);\n  const { allowNavigation, blocked, cancelNavigation } = useBlockNavigation(block);\n\n  const [manualConfiguration, setManualConfiguration] = useManualConfigurationState(info);\n  const [metadataUrl, setMetadataUrl] = useState('');\n  const [ssoUrl, setSsoUrl] = useState('');\n  const [entityId, setEntityId] = useState('');\n  const [x509Certificate, setX509Certificate] = useState('');\n  const [clientId, setClientId] = useState('');\n  const [clientSecret, setClientSecret] = useState('');\n  const [issuer, setIssuer] = useState('');\n  const [issuerDerivedValue, setIssuerDerivedValue] = useState('');\n  const [authorizationUrl, setAuthorizationUrl] = useState('');\n  const [tokenUrl, setTokenUrl] = useState('');\n  const [userInfoUrl, setUserInfoUrl] = useState('');\n  const [jwksUrl, setJwksUrl] = useState('');\n\n  const [attributeMappingState, setAttributeMappingState] = useState<AttributeMappingState>(() => ({\n    attributeMapping: getDefaultAttributeMapping(connection.identity_provider),\n  }));\n\n  const attributeMapping = useMemo(\n    // Strip attributes that are not mapped to a value (e.g., the default `groups` attribute)\n    () => Object.fromEntries(Object.entries(attributeMappingState.attributeMapping).filter(([, value]) => value)),\n    [attributeMappingState.attributeMapping],\n  );\n\n  const { openToast } = useToast();\n\n  const handleSubmit = useCallback<React.FormEventHandler<HTMLFormElement>>(\n    async (e) => {\n      e.preventDefault();\n\n      if (!connection) {\n        return;\n      }\n\n      try {\n        if (type === 'saml') {\n          if (manualConfiguration) {\n            await mutate({\n              connection_id: connection.connection_id,\n              idp_sso_url: ssoUrl,\n              idp_entity_id: entityId,\n              x509_certificate: x509Certificate,\n              attribute_mapping: attributeMapping,\n            } satisfies B2BSSOSAMLUpdateConnectionOptions);\n          } else {\n            await mutate({\n              connection_id: connection.connection_id,\n              attribute_mapping: attributeMapping,\n            } satisfies B2BSSOSAMLUpdateConnectionOptions);\n            if (metadataUrl) {\n              await mutateByUrl({ connection_id: connection.connection_id, metadata_url: metadataUrl });\n            }\n          }\n        } else {\n          const options: B2BSSOOIDCUpdateConnectionOptions = {\n            connection_id: connection.connection_id,\n            client_id: clientId,\n            client_secret: clientSecret,\n          };\n\n          if (idp.transformInputToIssuer) {\n            if (issuerDerivedValue) {\n              options.issuer = idp.transformInputToIssuer(issuerDerivedValue);\n            }\n          } else {\n            options.issuer = issuer;\n          }\n\n          if (manualConfiguration) {\n            options.authorization_url = authorizationUrl;\n            options.token_url = tokenUrl;\n            options.userinfo_url = userInfoUrl;\n            options.jwks_url = jwksUrl;\n          }\n          await mutate(options);\n        }\n\n        setBlock(false);\n        navigate({ screen: 'connectionsList' });\n      } catch (e) {\n        const message = extractErrorMessage(e);\n        openToast({ text: message || 'Unable to save connection', type: 'error' });\n      }\n    },\n    [\n      connection,\n      type,\n      navigate,\n      manualConfiguration,\n      mutate,\n      ssoUrl,\n      entityId,\n      x509Certificate,\n      attributeMapping,\n      metadataUrl,\n      mutateByUrl,\n      clientId,\n      clientSecret,\n      idp,\n      issuerDerivedValue,\n      issuer,\n      authorizationUrl,\n      tokenUrl,\n      userInfoUrl,\n      jwksUrl,\n      openToast,\n    ],\n  );\n\n  const renderSamlConfiguration = () => {\n    if (type !== 'saml') return;\n\n    const idpValueInputs: Record<SamlIdpValue, React.ReactNode> = {\n      ssoUrl: (\n        <Input\n          label={idp.idpSsoUrlLabel}\n          labelVariant=\"body1\"\n          placeholder={`Enter ${idp.idpSsoUrlLabel}`}\n          value={ssoUrl}\n          onChange={setSsoUrl}\n        />\n      ),\n      entityId: (\n        <Input\n          label={idp.idpEntityIdLabel}\n          labelVariant=\"body1\"\n          placeholder={`Enter ${idp.idpEntityIdLabel}`}\n          value={entityId}\n          onChange={setEntityId}\n        />\n      ),\n      certificate: (\n        <Input\n          label={idp.x509CertificateLabel}\n          labelVariant=\"body1\"\n          placeholder={`Enter ${idp.x509CertificateLabel}`}\n          value={x509Certificate}\n          onChange={setX509Certificate}\n        />\n      ),\n    };\n\n    if (manualConfiguration) {\n      switch (connection.identity_provider) {\n        case 'okta':\n          return <OktaSamlManualConfigurationInstructions connection={connection} idpValueInputs={idpValueInputs} />;\n        case 'microsoft-entra':\n          return (\n            <EntraSamlManualConfigurationInstructions\n              connection={connection}\n              x509Certificate={x509Certificate}\n              setX509Certificate={setX509Certificate}\n              ssoUrl={ssoUrl}\n              setSsoUrl={setSsoUrl}\n              entityId={entityId}\n              setEntityId={setEntityId}\n            />\n          );\n        case 'google-workspace':\n          return <GoogleSamlManualConfigurationInstructions connection={connection} idpValueInputs={idpValueInputs} />;\n      }\n    }\n\n    switch (connection.identity_provider) {\n      case 'okta':\n        return (\n          <OktaSamlInstructions connection={connection} metadataUrl={metadataUrl} setMetadataUrl={setMetadataUrl} />\n        );\n      case 'microsoft-entra':\n        return (\n          <EntraSamlInstructions connection={connection} metadataUrl={metadataUrl} setMetadataUrl={setMetadataUrl} />\n        );\n    }\n\n    return manualConfiguration ? (\n      idpValueInputs ? (\n        idp.idpValueOrder.map((key) => <React.Fragment key={key}>{idpValueInputs[key]}</React.Fragment>)\n      ) : undefined\n    ) : (\n      <div>\n        <Instruction>Enter the {idp.metadataUrlLabel} to configure your connection automatically.</Instruction>\n        <Input\n          placeholder={`Enter ${idp.metadataUrlLabel}`}\n          caption={`If you don’t know your ${idp.metadataUrlLabel}, you can configure your connection manually.`}\n          value={metadataUrl}\n          onChange={setMetadataUrl}\n        />\n      </div>\n    );\n  };\n\n  const renderOidcConfiguration = () => {\n    if (type !== 'oidc') return;\n    if (!manualConfiguration) {\n      switch (connection.identity_provider) {\n        case 'okta':\n          return (\n            <OktaOidcInstructions\n              connection={connection}\n              clientId={clientId}\n              setClientId={setClientId}\n              clientSecret={clientSecret}\n              setClientSecret={setClientSecret}\n              issuer={issuer}\n              setIssuer={setIssuer}\n              issuerDerivedValue={issuerDerivedValue}\n              setIssuerDerivedValue={setIssuerDerivedValue}\n            />\n          );\n        case 'microsoft-entra':\n          return (\n            <EntraOidcInstructions\n              connection={connection}\n              clientId={clientId}\n              setClientId={setClientId}\n              clientSecret={clientSecret}\n              setClientSecret={setClientSecret}\n              issuer={issuer}\n              setIssuer={setIssuer}\n              issuerDerivedValue={issuerDerivedValue}\n              setIssuerDerivedValue={setIssuerDerivedValue}\n            />\n          );\n      }\n    }\n\n    return (\n      <>\n        <Input\n          label={idp.clientIdLabel}\n          labelVariant=\"body1\"\n          placeholder={`Enter ${idp.clientIdLabel}`}\n          value={clientId}\n          onChange={setClientId}\n        />\n        <Input\n          label={idp.clientSecretLabel}\n          labelVariant=\"body1\"\n          placeholder={`Enter ${idp.clientSecretLabel}`}\n          value={clientSecret}\n          onChange={setClientSecret}\n        />\n        <TransformInputToIssuer\n          connection={connection}\n          issuer={issuer}\n          setIssuer={setIssuer}\n          issuerDerivedValue={issuerDerivedValue}\n          setIssuerDerivedValue={setIssuerDerivedValue}\n        />\n        {manualConfiguration && (\n          <>\n            <Input\n              label=\"Authorization URL\"\n              labelVariant=\"body1\"\n              placeholder=\"Enter Authorization URL\"\n              value={authorizationUrl}\n              onChange={setAuthorizationUrl}\n            />\n            <Input\n              label=\"Token URL\"\n              labelVariant=\"body1\"\n              placeholder=\"Enter Token URL\"\n              value={tokenUrl}\n              onChange={setTokenUrl}\n            />\n            <Input\n              label=\"User Info URL\"\n              labelVariant=\"body1\"\n              placeholder=\"Enter User Info\"\n              value={userInfoUrl}\n              onChange={setUserInfoUrl}\n            />\n            <Input\n              label=\"JWKS URL\"\n              labelVariant=\"body1\"\n              placeholder=\"Enter JWKS URL\"\n              value={jwksUrl}\n              onChange={setJwksUrl}\n            />\n          </>\n        )}\n      </>\n    );\n  };\n\n  const stepMap: Record<SamlSetupStep, React.ReactNode> = {\n    createApplication: (\n      <Accordion>\n        <AccordionSummary>\n          <Typography>Create {typeToUserFriendlyName(type)} Application.</Typography>\n        </AccordionSummary>\n        <AccordionDetails>\n          <CreateApplication connection={connection} />\n        </AccordionDetails>\n      </Accordion>\n    ),\n    copyToIdp: (\n      <Accordion>\n        <AccordionSummary>\n          <Typography>Copy the following App values to {idp.copyToOrFromIdpDisplayName}.</Typography>\n        </AccordionSummary>\n        <AccordionDetails>\n          <AppDetails connection={connection} />\n        </AccordionDetails>\n      </Accordion>\n    ),\n    copyFromIdp: (\n      <Accordion>\n        <AccordionSummary>\n          <Typography>Enter the following from {idp.copyToOrFromIdpDisplayName}.</Typography>\n        </AccordionSummary>\n        <AccordionDetails>\n          <FlexBox flexDirection=\"column\" gap={2}>\n            <>\n              {type === 'saml' && (\n                <>\n                  {renderSamlConfiguration()}\n                  {!!idp.metadataUrlLabel && (\n                    <Button\n                      compact\n                      variant=\"ghost\"\n                      onClick={() => {\n                        setManualConfiguration(!manualConfiguration);\n                      }}\n                    >\n                      {manualConfiguration ? `Configure using ${idp.metadataUrlLabel}` : 'Configure manually'}\n                    </Button>\n                  )}\n                </>\n              )}\n              {type === 'oidc' && (\n                <>\n                  {renderOidcConfiguration()}\n                  <Button\n                    compact\n                    variant=\"ghost\"\n                    onClick={() => {\n                      setManualConfiguration(!manualConfiguration);\n                    }}\n                  >\n                    {manualConfiguration\n                      ? `Configure using ${idp.issuerDerivedLabel ?? idp.issuerLabel}`\n                      : 'Configure manually'}\n                  </Button>\n                </>\n              )}\n            </>\n          </FlexBox>\n        </AccordionDetails>\n      </Accordion>\n    ),\n    attributeMapping: type === 'saml' && (\n      <Accordion>\n        <AccordionSummary>\n          <Typography>Set your {idp.attributeMappingLabel}.</Typography>\n        </AccordionSummary>\n        <AccordionDetails>\n          <DetailedAttributeMappingTable\n            connection={connection}\n            localState={attributeMappingState}\n            setLocalState={setAttributeMappingState}\n            remoteState={attributeMappingState}\n          />\n        </AccordionDetails>\n      </Accordion>\n    ),\n  };\n\n  const steps = idp.setupOrder.map((step) => <React.Fragment key={step}>{stepMap[step]}</React.Fragment>);\n\n  return (\n    <form onSubmit={handleSubmit}>\n      <Modal\n        isOpen={block && blocked}\n        close={cancelNavigation}\n        confirm={() => {\n          allowNavigation();\n          return Promise.resolve();\n        }}\n        title={`Save ${connectionDisplayName}?`}\n        confirmButtonText=\"Save and complete later\"\n        description={\n          'Your SSO connection is not fully configured. It will remain pending until you complete all necessary configuration steps. You can save your progress and complete later or cancel to finish configuration.'\n        }\n      />\n      <FlexBox flexDirection=\"column\" gap={3}>\n        <Button\n          variant=\"ghost\"\n          compact\n          onClick={() => {\n            navigate({ screen: 'connectionsList' });\n          }}\n          startIcon={<ChevronLeft />}\n        >\n          Back to all SSO connections\n        </Button>\n        <Typography variant=\"h2\">Configure {connectionDisplayName}</Typography>\n        <div>{steps}</div>\n        <FlexBox justifyContent=\"flex-end\">\n          <Button type=\"submit\">Create</Button>\n        </FlexBox>\n      </FlexBox>\n    </form>\n  );\n};\n"],"names":["useManualConfigurationState","idp","type","manualConfigurationState","setManualConfigurationState","useState","idpRequiresManualConfig","metadataUrlLabel","manualConfiguration","getDefaultAttributeMapping","idpType","baseMapping","email","first_name","last_name","groups","idp_user_id","OktaSamlInstructions","connection","connectionProp","metadataUrl","setMetadataUrl","getIdpAndConnectionInfo","data","useOrgInfo","organizationName","organization_name","React","div","Instruction","b","PaddedContainer","Input","label","placeholder","value","onChange","Screenshot","src","adminPortalAssets","oktaSamlGetMetadataUrl","alt","oktaAssign","EntraSamlInstructions","entraSamlMetadataUrl","entraAddUsersAndGroups","TransformInputToIssuer","issuer","setIssuer","issuerDerivedValue","setIssuerDerivedValue","transformInputToIssuer","issuerDerivedLabel","labelVariant","issuerLabel","OktaOidcInstructions","clientId","setClientId","clientSecret","setClientSecret","clientIdLabel","clientSecretLabel","oktaClientSecret","EntraOidcInstructions","entraOidcClientIdAndIssuer","entraOidcNewClientSecret","entraOidcSecretValue","OktaSamlManualConfigurationInstructions","idpValueInputs","idpValueOrder","map","key","Fragment","undefined","EntraSamlManualConfigurationInstructions","x509Certificate","setX509Certificate","ssoUrl","setSsoUrl","entityId","setEntityId","x509CertificateLabel","idpSsoUrlLabel","idpEntityIdLabel","GoogleSamlManualConfigurationInstructions","googleSamlConfigInfo","SSONewConnectionConfigureScreen","navigate","useSsoRouterController","info","connectionDisplayName","display_name","mutate","useMutateSsoConnection","mutateByUrl","useMutateSsoConnectionByUrl","useBlockNavigation","block","setBlock","allowNavigation","blocked","cancelNavigation","setManualConfiguration","authorizationUrl","setAuthorizationUrl","tokenUrl","setTokenUrl","userInfoUrl","setUserInfoUrl","jwksUrl","setJwksUrl","attributeMappingState","setAttributeMappingState","attributeMapping","identity_provider","useMemo","Object","fromEntries","entries","filter","openToast","useToast","handleSubmit","useCallback","e","preventDefault","connection_id","idp_sso_url","idp_entity_id","x509_certificate","attribute_mapping","metadata_url","options","client_id","client_secret","authorization_url","token_url","userinfo_url","jwks_url","screen","message","extractErrorMessage","text","renderSamlConfiguration","certificate","caption","renderOidcConfiguration","stepMap","createApplication","Accordion","AccordionSummary","Typography","typeToUserFriendlyName","AccordionDetails","CreateApplication","copyToIdp","copyToOrFromIdpDisplayName","AppDetails","copyFromIdp","FlexBox","flexDirection","gap","Button","compact","variant","onClick","attributeMappingLabel","DetailedAttributeMappingTable","localState","setLocalState","remoteState","steps","setupOrder","step","form","onSubmit","Modal","isOpen","close","confirm","Promise","resolve","title","confirmButtonText","description","startIcon","ChevronLeft","justifyContent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AA0BA,MAAMA,8BAA8B,CAAC,EAAEC,GAAG,EAAEC,IAAI,EAAiB,GAAA;AAC/D,IAAA,MAAM,CAACC,wBAAAA,EAA0BC,2BAAAA,CAA4B,GAAGC,CAAAA,CAAS,KAAA,CAAA;AACzE,IAAA,MAAMC,uBAAAA,GAA0BJ,IAAAA,KAAS,MAAA,IAAUD,GAAAA,CAAIM,gBAAgB,KAAK,KAAA;AAC5E,IAAA,MAAMC,sBAAsBL,wBAAAA,IAA4BG,uBAAAA;IAExD,OAAO;AAACE,QAAAA,mBAAAA;AAAqBJ,QAAAA;AAA4B,KAAA;AAC3D,CAAA;AAEA,MAAMK,6BAA6B,CAACC,OAAAA,GAAAA;AAClC,IAAA,MAAMC,WAAAA,GAAc;QAClBC,KAAAA,EAAO,QAAA;QACPC,UAAAA,EAAY,WAAA;QACZC,SAAAA,EAAW,UAAA;QACXC,MAAAA,EAAQ,EAAA;QACRC,WAAAA,EAAa;AACf,KAAA;IAEA,OAAQN,OAAAA;QACN,KAAK,MAAA;YACH,OAAO;AACL,gBAAA,GAAGC,WAAW;gBACdK,WAAAA,EAAa;AACf,aAAA;QACF,KAAK,iBAAA;YACH,OAAO;AACL,gBAAA,GAAGL,WAAW;gBACdK,WAAAA,EAAa;AACf,aAAA;;QAEF,KAAK,kBAAA;QACL,KAAK,SAAA;AACL,QAAA;YACE,OAAOL,WAAAA;AACX;AACF,CAAA;AAEA,MAAMM,oBAAAA,GAAuB,CAAC,EAC5BC,UAAAA,EAAYC,cAAc,EAC1BC,WAAW,EACXC,cAAc,EAKf,GAAA;AACC,IAAA,MAAM,EAAEpB,GAAG,EAAE,GAAGqB,uBAAAA,CAAwBH,cAAAA,CAAAA;IAExC,MAAM,EAAEI,IAAI,EAAE,GAAGC,UAAAA,EAAAA;IACjB,MAAMC,gBAAAA,GAAmBF,MAAMG,iBAAAA,IAAqB,EAAA;IAEpD,qBACEC,EAAA,CAAA,aAAA,CAAAA,EAAA,CAAA,QAAA,EAAA,IAAA,gBACEA,iBAACC,KAAAA,EAAAA,IAAAA,gBACCD,EAAA,CAAA,aAAA,CAACE,mBAAY,0DAAA,gBAC6CF,EAAA,CAAA,aAAA,CAACG,WAAE,SAAA,CAAA,EAAW,gBAAA,EAAe,mBACrFH,EAAA,CAAA,aAAA,CAACG,GAAAA,EAAAA,IAAAA,EAAE,2CAA0C,qBAAA,gBAAmBH,EAAA,CAAA,aAAA,CAACG,WAAE,cAAA,CAAA,EAAgB,GAAA,CAAA,gBAErFH,EAAA,CAAA,aAAA,CAACI,eAAAA,EAAAA,IAAAA,gBACCJ,EAAA,CAAA,aAAA,CAACK,KAAAA,EAAAA;QACCC,KAAAA,EAAO,CAAA,EAAGhC,GAAAA,CAAIM,gBAAgB,CAAA,CAAE;AAChC2B,QAAAA,WAAAA,EAAa,CAAC,MAAM,EAAEjC,GAAAA,CAAIM,gBAAgB,CAAA,CAAE;QAC5C4B,KAAAA,EAAOf,WAAAA;QACPgB,QAAAA,EAAUf;uBAGdM,EAAA,CAAA,aAAA,CAACU,UAAAA,EAAAA;AAAWC,QAAAA,GAAAA,EAAKC,kBAAkBC,sBAAsB;QAAEC,GAAAA,EAAI;uBAEjEd,EAAA,CAAA,aAAA,CAACE,WAAAA,EAAAA,IAAAA,EAAY,8BACCF,EAAA,CAAA,aAAA,CAACG,GAAAA,EAAAA,IAAAA,EAAE,gBAAe,iDAAA,EAAgDL,gBAAAA,EAAiB,qDAGjGE,EAAA,CAAA,aAAA,CAACU,UAAAA,EAAAA;AAAWC,QAAAA,GAAAA,EAAKC,kBAAkBG,UAAU;QAAED,GAAAA,EAAI;;AAGzD,CAAA;AAEA,MAAME,qBAAAA,GAAwB,CAAC,EAC7BzB,UAAAA,EAAYC,cAAc,EAC1BC,WAAW,EACXC,cAAc,EAKf,GAAA;AACC,IAAA,MAAM,EAAEpB,GAAG,EAAE,GAAGqB,uBAAAA,CAAwBH,cAAAA,CAAAA;AAExC,IAAA,qBACEQ,kDACEA,EAAA,CAAA,aAAA,CAACC,KAAAA,EAAAA,IAAAA,gBACCD,EAAA,CAAA,aAAA,CAACE,WAAAA,EAAAA,IAAAA,EAAY,yBACJF,EAAA,CAAA,aAAA,CAACG,GAAAA,EAAAA,IAAAA,EAAE,2BAAA,CAAA,EAA6B,oBAAA,gBAAkBH,iBAACG,GAAAA,EAAAA,IAAAA,EAAE,6BAAA,CAAA,EAA+B,4CAAA,CAAA,gBAG7FH,EAAA,CAAA,aAAA,CAACI,qCACCJ,EAAA,CAAA,aAAA,CAACK,KAAAA,EAAAA;QACCC,KAAAA,EAAM,6BAAA;AACNC,QAAAA,WAAAA,EAAa,CAAC,MAAM,EAAEjC,GAAAA,CAAIM,gBAAgB,CAAA,CAAE;QAC5C4B,KAAAA,EAAOf,WAAAA;QACPgB,QAAAA,EAAUf;uBAGdM,EAAA,CAAA,aAAA,CAACU,UAAAA,EAAAA;AAAWC,QAAAA,GAAAA,EAAKC,kBAAkBK,oBAAoB;QAAEH,GAAAA,EAAI;sBAC7Dd,EAAA,CAAA,aAAA,CAACE,WAAAA,EAAAA,IAAAA,EAAY,kEAAA,gBACqDF,EAAA,CAAA,aAAA,CAACG,GAAAA,EAAAA,IAAAA,EAAE,kBAAA,CAAA,EAAoB,6DAC9DH,EAAA,CAAA,aAAA,CAACG,GAAAA,EAAAA,IAAAA,EAAE,gBAAA,CAAA,EAAkB,gBAAA,CAAA,gBAEhDH,EAAA,CAAA,aAAA,CAACU,UAAAA,EAAAA;AAAWC,QAAAA,GAAAA,EAAKC,kBAAkBM,sBAAsB;QAAEJ,GAAAA,EAAI;;AAIvE,CAAA;AAcA,MAAMK,sBAAAA,GAAyB,CAAC,EAC9B5B,UAAAA,EAAYC,cAAc,EAC1B4B,MAAM,EACNC,SAAS,EACTC,kBAAkB,EAClBC,qBAAqB,EAOtB,GAAA;AACC,IAAA,MAAM,EAAEjD,GAAG,EAAE,GAAGqB,uBAAAA,CAAwBH,cAAAA,CAAAA;IAExC,OAAOlB,GAAAA,CAAIkD,sBAAsB,iBAC/BxB,EAAA,CAAA,aAAA,CAACK,KAAAA,EAAAA;AACCC,QAAAA,KAAAA,EAAOhC,IAAImD,kBAAkB;QAC7BC,YAAAA,EAAa,OAAA;AACbnB,QAAAA,WAAAA,EAAa,CAAC,MAAM,EAAEjC,GAAAA,CAAImD,kBAAkB,CAAA,CAAE;QAC9CjB,KAAAA,EAAOc,kBAAAA;QACPb,QAAAA,EAAUc;uBAGZvB,EAAA,CAAA,aAAA,CAACK,KAAAA,EAAAA;AACCC,QAAAA,KAAAA,EAAOhC,IAAIqD,WAAW;QACtBD,YAAAA,EAAa,OAAA;AACbnB,QAAAA,WAAAA,EAAa,CAAC,MAAM,EAAEjC,GAAAA,CAAIqD,WAAW,CAAA,CAAE;QACvCnB,KAAAA,EAAOY,MAAAA;QACPX,QAAAA,EAAUY;;AAGhB,CAAA;AAEA,MAAMO,oBAAAA,GAAuB,CAAC,EAC5BrC,UAAAA,EAAYC,cAAc,EAC1BqC,QAAQ,EACRC,WAAW,EACXC,YAAY,EACZC,eAAe,EACfZ,MAAM,EACNC,SAAS,EACTC,kBAAkB,EAClBC,qBAAqB,EACA,GAAA;AACrB,IAAA,MAAM,EAAEjD,GAAG,EAAE,GAAGqB,uBAAAA,CAAwBH,cAAAA,CAAAA;AAExC,IAAA,qBACEQ,EAAA,CAAA,aAAA,CAAAA,EAAA,CAAA,QAAA,EAAA,IAAA,gBACEA,EAAA,CAAA,aAAA,CAACC,KAAAA,EAAAA,IAAAA,gBACCD,EAAA,CAAA,aAAA,CAACE,WAAAA,EAAAA,IAAAA,EAAY,aAAA,gBACAF,EAAA,CAAA,aAAA,CAACG,GAAAA,EAAAA,IAAAA,EAAE,SAAA,CAAA,EAAW,gFAAA,CAAA,gBAE3BH,EAAA,CAAA,aAAA,CAACI,eAAAA,EAAAA,IAAAA,gBACCJ,EAAA,CAAA,aAAA,CAACK,KAAAA,EAAAA;AACCC,QAAAA,KAAAA,EAAOhC,IAAI2D,aAAa;QACxBP,YAAAA,EAAa,OAAA;AACbnB,QAAAA,WAAAA,EAAa,CAAC,MAAM,EAAEjC,GAAAA,CAAI2D,aAAa,CAAA,CAAE;QACzCzB,KAAAA,EAAOqB,QAAAA;QACPpB,QAAAA,EAAUqB;AAIhB,KAAA,CAAA,CAAA,CAAA,gBAAA9B,EAAA,CAAA,aAAA,CAACC,KAAAA,EAAAA,IAAAA,gBACCD,EAAA,CAAA,aAAA,CAACE,WAAAA,EAAAA,IAAAA,EAAY,cAAA,gBACCF,iBAACG,GAAAA,EAAAA,IAAAA,EAAE,uBAAA,CAAA,EAAyB,aAAA,gBAAWH,EAAA,CAAA,aAAA,CAACG,GAAAA,EAAAA,IAAAA,EAAE,eAAA,CAAA,EAAiB,yCAAA,CAAA,gBAEzEH,EAAA,CAAA,aAAA,CAACI,qCACCJ,EAAA,CAAA,aAAA,CAACK,KAAAA,EAAAA;AACCC,QAAAA,KAAAA,EAAOhC,IAAI4D,iBAAiB;QAC5BR,YAAAA,EAAa,OAAA;AACbnB,QAAAA,WAAAA,EAAa,CAAC,MAAM,EAAEjC,GAAAA,CAAI4D,iBAAiB,CAAA,CAAE;QAC7C1B,KAAAA,EAAOuB,YAAAA;QACPtB,QAAAA,EAAUuB;AAIhB,KAAA,CAAA,CAAA,CAAA,gBAAAhC,EAAA,CAAA,aAAA,CAACC,2BACCD,EAAA,CAAA,aAAA,CAACU,UAAAA,EAAAA;AAAWC,QAAAA,GAAAA,EAAKC,kBAAkBuB,gBAAgB;QAAErB,GAAAA,EAAI;uBAE3Dd,EAAA,CAAA,aAAA,CAACC,KAAAA,EAAAA,IAAAA,gBACCD,EAAA,CAAA,aAAA,CAACE,WAAAA,EAAAA,IAAAA,EAAY,kJAAA,EAE4B,CAAC,8BAA8B,CAAC,EAAC,GAAA,CAAA,gBAE1EF,EAAA,CAAA,aAAA,CAACI,eAAAA,EAAAA,IAAAA,gBACCJ,EAAA,CAAA,aAAA,CAACmB,sBAAAA,EAAAA;QACC5B,UAAAA,EAAYC,cAAAA;QACZ4B,MAAAA,EAAQA,MAAAA;QACRC,SAAAA,EAAWA,SAAAA;QACXC,kBAAAA,EAAoBA,kBAAAA;QACpBC,qBAAAA,EAAuBA;;AAMnC,CAAA;AAEA,MAAMa,qBAAAA,GAAwB,CAAC,EAC7B7C,UAAAA,EAAYC,cAAc,EAC1BqC,QAAQ,EACRC,WAAW,EACXC,YAAY,EACZC,eAAe,EACfZ,MAAM,EACNC,SAAS,EACTC,kBAAkB,EAClBC,qBAAqB,EACA,GAAA;AACrB,IAAA,MAAM,EAAEjD,GAAG,EAAE,GAAGqB,uBAAAA,CAAwBH,cAAAA,CAAAA;AAExC,IAAA,qBACEQ,kDACEA,EAAA,CAAA,aAAA,CAACC,KAAAA,EAAAA,IAAAA,gBACCD,EAAA,CAAA,aAAA,CAACE,WAAAA,EAAAA,IAAAA,EAAY,8BACCF,EAAA,CAAA,aAAA,CAACG,GAAAA,EAAAA,IAAAA,EAAE,6BAAA,CAAA,EAA+B,aAAA,gBAAWH,iBAACG,GAAAA,EAAAA,IAAAA,EAAE,YAAA,CAAA,EAAc,kCAAA,CAAA,gBAE5EH,EAAA,CAAA,aAAA,CAACI,qCACCJ,EAAA,CAAA,aAAA,CAACK,KAAAA,EAAAA;AACCC,QAAAA,KAAAA,EAAOhC,IAAI2D,aAAa;QACxBP,YAAAA,EAAa,OAAA;AACbnB,QAAAA,WAAAA,EAAa,CAAC,MAAM,EAAEjC,GAAAA,CAAI2D,aAAa,CAAA,CAAE;QACzCzB,KAAAA,EAAOqB,QAAAA;QACPpB,QAAAA,EAAUqB;sBAEZ9B,EAAA,CAAA,aAAA,CAACmB,sBAAAA,EAAAA;QACC5B,UAAAA,EAAYC,cAAAA;QACZ4B,MAAAA,EAAQA,MAAAA;QACRC,SAAAA,EAAWA,SAAAA;QACXC,kBAAAA,EAAoBA,kBAAAA;QACpBC,qBAAAA,EAAuBA;uBAG3BvB,EAAA,CAAA,aAAA,CAACU,UAAAA,EAAAA;AAAWC,QAAAA,GAAAA,EAAKC,kBAAkByB,0BAA0B;QAAEvB,GAAAA,EAAI;AAErE,KAAA,CAAA,CAAA,gBAAAd,EAAA,CAAA,aAAA,CAACE,mBAAY,cAAA,gBACCF,EAAA,CAAA,aAAA,CAACG,WAAE,wBAAA,CAAA,EAA0B,4CAAA,gBAA0CH,iBAACG,GAAAA,EAAAA,IAAAA,EAAE,oBAAA,CAAA,EAAuB,KAAI,WAAA,gBACxGH,EAAA,CAAA,aAAA,CAACG,WAAE,gBAAA,CAAA,EAAkB,2DAAA,gBAAyDH,iBAACG,GAAAA,EAAAA,IAAAA,EAAE,KAAA,CAAA,EAAO,oFAGnGH,EAAA,CAAA,aAAA,CAACU,UAAAA,EAAAA;AAAWC,QAAAA,GAAAA,EAAKC,kBAAkB0B,wBAAwB;QAAExB,GAAAA,EAAI;sBACjEd,EAAA,CAAA,aAAA,CAACC,KAAAA,EAAAA,IAAAA,gBACCD,EAAA,CAAA,aAAA,CAACE,WAAAA,EAAAA,IAAAA,EAAY,2BAAA,gBACcF,EAAA,CAAA,aAAA,CAACG,WAAE,OAAA,CAAA,EAAS,0BAAA,CAAA,gBAEvCH,EAAA,CAAA,aAAA,CAACI,eAAAA,EAAAA,IAAAA,gBACCJ,EAAA,CAAA,aAAA,CAACK,KAAAA,EAAAA;AACCC,QAAAA,KAAAA,EAAOhC,IAAI4D,iBAAiB;QAC5BR,YAAAA,EAAa,OAAA;AACbnB,QAAAA,WAAAA,EAAa,CAAC,MAAM,EAAEjC,GAAAA,CAAI4D,iBAAiB,CAAA,CAAE;QAC7C1B,KAAAA,EAAOuB,YAAAA;QACPtB,QAAAA,EAAUuB;uBAGdhC,EAAA,CAAA,aAAA,CAACU,UAAAA,EAAAA;AAAWC,QAAAA,GAAAA,EAAKC,kBAAkB2B,oBAAoB;QAAEzB,GAAAA,EAAI;;AAIrE,CAAA;AAEA,MAAM0B,0CAA0C,CAAC,EAC/CjD,YAAYC,cAAc,EAC1BiD,cAAc,EAIf,GAAA;AACC,IAAA,MAAM,EAAEnE,GAAG,EAAE,GAAGqB,uBAAAA,CAAwBH,cAAAA,CAAAA;IAExC,MAAM,EAAEI,IAAI,EAAE,GAAGC,UAAAA,EAAAA;IACjB,MAAMC,gBAAAA,GAAmBF,MAAMG,iBAAAA,IAAqB,EAAA;IAEpD,qBACEC,EAAA,CAAA,aAAA,CAAAA,EAAA,CAAA,QAAA,EAAA,IAAA,gBACEA,EAAA,CAAA,aAAA,CAACC,KAAAA,EAAAA,IAAAA,gBACCD,EAAA,CAAA,aAAA,CAACE,WAAAA,EAAAA,IAAAA,EAAY,SAAA,gBACJF,EAAA,CAAA,aAAA,CAACG,GAAAA,EAAAA,IAAAA,EAAE,cAAA,CAAA,EAAgB,cAAA,gBAAYH,EAAA,CAAA,aAAA,CAACG,GAAAA,EAAAA,IAAAA,EAAE,kBAAA,CAAA,EAAoB,4DAE/DH,EAAA,CAAA,aAAA,CAACI,eAAAA,EAAAA,IAAAA,EACEqC,cAAAA,GACGnE,GAAAA,CAAIoE,aAAa,CAACC,GAAG,CAAC,CAACC,GAAAA,iBAAQ5C,EAAA,CAAA,aAAA,CAACA,EAAAA,CAAM6C,QAAQ,EAAA;YAACD,GAAAA,EAAKA;AAAMH,SAAAA,EAAAA,cAAc,CAACG,GAAAA,CAAI,CAAA,CAAA,GAC7EE,SAAAA,CAAAA,CAAAA,gBAGR9C,EAAA,CAAA,aAAA,CAACE,WAAAA,EAAAA,IAAAA,EAAY,cAAA,gBACCF,EAAA,CAAA,aAAA,CAACG,GAAAA,EAAAA,IAAAA,EAAE,aAAA,CAAA,EAAe,iDAAA,EAAgDL,gBAAAA,EAAiB,qDAGjGE,EAAA,CAAA,aAAA,CAACU,UAAAA,EAAAA;AAAWC,QAAAA,GAAAA,EAAKC,kBAAkBG,UAAU;QAAED,GAAAA,EAAI;;AAGzD,CAAA;AAEA,MAAMiC,2CAA2C,CAAC,EAChDxD,UAAAA,EAAYC,cAAc,EAC1BwD,eAAe,EACfC,kBAAkB,EAClBC,MAAM,EACNC,SAAS,EACTC,QAAQ,EACRC,WAAW,EASZ,GAAA;AACC,IAAA,MAAM,EAAE/E,GAAG,EAAE,GAAGqB,uBAAAA,CAAwBH,cAAAA,CAAAA;IAExC,MAAM,EAAEI,IAAI,EAAE,GAAGC,UAAAA,EAAAA;IACjB,MAAMC,gBAAAA,GAAmBF,MAAMG,iBAAAA,IAAqB,EAAA;IAEpD,qBACEC,EAAA,CAAA,aAAA,CAAAA,EAAA,CAAA,QAAA,EAAA,IAAA,gBACEA,iBAACC,KAAAA,EAAAA,IAAAA,gBACCD,EAAA,CAAA,aAAA,CAACE,mBAAY,QAAA,gBACLF,EAAA,CAAA,aAAA,CAACG,WAAE,MAAA,CAAA,EAAQ,UAAA,gBAAQH,iBAACG,GAAAA,EAAAA,IAAAA,EAAE,kBAAA,CAAA,EAAoB,uCAAqBH,EAAA,CAAA,aAAA,CAACG,GAAAA,EAAAA,IAAAA,EAAE,6BAA4B,6GAAA,CAAA,gBAGtGH,EAAA,CAAA,aAAA,CAACI,qCACCJ,EAAA,CAAA,aAAA,CAACK,KAAAA,EAAAA;AACCC,QAAAA,KAAAA,EAAOhC,IAAIgF,oBAAoB;QAC/B5B,YAAAA,EAAa,OAAA;AACbnB,QAAAA,WAAAA,EAAa,CAAC,MAAM,EAAEjC,GAAAA,CAAIgF,oBAAoB,CAAA,CAAE;QAChD9C,KAAAA,EAAOwC,eAAAA;QACPvC,QAAAA,EAAUwC;wBAIhBjD,EAAA,CAAA,aAAA,CAACC,KAAAA,EAAAA,IAAAA,gBACCD,iBAACE,WAAAA,EAAAA,IAAAA,EAAY,+DAAA,EACmDJ,kBAAiB,kCAAA,CAAA,gBAGjFE,EAAA,CAAA,aAAA,CAACI,qCACCJ,EAAA,CAAA,aAAA,CAACK,KAAAA,EAAAA;AACCC,QAAAA,KAAAA,EAAOhC,IAAIiF,cAAc;QACzB7B,YAAAA,EAAa,OAAA;AACbnB,QAAAA,WAAAA,EAAa,CAAC,MAAM,EAAEjC,GAAAA,CAAIiF,cAAc,CAAA,CAAE;QAC1C/C,KAAAA,EAAO0C,MAAAA;QACPzC,QAAAA,EAAU0C;sBAEZnD,EAAA,CAAA,aAAA,CAACK,KAAAA,EAAAA;AACCC,QAAAA,KAAAA,EAAOhC,IAAIkF,gBAAgB;QAC3B9B,YAAAA,EAAa,OAAA;AACbnB,QAAAA,WAAAA,EAAa,CAAC,MAAM,EAAEjC,GAAAA,CAAIkF,gBAAgB,CAAA,CAAE;QAC5ChD,KAAAA,EAAO4C,QAAAA;QACP3C,QAAAA,EAAU4C;AAIhB,KAAA,CAAA,CAAA,CAAA,gBAAArD,EAAA,CAAA,aAAA,CAACE,mBAAY,QAAA,gBACLF,EAAA,CAAA,aAAA,CAACG,GAAAA,EAAAA,IAAAA,EAAE,MAAA,CAAA,EAAQ,oBAEnBH,EAAA,CAAA,aAAA,CAACE,WAAAA,EAAAA,IAAAA,EAAY,kEAAA,gBACqDF,EAAA,CAAA,aAAA,CAACG,WAAE,kBAAA,CAAA,EAAoB,6CAAA,gBAC9DH,iBAACG,GAAAA,EAAAA,IAAAA,EAAE,gBAAA,CAAA,EAAkB,iCAEhDH,EAAA,CAAA,aAAA,CAACU,UAAAA,EAAAA;AAAWC,QAAAA,GAAAA,EAAKC,kBAAkBM,sBAAsB;QAAEJ,GAAAA,EAAI;;AAGrE,CAAA;AAEA,MAAM2C,4CAA4C,CAAC,EACjDlE,YAAYC,cAAc,EAC1BiD,cAAc,EAIf,GAAA;AACC,IAAA,MAAM,EAAEnE,GAAG,EAAE,GAAGqB,uBAAAA,CAAwBH,cAAAA,CAAAA;IAExC,qBACEQ,EAAA,CAAA,aAAA,CAAAA,EAAA,CAAA,QAAA,EAAA,IAAA,gBACEA,iBAACC,KAAAA,EAAAA,IAAAA,gBACCD,EAAA,CAAA,aAAA,CAACE,mBAAY,OAAA,gBACNF,EAAA,CAAA,aAAA,CAACG,GAAAA,EAAAA,IAAAA,EAAE,uDAAA,CAAA,EAAyD,kCAAA,CAAA,gBAEnEH,EAAA,CAAA,aAAA,CAACI,uBACEqC,cAAAA,GACGnE,GAAAA,CAAIoE,aAAa,CAACC,GAAG,CAAC,CAACC,GAAAA,iBAAQ5C,EAAA,CAAA,aAAA,CAACA,EAAAA,CAAM6C,QAAQ,EAAA;YAACD,GAAAA,EAAKA;AAAMH,SAAAA,EAAAA,cAAc,CAACG,GAAAA,CAAI,CAAA,CAAA,GAC7EE,SAAAA,CAAAA,gBAEN9C,EAAA,CAAA,aAAA,CAACU,UAAAA,EAAAA;AAAWC,QAAAA,GAAAA,EAAKC,kBAAkB8C,oBAAoB;QAAE5C,GAAAA,EAAI;AAE/D,KAAA,CAAA,CAAA,gBAAAd,EAAA,CAAA,aAAA,CAACE,WAAAA,EAAAA,IAAAA,EAAY,QAAA,gBACLF,EAAA,CAAA,aAAA,CAACG,GAAAA,EAAAA,IAAAA,EAAE,UAAA,CAAA,EAAY,GAAA,CAAA,CAAA;AAI7B,CAAA;MAEawD,+BAAAA,GAAkC,CAAC,EAC9CpE,UAAAA,EAAYC,cAAc,EAG3B,GAAA;IACC,MAAM,EAAEoE,QAAQ,EAAE,GAAGC,sBAAAA,EAAAA;AAErB,IAAA,MAAMC,OAAOnE,uBAAAA,CAAwBH,cAAAA,CAAAA;AACrC,IAAA,MAAM,EAAED,UAAU,EAAEjB,GAAG,EAAEC,IAAI,EAAE,GAAGuF,IAAAA;IAElC,MAAMC,qBAAAA,GAAwBxE,WAAWyE,YAAY;AAErD,IAAA,MAAM,EAAEC,MAAM,EAAE,GAAGC,sBAAAA,CAAuB3F,IAAAA,CAAAA;AAC1C,IAAA,MAAM,EAAE0F,MAAAA,EAAQE,WAAW,EAAE,GAAGC,2BAAAA,EAAAA;IAEhC,MAAM,EAAEC,kBAAkB,EAAE,GAAGR,sBAAAA,EAAAA;AAC/B,IAAA,MAAM,CAACS,KAAAA,EAAOC,QAAAA,CAAS,GAAG7F,CAAAA,CAAS,IAAA,CAAA;IACnC,MAAM,EAAE8F,eAAe,EAAEC,OAAO,EAAEC,gBAAgB,EAAE,GAAGL,kBAAAA,CAAmBC,KAAAA,CAAAA;AAE1E,IAAA,MAAM,CAACzF,mBAAAA,EAAqB8F,sBAAAA,CAAuB,GAAGtG,2BAAAA,CAA4ByF,IAAAA,CAAAA;AAClF,IAAA,MAAM,CAACrE,WAAAA,EAAaC,cAAAA,CAAe,GAAGhB,CAAAA,CAAS,EAAA,CAAA;AAC/C,IAAA,MAAM,CAACwE,MAAAA,EAAQC,SAAAA,CAAU,GAAGzE,CAAAA,CAAS,EAAA,CAAA;AACrC,IAAA,MAAM,CAAC0E,QAAAA,EAAUC,WAAAA,CAAY,GAAG3E,CAAAA,CAAS,EAAA,CAAA;AACzC,IAAA,MAAM,CAACsE,eAAAA,EAAiBC,kBAAAA,CAAmB,GAAGvE,CAAAA,CAAS,EAAA,CAAA;AACvD,IAAA,MAAM,CAACmD,QAAAA,EAAUC,WAAAA,CAAY,GAAGpD,CAAAA,CAAS,EAAA,CAAA;AACzC,IAAA,MAAM,CAACqD,YAAAA,EAAcC,eAAAA,CAAgB,GAAGtD,CAAAA,CAAS,EAAA,CAAA;AACjD,IAAA,MAAM,CAAC0C,MAAAA,EAAQC,SAAAA,CAAU,GAAG3C,CAAAA,CAAS,EAAA,CAAA;AACrC,IAAA,MAAM,CAAC4C,kBAAAA,EAAoBC,qBAAAA,CAAsB,GAAG7C,CAAAA,CAAS,EAAA,CAAA;AAC7D,IAAA,MAAM,CAACkG,gBAAAA,EAAkBC,mBAAAA,CAAoB,GAAGnG,CAAAA,CAAS,EAAA,CAAA;AACzD,IAAA,MAAM,CAACoG,QAAAA,EAAUC,WAAAA,CAAY,GAAGrG,CAAAA,CAAS,EAAA,CAAA;AACzC,IAAA,MAAM,CAACsG,WAAAA,EAAaC,cAAAA,CAAe,GAAGvG,CAAAA,CAAS,EAAA,CAAA;AAC/C,IAAA,MAAM,CAACwG,OAAAA,EAASC,UAAAA,CAAW,GAAGzG,CAAAA,CAAS,EAAA,CAAA;AAEvC,IAAA,MAAM,CAAC0G,qBAAAA,EAAuBC,wBAAAA,CAAyB,GAAG3G,CAAAA,CAAgC,KAAO;YAC/F4G,gBAAAA,EAAkBxG,0BAAAA,CAA2BS,WAAWgG,iBAAiB;SAC3E,CAAA,CAAA;IAEA,MAAMD,gBAAAA,GAAmBE;AAEvB,IAAA,IAAMC,MAAAA,CAAOC,WAAW,CAACD,MAAAA,CAAOE,OAAO,CAACP,qBAAAA,CAAsBE,gBAAgB,CAAA,CAAEM,MAAM,CAAC,CAAC,GAAGpF,KAAAA,CAAM,GAAKA,KAAAA,CAAAA,CAAAA,EACtG;AAAC4E,QAAAA,qBAAAA,CAAsBE;AAAiB,KAAA,CAAA;IAG1C,MAAM,EAAEO,SAAS,EAAE,GAAGC,QAAAA,EAAAA;IAEtB,MAAMC,YAAAA,GAAeC,EACnB,OAAOC,CAAAA,GAAAA;AACLA,QAAAA,CAAAA,CAAEC,cAAc,EAAA;AAEhB,QAAA,IAAI,CAAC3G,UAAAA,EAAY;AACf,YAAA;AACF,QAAA;QAEA,IAAI;AACF,YAAA,IAAIhB,SAAS,MAAA,EAAQ;AACnB,gBAAA,IAAIM,mBAAAA,EAAqB;AACvB,oBAAA,MAAMoF,MAAAA,CAAO;AACXkC,wBAAAA,aAAAA,EAAe5G,WAAW4G,aAAa;wBACvCC,WAAAA,EAAalD,MAAAA;wBACbmD,aAAAA,EAAejD,QAAAA;wBACfkD,gBAAAA,EAAkBtD,eAAAA;wBAClBuD,iBAAAA,EAAmBjB;AACrB,qBAAA,CAAA;gBACF,CAAA,MAAO;AACL,oBAAA,MAAMrB,MAAAA,CAAO;AACXkC,wBAAAA,aAAAA,EAAe5G,WAAW4G,aAAa;wBACvCI,iBAAAA,EAAmBjB;AACrB,qBAAA,CAAA;AACA,oBAAA,IAAI7F,WAAAA,EAAa;AACf,wBAAA,MAAM0E,WAAAA,CAAY;AAAEgC,4BAAAA,aAAAA,EAAe5G,WAAW4G,aAAa;4BAAEK,YAAAA,EAAc/G;AAAY,yBAAA,CAAA;AACzF,oBAAA;AACF,gBAAA;YACF,CAAA,MAAO;AACL,gBAAA,MAAMgH,OAAAA,GAA6C;AACjDN,oBAAAA,aAAAA,EAAe5G,WAAW4G,aAAa;oBACvCO,SAAAA,EAAW7E,QAAAA;oBACX8E,aAAAA,EAAe5E;AACjB,iBAAA;gBAEA,IAAIzD,GAAAA,CAAIkD,sBAAsB,EAAE;AAC9B,oBAAA,IAAIF,kBAAAA,EAAoB;AACtBmF,wBAAAA,OAAAA,CAAQrF,MAAM,GAAG9C,GAAAA,CAAIkD,sBAAsB,CAACF,kBAAAA,CAAAA;AAC9C,oBAAA;gBACF,CAAA,MAAO;AACLmF,oBAAAA,OAAAA,CAAQrF,MAAM,GAAGA,MAAAA;AACnB,gBAAA;AAEA,gBAAA,IAAIvC,mBAAAA,EAAqB;AACvB4H,oBAAAA,OAAAA,CAAQG,iBAAiB,GAAGhC,gBAAAA;AAC5B6B,oBAAAA,OAAAA,CAAQI,SAAS,GAAG/B,QAAAA;AACpB2B,oBAAAA,OAAAA,CAAQK,YAAY,GAAG9B,WAAAA;AACvByB,oBAAAA,OAAAA,CAAQM,QAAQ,GAAG7B,OAAAA;AACrB,gBAAA;AACA,gBAAA,MAAMjB,MAAAA,CAAOwC,OAAAA,CAAAA;AACf,YAAA;YAEAlC,QAAAA,CAAS,KAAA,CAAA;YACTX,QAAAA,CAAS;gBAAEoD,MAAAA,EAAQ;AAAkB,aAAA,CAAA;AACvC,QAAA,CAAA,CAAE,OAAOf,CAAAA,EAAG;AACV,YAAA,MAAMgB,UAAUC,mBAAAA,CAAoBjB,CAAAA,CAAAA;YACpCJ,SAAAA,CAAU;AAAEsB,gBAAAA,IAAAA,EAAMF,OAAAA,IAAW,2BAAA;gBAA6B1I,IAAAA,EAAM;AAAQ,aAAA,CAAA;AAC1E,QAAA;IACF,CAAA,EACA;AACEgB,QAAAA,UAAAA;AACAhB,QAAAA,IAAAA;AACAqF,QAAAA,QAAAA;AACA/E,QAAAA,mBAAAA;AACAoF,QAAAA,MAAAA;AACAf,QAAAA,MAAAA;AACAE,QAAAA,QAAAA;AACAJ,QAAAA,eAAAA;AACAsC,QAAAA,gBAAAA;AACA7F,QAAAA,WAAAA;AACA0E,QAAAA,WAAAA;AACAtC,QAAAA,QAAAA;AACAE,QAAAA,YAAAA;AACAzD,QAAAA,GAAAA;AACAgD,QAAAA,kBAAAA;AACAF,QAAAA,MAAAA;AACAwD,QAAAA,gBAAAA;AACAE,QAAAA,QAAAA;AACAE,QAAAA,WAAAA;AACAE,QAAAA,OAAAA;AACAW,QAAAA;AACD,KAAA,CAAA;AAGH,IAAA,MAAMuB,uBAAAA,GAA0B,IAAA;AAC9B,QAAA,IAAI7I,SAAS,MAAA,EAAQ;AAErB,QAAA,MAAMkE,cAAAA,GAAwD;AAC5DS,YAAAA,MAAAA,gBACElD,EAAA,CAAA,aAAA,CAACK,KAAAA,EAAAA;AACCC,gBAAAA,KAAAA,EAAOhC,IAAIiF,cAAc;gBACzB7B,YAAAA,EAAa,OAAA;AACbnB,gBAAAA,WAAAA,EAAa,CAAC,MAAM,EAAEjC,GAAAA,CAAIiF,cAAc,CAAA,CAAE;gBAC1C/C,KAAAA,EAAO0C,MAAAA;gBACPzC,QAAAA,EAAU0C;;AAGdC,YAAAA,QAAAA,gBACEpD,EAAA,CAAA,aAAA,CAACK,KAAAA,EAAAA;AACCC,gBAAAA,KAAAA,EAAOhC,IAAIkF,gBAAgB;gBAC3B9B,YAAAA,EAAa,OAAA;AACbnB,gBAAAA,WAAAA,EAAa,CAAC,MAAM,EAAEjC,GAAAA,CAAIkF,gBAAgB,CAAA,CAAE;gBAC5ChD,KAAAA,EAAO4C,QAAAA;gBACP3C,QAAAA,EAAU4C;;AAGdgE,YAAAA,WAAAA,gBACErH,EAAA,CAAA,aAAA,CAACK,KAAAA,EAAAA;AACCC,gBAAAA,KAAAA,EAAOhC,IAAIgF,oBAAoB;gBAC/B5B,YAAAA,EAAa,OAAA;AACbnB,gBAAAA,WAAAA,EAAa,CAAC,MAAM,EAAEjC,GAAAA,CAAIgF,oBAAoB,CAAA,CAAE;gBAChD9C,KAAAA,EAAOwC,eAAAA;gBACPvC,QAAAA,EAAUwC;;AAGhB,SAAA;AAEA,QAAA,IAAIpE,mBAAAA,EAAqB;AACvB,YAAA,OAAQU,WAAWgG,iBAAiB;gBAClC,KAAK,MAAA;AACH,oBAAA,qBAAOvF,EAAA,CAAA,aAAA,CAACwC,uCAAAA,EAAAA;wBAAwCjD,UAAAA,EAAYA,UAAAA;wBAAYkD,cAAAA,EAAgBA;;gBAC1F,KAAK,iBAAA;AACH,oBAAA,qBACEzC,EAAA,CAAA,aAAA,CAAC+C,wCAAAA,EAAAA;wBACCxD,UAAAA,EAAYA,UAAAA;wBACZyD,eAAAA,EAAiBA,eAAAA;wBACjBC,kBAAAA,EAAoBA,kBAAAA;wBACpBC,MAAAA,EAAQA,MAAAA;wBACRC,SAAAA,EAAWA,SAAAA;wBACXC,QAAAA,EAAUA,QAAAA;wBACVC,WAAAA,EAAaA;;gBAGnB,KAAK,kBAAA;AACH,oBAAA,qBAAOrD,EAAA,CAAA,aAAA,CAACyD,yCAAAA,EAAAA;wBAA0ClE,UAAAA,EAAYA,UAAAA;wBAAYkD,cAAAA,EAAgBA;;AAC9F;AACF,QAAA;AAEA,QAAA,OAAQlD,WAAWgG,iBAAiB;YAClC,KAAK,MAAA;AACH,gBAAA,qBACEvF,EAAA,CAAA,aAAA,CAACV,oBAAAA,EAAAA;oBAAqBC,UAAAA,EAAYA,UAAAA;oBAAYE,WAAAA,EAAaA,WAAAA;oBAAaC,cAAAA,EAAgBA;;YAE5F,KAAK,iBAAA;AACH,gBAAA,qBACEM,EAAA,CAAA,aAAA,CAACgB,qBAAAA,EAAAA;oBAAsBzB,UAAAA,EAAYA,UAAAA;oBAAYE,WAAAA,EAAaA,WAAAA;oBAAaC,cAAAA,EAAgBA;;AAE/F;QAEA,OAAOb,mBAAAA,GACL4D,cAAAA,GACEnE,GAAAA,CAAIoE,aAAa,CAACC,GAAG,CAAC,CAACC,GAAAA,iBAAQ5C,EAAA,CAAA,aAAA,CAACA,EAAAA,CAAM6C,QAAQ,EAAA;gBAACD,GAAAA,EAAKA;AAAMH,aAAAA,EAAAA,cAAc,CAACG,GAAAA,CAAI,CAAA,CAAA,GAC3EE,SAAAA,iBAEJ9C,EAAA,CAAA,aAAA,CAACC,KAAAA,EAAAA,IAAAA,gBACCD,EAAA,CAAA,aAAA,CAACE,WAAAA,EAAAA,IAAAA,EAAY,YAAA,EAAW5B,GAAAA,CAAIM,gBAAgB,EAAC,+DAC7CoB,EAAA,CAAA,aAAA,CAACK,KAAAA,EAAAA;AACCE,YAAAA,WAAAA,EAAa,CAAC,MAAM,EAAEjC,GAAAA,CAAIM,gBAAgB,CAAA,CAAE;AAC5C0I,YAAAA,OAAAA,EAAS,CAAC,uBAAuB,EAAEhJ,IAAIM,gBAAgB,CAAC,6CAA6C,CAAC;YACtG4B,KAAAA,EAAOf,WAAAA;YACPgB,QAAAA,EAAUf;;AAIlB,IAAA,CAAA;AAEA,IAAA,MAAM6H,uBAAAA,GAA0B,IAAA;AAC9B,QAAA,IAAIhJ,SAAS,MAAA,EAAQ;AACrB,QAAA,IAAI,CAACM,mBAAAA,EAAqB;AACxB,YAAA,OAAQU,WAAWgG,iBAAiB;gBAClC,KAAK,MAAA;AACH,oBAAA,qBACEvF,EAAA,CAAA,aAAA,CAAC4B,oBAAAA,EAAAA;wBACCrC,UAAAA,EAAYA,UAAAA;wBACZsC,QAAAA,EAAUA,QAAAA;wBACVC,WAAAA,EAAaA,WAAAA;wBACbC,YAAAA,EAAcA,YAAAA;wBACdC,eAAAA,EAAiBA,eAAAA;wBACjBZ,MAAAA,EAAQA,MAAAA;wBACRC,SAAAA,EAAWA,SAAAA;wBACXC,kBAAAA,EAAoBA,kBAAAA;wBACpBC,qBAAAA,EAAuBA;;gBAG7B,KAAK,iBAAA;AACH,oBAAA,qBACEvB,EAAA,CAAA,aAAA,CAACoC,qBAAAA,EAAAA;wBACC7C,UAAAA,EAAYA,UAAAA;wBACZsC,QAAAA,EAAUA,QAAAA;wBACVC,WAAAA,EAAaA,WAAAA;wBACbC,YAAAA,EAAcA,YAAAA;wBACdC,eAAAA,EAAiBA,eAAAA;wBACjBZ,MAAAA,EAAQA,MAAAA;wBACRC,SAAAA,EAAWA,SAAAA;wBACXC,kBAAAA,EAAoBA,kBAAAA;wBACpBC,qBAAAA,EAAuBA;;AAG/B;AACF,QAAA;AAEA,QAAA,qBACEvB,kDACEA,EAAA,CAAA,aAAA,CAACK,KAAAA,EAAAA;AACCC,YAAAA,KAAAA,EAAOhC,IAAI2D,aAAa;YACxBP,YAAAA,EAAa,OAAA;AACbnB,YAAAA,WAAAA,EAAa,CAAC,MAAM,EAAEjC,GAAAA,CAAI2D,aAAa,CAAA,CAAE;YACzCzB,KAAAA,EAAOqB,QAAAA;YACPpB,QAAAA,EAAUqB;0BAEZ9B,EAAA,CAAA,aAAA,CAACK,KAAAA,EAAAA;AACCC,YAAAA,KAAAA,EAAOhC,IAAI4D,iBAAiB;YAC5BR,YAAAA,EAAa,OAAA;AACbnB,YAAAA,WAAAA,EAAa,CAAC,MAAM,EAAEjC,GAAAA,CAAI4D,iBAAiB,CAAA,CAAE;YAC7C1B,KAAAA,EAAOuB,YAAAA;YACPtB,QAAAA,EAAUuB;0BAEZhC,EAAA,CAAA,aAAA,CAACmB,sBAAAA,EAAAA;YACC5B,UAAAA,EAAYA,UAAAA;YACZ6B,MAAAA,EAAQA,MAAAA;YACRC,SAAAA,EAAWA,SAAAA;YACXC,kBAAAA,EAAoBA,kBAAAA;YACpBC,qBAAAA,EAAuBA;AAExB1C,SAAAA,CAAAA,EAAAA,mBAAAA,kBACCmB,kDACEA,EAAA,CAAA,aAAA,CAACK,KAAAA,EAAAA;YACCC,KAAAA,EAAM,mBAAA;YACNoB,YAAAA,EAAa,OAAA;YACbnB,WAAAA,EAAY,yBAAA;YACZC,KAAAA,EAAOoE,gBAAAA;YACPnE,QAAAA,EAAUoE;0BAEZ7E,EAAA,CAAA,aAAA,CAACK,KAAAA,EAAAA;YACCC,KAAAA,EAAM,WAAA;YACNoB,YAAAA,EAAa,OAAA;YACbnB,WAAAA,EAAY,iBAAA;YACZC,KAAAA,EAAOsE,QAAAA;YACPrE,QAAAA,EAAUsE;0BAEZ/E,EAAA,CAAA,aAAA,CAACK,KAAAA,EAAAA;YACCC,KAAAA,EAAM,eAAA;YACNoB,YAAAA,EAAa,OAAA;YACbnB,WAAAA,EAAY,iBAAA;YACZC,KAAAA,EAAOwE,WAAAA;YACPvE,QAAAA,EAAUwE;0BAEZjF,EAAA,CAAA,aAAA,CAACK,KAAAA,EAAAA;YACCC,KAAAA,EAAM,UAAA;YACNoB,YAAAA,EAAa,OAAA;YACbnB,WAAAA,EAAY,gBAAA;YACZC,KAAAA,EAAO0E,OAAAA;YACPzE,QAAAA,EAAU0E;;AAMtB,IAAA,CAAA;AAEA,IAAA,MAAMqC,OAAAA,GAAkD;AACtDC,QAAAA,iBAAAA,gBACEzH,EAAA,CAAA,aAAA,CAAC0H,SAAAA,EAAAA,IAAAA,gBACC1H,EAAA,CAAA,aAAA,CAAC2H,oBAAAA,EAAAA,IAAAA,gBACC3H,EAAA,CAAA,aAAA,CAAC4H,UAAAA,EAAAA,IAAAA,EAAW,SAAA,EAAQC,sBAAAA,CAAuBtJ,IAAAA,CAAAA,EAAM,eAAA,CAAA,CAAA,gBAEnDyB,EAAA,CAAA,aAAA,CAAC8H,gBAAAA,EAAAA,IAAAA,gBACC9H,EAAA,CAAA,aAAA,CAAC+H,iBAAAA,EAAAA;YAAkBxI,UAAAA,EAAYA;;AAIrCyI,QAAAA,SAAAA,gBACEhI,EAAA,CAAA,aAAA,CAAC0H,SAAAA,EAAAA,IAAAA,gBACC1H,EAAA,CAAA,aAAA,CAAC2H,oBAAAA,EAAAA,IAAAA,gBACC3H,EAAA,CAAA,aAAA,CAAC4H,UAAAA,EAAAA,IAAAA,EAAW,mCAAA,EAAkCtJ,GAAAA,CAAI2J,0BAA0B,EAAC,GAAA,CAAA,CAAA,gBAE/EjI,EAAA,CAAA,aAAA,CAAC8H,sCACC9H,EAAA,CAAA,aAAA,CAACkI,UAAAA,EAAAA;YAAW3I,UAAAA,EAAYA;;AAI9B4I,QAAAA,WAAAA,gBACEnI,EAAA,CAAA,aAAA,CAAC0H,SAAAA,EAAAA,IAAAA,gBACC1H,EAAA,CAAA,aAAA,CAAC2H,oBAAAA,EAAAA,IAAAA,gBACC3H,EAAA,CAAA,aAAA,CAAC4H,UAAAA,EAAAA,IAAAA,EAAW,2BAAA,EAA0BtJ,GAAAA,CAAI2J,0BAA0B,EAAC,GAAA,CAAA,CAAA,gBAEvEjI,EAAA,CAAA,aAAA,CAAC8H,sCACC9H,EAAA,CAAA,aAAA,CAACoI,OAAAA,EAAAA;YAAQC,aAAAA,EAAc,QAAA;YAASC,GAAAA,EAAK;yBACnCtI,EAAA,CAAA,aAAA,CAAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EACGzB,IAAAA,KAAS,wBACRyB,EAAA,CAAA,aAAA,CAAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EACGoH,uBAAAA,EAAAA,EACA,CAAC,CAAC9I,GAAAA,CAAIM,gBAAgB,kBACrBoB,EAAA,CAAA,aAAA,CAACuI,MAAAA,EAAAA;YACCC,OAAAA,EAAAA,IAAAA;YACAC,OAAAA,EAAQ,OAAA;YACRC,OAAAA,EAAS,IAAA;AACP/D,gBAAAA,sBAAAA,CAAuB,CAAC9F,mBAAAA,CAAAA;AAC1B,YAAA;AAECA,SAAAA,EAAAA,mBAAAA,GAAsB,CAAC,gBAAgB,EAAEP,GAAAA,CAAIM,gBAAgB,CAAA,CAAE,GAAG,oBAAA,CAAA,CAAA,EAK1EL,IAAAA,KAAS,MAAA,kBACRyB,EAAA,CAAA,aAAA,CAAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EACGuH,uBAAAA,EAAAA,gBACDvH,EAAA,CAAA,aAAA,CAACuI,MAAAA,EAAAA;YACCC,OAAAA,EAAAA,IAAAA;YACAC,OAAAA,EAAQ,OAAA;YACRC,OAAAA,EAAS,IAAA;AACP/D,gBAAAA,sBAAAA,CAAuB,CAAC9F,mBAAAA,CAAAA;AAC1B,YAAA;WAECA,mBAAAA,GACG,CAAC,gBAAgB,EAAEP,GAAAA,CAAImD,kBAAkB,IAAInD,GAAAA,CAAIqD,WAAW,CAAA,CAAE,GAC9D,oBAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AASpB2D,QAAAA,gBAAAA,EAAkB/G,IAAAA,KAAS,MAAA,kBACzByB,EAAA,CAAA,aAAA,CAAC0H,SAAAA,EAAAA,IAAAA,gBACC1H,iBAAC2H,oBAAAA,EAAAA,IAAAA,gBACC3H,EAAA,CAAA,aAAA,CAAC4H,UAAAA,EAAAA,IAAAA,EAAW,WAAA,EAAUtJ,IAAIqK,qBAAqB,EAAC,GAAA,CAAA,CAAA,gBAElD3I,EAAA,CAAA,aAAA,CAAC8H,sCACC9H,EAAA,CAAA,aAAA,CAAC4I,6BAAAA,EAAAA;YACCrJ,UAAAA,EAAYA,UAAAA;YACZsJ,UAAAA,EAAYzD,qBAAAA;YACZ0D,aAAAA,EAAezD,wBAAAA;YACf0D,WAAAA,EAAa3D;;AAKvB,KAAA;IAEA,MAAM4D,KAAAA,GAAQ1K,GAAAA,CAAI2K,UAAU,CAACtG,GAAG,CAAC,CAACuG,IAAAA,iBAASlJ,EAAA,CAAA,aAAA,CAACA,EAAAA,CAAM6C,QAAQ,EAAA;YAACD,GAAAA,EAAKsG;AAAO1B,SAAAA,EAAAA,OAAO,CAAC0B,IAAAA,CAAK,CAAA,CAAA;AAEpF,IAAA,qBACElJ,EAAA,CAAA,aAAA,CAACmJ,MAAAA,EAAAA;QAAKC,QAAAA,EAAUrD;qBACd/F,EAAA,CAAA,aAAA,CAACqJ,KAAAA,EAAAA;AACCC,QAAAA,MAAAA,EAAQhF,KAAAA,IAASG,OAAAA;QACjB8E,KAAAA,EAAO7E,gBAAAA;QACP8E,OAAAA,EAAS,IAAA;AACPhF,YAAAA,eAAAA,EAAAA;AACA,YAAA,OAAOiF,QAAQC,OAAO,EAAA;AACxB,QAAA,CAAA;AACAC,QAAAA,KAAAA,EAAO,CAAC,KAAK,EAAE5F,qBAAAA,CAAsB,CAAC,CAAC;QACvC6F,iBAAAA,EAAkB,yBAAA;QAClBC,WAAAA,EACE;sBAGJ7J,EAAA,CAAA,aAAA,CAACoI,OAAAA,EAAAA;QAAQC,aAAAA,EAAc,QAAA;QAASC,GAAAA,EAAK;qBACnCtI,EAAA,CAAA,aAAA,CAACuI,MAAAA,EAAAA;QACCE,OAAAA,EAAQ,OAAA;QACRD,OAAAA,EAAAA,IAAAA;QACAE,OAAAA,EAAS,IAAA;YACP9E,QAAAA,CAAS;gBAAEoD,MAAAA,EAAQ;AAAkB,aAAA,CAAA;AACvC,QAAA,CAAA;AACA8C,QAAAA,SAAAA,gBAAW9J,EAAA,CAAA,aAAA,CAAC+J,WAAAA,EAAAA,IAAAA;AACb,KAAA,EAAA,6BAAA,CAAA,gBAGD/J,EAAA,CAAA,aAAA,CAAC4H,UAAAA,EAAAA;QAAWa,OAAAA,EAAQ;AAAK,KAAA,EAAA,YAAA,EAAW1E,qBAAAA,CAAAA,gBACpC/D,EAAA,CAAA,aAAA,CAACC,KAAAA,EAAAA,IAAAA,EAAK+I,KAAAA,CAAAA,gBACNhJ,EAAA,CAAA,aAAA,CAACoI,OAAAA,EAAAA;QAAQ4B,cAAAA,EAAe;qBACtBhK,EAAA,CAAA,aAAA,CAACuI,MAAAA,EAAAA;QAAOhK,IAAAA,EAAK;AAAS,KAAA,EAAA,QAAA,CAAA,CAAA,CAAA,CAAA;AAKhC;;;;"}