@sanity/assist 1.1.3 → 1.2.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 +2 -0
- package/dist/index.esm.js +4155 -559
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +4314 -715
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/assistDocument/components/AssistDocumentForm.tsx +16 -10
- package/src/assistDocument/components/InstructionsArrayField.tsx +1 -1
- package/src/assistDocument/components/instruction/FieldRefInput.tsx +16 -1
- package/src/assistInspector/AssistInspector.tsx +50 -27
- package/src/assistInspector/FieldAutocomplete.tsx +49 -29
- package/src/assistInspector/helpers.ts +84 -4
- package/src/fieldActions/assistFieldActions.tsx +16 -5
- package/src/helpers/useAssistSupported.ts +1 -4
- package/src/schemas/assistDocumentSchema.tsx +1 -1
- package/src/useApiClient.ts +1 -0
package/dist/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../src/types.ts","../src/_lib/fixedListenQuery.ts","../src/_lib/useListeningQuery.ts","../src/schemas/serialize/schemaUtils.ts","../src/helpers/typeUtils.ts","../src/helpers/assistSupported.ts","../src/schemas/serialize/serializeSchema.ts","../src/schemas/serialize/SchemTypeTool.tsx","../src/assistInspector/constants.ts","../src/_lib/form/DocumentForm.tsx","../src/assistDocument/components/SelectedFieldContext.tsx","../src/assistInspector/helpers.ts","../src/assistDocument/hooks/useDocumentState.ts","../src/helpers/ids.ts","../src/constants.ts","../src/assistDocument/hooks/useStudioAssistDocument.ts","../src/components/TimeAgo.tsx","../src/helpers/misc.ts","../src/assistInspector/InstructionTaskHistoryButton.tsx","../src/useApiClient.ts","../src/assistLayout/AiAssistanceConfigContext.tsx","../src/assistLayout/RunInstructionProvider.tsx","../src/assistDocument/RequestRunInstructionProvider.tsx","../src/onboarding/InspectorOnboarding.tsx","../src/onboarding/onboardingStore.ts","../src/assistInspector/AssistInspector.tsx","../src/assistInspector/index.ts","../src/assistDocument/AssistDocumentContext.tsx","../src/presence/useAssistPresence.ts","../src/components/FadeInContent.tsx","../../node_modules/@sanity/color/dist/index.js","../src/presence/AssistAvatar.tsx","../src/presence/AiFieldPresence.tsx","../src/components/AssistFeatureBadge.tsx","../src/onboarding/FieldActionsOnboarding.tsx","../src/onboarding/FirstAssistedPathProvider.tsx","../src/assistFormComponents/AssistField.tsx","../src/_lib/connector/ConnectorsStoreContext.ts","../src/_lib/connector/useConnectorsStore.ts","../src/_lib/connector/helpers.ts","../src/_lib/connector/useRegionRects.ts","../src/_lib/connector/ConnectorRegion.tsx","../src/_lib/connector/ConnectFromRegion.tsx","../src/_lib/connector/ConnectorsStore.ts","../src/_lib/connector/ConnectorsProvider.tsx","../src/_lib/connector/mapConnectorToLine.ts","../src/assistConnectors/draw/arrowPath.ts","../src/assistConnectors/draw/connectorPath.ts","../src/assistConnectors/ConnectorPath.tsx","../src/assistConnectors/AssistConnectorsOverlay.tsx","../src/legacy-types.ts","../src/assistLayout/AlphaMigration.tsx","../src/assistLayout/AssistLayout.tsx","../src/components/SafeValueInput.tsx","../src/assistFormComponents/AssistFormBlock.tsx","../src/assistFormComponents/AssistItem.tsx","../src/assistDocument/components/instruction/BackToInstructionsLink.tsx","../src/assistDocument/components/AssistDocumentForm.tsx","../src/assistDocument/components/helpers.ts","../src/assistDocument/components/instruction/InstructionInput.tsx","../src/assistDocument/components/generic/HiddenFieldTitle.tsx","../src/assistDocument/components/instruction/appearance/InstructionVisibility.tsx","../src/assistDocument/components/instruction/appearance/IconInput.tsx","../src/assistInspector/FieldAutocomplete.tsx","../src/assistDocument/components/instruction/FieldRefInput.tsx","../src/assistDocument/components/InstructionsArrayInput.tsx","../src/assistFormComponents/AssistInlineFormBlock.tsx","../src/assistDocument/components/FieldRefPreview.tsx","../src/components/HideReferenceChangedBannerInput.tsx","../src/schemas/contextDocumentSchema.tsx","../../node_modules/get-random-values-esm/index.mjs","../src/_lib/randomKey.ts","../src/assistDocument/components/instruction/PromptInput.tsx","../src/assistDocument/components/InstructionsArrayField.tsx","../src/schemas/assistDocumentSchema.tsx","../src/schemas/index.ts","../src/helpers/useAssistSupported.ts","../src/assistDocument/hooks/useAssistDocumentContextValue.tsx","../src/fieldActions/PrivateIcon.tsx","../src/components/ImageContext.tsx","../src/fieldActions/generateCaptionActions.tsx","../src/fieldActions/assistFieldActions.tsx","../src/assistDocument/AssistDocumentContextProvider.tsx","../src/assistDocument/hooks/useInstructionToaster.tsx","../src/assistDocument/AssistDocumentInput.tsx","../src/presence/AssistDocumentPresence.tsx","../src/plugin.tsx"],"sourcesContent":["import {SanityDocument, ValidationMarker} from 'sanity'\nimport {PortableTextBlock, PortableTextMarkDefinition, PortableTextSpan} from '@portabletext/types'\n\n//id prefixes\nexport const assistDocumentIdPrefix = 'sanity.assist.schemaType.'\nexport const assistDocumentStatusIdPrefix = 'sanity.assist.status.'\nexport const assistSchemaIdPrefix = 'sanity.assist.schema.'\n\n// type names\nexport const assistDocumentTypeName = 'sanity.assist.schemaType.annotations' as const\nexport const assistFieldTypeName = 'sanity.assist.schemaType.field' as const\nexport const instructionTypeName = 'sanity.assist.instruction' as const\nexport const promptTypeName = 'sanity.assist.instruction.prompt' as const\n\nexport const userInputTypeName = 'sanity.assist.instruction.userInput' as const\nexport const instructionContextTypeName = 'sanity.assist.instruction.context' as const\nexport const fieldReferenceTypeName = 'sanity.assist.instruction.fieldRef' as const\n\n// user-facing type. Intentionally does not have sanity. prefix\nexport const contextDocumentTypeName = 'assist.instruction.context' as const\n\nexport const assistTasksStatusTypeName = 'sanity.assist.task.status' as const\nexport const instructionTaskTypeName = 'sanity.assist.instructionTask' as const\nexport const fieldPresenceTypeName = 'sanity.assist.instructionTask.presence' as const\n\nexport const assistSerializedTypeName = 'sanity.assist.serialized.type' as const\nexport const assistSerializedFieldTypeName = 'sanity.assist.serialized.field' as const\n\n//url params\nexport const inspectParam = 'inspect' as const\nexport const fieldPathParam = 'pathKey' as const\nexport const instructionParam = 'instruction' as const\n\n// other constants\nexport const documentRootKey = '<document>'\n\nexport interface SerializedSchemaMember {\n _type?: typeof assistSerializedFieldTypeName\n type: string\n name: string\n title?: string\n values?: string[]\n of?: SerializedSchemaMember[]\n to?: {type: string}[]\n}\n\nexport interface SerializedSchemaType {\n _type?: typeof assistSerializedTypeName\n _id?: string\n type: string\n title?: string\n name?: string\n fields?: SerializedSchemaMember[]\n of?: {type: string}[]\n to?: {type: string}[]\n options?: {\n imagePromptField?: string\n }\n}\n\nexport interface AssistDocument extends SanityDocument {\n fields?: AssistField[]\n instructions?: StudioInstruction[]\n}\n\nexport interface StudioAssistDocument {\n _id: string\n _type: typeof assistDocumentTypeName\n fields?: StudioAssistField[]\n\n // added\n tasks?: InstructionTask[]\n}\nexport interface AssistField {\n _key: string\n _type: typeof assistFieldTypeName\n path?: string\n instructions?: StudioInstruction[]\n}\n\nexport interface StudioAssistField {\n _key: string\n path?: string\n instructions?: StudioInstruction[]\n\n // added\n tasks?: InstructionTask[]\n}\n\nexport interface FieldRef extends PortableTextMarkDefinition {\n _type: typeof fieldReferenceTypeName\n path?: string\n}\n\nexport interface ContextBlock {\n _type: typeof instructionContextTypeName\n reference?: {\n _type: 'reference'\n _ref?: string\n }\n}\n\nexport interface UserInputBlock {\n _type: typeof userInputTypeName\n _key: string\n message?: string\n description?: string\n}\n\nexport type InlinePromptBlock = PortableTextSpan | FieldRef | UserInputBlock | ContextBlock\nexport type PromptTextBlock = PortableTextBlock<never, InlinePromptBlock, 'normal', never>\n\nexport type PromptBlock = PromptTextBlock | FieldRef | ContextBlock | UserInputBlock\n\nexport interface AiPresence {\n _key: string\n _type: typeof fieldPresenceTypeName\n path?: string\n started?: string\n}\n\nexport type TaskEndedReason = 'success' | 'error' | 'aborted' | 'timeout'\n\nexport interface InstructionTask {\n _key: string\n _type: typeof instructionTaskTypeName\n instructionKey?: string\n title?: string\n path?: string\n started?: string\n updated?: string\n ended?: string\n message?: string\n reason?: TaskEndedReason\n presence?: AiPresence[]\n startedByUserId?: string\n\n //added by studio\n // eslint-disable-next-line no-use-before-define\n instruction?: StudioInstruction\n}\n\nexport interface StudioInstruction {\n _key: string\n _type: typeof instructionTypeName\n prompt?: PromptBlock[]\n\n icon?: string\n userId?: string\n title?: string\n placeholder?: string\n\n //added after query / synthetic fields\n tasks?: InstructionTask[]\n validation?: ValidationMarker[]\n}\n\nexport interface AssistTasksStatus {\n _id: string\n _type: typeof assistTasksStatusTypeName\n tasks?: InstructionTask[]\n}\n\nexport interface AssistInspectorRouteParams {\n [inspectParam]?: string\n [fieldPathParam]?: string\n [instructionParam]?: string\n}\n","import {SanityClient} from '@sanity/client'\nimport {defer, delay, merge, Observable, of, partition, switchMap, throwError} from 'rxjs'\nimport {filter, mergeMap, share, take} from 'rxjs/operators'\nimport {exhaustMapToWithTrailing} from 'rxjs-exhaustmap-with-trailing'\nimport {MutationEvent, ReconnectEvent, WelcomeEvent} from 'sanity'\n\n/** @internal */\nexport type ListenQueryParams = Record<string, string | number | boolean | string[]>\n\n/** @beta */\nexport interface ListenQueryOptions {\n tag?: string\n apiVersion?: string\n throttleTime?: number\n transitions?: ('update' | 'appear' | 'disappear')[]\n}\n\nconst fetch = (\n client: SanityClient,\n query: string,\n params: ListenQueryParams,\n options: ListenQueryOptions\n) =>\n defer(() =>\n // getVersionedClient(options.apiVersion)\n client.observable.fetch(query, params, {\n tag: options.tag,\n filterResponse: true,\n })\n )\n\nconst listen = (\n client: SanityClient,\n query: string,\n params: ListenQueryParams,\n options: ListenQueryOptions\n) =>\n defer(() =>\n // getVersionedClient(options.apiVersion)\n client.listen(query, params, {\n events: ['welcome', 'mutation', 'reconnect'],\n includeResult: false,\n visibility: 'query',\n tag: options.tag,\n })\n ) as Observable<ReconnectEvent | WelcomeEvent | MutationEvent>\n\nfunction isWelcomeEvent(\n event: MutationEvent | ReconnectEvent | WelcomeEvent\n): event is WelcomeEvent {\n return event.type === 'welcome'\n}\n\n/** @internal */\nexport const listenQuery = (\n client: SanityClient,\n query: string | {fetch: string; listen: string},\n params: ListenQueryParams = {},\n options: ListenQueryOptions = {}\n) => {\n const fetchQuery = typeof query === 'string' ? query : query.fetch\n const listenerQuery = typeof query === 'string' ? query : query.listen\n\n const fetchOnce$ = fetch(client, fetchQuery, params, options)\n\n const events$ = listen(client, listenerQuery, params, options).pipe(\n mergeMap((ev, i) => {\n const isFirst = i === 0\n if (isFirst && !isWelcomeEvent(ev)) {\n // if the first event is not welcome, it is most likely a reconnect and\n // if it's not a reconnect something is very wrong\n return throwError(\n new Error(\n ev.type === 'reconnect'\n ? 'Could not establish EventSource connection'\n : `Received unexpected type of first event \"${ev.type}\"`\n )\n )\n }\n return of(ev)\n }),\n share()\n )\n\n const [welcome$, mutationAndReconnect$] = partition(events$, isWelcomeEvent)\n const isRelevantEvent = (event: MutationEvent | ReconnectEvent | WelcomeEvent): boolean => {\n if (!options.transitions || event.type !== 'mutation') {\n return true\n }\n\n return options.transitions.includes(event.transition)\n }\n\n return merge(\n welcome$.pipe(take(1)),\n mutationAndReconnect$.pipe(\n filter(isRelevantEvent),\n switchMap((event) => merge(of(event), of(event).pipe(delay(options.throttleTime || 1000))))\n )\n ).pipe(exhaustMapToWithTrailing(fetchOnce$))\n}\n","import {useEffect, useRef, useState} from 'react'\nimport {catchError, distinctUntilChanged} from 'rxjs/operators'\nimport isEqual from 'react-fast-compare'\nimport {ListenQueryOptions, useClient} from 'sanity'\nimport {listenQuery} from './fixedListenQuery'\n\ntype Params = Record<string, string | number | boolean | string[]>\n\ntype ReturnShape<T> = {\n loading: boolean\n error: boolean\n data: T | null\n}\n\ntype Observable = {\n unsubscribe: () => void\n}\n\nconst DEFAULT_PARAMS = {}\nconst DEFAULT_OPTIONS: ListenQueryOptions = {apiVersion: `v2022-05-09`}\n\nexport function useListeningQuery<T>(\n query: string,\n params: Params = DEFAULT_PARAMS,\n options: ListenQueryOptions = DEFAULT_OPTIONS\n): ReturnShape<T> {\n const [loading, setLoading] = useState(true)\n const [error, setError] = useState(false)\n const [data, setData] = useState<T | null>(null)\n const subscription = useRef<null | Observable>(null)\n\n const client = useClient({apiVersion: `v2022-05-09`})\n\n useEffect(() => {\n if (query) {\n subscription.current = listenQuery(client, query, params, options)\n .pipe(\n distinctUntilChanged(isEqual),\n catchError((err) => {\n console.error(err)\n setError(err)\n setLoading(false)\n setData(null)\n\n return err\n })\n )\n .subscribe((documents) => {\n setData((current) => (isEqual(current, documents) ? current : documents))\n setLoading(false)\n setError(false)\n })\n }\n\n return () => {\n return subscription.current ? subscription.current.unsubscribe() : undefined\n }\n }, [query, params, options, client])\n\n return {loading, error, data}\n}\n","import {assistSerializedFieldTypeName, assistSerializedTypeName} from '../../types'\n\nexport const hiddenTypes = [\n 'any',\n 'array',\n 'block',\n 'boolean',\n 'crossDatasetReference',\n 'date',\n 'datetime',\n 'document',\n 'email',\n 'file',\n 'image',\n 'number',\n 'object',\n 'reference',\n 'span',\n 'string',\n 'text',\n 'url',\n 'slug',\n 'geopoint',\n 'sanity.assetSourceData',\n 'sanity.imageAsset',\n 'sanity.fileAsset',\n 'sanity.imageCrop',\n 'sanity.imageHotspot',\n 'sanity.imageMetadata',\n 'sanity.imageDimensions',\n 'sanity.imagePalette',\n 'sanity.imagePaletteSwatch',\n\n assistSerializedTypeName,\n assistSerializedFieldTypeName,\n 'sanity-agent.job.document',\n]\n","import {ArraySchemaType, ImageOptions, SchemaType} from 'sanity'\n\nexport function isPortableTextArray(type: ArraySchemaType) {\n return type.of.find((t) => isType(t, 'block'))\n}\n\nexport function isType(schemaType: SchemaType, typeName: string): boolean {\n if (schemaType.name === typeName) {\n return true\n }\n if (!schemaType.type) {\n return false\n }\n return isType(schemaType.type, typeName)\n}\n\nexport function isImage(schemaType: SchemaType) {\n return isType(schemaType, 'image')\n}\n\nexport function getCaptionFieldOption(schemaType: SchemaType | undefined): string | undefined {\n if (!schemaType) {\n return undefined\n }\n const captionField = (schemaType.options as ImageOptions)?.captionField\n if (captionField) {\n return captionField\n }\n return getCaptionFieldOption(schemaType.type)\n}\n","import {SchemaType} from 'sanity'\nimport {AssistOptions} from '../schemas/typeDefExtensions'\nimport {isType} from './typeUtils'\n\nexport function isSchemaAssistEnabled(type: SchemaType) {\n return !(type.options as AssistOptions | undefined)?.aiWritingAssistance?.exclude\n}\n\nexport function isAssistSupported(type: SchemaType, allowReadonlyHidden = false) {\n if (!isSchemaAssistEnabled(type)) {\n return false\n }\n\n if (isDisabled(type, allowReadonlyHidden)) {\n return false\n }\n\n if (type.jsonType === 'array') {\n const unsupportedArray = type.of.every((t) => isDisabled(t, allowReadonlyHidden))\n return !unsupportedArray\n }\n\n if (type.jsonType === 'object') {\n const unsupportedObject = type.fields.every((field) =>\n isDisabled(field.type, allowReadonlyHidden)\n )\n return !unsupportedObject\n }\n return true\n}\n\nfunction isDisabled(type: SchemaType, allowReadonlyHidden: boolean) {\n const readonlyHidden = !!type.readOnly || !!type.hidden\n return (\n !isSchemaAssistEnabled(type) ||\n isUnsupportedType(type) ||\n (!allowReadonlyHidden && readonlyHidden)\n )\n}\n\nfunction isUnsupportedType(type: SchemaType) {\n return (\n type.jsonType === 'number' ||\n type.name === 'sanity.imageCrop' ||\n type.name === 'sanity.imageHotspot' ||\n isType(type, 'reference') ||\n isType(type, 'crossDatasetReference') ||\n isType(type, 'slug') ||\n isType(type, 'url') ||\n isType(type, 'date') ||\n isType(type, 'datetime') ||\n isType(type, 'file')\n )\n}\n","import {\n ArraySchemaType,\n ImageOptions,\n ObjectSchemaType,\n ReferenceSchemaType,\n Schema,\n SchemaType,\n typed,\n} from 'sanity'\nimport {\n assistSerializedFieldTypeName,\n assistSerializedTypeName,\n SerializedSchemaMember,\n SerializedSchemaType,\n assistSchemaIdPrefix,\n} from '../../types'\nimport {hiddenTypes} from './schemaUtils'\nimport {isAssistSupported} from '../../helpers/assistSupported'\n\ninterface Options {\n leanFormat?: boolean\n}\n\nconst inlineTypes = ['document', 'object', 'image', 'file']\n\nexport function serializeSchema(schema: Schema, options?: Options): SerializedSchemaType[] {\n const list = schema\n .getTypeNames()\n .filter((t) => !(hiddenTypes.includes(t) || t.startsWith('sanity.')))\n .map((t) => schema.get(t))\n .filter((t): t is SchemaType => !!t)\n .filter((t) => !t.hidden && !t.readOnly)\n .map((t) => getSchemaStub(t, schema, options))\n .filter((t) => {\n if ('to' in t && t.to && !t.to.length) {\n return false\n }\n if ('of' in t && t.of && !t.of.length) {\n return false\n }\n if ('fields' in t && t.fields && !t.fields.length) {\n return false\n }\n return true\n })\n list.sort((a, b) => (a?.name ?? '').localeCompare(b?.name ?? ''))\n return list\n}\n\nfunction getSchemaStub(\n schemaType: SchemaType,\n schema: Schema,\n options?: Options\n): SerializedSchemaType {\n if (!schemaType.type?.name) {\n console.error('Missing type name', schemaType.type)\n throw new Error('Type is missing name!')\n }\n const baseSchema: SerializedSchemaType = {\n // we dont need type or id when we send using POST, so leave these out to save bandwidth\n ...(options?.leanFormat\n ? {}\n : {_id: `${assistSchemaIdPrefix}${schemaType.name}`, _type: assistSerializedTypeName}),\n name: schemaType.name,\n title: schemaType.title,\n type: schemaType.type.name,\n ...getBaseFields(schema, schemaType, schemaType.type.name, options),\n }\n\n return removeUndef(baseSchema)\n}\n\nfunction getBaseFields(\n schema: Schema,\n type: SchemaType,\n typeName: string,\n options: Options | undefined\n) {\n const imagePromptField = (type.options as ImageOptions)?.imagePromptField\n return removeUndef({\n options: imagePromptField\n ? {\n imagePromptField: imagePromptField,\n }\n : undefined,\n values:\n type.jsonType === 'string' && type?.options?.list\n ? type?.options?.list.map((v) => (typeof v === 'string' ? v : v.value ?? `${v.title}`))\n : undefined,\n of: 'of' in type && typeName === 'array' ? arrayOf(type, schema, options) : undefined,\n to:\n 'to' in type && typeName === 'reference'\n ? refToTypeNames(type as ReferenceSchemaType)\n : undefined,\n fields:\n 'fields' in type && inlineTypes.includes(typeName)\n ? serializeFields(schema, type, options)\n : undefined,\n })\n}\n\nfunction serializeFields(\n schema: Schema,\n schemaType: ObjectSchemaType,\n options: Options | undefined\n) {\n return schemaType.fields\n .filter((f) => !['sanity.imageHotspot', 'sanity.imageCrop'].includes(f.type?.name ?? ''))\n .filter((f) => isAssistSupported(f.type))\n .filter((f) => !f.type.hidden && !f.type.readOnly)\n .map((field) => serializeMember(schema, field.type, field.name, options))\n}\n\nfunction serializeMember(\n schema: Schema,\n type: SchemaType,\n name: string,\n options: Options | undefined\n): SerializedSchemaMember {\n const typeNameExists = !!schema.get(type?.name)\n const typeName = typeNameExists ? type.name : type.type?.name ?? ''\n return removeUndef({\n ...(options?.leanFormat ? {} : {_type: assistSerializedFieldTypeName}),\n name: name,\n type: typeName,\n title: type.title,\n ...getBaseFields(schema, type, typeName, options),\n })\n}\n\nfunction arrayOf(\n arrayType: ArraySchemaType,\n schema: Schema,\n options: Options | undefined\n): SerializedSchemaMember[] {\n return arrayType.of\n .filter((type) => isAssistSupported(type))\n .map((t) => {\n return serializeMember(schema, t, t.name, options)\n })\n}\n\nfunction refToTypeNames(type: ReferenceSchemaType) {\n return type.to.map((t) => ({\n type: typed<string>(t.name),\n }))\n}\n\nfunction removeUndef<T extends Record<string, any>>(obj: T): T {\n Object.keys(obj).forEach((key) => (obj[key] === undefined ? delete obj[key] : {}))\n return obj\n}\n","import {useClient, useSchema} from 'sanity'\nimport {Box, Button, Card, Flex, Label, Spinner, Stack} from '@sanity/ui'\nimport {useCallback, useMemo, useState} from 'react'\nimport {assistSerializedTypeName, SerializedSchemaType} from '../../types'\nimport {SyncIcon} from '@sanity/icons'\nimport {useListeningQuery} from '../../_lib/useListeningQuery'\nimport {serializeSchema} from './serializeSchema'\n\nconst NO_DATA: SerializedSchemaType[] = []\n\nconst defaultTitle = 'Sync schema'\n\nexport function SchemaTypeTool() {\n const schema = useSchema()\n const client = useClient({apiVersion: '2023-01-01'})\n const [saving, setSaving] = useState(false)\n const [syncTitle, setSyncTitle] = useState(defaultTitle)\n\n const {data} = useListeningQuery<SerializedSchemaType[]>('*[_type==$type] | order(_type)', {\n type: assistSerializedTypeName,\n })\n\n const types = useMemo(() => {\n return serializeSchema(schema)\n }, [schema])\n\n const storeTypes = useCallback(() => {\n setSaving(true)\n let canSave = true\n async function store() {\n setSyncTitle(`Syncing 0/${types.length}`)\n const transaction = client.transaction()\n for (let i = 0; i < types.length; i++) {\n if (!canSave) {\n break\n }\n const type = types[i]\n await transaction.createOrReplace(type as Required<typeof type>)\n if (i > 0 && i % 50 === 0) {\n await transaction.commit()\n transaction.reset()\n setSyncTitle(`Syncing ${i}/${types.length}`)\n }\n }\n await transaction.commit()\n }\n store()\n .catch(console.error)\n .finally(() => {\n setSaving(false)\n setSyncTitle(defaultTitle)\n })\n return () => {\n canSave = false\n setSaving(false)\n setSyncTitle(defaultTitle)\n }\n }, [types, client, setSaving, setSyncTitle])\n\n return (\n <Card padding={4} overflow=\"auto\" style={{height: 'calc(100vh - 81px)'}}>\n <Stack space={4}>\n <Box>\n <Button\n icon={saving ? <Spinner style={{marginTop: 5}} /> : SyncIcon}\n text={syncTitle}\n disabled={saving}\n onClick={storeTypes}\n />\n </Box>\n <Flex gap={2}>\n <Stack space={2}>\n <Label>Studio schema</Label>\n <ul>\n {types.map((type) => (\n <li key={type.name}>\n <SchemaEntry schemaStub={type} />\n </li>\n ))}\n </ul>\n </Stack>\n\n <Stack space={2}>\n <Label>Stored schema</Label>\n <ul>\n {(data ?? NO_DATA).map((type) => (\n <li key={type.name}>\n <SchemaEntry schemaStub={type} />\n </li>\n ))}\n </ul>\n </Stack>\n </Flex>\n </Stack>\n </Card>\n )\n}\n\nfunction SchemaEntry({schemaStub}: {schemaStub: SerializedSchemaType}) {\n const out = useMemo(() => JSON.stringify(schemaStub, null, 2), [schemaStub])\n return <pre>{out}</pre>\n}\n","export const aiInspectorId = 'ai-assistance'\n","import {Box, BoxProps, Flex, focusFirstDescendant, Spinner, Text} from '@sanity/ui'\nimport React, {HTMLProps, useEffect, useMemo, useRef} from 'react'\nimport {tap} from 'rxjs/operators'\nimport {\n createPatchChannel,\n DocumentMutationEvent,\n DocumentRebaseEvent,\n FormBuilder,\n fromMutationPatches,\n PatchMsg,\n useDocumentPresence,\n useDocumentStore,\n} from 'sanity'\nimport {useDocumentPane} from 'sanity/desk'\n\nconst preventDefault = (ev: React.FormEvent) => ev.preventDefault()\n\nexport function DocumentForm(\n props: Omit<BoxProps, 'as'> & Omit<HTMLProps<HTMLDivElement>, 'as' | 'onSubmit' | 'ref'>\n) {\n const {\n collapsedFieldSets,\n collapsedPaths,\n displayed: value,\n documentId,\n documentType,\n editState,\n formState,\n onBlur,\n onChange,\n onFocus,\n onPathOpen,\n onSetActiveFieldGroup,\n onSetCollapsedFieldSet,\n onSetCollapsedPath,\n ready,\n validation,\n } = useDocumentPane()\n\n const documentStore = useDocumentStore()\n const presence = useDocumentPresence(documentId)\n\n // The `patchChannel` is an INTERNAL publish/subscribe channel that we use to notify form-builder\n // nodes about both remote and local patches.\n // - Used by the Portable Text input to modify selections.\n // - Used by `withDocument` to reset value.\n const patchChannel = useMemo(() => createPatchChannel(), [])\n\n const isLocked = editState?.transactionSyncLock?.enabled\n\n useEffect(() => {\n const sub = documentStore.pair\n .documentEvents(documentId, documentType)\n .pipe(\n tap((event) => {\n if (event.type === 'mutation') {\n patchChannel.publish(prepareMutationEvent(event))\n }\n\n if (event.type === 'rebase') {\n patchChannel.publish(prepareRebaseEvent(event))\n }\n })\n )\n .subscribe()\n\n return () => {\n sub.unsubscribe()\n }\n }, [documentId, documentStore, documentType, patchChannel])\n\n const hasRev = Boolean(value?._rev)\n useEffect(() => {\n if (hasRev) {\n // this is a workaround for an issue that caused the document pushed to withDocument to get\n // stuck at the first initial value.\n // This effect is triggered only when the document goes from not having a revision, to getting one\n // so it will kick in as soon as the document is received from the backend\n patchChannel.publish({\n type: 'mutation',\n patches: [],\n snapshot: value,\n })\n }\n // React to changes in hasRev only\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [hasRev])\n\n const formRef = useRef<null | HTMLDivElement>(null)\n\n useEffect(() => {\n focusFirstDescendant(formRef.current!)\n }, [])\n\n if (isLocked) {\n return (\n <Box as=\"form\" {...props} ref={formRef}>\n <Flex\n align=\"center\"\n direction=\"column\"\n height=\"fill\"\n justify=\"center\"\n padding={3}\n sizing=\"border\"\n >\n <Text size={1}>\n Please hold tight while the document is synced. This usually happens right after the\n document has been published, and it shouldn’t take more than a few seconds\n </Text>\n </Flex>\n </Box>\n )\n }\n\n return (\n <Box as=\"form\" {...props} onSubmit={preventDefault} ref={formRef}>\n {ready ? (\n formState === null ? (\n <Flex\n align=\"center\"\n direction=\"column\"\n height=\"fill\"\n justify=\"center\"\n padding={3}\n sizing=\"border\"\n >\n <Text size={1}>This form is hidden</Text>\n </Flex>\n ) : (\n <FormBuilder\n __internal_patchChannel={patchChannel}\n collapsedFieldSets={collapsedFieldSets}\n collapsedPaths={collapsedPaths}\n focusPath={formState.focusPath}\n changed={formState.changed}\n focused={formState.focused}\n groups={formState.groups}\n id=\"root\"\n members={formState.members}\n onChange={onChange}\n onFieldGroupSelect={onSetActiveFieldGroup}\n onPathBlur={onBlur}\n onPathFocus={onFocus}\n onPathOpen={onPathOpen}\n onSetFieldSetCollapsed={onSetCollapsedFieldSet}\n onSetPathCollapsed={onSetCollapsedPath}\n presence={presence}\n readOnly={formState.readOnly}\n schemaType={formState.schemaType}\n validation={validation}\n value={formState.value}\n />\n )\n ) : (\n <Flex\n align=\"center\"\n direction=\"column\"\n height=\"fill\"\n justify=\"center\"\n padding={3}\n sizing=\"border\"\n >\n <Spinner muted />\n\n <Box marginTop={3}>\n <Text align=\"center\" muted size={1}>\n Loading document\n </Text>\n </Box>\n </Flex>\n )}\n </Box>\n )\n}\n\nfunction prepareMutationEvent(event: DocumentMutationEvent): PatchMsg {\n const patches = event.mutations.map((mut) => mut.patch).filter(Boolean)\n\n return {\n type: 'mutation',\n snapshot: event.document,\n patches: fromMutationPatches(event.origin, patches),\n }\n}\n\nfunction prepareRebaseEvent(event: DocumentRebaseEvent): PatchMsg {\n const remotePatches = event.remoteMutations.map((mut) => mut.patch).filter(Boolean)\n const localPatches = event.localMutations.map((mut) => mut.patch).filter(Boolean)\n\n return {\n type: 'rebase',\n snapshot: event.document,\n patches: fromMutationPatches('remote', remotePatches).concat(\n fromMutationPatches('local', localPatches)\n ),\n }\n}\n","import {ObjectSchemaType, SchemaType} from 'sanity'\nimport {createContext} from 'react'\n\nexport interface SelectedFieldContextValue {\n documentSchema?: ObjectSchemaType\n fieldSchema?: SchemaType\n}\n\nexport const SelectedFieldContext = createContext<SelectedFieldContextValue | undefined>(undefined)\nexport const SelectedFieldContextProvider = SelectedFieldContext.Provider\n","import {\n BlockContentIcon,\n BlockquoteIcon,\n DocumentIcon,\n ImageIcon,\n LinkIcon,\n OlistIcon,\n StringIcon,\n} from '@sanity/icons'\nimport {isObjectSchemaType, ObjectSchemaType, Path, pathToString, SchemaType} from 'sanity'\nimport {ComponentType, useContext, useMemo} from 'react'\nimport {AssistInspectorRouteParams, documentRootKey, fieldPathParam} from '../types'\nimport {usePaneRouter} from 'sanity/desk'\nimport {isAssistSupported} from '../helpers/assistSupported'\nimport {isPortableTextArray, isType} from '../helpers/typeUtils'\nimport {SelectedFieldContext} from '../assistDocument/components/SelectedFieldContext'\n\nexport interface FieldRef {\n key: string\n path: Path\n title: string\n schemaType: SchemaType\n icon: ComponentType\n}\n\nconst maxDepth = 4\n\nexport function getTypeIcon(schemaType: SchemaType) {\n let t: SchemaType | undefined = schemaType\n\n while (t) {\n if (t.icon) return t.icon\n t = t.type\n }\n\n if (isType(schemaType, 'slug')) return LinkIcon\n if (isType(schemaType, 'image')) return ImageIcon\n if (schemaType.jsonType === 'array' && isPortableTextArray(schemaType)) return BlockContentIcon\n\n if (schemaType.jsonType === 'array') return OlistIcon\n if (schemaType.jsonType === 'object') return BlockquoteIcon\n if (schemaType.jsonType === 'string') return StringIcon\n\n return DocumentIcon\n}\n\nexport function getFieldRefsWithDocument(schemaType: ObjectSchemaType): FieldRef[] {\n const fields = getFieldRefs(schemaType)\n return [\n {\n key: documentRootKey,\n icon: schemaType.icon ?? DocumentIcon,\n title: `The entire document`,\n path: [],\n schemaType: schemaType,\n },\n\n ...fields,\n ]\n}\n\nexport function getFieldRefs(\n schemaType: ObjectSchemaType,\n parent?: FieldRef,\n depth = 0\n): FieldRef[] {\n if (depth >= maxDepth) {\n return []\n }\n return schemaType.fields\n .filter((f) => !f.name.startsWith('_'))\n .flatMap((field) => {\n const path: Path = parent ? [...parent.path, field.name] : [field.name]\n const title = field.type.title ?? field.name\n const fieldRef: FieldRef = {\n key: pathToString(path),\n path,\n title: parent ? [parent.title, title].join(' / ') : title,\n schemaType: field.type,\n icon: getTypeIcon(field.type),\n }\n const fields =\n field.type.jsonType === 'object' ? getFieldRefs(field.type, fieldRef, depth + 1) : []\n\n if (!isAssistSupported(field.type, true)) {\n return fields\n }\n return [fieldRef, ...fields]\n })\n}\n\nexport function useSelectedField(\n documentSchemaType?: SchemaType,\n path?: string\n): FieldRef | undefined {\n const selectableFields = useMemo(\n () =>\n documentSchemaType && isObjectSchemaType(documentSchemaType)\n ? getFieldRefsWithDocument(documentSchemaType)\n : [],\n [documentSchemaType]\n )\n\n return useMemo(() => {\n return path ? selectableFields?.find((f) => f.key === path) : undefined\n }, [selectableFields, path])\n}\n\nexport function useSelectedFieldTitle() {\n const {params} = useAiPaneRouter()\n const {documentSchema} = useContext(SelectedFieldContext) ?? {}\n const selectedField = useSelectedField(documentSchema, params[fieldPathParam])\n return getFieldTitle(selectedField)\n}\n\nexport function getFieldTitle(field?: FieldRef) {\n const schemaType = field?.schemaType\n return schemaType?.title ?? schemaType?.name ?? 'Untitled'\n}\n\nexport function useAiPaneRouter() {\n const paneRouter = usePaneRouter()\n\n return useMemo(\n () =>\n ({...paneRouter, params: paneRouter.params ?? {}} as Omit<\n typeof paneRouter,\n 'setParams' | 'params'\n > & {\n params: AssistInspectorRouteParams\n setParams: (p: Record<keyof AssistInspectorRouteParams, string | undefined>) => void\n }),\n [paneRouter]\n )\n}\n","import {useEditState} from 'sanity'\n\nexport function useDocumentState<T>(id: string, docType: string): T | undefined {\n const state = useEditState(id, docType)\n return (state.draft || state.published) as T | undefined\n}\n","import {assistDocumentIdPrefix, assistDocumentStatusIdPrefix} from '../types'\n\nconst aiDocPrefixPattern = new RegExp(`^${assistDocumentIdPrefix}`)\n\nexport function publicId(id: string) {\n return id.replace('drafts.', '')\n}\n\nexport function assistDocumentId(documentType: string) {\n return `${assistDocumentIdPrefix}${documentType}`\n}\n\nexport function documentTypeFromAiDocumentId(id: string) {\n return id.replace(aiDocPrefixPattern, '')\n}\n\nexport function assistTasksStatusId(documentId: string) {\n return `${assistDocumentStatusIdPrefix}${publicId(documentId)}`\n}\n","import {minutesToMilliseconds} from 'date-fns'\n\nexport const releaseAnnouncementUrl =\n 'https://www.sanity.io/blog/sanity-ai-assist-announcement?utm_source=sanity-assist-plugin&utm_medium=organic_social&utm_campaign=ai-assist&utm_content='\n\nexport const instructionGuideUrl =\n 'https://sanity.io/guides/getting-started-with-ai-assist-instructions?utm_source=sanity-assist-plugin&utm_medium=organic_social&utm_campaign=ai-assist&utm_content='\n\nexport const giveFeedbackUrl = 'https://forms.gle/Kwz7CThxGeA2GiEU8'\n\nexport const salesUrl =\n 'https://www.sanity.io/contact/sales?utm_source=sanity-assist-plugin&utm_medium=organic_social&utm_campaign=ai-assist&utm_content='\n\nexport const packageName = '@sanity/assist'\n\nexport const pluginTitle = 'Sanity AI Assist'\n\nexport const pluginTitleShort = 'AI Assist'\n\nexport const maxHistoryVisibilityMs = minutesToMilliseconds(30)\n","import {useEffect, useMemo} from 'react'\nimport {\n assistDocumentTypeName,\n AssistTasksStatus,\n assistTasksStatusTypeName,\n FieldRef,\n fieldReferenceTypeName,\n InstructionTask,\n StudioAssistDocument,\n StudioAssistField,\n StudioInstruction,\n} from '../../types'\nimport {\n ObjectSchemaType,\n pathToString,\n typed,\n useClient,\n useCurrentUser,\n useValidationStatus,\n ValidationMarker,\n} from 'sanity'\nimport {useDocumentState} from './useDocumentState'\nimport {assistDocumentId, assistTasksStatusId, publicId} from '../../helpers/ids'\nimport {maxHistoryVisibilityMs} from '../../constants'\n\ninterface UseAssistDocumentProps {\n documentId: string\n schemaType: ObjectSchemaType\n}\n\nexport function useStudioAssistDocument({\n documentId,\n schemaType,\n}: UseAssistDocumentProps): StudioAssistDocument | undefined {\n const documentTypeName = schemaType.name\n const currentUser = useCurrentUser()\n\n const validation = useValidationStatus(publicId(documentId), schemaType.name).validation\n const assistDocument = useDocumentState<StudioAssistDocument>(\n assistDocumentId(documentTypeName),\n assistDocumentTypeName\n )\n const assistTasksStatus = useDocumentState<AssistTasksStatus>(\n assistTasksStatusId(documentId ?? ''),\n assistTasksStatusTypeName\n )\n\n const client = useClient({apiVersion: '2023-01-01'})\n\n useEffect(() => {\n if (!assistDocument) {\n client.createIfNotExists({\n _id: assistDocumentId(documentTypeName),\n _type: assistDocumentTypeName,\n })\n }\n }, [client, assistDocument, documentTypeName])\n\n return useMemo(() => {\n if (!assistDocument) {\n return undefined\n }\n const tasks = assistTasksStatus?.tasks ?? []\n const fields = (assistDocument?.fields ?? []).map((assistField): StudioAssistField => {\n return {\n ...assistField,\n tasks: tasks.filter((task) => task.path === assistField.path),\n instructions: assistField.instructions\n ?.filter((p) => !p.userId || p.userId === currentUser?.id)\n .map((instruction) => asStudioInstruction(instruction, tasks, validation)),\n }\n })\n return typed<StudioAssistDocument>({\n ...assistDocument,\n tasks: tasks?.map((task) => {\n const instruction = fields\n .find((f) => f.path === task.path)\n ?.instructions?.find((i) => i._key === task.instructionKey)\n return {\n ...task,\n instruction,\n }\n }),\n fields: fields,\n })\n }, [assistDocument, assistTasksStatus, currentUser, validation])\n}\n\nfunction asStudioInstruction(\n instruction: StudioInstruction,\n run: InstructionTask[],\n validation: ValidationMarker[]\n): StudioInstruction {\n const errors = validation.filter((marker) => marker.level === 'error')\n\n const fieldRefs: FieldRef[] = (instruction?.prompt ?? []).flatMap((block) => {\n if (block._type === 'block') {\n return block.children.filter((c): c is FieldRef => c._type === fieldReferenceTypeName)\n }\n return []\n })\n\n return {\n ...instruction,\n tasks: run\n .filter((task) => task.instructionKey === instruction._key)\n .filter(\n (task) =>\n task.started &&\n new Date().getTime() - new Date(task.started).getTime() < maxHistoryVisibilityMs\n ),\n validation: errors.filter((marker) =>\n fieldRefs\n .map((r) => r.path)\n .filter((p): p is string => !!p)\n .find((path) => pathToString(marker.path) === path)\n ),\n }\n}\n","import {useEffect, useReducer} from 'react'\nimport formatDistanceToNow from 'date-fns/formatDistanceToNow'\n\nfunction useInterval(ms: number) {\n const [tick, update] = useReducer((n) => n + 1, 0)\n\n useEffect(() => {\n const i = setInterval(update, ms)\n return () => clearInterval(i)\n }, [ms])\n return tick\n}\n\nexport function TimeAgo({date}: {date?: string}) {\n useInterval(1000)\n const timeSince = formatDistanceToNow(date ? new Date(date) : new Date())\n return <span title={timeSince}>{timeSince} ago</span>\n}\n","import {documentRootKey, StudioInstruction} from '../types'\nimport {Path, pathToString} from 'sanity'\nimport {useMemo} from 'react'\n\nexport function usePathKey(path: Path | string) {\n return useMemo(() => {\n if (path.length) {\n return Array.isArray(path) ? pathToString(path) : path\n }\n return documentRootKey\n }, [path])\n}\n\nexport function getInstructionTitle(instruction?: StudioInstruction) {\n return instruction?.title ?? 'Untitled'\n}\n","import {AssistTasksStatus, InstructionTask, StudioInstruction, TaskEndedReason} from '../types'\nimport {createElement, ForwardedRef, forwardRef, useCallback, useMemo, useState} from 'react'\nimport {\n Box,\n Button,\n Card,\n Flex,\n Popover,\n Spinner,\n Stack,\n Text,\n useClickOutside,\n useGlobalKeyDown,\n useLayer,\n} from '@sanity/ui'\nimport {\n CheckmarkCircleIcon,\n ClockIcon,\n CloseCircleIcon,\n ErrorOutlineIcon,\n SyncIcon,\n} from '@sanity/icons'\nimport {TimeAgo} from '../components/TimeAgo'\nimport {StatusButton, StatusButtonProps, typed, useClient} from 'sanity'\nimport {getInstructionTitle} from '../helpers/misc'\nimport styled, {keyframes} from 'styled-components'\nimport {assistTasksStatusId} from '../helpers/ids'\nimport {maxHistoryVisibilityMs, pluginTitle} from '../constants'\n\nexport interface InstructionTaskHistoryButtonProps {\n documentId?: string\n tasks: InstructionTask[] | undefined\n instructions: StudioInstruction[] | undefined\n showTitles: boolean\n}\n\ninterface CancelableInstructionTask extends InstructionTask {\n cancel: () => void\n title?: string\n}\n\nconst rotate = keyframes`\n 0% {\n transform: rotate(0);\n }\n 100% {\n transform: rotate(360deg);\n }\n`\n\nconst SyncSpinningIcon = styled(SyncIcon)`\n animation: ${rotate} 1s linear infinite;\n`\n\nconst TASK_CONFIG = {\n aborted: {\n title: 'Canceled',\n icon: CloseCircleIcon,\n tone: 'transparent',\n },\n error: {\n title: 'Error',\n icon: ErrorOutlineIcon,\n tone: 'critical',\n },\n success: {\n title: 'Completed',\n icon: CheckmarkCircleIcon,\n tone: 'positive',\n },\n timeout: {\n title: 'Timeout',\n icon: ClockIcon,\n tone: 'caution',\n },\n} as const\n\nexport function InstructionTaskHistoryButton(props: InstructionTaskHistoryButtonProps) {\n const {tasks, instructions, documentId, showTitles} = props\n\n const client = useClient({apiVersion: '2023-01-01'})\n const cancelRun = useCallback(\n (taskKey: string) => {\n if (!documentId) {\n return\n }\n const statusDocId = assistTasksStatusId(documentId)\n const basePath = `${typed<keyof AssistTasksStatus>('tasks')}[_key==\"${taskKey}\"]`\n client\n .patch(statusDocId)\n .set({\n [`${basePath}.${typed<keyof InstructionTask>('ended')}`]: new Date().toISOString(),\n [`${basePath}.${typed<keyof InstructionTask>('reason')}`]:\n typed<TaskEndedReason>('aborted'),\n })\n .commit()\n .catch(console.error)\n },\n [client, documentId]\n )\n\n const titledTasks = useMemo(() => {\n const t =\n tasks\n ?.filter(\n (task) =>\n task.started &&\n new Date().getTime() - new Date(task.started).getTime() < maxHistoryVisibilityMs\n )\n .map((task): CancelableInstructionTask => {\n const instruction = instructions?.find((i) => i._key === task.instructionKey)\n return {\n ...task,\n title: showTitles ? task.title ?? getInstructionTitle(instruction) : undefined,\n cancel: () => cancelRun(task._key),\n }\n }) ?? []\n t.sort((a, b) => new Date(b.started ?? '').getTime() - new Date(a.started ?? '').getTime())\n return t\n }, [tasks, instructions, cancelRun, showTitles])\n\n // const id = useId()\n\n const isRunning = useMemo(() => titledTasks.some((r) => !r.ended), [titledTasks])\n const hasErrors = useMemo(\n () => titledTasks.some((r) => r.reason === 'error' || r.reason === 'timeout'),\n [titledTasks]\n )\n\n const [open, setOpen] = useState(false)\n\n const toggleOpen = useCallback(() => setOpen((v) => !v), [])\n\n const [button, setButton] = useState<HTMLButtonElement | null>(null)\n const [popover, setPopover] = useState<HTMLDivElement | null>(null)\n\n const handleClickOutside = useCallback(() => {\n setOpen(false)\n }, [])\n\n useClickOutside(handleClickOutside, [button, popover])\n\n const handleEscape = useCallback(() => {\n setOpen(false)\n button?.focus()\n }, [button])\n\n return (\n <Popover\n constrainSize\n content={<TaskList onEscape={handleEscape} tasks={titledTasks} />}\n open={open && !!titledTasks?.length}\n placement=\"top\"\n portal\n ref={setPopover}\n width={0}\n >\n <TaskStatusButton\n disabled={!titledTasks?.length}\n hasErrors={hasErrors}\n isRunning={isRunning}\n onClick={toggleOpen}\n ref={setButton}\n selected={open}\n />\n </Popover>\n )\n}\n\nconst TASK_STATUS_BUTTON_TOOLTIP_PROPS: StatusButtonProps['tooltip'] = {\n placement: 'top',\n}\n\nconst TaskStatusButton = forwardRef(function TaskStatusButton(\n props: {\n disabled: boolean\n hasErrors: boolean\n isRunning: boolean\n onClick: () => void\n selected: boolean\n },\n ref: ForwardedRef<HTMLButtonElement>\n) {\n const {disabled, hasErrors, isRunning, onClick, selected} = props\n\n return (\n <StatusButton\n label={`${pluginTitle} status`}\n icon={isRunning ? SyncSpinningIcon : hasErrors ? ErrorOutlineIcon : CheckmarkCircleIcon}\n mode=\"bleed\"\n onClick={onClick}\n tone={hasErrors ? 'critical' : undefined}\n fontSize={1}\n disabled={disabled}\n ref={ref}\n selected={selected}\n tooltip={TASK_STATUS_BUTTON_TOOLTIP_PROPS}\n />\n )\n})\n\nfunction TaskList(props: {onEscape: () => void; tasks: CancelableInstructionTask[]}) {\n const {onEscape, tasks} = props\n\n const {isTopLayer} = useLayer()\n\n useGlobalKeyDown(\n useCallback(\n (event) => {\n if (isTopLayer && event.key === 'Escape') {\n onEscape()\n }\n },\n [isTopLayer, onEscape]\n )\n )\n\n return (\n <Stack padding={1} space={1}>\n {tasks.map((task) => (\n <TaskItem key={task._key} task={task} />\n ))}\n </Stack>\n )\n}\n\nfunction TaskItem(props: {task: CancelableInstructionTask}) {\n const {task} = props\n\n const taskType = task.reason && TASK_CONFIG[task.reason]\n return (\n <Card radius={2} tone={taskType && taskType?.tone}>\n <Flex align=\"center\" gap={1}>\n <Flex align=\"flex-start\" flex={1} gap={3} padding={3}>\n <Box flex=\"none\">\n <Text size={1}>\n {taskType && createElement(taskType.icon)}\n {!task.reason && <Spinner />}\n </Text>\n </Box>\n <Stack flex={1} space={2}>\n <Text size={1} weight=\"medium\">\n {taskType ? taskType.title : 'Running'}\n {task.title && <>: {task.title}</>}\n </Text>\n {task.message ? <Text size={1}>{task.message}</Text> : null}\n <Text muted size={1}>\n <TimeAgo date={task.ended ?? task.started} />\n </Text>\n </Stack>\n </Flex>\n\n {!task.ended && (\n <Box flex=\"none\" padding={1}>\n <Button fontSize={1} mode=\"bleed\" onClick={task.cancel} text=\"Cancel\" />\n </Box>\n )}\n </Flex>\n </Card>\n )\n}\n","import {useClient, useCurrentUser, useSchema} from 'sanity'\nimport {useCallback, useMemo, useState} from 'react'\nimport {serializeSchema} from './schemas/serialize/serializeSchema'\nimport {useToast} from '@sanity/ui'\nimport {SanityClient} from '@sanity/client'\n\nexport interface UserTextInstance {\n blockKey: string\n userInput: string\n}\n\nexport interface RunInstructionRequest {\n documentId: string\n assistDocumentId: string\n path: string\n instructionKey: string\n userId?: string\n userTexts?: UserTextInstance[]\n}\n\nexport interface InstructStatus {\n enabled: boolean\n initialized: boolean\n validToken: boolean\n}\n\nconst basePath = '/assist/tasks/instruction'\nconst editorialAiFieldActionFeature = 'editorialAiFieldActions'\n\nexport function useApiClient(customApiClient?: (defaultClient: SanityClient) => SanityClient) {\n const client = useClient({apiVersion: '2023-06-05'})\n return useMemo(\n () => (customApiClient ? customApiClient(client) : client),\n [client, customApiClient]\n )\n}\n\nexport function useGenerateCaption(apiClient: SanityClient) {\n const [loading, setLoading] = useState(false)\n const user = useCurrentUser()\n const schema = useSchema()\n const types = useMemo(() => serializeSchema(schema, {leanFormat: true}), [schema])\n const toast = useToast()\n\n const generateCaption = useCallback(\n ({path, documentId}: {path: string; documentId: string}) => {\n setLoading(true)\n\n return apiClient\n .request({\n method: 'POST',\n url: `/assist/tasks/generate-caption/${apiClient.config().dataset}?projectId=${\n apiClient.config().projectId\n }`,\n body: {\n path,\n documentId,\n types,\n userId: user?.id,\n },\n })\n .catch((e) => {\n toast.push({\n status: 'error',\n title: 'Generate caption failed',\n description: e.message,\n })\n setLoading(false)\n throw e\n })\n .finally(() => {\n // adding some artificial delay here\n // server responds with 201 then proceeds; we dont need to allow spamming the button\n setTimeout(() => {\n setLoading(false)\n }, 2000)\n })\n },\n [setLoading, apiClient, toast, user, types]\n )\n\n return useMemo(\n () => ({\n generateCaption,\n loading,\n }),\n [generateCaption, loading]\n )\n}\n\nexport function useGetInstructStatus(apiClient: SanityClient) {\n const [loading, setLoading] = useState(true)\n const projectClient = useClient({apiVersion: '2023-06-05'})\n\n const getInstructStatus = useCallback(async () => {\n setLoading(true)\n\n const projectId = apiClient.config().projectId\n try {\n const features = await projectClient.request<string[]>({\n method: 'GET',\n url: `/projects/${projectId}/features`,\n })\n\n const enabled = features.some((f) => f === editorialAiFieldActionFeature)\n\n const status = await apiClient.request<Omit<InstructStatus, 'enabled'>>({\n method: 'GET',\n url: `${basePath}/${apiClient.config().dataset}/status?projectId=${projectId}`,\n })\n\n return {\n ...status,\n enabled,\n }\n } finally {\n setLoading(false)\n }\n }, [setLoading, apiClient, projectClient])\n\n return {\n loading,\n getInstructStatus,\n }\n}\n\nexport function useInitInstruct(apiClient: SanityClient) {\n const [loading, setLoading] = useState(false)\n const initInstruct = useCallback(() => {\n setLoading(true)\n return apiClient\n .request({\n method: 'GET',\n url: `${basePath}/${apiClient.config().dataset}/init?projectId=${\n apiClient.config().projectId\n }`,\n })\n .finally(() => {\n setLoading(false)\n })\n }, [setLoading, apiClient])\n\n return {\n loading,\n initInstruct,\n }\n}\n\nexport function useRunInstructionApi(apiClient: SanityClient) {\n const toast = useToast()\n const [loading, setLoading] = useState(false)\n const user = useCurrentUser()\n const schema = useSchema()\n const types = useMemo(() => serializeSchema(schema, {leanFormat: true}), [schema])\n\n const runInstruction = useCallback(\n (request: RunInstructionRequest) => {\n setLoading(true)\n return apiClient\n .request({\n method: 'POST',\n url: `${basePath}/${apiClient.config().dataset}?projectId=${\n apiClient.config().projectId\n }`,\n body: {\n ...request,\n types,\n userId: user?.id,\n },\n })\n .catch((e) => {\n toast.push({\n status: 'error',\n title: 'Instruction failed',\n description: e.message,\n })\n throw e\n })\n .finally(() => {\n setLoading(false)\n })\n },\n [apiClient, types, user, toast]\n )\n\n return useMemo(\n () => ({\n runInstruction,\n loading,\n }),\n [runInstruction, loading]\n )\n}\n","import {\n createContext,\n ReactNode,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from 'react'\nimport {AssistPluginConfig} from '../plugin'\nimport {InstructStatus, useApiClient, useGetInstructStatus, useInitInstruct} from '../useApiClient'\n\nexport interface AiAssistanceConfigContextValue {\n config: AssistPluginConfig\n status?: InstructStatus\n statusLoading: boolean\n initLoading: boolean\n init: () => void\n error?: Error\n}\n\nexport const AiAssistanceConfigContext = createContext<AiAssistanceConfigContextValue>({} as any)\n\nexport function useAiAssistanceConfig() {\n const context = useContext(AiAssistanceConfigContext)\n if (!context) {\n throw new Error('Missing AiAssistanceConfigContext')\n }\n return context\n}\n\nexport function AiAssistanceConfigProvider(props: {\n children?: ReactNode\n config: AssistPluginConfig\n}) {\n const [status, setStatus] = useState<InstructStatus | undefined>()\n const [error, setError] = useState<Error | undefined>()\n\n const apiClient = useApiClient(props.config?.__customApiClient)\n const {getInstructStatus, loading: statusLoading} = useGetInstructStatus(apiClient)\n const {initInstruct, loading: initLoading} = useInitInstruct(apiClient)\n\n useEffect(() => {\n getInstructStatus()\n .then((s) => setStatus(s))\n .catch((e) => {\n console.error(e)\n setError(e as Error)\n })\n }, [getInstructStatus])\n\n const init = useCallback(async () => {\n setError(undefined)\n try {\n await initInstruct()\n const status = await getInstructStatus()\n setStatus(status)\n } catch (e) {\n console.error('Failed to init ai assistance', e)\n setError(e as Error)\n }\n }, [initInstruct, getInstructStatus, setStatus])\n\n const {config, children} = props\n const context = useMemo<AiAssistanceConfigContextValue>(() => {\n return {\n config,\n status,\n statusLoading,\n init,\n initLoading,\n error,\n }\n }, [config, status, init, statusLoading, initLoading, error])\n\n return (\n <AiAssistanceConfigContext.Provider value={context}>\n {children}\n </AiAssistanceConfigContext.Provider>\n )\n}\n","import {Button, Dialog, Flex, Stack, Text, TextArea, Tooltip} from '@sanity/ui'\nimport {getInstructionTitle} from '../helpers/misc'\nimport {PlayIcon} from '@sanity/icons'\nimport {\n createContext,\n Dispatch,\n FormEvent,\n PropsWithChildren,\n SetStateAction,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport {UserInputBlock, userInputTypeName} from '../types'\nimport {RunInstructionArgs} from './AssistLayout'\nimport {useApiClient, useRunInstructionApi} from '../useApiClient'\nimport {useAiAssistanceConfig} from './AiAssistanceConfigContext'\nimport {FormFieldHeaderText} from 'sanity'\n\ntype BlockInputs = Record<string, string>\nconst NO_INPUT: BlockInputs = {}\n\nexport interface RunInstructionContextValue {\n runInstruction: (req: RunInstructionArgs) => void\n instructionLoading: boolean\n}\n\nexport const RunInstructionContext = createContext<RunInstructionContextValue>({\n runInstruction: () => {},\n instructionLoading: false,\n})\n\nexport function useRunInstruction() {\n return useContext(RunInstructionContext)\n}\n\nfunction isUserInputBlock(block: {_type: string}): block is UserInputBlock {\n return block._type === userInputTypeName\n}\n\nexport function RunInstructionProvider(props: PropsWithChildren<{}>) {\n const {config} = useAiAssistanceConfig()\n const apiClient = useApiClient(config?.__customApiClient)\n const {runInstruction: runInstructionRequest, loading} = useRunInstructionApi(apiClient)\n\n const id = useId()\n\n const [inputs, setInputs] = useState(NO_INPUT)\n const [runRequest, setRunRequest] = useState<\n (RunInstructionArgs & {userInputBlocks: UserInputBlock[]}) | undefined\n >()\n\n const runInstruction = useCallback(\n (req: RunInstructionArgs) => {\n if (loading) {\n return\n }\n const {instruction, ...request} = req\n const instructionKey = instruction._key\n const userInputBlocks = instruction?.prompt\n ?.flatMap((block) =>\n block._type === 'block' ? block.children.filter(isUserInputBlock) : [block]\n )\n .filter(isUserInputBlock)\n\n if (!userInputBlocks?.length) {\n runInstructionRequest({\n ...request,\n instructionKey,\n userTexts: undefined,\n })\n return\n }\n\n setRunRequest({\n ...req,\n userInputBlocks,\n })\n },\n [setRunRequest, runInstructionRequest, loading]\n )\n\n const close = useCallback(() => {\n setRunRequest(undefined)\n setInputs(NO_INPUT)\n }, [setRunRequest, setInputs])\n\n const runWithInput = useCallback(() => {\n if (runRequest) {\n const {instruction, userTexts, ...request} = runRequest\n runInstructionRequest({\n ...request,\n instructionKey: instruction._key,\n userTexts: Object.entries(inputs).map(([key, value]) => ({\n blockKey: key,\n userInput: value,\n })),\n })\n }\n close()\n }, [close, runInstructionRequest, runRequest, inputs])\n\n const open = !!runRequest\n\n const runDisabled = useMemo(\n () =>\n (runRequest?.userInputBlocks?.length ?? 0) >\n Object.entries(inputs).filter(([, value]) => !!value).length,\n [runRequest?.userInputBlocks, inputs]\n )\n\n const runButton = (\n <Button\n text=\"Run instruction\"\n onClick={runWithInput}\n tone=\"primary\"\n icon={PlayIcon}\n style={{width: '100%'}}\n disabled={runDisabled}\n />\n )\n\n const contextValue: RunInstructionContextValue = useMemo(\n () => ({runInstruction, instructionLoading: loading}),\n [runInstruction, loading]\n )\n\n return (\n <RunInstructionContext.Provider value={contextValue}>\n {open ? (\n <Dialog\n id={id}\n open={open}\n onClose={close}\n width={1}\n header={getInstructionTitle(runRequest?.instruction)}\n footer={\n <Flex justify=\"space-between\" padding={2} flex={1}>\n {runDisabled ? (\n <Tooltip\n content={\n <Flex padding={2}>\n <Text>Unable to run instruction. All fields must have a value.</Text>\n </Flex>\n }\n placement=\"top\"\n >\n <Flex flex={1}>{runButton}</Flex>\n </Tooltip>\n ) : (\n runButton\n )}\n </Flex>\n }\n >\n <Stack padding={4} space={2}>\n {runRequest?.userInputBlocks?.map((block, i) => (\n <UserInput\n key={block._key}\n block={block}\n autoFocus={i === 0}\n inputs={inputs}\n setInputs={setInputs}\n />\n ))}\n </Stack>\n </Dialog>\n ) : null}\n {props.children}\n </RunInstructionContext.Provider>\n )\n}\n\nfunction UserInput(props: {\n block: UserInputBlock\n inputs: BlockInputs\n setInputs: Dispatch<SetStateAction<BlockInputs>>\n autoFocus?: boolean\n}) {\n const {block, autoFocus, setInputs, inputs} = props\n const key = block._key\n const textAreaRef = useRef<HTMLTextAreaElement>(null)\n\n const onChange = useCallback(\n (e: FormEvent<HTMLTextAreaElement>) => {\n setInputs((current) => ({\n ...current,\n [key]: (e.currentTarget ?? e.target).value,\n }))\n },\n [key, setInputs]\n )\n\n const value = useMemo(() => inputs[key], [inputs, key])\n\n useEffect(() => {\n if (!autoFocus) {\n return\n }\n setTimeout(() => textAreaRef.current?.focus(), 0)\n }, [autoFocus])\n\n return (\n <Stack padding={2} space={3}>\n <FormFieldHeaderText\n title={block?.message ?? 'Provide more context'}\n description={block.description}\n />\n <TextArea\n ref={textAreaRef}\n rows={4}\n value={value}\n onChange={onChange}\n style={{resize: 'vertical'}}\n />\n </Stack>\n )\n}\n","import {useRunInstruction} from '../assistLayout/RunInstructionProvider'\nimport {useCallback, useEffect, useState} from 'react'\nimport {ObjectSchemaType, PatchEvent, SanityDocument, unset} from 'sanity'\nimport {RunInstructionArgs} from '../assistLayout/AssistLayout'\nimport {publicId} from '../helpers/ids'\n\nexport interface DocumentArgs {\n documentOnChange: (event: PatchEvent) => void\n // indicates if the document is a draft or liveEditable currently\n isDocAssistable: boolean\n}\n\nexport function isDocAssistable(\n documentSchemaType: ObjectSchemaType,\n published?: SanityDocument | null,\n draft?: SanityDocument | null\n) {\n return !!(documentSchemaType.liveEdit ? published : draft)\n}\n\nexport function getAssistableDocId(documentSchemaType: ObjectSchemaType, documentId: string) {\n const baseId = publicId(documentId)\n return documentSchemaType.liveEdit ? baseId : `drafts.${baseId}`\n}\n\nexport function useRequestRunInstruction(args: DocumentArgs) {\n const {documentOnChange, isDocAssistable} = args\n\n const {runInstruction, instructionLoading} = useRunInstruction()\n const [queuedTask, setQueuedTask] = useState<RunInstructionArgs | undefined>(undefined)\n\n useEffect(() => {\n if (queuedTask && isDocAssistable) {\n runInstruction(queuedTask)\n setQueuedTask(undefined)\n }\n }, [queuedTask, isDocAssistable, runInstruction])\n\n return {\n instructionLoading,\n requestRunInstruction: useCallback(\n (task: RunInstructionArgs) => {\n // make a dummy edit: this will trigger the document/draft to be created\n documentOnChange(PatchEvent.from([unset(['_force_document_creation'])]))\n setQueuedTask(task)\n },\n [setQueuedTask, documentOnChange]\n ),\n }\n}\n","import {Box, Button, Container, Flex, Stack, Text} from '@sanity/ui'\nimport {SparklesIcon} from '@sanity/icons'\nimport {releaseAnnouncementUrl} from '../constants'\nimport styled from 'styled-components'\n\nconst SparklesIllustration = styled(SparklesIcon)({\n fontSize: '3.125em',\n '& path': {\n strokeWidth: `0.6px !important`,\n },\n})\n\nexport function InspectorOnboarding(props: {onDismiss: () => void}) {\n const {onDismiss} = props\n return (\n <Box padding={4}>\n <Container width={0}>\n <Stack space={4}>\n <div style={{textAlign: 'center'}}>\n <SparklesIllustration />\n </div>\n <Text align=\"center\" size={1}>\n Create reusable AI instructions that can be applied across all documents of a certain\n type.\n </Text>\n\n <Flex align=\"center\" gap={2} justify=\"center\">\n <Button\n as=\"a\"\n href={releaseAnnouncementUrl}\n rel=\"noreferrer\"\n target=\"_blank\"\n fontSize={1}\n mode=\"default\"\n onClick={onDismiss}\n padding={2}\n text=\"Learn more\"\n tone=\"primary\"\n />\n <Button fontSize={1} mode=\"bleed\" onClick={onDismiss} padding={2} text=\"Dismiss\" />\n </Flex>\n </Stack>\n </Container>\n </Box>\n )\n}\n","import {useCallback, useState} from 'react'\n\nexport const inspectorOnboardingKey = 'sanityStudio:assist:inspector:onboarding:dismissed'\nexport const fieldOnboardingKey = 'sanityStudio:assist:field:onboarding:dismissed'\n\nexport function isFeatureOnboardingDismissed(featureKey: string): boolean {\n if (typeof localStorage === 'undefined') {\n return false\n }\n\n const value = localStorage.getItem(featureKey)\n return value === 'true'\n}\n\nexport function dismissFeatureOnboarding(featureKey: string) {\n if (typeof localStorage === 'undefined') {\n return\n }\n\n localStorage.setItem(featureKey, 'true')\n}\n\nexport function useOnboardingFeature(featureKey: string) {\n const [showOnboarding, setShowOnboarding] = useState(\n () => !isFeatureOnboardingDismissed(featureKey)\n )\n const dismissOnboarding = useCallback(() => {\n setShowOnboarding(false)\n dismissFeatureOnboarding(featureKey)\n }, [setShowOnboarding, featureKey])\n\n return {showOnboarding, dismissOnboarding}\n}\n","import {ArrowRightIcon, CloseIcon, PlayIcon, RetryIcon} from '@sanity/icons'\nimport {Box, Button, Card, Flex, Spinner, Stack, Text} from '@sanity/ui'\nimport {useCallback, useMemo, useRef} from 'react'\nimport {\n DocumentInspectorProps,\n PresenceOverlay,\n useEditState,\n VirtualizerScrollInstanceProvider,\n} from 'sanity'\nimport {\n DocumentInspectorHeader,\n DocumentPaneNode,\n DocumentPaneProvider,\n useDocumentPane,\n} from 'sanity/desk'\nimport {DocumentForm} from '../_lib/form'\nimport {assistDocumentTypeName, fieldPathParam, instructionParam} from '../types'\nimport {getFieldTitle, useAiPaneRouter, useSelectedField} from './helpers'\nimport styled from 'styled-components'\nimport {useStudioAssistDocument} from '../assistDocument/hooks/useStudioAssistDocument'\nimport {InstructionTaskHistoryButton} from './InstructionTaskHistoryButton'\nimport {useAiAssistanceConfig} from '../assistLayout/AiAssistanceConfigContext'\nimport {giveFeedbackUrl, pluginTitle, releaseAnnouncementUrl, salesUrl} from '../constants'\nimport {assistDocumentId} from '../helpers/ids'\nimport {\n getAssistableDocId,\n isDocAssistable,\n useRequestRunInstruction,\n} from '../assistDocument/RequestRunInstructionProvider'\nimport {InspectorOnboarding} from '../onboarding/InspectorOnboarding'\nimport {inspectorOnboardingKey, useOnboardingFeature} from '../onboarding/onboardingStore'\n\nconst CardWithShadowBelow = styled(Card)`\n position: relative;\n\n &:after {\n content: '';\n display: block;\n position: absolute;\n left: 0;\n right: 0;\n bottom: -1px;\n border-bottom: 1px solid var(--card-border-color);\n opacity: 0.5;\n z-index: 100;\n }\n`\n\nconst CardWithShadowAbove = styled(Card)`\n position: relative;\n\n &:after {\n content: '';\n display: block;\n position: absolute;\n left: 0;\n right: 0;\n top: -1px;\n border-top: 1px solid var(--card-border-color);\n opacity: 0.5;\n z-index: 100;\n }\n`\n\nexport function AssistInspectorWrapper(props: DocumentInspectorProps) {\n const context = useAiAssistanceConfig()\n\n if (context.statusLoading) {\n return (\n <Flex align=\"center\" height=\"fill\" justify=\"center\" padding={4} sizing=\"border\">\n <Stack space={3} style={{textAlign: 'center'}}>\n <Spinner muted />\n <Text muted size={1}>\n Loading {pluginTitle}...\n </Text>\n </Stack>\n </Flex>\n )\n }\n\n const status = context.status\n\n if (!status?.enabled) {\n return (\n <Flex direction=\"column\" height=\"fill\">\n <DocumentInspectorHeader\n closeButtonLabel=\"Close\"\n onClose={props.onClose}\n title={pluginTitle}\n />\n\n <Stack flex={1} overflow=\"auto\" padding={4} space={3}>\n <Text as=\"p\" size={1} weight=\"semibold\">\n {pluginTitle} is not available\n </Text>\n\n <Text as=\"p\" muted size={1}>\n Please get in touch with a Sanity account manager or{' '}\n <a href={salesUrl} target=\"_blank\" rel=\"noreferrer\">\n contact our sales team\n </a>{' '}\n to get started with {pluginTitle}.{' '}\n <a href={releaseAnnouncementUrl} target=\"_blank\" rel=\"noreferrer\">\n Learn more →\n </a>\n </Text>\n </Stack>\n </Flex>\n )\n }\n\n if (!status?.initialized || !status.validToken) {\n return (\n <Flex direction=\"column\" height=\"fill\">\n <DocumentInspectorHeader\n closeButtonLabel=\"Close\"\n onClose={props.onClose}\n title={pluginTitle}\n />\n\n <Stack padding={4} space={3}>\n {context.error ? (\n <Text size={1} weight=\"semibold\">\n Failed to start {pluginTitle}\n </Text>\n ) : null}\n\n {!context.error && !status?.initialized ? (\n <Text size={1} weight=\"semibold\">\n {pluginTitle} is not enabled\n </Text>\n ) : null}\n\n {!context.error && status?.initialized && !status.validToken ? (\n <>\n <Text size={1} weight=\"semibold\">\n Invalid token\n </Text>\n <Text muted size={1}>\n The token used by the AI Assistant is not valid and has to be regenerated.\n </Text>\n </>\n ) : null}\n\n {context.error && (\n <Text muted size={1}>\n Something went wrong. See console for details.\n </Text>\n )}\n\n {!context.error && !status?.initialized && (\n <Text size={1} muted>\n Please enable {pluginTitle}.\n </Text>\n )}\n\n <Button\n fontSize={1}\n icon={\n context.initLoading ? (\n <Box marginTop={1}>\n <Spinner />\n </Box>\n ) : context.error ? (\n RetryIcon\n ) : undefined\n }\n text={\n context.error\n ? 'Retry'\n : status?.initialized && !status.validToken\n ? `Restore ${pluginTitle}`\n : `Enable ${pluginTitle} now`\n }\n tone=\"primary\"\n onClick={context.init}\n disabled={context.initLoading}\n />\n </Stack>\n </Flex>\n )\n }\n\n return <AssistInspector {...props} />\n}\n\nexport function AssistInspector(props: DocumentInspectorProps) {\n const {params} = useAiPaneRouter()\n\n const boundary = useRef<HTMLDivElement | null>(null)\n const pathKey = params?.[fieldPathParam]\n const instructionKey = params?.[instructionParam]\n const documentPane = useDocumentPane()\n const {documentId, documentType, schemaType, onChange: documentOnChange} = documentPane\n const {published, draft} = useEditState(documentId, documentType, 'low')\n\n const assistableDocId = getAssistableDocId(schemaType, documentId)\n const {instructionLoading, requestRunInstruction} = useRequestRunInstruction({\n documentOnChange,\n isDocAssistable: isDocAssistable(schemaType, published, draft),\n })\n const selectedField = useSelectedField(schemaType, params[fieldPathParam])\n\n const aiDocId = assistDocumentId(documentType)\n\n const assistDocument = useStudioAssistDocument({documentId, schemaType})\n const assistField = assistDocument?.fields?.find((f) => f.path === pathKey)\n const instruction = assistField?.instructions?.find((i) => i._key === instructionKey)\n const tasks = useMemo(\n () =>\n assistDocument?.tasks?.filter((i) => !instructionKey || i.instructionKey === instructionKey),\n [assistDocument?.tasks, instructionKey]\n )\n const instructions = useMemo(\n () => assistDocument?.fields?.flatMap((f) => f.instructions ?? []),\n [assistDocument?.fields]\n )\n\n const promptValue = instruction?.prompt\n const isEmptyPrompt = useMemo(() => {\n if (!promptValue?.length) {\n return true\n }\n const firstBlock = promptValue[0] as any\n const children = firstBlock?.children\n\n return promptValue.length == 1 && children?.length === 1 && !children?.[0]?.text?.length\n }, [promptValue])\n\n const paneNode: DocumentPaneNode = useMemo(\n () => ({\n type: 'document',\n id: aiDocId,\n title: pluginTitle,\n options: {\n id: aiDocId,\n type: assistDocumentTypeName,\n },\n }),\n [aiDocId]\n )\n\n const runCurrentInstruction = useCallback(\n () =>\n instruction &&\n pathKey &&\n requestRunInstruction({\n documentId: assistableDocId,\n path: pathKey,\n assistDocumentId: assistDocumentId(documentType),\n instruction,\n }),\n [instruction, pathKey, documentType, assistableDocId, requestRunInstruction]\n )\n\n const Region = useCallback((_props: any) => {\n // disabled for now\n /* return (\n <ConnectToRegion\n {..._props}\n _key={`${paneKey}_${selectedField?.key || '_field'}`}\n style={{height: '100%', flex: 1, overflow: 'auto'}}\n />\n )*/\n return <div {..._props} style={{height: '100%', flex: 1, overflow: 'auto'}} />\n }, [])\n\n if (!documentId || !schemaType || schemaType.jsonType !== 'object') {\n return (\n <Card flex={1} padding={4}>\n <Text>Document not ready yet.</Text>\n </Card>\n )\n }\n\n return (\n <Flex\n ref={boundary}\n direction=\"column\"\n height=\"fill\"\n overflow=\"hidden\"\n sizing=\"border\"\n style={{lineHeight: 0}}\n >\n <AiInspectorHeader onClose={props.onClose} fieldTitle={getFieldTitle(selectedField)} />\n\n <Card as={Region} flex={1} overflow=\"auto\">\n <Flex direction=\"column\" style={{minHeight: '100%'}}>\n <Box flex={1}>\n <PresenceOverlay>\n <Box padding={4}>\n {selectedField && (\n <VirtualizerScrollInstanceProvider\n scrollElement={boundary.current}\n containerElement={boundary}\n >\n <DocumentPaneProvider\n paneKey={documentPane.paneKey}\n index={documentPane.index}\n itemId=\"ai\"\n pane={paneNode}\n >\n <DocumentForm />\n </DocumentPaneProvider>\n </VirtualizerScrollInstanceProvider>\n )}\n </Box>\n </PresenceOverlay>\n </Box>\n\n <Box flex=\"none\" padding={4}>\n <Text muted size={1}>\n How is Sanity AI Assist working for you?{' '}\n <a\n href={giveFeedbackUrl}\n target=\"_blank\"\n rel=\"noreferrer\"\n style={{whiteSpace: 'nowrap'}}\n >\n Let us know <ArrowRightIcon />\n </a>\n </Text>\n </Box>\n </Flex>\n </Card>\n\n <CardWithShadowAbove flex=\"none\" paddingX={4} paddingY={3} style={{justifySelf: 'flex-end'}}>\n <Flex gap={2} flex={1} justify=\"flex-end\">\n {schemaType?.name && pathKey && instructionKey && (\n <Stack flex={1}>\n <Button\n mode=\"ghost\"\n disabled={isEmptyPrompt || instructionLoading}\n fontSize={1}\n icon={instructionLoading ? <Spinner /> : PlayIcon}\n onClick={runCurrentInstruction}\n padding={3}\n text={'Run instruction'}\n />\n </Stack>\n )}\n\n <InstructionTaskHistoryButton\n documentId={assistableDocId}\n tasks={tasks}\n instructions={instructions}\n showTitles={!instructionKey}\n />\n </Flex>\n </CardWithShadowAbove>\n </Flex>\n )\n}\n\nfunction AiInspectorHeader(props: {fieldTitle: string; onClose: () => void}) {\n const {onClose, fieldTitle} = props\n const {showOnboarding, dismissOnboarding} = useOnboardingFeature(inspectorOnboardingKey)\n\n return (\n <CardWithShadowBelow flex=\"none\" padding={2}>\n <Flex flex={1} align=\"center\">\n <Flex flex={1} padding={3} gap={2} align=\"center\">\n <Flex gap={1} align=\"center\">\n <Text size={1} weight=\"semibold\">\n AI instructions for\n </Text>\n <Card radius={2} border padding={1} style={{margin: '-4px 0'}}>\n <Text size={1} weight=\"semibold\">\n {fieldTitle}\n </Text>\n </Card>\n </Flex>\n </Flex>\n <Box flex=\"none\">\n <Button fontSize={1} icon={CloseIcon} mode=\"bleed\" onClick={onClose} />\n </Box>\n </Flex>\n\n {showOnboarding && <InspectorOnboarding onDismiss={dismissOnboarding} />}\n </CardWithShadowBelow>\n )\n}\n","import {SparklesIcon} from '@sanity/icons'\nimport {DocumentInspector, typed} from 'sanity'\nimport {aiInspectorId} from './constants'\nimport {AssistInspectorWrapper} from './AssistInspector'\nimport {AssistInspectorRouteParams, fieldPathParam, instructionParam} from '../types'\nimport {pluginTitle} from '../constants'\n\nexport const assistInspector: DocumentInspector = {\n name: aiInspectorId,\n useMenuItem: () => ({\n icon: SparklesIcon,\n title: pluginTitle,\n hidden: true,\n showAsAction: false,\n }),\n component: AssistInspectorWrapper,\n onClose({params}) {\n return {\n params: typed<AssistInspectorRouteParams>({\n ...params,\n [fieldPathParam]: undefined,\n [instructionParam]: undefined,\n }) as typeof params,\n }\n },\n}\n","import {DocumentInspector, ObjectSchemaType, PatchEvent} from 'sanity'\nimport {createContext, useContext} from 'react'\nimport {StudioAssistDocument} from '../types'\n\nexport type AssistDocumentContextValue = (\n | {assistDocument: StudioAssistDocument; loading: false}\n | {assistDocument: undefined; loading: true}\n) & {\n documentIsNew: boolean\n assistableDocumentId: string\n documentIsAssistable: boolean\n documentId: string\n documentSchemaType: ObjectSchemaType\n openInspector: (inspectorName: string, paneParams?: Record<string, string>) => void\n closeInspector: (inspectorName?: string) => void\n inspector: DocumentInspector | null\n selectedPath?: string\n documentOnChange: (event: PatchEvent) => void\n}\n\nexport const AssistDocumentContext = createContext<AssistDocumentContextValue | undefined>(\n undefined\n)\n\nexport function useAssistDocumentContext(): AssistDocumentContextValue {\n const context = useContext(AssistDocumentContext)\n if (!context) {\n throw new Error('AssistDocumentContext value is missing')\n }\n return context\n}\n","import {useMemo} from 'react'\nimport {FormNodePresence, isKeySegment, Path, stringToPath} from 'sanity'\nimport {useAssistDocumentContext} from '../assistDocument/AssistDocumentContext'\nimport {AiPresence} from '../types'\nimport {maxHistoryVisibilityMs, pluginTitle} from '../constants'\n\nconst NO_PRESENCE: FormNodePresence[] = []\n\nexport function useAssistPresence(path: Path, showFocusWithin?: boolean): FormNodePresence[] {\n const context = useAssistDocumentContext()\n const assistDocument = context && 'assistDocument' in context ? context.assistDocument : undefined\n const tasks = assistDocument?.tasks\n\n return useMemo(() => {\n const activePresence = tasks\n ?.filter((task) => !task.ended)\n ?.flatMap((task) => task.presence ?? [])\n ?.filter(\n (p) =>\n p.started && new Date().getTime() - new Date(p.started).getTime() < maxHistoryVisibilityMs\n )\n .filter((presence) => {\n if (!presence.path || !path.length) {\n return false\n }\n const statusPath = stringToPath(presence.path)\n\n if (!showFocusWithin && statusPath.length !== path.length) {\n return false\n }\n\n return path.every((pathSegment, i) => {\n const statusSegment = statusPath[i]\n if (typeof pathSegment === 'string') {\n return pathSegment === statusSegment\n }\n if (isKeySegment(pathSegment) && isKeySegment(statusSegment)) {\n return pathSegment._key === statusSegment._key\n }\n return false\n })\n })\n if (!activePresence?.length) {\n return NO_PRESENCE\n }\n\n return activePresence.map((status) => aiPresence(status, path))\n }, [showFocusWithin, tasks, path])\n}\n\nexport function aiPresence(presence: AiPresence, path: Path, title?: string): FormNodePresence {\n return {\n user: {\n id: `sanity-assistant_${presence._key}`,\n displayName: pluginTitle,\n },\n path: path,\n sessionId: 'not-available',\n lastActiveAt: presence?.started ?? new Date().toISOString(),\n }\n}\n","import {forwardRef, ReactElement, ReactNode} from 'react'\nimport styled, {keyframes} from 'styled-components'\n\nconst fadeIn = keyframes`\n 0% {\n opacity: 0;\n transform: scale(0.75);\n }\n 40% {\n opacity: 0;\n transform: scale(0.75);\n }\n 100% {\n opacity: 1;\n transform: scale(1);\n }\n`\n\nconst FadeInDiv = styled.div`\n animation-name: ${fadeIn};\n animation-timing-function: ease-in-out;\n`\n\nexport const FadeInContent = forwardRef(function FadeInContent(\n {\n children,\n durationMs = 250,\n }: {\n children?: ReactNode\n ms?: number\n durationMs?: number\n },\n ref: any\n): ReactElement {\n return (\n <FadeInDiv ref={ref} style={{animationDuration: `${durationMs}ms`}}>\n {children}\n </FadeInDiv>\n )\n})\n","const black$1 = \"#101112\";\nconst white$1 = \"#fff\";\nconst gray = {\n \"50\": {\n title: \"Gray 50\",\n hex: \"#f2f3f5\"\n },\n \"100\": {\n title: \"Gray 100\",\n hex: \"#e6e8ec\"\n },\n \"200\": {\n title: \"Gray 200\",\n hex: \"#ced2d9\"\n },\n \"300\": {\n title: \"Gray 300\",\n hex: \"#b6bcc6\"\n },\n \"400\": {\n title: \"Gray 400\",\n hex: \"#9ea6b3\"\n },\n \"500\": {\n title: \"Gray 500\",\n hex: \"#8690a0\"\n },\n \"600\": {\n title: \"Gray 600\",\n hex: \"#6e7683\"\n },\n \"700\": {\n title: \"Gray 700\",\n hex: \"#565d67\"\n },\n \"800\": {\n title: \"Gray 800\",\n hex: \"#3f434a\"\n },\n \"900\": {\n title: \"Gray 900\",\n hex: \"#272a2e\"\n },\n \"950\": {\n title: \"Gray 950\",\n hex: \"#1b1d20\"\n }\n};\nconst blue = {\n \"50\": {\n title: \"Blue 50\",\n hex: \"#e8f1fe\"\n },\n \"100\": {\n title: \"Blue 100\",\n hex: \"#d2e3fe\"\n },\n \"200\": {\n title: \"Blue 200\",\n hex: \"#a6c8fd\"\n },\n \"300\": {\n title: \"Blue 300\",\n hex: \"#7aacfd\"\n },\n \"400\": {\n title: \"Blue 400\",\n hex: \"#4e91fc\"\n },\n \"500\": {\n title: \"Blue 500\",\n hex: \"#2276fc\"\n },\n \"600\": {\n title: \"Blue 600\",\n hex: \"#1e61cd\"\n },\n \"700\": {\n title: \"Blue 700\",\n hex: \"#1a4d9e\"\n },\n \"800\": {\n title: \"Blue 800\",\n hex: \"#17396f\"\n },\n \"900\": {\n title: \"Blue 900\",\n hex: \"#132540\"\n },\n \"950\": {\n title: \"Blue 950\",\n hex: \"#111b29\"\n }\n};\nconst purple = {\n \"50\": {\n title: \"Purple 50\",\n hex: \"#f8e9fe\"\n },\n \"100\": {\n title: \"Purple 100\",\n hex: \"#f2d3fe\"\n },\n \"200\": {\n title: \"Purple 200\",\n hex: \"#e6a7fd\"\n },\n \"300\": {\n title: \"Purple 300\",\n hex: \"#d97bfd\"\n },\n \"400\": {\n title: \"Purple 400\",\n hex: \"#cd4efc\"\n },\n \"500\": {\n title: \"Purple 500\",\n hex: \"#c123fc\"\n },\n \"600\": {\n title: \"Purple 600\",\n hex: \"#9d1fcd\"\n },\n \"700\": {\n title: \"Purple 700\",\n hex: \"#7a1b9e\"\n },\n \"800\": {\n title: \"Purple 800\",\n hex: \"#56186f\"\n },\n \"900\": {\n title: \"Purple 900\",\n hex: \"#331440\"\n },\n \"950\": {\n title: \"Purple 950\",\n hex: \"#211229\"\n }\n};\nconst magenta = {\n \"50\": {\n title: \"Magenta 50\",\n hex: \"#fcebf5\"\n },\n \"100\": {\n title: \"Magenta 100\",\n hex: \"#f9d7eb\"\n },\n \"200\": {\n title: \"Magenta 200\",\n hex: \"#f4afd8\"\n },\n \"300\": {\n title: \"Magenta 300\",\n hex: \"#ef87c4\"\n },\n \"400\": {\n title: \"Magenta 400\",\n hex: \"#ea5fb1\"\n },\n \"500\": {\n title: \"Magenta 500\",\n hex: \"#e5389e\"\n },\n \"600\": {\n title: \"Magenta 600\",\n hex: \"#ba3082\"\n },\n \"700\": {\n title: \"Magenta 700\",\n hex: \"#8f2866\"\n },\n \"800\": {\n title: \"Magenta 800\",\n hex: \"#65204a\"\n },\n \"900\": {\n title: \"Magenta 900\",\n hex: \"#3a182d\"\n },\n \"950\": {\n title: \"Magenta 950\",\n hex: \"#25141f\"\n }\n};\nconst red = {\n \"50\": {\n title: \"Red 50\",\n hex: \"#fdebea\"\n },\n \"100\": {\n title: \"Red 100\",\n hex: \"#fcd8d5\"\n },\n \"200\": {\n title: \"Red 200\",\n hex: \"#f9b1ab\"\n },\n \"300\": {\n title: \"Red 300\",\n hex: \"#f68b82\"\n },\n \"400\": {\n title: \"Red 400\",\n hex: \"#f36458\"\n },\n \"500\": {\n title: \"Red 500\",\n hex: \"#f03e2f\"\n },\n \"600\": {\n title: \"Red 600\",\n hex: \"#c33529\"\n },\n \"700\": {\n title: \"Red 700\",\n hex: \"#962c23\"\n },\n \"800\": {\n title: \"Red 800\",\n hex: \"#69231d\"\n },\n \"900\": {\n title: \"Red 900\",\n hex: \"#3c1a17\"\n },\n \"950\": {\n title: \"Red 950\",\n hex: \"#261514\"\n }\n};\nconst orange = {\n \"50\": {\n title: \"Orange 50\",\n hex: \"#fef0e6\"\n },\n \"100\": {\n title: \"Orange 100\",\n hex: \"#fee2ce\"\n },\n \"200\": {\n title: \"Orange 200\",\n hex: \"#fdc59d\"\n },\n \"300\": {\n title: \"Orange 300\",\n hex: \"#fca86d\"\n },\n \"400\": {\n title: \"Orange 400\",\n hex: \"#fb8b3c\"\n },\n \"500\": {\n title: \"Orange 500\",\n hex: \"#e57322\"\n },\n \"600\": {\n title: \"Orange 600\",\n hex: \"#ba5f1f\"\n },\n \"700\": {\n title: \"Orange 700\",\n hex: \"#904b1b\"\n },\n \"800\": {\n title: \"Orange 800\",\n hex: \"#653818\"\n },\n \"900\": {\n title: \"Orange 900\",\n hex: \"#3a2415\"\n },\n \"950\": {\n title: \"Orange 950\",\n hex: \"#251a13\"\n }\n};\nconst yellow = {\n \"50\": {\n title: \"Yellow 50\",\n hex: \"#fef7da\"\n },\n \"100\": {\n title: \"Yellow 100\",\n hex: \"#fdefb6\"\n },\n \"200\": {\n title: \"Yellow 200\",\n hex: \"#fcdf6d\"\n },\n \"300\": {\n title: \"Yellow 300\",\n hex: \"#fbd024\"\n },\n \"400\": {\n title: \"Yellow 400\",\n hex: \"#d9b421\"\n },\n \"500\": {\n title: \"Yellow 500\",\n hex: \"#b7991e\"\n },\n \"600\": {\n title: \"Yellow 600\",\n hex: \"#967e1c\"\n },\n \"700\": {\n title: \"Yellow 700\",\n hex: \"#746219\"\n },\n \"800\": {\n title: \"Yellow 800\",\n hex: \"#534717\"\n },\n \"900\": {\n title: \"Yellow 900\",\n hex: \"#312c14\"\n },\n \"950\": {\n title: \"Yellow 950\",\n hex: \"#201e13\"\n }\n};\nconst green = {\n \"50\": {\n title: \"Green 50\",\n hex: \"#e7f9ed\"\n },\n \"100\": {\n title: \"Green 100\",\n hex: \"#d0f4dc\"\n },\n \"200\": {\n title: \"Green 200\",\n hex: \"#a1eaba\"\n },\n \"300\": {\n title: \"Green 300\",\n hex: \"#72e097\"\n },\n \"400\": {\n title: \"Green 400\",\n hex: \"#43d675\"\n },\n \"500\": {\n title: \"Green 500\",\n hex: \"#3ab564\"\n },\n \"600\": {\n title: \"Green 600\",\n hex: \"#329454\"\n },\n \"700\": {\n title: \"Green 700\",\n hex: \"#297343\"\n },\n \"800\": {\n title: \"Green 800\",\n hex: \"#215233\"\n },\n \"900\": {\n title: \"Green 900\",\n hex: \"#183122\"\n },\n \"950\": {\n title: \"Green 950\",\n hex: \"#14211a\"\n }\n};\nconst cyan = {\n \"50\": {\n title: \"Cyan 50\",\n hex: \"#e3fafd\"\n },\n \"100\": {\n title: \"Cyan 100\",\n hex: \"#c7f5fc\"\n },\n \"200\": {\n title: \"Cyan 200\",\n hex: \"#90ecf9\"\n },\n \"300\": {\n title: \"Cyan 300\",\n hex: \"#59e3f6\"\n },\n \"400\": {\n title: \"Cyan 400\",\n hex: \"#22daf4\"\n },\n \"500\": {\n title: \"Cyan 500\",\n hex: \"#1fb8ce\"\n },\n \"600\": {\n title: \"Cyan 600\",\n hex: \"#1c97a8\"\n },\n \"700\": {\n title: \"Cyan 700\",\n hex: \"#197583\"\n },\n \"800\": {\n title: \"Cyan 800\",\n hex: \"#16545d\"\n },\n \"900\": {\n title: \"Cyan 900\",\n hex: \"#133237\"\n },\n \"950\": {\n title: \"Cyan 950\",\n hex: \"#112124\"\n }\n};\nconst hues = {\n gray,\n blue,\n purple,\n magenta,\n red,\n orange,\n yellow,\n green,\n cyan\n};\nconst COLOR_HUES = [\"gray\", \"blue\", \"purple\", \"magenta\", \"red\", \"orange\", \"yellow\", \"green\", \"cyan\"];\nconst COLOR_TINTS = [\"50\", \"100\", \"200\", \"300\", \"400\", \"500\", \"600\", \"700\", \"800\", \"900\", \"950\"];\nconst black = {\n title: \"Black\",\n hex: black$1\n};\nconst white = {\n title: \"White\",\n hex: white$1\n};\nexport { COLOR_HUES, COLOR_TINTS, black, blue, cyan, gray, green, hues, magenta, orange, purple, red, white, yellow };\n//# sourceMappingURL=index.js.map\n","import {purple} from '@sanity/color'\nimport {SparklesIcon} from '@sanity/icons'\nimport {Text} from '@sanity/ui'\nimport {CSSProperties, useMemo} from 'react'\nimport {useColorSchemeValue} from 'sanity'\nimport styled, {keyframes} from 'styled-components'\n\nconst Root = styled.span`\n display: block;\n width: 25px;\n height: 25px;\n position: relative;\n`\n\nconst dash = keyframes`\n 0% {\n transform: rotate(0);\n }\n 100% {\n transform: rotate(43deg);\n }\n`\n\nconst Outline = styled.svg`\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n\n & > circle {\n stroke: var(--ai-avatar-stroke-color);\n stroke-width: 1.5px;\n stroke-linecap: round;\n transform-origin: center;\n animation: ${dash} 500ms ease-in-out infinite;\n transition: stroke-dasharray 200ms ease-in-out;\n\n stroke-dasharray: 2.34px 0;\n\n [data-state='active'] > & {\n stroke-dasharray: 2px 2.34px;\n }\n }\n`\n\nconst IconDisc = styled.span`\n background: var(--ai-avatar-disc-color);\n color: white;\n width: 21px;\n height: 21px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 10.5px;\n position: absolute;\n top: 2px;\n left: 2px;\n`\n\nexport function AssistAvatar(props: {state?: 'present' | 'active'}) {\n const {state = 'present'} = props\n const scheme = useColorSchemeValue()\n\n const style = useMemo(() => {\n if (scheme === 'dark') {\n return {\n [`--ai-avatar-stroke-color`]: purple[400].hex,\n [`--ai-avatar-disc-color`]: purple[600].hex,\n } as CSSProperties\n }\n\n return {\n [`--ai-avatar-stroke-color`]: purple[500].hex,\n [`--ai-avatar-disc-color`]: purple[600].hex,\n } as CSSProperties\n }, [scheme])\n\n return (\n <Root data-state={state} style={style}>\n <Outline\n width=\"25\"\n height=\"25\"\n viewBox=\"0 0 25 25\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"12.5\" cy=\"12.5\" r=\"11.75\" />\n </Outline>\n <IconDisc>\n <Text as=\"span\" size={0} style={{color: 'inherit'}}>\n <SparklesIcon />\n </Text>\n </IconDisc>\n </Root>\n )\n}\n","// eslint-disable-next-line react/no-unused-prop-types\nimport {FormNodePresence} from 'sanity'\nimport {Card, Flex, Text, Tooltip} from '@sanity/ui'\nimport {FadeInContent} from '../components/FadeInContent'\nimport {AssistAvatar} from './AssistAvatar'\n\nexport function AiFieldPresence(props: {presence: FormNodePresence}) {\n return (\n <Card style={{position: 'relative', background: 'transparent'}} contentEditable={false}>\n <Tooltip\n placement=\"left\"\n content={\n <Card padding={3} border>\n <Flex align=\"center\">\n <Text size={1}>Running instruction...</Text>\n </Flex>\n </Card>\n }\n >\n <FadeInContent durationMs={300}>\n <AssistAvatar state=\"active\" />\n </FadeInContent>\n </Tooltip>\n </Card>\n )\n}\n","import {Badge} from '@sanity/ui'\n\nexport function AssistFeatureBadge() {\n return (\n <Badge fontSize={0} style={{margin: '-2px 0'}} tone=\"primary\">\n Beta\n </Badge>\n )\n}\n","import {Button, Card, Flex, Popover, Stack, Text} from '@sanity/ui'\nimport {useRef} from 'react'\nimport {AssistFeatureBadge} from '../components/AssistFeatureBadge'\nimport {ArrowRightIcon, CheckmarkIcon, SparklesIcon} from '@sanity/icons'\nimport {pluginTitle, releaseAnnouncementUrl} from '../constants'\n\nexport interface FieldActionsOnboardingProps {\n dismiss: () => void\n}\n\nexport function AssistOnboardingPopover(props: FieldActionsOnboardingProps) {\n const {dismiss} = props\n\n return (\n <Popover\n content={<AssistIntroCard dismiss={dismiss} />}\n open\n portal\n placeholder=\"bottom\"\n tone=\"default\"\n width={0}\n >\n <Card radius={2} shadow={2} style={{padding: 2, lineHeight: 0}}>\n <Button disabled fontSize={1} icon={SparklesIcon} mode=\"bleed\" padding={2} />\n </Card>\n </Popover>\n )\n}\n\nfunction AssistIntroCard(props: {dismiss: () => void}) {\n const buttonRef = useRef<HTMLButtonElement>(null)\n\n return (\n <Stack as=\"section\" padding={3} space={3}>\n <Stack padding={2} space={4}>\n <Flex gap={2} align=\"center\">\n <Text as=\"h1\" size={1} weight=\"semibold\">\n {pluginTitle}\n </Text>\n <div aria-hidden style={{margin: '-3px 0', lineHeight: 0}}>\n <AssistFeatureBadge />\n </div>\n </Flex>\n\n <Stack space={3}>\n <Text as=\"p\" muted size={1}>\n Manage reusable AI instructions to boost your content creation and reduce amount of\n repetitive chores.{' '}\n <a href={releaseAnnouncementUrl} target=\"_blank\" rel=\"noreferrer\">\n Learn more <ArrowRightIcon />\n </a>\n </Text>\n </Stack>\n </Stack>\n\n <Button\n fontSize={1}\n icon={CheckmarkIcon}\n onClick={props.dismiss}\n padding={3}\n ref={buttonRef}\n text=\"Ok, good to know!\"\n tone=\"primary\"\n />\n </Stack>\n )\n}\n","import {ObjectInputProps, FieldMember, pathToString} from 'sanity'\nimport {createContext, PropsWithChildren, useMemo} from 'react'\nimport {isAssistSupported} from '../helpers/assistSupported'\n\nexport const FirstAssistedPathContext = createContext<string | undefined>(undefined)\n\nexport interface FirstAssistedPathProviderProps {\n members: ObjectInputProps['members']\n}\n\nexport function FirstAssistedPathProvider(\n props: PropsWithChildren<FirstAssistedPathProviderProps>\n) {\n const {members} = props\n\n const firstAssistedPath = useMemo(() => {\n const firstAssisted = members.find(\n (member): member is FieldMember =>\n member.kind === 'field' && isAssistSupported(member.field.schemaType)\n )\n return firstAssisted?.field.path ? pathToString(firstAssisted?.field.path) : undefined\n }, [members])\n\n return (\n <FirstAssistedPathContext.Provider value={firstAssistedPath}>\n {props.children}\n </FirstAssistedPathContext.Provider>\n )\n}\n","import {FieldProps, isArraySchemaType, pathToString} from 'sanity'\nimport {useAssistPresence} from '../presence/useAssistPresence'\nimport {useContext, useMemo} from 'react'\nimport {Box, Flex} from '@sanity/ui'\nimport {contextDocumentTypeName} from '../types'\nimport {isAssistSupported} from '../helpers/assistSupported'\nimport {isPortableTextArray, isType} from '../helpers/typeUtils'\nimport {AiFieldPresence} from '../presence/AiFieldPresence'\nimport {AssistOnboardingPopover} from '../onboarding/FieldActionsOnboarding'\nimport {FirstAssistedPathContext} from '../onboarding/FirstAssistedPathProvider'\nimport {fieldOnboardingKey, useOnboardingFeature} from '../onboarding/onboardingStore'\n\nexport function AssistFieldWrapper(props: FieldProps) {\n const {schemaType} = props\n\n const isSupported = useMemo(() => isAssistSupported(schemaType), [schemaType])\n\n if (\n !isSupported ||\n schemaType.name.startsWith('sanity.') ||\n schemaType.name === contextDocumentTypeName\n ) {\n return props.renderDefault(props)\n }\n if (!isType(props.schemaType, 'document') && props.inputId !== 'root') {\n return <AssistField {...props}>{props.children}</AssistField>\n }\n\n return props.renderDefault(props)\n}\n\nexport function AssistField(props: FieldProps) {\n const {path} = props\n\n const isPortableText = useMemo(\n () => !!(isArraySchemaType(props.schemaType) && isPortableTextArray(props.schemaType)),\n [props.schemaType]\n )\n\n const presence = useAssistPresence(props.path, isPortableText)\n\n const firstAssistedPath = useContext(FirstAssistedPathContext)\n const isFirstAssisted = useMemo(\n () => pathToString(path) === firstAssistedPath,\n [path, firstAssistedPath]\n )\n\n const {showOnboarding, dismissOnboarding} = useOnboardingFeature(fieldOnboardingKey)\n\n const actions = (\n <Flex gap={2} align=\"center\" justify=\"space-between\">\n {presence.map((pre) => (\n <Box key={pre.user.id}>\n <AiFieldPresence key={pre.lastActiveAt} presence={pre} />\n </Box>\n ))}\n\n {isFirstAssisted && showOnboarding && <AssistOnboardingPopover dismiss={dismissOnboarding} />}\n </Flex>\n )\n\n return props.renderDefault({\n ...props,\n\n // When showing the onboarding, prevent default field actions from being rendered\n actions: isFirstAssisted && showOnboarding ? [] : props.actions,\n\n // Render presence (and possibly onboarding) in the internal slot (between presence and the field actions)\n // eslint-disable-next-line camelcase\n __internal_slot: actions,\n })\n}\n","import {createContext} from 'react'\nimport {ConnectorsStore} from './ConnectorsStore'\n\nexport const ConnectorsStoreContext = createContext<ConnectorsStore | null>(null)\n","import {useContext} from 'react'\nimport {ConnectorsStoreContext} from './ConnectorsStoreContext'\nimport {ConnectorsStore} from './ConnectorsStore'\n\nexport function useConnectorsStore(): ConnectorsStore {\n const store = useContext(ConnectorsStoreContext)\n\n if (!store) {\n throw new Error('Missing connectors store context')\n }\n\n return store\n}\n","export function hasOverflowScroll(el: HTMLElement): boolean {\n const overflow = getComputedStyle(el).overflow\n\n return overflow.includes('auto') || overflow.includes('hidden') || overflow.includes('scroll')\n}\n","import {useEffect, useMemo, useRef, useState} from 'react'\nimport {Rect, Scroll} from './types'\nimport {hasOverflowScroll} from './helpers'\n\nexport function useRegionRects() {\n const ref = useRef<HTMLDivElement>(null)\n\n const [relativeBoundsRect, setRelativeBoundsRect] = useState<Rect | null>(null)\n const [relativeElementRect, setRelativeElementRect] = useState<Rect | null>(null)\n const [boundsScroll, setBoundsScroll] = useState<Scroll>({x: 0, y: 0})\n const [scroll, setScroll] = useState<Scroll>({x: 0, y: 0})\n\n const boundsScrollXRef = useRef(0)\n const boundsScrollYRef = useRef(0)\n\n const elementScrollXRef = useRef(0)\n const elementScrollYRef = useRef(0)\n\n useEffect(() => {\n const el = ref.current\n\n if (!el) return undefined\n\n const scrollParents: HTMLElement[] = []\n let parent = el.parentElement\n\n while (parent && parent !== document.body) {\n if (\n hasOverflowScroll(parent)\n // || parent.scrollHeight > parent.clientHeight\n ) {\n scrollParents.push(parent)\n }\n\n parent = parent.parentElement\n }\n\n function handleResize() {\n const scrollParent = scrollParents[0]\n\n const boundsRect = scrollParent?.getBoundingClientRect() || {\n x: 0,\n y: 0,\n width: window.innerWidth,\n height: window.innerHeight,\n }\n\n const domRect = el!.getBoundingClientRect()\n\n setRelativeBoundsRect({\n x: boundsRect.x + boundsScrollXRef.current,\n y: boundsRect.y + boundsScrollYRef.current,\n w: boundsRect.width,\n h: boundsRect.height,\n })\n\n setRelativeElementRect({\n x: domRect.x + elementScrollXRef.current,\n y: domRect.y + elementScrollYRef.current,\n w: domRect.width,\n h: domRect.height,\n })\n }\n\n function handleScroll() {\n let scrollX = window.scrollX\n let scrollY = window.scrollY\n\n for (const scrollParent of scrollParents) {\n scrollX += scrollParent.scrollLeft\n scrollY += scrollParent.scrollTop\n }\n\n const scrollParent = scrollParents[0]\n\n boundsScrollXRef.current = scrollX - (scrollParent?.scrollLeft || window.scrollX)\n\n boundsScrollYRef.current = scrollY - (scrollParent?.scrollTop || window.scrollY)\n\n setBoundsScroll({\n x: boundsScrollXRef.current,\n y: boundsScrollYRef.current,\n })\n\n elementScrollXRef.current = scrollX\n elementScrollYRef.current = scrollY\n\n setScroll({x: scrollX, y: scrollY})\n }\n\n window.addEventListener('scroll', handleScroll, {passive: true})\n\n const ro = new ResizeObserver(handleResize)\n\n ro.observe(el)\n\n for (const scrollParent of scrollParents) {\n scrollParent.addEventListener('scroll', handleScroll, {passive: true})\n ro.observe(scrollParent)\n }\n\n handleScroll()\n\n return () => {\n ro.unobserve(el)\n\n for (const scrollParent of scrollParents) {\n ro.unobserve(scrollParent)\n scrollParent.removeEventListener('scroll', handleScroll)\n }\n\n ro.disconnect()\n\n window.removeEventListener('scroll', handleScroll)\n }\n }, [])\n\n const bounds: Rect | null = useMemo(\n () =>\n relativeBoundsRect && {\n x: relativeBoundsRect.x - boundsScroll.x,\n y: relativeBoundsRect.y - boundsScroll.y,\n w: relativeBoundsRect.w,\n h: relativeBoundsRect.h,\n },\n [relativeBoundsRect, boundsScroll]\n )\n\n const element: Rect | null = useMemo(\n () =>\n relativeElementRect && {\n x: relativeElementRect.x - scroll.x,\n y: relativeElementRect.y - scroll.y,\n w: relativeElementRect.w,\n h: relativeElementRect.h,\n },\n [relativeElementRect, scroll]\n )\n\n return {bounds, element, ref}\n}\n","import {HTMLProps, useEffect} from 'react'\nimport {ConnectorRegionRects} from './types'\nimport {useRegionRects} from './useRegionRects'\n\nexport function ConnectorRegion(\n props: {\n onRectsChange?: (rects: ConnectorRegionRects | null) => void\n } & HTMLProps<HTMLDivElement>\n) {\n const {children, onRectsChange, ...restProps} = props\n\n const {bounds, element, ref} = useRegionRects()\n\n useEffect(() => {\n onRectsChange?.(bounds && element ? {bounds, element} : null)\n }, [bounds, element, onRectsChange])\n\n return (\n <div {...restProps} ref={ref}>\n {children}\n </div>\n )\n}\n","import {HTMLProps, useEffect, useState} from 'react'\nimport {useConnectorsStore} from './useConnectorsStore'\nimport {ConnectorRegionRects} from './types'\nimport {ConnectorRegion} from './ConnectorRegion'\n\nexport function ConnectFromRegion(\n props: {_key: string; zIndex: number} & HTMLProps<HTMLDivElement>\n) {\n const {children, _key: key, zIndex, ...restProps} = props\n const store = useConnectorsStore()\n const [rects, setRects] = useState<ConnectorRegionRects | null>(null)\n\n useEffect(() => store.from.subscribe(key, {zIndex}), [key, store, zIndex])\n\n useEffect(() => {\n if (rects) store.from.next(key, rects)\n }, [key, rects, store])\n\n return (\n <ConnectorRegion {...restProps} onRectsChange={setRects}>\n {children}\n </ConnectorRegion>\n )\n}\n","import {Connector, ConnectorRegionRects} from './types'\n\nexport interface ConnectorsStore {\n connectors: {\n subscribe: (observer: (connectors: Connector[]) => void) => () => void\n }\n\n from: {\n subscribe: (key: string, payload?: Record<string, unknown>) => () => void\n next: (key: string, rects: ConnectorRegionRects) => void\n }\n\n to: {\n subscribe: (key: string, payload?: Record<string, unknown>) => () => void\n next: (key: string, rects: ConnectorRegionRects) => void\n }\n}\n\nexport function createConnectorsStore(): ConnectorsStore {\n const configKeys: string[] = []\n const fieldKeys: string[] = []\n\n const channels = {\n from: new Map<string, ConnectorRegionRects | null>(),\n to: new Map<string, ConnectorRegionRects | null>(),\n }\n\n const payloads = {\n from: new Map<string, Record<string, unknown> | undefined>(),\n to: new Map<string, Record<string, unknown> | undefined>(),\n }\n\n const observers: ((connectors: Connector[]) => void)[] = []\n\n function notifyObservers() {\n const connectors: Connector[] = []\n\n for (const key of configKeys) {\n const toRects = channels.to.get(key)\n const toPayload = payloads.from.get(key)\n\n const fromRects = channels.from.get(key)\n const fromPayload = payloads.from.get(key)\n\n if (toRects && fromRects) {\n connectors.push({\n key,\n from: {...fromRects, payload: fromPayload},\n to: {...toRects, payload: toPayload},\n })\n }\n }\n\n for (const observer of observers) {\n observer(connectors)\n }\n }\n\n return {\n to: {\n subscribe(key, payload) {\n channels.to.set(key, null)\n payloads.to.set(key, payload)\n\n configKeys.push(key)\n\n return () => {\n channels.to.delete(key)\n payloads.to.delete(key)\n\n const idx = configKeys.indexOf(key)\n\n if (idx > -1) configKeys.splice(idx, 1)\n\n notifyObservers()\n }\n },\n next(key, rects) {\n channels.to.set(key, rects)\n\n if (fieldKeys.includes(key)) notifyObservers()\n },\n },\n\n connectors: {\n subscribe(observer) {\n observers.push(observer)\n\n return () => {\n const idx = observers.indexOf(observer)\n\n if (idx > -1) observers.splice(idx, 1)\n }\n },\n },\n\n from: {\n subscribe(key, payload) {\n channels.from.set(key, null)\n payloads.from.set(key, payload)\n\n fieldKeys.push(key)\n\n return () => {\n channels.from.delete(key)\n payloads.from.delete(key)\n\n const idx = fieldKeys.indexOf(key)\n\n if (idx > -1) fieldKeys.splice(idx, 1)\n\n notifyObservers()\n }\n },\n next(key, rects) {\n channels.from.set(key, rects)\n\n if (configKeys.includes(key)) notifyObservers()\n },\n },\n }\n}\n","import {ReactNode, useEffect, useMemo} from 'react'\nimport {ConnectorsStore, createConnectorsStore} from './ConnectorsStore'\nimport {ConnectorsStoreContext} from './ConnectorsStoreContext'\nimport {Connector} from './types'\n\nexport function ConnectorsProvider(props: {\n children?: ReactNode\n onConnectorsChange?: (connectors: Connector[]) => void\n}) {\n const {children, onConnectorsChange} = props\n const store: ConnectorsStore = useMemo(() => createConnectorsStore(), [])\n\n useEffect(\n () => onConnectorsChange && store.connectors.subscribe(onConnectorsChange),\n [onConnectorsChange, store]\n )\n\n return <ConnectorsStoreContext.Provider value={store}>{children}</ConnectorsStoreContext.Provider>\n}\n","import {\n ConnectorLine,\n ConnectorLinePoint,\n ConnectorOptions,\n ConnectorRegionRects,\n Rect,\n} from './types'\n\nfunction getConnectorLinePoint(\n options: ConnectorOptions,\n rect: Rect,\n bounds: Rect\n): ConnectorLinePoint {\n const centerY = rect.y + rect.h / 2\n const isAbove = rect.y + rect.h < bounds.y + options.arrow.marginY\n const isBelow = rect.y > bounds.y + bounds.h - options.arrow.marginY\n\n return {\n bounds,\n x: rect.x,\n y: centerY,\n centerY,\n startY: rect.y + options.path.marginY,\n endY: rect.y + rect.h - options.path.marginY,\n isAbove,\n isBelow,\n outOfBounds: isAbove || isBelow,\n }\n}\n\nexport function mapConnectorToLine(\n options: ConnectorOptions,\n connector: {from: ConnectorRegionRects; to: ConnectorRegionRects}\n): ConnectorLine {\n const fromBounds: Rect = {\n y: connector.from.bounds.y + options.arrow.threshold,\n // bottom: connector.from.bounds.y + connector.from.bounds.h - options.arrow.threshold,\n x: connector.from.bounds.x,\n // right: connector.from.bounds.x + connector.from.bounds.w,\n w: connector.from.bounds.w,\n h: connector.from.bounds.h - options.arrow.threshold * 2,\n }\n\n const from = getConnectorLinePoint(options, connector.from.element, fromBounds)\n from.x = connector.from.element.x + connector.from.element.w // + 1\n\n const fromBottom = fromBounds.y + fromBounds.h\n\n const toBounds: Rect = {\n y: connector.to.bounds.y + options.arrow.threshold,\n // bottom: connector.to.bounds.y + connector.to.bounds.h - options.arrow.threshold,\n x: connector.to.bounds.x,\n // right: connector.to.bounds.x + connector.to.bounds.w,\n w: connector.to.bounds.w,\n h: connector.to.bounds.h - options.arrow.threshold * 2,\n }\n\n const toBottom = toBounds.y + toBounds.h\n\n const to = getConnectorLinePoint(options, connector.to.element, toBounds)\n\n const maxStartY = Math.max(to.startY, from.startY)\n\n // Align from <-> to vertically\n from.y = Math.min(maxStartY, from.endY)\n if (from.y < toBounds.y) {\n from.y = Math.min(toBounds.y, from.endY)\n } else if (from.y > toBottom) {\n from.y = Math.max(toBottom, from.startY)\n }\n to.y = Math.min(maxStartY, to.endY)\n if (to.y < fromBounds.y) {\n to.y = Math.min(fromBounds.y, to.endY)\n } else if (to.y > fromBottom) {\n to.y = Math.max(fromBottom, to.startY)\n }\n\n // Keep within bounds\n from.y = Math.min(Math.max(from.y, fromBounds.y), fromBottom)\n to.y = Math.min(Math.max(to.y, toBounds.y), toBottom)\n\n return {from, to}\n}\n","import {ConnectorOptions} from '../../_lib/connector'\n\nexport function arrowPath(options: ConnectorOptions, x: number, y: number, dir: 1 | -1): string {\n return [\n `M ${x - options.arrow.size} ${y - options.arrow.size * dir} `,\n `L ${x} ${y}`,\n `L ${x + options.arrow.size} ${y - options.arrow.size * dir}`,\n ].join('')\n}\n","import {ConnectorLine, ConnectorOptions} from '../../_lib/connector'\n\nexport function drawArrowPath(\n options: ConnectorOptions,\n x: number,\n y: number,\n dir: number\n): string {\n return [\n `M ${x - options.arrow.size} ${y - options.arrow.size * dir} `,\n `L ${x} ${y}`,\n `L ${x + options.arrow.size} ${y - options.arrow.size * dir}`,\n ].join('')\n}\n\nfunction moveTo(x: number, y: number) {\n return `M${x} ${y}`\n}\n\nfunction lineTo(x: number, y: number) {\n return `L${x} ${y}`\n}\n\nfunction join(strings: string[], delim = '') {\n return strings.join(delim)\n}\n\nfunction quadCurve(x1: number, y1: number, x: number, y: number) {\n return `Q${x1} ${y1} ${x} ${y}`\n}\n\nexport function drawConnectorPath(options: ConnectorOptions, line: ConnectorLine): string {\n const {cornerRadius} = options.path\n const {from, to} = line\n const {x: fromX, y: fromY} = from\n const {x: _toX, y: toY} = to\n\n const toX = _toX - 1\n\n // Calculate divider position\n const dividerX = to.bounds.x + options.divider.offsetX\n\n // Calculate connector FROM path X position\n const fromPathX = from.isAbove || from.isBelow ? fromX + options.arrow.marginX : fromX\n\n // Calculate maximum corner radius\n const r0 = Math.min(cornerRadius, Math.abs(fromPathX - dividerX) / 2)\n const r1 = Math.min(cornerRadius, Math.abs(fromY - toY) / 2)\n\n const cmds: string[] = []\n\n // FROM\n if (from.isAbove) {\n cmds.push(\n moveTo(\n fromX + options.arrow.marginX,\n fromY - options.arrow.threshold + options.arrow.marginY\n ),\n lineTo(fromX + options.arrow.marginX, fromY - r0),\n quadCurve(fromX + options.arrow.marginX, fromY, fromX + options.arrow.marginX + r0, fromY)\n )\n } else if (from.isBelow) {\n cmds.push(\n moveTo(\n fromX + options.arrow.marginX,\n fromY + options.arrow.threshold - options.arrow.marginY\n ),\n lineTo(fromX + options.arrow.marginX, fromY + r0),\n quadCurve(fromX + options.arrow.marginX, fromY, fromX + options.arrow.marginX + r0, fromY)\n )\n } else {\n cmds.push(moveTo(fromX, fromY))\n }\n\n // TO\n if (to.isAbove) {\n if (fromY < to.bounds.y) {\n cmds.push(\n lineTo(dividerX - r1, fromY),\n quadCurve(dividerX, fromY, dividerX, fromY + r1),\n lineTo(dividerX, toY - r1),\n quadCurve(dividerX, toY, dividerX + r1, toY),\n lineTo(dividerX - cornerRadius, toY),\n quadCurve(dividerX, toY, dividerX, toY - cornerRadius),\n lineTo(dividerX, toY - options.arrow.threshold + options.arrow.marginY)\n )\n } else {\n cmds.push(\n lineTo(dividerX - cornerRadius, fromY),\n quadCurve(dividerX, fromY, dividerX, fromY - cornerRadius),\n lineTo(dividerX, toY - options.arrow.threshold + options.arrow.marginY)\n )\n }\n } else if (to.isBelow) {\n if (fromY > to.bounds.y + to.bounds.h) {\n // curl around\n cmds.push(\n lineTo(dividerX - options.arrow.marginX - r1, fromY),\n quadCurve(\n dividerX - options.arrow.marginX,\n fromY,\n dividerX - options.arrow.marginX,\n fromY - r1\n ),\n lineTo(dividerX - options.arrow.marginX, toY + r1),\n quadCurve(\n dividerX - options.arrow.marginX,\n toY,\n dividerX - options.arrow.marginX + r1,\n toY\n ),\n lineTo(dividerX - cornerRadius, toY),\n quadCurve(dividerX, toY, dividerX, toY + cornerRadius),\n lineTo(dividerX, toY + options.arrow.threshold - options.arrow.marginY)\n )\n } else {\n cmds.push(\n lineTo(dividerX - cornerRadius, fromY),\n quadCurve(dividerX, fromY, dividerX, fromY + cornerRadius),\n lineTo(dividerX, toY + options.arrow.threshold - options.arrow.marginY)\n )\n }\n } else if (fromY < toY) {\n cmds.push(\n lineTo(dividerX - r0, fromY),\n quadCurve(dividerX, fromY, dividerX, fromY + r1),\n lineTo(dividerX, toY - r1),\n quadCurve(dividerX, toY, dividerX + r1, toY),\n lineTo(toX, toY)\n )\n } else {\n cmds.push(\n lineTo(dividerX - Math.min(r0, r1), fromY),\n quadCurve(dividerX, fromY, dividerX, fromY - Math.min(r0, r1)),\n lineTo(dividerX, toY + r1),\n quadCurve(dividerX, toY, dividerX + r1, toY),\n lineTo(toX, toY)\n )\n }\n\n return join(cmds)\n}\n","import {rgba, useTheme} from '@sanity/ui'\nimport {useMemo} from 'react'\nimport {ConnectorOptions, mapConnectorToLine, Rect} from '../_lib/connector'\nimport {arrowPath} from './draw/arrowPath'\nimport {drawConnectorPath} from './draw/connectorPath'\n\nexport function ConnectorPath(props: {\n from: {bounds: Rect; element: Rect}\n to: {bounds: Rect; element: Rect}\n options: ConnectorOptions\n}) {\n const {from, options, to} = props\n const {strokeWidth} = options.path\n const theme = useTheme()\n\n const line = useMemo(() => mapConnectorToLine(options, {from, to}), [from, options, to])\n\n return (\n <>\n <path\n d={drawConnectorPath(options, line)}\n stroke={theme.sanity.color.base.bg}\n strokeWidth={strokeWidth + 4}\n />\n\n <path\n d={drawConnectorPath(options, line)}\n stroke={rgba(theme.sanity.color.base.border, 0.5)}\n strokeWidth={strokeWidth}\n />\n\n {line.from.isAbove && (\n <path\n d={arrowPath(\n options,\n line.from.x + options.arrow.marginX,\n line.from.bounds.y - options.arrow.threshold + options.arrow.marginY,\n -1\n )}\n stroke={theme.sanity.color.base.border}\n strokeWidth={strokeWidth}\n />\n )}\n\n {line.from.isBelow && (\n <path\n d={arrowPath(\n options,\n line.from.x + options.arrow.marginX,\n line.from.bounds.y +\n line.from.bounds.h +\n options.arrow.threshold -\n options.arrow.marginY,\n 1\n )}\n stroke={theme.sanity.color.base.border}\n strokeWidth={strokeWidth}\n />\n )}\n </>\n )\n}\n","import {Fragment, useEffect, useState} from 'react'\nimport {Connector, ConnectorOptions} from '../_lib/connector'\nimport {ConnectorPath} from './ConnectorPath'\n\nconst DEBUG = false\n\nconst options: ConnectorOptions = {\n arrow: {\n marginX: 10.5,\n marginY: 5,\n size: 4,\n threshold: 16.5,\n },\n divider: {\n offsetX: -10.5,\n },\n path: {\n cornerRadius: 3,\n marginY: 10.5,\n strokeWidth: 1,\n },\n}\n\nexport function AssistConnectorsOverlay(props: {connectors: Connector[]}) {\n const {connectors} = props\n // const zIndexes = connectors.map((connector) => {\n // const zIndex = connector.from.payload?.zIndex\n\n // if (typeof zIndex === 'number') {\n // return zIndex\n // }\n\n // return 1\n // })\n const [, setRedraw] = useState(false)\n useEffect(() => {\n // hacky workaround to force redraw for connectors on initial render\n // this seem to improve initial measurements of elements\n setRedraw(true)\n }, [])\n\n // const zIndex = zIndexes.length ? Math.max(...zIndexes) : 1\n\n return (\n <>\n <svg\n fill=\"none\"\n width={window.innerWidth}\n height={window.innerHeight}\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n pointerEvents: 'none',\n zIndex: 150,\n // zIndex,\n }}\n >\n {connectors.map((connector) => (\n <ConnectorPath\n from={connector.from}\n key={connector.key}\n options={options}\n to={connector.to}\n />\n ))}\n </svg>\n {DEBUG &&\n connectors.map(({key, from, to}) => {\n return (\n <Fragment key={key}>\n <div\n style={{\n position: 'fixed',\n top: from.bounds.y,\n left: from.bounds.x,\n width: from.bounds.w,\n height: from.bounds.h,\n pointerEvents: 'none',\n overflow: 'hidden',\n outline: '1px dotted red',\n outlineOffset: -1,\n zIndex: 10000000 - 1,\n }}\n >\n <div\n style={{\n position: 'absolute',\n top: from.element.y - from.bounds.y,\n left: from.element.x - from.bounds.x,\n width: from.element.w,\n height: from.element.h,\n border: '1px solid red',\n boxSizing: 'border-box',\n }}\n />\n </div>\n\n <div\n style={{\n position: 'fixed',\n top: to.bounds.y,\n left: to.bounds.x,\n width: to.bounds.w,\n height: to.bounds.h,\n pointerEvents: 'none',\n overflow: 'hidden',\n outline: '1px dotted teal',\n outlineOffset: -1,\n zIndex: 10000000 - 1,\n }}\n >\n <div\n style={{\n position: 'absolute',\n top: to.element.y - to.bounds.y,\n left: to.element.x - to.bounds.x,\n width: to.element.w,\n height: to.element.h,\n border: '1px solid teal',\n boxSizing: 'border-box',\n }}\n />\n </div>\n </Fragment>\n )\n })}\n </>\n )\n}\n","import {SanityDocument} from 'sanity'\nimport {PortableTextBlock, PortableTextMarkDefinition, PortableTextSpan} from '@portabletext/types'\n\n//id prefixes\nexport const legacyAssistDocumentIdPrefix = 'sanity.ai.'\n\nexport const legacyAssistDocumentTypeName = 'sanity.ai.docType' as const\nconst aiFieldTypeName = 'sanity.ai.docType.field' as const\nconst instructionTypeName = 'sanity.ai.field.instruction' as const\n\nconst userInputTypeName = 'sanity.ai.prompt.userInput' as const\nconst promptContextTypeName = 'sanity.ai.prompt.context' as const\nconst fieldReferenceTypeName = 'sanity.ai.prompt.fieldRef' as const\n\nexport const legacyContextDocumentTypeName = 'ai.instruction.context' as const\n\nexport const legacyAssistStatusDocumentTypeName = 'sanity.ai.instructionStatus' as const\n\nexport interface FieldPrompts {\n _key: string\n _type: typeof aiFieldTypeName\n path?: string\n instructions?: LegacyInstruction[]\n}\n\nexport interface LegacyAssistDocument extends SanityDocument {\n fields: FieldPrompts[]\n}\n\nexport interface LegacyFieldRef extends PortableTextMarkDefinition {\n _type: typeof fieldReferenceTypeName\n path?: string\n}\n\nexport interface LegacyContextBlock {\n _type: typeof promptContextTypeName\n reference?: {\n _type: 'reference'\n _ref?: string\n }\n}\n\nexport interface LegacyUserInputBlock {\n _type: typeof userInputTypeName\n _key: string\n message?: string\n description?: string\n}\n\nexport type LegacyPromptTextBlock = PortableTextBlock<\n never,\n PortableTextSpan | LegacyFieldRef | LegacyUserInputBlock | LegacyContextBlock,\n 'normal',\n never\n>\n\nexport type LegacyPromptBlock =\n | LegacyPromptTextBlock\n | LegacyFieldRef\n | LegacyContextBlock\n | LegacyUserInputBlock\n\nexport interface LegacyInstruction {\n _key: string\n _type: typeof instructionTypeName\n prompt?: LegacyPromptBlock[]\n\n icon?: string\n userId?: string\n title?: string\n placeholder?: string\n}\n","import {SanityClient, SanityDocument, useClient} from 'sanity'\nimport {useCallback, useEffect, useState} from 'react'\nimport {Box, Button, Card, Dialog, Spinner, Stack, Text, useToast} from '@sanity/ui'\nimport {CheckmarkIcon} from '@sanity/icons'\nimport {\n LegacyAssistDocument,\n legacyAssistDocumentIdPrefix,\n legacyAssistDocumentTypeName,\n legacyAssistStatusDocumentTypeName,\n LegacyContextBlock,\n legacyContextDocumentTypeName,\n LegacyFieldRef,\n LegacyPromptBlock,\n LegacyPromptTextBlock,\n LegacyUserInputBlock,\n} from '../legacy-types'\nimport {assistDocumentId} from '../helpers/ids'\nimport {\n assistDocumentIdPrefix,\n assistDocumentTypeName,\n AssistField,\n assistFieldTypeName,\n contextDocumentTypeName,\n fieldReferenceTypeName,\n InlinePromptBlock,\n instructionContextTypeName,\n instructionTypeName,\n PromptBlock,\n userInputTypeName,\n} from '../types'\nimport {PortableTextSpan} from '@portabletext/types'\nimport {pluginTitle} from '../constants'\n\nconst NO_ASSIST_DOCS: LegacyAssistDocument[] = []\nconst NO_CONTEXT_DOCS: SanityDocument[] = []\nconst NO_IDS: string[] = []\n\ninterface MigratedContextDoc {\n _id: string\n _alphaId: string\n}\n\ntype Task = (subtaskProgress: (percentage: number) => void) => Promise<void>\n\nexport function AlphaMigration() {\n const [alphaAssistDocs, setAlphaAssistDocs] = useState(NO_ASSIST_DOCS)\n const [contextDocs, setContextDocs] = useState(NO_CONTEXT_DOCS)\n const [staleStatusDocIds, setStaleStatusDocs] = useState(NO_IDS)\n const [error, setError] = useState<Error | undefined>(undefined)\n const [progress, setProgress] = useState<number | undefined>(undefined)\n const toast = useToast()\n const client = useClient({apiVersion: '2023-06-01'})\n\n useEffect(() => {\n let canUpdate = true\n client\n .fetch<{\n assistDocs?: LegacyAssistDocument[]\n staleStatusDocIds?: string[]\n contextDocs?: SanityDocument[]\n }>(\n `\n {\n \"assistDocs\": *[_type==\"${legacyAssistDocumentTypeName}\"],\n \"staleStatusDocIds\": *[_type==\"${legacyAssistStatusDocumentTypeName}\"]._id,\n \"contextDocs\": *[_type==\"${legacyContextDocumentTypeName}\"],\n }\n `\n )\n .then((result) => {\n if (!canUpdate || !result) {\n return\n }\n setAlphaAssistDocs(result?.assistDocs ?? NO_ASSIST_DOCS)\n setStaleStatusDocs(result?.staleStatusDocIds ?? NO_IDS)\n setContextDocs(result?.contextDocs ?? NO_CONTEXT_DOCS)\n })\n return () => {\n canUpdate = false\n }\n }, [client, setAlphaAssistDocs, setStaleStatusDocs, setContextDocs])\n\n const convert = useCallback(async () => {\n try {\n setProgress(0.0001)\n\n const tasks: Task[] = [\n () => convertContextDocs(client, contextDocs),\n (subtaskProgress) => deleteDocs(client, staleStatusDocIds, subtaskProgress),\n (subtaskProgress) => convertDocs(client, alphaAssistDocs, subtaskProgress),\n (subtaskProgress) =>\n deleteDocs(\n client,\n contextDocs.map((d) => d._id),\n subtaskProgress\n ),\n ]\n\n const taskSize = 1 / tasks.length\n for (let i = 0; i < tasks.length; i++) {\n const startProgress = i / tasks.length\n await tasks[i]((subProgress) => setProgress(startProgress + subProgress * taskSize))\n setProgress((i + 1) / tasks.length)\n }\n\n setProgress(1)\n setAlphaAssistDocs(NO_ASSIST_DOCS)\n setContextDocs(NO_CONTEXT_DOCS)\n setStaleStatusDocs(NO_IDS)\n toast.push({\n title: `Converted instructions to new format.`,\n status: 'success',\n closable: true,\n })\n } catch (e: any) {\n console.error(e)\n toast.push({\n title: `An error occurred`,\n status: 'error',\n closable: true,\n })\n setError(e)\n setProgress(undefined)\n }\n }, [contextDocs, client, alphaAssistDocs, staleStatusDocIds, setProgress, toast])\n\n if (\n (alphaAssistDocs.length || staleStatusDocIds.length || contextDocs.length) &&\n (!progress || progress < 1)\n ) {\n return (\n <Dialog id=\"outdated-assist-docs\" header={pluginTitle}>\n <Card padding={3}>\n <Stack space={4} style={{maxWidth: 500}}>\n <Text size={1}>\n It seems like this workspace contains documents from an{' '}\n <strong>older version of {pluginTitle}</strong>.\n </Text>\n <Text size={1}>Cleanup is required.</Text>\n {error ? (\n <Card padding={2} tone=\"critical\" border>\n <Text size={1}>An error occurred. See console for details.</Text>{' '}\n </Card>\n ) : null}\n <Button\n icon={\n progress ? (\n <Box style={{marginTop: 5}}>\n <Spinner />\n </Box>\n ) : (\n CheckmarkIcon\n )\n }\n disabled={!!progress}\n text={progress ? `${Math.floor(progress * 100)}%` : 'Ok, convert to new format!'}\n tone=\"primary\"\n onClick={convert}\n />\n </Stack>\n </Card>\n </Dialog>\n )\n }\n\n return null\n}\n\nasync function deleteDocs(\n client: SanityClient,\n ids: string[],\n updateProgress: (percentage: number) => void\n) {\n const chunkSize = 50\n for (let i = 0; i < ids.length; i += chunkSize) {\n const progressCount = Math.min(ids.length, i + chunkSize)\n const chunk = ids.slice(i, progressCount)\n const trans = client.transaction()\n chunk.forEach((id) => trans.delete(id))\n await trans.commit()\n updateProgress(progressCount / ids.length)\n }\n}\n\nasync function convertContextDocs(client: SanityClient, docs: SanityDocument[]) {\n const trans = client.transaction()\n\n for (const doc of docs) {\n const {_id, _type, ...rest} = doc\n trans.createOrReplace({\n ...rest,\n _id: `port.${_id}`,\n _alphaId: _id,\n _type: contextDocumentTypeName,\n })\n }\n\n await trans.commit()\n}\n\nasync function convertDocs(\n client: SanityClient,\n docs: LegacyAssistDocument[],\n updateProgress: (percentage: number) => void\n) {\n const chunkSize = 10\n for (let i = 0; i < docs.length; i += chunkSize) {\n const progressCount = Math.min(docs.length, i + chunkSize)\n const chunk = docs.slice(i, progressCount)\n\n const trans = client.transaction()\n const contextDocs: MigratedContextDoc[] = await client.fetch(\n `*[_type==\"${contextDocumentTypeName}\" && _alphaId != null]{_id, _alphaId}`\n )\n\n chunk.forEach((oldDoc) => {\n const documentType = oldDoc._id.replace(\n new RegExp(`^(${legacyAssistDocumentIdPrefix}|${assistDocumentIdPrefix})`),\n ''\n )\n\n const id = assistDocumentId(documentType)\n\n const fields: AssistField[] = (oldDoc.fields ?? [])\n .filter((field) => field.instructions?.length)\n .map((oldField) => {\n const instructions = (oldField.instructions ?? []).map((inst) => {\n // eslint-disable-next-line max-nested-callbacks\n const prompt = (inst.prompt ?? []).map((block) => {\n return mapBlock(block, contextDocs) as PromptBlock\n })\n return {\n ...inst,\n _type: instructionTypeName,\n prompt,\n }\n })\n return {\n ...oldField,\n _type: assistFieldTypeName,\n instructions,\n }\n })\n\n if (fields.length) {\n trans.createOrReplace({\n _id: id,\n _type: assistDocumentTypeName,\n fields,\n })\n }\n trans.delete(oldDoc._id)\n })\n await trans.commit()\n updateProgress(progressCount / docs.length)\n }\n}\n\ntype Blocks = LegacyPromptBlock | LegacyPromptTextBlock | PortableTextSpan\n\nfunction isFieldRef(block: Blocks): block is LegacyFieldRef {\n return block._type === 'sanity.ai.prompt.fieldRef'\n}\n\nfunction isContext(block: Blocks): block is LegacyContextBlock {\n return block._type === 'sanity.ai.prompt.context'\n}\n\nfunction isUserInput(block: Blocks): block is LegacyUserInputBlock {\n return block._type === 'sanity.ai.prompt.userInput'\n}\n\nfunction isSpan(block: Blocks): block is PortableTextSpan {\n return block._type === 'span'\n}\n\nfunction mapBlock(\n block: Blocks,\n migratedContexts: MigratedContextDoc[]\n): PromptBlock | InlinePromptBlock {\n if (isFieldRef(block)) {\n return {...block, _type: fieldReferenceTypeName}\n }\n if (isUserInput(block)) {\n return {...block, _type: userInputTypeName}\n }\n if (isContext(block)) {\n const newBlock = {\n ...block,\n _type: instructionContextTypeName,\n reference: {\n _type: 'reference',\n _ref:\n migratedContexts.find((c) => c._alphaId === block.reference?._ref)?._id ??\n block.reference?._ref,\n },\n } as const\n return newBlock\n }\n if (isSpan(block)) {\n return block\n }\n const textBlock = block\n return {\n ...textBlock,\n children: (textBlock.children ?? []).map(\n (child) => mapBlock(child, migratedContexts) as InlinePromptBlock\n ),\n }\n}\n","import {useState} from 'react'\nimport {LayoutProps} from 'sanity'\nimport {Connector, ConnectorsProvider} from '../_lib/connector'\nimport {AssistConnectorsOverlay} from '../assistConnectors'\nimport {AssistPluginConfig} from '../plugin'\nimport {AiAssistanceConfigProvider} from './AiAssistanceConfigContext'\nimport {RunInstructionRequest} from '../useApiClient'\nimport {StudioInstruction} from '../types'\nimport {RunInstructionProvider} from './RunInstructionProvider'\nimport {ThemeProvider} from '@sanity/ui'\nimport {AlphaMigration} from './AlphaMigration'\n\nexport interface AIStudioLayoutProps extends LayoutProps {\n config: AssistPluginConfig\n}\n\nexport type RunInstructionArgs = Omit<RunInstructionRequest, 'instructionKey' | 'userText'> & {\n instruction: StudioInstruction\n}\n\nexport function AssistLayout(props: AIStudioLayoutProps) {\n const [connectors, setConnectors] = useState<Connector[]>([])\n const migrate = props.config.alphaMigration ?? true\n\n return (\n <AiAssistanceConfigProvider config={props.config}>\n {migrate ? <AlphaMigration /> : null}\n <RunInstructionProvider>\n <ConnectorsProvider onConnectorsChange={setConnectors}>\n {props.renderDefault(props)}\n <ThemeProvider tone=\"default\">\n <AssistConnectorsOverlay connectors={connectors} />\n </ThemeProvider>\n </ConnectorsProvider>\n </RunInstructionProvider>\n </AiAssistanceConfigProvider>\n )\n}\n","import {InputProps, isArraySchemaType, PatchEvent, unset} from 'sanity'\nimport {ErrorInfo, PropsWithChildren, useCallback, useMemo, useState} from 'react'\nimport {Box, Button, Card, ErrorBoundary, Flex, Stack, Text} from '@sanity/ui'\nimport {isPortableTextArray} from '../helpers/typeUtils'\nimport styled from 'styled-components'\n\nconst WrapPreCard = styled(Card)`\n & pre {\n white-space: pre-wrap !important;\n }\n`\n\nexport function SafeValueInput(props: InputProps) {\n return (\n <ErrorWrapper onChange={props.onChange}>\n <PteValueFixer {...props} />\n </ErrorWrapper>\n )\n}\n\nexport function ErrorWrapper(\n props: PropsWithChildren<{onChange: (patchEvent: PatchEvent) => void}>\n) {\n const {onChange} = props\n const [error, setError] = useState<Error | undefined>()\n\n const catchError = useCallback(\n (params: {error: Error; info: ErrorInfo}) => {\n setError(params.error)\n },\n [setError]\n )\n\n const unsetValue = useCallback(() => onChange(PatchEvent.from(unset())), [onChange])\n const dismiss = useCallback(() => setError(undefined), [])\n const catcher = <ErrorBoundary onCatch={catchError}>{props.children}</ErrorBoundary>\n\n return error ? (\n <Card border tone=\"critical\" padding={2} contentEditable={false}>\n <Stack space={3}>\n <Text muted weight=\"semibold\">\n An error occurred.\n </Text>\n\n <WrapPreCard flex={1} padding={2} tone=\"critical\" border>\n {catcher}\n </WrapPreCard>\n\n <Flex width=\"fill\" flex={1} gap={3}>\n <Box flex={1}>\n <Button text=\"Dismiss\" onClick={dismiss} tone=\"primary\" />\n </Box>\n <Button text=\"Unset value\" onClick={unsetValue} tone=\"critical\" />\n </Flex>\n </Stack>\n </Card>\n ) : (\n catcher\n )\n}\n\nfunction PteValueFixer(props: InputProps) {\n const isPortableText = useMemo(\n () => isArraySchemaType(props.schemaType) && isPortableTextArray(props.schemaType),\n [props.schemaType]\n )\n const value = props.value\n if (isPortableText && value && !(value as any[]).length) {\n return props.renderDefault({...props, value: undefined})\n }\n\n return props.renderDefault(props)\n}\n","import {BlockProps, PatchEvent, useFormCallbacks} from 'sanity'\nimport {useAssistPresence} from '../presence/useAssistPresence'\nimport {Box, Flex} from '@sanity/ui'\nimport {ErrorWrapper} from '../components/SafeValueInput'\nimport {useCallback} from 'react'\nimport {AiFieldPresence} from '../presence/AiFieldPresence'\n\nexport function AssistFormBlock(props: BlockProps) {\n const presence = useAssistPresence(props.path, true)\n const {onChange} = useFormCallbacks()\n const key = props.value._key\n const localOnChange = useCallback(\n (patchEvent: PatchEvent) => {\n if (!key) {\n return\n }\n onChange(PatchEvent.from(patchEvent).prefixAll({_key: key}))\n },\n [onChange, key]\n )\n return (\n <ErrorWrapper onChange={localOnChange}>\n <Flex align=\"center\" justify=\"space-between\">\n <Box flex={1}>{props.renderDefault(props)}</Box>\n {presence.map((pre) => (\n <AiFieldPresence key={pre.lastActiveAt} presence={pre} />\n ))}\n </Flex>\n </ErrorWrapper>\n )\n}\n","import {ItemProps} from 'sanity'\nimport {useAssistPresence} from '../presence/useAssistPresence'\nimport {Box, Flex} from '@sanity/ui'\nimport {AiFieldPresence} from '../presence/AiFieldPresence'\n\nexport function AssistItem(props: ItemProps) {\n const {path} = props\n const presence = useAssistPresence(path, true)\n\n return (\n <Flex align=\"center\" width=\"fill\" style={{position: 'relative'}}>\n <Box flex={1}>{props.renderDefault({...props})}</Box>\n {presence.map((pre) => (\n <Box key={pre.user.id} style={{position: 'absolute', right: 35}}>\n <AiFieldPresence presence={pre} />\n </Box>\n ))}\n </Flex>\n )\n}\n","import {ArrowLeftIcon} from '@sanity/icons'\nimport {Button} from '@sanity/ui'\nimport {useCallback} from 'react'\nimport {instructionParam} from '../../../types'\nimport {useDocumentPane} from 'sanity/desk'\nimport {aiInspectorId} from '../../../assistInspector/constants'\n\nexport function BackToInstructionListLink() {\n const {openInspector} = useDocumentPane()\n\n const goBack = useCallback(\n () => openInspector(aiInspectorId, {[instructionParam]: undefined as any}),\n [openInspector]\n )\n\n return (\n <div>\n <Button\n as=\"a\"\n fontSize={1}\n icon={ArrowLeftIcon}\n mode=\"bleed\"\n padding={1}\n space={2}\n onClick={goBack}\n text=\" Instructions\"\n textAlign=\"left\"\n />\n </div>\n )\n}\n","import {\n assistFieldTypeName,\n AssistInspectorRouteParams,\n AssistDocument,\n documentRootKey,\n fieldPathParam,\n AssistField,\n instructionParam,\n} from '../../types'\nimport {useEffect, useMemo, useRef} from 'react'\nimport {\n FormCallbacksProvider,\n FormCallbacksValue,\n FormInput,\n insert,\n KeyedSegment,\n ObjectInputProps,\n ObjectSchemaType,\n Path,\n SchemaType,\n set,\n setIfMissing,\n stringToPath,\n typed,\n useFormCallbacks,\n useSchema,\n} from 'sanity'\nimport {BackToInstructionListLink} from './instruction/BackToInstructionsLink'\nimport {useAiPaneRouter} from '../../assistInspector/helpers'\nimport {SelectedFieldContextProvider, SelectedFieldContextValue} from './SelectedFieldContext'\nimport {Stack} from '@sanity/ui'\nimport {documentTypeFromAiDocumentId} from '../../helpers/ids'\n\nconst EMPTY_FIELDS: AssistField[] = []\n\nexport function AssistDocumentForm(props: ObjectInputProps) {\n const {onChange} = props\n const value = props.value as AssistDocument | undefined\n const id = value?._id\n const fields = value?.fields\n\n const targetDocumentType = useMemo(() => {\n if (!id) {\n return undefined\n }\n return documentTypeFromAiDocumentId(id)\n }, [id])\n\n const {params, setParams} = useAiPaneRouter()\n const pathKey = params[fieldPathParam]\n const instruction = params[instructionParam]\n\n const activeKey = useMemo(\n () => (fields ?? EMPTY_FIELDS).find((f) => f.path === pathKey)?._key,\n [fields, pathKey]\n )\n\n const activePath: Path | undefined = useMemo(() => {\n if (!activeKey) {\n return undefined\n }\n const base = ['fields', {_key: activeKey}]\n return instruction ? [...base, 'instructions', {_key: instruction}] : base\n }, [activeKey, instruction])\n\n const schema = useSchema()\n const documentSchema: ObjectSchemaType | undefined = useMemo(() => {\n if (!targetDocumentType) {\n return undefined\n }\n return schema.get(targetDocumentType) as ObjectSchemaType\n }, [schema, targetDocumentType])\n\n const fieldSchema = useSelectedSchema(pathKey, documentSchema)\n const context: SelectedFieldContextValue = useMemo(\n () => ({\n documentSchema,\n fieldSchema: fieldSchema ?? documentSchema,\n }),\n [fieldSchema, documentSchema]\n )\n\n const title = value?.title\n\n useEffect(() => {\n if (!title && documentSchema && !id?.startsWith('drafts.')) {\n onChange(set(documentSchema.title ?? documentSchema.name, ['title']))\n }\n }, [title, documentSchema, onChange, id])\n\n const fieldExists = !!fields?.some((f) => f._key === pathKey)\n\n const {onPathOpen, ...formCallbacks} = useFormCallbacks()\n\n const newCallbacks: FormCallbacksValue = useMemo(\n () => ({\n ...formCallbacks,\n onPathOpen: (path) => {\n if (!instruction && path.length === 4 && path[2] === 'instructions') {\n setParams(\n typed<AssistInspectorRouteParams>({\n ...params,\n [instructionParam]: (path[3] as KeyedSegment)?._key,\n }) as Record<keyof AssistInspectorRouteParams, string | undefined>\n )\n onPathOpen([])\n } else {\n setTimeout(() => onPathOpen(path), 0)\n }\n },\n }),\n [formCallbacks, onPathOpen, params, setParams, instruction]\n )\n\n useEffect(() => {\n if (activePath && !instruction) {\n onPathOpen([])\n }\n }, [activePath, instruction, onPathOpen])\n\n return (\n <SelectedFieldContextProvider value={context}>\n <Stack space={5}>\n <FieldsInitializer\n key={pathKey}\n pathKey={pathKey}\n activePath={activePath}\n fieldExists={fieldExists}\n onChange={onChange}\n />\n {instruction && <BackToInstructionListLink />}\n\n {activePath && (\n <FormCallbacksProvider {...newCallbacks}>\n <div style={{lineHeight: '1.25em'}}>\n <FormInput {...props} absolutePath={activePath} />\n </div>\n </FormCallbacksProvider>\n )}\n\n {!activePath && props.renderDefault(props)}\n </Stack>\n </SelectedFieldContextProvider>\n )\n}\n\nfunction useSelectedSchema(\n fieldPath: string | undefined,\n documentSchema: ObjectSchemaType | undefined\n): SchemaType | undefined {\n return useMemo(() => {\n if (!fieldPath) {\n return undefined\n }\n if (fieldPath === documentRootKey) {\n return documentSchema\n }\n\n const path = stringToPath(fieldPath)\n let currentSchema: ObjectSchemaType | undefined = documentSchema\n for (let i = 0; i < path.length; i++) {\n const segment = path[i]\n const field = currentSchema?.fields.find((f) => f.name === segment)\n if (!field) {\n return undefined\n }\n if (i === path.length - 1) {\n return field.type\n }\n if (field.type.jsonType !== 'object') {\n return undefined\n }\n currentSchema = field.type\n }\n return currentSchema\n }, [documentSchema, fieldPath])\n}\n\nfunction FieldsInitializer({\n pathKey,\n activePath,\n fieldExists,\n onChange,\n}: {\n pathKey?: string\n activePath?: Path\n fieldExists: boolean\n onChange: ObjectInputProps['onChange']\n}) {\n // need this to not fire onChange twice in React strict mode\n const initialized = useRef(false)\n useEffect(() => {\n if (initialized.current || fieldExists || activePath || !pathKey) {\n return\n }\n onChange([\n setIfMissing([], ['fields']),\n insert(\n [\n typed<AssistField>({\n _key: pathKey,\n _type: assistFieldTypeName,\n path: pathKey,\n }),\n ],\n 'after',\n ['fields', -1]\n ),\n ])\n initialized.current = true\n }, [activePath, onChange, pathKey, fieldExists])\n\n return null\n}\n","import {FieldError, FieldMember, FieldSetMember, ObjectMember} from 'sanity'\n\nexport function findFieldMember(\n members: ObjectMember[],\n fieldName: string\n): FieldMember | FieldError | undefined {\n return members.find(\n (m): m is FieldMember | FieldError =>\n (m.kind === 'field' && m.name === fieldName) ||\n (m.kind === 'error' && m.fieldName === fieldName)\n )\n}\n\nexport function findFieldsetMember(\n members: ObjectMember[],\n fieldsetName: string\n): FieldSetMember | undefined {\n return members.find(\n (m): m is FieldSetMember => m.kind === 'fieldSet' && m.fieldSet.name === fieldsetName\n )\n}\n","import {FieldError, FieldMember, ObjectInputMember, ObjectInputProps} from 'sanity'\nimport {findFieldMember, findFieldsetMember} from '../helpers'\nimport {Box, Flex, Stack, Text} from '@sanity/ui'\nimport {useId, useMemo} from 'react'\n\nexport function InstructionInput(props: ObjectInputProps) {\n return (\n <Stack space={[4, 4, 4, 5]}>\n <NameField {...props} />\n <ShareField {...props} />\n <PromptField {...props} />\n </Stack>\n )\n}\n\nfunction PromptField(props: ObjectInputProps) {\n const promptMember = findFieldMember(props.members, 'prompt')\n return promptMember ? <ObjectInputMember {...props} member={promptMember} /> : null\n}\n\nconst NONE: (FieldMember | FieldError)[] = []\n\nfunction NameField(props: ObjectInputProps) {\n const fieldsetMember = findFieldsetMember(props.members, 'appearance')\n const titleId = useId()\n\n const members = fieldsetMember?.fieldSet.members ?? NONE\n const iconMember = findFieldMember(members, 'icon')\n const titleMember = findFieldMember(members, 'title')\n\n const titlePlaceholder = 'Untitled'\n const moddedTitleMember = useMemo(() => {\n if (!titleMember) {\n return undefined\n }\n if (titleMember.kind === 'error') {\n return titleMember\n }\n return {\n ...titleMember,\n field: {\n ...titleMember?.field,\n schemaType: {\n ...titleMember?.field.schemaType,\n placeholder: titlePlaceholder,\n },\n },\n }\n }, [titleMember, titlePlaceholder])\n\n return (\n <Stack space={5}>\n <Stack space={2}>\n <Flex gap={1}>\n <Text as=\"label\" weight=\"semibold\" size={1} htmlFor={titleId}>\n Name\n </Text>\n </Flex>\n\n <Text muted size={1}>\n How this instruction appears in menus\n </Text>\n\n <Flex align=\"center\">\n {iconMember && (\n <Box flex=\"none\">\n <ObjectInputMember {...props} member={iconMember} />\n </Box>\n )}\n {moddedTitleMember && (\n <Box flex={1} style={{marginLeft: -1}}>\n <ObjectInputMember {...props} member={moddedTitleMember} />\n </Box>\n )}\n </Flex>\n </Stack>\n </Stack>\n )\n}\n\nfunction ShareField(props: ObjectInputProps) {\n const fieldsetMember = findFieldsetMember(props.members, 'appearance')\n const members = fieldsetMember?.fieldSet.members ?? NONE\n const visibilityMember = findFieldMember(members, 'userId')\n\n return <>{visibilityMember && <ObjectInputMember {...props} member={visibilityMember} />}</>\n}\n","import {FieldProps} from 'sanity'\n\nexport function HiddenFieldTitle(props: FieldProps) {\n return props.renderDefault({...props, title: '', level: props.level - 2, changed: false})\n}\n","import {set, StringInputProps, unset, useCurrentUser} from 'sanity'\nimport {Card, Flex, Switch, Text} from '@sanity/ui'\nimport {useCallback, useId} from 'react'\n\nexport function InstructionVisibility(props: StringInputProps) {\n const {value, onChange} = props\n\n const user = useCurrentUser()\n\n const handleChange = useCallback(() => {\n const newValue = value ? '' : user?.id ?? ''\n onChange(newValue ? set(newValue) : unset())\n }, [onChange, user, value])\n\n const id = useId()\n\n return (\n <Card>\n <Flex gap={2} align=\"flex-start\">\n <div style={{margin: '-3px 0'}}>\n <Switch\n {...props.elementProps}\n id={id}\n value={`${!value}`}\n checked={!value}\n onChange={handleChange}\n disabled={props.elementProps.readOnly}\n />\n </div>\n\n <Text muted size={1} weight=\"medium\">\n <label htmlFor={id}>Make visible to all Studio members</label>\n </Text>\n </Flex>\n </Card>\n )\n}\n","import {icons} from '@sanity/icons'\nimport {set, StringInputProps} from 'sanity'\nimport {Button, Menu, MenuButton, MenuItem} from '@sanity/ui'\nimport {ElementType, ReactNode, useCallback, useId, useMemo} from 'react'\n\nexport function IconInput(props: StringInputProps) {\n const {value, onChange} = props\n const id = useId()\n const items = useMemo(\n () =>\n Object.entries(icons).map(([key, icon]) => (\n <IconItem key={key} iconKey={key} icon={icon} onChange={onChange} />\n )),\n [onChange]\n )\n\n const selectedIcon = useMemo(() => getIcon(value), [value])\n\n return (\n <MenuButton\n button={\n <Button icon={selectedIcon} title=\"Select icon\" padding={3} mode=\"ghost\" radius={1} />\n }\n id={id}\n menu={<Menu style={{maxHeight: 300}}>{items}</Menu>}\n popover={{portal: true}}\n />\n )\n}\n\nfunction IconItem({\n icon,\n iconKey: key,\n onChange,\n}: {\n iconKey: string\n icon: ElementType | ReactNode\n onChange: StringInputProps['onChange']\n}) {\n const onClick = useCallback(() => onChange(set(key)), [onChange, key])\n return <MenuItem icon={icon} title={key} text={key} onClick={onClick} />\n}\n\nexport function getIcon(iconName?: string) {\n return Object.entries(icons).find(([key]) => key === iconName)?.[1] ?? icons.sparkles\n}\n","import {SearchIcon} from '@sanity/icons'\nimport {Autocomplete, Box, Breadcrumbs, Card, Flex, Text} from '@sanity/ui'\nimport {createElement, useCallback, useMemo} from 'react'\nimport {FieldRef, getFieldRefs, getFieldRefsWithDocument} from './helpers'\nimport {ObjectSchemaType} from 'sanity'\nimport {isType} from '../helpers/typeUtils'\n\ninterface FieldSelectorProps {\n id: string\n schemaType: ObjectSchemaType\n fieldPath?: string\n onSelect: (path: string) => void\n includeDocument?: boolean\n}\n\nexport function FieldAutocomplete(props: FieldSelectorProps) {\n const {id, schemaType, fieldPath, onSelect, includeDocument} = props\n\n const fieldNames = useMemo(() => {\n if (includeDocument) {\n return getFieldRefsWithDocument(schemaType)\n }\n return getFieldRefs(schemaType)\n }, [schemaType, includeDocument])\n const currentField = useMemo(\n () => fieldNames.find((f) => f.key === fieldPath),\n [fieldPath, fieldNames]\n )\n\n const autocompleteOptions = useMemo(\n () => fieldNames.map((field) => ({value: field.key, field})),\n [fieldNames]\n )\n\n const renderOption = useCallback((option: {value: string; field: FieldRef}) => {\n const {value, field} = option\n\n if (!value) {\n return (\n <Card as=\"button\" padding={3} radius={1}>\n <Text accent size={1}>\n {option.value}\n </Text>\n </Card>\n )\n }\n\n if (isType(field.schemaType, 'document')) {\n return (\n <Card as=\"button\" padding={3} radius={1}>\n <Text size={1} weight=\"semibold\">\n The entire document\n </Text>\n </Card>\n )\n }\n\n const splitTitle = field.title.split('/')\n return (\n <Card as=\"button\" padding={3} radius={1}>\n <Flex gap={3}>\n <Text size={1}>{createElement(field.icon)}</Text>\n\n <Box flex=\"none\">\n <Breadcrumbs\n separator={\n <Text muted size={1}>\n /\n </Text>\n }\n space={1}\n >\n {splitTitle.slice(0, splitTitle.length - 1).map((pt, i) => (\n // eslint-disable-next-line react/no-array-index-key\n <Text key={i} muted size={1}>\n {pt.trim()}\n </Text>\n ))}\n\n <Text size={1} weight=\"medium\">\n {splitTitle[splitTitle.length - 1]}\n </Text>\n </Breadcrumbs>\n </Box>\n </Flex>\n </Card>\n )\n }, [])\n\n const renderValue = useCallback((value: string, option?: {value: string; field: FieldRef}) => {\n return option?.field.title ?? value\n }, [])\n\n const filterOption = useCallback((query: string, option: {value: string; field: FieldRef}) => {\n const lQuery = query.toLowerCase()\n return (\n option?.value?.toLowerCase().includes(lQuery) ||\n option?.field?.title?.toLowerCase().includes(lQuery)\n )\n }, [])\n\n // const id = useId()\n return (\n <Autocomplete\n fontSize={1}\n icon={currentField ? currentField.icon : SearchIcon}\n onChange={onSelect}\n openButton\n id={id}\n options={autocompleteOptions}\n placeholder=\"Search for a field\"\n radius={2}\n renderOption={renderOption}\n renderValue={renderValue}\n value={currentField?.key}\n filterOption={filterOption}\n />\n )\n}\n","import {set, StringInputProps} from 'sanity'\nimport {useCallback, useContext, useEffect, useId, useRef} from 'react'\nimport {Box} from '@sanity/ui'\nimport {SelectedFieldContext} from '../SelectedFieldContext'\nimport {FieldAutocomplete} from '../../../assistInspector/FieldAutocomplete'\n\nexport function FieldRefPathInput(props: StringInputProps) {\n const documentSchema = useContext(SelectedFieldContext)?.documentSchema\n const ref = useRef<HTMLDivElement>(null)\n const id = useId()\n const {onChange} = props\n\n useEffect(() => {\n ref.current?.querySelector('input')?.focus()\n }, [])\n\n const onSelect = useCallback((path: string) => onChange(set(path)), [onChange])\n\n if (!documentSchema) {\n return props.renderDefault(props)\n }\n\n return (\n <Box flex={1} style={{minWidth: 200}} ref={ref}>\n <FieldAutocomplete\n id={id}\n schemaType={documentSchema}\n onSelect={onSelect}\n fieldPath={props.value}\n />\n </Box>\n )\n}\n","import {ArrayOfObjectsInputProps, useCurrentUser} from 'sanity'\nimport {useMemo} from 'react'\nimport {StudioInstruction} from '../../types'\n\nexport function InstructionsArrayInput(props: ArrayOfObjectsInputProps) {\n const user = useCurrentUser()\n\n const originalValue = props.value as StudioInstruction[] | undefined\n const originalMembers = props.members\n const value = useMemo(\n () => (originalValue ?? []).filter((v) => !v.userId || v.userId === user?.id),\n [originalValue, user]\n )\n const members = useMemo(\n () =>\n (originalMembers ?? []).filter((v) => {\n if (v.kind === 'error') {\n return true\n }\n const value = v?.item?.value as any\n return !value.userId || value.userId === user?.id\n }),\n [originalMembers, user]\n )\n return props.renderDefault({...props, value, members})\n}\n","import {BlockProps} from 'sanity'\nimport {Box} from '@sanity/ui'\nimport {createContext} from 'react'\n\n// workaround for preview value sometimes lagging behind\nexport const InlineBlockValueContext = createContext<unknown>(undefined)\n\nexport function AssistInlineFormBlock(props: BlockProps) {\n return (\n <InlineBlockValueContext.Provider value={props.value}>\n <Box flex={1}>{props.renderDefault(props)}</Box>\n </InlineBlockValueContext.Provider>\n )\n}\n","import {useContext} from 'react'\nimport {useSelectedField} from '../../assistInspector/helpers'\nimport {Box, Flex, Text} from '@sanity/ui'\nimport {PreviewProps} from 'sanity'\nimport {SelectedFieldContext} from './SelectedFieldContext'\nimport {InlineBlockValueContext} from '../../assistFormComponents/AssistInlineFormBlock'\n\nexport function FieldRefPreview(props: PreviewProps & {path?: string}) {\n const documentSchema = useContext(SelectedFieldContext)?.documentSchema\n const path = (useContext(InlineBlockValueContext) as {path?: string})?.path ?? props.path\n const selectedField = useSelectedField(documentSchema, path)\n return (\n <Flex gap={2} align=\"center\" style={{width: '100%'}}>\n <Flex flex={1} gap={2} align=\"center\" paddingY={3} paddingX={1}>\n {/*<Box>\n <Text>{selectedField?.icon ? createElement(selectedField?.icon) : <CodeIcon />}</Text>\n </Box>*/}\n <Box>\n <Text size={1} textOverflow=\"ellipsis\">\n {selectedField?.title ?? 'Select field'}\n </Text>\n </Box>\n </Flex>\n <>{props.actions}</>\n </Flex>\n )\n}\n","import {ObjectInputProps} from 'sanity'\nimport {Box} from '@sanity/ui'\nimport {useEffect, useRef} from 'react'\n\nexport function HideReferenceChangedBannerInput(props: ObjectInputProps) {\n const ref = useRef<HTMLDivElement>(null)\n\n // hides \"reference was changed\" banner (it is incorrectly flashing because the pane handler does not support the way wie use the assist pane)\n useEffect(() => {\n const parent = ref.current?.closest('[data-testid=\"pane-content\"]')\n if (!parent) {\n return\n }\n const style = document.createElement('style')\n const parentId = `id-${Math.random()}`.replace('.', '-')\n parent.id = parentId\n\n style.innerText = `\n #${parentId} [data-testid=\"reference-changed-banner\"] { display: none; }\n `\n parent.prepend(style)\n }, [ref])\n\n return <Box ref={ref}>{props.renderDefault(props)}</Box>\n}\n","import {defineArrayMember, defineField, defineType} from 'sanity'\nimport {contextDocumentTypeName} from '../types'\nimport {DocumentTextIcon, TokenIcon} from '@sanity/icons'\nimport {HideReferenceChangedBannerInput} from '../components/HideReferenceChangedBannerInput'\n\nexport const contextDocumentSchema = defineType({\n type: 'document',\n name: contextDocumentTypeName,\n title: 'AI context',\n liveEdit: true,\n icon: TokenIcon,\n components: {\n input: HideReferenceChangedBannerInput,\n },\n fields: [\n defineField({\n type: 'string',\n name: 'title',\n title: 'Title',\n }),\n defineField({\n name: 'context',\n type: 'array',\n title: 'Context',\n of: [\n defineArrayMember({\n type: 'block',\n styles: [{title: 'Normal', value: 'normal'}],\n lists: [],\n marks: {\n decorators: [],\n annotations: [],\n },\n }),\n ],\n }),\n ],\n preview: {\n select: {\n title: 'title',\n context: 'context',\n },\n prepare({title, context}) {\n const text = context\n ?.flatMap((block: any) => block?.children)\n .flatMap((child: any) => child?.text?.split(' '))\n .filter(Boolean)\n const words = text?.length ?? 0\n return {\n title,\n subtitle: `Words: ${words}`,\n media: DocumentTextIcon,\n }\n },\n },\n})\n","// Strict ESM env, designed to run outside Node.js in envs that provide WebCrypto (deno, browsers, etc)\n\nexport default function getRandomValues(typedArray) {\n return window.crypto.getRandomValues(typedArray)\n}\n","import getRandomValues from 'get-random-values-esm'\n\n// WHATWG crypto RNG - https://w3c.github.io/webcrypto/Overview.html\nfunction whatwgRNG(length = 16) {\n const rnds8 = new Uint8Array(length)\n getRandomValues(rnds8)\n return rnds8\n}\n\nconst getByteHexTable = (() => {\n let table: string[]\n return () => {\n if (table) {\n return table\n }\n table = []\n for (let i = 0; i < 256; ++i) {\n table[i] = (i + 0x100).toString(16).substring(1)\n }\n return table\n }\n})()\n\nexport function randomKey(length?: number) {\n const table = getByteHexTable()\n return whatwgRNG(length)\n .reduce((str, n) => str + table[n], '')\n .slice(0, length)\n}\n","import {ArrayOfObjectsInputProps, set, typed} from 'sanity'\nimport {Box} from '@sanity/ui'\nimport styled from 'styled-components'\nimport {useEffect} from 'react'\nimport {ContextBlock, FieldRef, PromptBlock, PromptTextBlock, UserInputBlock} from '../../../types'\nimport {randomKey} from '../../../_lib/randomKey'\n\nconst PteMods = styled(Box)`\n & [data-testid='pt-editor__toolbar-card'] > div > div:last-child {\n display: none;\n }\n & [data-testid='pt-editor'] {\n min-height: 300px;\n }\n & [data-testid='pt-editor'] .pt-inline-object * {\n max-width: 400px;\n }\n`\n\nexport function PromptInput(props: ArrayOfObjectsInputProps) {\n // quickfixes the model (converts blocks to inline blocks for alpha customers)\n // backend supports both types, but this prevents \"missing block\" schema errors\n useOnlyInlineBlocks(props)\n return <PteMods>{props.renderDefault(props)}</PteMods>\n}\n\nfunction useOnlyInlineBlocks(props: ArrayOfObjectsInputProps) {\n useEffect(() => {\n let needsFix = false\n const val = ((props.value as PromptBlock[]) ?? []).map((block) => {\n if (block._type === 'block') {\n return block\n }\n\n needsFix = true\n return typed<PromptTextBlock>({\n _key: randomKey(12),\n _type: 'block',\n level: 0,\n markDefs: [],\n style: 'normal',\n children: [block as FieldRef | ContextBlock | UserInputBlock],\n })\n })\n\n if (needsFix) {\n props.onChange(set(val))\n }\n // only run this once when loading the field\n // eslint-disable-next-line\n }, [])\n}\n","import {ArrayFieldProps} from 'sanity'\n\nexport function InstructionsArrayField(props: ArrayFieldProps) {\n return props.renderDefault({\n ...props,\n title: undefined,\n })\n}\n","import {defineArrayMember, defineField, defineType, ObjectSchemaType} from 'sanity'\nimport {\n ArrowRightIcon,\n CodeIcon,\n ComposeIcon,\n icons,\n IconSymbol,\n LockIcon,\n SparklesIcon,\n ThListIcon,\n} from '@sanity/icons'\nimport {\n assistDocumentIdPrefix,\n assistDocumentTypeName,\n assistFieldTypeName,\n assistTasksStatusTypeName,\n fieldReferenceTypeName,\n instructionContextTypeName,\n instructionTaskTypeName,\n instructionTypeName,\n promptTypeName,\n userInputTypeName,\n} from '../types'\nimport {Box, Flex, Stack, Text, Tooltip} from '@sanity/ui'\nimport {getInstructionTitle} from '../helpers/misc'\nimport {AssistDocumentForm} from '../assistDocument/components/AssistDocumentForm'\nimport {InstructionInput} from '../assistDocument/components/instruction/InstructionInput'\nimport {HiddenFieldTitle} from '../assistDocument/components/generic/HiddenFieldTitle'\nimport {InstructionVisibility} from '../assistDocument/components/instruction/appearance/InstructionVisibility'\nimport {IconInput} from '../assistDocument/components/instruction/appearance/IconInput'\nimport {FieldRefPathInput} from '../assistDocument/components/instruction/FieldRefInput'\nimport {InstructionsArrayInput} from '../assistDocument/components/InstructionsArrayInput'\nimport {FieldRefPreview} from '../assistDocument/components/FieldRefPreview'\nimport {createElement} from 'react'\nimport {contextDocumentSchema} from './contextDocumentSchema'\nimport {PromptInput} from '../assistDocument/components/instruction/PromptInput'\nimport {instructionGuideUrl} from '../constants'\nimport {InstructionsArrayField} from '../assistDocument/components/InstructionsArrayField'\nimport {getFieldRefsWithDocument} from '../assistInspector/helpers'\n\nexport const fieldReference = defineType({\n type: 'object',\n name: fieldReferenceTypeName,\n title: 'Document field',\n icon: ThListIcon,\n\n fields: [\n defineField({\n type: 'string',\n name: 'path',\n title: 'Field',\n components: {\n input: FieldRefPathInput,\n },\n validation: (rule) =>\n rule.custom((value, context) => {\n if (!value) {\n return 'Please select a field'\n }\n try {\n const docId = context.document?._id\n if (!docId) {\n return `Field reference cannot be used outside document inspector context. Could not resolve document id.`\n }\n const targetDocType = docId.replace(new RegExp(`^${assistDocumentIdPrefix}`), '')\n const schema = context.schema.get(targetDocType)\n if (!schema) {\n return `Field reference cannot be used outside document inspector context. Could not resolve schema: ${targetDocType}`\n }\n const refs = getFieldRefsWithDocument(schema as ObjectSchemaType)\n const fieldRef = refs.find((r) => r.key === value)\n if (!fieldRef) {\n return `Field with path \"${value}\" does not exist in the schema.`\n }\n return true\n } catch (e) {\n console.error('Failed to resolve field reference', e)\n return 'Invalid field reference.'\n }\n }),\n }),\n ],\n preview: {\n select: {\n path: 'path',\n },\n prepare({path}) {\n return {\n title: path,\n path,\n icon: CodeIcon,\n }\n },\n },\n components: {\n preview: FieldRefPreview,\n },\n options: {\n modal: {\n type: 'popover',\n },\n },\n})\n\nexport const userInput = defineType({\n type: 'object',\n name: userInputTypeName,\n title: 'User input',\n icon: ComposeIcon,\n fields: [\n defineField({\n type: 'string',\n name: 'message',\n title: 'User input title',\n placeholder: 'Provide instruction text',\n description: 'The header above the user input text field',\n validation: (rule) => rule.required(),\n }),\n defineField({\n type: 'text',\n rows: 3,\n name: 'description',\n title: 'User input description',\n description: 'The description above the user input text field',\n }),\n ],\n preview: {\n select: {\n title: 'message',\n },\n },\n options: {\n modal: {\n type: 'popover',\n width: 1,\n },\n },\n})\n\nexport const promptContext = defineType({\n type: 'object',\n name: instructionContextTypeName,\n title: contextDocumentSchema.title,\n icon: contextDocumentSchema.icon,\n fields: [\n defineField({\n type: 'reference',\n name: 'reference',\n to: [{type: contextDocumentSchema.name}],\n title: 'Context',\n description: 'The referenced context will be inserted into the instruction',\n validation: (rule) => rule.required(),\n components: {\n input: function Fix(props) {\n return <Box style={{maxWidth: 300}}>{props.renderDefault(props)}</Box>\n },\n },\n }),\n ],\n preview: {\n select: {\n ref: 'reference._ref',\n title: 'reference.title',\n context: 'reference.context',\n },\n prepare(select) {\n return select.ref\n ? contextDocumentSchema?.preview?.prepare?.(select) ?? select\n : {title: 'No reference selected', media: contextDocumentSchema.icon}\n },\n },\n options: {\n modal: {\n type: 'popover',\n width: 'auto',\n },\n },\n})\n\nexport const prompt = defineType({\n type: 'array',\n name: promptTypeName,\n title: 'Prompt',\n of: [\n defineArrayMember({\n type: 'block',\n styles: [{title: 'Normal', value: 'normal'}],\n lists: [],\n marks: {\n decorators: [],\n annotations: [],\n },\n of: [\n defineArrayMember({\n type: fieldReference.name,\n }),\n defineArrayMember({\n type: promptContext.name,\n }),\n defineArrayMember({\n type: userInput.name,\n }),\n ],\n }),\n /* defineArrayMember({\n type: fieldReference.name,\n }),\n defineArrayMember({\n type: promptContext.name,\n }),\n defineArrayMember({\n type: userInput.name,\n }),*/\n ],\n})\n\nexport const instruction = defineType({\n type: 'object',\n name: instructionTypeName,\n title: 'Instruction',\n fieldsets: [\n {name: 'appearance', title: 'Appearance', options: {collapsible: true, collapsed: true}},\n ],\n preview: {\n select: {\n icon: 'icon',\n title: 'title',\n userId: 'userId',\n },\n prepare: ({icon, title, userId}) => {\n return {\n title,\n icon: icon ? icons[icon as IconSymbol] : SparklesIcon,\n userId,\n }\n },\n },\n components: {\n input: InstructionInput,\n preview: (props: any) => {\n return (\n <Flex gap={3} align=\"center\" padding={2}>\n {props.icon && (\n <Box flex=\"none\">\n <Text size={1}>{createElement(props.icon)}</Text>\n </Box>\n )}\n\n <Stack flex={1} space={2}>\n <Text size={1} textOverflow=\"ellipsis\" weight=\"medium\">\n {getInstructionTitle(props)}\n </Text>\n </Stack>\n\n {props.userId && (\n <Text size={1}>\n <Tooltip\n content={<Text size={1}>Only visible to you</Text>}\n padding={2}\n placement=\"top\"\n portal\n >\n <LockIcon />\n </Tooltip>\n </Text>\n )}\n </Flex>\n )\n },\n },\n fields: [\n defineField({\n type: prompt.name,\n name: 'prompt',\n title: 'Instruction',\n description: (\n <>\n Learn from{' '}\n <a href={instructionGuideUrl} target=\"_blank\" rel=\"noreferrer\">\n our instruction guide <ArrowRightIcon />\n </a>\n </>\n ),\n components: {\n input: PromptInput,\n },\n }),\n defineField({\n type: 'string',\n name: 'icon',\n title: 'Icon',\n fieldset: 'appearance',\n components: {\n field: HiddenFieldTitle,\n input: IconInput,\n },\n }),\n defineField({\n type: 'string',\n name: 'title',\n title: 'Title',\n fieldset: 'appearance',\n components: {\n field: HiddenFieldTitle,\n },\n }),\n defineField({\n type: 'string',\n name: 'userId',\n title: 'Visibility',\n fieldset: 'appearance',\n components: {\n field: HiddenFieldTitle,\n input: InstructionVisibility,\n },\n initialValue: (params, context) => context.currentUser?.id ?? '',\n readOnly: (context) =>\n Boolean(\n context.parent?.createdById && context.parent?.createdById !== context.currentUser?.id\n ),\n }),\n defineField({\n type: 'string',\n name: 'createdById',\n title: 'Created by',\n hidden: true,\n fieldset: 'appearance',\n initialValue: (params, context) => {\n return context.currentUser?.id ?? ''\n },\n }),\n ],\n})\n\nexport const fieldInstructions = defineType({\n type: 'object',\n name: assistFieldTypeName,\n title: 'Field prompt',\n /* components: {\n input: FieldPromptInput,\n },*/\n fields: [\n defineField({\n type: 'string',\n name: 'path',\n title: 'Path',\n readOnly: true,\n hidden: true,\n }),\n defineField({\n type: 'array',\n name: 'instructions',\n title: 'Instructions',\n of: [{type: instruction.name}],\n components: {\n field: InstructionsArrayField,\n input: InstructionsArrayInput,\n },\n }),\n ],\n preview: {\n select: {\n title: 'path',\n },\n },\n})\n\nexport const assistDocumentSchema = defineType({\n //NOTE: this is a document type. Using object here ensures it does not appear in structure menus\n type: 'object',\n //workaround for using object and not document\n ...({liveEdit: true} as any),\n name: assistDocumentTypeName,\n title: 'AI Document',\n\n components: {\n input: AssistDocumentForm,\n field: (props) => {\n return props.renderDefault({...props, title: ''})\n },\n },\n fields: [\n defineField({\n type: 'string',\n name: 'title',\n title: 'Title',\n }),\n defineField({\n type: 'array',\n name: 'fields',\n title: 'Fields',\n of: [{type: fieldInstructions.name}],\n }),\n ],\n preview: {\n select: {\n title: 'title',\n },\n },\n})\n\nexport const instructionTask = defineType({\n type: 'object',\n name: instructionTaskTypeName,\n title: 'Instruction task',\n fields: [\n defineField({\n type: 'string',\n name: 'path',\n title: 'Path',\n }),\n defineField({\n type: 'string',\n name: 'instructionKey',\n title: 'Instruction key',\n }),\n defineField({\n type: 'datetime',\n name: 'started',\n title: 'Started',\n }),\n defineField({\n type: 'datetime',\n name: 'updated',\n title: 'Updated',\n }),\n defineField({\n type: 'string',\n name: 'info',\n title: 'Info',\n }),\n ],\n})\n\nexport const documentInstructionStatus = defineType({\n //NOTE: this is a document type. Using object here ensures it does not appear in structure menus\n type: 'object',\n //workaround for using object and not document\n ...({liveEdit: true} as any),\n name: assistTasksStatusTypeName,\n title: 'Document instruction status',\n fields: [\n defineField({\n type: 'array',\n name: 'tasks',\n title: 'Tasks',\n of: [{type: instructionTask.name}],\n }),\n ],\n})\n","import {\n assistDocumentSchema,\n documentInstructionStatus,\n fieldInstructions,\n fieldReference,\n instruction,\n instructionTask,\n prompt,\n promptContext,\n userInput,\n} from './assistDocumentSchema'\nimport {contextDocumentSchema} from './contextDocumentSchema'\n\nexport const schemaTypes = [\n fieldInstructions,\n assistDocumentSchema,\n prompt,\n fieldReference,\n instruction,\n documentInstructionStatus,\n instructionTask,\n contextDocumentSchema,\n userInput,\n promptContext,\n]\n","import {Path, SchemaType} from 'sanity'\nimport {useMemo} from 'react'\nimport {isAssistSupported} from './assistSupported'\n\nexport function useAssistSupported(path: Path, schemaType: SchemaType) {\n return useMemo(\n () => path.every((p) => typeof p === 'string') && isAssistSupported(schemaType),\n [path, schemaType]\n )\n}\n","import {getPublishedId, ObjectSchemaType, useEditState} from 'sanity'\nimport {useStudioAssistDocument} from './useStudioAssistDocument'\nimport {AssistDocumentContextValue} from '../AssistDocumentContext'\nimport {useMemo} from 'react'\nimport {isDocAssistable} from '../RequestRunInstructionProvider'\nimport {useDocumentPane} from 'sanity/desk'\nimport {useAiPaneRouter} from '../../assistInspector/helpers'\nimport {fieldPathParam} from '../../types'\n\nexport function useAssistDocumentContextValue(\n documentId: string,\n documentSchemaType: ObjectSchemaType\n) {\n const {published, draft} = useEditState(\n getPublishedId(documentId),\n documentSchemaType.name,\n 'low'\n )\n const assistableDocumentId = draft?._id || published?._id || documentId\n const documentIsNew = Boolean(!draft?._id && !published?._id)\n const documentIsAssistable = isDocAssistable(documentSchemaType, published, draft)\n\n const {params} = useAiPaneRouter()\n const selectedPath = params[fieldPathParam]\n const {openInspector, closeInspector, inspector, onChange: documentOnChange} = useDocumentPane()\n\n const assistDocument = useStudioAssistDocument({\n documentId,\n schemaType: documentSchemaType,\n })\n\n const value: AssistDocumentContextValue = useMemo(() => {\n const base = {\n documentId,\n assistableDocumentId,\n documentSchemaType,\n documentIsNew,\n documentIsAssistable,\n openInspector,\n closeInspector,\n inspector,\n documentOnChange,\n selectedPath,\n }\n if (!assistDocument) {\n return {...base, loading: true, assistDocument: undefined}\n }\n return {\n ...base,\n loading: false,\n assistDocument: assistDocument,\n }\n }, [\n assistDocument,\n documentIsAssistable,\n documentId,\n assistableDocumentId,\n documentSchemaType,\n documentIsNew,\n openInspector,\n closeInspector,\n inspector,\n documentOnChange,\n selectedPath,\n ])\n\n return value\n}\n","import {LockIcon} from '@sanity/icons'\nimport {Text, Tooltip} from '@sanity/ui'\n\nexport function PrivateIcon() {\n return (\n <Tooltip\n content={\n <Text size={1} style={{whiteSpace: 'nowrap'}}>\n Only visible to you\n </Text>\n }\n fallbackPlacements={['bottom']}\n padding={2}\n placement=\"top\"\n portal\n >\n <LockIcon />\n </Tooltip>\n )\n}\n","import {createContext, useEffect, useMemo, useState} from 'react'\nimport {InputProps, pathToString} from 'sanity'\nimport {getCaptionFieldOption} from '../helpers/typeUtils'\nimport {useAssistDocumentContext} from '../assistDocument/AssistDocumentContext'\nimport {useApiClient, useGenerateCaption} from '../useApiClient'\nimport {useAiAssistanceConfig} from '../assistLayout/AiAssistanceConfigContext'\n\nexport interface ImageContextValue {\n captionPath: string\n assetRef?: string\n}\n\nexport const ImageContext = createContext<ImageContextValue | undefined>(undefined)\n\nexport function ImageContextProvider(props: InputProps) {\n const {schemaType, path, value} = props\n const assetRef = (value as any)?.asset?._ref\n const [assetRefState, setAssetRefState] = useState<string | undefined>(assetRef)\n\n const {documentId} = useAssistDocumentContext()\n const {config} = useAiAssistanceConfig()\n const apiClient = useApiClient(config?.__customApiClient)\n const {generateCaption} = useGenerateCaption(apiClient)\n\n useEffect(() => {\n const captionField = getCaptionFieldOption(schemaType)\n if (assetRef && documentId && captionField && assetRef !== assetRefState) {\n setAssetRefState(assetRef)\n generateCaption({path: pathToString([...path, captionField]), documentId: documentId})\n }\n }, [schemaType, path, assetRef, assetRefState, documentId, generateCaption])\n\n const context: ImageContextValue | undefined = useMemo(() => {\n const captionField = getCaptionFieldOption(schemaType)\n return captionField ? {captionPath: pathToString([...path, captionField]), assetRef} : undefined\n }, [schemaType, path, assetRef])\n\n return <ImageContext.Provider value={context}>{props.renderDefault(props)}</ImageContext.Provider>\n}\n","import {DocumentFieldAction, DocumentFieldActionGroup, DocumentFieldActionItem} from 'sanity'\nimport {ImageIcon} from '@sanity/icons'\nimport {useContext, useMemo} from 'react'\nimport {usePathKey} from '../helpers/misc'\nimport {useApiClient, useGenerateCaption} from '../useApiClient'\nimport {useAiAssistanceConfig} from '../assistLayout/AiAssistanceConfigContext'\nimport {useAssistDocumentContext} from '../assistDocument/AssistDocumentContext'\nimport {ImageContext} from '../components/ImageContext'\nimport {Box, Spinner} from '@sanity/ui'\n\nfunction node(node: DocumentFieldActionItem | DocumentFieldActionGroup) {\n return node\n}\n\nexport const generateCaptionsActions: DocumentFieldAction = {\n name: 'sanity-assist-generate-captions',\n useAction(props) {\n const pathKey = usePathKey(props.path)\n\n const {config} = useAiAssistanceConfig()\n const apiClient = useApiClient(config?.__customApiClient)\n const {generateCaption, loading} = useGenerateCaption(apiClient)\n\n const imageContext = useContext(ImageContext)\n\n if (imageContext && pathKey === imageContext?.captionPath) {\n //if this is true, it is stable, and not breaking rules of hooks\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const {documentId} = useAssistDocumentContext()\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return useMemo(() => {\n return node({\n type: 'action',\n icon: loading\n ? () => (\n <Box style={{height: 17}}>\n <Spinner style={{transform: 'translateY(6px)'}} />\n </Box>\n )\n : ImageIcon,\n title: 'Generate caption',\n onAction: () => {\n if (loading) {\n return\n }\n generateCaption({path: pathKey, documentId: documentId ?? ''})\n },\n renderAsButton: true,\n disabled: loading,\n hidden: !imageContext.assetRef,\n })\n }, [generateCaption, pathKey, documentId, loading, imageContext])\n }\n\n // works but not supported by types\n return undefined as unknown as DocumentFieldActionItem\n },\n}\n","import {\n DocumentFieldAction,\n DocumentFieldActionGroup,\n DocumentFieldActionItem,\n ObjectSchemaType,\n useCurrentUser,\n} from 'sanity'\nimport {ControlsIcon, SparklesIcon} from '@sanity/icons'\nimport {useCallback, useMemo} from 'react'\nimport {pluginTitle, pluginTitleShort} from '../constants'\nimport {useAssistSupported} from '../helpers/useAssistSupported'\nimport {useAssistDocumentContext} from '../assistDocument/AssistDocumentContext'\nimport {getInstructionTitle, usePathKey} from '../helpers/misc'\nimport {fieldPathParam, instructionParam, StudioInstruction} from '../types'\nimport {aiInspectorId} from '../assistInspector/constants'\nimport {getIcon} from '../assistDocument/components/instruction/appearance/IconInput'\nimport {useAssistDocumentContextValue} from '../assistDocument/hooks/useAssistDocumentContextValue'\nimport {\n getAssistableDocId,\n useRequestRunInstruction,\n} from '../assistDocument/RequestRunInstructionProvider'\nimport {PrivateIcon} from './PrivateIcon'\nimport {generateCaptionsActions} from './generateCaptionActions'\n\nfunction node(node: DocumentFieldActionItem | DocumentFieldActionGroup) {\n return node\n}\n\nexport const assistFieldActions: DocumentFieldAction = {\n name: 'sanity-assist-actions',\n useAction(props) {\n const {schemaType} = props\n const assistSupported = useAssistSupported(props.path, schemaType)\n\n const isDocumentLevel = props.path.length === 0\n\n const {\n assistDocument,\n documentIsNew,\n documentIsAssistable,\n openInspector,\n closeInspector,\n inspector,\n documentOnChange,\n documentSchemaType,\n documentId,\n selectedPath,\n } =\n // document field actions do not have access to the document context\n // conditional hook _should_ be safe here since the logical path will be stable\n isDocumentLevel\n ? // eslint-disable-next-line react-hooks/rules-of-hooks\n useAssistDocumentContextValue(props.documentId, schemaType as ObjectSchemaType)\n : // eslint-disable-next-line react-hooks/rules-of-hooks\n useAssistDocumentContext()\n\n const currentUser = useCurrentUser()\n const isHidden = !assistDocument\n const pathKey = usePathKey(props.path)\n const assistDocumentId = assistDocument?._id\n\n const assistableDocId = getAssistableDocId(documentSchemaType, documentId)\n const {requestRunInstruction} = useRequestRunInstruction({\n documentOnChange,\n isDocAssistable: documentIsAssistable ?? false,\n })\n\n const fieldAssist = useMemo(\n () => (assistDocument?.fields ?? []).find((f) => f.path == pathKey),\n [assistDocument?.fields, pathKey]\n )\n const fieldAssistKey = fieldAssist?._key\n const isInspectorOpen = inspector?.name === aiInspectorId\n const isPathSelected = pathKey === selectedPath\n const isSelected = isInspectorOpen && isPathSelected\n\n const imageCaptionAction = generateCaptionsActions.useAction(props)\n\n const manageInstructions = useCallback(\n () =>\n isSelected\n ? closeInspector(aiInspectorId)\n : openInspector(aiInspectorId, {\n [fieldPathParam]: pathKey,\n [instructionParam]: undefined as any,\n }),\n [openInspector, closeInspector, isSelected, pathKey]\n )\n\n const onInstructionAction = useCallback(\n (instruction: StudioInstruction) => {\n if (!pathKey || !fieldAssistKey || !assistDocumentId || !assistableDocId) {\n return\n }\n requestRunInstruction({\n documentId: assistableDocId,\n assistDocumentId,\n path: pathKey,\n instruction,\n })\n },\n [requestRunInstruction, assistableDocId, pathKey, assistDocumentId, fieldAssistKey]\n )\n\n const privateInstructions = useMemo(\n () =>\n fieldAssist?.instructions?.filter((i) => i.userId && i.userId === currentUser?.id) || [],\n [fieldAssist?.instructions, currentUser]\n )\n\n const sharedInstructions = useMemo(\n () => fieldAssist?.instructions?.filter((i) => !i.userId) || [],\n [fieldAssist?.instructions]\n )\n\n const instructions = useMemo(\n () => [...privateInstructions, ...sharedInstructions],\n [privateInstructions, sharedInstructions]\n )\n\n const runInstructionsGroup = useMemo(() => {\n return instructions?.length || imageCaptionAction\n ? node({\n type: 'group',\n icon: () => null,\n title: 'Run instructions',\n children: [\n ...instructions?.map((instruction) =>\n instructionItem({\n instruction,\n isPrivate: Boolean(instruction.userId && instruction.userId === currentUser?.id),\n onInstructionAction,\n hidden: isHidden,\n documentIsNew: !!documentIsNew,\n assistSupported,\n })\n ),\n imageCaptionAction,\n ].filter(Boolean),\n expanded: true,\n })\n : undefined\n }, [\n instructions,\n currentUser?.id,\n onInstructionAction,\n isHidden,\n documentIsNew,\n assistSupported,\n imageCaptionAction,\n ])\n\n const instructionsLength = instructions?.length || 0\n\n const manageInstructionsItem = useMemo(\n () =>\n node({\n type: 'action',\n icon: ControlsIcon,\n title: 'Manage instructions',\n onAction: manageInstructions,\n selected: isSelected,\n }),\n [manageInstructions, isSelected]\n )\n\n const group = useMemo(\n () =>\n node({\n type: 'group',\n icon: SparklesIcon,\n title: pluginTitleShort,\n children: [runInstructionsGroup, assistSupported && manageInstructionsItem].filter(\n (c): c is DocumentFieldActionItem | DocumentFieldActionGroup => !!c\n ),\n expanded: false,\n renderAsButton: true,\n hidden: !assistSupported && !imageCaptionAction,\n }),\n [\n //documentIsNew,\n runInstructionsGroup,\n manageInstructionsItem,\n assistSupported,\n imageCaptionAction,\n ]\n )\n\n const emptyAction = useMemo(\n () =>\n node({\n type: 'action',\n hidden: !assistSupported,\n icon: SparklesIcon,\n onAction: manageInstructions,\n renderAsButton: true,\n title: pluginTitleShort,\n selected: isSelected,\n }),\n [assistSupported, manageInstructions, isSelected]\n )\n\n // If there are no instructions, we don't want to render the group\n if (instructionsLength === 0 && !imageCaptionAction) {\n return emptyAction\n }\n\n return group\n },\n}\n\nfunction instructionItem(props: {\n instruction: StudioInstruction\n isPrivate: boolean\n onInstructionAction: (ins: StudioInstruction) => void\n assistSupported: boolean\n documentIsNew: boolean\n hidden: boolean\n}) {\n const {hidden, isPrivate, onInstructionAction, assistSupported, instruction} = props\n return node({\n type: 'action',\n icon: getIcon(instruction.icon),\n iconRight: isPrivate ? PrivateIcon : undefined,\n title: getInstructionTitle(instruction),\n onAction: () => onInstructionAction(instruction),\n disabled: assistSupported ? false : {reason: `${pluginTitle} is not supported for this field`},\n hidden,\n })\n}\n","import {ObjectSchemaType} from 'sanity'\nimport {AssistDocumentContext} from './AssistDocumentContext'\nimport {useAssistDocumentContextValue} from './hooks/useAssistDocumentContextValue'\nimport {PropsWithChildren} from 'react'\n\nexport interface AIDocumentInputProps {\n documentId: string\n schemaType: ObjectSchemaType\n}\n\nexport function AssistDocumentContextProvider(props: PropsWithChildren<AIDocumentInputProps>) {\n const {documentId, schemaType} = props\n const value = useAssistDocumentContextValue(documentId, schemaType)\n return (\n <AssistDocumentContext.Provider value={value}>{props.children}</AssistDocumentContext.Provider>\n )\n}\n","import {useEffect, useRef} from 'react'\nimport {InstructionTask} from '../../types'\nimport {addSeconds, isAfter} from 'date-fns'\nimport {getInstructionTitle} from '../../helpers/misc'\nimport {useStudioAssistDocument} from './useStudioAssistDocument'\nimport {ObjectSchemaType, useCurrentUser} from 'sanity'\nimport {useToast} from '@sanity/ui'\n\nconst NO_TASKS: InstructionTask[] = []\n\nexport function useInstructionToaster(documentId: string, documentSchemaType: ObjectSchemaType) {\n const assistDocument = useStudioAssistDocument({documentId, schemaType: documentSchemaType})\n\n const assistDocLoaded = !!assistDocument\n const currentUser = useCurrentUser()\n const toast = useToast()\n const tasks = assistDocument?.tasks\n const previousTasks = useRef<InstructionTask[] | undefined | 'initial'>('initial')\n\n useEffect(() => {\n if (!assistDocLoaded) {\n return\n }\n\n if (previousTasks.current !== 'initial') {\n const prevTaskByKey = Object.fromEntries(\n (previousTasks.current ?? NO_TASKS).map((run) => [run._key, run])\n )\n const endedTasks = tasks\n ?.filter((task) => task.startedByUserId === currentUser?.id)\n .filter((task) => {\n const prevTask = prevTaskByKey[task._key]\n return (!prevTask && task.ended) || (!prevTask?.ended && task.ended)\n })\n // filter out old stuff\n .filter((task) => task.ended && isAfter(addSeconds(new Date(task.ended), 30), new Date()))\n\n endedTasks?.forEach((task) => {\n const title = task.title ?? getInstructionTitle(task.instruction)\n if (task.reason === 'error') {\n toast.push({\n title: `Failed: ${title}`,\n status: 'error',\n description: `Instruction failed. ${task.message ?? ''}`,\n closable: true,\n duration: 10000,\n })\n } else if (task.reason === 'timeout') {\n toast.push({\n title: `Timeout: ${title}`,\n status: 'error',\n description: `Instruction timed out.`,\n closable: true,\n })\n } else if (task.reason === 'success') {\n toast.push({\n title: `Success: ${title}`,\n status: 'success',\n description: `Instruction completed.`,\n closable: true,\n })\n } else if (task.reason === 'aborted') {\n toast.push({\n title: `Canceled: ${title}`,\n status: 'warning',\n description: `Instruction canceled.`,\n closable: true,\n })\n }\n })\n }\n previousTasks.current = tasks\n }, [tasks, previousTasks, toast, currentUser, assistDocLoaded])\n}\n","import {InputProps, ObjectInputProps} from 'sanity'\nimport {AssistDocumentContextProvider} from './AssistDocumentContextProvider'\nimport {FirstAssistedPathProvider} from '../onboarding/FirstAssistedPathProvider'\nimport {useInstructionToaster} from './hooks/useInstructionToaster'\nimport {isType} from '../helpers/typeUtils'\nimport {useLayer} from '@sanity/ui'\nimport {useDocumentPane} from 'sanity/desk'\nimport {usePathKey} from '../helpers/misc'\nimport {ConnectFromRegion} from '../_lib/connector'\n\nexport function AssistDocumentInputWrapper(props: InputProps) {\n if (!isType(props.schemaType, 'document') && props.id !== 'root') {\n return <AssistInput {...props} />\n }\n\n const documentId = (props.value as any)?._id as string | undefined\n if (!documentId) {\n return props.renderDefault(props)\n }\n\n return <AssistDocumentInput {...(props as ObjectInputProps)} documentId={documentId} />\n}\n\nfunction AssistDocumentInput({documentId, ...props}: ObjectInputProps & {documentId: string}) {\n useInstructionToaster(documentId, props.schemaType)\n\n return (\n <FirstAssistedPathProvider members={props.members}>\n <AssistDocumentContextProvider schemaType={props.schemaType} documentId={documentId}>\n {props.renderDefault(props)}\n </AssistDocumentContextProvider>\n </FirstAssistedPathProvider>\n )\n}\n\nfunction AssistInput(props: InputProps) {\n const {zIndex} = useLayer()\n const {paneKey} = useDocumentPane()\n const pathKey = usePathKey(props.path)\n\n return (\n <ConnectFromRegion _key={`${paneKey}_${pathKey}`} zIndex={zIndex} style={{minWidth: 0}}>\n {props.renderDefault(props)}\n </ConnectFromRegion>\n )\n}\n","import {ObjectSchemaType} from 'sanity'\nimport {useMemo} from 'react'\nimport {useAssistDocumentContextValue} from '../assistDocument/hooks/useAssistDocumentContextValue'\nimport {aiPresence} from './useAssistPresence'\nimport {documentRootKey, fieldPresenceTypeName} from '../types'\nimport {Card, Flex} from '@sanity/ui'\nimport {AiFieldPresence} from './AiFieldPresence'\n\nexport function createAssistDocumentPresence(\n documentId: string | undefined,\n schemaType: ObjectSchemaType\n) {\n return function AssistDocumentPresenceWrapper() {\n return documentId ? (\n <AssistDocumentPresence documentId={documentId} schemaType={schemaType} />\n ) : null\n }\n}\n\nfunction AssistDocumentPresence(props: {documentId: string; schemaType: ObjectSchemaType}) {\n const {assistDocument} = useAssistDocumentContextValue(\n props.documentId,\n props.schemaType as ObjectSchemaType\n )\n const anyPresence = useMemo(() => {\n const anyPresence = assistDocument?.tasks\n ?.filter((run) => !run.ended && !run.reason)\n ?.flatMap((run) => run.presence ?? [])\n .find((f) => f.started && new Date().getTime() - new Date(f.started).getTime() < 30000)\n if (anyPresence) {\n return aiPresence(anyPresence, [])\n }\n const anyRun = assistDocument?.tasks\n ?.filter((run) => !run.ended && !run.reason)\n ?.find((f) => f.started && new Date().getTime() - new Date(f.started).getTime() < 30000)\n return anyRun\n ? aiPresence(\n {\n started: anyRun.started,\n path: documentRootKey,\n _key: anyRun._key,\n _type: fieldPresenceTypeName,\n },\n []\n )\n : undefined\n }, [assistDocument?.tasks])\n\n return (\n <Card>\n <Flex flex={1} justify=\"flex-end\">\n <Flex gap={2} align={'center'}>\n {anyPresence && <AiFieldPresence presence={anyPresence} />}\n </Flex>\n </Flex>\n </Card>\n )\n}\n","import {definePlugin, ObjectSchemaType} from 'sanity'\nimport {assistInspector} from './assistInspector'\nimport {AssistFieldWrapper} from './assistFormComponents/AssistField'\nimport {AssistLayout} from './assistLayout/AssistLayout'\nimport {AssistFormBlock} from './assistFormComponents/AssistFormBlock'\nimport {AssistItem} from './assistFormComponents/AssistItem'\nimport {SanityClient} from '@sanity/client'\nimport {SafeValueInput} from './components/SafeValueInput'\nimport {schemaTypes} from './schemas'\nimport {AssistInlineFormBlock} from './assistFormComponents/AssistInlineFormBlock'\nimport {assistFieldActions} from './fieldActions/assistFieldActions'\nimport {packageName} from './constants'\nimport {AssistDocumentInputWrapper} from './assistDocument/AssistDocumentInput'\nimport {createAssistDocumentPresence} from './presence/AssistDocumentPresence'\nimport {isSchemaAssistEnabled} from './helpers/assistSupported'\nimport {isImage} from './helpers/typeUtils'\nimport {ImageContextProvider} from './components/ImageContext'\n\nexport interface AssistPluginConfig {\n /**\n * Set this to false to disable model migration from the alpha version of this plugin\n */\n alphaMigration?: boolean\n\n /**\n * @internal\n */\n __customApiClient?: (defaultClient: SanityClient) => SanityClient\n}\n\nexport const assist = definePlugin<AssistPluginConfig | void>((config) => {\n const configWithDefaults = config ?? {}\n return {\n name: packageName,\n\n schema: {\n types: schemaTypes,\n },\n\n document: {\n inspectors: (prev, context) => {\n const docSchema = context.schema.get(context.documentType)\n if (docSchema && isSchemaAssistEnabled(docSchema)) {\n return [...prev, assistInspector]\n }\n return prev\n },\n unstable_fieldActions: (prev) => {\n return [...prev, assistFieldActions]\n },\n unstable_languageFilter: (prev, {documentId, schema, schemaType}) => {\n const docSchema = schema.get(schemaType) as ObjectSchemaType\n return [...prev, createAssistDocumentPresence(documentId, docSchema)]\n },\n },\n\n studio: {\n components: {\n layout: function Layout(props) {\n return <AssistLayout {...props} config={configWithDefaults} />\n },\n },\n },\n\n form: {\n components: {\n input: AssistDocumentInputWrapper,\n field: AssistFieldWrapper,\n item: AssistItem,\n block: AssistFormBlock,\n inlineBlock: AssistInlineFormBlock,\n },\n },\n\n plugins: [\n definePlugin({\n name: `${packageName}/safe-value-input`,\n form: {components: {input: SafeValueInput}},\n })(),\n\n definePlugin({\n name: `${packageName}/generate-caption`,\n form: {\n components: {\n input: (props) => {\n const {schemaType} = props\n\n if (isImage(schemaType)) {\n return <ImageContextProvider {...props} />\n }\n return props.renderDefault(props)\n },\n },\n },\n })(),\n ],\n }\n})\n"],"names":["assistDocumentIdPrefix","assistDocumentStatusIdPrefix","assistSchemaIdPrefix","assistDocumentTypeName","assistFieldTypeName","instructionTypeName","promptTypeName","userInputTypeName","instructionContextTypeName","fieldReferenceTypeName","contextDocumentTypeName","assistTasksStatusTypeName","instructionTaskTypeName","fieldPresenceTypeName","assistSerializedTypeName","assistSerializedFieldTypeName","fieldPathParam","instructionParam","documentRootKey","fetch","client","query","params","options","defer","observable","tag","filterResponse","listen","events","includeResult","visibility","isWelcomeEvent","event","type","listenQuery","arguments","length","undefined","fetchQuery","listenerQuery","fetchOnce$","events$","pipe","mergeMap","ev","i","isFirst","throwError","Error","concat","of","share","welcome$","mutationAndReconnect$","partition","isRelevantEvent","transitions","includes","transition","merge","take","filter","switchMap","delay","throttleTime","exhaustMapToWithTrailing","DEFAULT_PARAMS","DEFAULT_OPTIONS","apiVersion","useListeningQuery","loading","setLoading","useState","error","setError","data","setData","subscription","useRef","useClient","useEffect","current","distinctUntilChanged","isEqual","catchError","err","console","subscribe","documents","unsubscribe","hiddenTypes","isPortableTextArray","find","t","isType","schemaType","typeName","name","isImage","getCaptionFieldOption","_a","captionField","isSchemaAssistEnabled","_b","aiWritingAssistance","exclude","isAssistSupported","allowReadonlyHidden","isDisabled","jsonType","unsupportedArray","every","unsupportedObject","fields","field","readonlyHidden","readOnly","hidden","isUnsupportedType","inlineTypes","serializeSchema","schema","list","getTypeNames","startsWith","map","get","getSchemaStub","to","sort","a","b","localeCompare","baseSchema","leanFormat","_id","_type","title","getBaseFields","removeUndef","_c","imagePromptField","values","v","value","arrayOf","refToTypeNames","serializeFields","f","serializeMember","typeNameExists","arrayType","typed","obj","Object","keys","forEach","key","NO_DATA","defaultTitle","SchemaTypeTool","useSchema","saving","setSaving","syncTitle","setSyncTitle","types","useMemo","storeTypes","useCallback","canSave","store","transaction","createOrReplace","commit","reset","catch","finally","jsx","Card","padding","overflow","style","height","children","jsxs","Stack","space","Box","Button","icon","Spinner","marginTop","SyncIcon","text","disabled","onClick","Flex","gap","Label","SchemaEntry","schemaStub","_ref","out","JSON","stringify","aiInspectorId","preventDefault","DocumentForm","props","collapsedFieldSets","collapsedPaths","displayed","documentId","documentType","editState","formState","onBlur","onChange","onFocus","onPathOpen","onSetActiveFieldGroup","onSetCollapsedFieldSet","onSetCollapsedPath","ready","validation","useDocumentPane","documentStore","useDocumentStore","presence","useDocumentPresence","patchChannel","createPatchChannel","isLocked","transactionSyncLock","enabled","sub","pair","documentEvents","tap","publish","prepareMutationEvent","prepareRebaseEvent","hasRev","Boolean","_rev","patches","snapshot","formRef","focusFirstDescendant","as","ref","align","direction","justify","sizing","Text","size","onSubmit","FormBuilder","__internal_patchChannel","focusPath","changed","focused","groups","id","members","onFieldGroupSelect","onPathBlur","onPathFocus","onSetFieldSetCollapsed","onSetPathCollapsed","muted","mutations","mut","patch","document","fromMutationPatches","origin","remotePatches","remoteMutations","localPatches","localMutations","SelectedFieldContext","createContext","SelectedFieldContextProvider","Provider","maxDepth","getTypeIcon","LinkIcon","ImageIcon","BlockContentIcon","OlistIcon","BlockquoteIcon","StringIcon","DocumentIcon","getFieldRefsWithDocument","getFieldRefs","path","parent","depth","flatMap","fieldRef","pathToString","join","useSelectedField","documentSchemaType","selectableFields","isObjectSchemaType","getFieldTitle","useAiPaneRouter","paneRouter","usePaneRouter","useDocumentState","docType","state","useEditState","draft","published","aiDocPrefixPattern","RegExp","publicId","replace","assistDocumentId","documentTypeFromAiDocumentId","assistTasksStatusId","releaseAnnouncementUrl","instructionGuideUrl","giveFeedbackUrl","salesUrl","packageName","pluginTitle","pluginTitleShort","maxHistoryVisibilityMs","minutesToMilliseconds","useStudioAssistDocument","_ref2","documentTypeName","currentUser","useCurrentUser","useValidationStatus","assistDocument","assistTasksStatus","createIfNotExists","tasks","assistField","task","instructions","p","userId","instruction","asStudioInstruction","_key","instructionKey","run","errors","marker","level","fieldRefs","prompt","block","c","started","Date","getTime","r","useInterval","ms","tick","update","useReducer","n","setInterval","clearInterval","TimeAgo","_ref3","date","timeSince","formatDistanceToNow","usePathKey","Array","isArray","getInstructionTitle","rotate","keyframes","__template","SyncSpinningIcon","styled","TASK_CONFIG","aborted","CloseCircleIcon","tone","ErrorOutlineIcon","success","CheckmarkCircleIcon","timeout","ClockIcon","InstructionTaskHistoryButton","showTitles","cancelRun","taskKey","statusDocId","basePath","set","toISOString","titledTasks","cancel","isRunning","some","ended","hasErrors","reason","open","setOpen","toggleOpen","button","setButton","popover","setPopover","handleClickOutside","useClickOutside","handleEscape","focus","Popover","constrainSize","content","TaskList","onEscape","placement","portal","width","TaskStatusButton","selected","TASK_STATUS_BUTTON_TOOLTIP_PROPS","forwardRef","StatusButton","label","mode","fontSize","tooltip","isTopLayer","useLayer","useGlobalKeyDown","TaskItem","taskType","radius","flex","createElement","weight","Fragment","message","editorialAiFieldActionFeature","useApiClient","customApiClient","useGenerateCaption","apiClient","user","toast","useToast","generateCaption","_ref4","request","method","url","config","dataset","projectId","body","e","push","status","description","setTimeout","useGetInstructStatus","projectClient","getInstructStatus","features","useInitInstruct","initInstruct","useRunInstructionApi","runInstruction","AiAssistanceConfigContext","useAiAssistanceConfig","context","useContext","AiAssistanceConfigProvider","setStatus","__customApiClient","statusLoading","initLoading","then","s","init","NO_INPUT","RunInstructionContext","instructionLoading","useRunInstruction","isUserInputBlock","RunInstructionProvider","runInstructionRequest","useId","inputs","setInputs","runRequest","setRunRequest","req","userInputBlocks","userTexts","close","runWithInput","entries","_ref5","blockKey","userInput","runDisabled","_ref6","runButton","PlayIcon","contextValue","Dialog","onClose","header","footer","Tooltip","UserInput","autoFocus","textAreaRef","currentTarget","target","FormFieldHeaderText","TextArea","rows","resize","isDocAssistable","liveEdit","getAssistableDocId","baseId","useRequestRunInstruction","args","documentOnChange","queuedTask","setQueuedTask","requestRunInstruction","PatchEvent","from","unset","SparklesIllustration","SparklesIcon","strokeWidth","InspectorOnboarding","onDismiss","Container","textAlign","href","rel","inspectorOnboardingKey","fieldOnboardingKey","isFeatureOnboardingDismissed","featureKey","localStorage","getItem","dismissFeatureOnboarding","setItem","useOnboardingFeature","showOnboarding","setShowOnboarding","dismissOnboarding","CardWithShadowBelow","CardWithShadowAbove","AssistInspectorWrapper","DocumentInspectorHeader","closeButtonLabel","initialized","validToken","RetryIcon","AssistInspector","boundary","pathKey","documentPane","assistableDocId","selectedField","aiDocId","promptValue","isEmptyPrompt","firstBlock","paneNode","runCurrentInstruction","Region","_props","lineHeight","AiInspectorHeader","fieldTitle","minHeight","PresenceOverlay","VirtualizerScrollInstanceProvider","scrollElement","containerElement","DocumentPaneProvider","paneKey","index","itemId","pane","whiteSpace","ArrowRightIcon","paddingX","paddingY","justifySelf","border","margin","CloseIcon","assistInspector","useMenuItem","showAsAction","component","_ref7","AssistDocumentContext","useAssistDocumentContext","NO_PRESENCE","useAssistPresence","showFocusWithin","activePresence","statusPath","stringToPath","pathSegment","statusSegment","isKeySegment","aiPresence","displayName","sessionId","lastActiveAt","fadeIn","FadeInDiv","div","FadeInContent","FadeInContent2","_ref8","durationMs","animationDuration","purple","hex","_d","Root","span","dash","Outline","svg","IconDisc","AssistAvatar","scheme","useColorSchemeValue","viewBox","fill","xmlns","cx","cy","color","AiFieldPresence","position","background","contentEditable","AssistFeatureBadge","Badge","AssistOnboardingPopover","dismiss","AssistIntroCard","placeholder","shadow","buttonRef","CheckmarkIcon","FirstAssistedPathContext","FirstAssistedPathProvider","firstAssistedPath","firstAssisted","member","kind","AssistFieldWrapper","isSupported","renderDefault","inputId","AssistField","isPortableText","isArraySchemaType","isFirstAssisted","actions","pre","__internal_slot","ConnectorsStoreContext","useConnectorsStore","hasOverflowScroll","el","getComputedStyle","useRegionRects","relativeBoundsRect","setRelativeBoundsRect","relativeElementRect","setRelativeElementRect","boundsScroll","setBoundsScroll","x","y","scroll","setScroll","boundsScrollXRef","boundsScrollYRef","elementScrollXRef","elementScrollYRef","scrollParents","parentElement","handleResize","scrollParent","boundsRect","getBoundingClientRect","window","innerWidth","innerHeight","domRect","w","h","handleScroll","scrollX","scrollY","scrollLeft","scrollTop","addEventListener","passive","ro","ResizeObserver","observe","unobserve","removeEventListener","disconnect","bounds","element","ConnectorRegion","onRectsChange","restProps","ConnectFromRegion","zIndex","rects","setRects","next","createConnectorsStore","configKeys","fieldKeys","channels","Map","payloads","observers","notifyObservers","connectors","toRects","toPayload","fromRects","fromPayload","payload","observer","delete","idx","indexOf","splice","ConnectorsProvider","onConnectorsChange","getConnectorLinePoint","rect","centerY","isAbove","arrow","marginY","isBelow","startY","endY","outOfBounds","mapConnectorToLine","connector","fromBounds","threshold","fromBottom","toBounds","toBottom","maxStartY","Math","max","min","arrowPath","dir","moveTo","lineTo","strings","delim","quadCurve","x1","y1","drawConnectorPath","line","cornerRadius","fromX","fromY","_toX","toY","toX","dividerX","divider","offsetX","fromPathX","marginX","r0","abs","r1","cmds","ConnectorPath","theme","useTheme","d","stroke","sanity","base","bg","rgba","DEBUG","AssistConnectorsOverlay","setRedraw","top","left","pointerEvents","legacyAssistDocumentIdPrefix","legacyAssistDocumentTypeName","legacyContextDocumentTypeName","legacyAssistStatusDocumentTypeName","NO_ASSIST_DOCS","NO_CONTEXT_DOCS","NO_IDS","AlphaMigration","alphaAssistDocs","setAlphaAssistDocs","contextDocs","setContextDocs","staleStatusDocIds","setStaleStatusDocs","progress","setProgress","canUpdate","result","assistDocs","convert","convertContextDocs","subtaskProgress","deleteDocs","convertDocs","taskSize","startProgress","subProgress","closable","maxWidth","floor","ids","updateProgress","chunkSize","progressCount","chunk","slice","trans","docs","doc","rest","_alphaId","oldDoc","oldField","inst","mapBlock","isFieldRef","isContext","isUserInput","isSpan","migratedContexts","newBlock","reference","textBlock","child","AssistLayout","setConnectors","migrate","alphaMigration","ThemeProvider","WrapPreCard","SafeValueInput","ErrorWrapper","PteValueFixer","unsetValue","catcher","ErrorBoundary","onCatch","AssistFormBlock","useFormCallbacks","localOnChange","patchEvent","prefixAll","AssistItem","right","BackToInstructionListLink","openInspector","goBack","ArrowLeftIcon","EMPTY_FIELDS","AssistDocumentForm","targetDocumentType","setParams","activeKey","activePath","documentSchema","fieldSchema","useSelectedSchema","fieldExists","formCallbacks","newCallbacks","FieldsInitializer","FormCallbacksProvider","FormInput","absolutePath","fieldPath","currentSchema","segment","_ref9","setIfMissing","insert","findFieldMember","fieldName","m","findFieldsetMember","fieldsetName","fieldSet","InstructionInput","NameField","ShareField","PromptField","promptMember","ObjectInputMember","NONE","fieldsetMember","titleId","iconMember","titleMember","titlePlaceholder","moddedTitleMember","htmlFor","marginLeft","visibilityMember","HiddenFieldTitle","InstructionVisibility","handleChange","newValue","Switch","elementProps","checked","IconInput","items","icons","_ref10","IconItem","iconKey","selectedIcon","getIcon","MenuButton","menu","Menu","maxHeight","_ref11","MenuItem","iconName","_ref12","sparkles","FieldAutocomplete","onSelect","includeDocument","fieldNames","currentField","autocompleteOptions","renderOption","option","accent","splitTitle","split","Breadcrumbs","separator","pt","trim","renderValue","filterOption","lQuery","toLowerCase","Autocomplete","SearchIcon","openButton","FieldRefPathInput","querySelector","minWidth","InstructionsArrayInput","originalValue","originalMembers","item","InlineBlockValueContext","AssistInlineFormBlock","FieldRefPreview","textOverflow","HideReferenceChangedBannerInput","closest","parentId","random","innerText","prepend","contextDocumentSchema","defineType","TokenIcon","components","input","defineField","defineArrayMember","styles","lists","marks","decorators","annotations","preview","select","prepare","_ref13","words","subtitle","media","DocumentTextIcon","getRandomValues","typedArray","crypto","whatwgRNG","rnds8","Uint8Array","getByteHexTable","table","toString","substring","randomKey","reduce","str","PteMods","PromptInput","useOnlyInlineBlocks","needsFix","val","markDefs","InstructionsArrayField","fieldReference","ThListIcon","rule","custom","docId","targetDocType","refs","_ref14","CodeIcon","modal","ComposeIcon","required","promptContext","Fix","call","fieldsets","collapsible","collapsed","_ref15","LockIcon","fieldset","initialValue","createdById","fieldInstructions","assistDocumentSchema","instructionTask","documentInstructionStatus","schemaTypes","useAssistSupported","useAssistDocumentContextValue","getPublishedId","assistableDocumentId","documentIsNew","documentIsAssistable","selectedPath","closeInspector","inspector","PrivateIcon","fallbackPlacements","ImageContext","ImageContextProvider","assetRef","asset","assetRefState","setAssetRefState","captionPath","node","generateCaptionsActions","useAction","imageContext","transform","onAction","renderAsButton","assistFieldActions","assistSupported","isDocumentLevel","isHidden","fieldAssist","fieldAssistKey","isInspectorOpen","isPathSelected","isSelected","imageCaptionAction","manageInstructions","onInstructionAction","privateInstructions","sharedInstructions","runInstructionsGroup","instructionItem","isPrivate","expanded","instructionsLength","manageInstructionsItem","ControlsIcon","group","emptyAction","iconRight","AssistDocumentContextProvider","NO_TASKS","useInstructionToaster","assistDocLoaded","previousTasks","prevTaskByKey","fromEntries","endedTasks","startedByUserId","prevTask","isAfter","addSeconds","duration","AssistDocumentInputWrapper","AssistInput","AssistDocumentInput","_ref16","createAssistDocumentPresence","AssistDocumentPresenceWrapper","AssistDocumentPresence","anyPresence","anyRun","assist","definePlugin","configWithDefaults","inspectors","prev","docSchema","unstable_fieldActions","unstable_languageFilter","_ref17","studio","layout","Layout","form","inlineBlock","plugins"],"mappings":";;;;;;;;;;;;;AAIO,MAAMA,sBAAyB,GAAA,2BAAA;AAC/B,MAAMC,4BAA+B,GAAA,uBAAA;AACrC,MAAMC,oBAAuB,GAAA,uBAAA;AAG7B,MAAMC,sBAAyB,GAAA,sCAAA;AAC/B,MAAMC,mBAAsB,GAAA,gCAAA;AAC5B,MAAMC,mBAAsB,GAAA,2BAAA;AAC5B,MAAMC,cAAiB,GAAA,kCAAA;AAEvB,MAAMC,iBAAoB,GAAA,qCAAA;AAC1B,MAAMC,0BAA6B,GAAA,mCAAA;AACnC,MAAMC,sBAAyB,GAAA,oCAAA;AAG/B,MAAMC,uBAA0B,GAAA,4BAAA;AAEhC,MAAMC,yBAA4B,GAAA,2BAAA;AAClC,MAAMC,uBAA0B,GAAA,+BAAA;AAChC,MAAMC,qBAAwB,GAAA,wCAAA;AAE9B,MAAMC,wBAA2B,GAAA,+BAAA;AACjC,MAAMC,6BAAgC,GAAA,gCAAA;AAItC,MAAMC,cAAiB,GAAA,SAAA;AACvB,MAAMC,gBAAmB,GAAA,aAAA;AAGzB,MAAMC,eAAkB,GAAA,YAAA;ACjB/B,MAAMC,KAAQ,GAAAA,CACZC,MACA,EAAAC,KAAA,EACAC,QACAC,OAEA,KAAAC,KAAA,CAAM;AAAA;AAEJJ,MAAO,CAAAK,UAAA,CAAWN,KAAM,CAAAE,KAAA,EAAOC,MAAQ,EAAA;EACrCI,KAAKH,OAAQ,CAAAG,GAAA;EACbC,cAAgB,EAAA;AAAA,CACjB,CACH,CAAA;AAEF,MAAMC,MAAS,GAAAA,CACbR,MACA,EAAAC,KAAA,EACAC,QACAC,OAEA,KAAAC,KAAA,CAAM;AAAA;AAEJJ,MAAA,CAAOQ,MAAO,CAAAP,KAAA,EAAOC,MAAQ,EAAA;EAC3BO,MAAQ,EAAA,CAAC,SAAW,EAAA,UAAA,EAAY,WAAW,CAAA;EAC3CC,aAAe,EAAA,KAAA;EACfC,UAAY,EAAA,OAAA;EACZL,KAAKH,OAAQ,CAAAG;AAAA,CACd,CACH,CAAA;AAEF,SAASM,eACPC,KACuB,EAAA;EACvB,OAAOA,MAAMC,IAAS,KAAA,SAAA;AACxB;AAGa,MAAAC,WAAA,GAAc,SAAAA,CACzBf,MACA,EAAAC,KAAA,EAGG;EAAA,IAFHC,6EAA4B,CAAC,CAAA;EAAA,IAC7BC,OAA8B,GAAAa,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAA,EAC3B;EACH,MAAMG,UAAa,GAAA,OAAOlB,KAAU,KAAA,QAAA,GAAWA,QAAQA,KAAM,CAAAF,KAAA;EAC7D,MAAMqB,aAAgB,GAAA,OAAOnB,KAAU,KAAA,QAAA,GAAWA,QAAQA,KAAM,CAAAO,MAAA;EAEhE,MAAMa,UAAa,GAAAtB,KAAA,CAAMC,MAAQ,EAAAmB,UAAA,EAAYjB,QAAQC,OAAO,CAAA;EAE5D,MAAMmB,UAAUd,MAAO,CAAAR,MAAA,EAAQoB,aAAe,EAAAlB,MAAA,EAAQC,OAAO,CAAE,CAAAoB,IAAA,CAC7DC,QAAA,CAAS,CAACC,EAAA,EAAIC,CAAM,KAAA;IAClB,MAAMC,UAAUD,CAAM,KAAA,CAAA;IACtB,IAAIC,OAAW,IAAA,CAACf,cAAe,CAAAa,EAAE,CAAG,EAAA;MAG3B,OAAAG,UAAA,CACL,IAAIC,KAAA,CACFJ,GAAGX,IAAS,KAAA,WAAA,GACR,4CACA,GAAA,2CAAA,CAA4CgB,UAAGhB,IAAI,EAAA,GAAA,CACzD,CAAA,CACF;IACF;IACA,OAAOiB,GAAGN,EAAE,CAAA;EAAA,CACb,CAAA,EACDO,KAAM,CAAA,CAAA,CACR;EAEA,MAAM,CAACC,QAAU,EAAAC,qBAAqB,CAAI,GAAAC,SAAA,CAAUb,SAASV,cAAc,CAAA;EACrE,MAAAwB,eAAA,GAAmBvB,KAAkE,IAAA;IACzF,IAAI,CAACV,OAAA,CAAQkC,WAAe,IAAAxB,KAAA,CAAMC,SAAS,UAAY,EAAA;MAC9C,OAAA,IAAA;IACT;IAEA,OAAOX,OAAQ,CAAAkC,WAAA,CAAYC,QAAS,CAAAzB,KAAA,CAAM0B,UAAU,CAAA;EAAA,CACtD;EAEO,OAAAC,KAAA,CACLP,QAAS,CAAAV,IAAA,CAAKkB,IAAK,CAAA,CAAC,CAAC,CAAA,EACrBP,qBAAsB,CAAAX,IAAA,CACpBmB,OAAON,eAAe,CAAA,EACtBO,UAAW9B,KAAA,IAAU2B,KAAM,CAAAT,EAAA,CAAGlB,KAAK,CAAG,EAAAkB,EAAA,CAAGlB,KAAK,CAAA,CAAEU,KAAKqB,KAAM,CAAAzC,OAAA,CAAQ0C,gBAAgB,GAAI,CAAC,CAAC,CAAC,CAC5F,CACA,CAAA,CAAAtB,IAAA,CAAKuB,wBAAyB,CAAAzB,UAAU,CAAC,CAAA;AAC7C,CAAA;AClFA,MAAM0B,iBAAiB,CAAA,CAAC;AACxB,MAAMC,eAAA,GAAsC;EAACC,UAAA,EAAY;CAAa;AAE/D,SAASC,iBACdA,CAAAjD,KAAA,EAGgB;EAAA,IAFhBC,MAAiB,GAAAc,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAA+B,cAAA;EAAA,IACjB5C,8EAA8B6C,eACd;EAChB,MAAM,CAACG,OAAA,EAASC,UAAU,CAAA,GAAIC,SAAS,IAAI,CAAA;EAC3C,MAAM,CAACC,KAAA,EAAOC,QAAQ,CAAA,GAAIF,SAAS,KAAK,CAAA;EACxC,MAAM,CAACG,IAAA,EAAMC,OAAO,CAAA,GAAIJ,SAAmB,IAAI,CAAA;EACzC,MAAAK,YAAA,GAAeC,OAA0B,IAAI,CAAA;EAEnD,MAAM3D,MAAS,GAAA4D,SAAA,CAAU;IAACX,UAAA,EAAY;EAAc,CAAA,CAAA;EAEpDY,SAAA,CAAU,MAAM;IACd,IAAI5D,KAAO,EAAA;MACTyD,YAAA,CAAaI,UAAU/C,WAAY,CAAAf,MAAA,EAAQC,KAAO,EAAAC,MAAA,EAAQC,OAAO,CAC9D,CAAAoB,IAAA,CACCwC,qBAAqBC,OAAO,CAAA,EAC5BC,UAAA,CAAYC,GAAQ,IAAA;QAClBC,OAAA,CAAQb,MAAMY,GAAG,CAAA;QACjBX,QAAA,CAASW,GAAG,CAAA;QACZd,UAAA,CAAW,KAAK,CAAA;QAChBK,OAAA,CAAQ,IAAI,CAAA;QAEL,OAAAS,GAAA;MAAA,CACR,CAAA,CACH,CACCE,SAAU,CAACC,SAAc,IAAA;QACxBZ,OAAA,CAASK,OAAa,IAAAE,OAAA,CAAQF,SAASO,SAAS,CAAA,GAAIP,UAAUO,SAAU,CAAA;QACxEjB,UAAA,CAAW,KAAK,CAAA;QAChBG,QAAA,CAAS,KAAK,CAAA;MAAA,CACf,CAAA;IACL;IAEA,OAAO,MAAM;MACX,OAAOG,YAAa,CAAAI,OAAA,GAAUJ,YAAa,CAAAI,OAAA,CAAQQ,aAAgB,GAAA,KAAA,CAAA;IAAA,CACrE;KACC,CAACrE,KAAA,EAAOC,MAAQ,EAAAC,OAAA,EAASH,MAAM,CAAC,CAAA;EAE5B,OAAA;IAACmD,OAAS;IAAAG,KAAA;IAAOE;GAAI;AAC9B;AC1DO,MAAMe,WAAc,GAAA,CACzB,KAAA,EACA,OAAA,EACA,OAAA,EACA,SAAA,EACA,uBAAA,EACA,MAAA,EACA,UAAA,EACA,UAAA,EACA,OAAA,EACA,MAAA,EACA,OAAA,EACA,QAAA,EACA,QAAA,EACA,WAAA,EACA,MAAA,EACA,QAAA,EACA,MAAA,EACA,KAAA,EACA,MAAA,EACA,UAAA,EACA,wBAAA,EACA,mBAAA,EACA,kBAAA,EACA,kBAAA,EACA,qBAAA,EACA,sBAAA,EACA,wBAAA,EACA,qBAAA,EACA,2BAAA,EAEA7E,wBAAA,EACAC,6BAAA,EACA,2BAAA,CACF;AClCO,SAAS6E,oBAAoB1D,IAAuB,EAAA;EAClD,OAAAA,IAAA,CAAKiB,GAAG0C,IAAK,CAACC,KAAMC,MAAO,CAAAD,CAAA,EAAG,OAAO,CAAC,CAAA;AAC/C;AAEgB,SAAAC,MAAAA,CAAOC,YAAwBC,QAA2B,EAAA;EACpE,IAAAD,UAAA,CAAWE,SAASD,QAAU,EAAA;IACzB,OAAA,IAAA;EACT;EACI,IAAA,CAACD,WAAW9D,IAAM,EAAA;IACb,OAAA,KAAA;EACT;EACO,OAAA6D,MAAA,CAAOC,UAAW,CAAA9D,IAAA,EAAM+D,QAAQ,CAAA;AACzC;AAEO,SAASE,QAAQH,UAAwB,EAAA;EACvC,OAAAD,MAAA,CAAOC,YAAY,OAAO,CAAA;AACnC;AAEO,SAASI,sBAAsBJ,UAAwD,EAAA;EApB9F,IAAAK,EAAA;EAqBE,IAAI,CAACL,UAAY,EAAA;IACR,OAAA,KAAA,CAAA;EACT;EACM,MAAAM,YAAA,GAAA,CAAgBD,EAAW,GAAAL,UAAA,CAAAzE,OAAA,KAAX,IAAqC,GAAA,KAAA,CAAA,GAAA8E,EAAA,CAAAC,YAAA;EAC3D,IAAIA,YAAc,EAAA;IACT,OAAAA,YAAA;EACT;EACO,OAAAF,qBAAA,CAAsBJ,WAAW9D,IAAI,CAAA;AAC9C;ACzBO,SAASqE,sBAAsBrE,IAAkB,EAAA;EAJxD,IAAAmE,EAAA,EAAAG,EAAA;EAKE,OAAO,EAAE,CAAAA,EAAA,GAAA,CAAAH,EAAA,GAAAnE,IAAA,CAAKX,OAAL,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA8E,EAAA,CAA4CI,wBAA5C,IAAiE,GAAA,KAAA,CAAA,GAAAD,EAAA,CAAAE,OAAA,CAAA;AAC5E;AAEgB,SAAAC,iBAAAA,CAAkBzE,IAAkB,EAA6B;EAAA,IAA7B0E,mBAAA,GAAAxE,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAsB,KAAO;EAC3E,IAAA,CAACmE,qBAAsB,CAAArE,IAAI,CAAG,EAAA;IACzB,OAAA,KAAA;EACT;EAEI,IAAA2E,UAAA,CAAW3E,IAAM,EAAA0E,mBAAmB,CAAG,EAAA;IAClC,OAAA,KAAA;EACT;EAEI,IAAA1E,IAAA,CAAK4E,aAAa,OAAS,EAAA;IACvB,MAAAC,gBAAA,GAAmB7E,KAAKiB,EAAG,CAAA6D,KAAA,CAAOlB,CAAM,IAAAe,UAAA,CAAWf,CAAG,EAAAc,mBAAmB,CAAC,CAAA;IAChF,OAAO,CAACG,gBAAA;EACV;EAEI,IAAA7E,IAAA,CAAK4E,aAAa,QAAU,EAAA;IACxB,MAAAG,iBAAA,GAAoB/E,KAAKgF,MAAO,CAAAF,KAAA,CAAOG,KAAA,IAC3CN,UAAW,CAAAM,KAAA,CAAMjF,MAAM0E,mBAAmB,CAAA,CAC5C;IACA,OAAO,CAACK,iBAAA;EACV;EACO,OAAA,IAAA;AACT;AAEA,SAASJ,UAAAA,CAAW3E,MAAkB0E,mBAA8B,EAAA;EAClE,MAAMQ,iBAAiB,CAAC,CAAClF,KAAKmF,QAAY,IAAA,CAAC,CAACnF,IAAK,CAAAoF,MAAA;EAE/C,OAAA,CAACf,sBAAsBrE,IAAI,CAAA,IAC3BqF,kBAAkBrF,IAAI,CAAA,IACrB,CAAC0E,mBAAuB,IAAAQ,cAAA;AAE7B;AAEA,SAASG,kBAAkBrF,IAAkB,EAAA;EAC3C,OACEA,IAAK,CAAA4E,QAAA,KAAa,QAClB,IAAA5E,IAAA,CAAKgE,SAAS,kBACd,IAAAhE,IAAA,CAAKgE,IAAS,KAAA,qBAAA,IACdH,OAAO7D,IAAM,EAAA,WAAW,CACxB,IAAA6D,MAAA,CAAO7D,MAAM,uBAAuB,CAAA,IACpC6D,MAAO,CAAA7D,IAAA,EAAM,MAAM,CACnB,IAAA6D,MAAA,CAAO7D,IAAM,EAAA,KAAK,KAClB6D,MAAO,CAAA7D,IAAA,EAAM,MAAM,CAAA,IACnB6D,OAAO7D,IAAM,EAAA,UAAU,CACvB,IAAA6D,MAAA,CAAO7D,MAAM,MAAM,CAAA;AAEvB;AC9BA,MAAMsF,WAAc,GAAA,CAAC,UAAY,EAAA,QAAA,EAAU,SAAS,MAAM,CAAA;AAE1C,SAAAC,eAAAA,CAAgBC,QAAgBnG,OAA2C,EAAA;EACnF,MAAAoG,IAAA,GAAOD,MACV,CAAAE,YAAA,EACA,CAAA9D,MAAA,CAAQgC,CAAM,IAAA,EAAEH,WAAY,CAAAjC,QAAA,CAASoC,CAAC,CAAA,IAAKA,EAAE+B,UAAW,CAAA,SAAS,CAAE,CAAA,CAAA,CACnEC,GAAI,CAAChC,KAAM4B,MAAO,CAAAK,GAAA,CAAIjC,CAAC,CAAC,CACxB,CAAAhC,MAAA,CAAQgC,CAAuB,IAAA,CAAC,CAACA,CAAC,CAClC,CAAAhC,MAAA,CAAQgC,CAAM,IAAA,CAACA,CAAE,CAAAwB,MAAA,IAAU,CAACxB,CAAA,CAAEuB,QAAQ,CACtC,CAAAS,GAAA,CAAKhC,CAAA,IAAMkC,aAAc,CAAAlC,CAAA,EAAG4B,MAAQ,EAAAnG,OAAO,CAAC,CAAA,CAC5CuC,MAAO,CAACgC,CAAM,IAAA;IACb,IAAI,QAAQA,CAAK,IAAAA,CAAA,CAAEmC,MAAM,CAACnC,CAAA,CAAEmC,GAAG5F,MAAQ,EAAA;MAC9B,OAAA,KAAA;IACT;IACA,IAAI,QAAQyD,CAAK,IAAAA,CAAA,CAAE3C,MAAM,CAAC2C,CAAA,CAAE3C,GAAGd,MAAQ,EAAA;MAC9B,OAAA,KAAA;IACT;IACA,IAAI,YAAYyD,CAAK,IAAAA,CAAA,CAAEoB,UAAU,CAACpB,CAAA,CAAEoB,OAAO7E,MAAQ,EAAA;MAC1C,OAAA,KAAA;IACT;IACO,OAAA,IAAA;EAAA,CACR,CAAA;EACEsF,IAAA,CAAAO,IAAA,CAAK,CAACC,CAAA,EAAGC,CAAG,KAAA;IA7CnB,IAAA/B,EAAA,EAAAG,EAAA;IA6CuB,OAAA,CAAA,CAAAH,EAAA,GAAA8B,CAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,CAAA,CAAGjC,SAAH,IAAW,GAAAG,EAAA,GAAA,EAAA,EAAIgC,eAAc7B,EAAG,GAAA4B,CAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,CAAA,CAAAlC,IAAA,KAAH,YAAW,EAAE,CAAA;EAAA,CAAC,CAAA;EACzD,OAAAyB,IAAA;AACT;AAEA,SAASK,aAAAA,CACPhC,UACA,EAAA0B,MAAA,EACAnG,OACsB,EAAA;EArDxB,IAAA8E,EAAA;EAsDE,IAAI,EAAC,CAAAA,EAAA,GAAAL,UAAA,CAAW9D,IAAX,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAmE,EAAA,CAAiBH,IAAM,CAAA,EAAA;IAClBX,OAAA,CAAAb,KAAA,CAAM,mBAAqB,EAAAsB,UAAA,CAAW9D,IAAI,CAAA;IAC5C,MAAA,IAAIe,MAAM,uBAAuB,CAAA;EACzC;EACA,MAAMqF,UAAmC,GAAA;IAAA;IAEvC,IAAI,CAAA/G,OAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,OAAA,CAASgH,UACT,IAAA,CAAA,CACA,GAAA;MAACC,GAAK,EAAA,EAAA,CAAGtF,MAAuB,CAAAhD,oBAAA,CAAA,CAAAgD,MAAA,CAAA8C,UAAA,CAAWE,IAAQ,CAAA;MAAAuC,KAAA,EAAO3H;IAAwB,CAAA;IACtFoF,MAAMF,UAAW,CAAAE,IAAA;IACjBwC,OAAO1C,UAAW,CAAA0C,KAAA;IAClBxG,IAAA,EAAM8D,WAAW9D,IAAK,CAAAgE,IAAA;IACtB,GAAGyC,aAAc,CAAAjB,MAAA,EAAQ1B,YAAYA,UAAW,CAAA9D,IAAA,CAAKgE,MAAM3E,OAAO;EAAA,CACpE;EAEA,OAAOqH,YAAYN,UAAU,CAAA;AAC/B;AAEA,SAASK,aACPA,CAAAjB,MAAA,EACAxF,IACA,EAAA+D,QAAA,EACA1E,OACA,EAAA;EA7EF,IAAA8E,EAAA,EAAAG,EAAA,EAAAqC,EAAA;EA8EQ,MAAAC,gBAAA,GAAA,CAAoBzC,EAAK,GAAAnE,IAAA,CAAAX,OAAA,KAAL,IAA+B,GAAA,KAAA,CAAA,GAAA8E,EAAA,CAAAyC,gBAAA;EACzD,OAAOF,WAAY,CAAA;IACjBrH,SAASuH,gBACL,GAAA;MACEA;IAEF,CAAA,GAAA,KAAA,CAAA;IACJC,MACE,EAAA7G,IAAA,CAAK4E,QAAa,KAAA,QAAA,KAAA,CAAYN,kCAAMjF,OAAN,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAiF,EAAA,CAAemB,IACzC,CAAA,GAAA,CAAAkB,EAAA,GAAA3G,IAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,IAAA,CAAMX,OAAN,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAsH,EAAA,CAAelB,IAAK,CAAAG,GAAA,CAAKkB,CAAG,IAAA;MAvFtC3C,IAAAA,GAAAA;MAuFiD,OAAA,OAAA2C,CAAA,KAAM,WAAWA,CAAI3C,GAAAA,CAAAA,GAAAA,GAAA2C,EAAEC,KAAF,KAAA,IAAA,GAAA5C,GAAW,GAAA,EAAA,CAAGnD,MAAE,CAAA8F,CAAA,CAAAN,KAAA,CAAA;IAC5E,CAAA,CAAA,GAAA,KAAA,CAAA;IACNvF,EAAA,EAAI,QAAQjB,IAAQ,IAAA+D,QAAA,KAAa,UAAUiD,OAAQ,CAAAhH,IAAA,EAAMwF,MAAQ,EAAAnG,OAAO,CAAI,GAAA,KAAA,CAAA;IAC5E0G,IACE,IAAQ,IAAA/F,IAAA,IAAQ+D,aAAa,WACzB,GAAAkD,cAAA,CAAejH,IAA2B,CAC1C,GAAA,KAAA,CAAA;IACNgF,MAAA,EACE,QAAY,IAAAhF,IAAA,IAAQsF,WAAY,CAAA9D,QAAA,CAASuC,QAAQ,CAAA,GAC7CmD,eAAgB,CAAA1B,MAAA,EAAQxF,IAAM,EAAAX,OAAO,CACrC,GAAA,KAAA;EAAA,CACP,CAAA;AACH;AAEA,SAAS6H,eAAAA,CACP1B,MACA,EAAA1B,UAAA,EACAzE,OACA,EAAA;EACA,OAAOyE,UAAW,CAAAkB,MAAA,CACfpD,MAAO,CAACuF,CAAG,IAAA;IA3GhB,IAAAhD,EAAA,EAAAG,EAAA;IA2GoB,OAAA,CAAA,CAAC,qBAAuB,EAAA,kBAAkB,CAAE,CAAA9C,QAAA,CAAA,CAAS8C,aAAEtE,IAAF,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAmE,EAAA,CAAQH,IAAR,KAAA,IAAA,GAAAM,EAAA,GAAgB,EAAE,CAAA;EAAC,CAAA,CACvF,CAAA1C,MAAA,CAAQuF,CAAA,IAAM1C,iBAAkB,CAAA0C,CAAA,CAAEnH,IAAI,CAAC,CACvC,CAAA4B,MAAA,CAAQuF,CAAA,IAAM,CAACA,CAAE,CAAAnH,IAAA,CAAKoF,MAAU,IAAA,CAAC+B,CAAE,CAAAnH,IAAA,CAAKmF,QAAQ,CAAA,CAChDS,IAAKX,KAAA,IAAUmC,eAAgB,CAAA5B,MAAA,EAAQP,KAAM,CAAAjF,IAAA,EAAMiF,KAAM,CAAAjB,IAAA,EAAM3E,OAAO,CAAC,CAAA;AAC5E;AAEA,SAAS+H,eACPA,CAAA5B,MAAA,EACAxF,IACA,EAAAgE,IAAA,EACA3E,OACwB,EAAA;EAtH1B,IAAA8E,EAAA,EAAAG,EAAA;EAuHE,MAAM+C,iBAAiB,CAAC,CAAC7B,MAAO,CAAAK,GAAA,CAAI7F,6BAAMgE,IAAI,CAAA;EACxC,MAAAD,QAAA,GAAWsD,iBAAiBrH,IAAK,CAAAgE,IAAA,GAAA,CAAOM,gBAAKtE,IAAL,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAmE,EAAA,CAAWH,SAAX,IAAmB,GAAAM,EAAA,GAAA,EAAA;EACjE,OAAOoC,WAAY,CAAA;IACjB,KAAIrH,OAAS,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,OAAA,CAAAgH,UAAA,IAAa,CAAK,CAAA,GAAA;MAACE,OAAO1H;IAA6B,CAAA;IACpEmF,IAAA;IACAhE,IAAM,EAAA+D,QAAA;IACNyC,OAAOxG,IAAK,CAAAwG,KAAA;IACZ,GAAGC,aAAA,CAAcjB,MAAQ,EAAAxF,IAAA,EAAM+D,UAAU1E,OAAO;EAAA,CACjD,CAAA;AACH;AAEA,SAAS2H,OAAAA,CACPM,SACA,EAAA9B,MAAA,EACAnG,OAC0B,EAAA;EACnB,OAAAiI,SAAA,CAAUrG,EACd,CAAAW,MAAA,CAAQ5B,IAAA,IAASyE,iBAAkB,CAAAzE,IAAI,CAAC,CAAA,CACxC4F,GAAI,CAAChC,CAAM,IAAA;IACV,OAAOwD,eAAgB,CAAA5B,MAAA,EAAQ5B,CAAG,EAAAA,CAAA,CAAEI,MAAM3E,OAAO,CAAA;EAAA,CAClD,CAAA;AACL;AAEA,SAAS4H,eAAejH,IAA2B,EAAA;EACjD,OAAOA,IAAK,CAAA+F,EAAA,CAAGH,GAAI,CAAChC,CAAO,KAAA;IACzB5D,IAAA,EAAMuH,KAAc,CAAA3D,CAAA,CAAEI,IAAI;EAC1B,CAAA,CAAA,CAAA;AACJ;AAEA,SAAS0C,YAA2Cc,GAAW,EAAA;EAC7DC,MAAA,CAAOC,IAAK,CAAAF,GAAG,CAAE,CAAAG,OAAA,CAASC,GAAS,IAAAJ,GAAA,CAAII,GAAG,CAAA,KAAM,SAAY,OAAOJ,GAAA,CAAII,GAAG,CAAA,GAAI,CAAG,CAAA,CAAA;EAC1E,OAAAJ,GAAA;AACT;AC/IA,MAAMK,UAAkC,EAAC;AAEzC,MAAMC,YAAe,GAAA,aAAA;AAEd,SAASC,cAAiBA,CAAA,EAAA;EAC/B,MAAMvC,SAASwC,SAAU,EAAA;EACzB,MAAM9I,MAAS,GAAA4D,SAAA,CAAU;IAACX,UAAA,EAAY;EAAa,CAAA,CAAA;EACnD,MAAM,CAAC8F,MAAA,EAAQC,SAAS,CAAA,GAAI3F,SAAS,KAAK,CAAA;EAC1C,MAAM,CAAC4F,SAAA,EAAWC,YAAY,CAAA,GAAI7F,SAASuF,YAAY,CAAA;EAEvD,MAAM;IAACpF;EAAA,CAAQ,GAAAN,iBAAA,CAA0C,gCAAkC,EAAA;IACzFpC,IAAM,EAAApB;EAAA,CACP,CAAA;EAEK,MAAAyJ,KAAA,GAAQC,QAAQ,MAAM;IAC1B,OAAO/C,gBAAgBC,MAAM,CAAA;EAAA,CAC/B,EAAG,CAACA,MAAM,CAAC,CAAA;EAEL,MAAA+C,UAAA,GAAaC,YAAY,MAAM;IACnCN,SAAA,CAAU,IAAI,CAAA;IACd,IAAIO,OAAU,GAAA,IAAA;IACd,eAAeC,KAAQA,CAAA,EAAA;MACRN,YAAA,CAAA,YAAA,CAAapH,aAAMb,MAAQ,CAAA,CAAA;MAClC,MAAAwI,WAAA,GAAczJ,OAAOyJ,WAAY,EAAA;MACvC,KAAA,IAAS/H,CAAI,GAAA,CAAA,EAAGA,CAAI,GAAAyH,KAAA,CAAMlI,QAAQS,CAAK,EAAA,EAAA;QACrC,IAAI,CAAC6H,OAAS,EAAA;UACZ;QACF;QACM,MAAAzI,IAAA,GAAOqI,MAAMzH,CAAC,CAAA;QACd,MAAA+H,WAAA,CAAYC,gBAAgB5I,IAA6B,CAAA;QAC/D,IAAIY,CAAI,GAAA,CAAA,IAAKA,CAAI,GAAA,EAAA,KAAO,CAAG,EAAA;UACzB,MAAM+H,YAAYE,MAAO,EAAA;UACzBF,WAAA,CAAYG,KAAM,CAAA,CAAA;UAClBV,YAAA,CAAa,UAAW,CAAApH,MAAA,CAAAJ,CAAA,EAAC,GAAI,CAAA,CAAAI,MAAA,CAAAqH,KAAA,CAAMlI,MAAQ,CAAA,CAAA;QAC7C;MACF;MACA,MAAMwI,YAAYE,MAAO,EAAA;IAC3B;IACAH,KAAA,CAAA,EACGK,KAAM,CAAA1F,OAAA,CAAQb,KAAK,CAAA,CACnBwG,QAAQ,MAAM;MACbd,SAAA,CAAU,KAAK,CAAA;MACfE,YAAA,CAAaN,YAAY,CAAA;IAAA,CAC1B,CAAA;IACH,OAAO,MAAM;MACDW,OAAA,GAAA,KAAA;MACVP,SAAA,CAAU,KAAK,CAAA;MACfE,YAAA,CAAaN,YAAY,CAAA;IAAA,CAC3B;KACC,CAACO,KAAA,EAAOnJ,MAAQ,EAAAgJ,SAAA,EAAWE,YAAY,CAAC,CAAA;EAE3C,OACG,eAAAa,GAAA,CAAAC,IAAA,EAAA;IAAKC,OAAS,EAAA,CAAA;IAAGC,UAAS,MAAO;IAAAC,KAAA,EAAO;MAACC,MAAA,EAAQ;IAAoB,CAAA;IACpEC,QAAC,iBAAAC,IAAA,CAAAC,KAAA,EAAA;MAAMC,OAAO,CACZ;MAAAH,QAAA,EAAA,CAAA,eAAAN,GAAA,CAACU,GACC,EAAA;QAAAJ,QAAA,iBAAAN,GAAA,CAACW,MAAA,EAAA;UACCC,IAAA,EAAM5B,wBAAUgB,GAAA,CAAAa,OAAA,EAAA;YAAQT,OAAO;cAACU,SAAA,EAAW;;UAAI,CAAA,CAAK,GAAAC,QAAA;UACpDC,IAAM,EAAA9B,SAAA;UACN+B,QAAU,EAAAjC,MAAA;UACVkC,OAAS,EAAA5B;QAAA,CAAA;OAEb,CAAA,EACA,eAAAiB,IAAA,CAACY,IAAK,EAAA;QAAAC,GAAA,EAAK,CACT;QAAAd,QAAA,EAAA,CAAC,eAAAC,IAAA,CAAAC,KAAA,EAAA;UAAMC,OAAO,CACZ;UAAAH,QAAA,EAAA,CAAA,eAAAN,GAAA,CAACqB;YAAMf,QAAa,EAAA;UAAA,CAAA,CAAA,EAAA,mBACnB,IACE,EAAA;YAAAA,QAAA,EAAAlB,KAAA,CAAMzC,GAAI,CAAC5F,uBACTiJ,GAAA,CAAA,IAAA,EAAA;cACCM,QAAC,EAAA,eAAAN,GAAA,CAAAsB,WAAA,EAAA;gBAAYC,YAAYxK;cAAM,CAAA;YAAA,CAAA,EADxBA,IAAK,CAAAgE,IAEd,CACD;WACH,CAAA;SACF,CAAA,EAEA,eAAAwF,IAAA,CAACC,KAAM,EAAA;UAAAC,KAAA,EAAO,CACZ;UAAAH,QAAA,EAAA,CAAA,eAAAN,GAAA,CAACqB;YAAMf,QAAa,EAAA;UAAA,CAAA,CAAA,qBACnB,IACG,EAAA;YAAAA,QAAA,EAAA,CAAA7G,IAAA,IAAA,IAAA,GAAAA,IAAA,GAAQmF,OAAS,EAAAjC,GAAA,CAAK5F,IACtB,IAAA,eAAAiJ,GAAA,CAAC,IACC,EAAA;cAAAM,QAAA,EAAA,eAAAN,GAAA,CAACsB;gBAAYC,UAAY,EAAAxK;cAAM,CAAA;eADxBA,IAAK,CAAAgE,IAEd,CACD;UACH,CAAA,CAAA;SACF,CAAA;OACF,CAAA;IACF,CAAA;EACF,CAAA,CAAA;AAEJ;AAEA,SAASuG,WAAAA,CAAAE,IAAA,EAA8D;EAAA,IAAlD;IAACD;GAAiD,GAAAC,IAAA;EAC/D,MAAAC,GAAA,GAAMpC,OAAQ,CAAA,MAAMqC,IAAK,CAAAC,SAAA,CAAUJ,UAAY,EAAA,IAAA,EAAM,CAAC,CAAA,EAAG,CAACA,UAAU,CAAC,CAAA;EACpE,OAAA,eAAAvB,GAAA,CAAC;IAAKM,QAAI,EAAAmB;EAAA,CAAA,CAAA;AACnB;ACrGO,MAAMG,aAAgB,GAAA,eAAA;ACe7B,MAAMC,cAAiB,GAACnK,EAAwB,IAAAA,EAAA,CAAGmK,cAAe,CAAA,CAAA;AAE3D,SAASC,aACdC,KACA,EAAA;EAnBF,IAAA7G,EAAA;EAoBQ,MAAA;IACJ8G,kBAAA;IACAC,cAAA;IACAC,SAAW,EAAApE,KAAA;IACXqE,UAAA;IACAC,YAAA;IACAC,SAAA;IACAC,SAAA;IACAC,MAAA;IACAC,QAAA;IACAC,OAAA;IACAC,UAAA;IACAC,qBAAA;IACAC,sBAAA;IACAC,kBAAA;IACAC,KAAA;IACAC;MACEC,eAAgB,CAAA,CAAA;EAEpB,MAAMC,gBAAgBC,gBAAiB,EAAA;EACjC,MAAAC,QAAA,GAAWC,oBAAoBjB,UAAU,CAAA;EAM/C,MAAMkB,eAAehE,OAAQ,CAAA,MAAMiE,kBAAmB,CAAA,CAAA,EAAG,EAAE,CAAA;EAErD,MAAAC,QAAA,GAAA,CAAWrI,EAAW,GAAAmH,SAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,SAAA,CAAAmB,mBAAA,KAAX,IAAgC,GAAA,KAAA,CAAA,GAAAtI,EAAA,CAAAuI,OAAA;EAEjD3J,SAAA,CAAU,MAAM;IACd,MAAM4J,MAAMT,aAAc,CAAAU,IAAA,CACvBC,cAAe,CAAAzB,UAAA,EAAYC,YAAY,CACvC,CAAA5K,IAAA,CACCqM,GAAA,CAAK/M,KAAU,IAAA;MACT,IAAAA,KAAA,CAAMC,SAAS,UAAY,EAAA;QAChBsM,YAAA,CAAAS,OAAA,CAAQC,oBAAqB,CAAAjN,KAAK,CAAC,CAAA;MAClD;MAEI,IAAAA,KAAA,CAAMC,SAAS,QAAU,EAAA;QACdsM,YAAA,CAAAS,OAAA,CAAQE,kBAAmB,CAAAlN,KAAK,CAAC,CAAA;MAChD;IAAA,CACD,GAEFuD,SAAU,CAAA,CAAA;IAEb,OAAO,MAAM;MACXqJ,GAAA,CAAInJ,WAAY,CAAA,CAAA;IAAA,CAClB;KACC,CAAC4H,UAAA,EAAYc,aAAe,EAAAb,YAAA,EAAciB,YAAY,CAAC,CAAA;EAEpD,MAAAY,MAAA,GAASC,OAAQ,CAAApG,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,KAAA,CAAOqG,IAAI,CAAA;EAClCrK,SAAA,CAAU,MAAM;IACd,IAAImK,MAAQ,EAAA;MAKVZ,YAAA,CAAaS,OAAQ,CAAA;QACnB/M,IAAM,EAAA,UAAA;QACNqN,SAAS,EAAC;QACVC,QAAU,EAAAvG;MAAA,CACX,CAAA;IACH;EAAA,CAGF,EAAG,CAACmG,MAAM,CAAC,CAAA;EAEL,MAAAK,OAAA,GAAU1K,OAA8B,IAAI,CAAA;EAElDE,SAAA,CAAU,MAAM;IACdyK,oBAAA,CAAqBD,QAAQvK,OAAQ,CAAA;EACvC,CAAA,EAAG,EAAE,CAAA;EAEL,IAAIwJ,QAAU,EAAA;IACZ,0BACG7C,GAAI,EAAA;MAAA8D,EAAA,EAAG;MAAQ,GAAGzC,KAAA;MAAO0C,KAAKH,OAC7B;MAAAhE,QAAA,iBAAAN,GAAA,CAACmB,IAAA,EAAA;QACCuD,KAAM,EAAA,QAAA;QACNC,SAAU,EAAA,QAAA;QACVtE,MAAO,EAAA,MAAA;QACPuE,OAAQ,EAAA,QAAA;QACR1E,OAAS,EAAA,CAAA;QACT2E,MAAO,EAAA,QAAA;QAEPvE,QAAC,EAAA,eAAAN,GAAA,CAAA8E,IAAA,EAAA;UAAKC,IAAM,EAAA,CAAA;UAAGzE,QAGf,EAAA;SAAA;MAAA,CAEJ;IAAA,CAAA,CAAA;EAEJ;EAEA,OACG,eAAAN,GAAA,CAAAU,GAAA,EAAA;IAAI8D,EAAG,EAAA,MAAA;IAAQ,GAAGzC,KAAA;IAAOiD,QAAU,EAAAnD,cAAA;IAAgB4C,GAAK,EAAAH,OAAA;IACtDhE,QACC,EAAAwC,KAAA,GAAAR,SAAA,KAAc,IACZ,kBAAAtC,GAAA,CAACmB,IAAA,EAAA;MACCuD,KAAM,EAAA,QAAA;MACNC,SAAU,EAAA,QAAA;MACVtE,MAAO,EAAA,MAAA;MACPuE,OAAQ,EAAA,QAAA;MACR1E,OAAS,EAAA,CAAA;MACT2E,MAAO,EAAA,QAAA;MAEPvE,QAAC,EAAA,eAAAN,GAAA,CAAA8E,IAAA,EAAA;QAAKC,IAAM,EAAA,CAAA;QAAGzE,QAAmB,EAAA;OAAA;IAAA,CAAA,CAGpC,kBAAAN,GAAA,CAACiF,WAAA,EAAA;MACCC,uBAAyB,EAAA7B,YAAA;MACzBrB,kBAAA;MACAC,cAAA;MACAkD,WAAW7C,SAAU,CAAA6C,SAAA;MACrBC,SAAS9C,SAAU,CAAA8C,OAAA;MACnBC,SAAS/C,SAAU,CAAA+C,OAAA;MACnBC,QAAQhD,SAAU,CAAAgD,MAAA;MAClBC,EAAG,EAAA,MAAA;MACHC,SAASlD,SAAU,CAAAkD,OAAA;MACnBhD,QAAA;MACAiD,kBAAoB,EAAA9C,qBAAA;MACpB+C,UAAY,EAAAnD,MAAA;MACZoD,WAAa,EAAAlD,OAAA;MACbC,UAAA;MACAkD,sBAAwB,EAAAhD,sBAAA;MACxBiD,kBAAoB,EAAAhD,kBAAA;MACpBM,QAAA;MACAjH,UAAUoG,SAAU,CAAApG,QAAA;MACpBrB,YAAYyH,SAAU,CAAAzH,UAAA;MACtBkI,UAAA;MACAjF,OAAOwE,SAAU,CAAAxE;IAAA,CAAA,CAIrB,kBAAAyC,IAAA,CAACY,IAAA,EAAA;MACCuD,KAAM,EAAA,QAAA;MACNC,SAAU,EAAA,QAAA;MACVtE,MAAO,EAAA,MAAA;MACPuE,OAAQ,EAAA,QAAA;MACR1E,OAAS,EAAA,CAAA;MACT2E,MAAO,EAAA,QAAA;MAEPvE,QAAA,EAAA,CAAC,eAAAN,GAAA,CAAAa,OAAA,EAAA;QAAQiF,OAAK;MAAC,CAAA,CAAA,EAAA,eAEd9F,GAAA,CAAAU,GAAA,EAAA;QAAII,SAAW,EAAA,CAAA;QACdR,QAAC,EAAA,eAAAN,GAAA,CAAA8E,IAAA,EAAA;UAAKJ,KAAM,EAAA,QAAA;UAASoB,KAAK,EAAA,IAAA;UAACf,IAAM,EAAA,CAAA;UAAGzE;QAEpC,CAAA;OACF,CAAA;IAAA,CAGN;EAAA,CAAA,CAAA;AAEJ;AAEA,SAASyD,qBAAqBjN,KAAwC,EAAA;EAC9D,MAAAsN,OAAA,GAAUtN,KAAM,CAAAiP,SAAA,CAAUpJ,GAAI,CAACqJ,OAAQA,GAAI,CAAAC,KAAK,CAAE,CAAAtN,MAAA,CAAOuL,OAAO,CAAA;EAE/D,OAAA;IACLnN,IAAM,EAAA,UAAA;IACNsN,UAAUvN,KAAM,CAAAoP,QAAA;IAChB9B,OAAS,EAAA+B,mBAAA,CAAoBrP,KAAM,CAAAsP,MAAA,EAAQhC,OAAO;EAAA,CACpD;AACF;AAEA,SAASJ,mBAAmBlN,KAAsC,EAAA;EAC1D,MAAAuP,aAAA,GAAgBvP,KAAM,CAAAwP,eAAA,CAAgB3J,GAAI,CAACqJ,OAAQA,GAAI,CAAAC,KAAK,CAAE,CAAAtN,MAAA,CAAOuL,OAAO,CAAA;EAC5E,MAAAqC,YAAA,GAAezP,KAAM,CAAA0P,cAAA,CAAe7J,GAAI,CAACqJ,OAAQA,GAAI,CAAAC,KAAK,CAAE,CAAAtN,MAAA,CAAOuL,OAAO,CAAA;EAEzE,OAAA;IACLnN,IAAM,EAAA,QAAA;IACNsN,UAAUvN,KAAM,CAAAoP,QAAA;IAChB9B,OAAS,EAAA+B,mBAAA,CAAoB,QAAU,EAAAE,aAAa,CAAE,CAAAtO,MAAA,CACpDoO,mBAAA,CAAoB,SAASI,YAAY,CAC3C;EAAA,CACF;AACF;AC5La,MAAAE,oBAAA,GAAuBC,cAAqD,KAAS,CAAA,CAAA;AAC3F,MAAMC,+BAA+BF,oBAAqB,CAAAG,QAAA;ACgBjE,MAAMC,QAAW,GAAA,CAAA;AAEV,SAASC,YAAYjM,UAAwB,EAAA;EAClD,IAAIF,CAA4B,GAAAE,UAAA;EAEhC,OAAOF,CAAG,EAAA;IACR,IAAIA,CAAE,CAAAiG,IAAA,EAAM,OAAOjG,CAAE,CAAAiG,IAAA;IACrBjG,CAAA,GAAIA,CAAE,CAAA5D,IAAA;EACR;EAEI,IAAA6D,MAAA,CAAOC,YAAY,MAAM,CAAA,EAAU,OAAAkM,QAAA;EACnC,IAAAnM,MAAA,CAAOC,YAAY,OAAO,CAAA,EAAU,OAAAmM,SAAA;EACxC,IAAInM,UAAW,CAAAc,QAAA,KAAa,OAAW,IAAAlB,mBAAA,CAAoBI,UAAU,CAAA,EAAU,OAAAoM,gBAAA;EAE/E,IAAIpM,WAAWc,QAAa,KAAA,OAAA,EAAgB,OAAAuL,SAAA;EAC5C,IAAIrM,WAAWc,QAAa,KAAA,QAAA,EAAiB,OAAAwL,cAAA;EAC7C,IAAItM,WAAWc,QAAa,KAAA,QAAA,EAAiB,OAAAyL,UAAA;EAEtC,OAAAC,YAAA;AACT;AAEO,SAASC,yBAAyBzM,UAA0C,EAAA;EA9CnF,IAAAK,EAAA;EA+CQ,MAAAa,MAAA,GAASwL,aAAa1M,UAAU,CAAA;EAC/B,OAAA,CACL;IACE8D,GAAK,EAAA5I,eAAA;IACL6K,IAAA,EAAA,CAAM1F,EAAW,GAAAL,UAAA,CAAA+F,IAAA,KAAX,IAAmB,GAAA1F,EAAA,GAAAmM,YAAA;IACzB9J,KAAO,EAAA,qBAAA;IACPiK,MAAM,EAAC;IACP3M;EACF,CAAA,EAEA,GAAGkB,MAAA,CACL;AACF;AAEO,SAASwL,YACdA,CAAA1M,UAAA,EACA4M,MACA,EACY;EAAA,IADZC,KAAA,GAAAzQ,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAQ,CACI;EACZ,IAAIyQ,SAASb,QAAU,EAAA;IACrB,OAAO,EAAC;EACV;EACA,OAAOhM,UAAW,CAAAkB,MAAA,CACfpD,MAAO,CAACuF,KAAM,CAACA,CAAA,CAAEnD,IAAK,CAAA2B,UAAA,CAAW,GAAG,CAAC,CACrC,CAAAiL,OAAA,CAAS3L,KAAU,IAAA;IAvExB,IAAAd,EAAA;IAwEY,MAAAsM,IAAA,GAAaC,MAAS,GAAA,CAAC,GAAGA,MAAA,CAAOD,IAAM,EAAAxL,KAAA,CAAMjB,IAAI,CAAA,GAAI,CAACiB,KAAA,CAAMjB,IAAI,CAAA;IACtE,MAAMwC,KAAQ,GAAA,CAAArC,EAAA,GAAAc,KAAA,CAAMjF,IAAK,CAAAwG,KAAA,KAAX,YAAoBvB,KAAM,CAAAjB,IAAA;IACxC,MAAM6M,QAAqB,GAAA;MACzBjJ,GAAA,EAAKkJ,aAAaL,IAAI,CAAA;MACtBA,IAAA;MACAjK,KAAA,EAAOkK,SAAS,CAACA,MAAA,CAAOlK,OAAOA,KAAK,CAAA,CAAEuK,IAAK,CAAA,KAAK,CAAI,GAAAvK,KAAA;MACpD1C,YAAYmB,KAAM,CAAAjF,IAAA;MAClB6J,IAAA,EAAMkG,WAAY,CAAA9K,KAAA,CAAMjF,IAAI;IAAA,CAC9B;IACA,MAAMgF,MACJ,GAAAC,KAAA,CAAMjF,IAAK,CAAA4E,QAAA,KAAa,QAAW,GAAA4L,YAAA,CAAavL,KAAM,CAAAjF,IAAA,EAAM6Q,QAAU,EAAAF,KAAA,GAAQ,CAAC,CAAA,GAAI,EAAC;IAEtF,IAAI,CAAClM,iBAAA,CAAkBQ,KAAM,CAAAjF,IAAA,EAAM,IAAI,CAAG,EAAA;MACjC,OAAAgF,MAAA;IACT;IACO,OAAA,CAAC6L,QAAU,EAAA,GAAG7L,MAAM,CAAA;EAAA,CAC5B,CAAA;AACL;AAEgB,SAAAgM,gBAAAA,CACdC,oBACAR,IACsB,EAAA;EACtB,MAAMS,gBAAmB,GAAA5I,OAAA,CACvB,MACE2I,sBAAsBE,kBAAmB,CAAAF,kBAAkB,IACvDV,wBAAyB,CAAAU,kBAAkB,IAC3C,EAAC,EACP,CAACA,kBAAkB,CAAA,CACrB;EAEA,OAAO3I,QAAQ,MAAM;IACnB,OAAOmI,OAAOS,gBAAkB,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,gBAAA,CAAAvN,IAAA,CAAMwD,CAAM,IAAAA,CAAA,CAAES,QAAQ6I,IAAQ,CAAA,GAAA,KAAA,CAAA;EAAA,CAC7D,EAAA,CAACS,gBAAkB,EAAAT,IAAI,CAAC,CAAA;AAC7B;AASO,SAASW,cAAcnM,KAAkB,EAAA;EAnHhD,IAAAd,EAAA,EAAAG,EAAA;EAoHE,MAAMR,aAAamB,KAAO,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,KAAA,CAAAnB,UAAA;EAC1B,OAAA,CAAOQ,EAAY,GAAA,CAAAH,EAAA,GAAAL,UAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,UAAA,CAAA0C,KAAA,KAAZ,IAAqB,GAAArC,EAAA,GAAAL,UAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,UAAA,CAAYE,SAAjC,IAAyC,GAAAM,EAAA,GAAA,UAAA;AAClD;AAEO,SAAS+M,eAAkBA,CAAA,EAAA;EAChC,MAAMC,aAAaC,aAAc,EAAA;EAE1B,OAAAjJ,OAAA,CACL,MAAG;IA5HP,IAAAnE,EAAA;IA6HO,OAAA;MAAC,GAAGmN,UAAY;MAAAlS,MAAA,EAAA,CAAQ+E,gBAAW/E,MAAX,KAAA,IAAA,GAAA+E,EAAA,GAAqB,CAAA;KAAE;EAAA,CAAA,EAOlD,CAACmN,UAAU,CAAA,CACb;AACF;ACpIgB,SAAAE,gBAAAA,CAAoBhD,IAAYiD,OAAgC,EAAA;EACxE,MAAAC,KAAA,GAAQC,YAAa,CAAAnD,EAAA,EAAIiD,OAAO,CAAA;EAC9B,OAAAC,KAAA,CAAME,SAASF,KAAM,CAAAG,SAAA;AAC/B;ACHA,MAAMC,kBAAqB,GAAA,IAAIC,MAAO,CAAA,GAAA,CAAI/Q,MAAwB,CAAAlD,sBAAA,CAAA,CAAA;AAE3D,SAASkU,SAASxD,EAAY,EAAA;EAC5B,OAAAA,EAAA,CAAGyD,OAAQ,CAAA,SAAA,EAAW,EAAE,CAAA;AACjC;AAEO,SAASC,iBAAiB7G,YAAsB,EAAA;EACrD,OAAO,GAAGrK,MAAyB,CAAAlD,sBAAA,CAAA,CAAAkD,MAAA,CAAAqK,YAAA,CAAA;AACrC;AAEO,SAAS8G,6BAA6B3D,EAAY,EAAA;EAChD,OAAAA,EAAA,CAAGyD,OAAQ,CAAAH,kBAAA,EAAoB,EAAE,CAAA;AAC1C;AAEO,SAASM,oBAAoBhH,UAAoB,EAAA;EAC/C,OAAA,EAAA,CAAGpK,MAA+B,CAAAjD,4BAAA,CAAA,CAAAiD,MAAA,CAAAgR,QAAA,CAAS5G,UAAU,CAAA,CAAA;AAC9D;AChBO,MAAMiH,sBACX,GAAA,wJAAA;AAEK,MAAMC,mBACX,GAAA,oKAAA;AAEK,MAAMC,eAAkB,GAAA,qCAAA;AAExB,MAAMC,QACX,GAAA,mIAAA;AAEK,MAAMC,WAAc,GAAA,gBAAA;AAEpB,MAAMC,WAAc,GAAA,kBAAA;AAEpB,MAAMC,gBAAmB,GAAA,WAAA;AAEnB,MAAAC,sBAAA,GAAyBC,sBAAsB,EAAE,CAAA;ACWvD,SAASC,uBAAwBA,CAAAC,KAAA,EAGqB;EAAA,IAHrB;IACtC3H,UAAA;IACAtH;EACF,CAA6D,GAAAiP,KAAA;EAC3D,MAAMC,mBAAmBlP,UAAW,CAAAE,IAAA;EACpC,MAAMiP,cAAcC,cAAe,EAAA;EAEnC,MAAMlH,aAAamH,mBAAoB,CAAAnB,QAAA,CAAS5G,UAAU,CAAG,EAAAtH,UAAA,CAAWE,IAAI,CAAE,CAAAgI,UAAA;EAC9E,MAAMoH,cAAiB,GAAA5B,gBAAA,CACrBU,iBAAiBc,gBAAgB,CAAA,EACjC/U,sBAAA,CACF;EACA,MAAMoV,iBAAoB,GAAA7B,gBAAA,CACxBY,mBAAA,CAAoBhH,kCAAc,EAAE,CAAA,EACpC3M,yBAAA,CACF;EAEA,MAAMS,MAAS,GAAA4D,SAAA,CAAU;IAACX,UAAA,EAAY;EAAa,CAAA,CAAA;EAEnDY,SAAA,CAAU,MAAM;IACd,IAAI,CAACqQ,cAAgB,EAAA;MACnBlU,MAAA,CAAOoU,iBAAkB,CAAA;QACvBhN,GAAA,EAAK4L,iBAAiBc,gBAAgB,CAAA;QACtCzM,KAAO,EAAAtI;MAAA,CACR,CAAA;IACH;EACC,CAAA,EAAA,CAACiB,MAAQ,EAAAkU,cAAA,EAAgBJ,gBAAgB,CAAC,CAAA;EAE7C,OAAO1K,QAAQ,MAAM;IA1DvB,IAAAnE,EAAA,EAAAG,EAAA;IA2DI,IAAI,CAAC8O,cAAgB,EAAA;MACZ,OAAA,KAAA,CAAA;IACT;IACA,MAAMG,KAAQ,GAAA,CAAApP,EAAA,GAAAkP,iBAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,iBAAA,CAAmBE,KAAnB,KAAA,IAAA,GAAApP,EAAA,GAA4B,EAAC;IACrC,MAAAa,MAAA,GAAA,CAAA,CAAUV,sDAAgBU,MAAhB,KAAA,IAAA,GAAAV,EAAA,GAA0B,EAAI,EAAAsB,GAAA,CAAK4N,WAAmC,IAAA;MA/D1FrP,IAAAA,GAAAA;MAgEa,OAAA;QACL,GAAGqP,WAAA;QACHD,KAAA,EAAOA,MAAM3R,MAAO,CAAC6R,QAASA,IAAK,CAAAhD,IAAA,KAAS+C,YAAY/C,IAAI,CAAA;QAC5DiD,YAAA,EAAA,CAAcvP,MAAAqP,WAAY,CAAAE,YAAA,KAAZ,gBAAAvP,GACV,CAAAvC,MAAA,CAAQ+R,CAAA,IAAM,CAACA,CAAA,CAAEC,UAAUD,CAAE,CAAAC,MAAA,MAAWX,2CAAazE,EACtD,CAAA,CAAA,CAAA5I,GAAA,CAAKiO,WAAgB,IAAAC,mBAAA,CAAoBD,WAAa,EAAAN,KAAA,EAAOvH,UAAU,CAAA;MAAA,CAC5E;IAAA,CACD,CAAA;IACD,OAAOzE,KAA4B,CAAA;MACjC,GAAG6L,cAAA;MACHG,KAAO,EAAAA,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,KAAA,CAAO3N,GAAI,CAAC6N,IAAS,IAAA;QA1ElC,IAAAtP,GAAAG,EAAAA,GAAAA;QA2Ec,MAAAuP,WAAA,GAAA,CAAcvP,OAAAH,GAAA,GAAAa,MAAA,CACjBrB,KAAMwD,CAAA,IAAMA,CAAE,CAAAsJ,IAAA,KAASgD,IAAK,CAAAhD,IAAI,MADf,IAAAtM,GAAAA,KAAAA,CAAAA,GAAAA,GAAAA,CAEhBuP,iBAFgB,IAAApP,GAAAA,KAAAA,CAAAA,GAAAA,GAAAA,CAEFX,KAAM/C,CAAA,IAAMA,CAAE,CAAAmT,IAAA,KAASN,IAAK,CAAAO,cAAA,CAAA;QACvC,OAAA;UACL,GAAGP,IAAA;UACHI;QAAA,CACF;MAAA,CACF,CAAA;MACA7O;IAAA,CACD,CAAA;KACA,CAACoO,cAAA,EAAgBC,iBAAmB,EAAAJ,WAAA,EAAajH,UAAU,CAAC,CAAA;AACjE;AAEA,SAAS8H,mBAAAA,CACPD,WACA,EAAAI,GAAA,EACAjI,UACmB,EAAA;EA5FrB,IAAA7H,EAAA;EA6FE,MAAM+P,SAASlI,UAAW,CAAApK,MAAA,CAAQuS,MAAW,IAAAA,MAAA,CAAOC,UAAU,OAAO,CAAA;EAE/D,MAAAC,SAAA,GAAA,CAAA,CAAyBlQ,gDAAamQ,MAAb,KAAA,IAAA,GAAAnQ,EAAA,GAAuB,EAAI,EAAAyM,OAAA,CAAS2D,KAAU,IAAA;IACvE,IAAAA,KAAA,CAAMhO,UAAU,OAAS,EAAA;MAC3B,OAAOgO,MAAMhL,QAAS,CAAA3H,MAAA,CAAQ4S,CAAqB,IAAAA,CAAA,CAAEjO,UAAUhI,sBAAsB,CAAA;IACvF;IACA,OAAO,EAAC;EAAA,CACT,CAAA;EAEM,OAAA;IACL,GAAGsV,WAAA;IACHN,KAAA,EAAOU,IACJrS,MAAO,CAAC6R,QAASA,IAAK,CAAAO,cAAA,KAAmBH,WAAY,CAAAE,IAAI,CACzD,CAAAnS,MAAA,CACE6R,IAAA,IACCA,IAAK,CAAAgB,OAAA,uBACDC,IAAK,CAAA,CAAA,CAAEC,OAAQ,EAAA,GAAI,IAAID,IAAK,CAAAjB,IAAA,CAAKgB,OAAO,CAAA,CAAEE,QAAY,CAAA,GAAA/B,sBAC9D,CAAA;IACF5G,YAAYkI,MAAO,CAAAtS,MAAA,CAAQuS,UACzBE,SACG,CAAAzO,GAAA,CAAKgP,CAAM,IAAAA,CAAA,CAAEnE,IAAI,CAAA,CACjB7O,MAAO,CAAC+R,KAAmB,CAAC,CAACA,CAAC,CAAA,CAC9BhQ,IAAK,CAAC8M,QAASK,YAAa,CAAAqD,MAAA,CAAO1D,IAAI,CAAA,KAAMA,IAAI,CACtD;EAAA,CACF;AACF;ACnHA,SAASoE,YAAYC,EAAY,EAAA;EACzB,MAAA,CAACC,MAAMC,MAAM,CAAA,GAAIC,WAAYC,CAAA,IAAMA,CAAI,GAAA,CAAA,EAAG,CAAC,CAAA;EAEjDnS,SAAA,CAAU,MAAM;IACR,MAAAnC,CAAA,GAAIuU,WAAY,CAAAH,MAAA,EAAQF,EAAE,CAAA;IACzB,OAAA,MAAMM,cAAcxU,CAAC,CAAA;EAAA,CAC9B,EAAG,CAACkU,EAAE,CAAC,CAAA;EACA,OAAAC,IAAA;AACT;AAEgB,SAAAM,OAAAA,CAAAC,KAAA,EAAiC;EAAA,IAAzB;IAACC;GAAwB,GAAAD,KAAA;EAC/CT,WAAA,CAAY,GAAI,CAAA;EACV,MAAAW,SAAA,GAAYC,oBAAoBF,IAAO,GAAA,IAAIb,KAAKa,IAAI,CAAA,GAAA,eAAQ,IAAAb,IAAA,CAAA,CAAM,CAAA;EACjE,OAAA,eAAAlL,IAAA,CAAC,MAAK,EAAA;IAAAhD,KAAA,EAAOgP,SAAY;IAAAjM,QAAA,EAAA,CAAAiM,SAAA,EAAU,MAAA;EAAI,CAAA,CAAA;AAChD;ACbO,SAASE,WAAWjF,IAAqB,EAAA;EAC9C,OAAOnI,QAAQ,MAAM;IACnB,IAAImI,KAAKtQ,MAAQ,EAAA;MACf,OAAOwV,MAAMC,OAAQ,CAAAnF,IAAI,CAAI,GAAAK,YAAA,CAAaL,IAAI,CAAI,GAAAA,IAAA;IACpD;IACO,OAAAzR,eAAA;EAAA,CACT,EAAG,CAACyR,IAAI,CAAC,CAAA;AACX;AAEO,SAASoF,oBAAoBhC,WAAiC,EAAA;EAbrE,IAAA1P,EAAA;EAcS,OAAA,CAAAA,EAAA,GAAA0P,WAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,WAAA,CAAarN,UAAb,IAAsB,GAAArC,EAAA,GAAA,UAAA;AAC/B;;;;;;ACfA,IAAAA,IAAA,EAAAG,IAAA;AAyCA,MAAMwR,SAASC,SAAS,CAAA5R,IAAA,KAAAA,IAAA,GAAA6R,YAAA,CAAA,CAAA,2FAAA,CAAA,CAAA,CAAA,CAAA;AASxB,MAAMC,mBAAmBC,MAAO,CAAAlM,QAAQ,CAAf,CAAA1F,IAAA,KAAAA,IAAA,GAAgB0R,iCACpB,wBAAN,CAAA,CAAA,CAAA,EAAAF,MAAA,CAAA;AAGf,MAAMK,WAAc,GAAA;EAClBC,OAAS,EAAA;IACP5P,KAAO,EAAA,UAAA;IACPqD,IAAM,EAAAwM,eAAA;IACNC,IAAM,EAAA;EACR,CAAA;EACA9T,KAAO,EAAA;IACLgE,KAAO,EAAA,OAAA;IACPqD,IAAM,EAAA0M,gBAAA;IACND,IAAM,EAAA;EACR,CAAA;EACAE,OAAS,EAAA;IACPhQ,KAAO,EAAA,WAAA;IACPqD,IAAM,EAAA4M,mBAAA;IACNH,IAAM,EAAA;EACR,CAAA;EACAI,OAAS,EAAA;IACPlQ,KAAO,EAAA,SAAA;IACPqD,IAAM,EAAA8M,SAAA;IACNL,IAAM,EAAA;EACR;AACF,CAAA;AAEO,SAASM,6BAA6B5L,KAA0C,EAAA;EACrF,MAAM;IAACuI,KAAA;IAAOG,YAAc;IAAAtI,UAAA;IAAYyL;GAAc,GAAA7L,KAAA;EAEtD,MAAM9L,MAAS,GAAA4D,SAAA,CAAU;IAACX,UAAA,EAAY;EAAa,CAAA,CAAA;EACnD,MAAM2U,SAAY,GAAAtO,WAAA,CACfuO,OAAoB,IAAA;IACnB,IAAI,CAAC3L,UAAY,EAAA;MACf;IACF;IACM,MAAA4L,WAAA,GAAc5E,oBAAoBhH,UAAU,CAAA;IAClD,MAAM6L,WAAW,EAAG,CAAAjW,MAAA,CAAAuG,KAAA,CAA+B,OAAO,CAAA,EAAC,YAAWvG,MAAO,CAAA+V,OAAA,EAAA,IAAA,CAAA;IAE1E7X,MAAA,CAAAgQ,KAAA,CAAM8H,WAAW,CAAA,CACjBE,GAAI,CAAA;MACH,CAAC,EAAG,CAAAlW,MAAA,CAAAiW,QAAA,EAAQ,GAAI,CAAA,CAAAjW,MAAA,CAAAuG,KAAA,CAA6B,OAAO,CAAA,CAAG,GAAG,eAAA,IAAImN,IAAK,CAAA,CAAA,CAAEyC,WAAY,CAAA,CAAA;MACjF,CAAC,GAAGnW,MAAQ,CAAAiW,QAAA,EAAA,GAAA,CAAA,CAAIjW,aAA6B,QAAQ,CAAA,CAAG,GACtDuG,KAAA,CAAuB,SAAS;IACnC,CAAA,CACA,CAAAsB,MAAA,CACA,CAAA,CAAAE,KAAA,CAAM1F,QAAQb,KAAK,CAAA;EACxB,CAAA,EACA,CAACtD,QAAQkM,UAAU,CAAA,CACrB;EAEM,MAAAgM,WAAA,GAAc9O,QAAQ,MAAM;IArGpCnE,IAAAA,GAAAA;IAsGU,MAAAP,CAAA,GAAA,CACJO,MAAAoP,KACI,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,KAAA,CAAA3R,MAAA,CACC6R,IAAA,IACCA,IAAK,CAAAgB,OAAA,uBACDC,IAAK,CAAA,CAAA,CAAEC,OAAQ,EAAA,GAAI,IAAID,IAAK,CAAAjB,IAAA,CAAKgB,OAAO,CAAA,CAAEE,QAAY,CAAA,GAAA/B,sBAAA,CAE7D,CAAAhN,GAAA,CAAK6N,IAAoC,IAAA;MA7GlDtP,IAAAA,GAAAA;MA8GU,MAAM0P,cAAcH,YAAc,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,YAAA,CAAA/P,IAAA,CAAM/C,CAAM,IAAAA,CAAA,CAAEmT,SAASN,IAAK,CAAAO,cAAA,CAAA;MACvD,OAAA;QACL,GAAGP,IAAA;QACHjN,KAAA,EAAOqQ,cAAa1S,GAAA,GAAAsP,IAAA,CAAKjN,UAAL,IAAArC,GAAAA,GAAAA,GAAc0R,mBAAoB,CAAAhC,WAAW,CAAI,GAAA,KAAA,CAAA;QACrEwD,MAAQ,EAAAA,CAAA,KAAMP,SAAU,CAAArD,IAAA,CAAKM,IAAI;MAAA,CACnC;IAAA,CACF,CAAA,KAbF,IAAA5P,GAAAA,GAAAA,GAaQ,EAAC;IACTP,CAAA,CAAAoC,IAAA,CAAK,CAACC,CAAA,EAAGC,CAAG,KAAA;MArHlB,IAAA/B,GAAAG,EAAAA,GAAAA;MAqHqB,OAAA,IAAIoQ,MAAKvQ,GAAA,GAAA+B,CAAA,CAAEuO,YAAF,IAAAtQ,GAAAA,GAAAA,GAAa,EAAE,CAAE,CAAAwQ,OAAA,CAAA,IAAY,IAAID,IAAA,CAAA,CAAKpQ,MAAA2B,CAAE,CAAAwO,OAAA,KAAF,OAAAnQ,GAAa,GAAA,EAAE,EAAEqQ,OAAQ,EAAA;IAAA,CAAC,CAAA;IACnF,OAAA/Q,CAAA;KACN,CAAC2P,KAAA,EAAOG,YAAc,EAAAoD,SAAA,EAAWD,UAAU,CAAC,CAAA;EAI/C,MAAMS,SAAY,GAAAhP,OAAA,CAAQ,MAAM8O,WAAA,CAAYG,IAAK,CAAC3C,CAAM,IAAA,CAACA,CAAE,CAAA4C,KAAK,CAAG,EAAA,CAACJ,WAAW,CAAC,CAAA;EAChF,MAAMK,SAAY,GAAAnP,OAAA,CAChB,MAAM8O,WAAY,CAAAG,IAAA,CAAM3C,CAAA,IAAMA,EAAE8C,MAAW,KAAA,OAAA,IAAW9C,CAAE,CAAA8C,MAAA,KAAW,SAAS,CAAA,EAC5E,CAACN,WAAW,CAAA,CACd;EAEA,MAAM,CAACO,IAAA,EAAMC,OAAO,CAAA,GAAIrV,SAAS,KAAK,CAAA;EAEhC,MAAAsV,UAAA,GAAarP,WAAY,CAAA,MAAMoP,OAAQ,CAAC9Q,KAAM,CAACA,CAAC,CAAG,EAAA,EAAE,CAAA;EAE3D,MAAM,CAACgR,MAAA,EAAQC,SAAS,CAAA,GAAIxV,SAAmC,IAAI,CAAA;EACnE,MAAM,CAACyV,OAAA,EAASC,UAAU,CAAA,GAAI1V,SAAgC,IAAI,CAAA;EAE5D,MAAA2V,kBAAA,GAAqB1P,YAAY,MAAM;IAC3CoP,OAAA,CAAQ,KAAK,CAAA;EACf,CAAA,EAAG,EAAE,CAAA;EAELO,eAAA,CAAgBD,kBAAoB,EAAA,CAACJ,MAAQ,EAAAE,OAAO,CAAC,CAAA;EAE/C,MAAAI,YAAA,GAAe5P,YAAY,MAAM;IACrCoP,OAAA,CAAQ,KAAK,CAAA;IACLE,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,MAAA,CAAAO,KAAA,CAAA,CAAA;EAAA,CACV,EAAG,CAACP,MAAM,CAAC,CAAA;EAGT,sBAAA7O,GAAA,CAACqP,OAAA,EAAA;IACCC,aAAa,EAAA,IAAA;IACbC,wBAAUvP,GAAA,CAAAwP,QAAA,EAAA;MAASC,QAAU,EAAAN,YAAA;MAAc7E,OAAO6D;KAAa,CAAA;IAC/DO,IAAM,EAAAA,IAAA,IAAQ,CAAC,EAACP,WAAa,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,WAAA,CAAAjX,MAAA,CAAA;IAC7BwY,SAAU,EAAA,KAAA;IACVC,MAAM,EAAA,IAAA;IACNlL,GAAK,EAAAuK,UAAA;IACLY,KAAO,EAAA,CAAA;IAEPtP,QAAA,iBAAAN,GAAA,CAAC6P,gBAAA,EAAA;MACC5O,QAAA,EAAU,EAACkN,WAAa,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,WAAA,CAAAjX,MAAA,CAAA;MACxBsX,SAAA;MACAH,SAAA;MACAnN,OAAS,EAAA0N,UAAA;MACTnK,GAAK,EAAAqK,SAAA;MACLgB,QAAU,EAAApB;IAAA,CACZ;EAAA,CAAA,CACF;AAEJ;AAEA,MAAMqB,gCAAiE,GAAA;EACrEL,SAAW,EAAA;AACb,CAAA;AAEA,MAAMG,gBAAmB,GAAAG,UAAA,CAAW,SAASH,iBAAAA,CAC3C9N,OAOA0C,GACA,EAAA;EACA,MAAM;IAACxD,QAAU;IAAAuN,SAAA;IAAWH,SAAW;IAAAnN,OAAA;IAAS4O;EAAY,CAAA,GAAA/N,KAAA;EAG1D,sBAAA/B,GAAA,CAACiQ,YAAA,EAAA;IACCC,KAAA,EAAO,GAAGnY,MAAW,CAAA0R,WAAA,EAAA,SAAA,CAAA;IACrB7I,IAAM,EAAAyN,SAAA,GAAYrB,gBAAmB,GAAAwB,SAAA,GAAYlB,gBAAmB,GAAAE,mBAAA;IACpE2C,IAAK,EAAA,OAAA;IACLjP,OAAA;IACAmM,IAAA,EAAMmB,YAAY,UAAa,GAAA,KAAA,CAAA;IAC/B4B,QAAU,EAAA,CAAA;IACVnP,QAAA;IACAwD,GAAA;IACAqL,QAAA;IACAO,OAAS,EAAAN;EAAA,CAAA,CACX;AAEJ,CAAC,CAAA;AAED,SAASP,SAASzN,KAAmE,EAAA;EAC7E,MAAA;IAAC0N,QAAU;IAAAnF;EAAS,CAAA,GAAAvI,KAAA;EAEpB,MAAA;IAACuO;GAAU,GAAIC,QAAS,EAAA;EAE9BC,gBAAA,CACEjR,WAAA,CACGzI,KAAU,IAAA;IACL,IAAAwZ,UAAA,IAAcxZ,KAAM,CAAA6H,GAAA,KAAQ,QAAU,EAAA;MAC/B8Q,QAAA,EAAA;IACX;EACF,CAAA,EACA,CAACa,YAAYb,QAAQ,CACvB,CAAA,CACF;EAEA,0BACGjP,KAAM,EAAA;IAAAN,OAAA,EAAS,CAAG;IAAAO,KAAA,EAAO;IACvBH,QAAM,EAAAgK,KAAA,CAAA3N,GAAA,CAAK6N,IAAA,uBACTiG,QAAyB,EAAA;MAAAjG;IAAA,CAAA,EAAXA,IAAK,CAAAM,IAAkB,CACvC;EACH,CAAA,CAAA;AAEJ;AAEA,SAAS2F,SAAS1O,KAA0C,EAAA;EAlO5D7G,IAAAA,GAAAA;EAmOQ,MAAA;IAACsP;EAAQ,CAAA,GAAAzI,KAAA;EAEf,MAAM2O,QAAW,GAAAlG,IAAA,CAAKiE,MAAU,IAAAvB,WAAA,CAAY1C,KAAKiE,MAAM,CAAA;EACvD,sBACGzO,GAAA,CAAAC,IAAA,EAAA;IAAK0Q,MAAQ,EAAA,CAAA;IAAGtD,IAAM,EAAAqD,QAAA,KAAYA,QAAU,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,QAAA,CAAArD,IAAA,CAAA;IAC3C/M,QAAC,EAAA,eAAAC,IAAA,CAAAY,IAAA,EAAA;MAAKuD,KAAM,EAAA,QAAA;MAAStD,KAAK,CACxB;MAAAd,QAAA,EAAA,CAAC,eAAAC,IAAA,CAAAY,IAAA,EAAA;QAAKuD,OAAM,YAAa;QAAAkM,IAAA,EAAM;QAAGxP,GAAK,EAAA,CAAA;QAAGlB,SAAS,CACjD;QAAAI,QAAA,EAAA,CAAA,eAAAN,GAAA,CAACU;UAAIkQ,IAAK,EAAA,MAAA;UACRtQ,QAAC,iBAAAC,IAAA,CAAAuE,IAAA,EAAA;YAAKC,MAAM,CACT;YAAAzE,QAAA,EAAA,CAAYoQ,QAAA,IAAAG,aAAA,CAAcH,SAAS9P,IAAI,CAAA,EACvC,CAAC4J,IAAA,CAAKiE,MAAU,IAAA,eAAAzO,GAAA,CAACa,OAAQ,EAAA,CAAA,CAAA,CAAA;UAAA,CAC5B;QACF,CAAA,CAAA,EAAA,eACCN,IAAA,CAAAC,KAAA,EAAA;UAAMoQ,IAAM,EAAA,CAAA;UAAGnQ,OAAO,CACrB;UAAAH,QAAA,EAAA,CAAA,eAAAC,IAAA,CAACuE,IAAK,EAAA;YAAAC,IAAA,EAAM,CAAG;YAAA+L,MAAA,EAAO,QACnB;YAAAxQ,QAAA,EAAA,CAAAoQ,QAAA,GAAWA,SAASnT,KAAQ,GAAA,SAAA,EAC5BiN,IAAA,CAAKjN,SAAW,eAAAgD,IAAA,CAAAwQ,QAAA,EAAA;cAAAzQ,QAAA,EAAA,CAAA,IAAA,EAAGkK,IAAK,CAAAjN,KAAA;aAAM,CAAA;WACjC,CAAA,EACCiN,IAAA,CAAKwG,yBAAWhR,GAAA,CAAA8E,IAAA,EAAA;YAAKC,MAAM,CAAI;YAAAzE,QAAA,EAAAkK,IAAA,CAAKwG;WAAQ,CAAU,GAAA,IAAA,EAAA,mBACtDlM,IAAK,EAAA;YAAAgB,KAAA,EAAK,IAAC;YAAAf,IAAA,EAAM;YAChBzE,QAAC,EAAA,eAAAN,GAAA,CAAAoM,OAAA,EAAA;cAAQE,IAAMpR,EAAAA,CAAAA,GAAAA,GAAAsP,KAAK+D,KAAL,KAAA,IAAA,GAAArT,GAAc,GAAAsP,IAAA,CAAKgB;YAAS,CAAA;WAC7C,CAAA;SACF,CAAA;OACF,CAAA,EAEC,CAAChB,KAAK+D,KACL,mBAAAvO,GAAA,CAACU;QAAIkQ,IAAK,EAAA,MAAA;QAAO1Q,SAAS,CACxB;QAAAI,QAAA,iBAAAN,GAAA,CAACW;UAAOyP,QAAU,EAAA,CAAA;UAAGD,MAAK,OAAQ;UAAAjP,OAAA,EAASsJ,KAAK4D,MAAQ;UAAApN,IAAA,EAAK;SAAS;MACxE,CAAA,CAAA;IAEJ,CAAA;EACF,CAAA,CAAA;AAEJ;AC1OA,MAAMgN,QAAW,GAAA,2BAAA;AACjB,MAAMiD,6BAAgC,GAAA,yBAAA;AAE/B,SAASC,aAAaC,eAAiE,EAAA;EAC5F,MAAMlb,MAAS,GAAA4D,SAAA,CAAU;IAACX,UAAA,EAAY;EAAa,CAAA,CAAA;EAC5C,OAAAmG,OAAA,CACL,MAAO8R,eAAA,GAAkBA,eAAgB,CAAAlb,MAAM,CAAI,GAAAA,MAAA,EACnD,CAACA,QAAQkb,eAAe,CAAA,CAC1B;AACF;AAEO,SAASC,mBAAmBC,SAAyB,EAAA;EAC1D,MAAM,CAACjY,OAAA,EAASC,UAAU,CAAA,GAAIC,SAAS,KAAK,CAAA;EAC5C,MAAMgY,OAAOrH,cAAe,EAAA;EAC5B,MAAM1N,SAASwC,SAAU,EAAA;EACzB,MAAMK,KAAQ,GAAAC,OAAA,CAAQ,MAAM/C,eAAA,CAAgBC,MAAQ,EAAA;IAACa,UAAY,EAAA;EAAK,CAAA,CAAA,EAAG,CAACb,MAAM,CAAC,CAAA;EACjF,MAAMgV,QAAQC,QAAS,EAAA;EAEvB,MAAMC,eAAkB,GAAAlS,WAAA,CACtBmS,KAAA,IAA4D;IAAA,IAA3D;MAAClK,IAAM;MAAArF;KAAoD,GAAAuP,KAAA;IAC1DrY,UAAA,CAAW,IAAI,CAAA;IAEf,OAAOgY,UACJM,OAAQ,CAAA;MACPC,MAAQ,EAAA,MAAA;MACRC,GAAA,EAAK,kCAAkC9Z,MAAU,CAAAsZ,SAAA,CAAAS,MAAA,CAAA,EAASC,OAAO,EAAA,aAAA,CAAA,CAC/Dha,MAAU,CAAAsZ,SAAA,CAAAS,MAAA,CAAA,CAAS,CAAAE,SAAA,CAAA;MAErBC,IAAM,EAAA;QACJzK,IAAA;QACArF,UAAA;QACA/C,KAAA;QACAuL,QAAQ2G,IAAM,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,IAAA,CAAA/L;MAChB;IAAA,CACD,CAAA,CACAzF,KAAM,CAACoS,CAAM,IAAA;MACZX,KAAA,CAAMY,IAAK,CAAA;QACTC,MAAQ,EAAA,OAAA;QACR7U,KAAO,EAAA,yBAAA;QACP8U,aAAaH,CAAE,CAAAlB;MAAA,CAChB,CAAA;MACD3X,UAAA,CAAW,KAAK,CAAA;MACV,MAAA6Y,CAAA;IAAA,CACP,CACA,CAAAnS,OAAA,CAAQ,MAAM;MAGbuS,UAAA,CAAW,MAAM;QACfjZ,UAAA,CAAW,KAAK,CAAA;SACf,GAAI,CAAA;IAAA,CACR,CAAA;EACL,CAAA,EACA,CAACA,UAAA,EAAYgY,SAAW,EAAAE,KAAA,EAAOD,MAAMlS,KAAK,CAAA,CAC5C;EAEO,OAAAC,OAAA,CACL,OAAO;IACLoS,eAAA;IACArY;EAAA,CACF,CAAA,EACA,CAACqY,iBAAiBrY,OAAO,CAAA,CAC3B;AACF;AAEO,SAASmZ,qBAAqBlB,SAAyB,EAAA;EAC5D,MAAM,CAACjY,OAAA,EAASC,UAAU,CAAA,GAAIC,SAAS,IAAI,CAAA;EAC3C,MAAMkZ,aAAgB,GAAA3Y,SAAA,CAAU;IAACX,UAAA,EAAY;EAAa,CAAA,CAAA;EAEpD,MAAAuZ,iBAAA,GAAoBlT,YAAY,YAAY;IAChDlG,UAAA,CAAW,IAAI,CAAA;IAET,MAAA2Y,SAAA,GAAYX,SAAU,CAAAS,MAAA,CAAA,CAAS,CAAAE,SAAA;IACjC,IAAA;MACI,MAAAU,QAAA,GAAW,MAAMF,aAAA,CAAcb,OAAkB,CAAA;QACrDC,MAAQ,EAAA,KAAA;QACRC,GAAA,EAAK,aAAa9Z,MAAS,CAAAia,SAAA,EAAA,WAAA;MAAA,CAC5B,CAAA;MAED,MAAMvO,UAAUiP,QAAS,CAAApE,IAAA,CAAMpQ,CAAA,IAAMA,MAAM+S,6BAA6B,CAAA;MAElE,MAAAmB,MAAA,GAAS,MAAMf,SAAA,CAAUM,OAAyC,CAAA;QACtEC,MAAQ,EAAA,KAAA;QACRC,GAAA,EAAK,GAAG9Z,MAAQ,CAAAiW,QAAA,EAAA,GAAA,CAAA,CAAIjW,iBAAU+Z,MAAO,CAAA,CAAA,CAAEC,SAAO,oBAAqB,CAAA,CAAAha,MAAA,CAAAia,SAAA;MAAA,CACpE,CAAA;MAEM,OAAA;QACL,GAAGI,MAAA;QACH3O;MAAA,CACF;IAAA,CACA,SAAA;MACApK,UAAA,CAAW,KAAK,CAAA;IAClB;EACC,CAAA,EAAA,CAACA,UAAY,EAAAgY,SAAA,EAAWmB,aAAa,CAAC,CAAA;EAElC,OAAA;IACLpZ,OAAA;IACAqZ;EAAA,CACF;AACF;AAEO,SAASE,gBAAgBtB,SAAyB,EAAA;EACvD,MAAM,CAACjY,OAAA,EAASC,UAAU,CAAA,GAAIC,SAAS,KAAK,CAAA;EACtC,MAAAsZ,YAAA,GAAerT,YAAY,MAAM;IACrClG,UAAA,CAAW,IAAI,CAAA;IACf,OAAOgY,UACJM,OAAQ,CAAA;MACPC,MAAQ,EAAA,KAAA;MACRC,GAAA,EAAK,EAAG,CAAA9Z,MAAA,CAAAiW,QAAA,EAAQ,GAAI,CAAA,CAAAjW,MAAA,CAAAsZ,SAAA,CAAUS,MAAO,CAAA,CAAA,CAAEC,OAAO,EAAA,kBAAA,CAAA,CAC5Cha,MAAU,CAAAsZ,SAAA,CAAAS,MAAA,CAAS,CAAA,CAAAE,SAAA;IAAA,CAEtB,CACA,CAAAjS,OAAA,CAAQ,MAAM;MACb1G,UAAA,CAAW,KAAK,CAAA;IAAA,CACjB,CAAA;EAAA,CACF,EAAA,CAACA,UAAY,EAAAgY,SAAS,CAAC,CAAA;EAEnB,OAAA;IACLjY,OAAA;IACAwZ;EAAA,CACF;AACF;AAEO,SAASC,qBAAqBxB,SAAyB,EAAA;EAC5D,MAAME,QAAQC,QAAS,EAAA;EACvB,MAAM,CAACpY,OAAA,EAASC,UAAU,CAAA,GAAIC,SAAS,KAAK,CAAA;EAC5C,MAAMgY,OAAOrH,cAAe,EAAA;EAC5B,MAAM1N,SAASwC,SAAU,EAAA;EACzB,MAAMK,KAAQ,GAAAC,OAAA,CAAQ,MAAM/C,eAAA,CAAgBC,MAAQ,EAAA;IAACa,UAAY,EAAA;EAAK,CAAA,CAAA,EAAG,CAACb,MAAM,CAAC,CAAA;EAEjF,MAAMuW,cAAiB,GAAAvT,WAAA,CACpBoS,OAAmC,IAAA;IAClCtY,UAAA,CAAW,IAAI,CAAA;IACf,OAAOgY,UACJM,OAAQ,CAAA;MACPC,MAAQ,EAAA,MAAA;MACRC,GAAA,EAAK,EAAG,CAAA9Z,MAAA,CAAAiW,QAAA,EAAQ,GAAI,CAAA,CAAAjW,MAAA,CAAAsZ,SAAA,CAAUS,MAAO,CAAA,CAAA,CAAEC,OAAO,EAAA,aAAA,CAAA,CAC5Cha,MAAU,CAAAsZ,SAAA,CAAAS,MAAA,CAAS,CAAA,CAAAE,SAAA,CAAA;MAErBC,IAAM,EAAA;QACJ,GAAGN,OAAA;QACHvS,KAAA;QACAuL,QAAQ2G,IAAM,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,IAAA,CAAA/L;MAChB;IAAA,CACD,CAAA,CACAzF,KAAM,CAACoS,CAAM,IAAA;MACZX,KAAA,CAAMY,IAAK,CAAA;QACTC,MAAQ,EAAA,OAAA;QACR7U,KAAO,EAAA,oBAAA;QACP8U,aAAaH,CAAE,CAAAlB;MAAA,CAChB,CAAA;MACK,MAAAkB,CAAA;IAAA,CACP,CACA,CAAAnS,OAAA,CAAQ,MAAM;MACb1G,UAAA,CAAW,KAAK,CAAA;IAAA,CACjB,CAAA;EACL,CAAA,EACA,CAACgY,SAAA,EAAWjS,KAAO,EAAAkS,IAAA,EAAMC,KAAK,CAAA,CAChC;EAEO,OAAAlS,OAAA,CACL,OAAO;IACLyT,cAAA;IACA1Z;EAAA,CACF,CAAA,EACA,CAAC0Z,gBAAgB1Z,OAAO,CAAA,CAC1B;AACF;AC3Ka,MAAA2Z,yBAAA,GAA4BrM,aAA8C,CAAA,CAAA,CAAS,CAAA;AAEzF,SAASsM,qBAAwBA,CAAA,EAAA;EAChC,MAAAC,OAAA,GAAUC,WAAWH,yBAAyB,CAAA;EACpD,IAAI,CAACE,OAAS,EAAA;IACN,MAAA,IAAInb,MAAM,mCAAmC,CAAA;EACrD;EACO,OAAAmb,OAAA;AACT;AAEO,SAASE,2BAA2BpR,KAGxC,EAAA;EAlCH,IAAA7G,EAAA;EAmCE,MAAM,CAACkX,MAAA,EAAQgB,SAAS,CAAA,GAAI9Z,QAAqC,CAAA,CAAA;EACjE,MAAM,CAACC,KAAA,EAAOC,QAAQ,CAAA,GAAIF,QAA4B,CAAA,CAAA;EAEtD,MAAM+X,SAAY,GAAAH,YAAA,CAAA,CAAahW,EAAM,GAAA6G,KAAA,CAAA+P,MAAA,KAAN,mBAAcuB,iBAAiB,CAAA;EAC9D,MAAM;IAACZ,iBAAmB;IAAArZ,OAAA,EAASka;EAAa,CAAA,GAAIf,qBAAqBlB,SAAS,CAAA;EAClF,MAAM;IAACuB,YAAc;IAAAxZ,OAAA,EAASma;EAAW,CAAA,GAAIZ,gBAAgBtB,SAAS,CAAA;EAEtEvX,SAAA,CAAU,MAAM;IACI2Y,iBAAA,CAAA,CAAA,CACfe,IAAK,CAACC,CAAM,IAAAL,SAAA,CAAUK,CAAC,CAAC,CAAA,CACxB3T,KAAM,CAACoS,CAAM,IAAA;MACZ9X,OAAA,CAAQb,MAAM2Y,CAAC,CAAA;MACf1Y,QAAA,CAAS0Y,CAAU,CAAA;IAAA,CACpB,CAAA;EAAA,CACL,EAAG,CAACO,iBAAiB,CAAC,CAAA;EAEhB,MAAAiB,IAAA,GAAOnU,YAAY,YAAY;IACnC/F,QAAA,CAAS,KAAS,CAAA,CAAA;IACd,IAAA;MACF,MAAMoZ,YAAa,CAAA,CAAA;MACbR,MAAAA,OAAAA,GAAS,MAAMK,iBAAkB,EAAA;MACvCW,SAAA,CAAUhB,OAAM,CAAA;aACTF,CAAG,EAAA;MACF9X,OAAA,CAAAb,KAAA,CAAM,gCAAgC2Y,CAAC,CAAA;MAC/C1Y,QAAA,CAAS0Y,CAAU,CAAA;IACrB;EACC,CAAA,EAAA,CAACU,YAAc,EAAAH,iBAAA,EAAmBW,SAAS,CAAC,CAAA;EAEzC,MAAA;IAACtB,MAAQ;IAAAxR;EAAY,CAAA,GAAAyB,KAAA;EACrB,MAAAkR,OAAA,GAAU5T,QAAwC,MAAM;IACrD,OAAA;MACLyS,MAAA;MACAM,MAAA;MACAkB,aAAA;MACAI,IAAA;MACAH,WAAA;MACAha;IAAA,CACF;EAAA,CACF,EAAG,CAACuY,MAAQ,EAAAM,MAAA,EAAQsB,MAAMJ,aAAe,EAAAC,WAAA,EAAaha,KAAK,CAAC,CAAA;EAE5D,0BACGwZ,yBAA0B,CAAAnM,QAAA,EAA1B;IAAmC9I,KAAA,EAAOmV;IACxC3S;EACH,CAAA,CAAA;AAEJ;ACxDA,MAAMqT,WAAwB,CAAA,CAAC;AAOxB,MAAMC,wBAAwBlN,aAA0C,CAAA;EAC7EoM,gBAAgBA,CAAA,KAAM,CAAC,CAAA;EACvBe,kBAAoB,EAAA;AACtB,CAAC,CAAA;AAEM,SAASC,iBAAoBA,CAAA,EAAA;EAClC,OAAOZ,WAAWU,qBAAqB,CAAA;AACzC;AAEA,SAASG,iBAAiBzI,KAAiD,EAAA;EACzE,OAAOA,MAAMhO,KAAU,KAAAlI,iBAAA;AACzB;AAEO,SAAS4e,uBAAuBjS,KAA8B,EAAA;EA5CrE,IAAA7G,EAAA;EA6CQ,MAAA;IAAC4W;GAAM,GAAIkB,qBAAsB,EAAA;EACjC,MAAA3B,SAAA,GAAYH,YAAa,CAAAY,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,MAAA,CAAQuB,iBAAiB,CAAA;EACxD,MAAM;IAACP,cAAgB,EAAAmB,qBAAA;IAAuB7a;EAAO,CAAA,GAAIyZ,qBAAqBxB,SAAS,CAAA;EAEvF,MAAM9L,KAAK2O,KAAM,EAAA;EAEjB,MAAM,CAACC,MAAA,EAAQC,SAAS,CAAA,GAAI9a,SAASqa,QAAQ,CAAA;EAC7C,MAAM,CAACU,UAAA,EAAYC,aAAa,CAAA,GAAIhb,QAElC,CAAA,CAAA;EAEF,MAAMwZ,cAAiB,GAAAvT,WAAA,CACpBgV,GAA4B,IAAA;IAzDjCrZ,IAAAA,GAAAA;IA0DM,IAAI9B,OAAS,EAAA;MACX;IACF;IACA,MAAM;MAACwR,WAAA;MAAa,GAAG+G;IAAA,CAAW,GAAA4C,GAAA;IAClC,MAAMxJ,iBAAiBH,WAAY,CAAAE,IAAA;IACnC,MAAM0J,eAAkBtZ,GAAAA,CAAAA,GAAAA,GAAA0P,WAAa,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,WAAA,CAAAS,MAAA,KAAb,gBAAAnQ,GACpB,CAAAyM,OAAA,CAAS2D,KACT,IAAAA,KAAA,CAAMhO,KAAU,KAAA,OAAA,GAAUgO,KAAM,CAAAhL,QAAA,CAAS3H,MAAO,CAAAob,gBAAgB,CAAI,GAAA,CAACzI,KAAK,CAAA,CAAA,CAE3E3S,MAAO,CAAAob,gBAAA,CAAA;IAEN,IAAA,EAACS,mDAAiBtd,MAAQ,CAAA,EAAA;MACN+c,qBAAA,CAAA;QACpB,GAAGtC,OAAA;QACH5G,cAAA;QACA0J,SAAW,EAAA,KAAA;MAAA,CACZ,CAAA;MACD;IACF;IAEcH,aAAA,CAAA;MACZ,GAAGC,GAAA;MACHC;IAAA,CACD,CAAA;EACH,CAAA,EACA,CAACF,aAAe,EAAAL,qBAAA,EAAuB7a,OAAO,CAAA,CAChD;EAEM,MAAAsb,KAAA,GAAQnV,YAAY,MAAM;IAC9B+U,aAAA,CAAc,KAAS,CAAA,CAAA;IACvBF,SAAA,CAAUT,QAAQ,CAAA;EAAA,CACjB,EAAA,CAACW,aAAe,EAAAF,SAAS,CAAC,CAAA;EAEvB,MAAAO,YAAA,GAAepV,YAAY,MAAM;IACrC,IAAI8U,UAAY,EAAA;MACd,MAAM;QAACzJ,WAAA;QAAa6J,SAAW;QAAA,GAAG9C;OAAW,GAAA0C,UAAA;MACvBJ,qBAAA,CAAA;QACpB,GAAGtC,OAAA;QACH5G,gBAAgBH,WAAY,CAAAE,IAAA;QAC5B2J,SAAA,EAAWjW,MAAO,CAAAoW,OAAA,CAAQT,MAAM,CAAA,CAAExX,IAAIkY,KAAA;UAAA,IAAC,CAAClW,GAAK,EAAAb,KAAK,CAAO,GAAA+W,KAAA;UAAA,OAAA;YACvDC,QAAU,EAAAnW,GAAA;YACVoW,SAAW,EAAAjX;UAAA,CACX;QAAA,CAAA;MAAA,CACH,CAAA;IACH;IACM4W,KAAA,EAAA;KACL,CAACA,KAAA,EAAOT,qBAAuB,EAAAI,UAAA,EAAYF,MAAM,CAAC,CAAA;EAE/C,MAAAzF,IAAA,GAAO,CAAC,CAAC2F,UAAA;EAEf,MAAMW,WAAc,GAAA3V,OAAA,CAClB,MAAG;IA7GP,IAAAnE,GAAA,EAAAG,EAAA;IA8GOH,OAAAA,CAAAA,CAAAA,EAAAA,GAAAA,CAAAA,GAAAA,GAAAmZ,yCAAYG,eAAZ,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAtZ,IAA6BhE,MAA7B,KAAA,IAAA,GAAAmE,EAAA,GAAuC,KACxCmD,MAAO,CAAAoW,OAAA,CAAQT,MAAM,CAAE,CAAAxb,MAAA,CAAOsc,KAAA;MAAA,IAAC,GAAGnX,KAAK,CAAM,GAAAmX,KAAA;MAAA,OAAA,CAAC,CAACnX,KAAK;IAAA,EAAE,CAAA5G,MAAA;EAAA,CAAA,EACxD,CAACmd,UAAY,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,UAAA,CAAAG,eAAA,EAAiBL,MAAM,CAAA,CACtC;EAEA,MAAMe,SACJ,GAAA,eAAAlV,GAAA,CAACW,MAAA,EAAA;IACCK,IAAK,EAAA,iBAAA;IACLE,OAAS,EAAAyT,YAAA;IACTtH,IAAK,EAAA,SAAA;IACLzM,IAAM,EAAAuU,QAAA;IACN/U,KAAA,EAAO;MAACwP,KAAA,EAAO;IAAM,CAAA;IACrB3O,QAAU,EAAA+T;EAAA,CAAA,CACZ;EAGF,MAAMI,YAA2C,GAAA/V,OAAA,CAC/C,OAAO;IAACyT,cAAgB;IAAAe,kBAAA,EAAoBza;GAAO,CAAA,EACnD,CAAC0Z,gBAAgB1Z,OAAO,CAAA,CAC1B;EAEA,OACG,eAAAmH,IAAA,CAAAqT,qBAAA,CAAsBhN,QAAtB,EAAA;IAA+B9I,OAAOsX,YACpC;IAAA9U,QAAA,EAAA,CACCoO,IAAA,kBAAA1O,GAAA,CAACqV,MAAA,EAAA;MACC9P,EAAA;MACAmJ,IAAA;MACA4G,OAAS,EAAAZ,KAAA;MACT9E,KAAO,EAAA,CAAA;MACP2F,MAAA,EAAQ3I,mBAAoB,CAAAyH,UAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,UAAA,CAAYzJ,WAAW,CAAA;MACnD4K,MAAA,qBACGrU,IAAK,EAAA;QAAAyD,OAAA,EAAQ;QAAgB1E,OAAS,EAAA,CAAA;QAAG0Q,IAAM,EAAA,CAAA;QAC7CtQ,QACC,EAAA0U,WAAA,GAAA,eAAAhV,GAAA,CAACyV,OAAA,EAAA;UACClG,OAAA,qBACGpO,IAAK,EAAA;YAAAjB,OAAA,EAAS;YACbI,QAAC,iBAAAN,GAAA,CAAA8E,IAAA,EAAA;cAAKxE;aAAwD;UAChE,CAAA,CAAA;UAEFoP,SAAU,EAAA,KAAA;UAEVpP,QAAC,EAAA,eAAAN,GAAA,CAAAmB,IAAA,EAAA;YAAKyP,IAAM,EAAA,CAAA;YAAItQ,QAAU,EAAA4U;WAAA;QAAA,KAG5BA;MAEJ,CAAA,CAAA;MAGF5U,QAAC,iBAAAN,GAAA,CAAAQ,KAAA,EAAA;QAAMN,OAAS,EAAA,CAAA;QAAGO,KAAO,EAAA,CAAA;QACvBH,QAAY,EAAA,CAAApF,EAAA,GAAAmZ,UAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,UAAA,CAAAG,eAAA,KAAZ,IAA6B,GAAA,KAAA,CAAA,GAAAtZ,EAAA,CAAAyB,GAAA,CAAI,CAAC2O,KAAA,EAAO3T,CACxC,KAAA,eAAAqI,GAAA,CAAC0V,SAAA,EAAA;UAECpK,KAAA;UACAqK,WAAWhe,CAAM,KAAA,CAAA;UACjBwc,MAAA;UACAC;QAAA,CAAA,EAJK9I,KAAM,CAAAR,IAOjB,CAAA;OAAA;IAAA,CAAA,CAEA,GAAA,IAAA,EACH/I,KAAM,CAAAzB,QAAA;EACT,CAAA,CAAA;AAEJ;AAEA,SAASoV,UAAU3T,KAKhB,EAAA;EAtLH,IAAA7G,EAAA;EAuLE,MAAM;IAACoQ,KAAA;IAAOqK,SAAW;IAAAvB,SAAA;IAAWD;GAAU,GAAApS,KAAA;EAC9C,MAAMpD,MAAM2M,KAAM,CAAAR,IAAA;EACZ,MAAA8K,WAAA,GAAchc,OAA4B,IAAI,CAAA;EAEpD,MAAM4I,QAAW,GAAAjD,WAAA,CACd2S,CAAsC,IAAA;IACrCkC,SAAA,CAAWra,OAAS,IAAA;MA7L1BmB,IAAAA,GAAAA;MA6L8B,OAAA;QACtB,GAAGnB,OAAA;QACH,CAAC4E,GAAG,GAAIzD,CAAAA,CAAAA,GAAAA,GAAAgX,EAAE2D,aAAF,KAAA,IAAA,GAAA3a,GAAmB,GAAAgX,CAAA,CAAE4D,MAAQ,EAAAhY;MAAA,CACvC;IAAA,CAAE,CAAA;EACJ,CAAA,EACA,CAACa,KAAKyV,SAAS,CAAA,CACjB;EAEM,MAAAtW,KAAA,GAAQuB,QAAQ,MAAM8U,MAAA,CAAOxV,GAAG,CAAG,EAAA,CAACwV,MAAQ,EAAAxV,GAAG,CAAC,CAAA;EAEtD7E,SAAA,CAAU,MAAM;IACd,IAAI,CAAC6b,SAAW,EAAA;MACd;IACF;IACArD,UAAA,CAAW,MAAG;MA3MlBpX,IAAAA,GAAAA;MA2MqB,OAAA,CAAAA,GAAA,GAAA0a,WAAA,CAAY7b,OAAZ,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAmB,GAAqB,CAAAkU,KAAA,EAAA;IAAA,CAAA,EAAS,CAAC,CAAA;EAAA,CAClD,EAAG,CAACuG,SAAS,CAAC,CAAA;EAEd,OACG,eAAApV,IAAA,CAAAC,KAAA,EAAA;IAAMN,OAAS,EAAA,CAAA;IAAGO,OAAO,CACxB;IAAAH,QAAA,EAAA,CAAA,eAAAN,GAAA,CAAC+V,mBAAA,EAAA;MACCxY,KAAA,EAAA,CAAOrC,EAAO,GAAAoQ,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,KAAA,CAAA0F,OAAA,KAAP,IAAkB,GAAA9V,EAAA,GAAA,sBAAA;MACzBmX,aAAa/G,KAAM,CAAA+G;IAAA,CACrB,CAAA,EAAA,eACArS,GAAA,CAACgW,QAAA,EAAA;MACCvR,GAAK,EAAAmR,WAAA;MACLK,IAAM,EAAA,CAAA;MACNnY,KAAA;MACA0E,QAAA;MACApC,KAAA,EAAO;QAAC8V,MAAA,EAAQ;MAAU;IAAA,CAC5B,CAAA;EACF,CAAA,CAAA;AAEJ;ACjNgB,SAAAC,eAAAA,CACdnO,kBACA,EAAAY,SAAA,EACAD,KACA,EAAA;EACA,OAAO,CAAC,EAAEX,kBAAmB,CAAAoO,QAAA,GAAWxN,SAAY,GAAAD,KAAA,CAAA;AACtD;AAEgB,SAAA0N,kBAAAA,CAAmBrO,oBAAsC7F,UAAoB,EAAA;EACrF,MAAAmU,MAAA,GAASvN,SAAS5G,UAAU,CAAA;EAC3B,OAAA6F,kBAAA,CAAmBoO,QAAW,GAAAE,MAAA,GAAS,SAAU,CAAAve,MAAA,CAAAue,MAAA,CAAA;AAC1D;AAEO,SAASC,yBAAyBC,IAAoB,EAAA;EAC3D,MAAM;IAACC,gBAAA;IAAkBN,eAAAA,EAAAA;EAAAA,CAAmB,GAAAK,IAAA;EAE5C,MAAM;IAAC1D,cAAA;IAAgBe;EAAkB,CAAA,GAAIC,iBAAkB,CAAA,CAAA;EAC/D,MAAM,CAAC4C,UAAA,EAAYC,aAAa,CAAA,GAAIrd,SAAyC,KAAS,CAAA,CAAA;EAEtFQ,SAAA,CAAU,MAAM;IACd,IAAI4c,cAAcP,gBAAiB,EAAA;MACjCrD,cAAA,CAAe4D,UAAU,CAAA;MACzBC,aAAA,CAAc,KAAS,CAAA,CAAA;IACzB;EACC,CAAA,EAAA,CAACD,UAAYP,EAAAA,gBAAAA,EAAiBrD,cAAc,CAAC,CAAA;EAEzC,OAAA;IACLe,kBAAA;IACA+C,qBAAuB,EAAArX,WAAA,CACpBiL,IAA6B,IAAA;MAEXiM,gBAAA,CAAAI,UAAA,CAAWC,KAAK,CAACC,KAAA,CAAM,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAA;MACvEJ,aAAA,CAAcnM,IAAI,CAAA;IACpB,CAAA,EACA,CAACmM,eAAeF,gBAAgB,CAClC;EAAA,CACF;AACF;AC5CA,MAAMO,oBAAA,GAAuB/J,MAAO,CAAAgK,YAAY,CAAE,CAAA;EAChD7G,QAAU,EAAA,SAAA;EACV,QAAU,EAAA;IACR8G,WAAa,EAAA;EACf;AACF,CAAC,CAAA;AAEM,SAASC,oBAAoBpV,KAAgC,EAAA;EAC5D,MAAA;IAACqV;EAAa,CAAA,GAAArV,KAAA;EAElB,OAAA,eAAA/B,GAAA,CAACU,GAAI,EAAA;IAAAR,OAAA,EAAS,CACZ;IAAAI,QAAA,EAAA,eAAAN,GAAA,CAACqX,SAAU,EAAA;MAAAzH,KAAA,EAAO,CAChB;MAAAtP,QAAA,iBAAAC,IAAA,CAACC,KAAM,EAAA;QAAAC,KAAA,EAAO,CACZ;QAAAH,QAAA,EAAA,CAAC,eAAAN,GAAA,CAAA,KAAA,EAAA;UAAII,OAAO;YAACkX,SAAA,EAAW;WACtB;UAAAhX,QAAA,iBAAAN,GAAA,CAACgX,wBAAqB;QACxB,CAAA,CAAA,EAAA,mBACClS,IAAK,EAAA;UAAAJ,KAAA,EAAM,QAAS;UAAAK,IAAA,EAAM;UAAGzE,QAG9B,EAAA;SAAA,CAAA,EAAA,oBAECa,IAAK,EAAA;UAAAuD,KAAA,EAAM;UAAStD,GAAK,EAAA,CAAA;UAAGwD,SAAQ,QACnC;UAAAtE,QAAA,EAAA,CAAA,eAAAN,GAAA,CAACW,MAAA,EAAA;YACC6D,EAAG,EAAA,GAAA;YACH+S,IAAM,EAAAnO,sBAAA;YACNoO,GAAI,EAAA,YAAA;YACJ1B,MAAO,EAAA,QAAA;YACP1F,QAAU,EAAA,CAAA;YACVD,IAAK,EAAA,SAAA;YACLjP,OAAS,EAAAkW,SAAA;YACTlX,OAAS,EAAA,CAAA;YACTc,IAAK,EAAA,YAAA;YACLqM,IAAK,EAAA;UAAA,CACP,CAAA,EACA,eAAArN,GAAA,CAACW,MAAO,EAAA;YAAAyP,QAAA,EAAU,CAAG;YAAAD,IAAA,EAAK,OAAQ;YAAAjP,OAAA,EAASkW,SAAW;YAAAlX,OAAA,EAAS,CAAG;YAAAc,IAAA,EAAK;UAAU,CAAA,CAAA;SACnF,CAAA;OACF;KACF;EACF,CAAA,CAAA;AAEJ;AC3CO,MAAMyW,sBAAyB,GAAA,oDAAA;AAC/B,MAAMC,kBAAqB,GAAA,gDAAA;AAE3B,SAASC,6BAA6BC,UAA6B,EAAA;EACpE,IAAA,OAAOC,iBAAiB,WAAa,EAAA;IAChC,OAAA,KAAA;EACT;EAEM,MAAA/Z,KAAA,GAAQ+Z,YAAa,CAAAC,OAAA,CAAQF,UAAU,CAAA;EAC7C,OAAO9Z,KAAU,KAAA,MAAA;AACnB;AAEO,SAASia,yBAAyBH,UAAoB,EAAA;EACvD,IAAA,OAAOC,iBAAiB,WAAa,EAAA;IACvC;EACF;EAEaA,YAAA,CAAAG,OAAA,CAAQJ,YAAY,MAAM,CAAA;AACzC;AAEO,SAASK,qBAAqBL,UAAoB,EAAA;EACjD,MAAA,CAACM,cAAgB,EAAAC,iBAAiB,CAAI,GAAA7e,QAAA,CAC1C,MAAM,CAACqe,4BAAA,CAA6BC,UAAU,CAAA,CAChD;EACM,MAAAQ,iBAAA,GAAoB7Y,YAAY,MAAM;IAC1C4Y,iBAAA,CAAkB,KAAK,CAAA;IACvBJ,wBAAA,CAAyBH,UAAU,CAAA;EAAA,CAClC,EAAA,CAACO,iBAAmB,EAAAP,UAAU,CAAC,CAAA;EAE3B,OAAA;IAACM;IAAgBE;GAAiB;AAC3C;;;;;;AChCA,IAAAld,IAAA,EAAAG,IAAA;AAgCA,MAAMgd,mBAAsB,GAAApL,MAAA,CAAOhN,IAAI,CAAA,CAAX/E,IAAY,KAAAA,IAAA,GAAA6R,YAAA,CAAA,CAAA,6PAAA,CAAA,CAAA,CAAA,CAAA;AAgBxC,MAAMuL,mBAAsB,GAAArL,MAAA,CAAOhN,IAAI,CAAA,CAAX5E,IAAY,KAAAA,IAAA,GAAA0R,YAAA,CAAA,CAAA,uPAAA,CAAA,CAAA,CAAA,CAAA;AAgBjC,SAASwL,uBAAuBxW,KAA+B,EAAA;EACpE,MAAMkR,UAAUD,qBAAsB,EAAA;EAEtC,IAAIC,QAAQK,aAAe,EAAA;IAEvB,OAAA,eAAAtT,GAAA,CAACmB;MAAKuD,KAAM,EAAA,QAAA;MAASrE,QAAO,MAAO;MAAAuE,OAAA,EAAQ;MAAS1E,OAAS,EAAA,CAAA;MAAG2E,QAAO,QACrE;MAAAvE,QAAA,EAAA,eAAAC,IAAA,CAACC;QAAMC,KAAO,EAAA,CAAA;QAAGL,OAAO;UAACkX,SAAA,EAAW;SAClC;QAAAhX,QAAA,EAAA,CAAC,eAAAN,GAAA,CAAAa,OAAA,EAAA;UAAQiF,OAAK;QAAC,CAAA,CAAA,EAAA,eACdvF,IAAA,CAAAuE,IAAA,EAAA;UAAKgB,KAAK,EAAA,IAAA;UAACf,MAAM,CAAG;UAAAzE,QAAA,EAAA,CAAA,UAAA,EACVmJ,WAAA,EAAY,KAAA;SACvB,CAAA;MACF,CAAA;IACF,CAAA,CAAA;EAEJ;EAEA,MAAM2I,SAASa,OAAQ,CAAAb,MAAA;EAEnB,IAAA,EAACA,iCAAQ3O,OAAS,CAAA,EAAA;IACpB,OACG,eAAAlD,IAAA,CAAAY,IAAA,EAAA;MAAKwD,SAAU,EAAA,QAAA;MAAStE,QAAO,MAC9B;MAAAC,QAAA,EAAA,CAAA,eAAAN,GAAA,CAACwY,uBAAA,EAAA;QACCC,gBAAiB,EAAA,OAAA;QACjBnD,SAASvT,KAAM,CAAAuT,OAAA;QACf/X,KAAO,EAAAkM;MAAA,CACT,CAAA,EAEA,eAAAlJ,IAAA,CAACC;QAAMoQ,IAAM,EAAA,CAAA;QAAGzQ,UAAS,MAAO;QAAAD,OAAA,EAAS,CAAG;QAAAO,KAAA,EAAO,CACjD;QAAAH,QAAA,EAAA,CAAA,eAAAC,IAAA,CAACuE;UAAKN,EAAG,EAAA,GAAA;UAAIO,IAAM,EAAA,CAAA;UAAG+L,QAAO,UAC1B;UAAAxQ,QAAA,EAAA,CAAAmJ,WAAA,EAAY,mBAAA;SACf,CAAA,EAAA,oBAEC3E,IAAK,EAAA;UAAAN,EAAA,EAAG;UAAIsB,KAAK,EAAA,IAAA;UAACf,MAAM,CAAG;UAAAzE,QAAA,EAAA,CAAA,sDAAA,EAC2B,GAAA,EACrD,eAAAN,GAAA,CAAC;YAAEuX,IAAM,EAAAhO,QAAA;YAAUuM,QAAO,QAAS;YAAA0B,GAAA,EAAI;YAAalX,QAEpD,EAAA;UAAA,CAAA,CAAA,EAAK,GAAA,EAAI,sBAAA,EACYmJ,WAAA,EAAY,GAAA,EAAE,GAAA,EACnC,eAAAzJ,GAAA,CAAC;YAAEuX,IAAM,EAAAnO,sBAAA;YAAwB0M,QAAO,QAAS;YAAA0B,GAAA,EAAI;YAAalX,QAElE,EAAA;UAAA,CAAA,CAAA;SACF,CAAA;OACF,CAAA;IACF,CAAA,CAAA;EAEJ;EAEA,IAAI,EAAC8R,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,MAAA,CAAQsG,WAAe,CAAA,IAAA,CAACtG,OAAOuG,UAAY,EAAA;IAC9C,OACG,eAAApY,IAAA,CAAAY,IAAA,EAAA;MAAKwD,SAAU,EAAA,QAAA;MAAStE,QAAO,MAC9B;MAAAC,QAAA,EAAA,CAAA,eAAAN,GAAA,CAACwY,uBAAA,EAAA;QACCC,gBAAiB,EAAA,OAAA;QACjBnD,SAASvT,KAAM,CAAAuT,OAAA;QACf/X,KAAO,EAAAkM;MAAA,CACT,CAAA,EAAA,eAEClJ,IAAA,CAAAC,KAAA,EAAA;QAAMN,OAAS,EAAA,CAAA;QAAGO,OAAO,CACvB;QAAAH,QAAA,EAAA,CAAA2S,OAAA,CAAQ1Z,uBACNgH,IAAA,CAAAuE,IAAA,EAAA;UAAKC,IAAM,EAAA,CAAA;UAAG+L,QAAO,UAAW;UAAAxQ,QAAA,EAAA,CAAA,kBAAA,EACdmJ,WAAA;QAAA,CACnB,CACE,GAAA,IAAA,EAEH,CAACwJ,OAAQ,CAAA1Z,KAAA,IAAS,EAAC6Y,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,MAAA,CAAQsG,WAC1B,CAAA,GAAA,eAAAnY,IAAA,CAACuE,IAAK,EAAA;UAAAC,IAAA,EAAM,CAAG;UAAA+L,MAAA,EAAO,UACnB;UAAAxQ,QAAA,EAAA,CAAAmJ,WAAA,EAAY,iBAAA;QAAA,CACf,CACE,GAAA,IAAA,EAEH,CAACwJ,QAAQ1Z,KAAS,KAAA6Y,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,MAAA,CAAQsG,gBAAe,CAACtG,MAAA,CAAOuG,4BAE9CpY,IAAA,CAAAwQ,QAAA,EAAA;UAAAzQ,QAAA,EAAA,CAAA,eAAAN,GAAA,CAAC8E,IAAK,EAAA;YAAAC,IAAA,EAAM,CAAG;YAAA+L,MAAA,EAAO;YAAWxQ,QAEjC,EAAA;WAAA,CAAA,EAAA,mBACCwE,IAAK,EAAA;YAAAgB,KAAA,EAAK,IAAC;YAAAf,IAAA,EAAM;YAAGzE,QAErB,EAAA;WAAA,CAAA;QAAA,CACF,CACE,GAAA,IAAA,EAEH2S,OAAA,CAAQ1Z,wBACNyG,GAAA,CAAA8E,IAAA,EAAA;UAAKgB,OAAK,IAAC;UAAAf,IAAA,EAAM;UAAGzE,QAErB,EAAA;QAAA,CAAA,CAAA,EAGD,CAAC2S,OAAQ,CAAA1Z,KAAA,IAAS,EAAC6Y,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,MAAA,CAAQsG,WAC1B,CAAA,IAAA,eAAAnY,IAAA,CAACuE,IAAK,EAAA;UAAAC,IAAA,EAAM,CAAG;UAAAe,KAAA,EAAK,IAAC;UAAAxF,QAAA,EAAA,CAAA,gBAAA,EACJmJ,WAAA,EAAY,GAAA;SAC7B,CAAA,EAAA,eAGFzJ,GAAA,CAACW,MAAA,EAAA;UACCyP,QAAU,EAAA,CAAA;UACVxP,IACE,EAAAqS,OAAA,CAAQM,WACN,GAAA,eAAAvT,GAAA,CAACU,GAAI,EAAA;YAAAI,SAAA,EAAW,CACd;YAAAR,QAAA,EAAA,eAAAN,GAAA,CAACa,OAAQ,EAAA,CAAA,CAAA;UACX,CAAA,CACE,GAAAoS,OAAA,CAAQ1Z,QACVqf,SACE,GAAA,KAAA,CAAA;UAEN5X,IACE,EAAAiS,OAAA,CAAQ1Z,KACJ,GAAA,OAAA,GAAA,CACA6Y,MAAQ,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,MAAA,CAAAsG,WAAA,KAAe,CAACtG,MAAA,CAAOuG,UAC/B,GAAA,UAAA,CAAW5gB,MACX,CAAA0R,WAAA,CAAA,GAAA,SAAA,CAAU1R,MAAW,CAAA0R,WAAA,EAAA,MAAA,CAAA;UAE3B4D,IAAK,EAAA,SAAA;UACLnM,SAAS+R,OAAQ,CAAAS,IAAA;UACjBzS,UAAUgS,OAAQ,CAAAM;QAAA,CACpB,CAAA;OACF,CAAA;IACF,CAAA,CAAA;EAEJ;EAEO,OAAA,eAAAvT,GAAA,CAAC6Y,eAAiB,EAAA;IAAA,GAAG9W;EAAO,CAAA,CAAA;AACrC;AAEO,SAAS8W,gBAAgB9W,KAA+B,EAAA;EA1L/D,IAAA7G,GAAAG,EAAAA,GAAAA;EA2LQ,MAAA;IAAClF;GAAM,GAAIiS,eAAgB,EAAA;EAE3B,MAAA0Q,QAAA,GAAWlf,OAA8B,IAAI,CAAA;EACnD,MAAMmf,UAAU5iB,MAAS,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,MAAA,CAAAN,cAAA,CAAA;EACzB,MAAMkV,iBAAiB5U,MAAS,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,MAAA,CAAAL,gBAAA,CAAA;EAChC,MAAMkjB,eAAehW,eAAgB,EAAA;EACrC,MAAM;IAACb,UAAY;IAAAC,YAAA;IAAcvH,UAAY;IAAA2H,QAAA,EAAUiU;EAAoB,CAAA,GAAAuC,YAAA;EAC3E,MAAM;IAACpQ,SAAW;IAAAD;MAASD,YAAa,CAAAvG,UAAA,EAAYC,cAAc,KAAK,CAAA;EAEjE,MAAA6W,eAAA,GAAkB5C,kBAAmB,CAAAxb,UAAA,EAAYsH,UAAU,CAAA;EACjE,MAAM;IAAC0R,kBAAA;IAAoB+C;EAAqB,CAAA,GAAIL,wBAAyB,CAAA;IAC3EE,gBAAA;IACAN,eAAiB,EAAAA,eAAA,CAAgBtb,UAAY,EAAA+N,SAAA,EAAWD,KAAK;EAAA,CAC9D,CAAA;EACD,MAAMuQ,aAAgB,GAAAnR,gBAAA,CAAiBlN,UAAY,EAAA1E,MAAA,CAAON,cAAc,CAAC,CAAA;EAEnE,MAAAsjB,OAAA,GAAUlQ,iBAAiB7G,YAAY,CAAA;EAE7C,MAAM+H,cAAiB,GAAAN,uBAAA,CAAwB;IAAC1H,UAAA;IAAYtH;EAAW,CAAA,CAAA;EACjE,MAAA0P,WAAA,GAAA,CAAcrP,GAAA,GAAAiP,cAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,cAAA,CAAgBpO,MAAhB,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAb,IAAwBR,IAAK,CAACwD,CAAM,IAAAA,CAAA,CAAEsJ,IAAS,KAAAuR,OAAA,CAAA;EAC7D,MAAAnO,WAAA,GAAA,CAAcvP,GAAA,GAAAkP,WAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,WAAA,CAAaE,YAAb,KAAA,IAAA,GAAA,KAAA,CAAA,GAAApP,IAA2BX,IAAK,CAAC/C,CAAM,IAAAA,CAAA,CAAEmT,IAAS,KAAAC,cAAA,CAAA;EACtE,MAAMT,KAAQ,GAAAjL,OAAA,CACZ,MAAG;IAjNPnE,IAAAA,GAAAA;IAkNMA,OAAAA,CAAAA,GAAAA,GAAAiP,cAAgB,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,cAAA,CAAAG,KAAA,KAAhB,IAAApP,GAAAA,KAAAA,CAAAA,GAAAA,GAAAA,CAAuBvC,MAAO,CAAChB,CAAM,IAAA,CAACoT,cAAkB,IAAApT,CAAA,CAAEoT,cAAmB,KAAAA,cAAA,CAAA;EAAA,CAAA,EAC/E,CAACZ,cAAgB,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,cAAA,CAAAG,KAAA,EAAOS,cAAc,CAAA,CACxC;EACA,MAAMN,YAAe,GAAApL,OAAA,CACnB,MAAG;IAtNPnE,IAAAA,GAAAA;IAsNU,OAAA,CAAAA,MAAAiP,cAAgB,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,cAAA,CAAApO,MAAA,KAAhB,gBAAAb,GAAwB,CAAAyM,OAAA,CAASzJ,CAAG,IAAA;MAtN9ChD,IAAAA,GAAAA;MAsNiD,OAAA,CAAAA,GAAA,GAAAgD,CAAA,CAAEuM,YAAF,KAAA,IAAA,GAAAvP,MAAkB,EAAC;IAAA,CAAA,CAAA;EAAA,CAAA,EAChE,CAACiP,iDAAgBpO,MAAM,CAAA,CACzB;EAEA,MAAMqd,cAAcxO,WAAa,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,WAAA,CAAAS,MAAA;EAC3B,MAAAgO,aAAA,GAAgBha,QAAQ,MAAM;IA3NtC,IAAAnE,GAAAG,EAAAA,GAAAA;IA4NQ,IAAA,EAAC+d,2CAAaliB,MAAQ,CAAA,EAAA;MACjB,OAAA,IAAA;IACT;IACM,MAAAoiB,UAAA,GAAaF,YAAY,CAAC,CAAA;IAChC,MAAM9Y,WAAWgZ,UAAY,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,UAAA,CAAAhZ,QAAA;IAE7B,OAAO8Y,WAAY,CAAAliB,MAAA,IAAU,CAAK,IAAA,CAAAoJ,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,QAAA,CAAUpJ,YAAW,CAAK,IAAA,EAAA,CAACmE,GAAAH,GAAAA,CAAAA,GAAAA,GAAAoF,qCAAW,CAAX,CAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAApF,GAAe,CAAA8F,IAAA,KAAf,gBAAA3F,GAAqB,CAAAnE,MAAA,CAAA;EAAA,CACpF,EAAG,CAACkiB,WAAW,CAAC,CAAA;EAEhB,MAAMG,QAA6B,GAAAla,OAAA,CACjC,OAAO;IACLtI,IAAM,EAAA,UAAA;IACNwO,EAAI,EAAA4T,OAAA;IACJ5b,KAAO,EAAAkM,WAAA;IACPrT,OAAS,EAAA;MACPmP,EAAI,EAAA4T,OAAA;MACJpiB,IAAM,EAAA/B;IACR;EAAA,CACF,CAAA,EACA,CAACmkB,OAAO,CAAA,CACV;EAEA,MAAMK,qBAAwB,GAAAja,WAAA,CAC5B,MACEqL,WACA,IAAAmO,OAAA,IACAnC,qBAAsB,CAAA;IACpBzU,UAAY,EAAA8W,eAAA;IACZzR,IAAM,EAAAuR,OAAA;IACN9P,gBAAA,EAAkBA,iBAAiB7G,YAAY,CAAA;IAC/CwI;EAAA,CACD,CAAA,EACH,CAACA,WAAA,EAAamO,OAAS,EAAA3W,YAAA,EAAc6W,iBAAiBrC,qBAAqB,CAAA,CAC7E;EAEM,MAAA6C,MAAA,GAASla,WAAY,CAACma,MAAgB,IAAA;IAS1C,OAAA,eAAQ1Z,GAAA,CAAA,KAAA,EAAA;MAAK,GAAG0Z,MAAA;MAAQtZ,KAAO,EAAA;QAACC,MAAQ,EAAA,MAAA;QAAQuQ,IAAM,EAAA,CAAA;QAAGzQ,QAAU,EAAA;MAAA;IAAS,CAAA,CAAA;EAC9E,CAAA,EAAG,EAAE,CAAA;EAEL,IAAI,CAACgC,UAAc,IAAA,CAACtH,UAAc,IAAAA,UAAA,CAAWc,aAAa,QAAU,EAAA;IAEhE,OAAA,eAAAqE,GAAA,CAACC;MAAK2Q,IAAM,EAAA,CAAA;MAAG1Q,SAAS,CACtB;MAAAI,QAAA,EAAA,eAAAN,GAAA,CAAC8E,IAAK,EAAA;QAAAxE,QAAA,EAAA;MAAuB,CAAA;IAC/B,CAAA,CAAA;EAEJ;EAGE,sBAAAC,IAAA,CAACY,IAAA,EAAA;IACCsD,GAAK,EAAAqU,QAAA;IACLnU,SAAU,EAAA,QAAA;IACVtE,MAAO,EAAA,MAAA;IACPF,QAAS,EAAA,QAAA;IACT0E,MAAO,EAAA,QAAA;IACPzE,KAAA,EAAO;MAACuZ,UAAA,EAAY;IAAC,CAAA;IAErBrZ,QAAA,EAAA,CAAA,eAAAN,GAAA,CAAC4Z;MAAkBtE,OAAS,EAAAvT,KAAA,CAAMuT;MAASuE,UAAY,EAAA1R,aAAA,CAAc+Q,aAAa;KAAG,CAAA,EAAA,mBAEpFjZ,IAAK,EAAA;MAAAuE,EAAA,EAAIiV,MAAQ;MAAA7I,IAAA,EAAM;MAAGzQ,QAAS,EAAA,MAAA;MAClCG,QAAC,EAAA,eAAAC,IAAA,CAAAY,IAAA,EAAA;QAAKwD,WAAU,QAAS;QAAAvE,KAAA,EAAO;UAAC0Z,SAAA,EAAW;QAC1C,CAAA;QAAAxZ,QAAA,EAAA,CAAA,eAACN,GAAA,CAAAU,GAAA,EAAA;UAAIkQ,MAAM,CACT;UAAAtQ,QAAA,EAAA,eAAAN,GAAA,CAAC+Z;YACCzZ,QAAC,EAAA,eAAAN,GAAA,CAAAU,GAAA,EAAA;cAAIR,OAAS,EAAA,CAAA;cACXI,QACC,EAAA4Y,aAAA,mBAAAlZ,GAAA,CAACga,iCAAA,EAAA;gBACCC,eAAenB,QAAS,CAAA/e,OAAA;gBACxBmgB,gBAAkB,EAAApB,QAAA;gBAElBxY,QAAA,iBAAAN,GAAA,CAACma,oBAAA,EAAA;kBACCC,SAASpB,YAAa,CAAAoB,OAAA;kBACtBC,OAAOrB,YAAa,CAAAqB,KAAA;kBACpBC,MAAO,EAAA,IAAA;kBACPC,IAAM,EAAAhB,QAAA;kBAENjZ,6BAACwB,YAAa,EAAA,EAAA;gBAAA,CAChB;cAAA,CAAA;YAGN,CAAA;UACF,CAAA;SACF,CAAA,EAAA,eAEA9B,GAAA,CAACU,GAAI,EAAA;UAAAkQ,IAAA,EAAK,MAAO;UAAA1Q,OAAA,EAAS,CACxB;UAAAI,QAAA,EAAA,eAAAC,IAAA,CAACuE,IAAK,EAAA;YAAAgB,KAAA,EAAK,IAAC;YAAAf,IAAA,EAAM,CAAG;YAAAzE,QAAA,EAAA,CAAA,0CAAA,EACsB,GAAA,EAAA,eACzCC,IAAA,CAAC,GAAA,EAAA;cACCgX,IAAM,EAAAjO,eAAA;cACNwM,MAAO,EAAA,QAAA;cACP0B,GAAI,EAAA,YAAA;cACJpX,KAAA,EAAO;gBAACoa,UAAA,EAAY;cAAQ,CAAA;cAC7Bla,QAAA,EAAA,CAAA,cAAA,EAAA,mBACcma,cAAe,EAAA,EAAA,CAAA;YAAA,CAC9B,CAAA;UAAA,CACF;QACF,CAAA,CAAA;MAAA,CACF;IACF,CAAA,CAAA,EAEA,eAAAza,GAAA,CAACsY;MAAoB1H,IAAK,EAAA,MAAA;MAAO8J,UAAU,CAAG;MAAAC,QAAA,EAAU;MAAGva,KAAO,EAAA;QAACwa,aAAa;MAAU,CAAA;MACxFta,8BAACa,IAAK,EAAA;QAAAC,GAAA,EAAK;QAAGwP,IAAM,EAAA,CAAA;QAAGhM,SAAQ,UAC5B;QAAAtE,QAAA,EAAA,CAAA,CAAAzF,UAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,UAAA,CAAYE,SAAQge,OAAW,IAAAhO,cAAA,IAC7B,eAAA/K,GAAA,CAAAQ,KAAA,EAAA;UAAMoQ,MAAM,CACX;UAAAtQ,QAAA,EAAA,eAAAN,GAAA,CAACW,MAAA,EAAA;YACCwP,IAAK,EAAA,OAAA;YACLlP,UAAUoY,aAAiB,IAAAxF,kBAAA;YAC3BzD,QAAU,EAAA,CAAA;YACVxP,IAAM,EAAAiT,kBAAA,GAAsB,eAAA7T,GAAA,CAAAa,OAAA,EAAA,CAAA,CAAQ,CAAK,GAAAsU,QAAA;YACzCjU,OAAS,EAAAsY,qBAAA;YACTtZ,OAAS,EAAA,CAAA;YACTc,IAAM,EAAA;UAAA,CAAA;SAEV,CAAA,EAAA,eAGFhB,GAAA,CAAC2N,4BAAA,EAAA;UACCxL,UAAY,EAAA8W,eAAA;UACZ3O,KAAA;UACAG,YAAA;UACAmD,YAAY,CAAC7C;QAAA,CACf,CAAA;MAAA,CACF;IACF,CAAA,CAAA;EAAA,CAAA,CACF;AAEJ;AAEA,SAAS6O,kBAAkB7X,KAAkD,EAAA;EACrE,MAAA;IAACuT,OAAS;IAAAuE;EAAc,CAAA,GAAA9X,KAAA;EAC9B,MAAM;IAACmW,cAAA;IAAgBE;EAAiB,CAAA,GAAIH,qBAAqBR,sBAAsB,CAAA;EAEvF,OACG,eAAAlX,IAAA,CAAA8X,mBAAA,EAAA;IAAoBzH,IAAK,EAAA,MAAA;IAAO1Q,SAAS,CACxC;IAAAI,QAAA,EAAA,CAAA,eAAAC,IAAA,CAACY,IAAK,EAAA;MAAAyP,IAAA,EAAM,CAAG;MAAAlM,KAAA,EAAM,QACnB;MAAApE,QAAA,EAAA,CAAA,eAAAN,GAAA,CAACmB,IAAK,EAAA;QAAAyP,IAAA,EAAM,CAAG;QAAA1Q,OAAA,EAAS;QAAGkB,GAAK,EAAA,CAAA;QAAGsD,KAAM,EAAA,QAAA;QACvCpE,QAAC,EAAA,eAAAC,IAAA,CAAAY,IAAA,EAAA;UAAKC,GAAK,EAAA,CAAA;UAAGsD,OAAM,QAClB;UAAApE,QAAA,EAAA,CAAA,eAAAN,GAAA,CAAC8E,IAAK,EAAA;YAAAC,IAAA,EAAM,CAAG;YAAA+L,MAAA,EAAO;YAAWxQ,QAEjC,EAAA;WAAA,CAAA,EACA,eAAAN,GAAA,CAACC;YAAK0Q,MAAQ,EAAA,CAAA;YAAGkK,QAAM,IAAC;YAAA3a,OAAA,EAAS;YAAGE,KAAO,EAAA;cAAC0a,QAAQ;aAAQ;YAC1Dxa,6BAACwE,IAAK,EAAA;cAAAC,IAAA,EAAM;cAAG+L,MAAO,EAAA,UAAA;cACnBxQ;aACH;UACF,CAAA,CAAA;QAAA,CACF;MACF,CAAA,CAAA,EAAA,eACCN,GAAA,CAAAU,GAAA,EAAA;QAAIkQ,IAAK,EAAA,MAAA;QACRtQ,6BAACK,MAAO,EAAA;UAAAyP,QAAA,EAAU,CAAG;UAAAxP,IAAA,EAAMma,SAAW;UAAA5K,IAAA,EAAK,OAAQ;UAAAjP,OAAA,EAASoU;QAAS,CAAA;OACvE,CAAA;KACF,CAAA,EAEC4C,cAAkB,IAAA,eAAAlY,GAAA,CAACmX,mBAAoB,EAAA;MAAAC,SAAA,EAAWgB;IAAmB,CAAA,CAAA;EACxE,CAAA,CAAA;AAEJ;ACtXO,MAAM4C,eAAqC,GAAA;EAChDjgB,IAAM,EAAA6G,aAAA;EACNqZ,aAAaA,CAAA,MAAO;IAClBra,IAAM,EAAAqW,YAAA;IACN1Z,KAAO,EAAAkM,WAAA;IACPtN,MAAQ,EAAA,IAAA;IACR+e,YAAc,EAAA;EAAA,CAChB,CAAA;EACAC,SAAW,EAAA5C,sBAAA;EACXjD,OAAAA,CAAA8F,KAAA,EAAkB;IAAA,IAAV;MAACjlB;KAAS,GAAAilB,KAAA;IACT,OAAA;MACLjlB,QAAQmI,KAAkC,CAAA;QACxC,GAAGnI,MAAA;QACH,CAACN,cAAc,GAAG,KAAA,CAAA;QAClB,CAACC,gBAAgB,GAAG,KAAA;MAAA,CACrB;IAAA,CACH;EACF;AACF,CAAA;ACLO,MAAMulB,qBAAwB,GAAA3U,aAAA,CACnC,KAAA,CACF,CAAA;AAEO,SAAS4U,wBAAuDA,CAAA,EAAA;EAC/D,MAAArI,OAAA,GAAUC,WAAWmI,qBAAqB,CAAA;EAChD,IAAI,CAACpI,OAAS,EAAA;IACN,MAAA,IAAInb,MAAM,wCAAwC,CAAA;EAC1D;EACO,OAAAmb,OAAA;AACT;ACxBA,MAAMsI,cAAkC,EAAC;AAEzB,SAAAC,iBAAAA,CAAkBhU,MAAYiU,eAA+C,EAAA;EAC3F,MAAMxI,UAAUqI,wBAAyB,EAAA;EACzC,MAAMnR,cAAiB,GAAA8I,OAAA,IAAW,gBAAoB,IAAAA,OAAA,GAAUA,QAAQ9I,cAAiB,GAAA,KAAA,CAAA;EACzF,MAAMG,QAAQH,cAAgB,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,cAAA,CAAAG,KAAA;EAE9B,OAAOjL,QAAQ,MAAM;IAbvB,IAAAnE,EAAA,EAAAG,EAAA;IAcU,MAAAqgB,cAAA,GAAA,CAAiBrgB,EACnB,GAAA,CAAAH,EAAA,GAAAoP,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,KAAA,CAAA3R,MAAA,CAAQ6R,IAAA,IAAS,CAACA,IAAA,CAAK+D,KADJ,CAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAArT,EAAA,CAEnByM,OAAQ,CAAC6C,IAAM,IAAA;MAhBvBtP,IAAAA,GAAAA;MAgB0B,OAAA,CAAAA,GAAA,GAAAsP,IAAA,CAAKrH,QAAL,KAAA,IAAA,GAAAjI,MAAiB,EAAC;IAAA,CAAA,CAAA,KAFjB,IAGnB,GAAA,KAAA,CAAA,GAAAG,EAAA,CAAA1C,MAAA,CACC+R,CAAA,IACCA,CAAE,CAAAc,OAAA,uBAAeC,IAAK,CAAA,CAAA,CAAEC,OAAQ,EAAA,GAAI,IAAID,IAAK,CAAAf,CAAA,CAAEc,OAAO,CAAA,CAAEE,QAAY,CAAA,GAAA/B,sBAAA,CAEvE,CAAAhR,MAAA,CAAQwK,QAAa,IAAA;MACpB,IAAI,CAACA,QAAA,CAASqE,IAAQ,IAAA,CAACA,KAAKtQ,MAAQ,EAAA;QAC3B,OAAA,KAAA;MACT;MACM,MAAAykB,UAAA,GAAaC,YAAa,CAAAzY,QAAA,CAASqE,IAAI,CAAA;MAE7C,IAAI,CAACiU,eAAA,IAAmBE,UAAW,CAAAzkB,MAAA,KAAWsQ,KAAKtQ,MAAQ,EAAA;QAClD,OAAA,KAAA;MACT;MAEA,OAAOsQ,IAAK,CAAA3L,KAAA,CAAM,CAACggB,WAAA,EAAalkB,CAAM,KAAA;QAC9B,MAAAmkB,aAAA,GAAgBH,WAAWhkB,CAAC,CAAA;QAC9B,IAAA,OAAOkkB,gBAAgB,QAAU,EAAA;UACnC,OAAOA,WAAgB,KAAAC,aAAA;QACzB;QACA,IAAIC,YAAa,CAAAF,WAAW,CAAK,IAAAE,YAAA,CAAaD,aAAa,CAAG,EAAA;UACrD,OAAAD,WAAA,CAAY/Q,SAASgR,aAAc,CAAAhR,IAAA;QAC5C;QACO,OAAA,KAAA;MAAA,CACR,CAAA;IAAA,CACH,CAAA;IACE,IAAA,EAAC4Q,iDAAgBxkB,MAAQ,CAAA,EAAA;MACpB,OAAAqkB,WAAA;IACT;IAEA,OAAOG,eAAe/e,GAAI,CAACyV,UAAW4J,UAAW,CAAA5J,MAAA,EAAQ5K,IAAI,CAAC,CAAA;EAC7D,CAAA,EAAA,CAACiU,eAAiB,EAAAnR,KAAA,EAAO9C,IAAI,CAAC,CAAA;AACnC;AAEgB,SAAAwU,UAAAA,CAAW7Y,QAAsB,EAAAqE,IAAA,EAAYjK,KAAkC,EAAA;EAlD/F,IAAArC,EAAA;EAmDS,OAAA;IACLoW,IAAM,EAAA;MACJ/L,EAAA,EAAI,oBAAoBxN,MAAS,CAAAoL,QAAA,CAAA2H,IAAA,CAAA;MACjCmR,WAAa,EAAAxS;IACf,CAAA;IACAjC,IAAA;IACA0U,SAAW,EAAA,eAAA;IACXC,eAAcjhB,EAAU,GAAAiI,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,QAAA,CAAAqI,OAAA,KAAV,YAAyB,eAAA,IAAAC,IAAA,CAAA,EAAOyC,WAAY,CAAA;EAAA,CAC5D;AACF;;;;;;AC5DA,IAAAhT,IAAA,EAAAG,IAAA;AAGA,MAAM+gB,SAAStP,SAAS,CAAA5R,IAAA,KAAAA,IAAA,GAAA6R,YAAA,CAAA,CAAA,qLAAA,CAAA,CAAA,CAAA,CAAA;AAexB,MAAMsP,SAAY,GAAApP,MAAA,CAAOqP,GAAP,CAAAjhB,IAAA,KAAAA,IAAA,GAAU0R,sCACF,gDAAN,CAAA,CAAA,CAAA,EAAAqP,MAAA,CAAA;AAIP,MAAAG,aAAA,GAAgBvM,UAAW,CAAA,SAASuM,cAC/CC,CAAAC,KAAA,EAQAhY,GACc,EAAA;EAAA,IATd;IACEnE,QAAA;IACAoc,UAAa,GAAA;EACf,CAAA,GAAAD,KAAA;EAQE,OAAA,eAAAzc,GAAA,CAACqc,SAAU,EAAA;IAAA5X,GAAA;IAAUrE,KAAO,EAAA;MAACuc,mBAAmB,EAAG,CAAA5kB,MAAA,CAAA2kB,UAAA,EAAU,IAAI;IAAA,CAAA;IAC9Dpc;EACH,CAAA,CAAA;AAEJ,CAAC,CAAA;ACuDD,MAAMsc,MAAM,GAAG;EACb,IAAI,EAAE;IACJrf,KAAK,EAAE,WAAW;IAClBsf,GAAG,EAAE;EACN,CAAA;EACD,KAAK,EAAE;IACLtf,KAAK,EAAE,YAAY;IACnBsf,GAAG,EAAE;EACN,CAAA;EACD,KAAK,EAAE;IACLtf,KAAK,EAAE,YAAY;IACnBsf,GAAG,EAAE;EACN,CAAA;EACD,KAAK,EAAE;IACLtf,KAAK,EAAE,YAAY;IACnBsf,GAAG,EAAE;EACN,CAAA;EACD,KAAK,EAAE;IACLtf,KAAK,EAAE,YAAY;IACnBsf,GAAG,EAAE;EACN,CAAA;EACD,KAAK,EAAE;IACLtf,KAAK,EAAE,YAAY;IACnBsf,GAAG,EAAE;EACN,CAAA;EACD,KAAK,EAAE;IACLtf,KAAK,EAAE,YAAY;IACnBsf,GAAG,EAAE;EACN,CAAA;EACD,KAAK,EAAE;IACLtf,KAAK,EAAE,YAAY;IACnBsf,GAAG,EAAE;EACN,CAAA;EACD,KAAK,EAAE;IACLtf,KAAK,EAAE,YAAY;IACnBsf,GAAG,EAAE;EACN,CAAA;EACD,KAAK,EAAE;IACLtf,KAAK,EAAE,YAAY;IACnBsf,GAAG,EAAE;EACN,CAAA;EACD,KAAK,EAAE;IACLtf,KAAK,EAAE,YAAY;IACnBsf,GAAG,EAAE;EACN;AACH,CAAC;;;;;;AC3ID,IAAA3hB,IAAA,EAAAG,EAAA,EAAAqC,EAAA,EAAAof,EAAA;AAOA,MAAMC,IAAA,GAAO9P,MAAO,CAAA+P,IAAA,CAAP9hB,IAAW,KAAAA,IAAA,GAAA6R,YAAA,CAAA,CAAA,+EAAA,CAAA,CAAA,CAAA,CAAA;AAOxB,MAAMkQ,OAAOnQ,SAAS,CAAAzR,EAAA,KAAAA,EAAA,GAAA0R,YAAA,CAAA,CAAA,0FAAA,CAAA,CAAA,CAAA,CAAA;AAStB,MAAMmQ,OAAU,GAAAjQ,MAAA,CAAOkQ,GAAP,CAAAzf,EAAA,KAAAA,EAAA,GAAUqP,uPAWL,4MAAJ,CAAA,CAAA,CAAA,EAAAkQ,IAAA,CAAA;AAWjB,MAAMG,QAAA,GAAWnQ,MAAO,CAAA+P,IAAA,CAAPF,EAAW,KAAAA,EAAA,GAAA/P,YAAA,CAAA,CAAA,oPAAA,CAAA,CAAA,CAAA,CAAA;AAcrB,SAASsQ,aAAatb,KAAuC,EAAA;EAC5D,MAAA;IAAC0G,KAAQ,GAAA;EAAa,CAAA,GAAA1G,KAAA;EAC5B,MAAMub,SAASC,mBAAoB,EAAA;EAE7B,MAAAnd,KAAA,GAAQf,QAAQ,MAAM;IAC1B,IAAIie,WAAW,MAAQ,EAAA;MACd,OAAA;QACL,CAAC,0BAA0B,GAAGV,MAAA,CAAO,GAAG,CAAE,CAAAC,GAAA;QAC1C,CAAC,wBAAwB,GAAGD,MAAA,CAAO,GAAG,CAAE,CAAAC;MAAA,CAC1C;IACF;IAEO,OAAA;MACL,CAAC,0BAA0B,GAAGD,MAAA,CAAO,GAAG,CAAE,CAAAC,GAAA;MAC1C,CAAC,wBAAwB,GAAGD,MAAA,CAAO,GAAG,CAAE,CAAAC;IAAA,CAC1C;EAAA,CACF,EAAG,CAACS,MAAM,CAAC,CAAA;EAEX,OACG,eAAA/c,IAAA,CAAAwc,IAAA,EAAA;IAAK,YAAY,EAAAtU,KAAA;IAAOrI,KACvB;IAAAE,QAAA,EAAA,CAAA,eAAAN,GAAA,CAACkd,OAAA,EAAA;MACCtN,KAAM,EAAA,IAAA;MACNvP,MAAO,EAAA,IAAA;MACPmd,OAAQ,EAAA,WAAA;MACRC,IAAK,EAAA,MAAA;MACLC,KAAM,EAAA,4BAAA;MAENpd,6BAAC,QAAO,EAAA;QAAAqd,EAAA,EAAG;QAAOC,EAAG,EAAA,MAAA;QAAOjS,GAAE;OAAQ;IAAA,CACxC,CAAA,EAAA,mBACCyR,QACC,EAAA;MAAA9c,QAAA,EAAA,eAAAN,GAAA,CAAC8E,IAAK,EAAA;QAAAN,EAAA,EAAG;QAAOO,IAAM,EAAA,CAAA;QAAG3E,KAAO,EAAA;UAACyd,OAAO;QAAS,CAAA;QAC/Cvd,QAAC,EAAA,eAAAN,GAAA,CAAAiX,YAAA,EAAA,CAAA,CAAa;MAChB,CAAA;KACF,CAAA;EACF,CAAA,CAAA;AAEJ;ACzFO,SAAS6G,gBAAgB/b,KAAqC,EAAA;EAEjE,OAAA,eAAA/B,GAAA,CAACC,IAAK,EAAA;IAAAG,KAAA,EAAO;MAAC2d,QAAA,EAAU;MAAYC,UAAY,EAAA;IAAA,CAAgB;IAAAC,eAAA,EAAiB,KAC/E;IAAA3d,QAAA,EAAA,eAAAN,GAAA,CAACyV,OAAA,EAAA;MACC/F,SAAU,EAAA,MAAA;MACVH,wBACGvP,GAAA,CAAAC,IAAA,EAAA;QAAKC,OAAS,EAAA,CAAA;QAAG2a,QAAM,IACtB;QAAAva,QAAA,iBAAAN,GAAA,CAACmB,IAAK,EAAA;UAAAuD,KAAA,EAAM;UACVpE,QAAC,EAAA,eAAAN,GAAA,CAAA8E,IAAA,EAAA;YAAKC,MAAM,CAAG;YAAAzE,QAAA,EAAA;WAAsB;SACvC;MACF,CAAA,CAAA;MAGFA,QAAA,EAAA,eAAAN,GAAA,CAACuc;QAAcG,UAAY,EAAA,GAAA;QACzBpc,6BAAC+c,YAAa,EAAA;UAAA5U,KAAA,EAAM;SAAS;MAC/B,CAAA;IAAA,CAEJ;EAAA,CAAA,CAAA;AAEJ;ACvBO,SAASyV,kBAAqBA,CAAA,EAAA;EAEjC,OAAA,eAAAle,GAAA,CAACme,KAAM,EAAA;IAAA/N,QAAA,EAAU,CAAG;IAAAhQ,KAAA,EAAO;MAAC0a,MAAA,EAAQ;IAAQ,CAAA;IAAGzN,IAAK,EAAA,SAAA;IAAU/M,QAE9D,EAAA;EAAA,CAAA,CAAA;AAEJ;ACEO,SAAS8d,wBAAwBrc,KAAoC,EAAA;EACpE,MAAA;IAACsc;EAAW,CAAA,GAAAtc,KAAA;EAGhB,sBAAA/B,GAAA,CAACqP,OAAA,EAAA;IACCE,OAAA,iBAAUvP,GAAA,CAAAse,eAAA,EAAA;MAAgBD;IAAkB,CAAA,CAAA;IAC5C3P,IAAI,EAAA,IAAA;IACJiB,MAAM,EAAA,IAAA;IACN4O,WAAY,EAAA,QAAA;IACZlR,IAAK,EAAA,SAAA;IACLuC,KAAO,EAAA,CAAA;IAEPtP,QAAA,EAAA,eAAAN,GAAA,CAACC,IAAK,EAAA;MAAA0Q,MAAA,EAAQ,CAAG;MAAA6N,MAAA,EAAQ;MAAGpe,KAAO,EAAA;QAACF,OAAS,EAAA,CAAA;QAAGyZ,UAAY,EAAA;MAAA;MAC1DrZ,QAAC,iBAAAN,GAAA,CAAAW,MAAA,EAAA;QAAOM,QAAQ,EAAA,IAAA;QAACmP,QAAU,EAAA,CAAA;QAAGxP,IAAM,EAAAqW,YAAA;QAAc9G,IAAK,EAAA,OAAA;QAAQjQ,OAAS,EAAA;MAAA,CAAG;IAC7E,CAAA;EAAA,CAAA,CACF;AAEJ;AAEA,SAASoe,gBAAgBvc,KAA8B,EAAA;EAC/C,MAAA0c,SAAA,GAAY7kB,OAA0B,IAAI,CAAA;EAEhD,2BACG4G,KAAM,EAAA;IAAAgE,EAAA,EAAG;IAAUtE,OAAS,EAAA,CAAA;IAAGO,OAAO,CACrC;IAAAH,QAAA,EAAA,CAAA,eAAAC,IAAA,CAACC,KAAM,EAAA;MAAAN,OAAA,EAAS,CAAG;MAAAO,KAAA,EAAO,CACxB;MAAAH,QAAA,EAAA,CAAA,eAAAC,IAAA,CAACY,IAAK,EAAA;QAAAC,GAAA,EAAK,CAAG;QAAAsD,KAAA,EAAM,QAClB;QAAApE,QAAA,EAAA,CAAA,eAAAN,GAAA,CAAC8E;UAAKN,EAAG,EAAA,IAAA;UAAKO,MAAM,CAAG;UAAA+L,MAAA,EAAO;UAC3BxQ,QACH,EAAAmJ;QAAA,CAAA,CAAA,EAAA,eACCzJ,GAAA,CAAA,KAAA,EAAA;UAAI,aAAW,EAAA,IAAA;UAACI,KAAO,EAAA;YAAC0a,MAAQ,EAAA,QAAA;YAAUnB,UAAY,EAAA;UACrD,CAAA;UAAArZ,QAAA,EAAA,eAAAN,GAAA,CAACke,qBAAmB,CAAA;SACtB,CAAA;OACF,CAAA,EAAA,eAEAle,GAAA,CAACQ,KAAM,EAAA;QAAAC,KAAA,EAAO,CACZ;QAAAH,QAAA,EAAA,eAAAC,IAAA,CAACuE,IAAK,EAAA;UAAAN,EAAA,EAAG,GAAI;UAAAsB,KAAA,EAAK,IAAC;UAAAf,IAAA,EAAM,CAAG;UAAAzE,QAAA,EAAA,CAAA,wGAAA,EAEP,GAAA,EAAA,oBAClB,GAAE,EAAA;YAAAiX,IAAA,EAAMnO;YAAwB0M,MAAO,EAAA,QAAA;YAAS0B,KAAI,YAAa;YAAAlX,QAAA,EAAA,CAAA,aAAA,EAAA,mBACpDma,cAAe,EAAA,EAAA,CAAA;WAC7B,CAAA;QAAA,CACF;MACF,CAAA,CAAA;KACF,CAAA,EAAA,eAEAza,GAAA,CAACW,MAAA,EAAA;MACCyP,QAAU,EAAA,CAAA;MACVxP,IAAM,EAAA8d,aAAA;MACNxd,SAASa,KAAM,CAAAsc,OAAA;MACfne,OAAS,EAAA,CAAA;MACTuE,GAAK,EAAAga,SAAA;MACLzd,IAAK,EAAA,mBAAA;MACLqM,IAAK,EAAA;IAAA,CACP,CAAA;EACF,CAAA,CAAA;AAEJ;AC9Da,MAAAsR,wBAAA,GAA2BjY,cAAkC,KAAS,CAAA,CAAA;AAM5E,SAASkY,0BACd7c,KACA,EAAA;EACM,MAAA;IAACyD;EAAW,CAAA,GAAAzD,KAAA;EAEZ,MAAA8c,iBAAA,GAAoBxf,QAAQ,MAAM;IACtC,MAAMyf,gBAAgBtZ,OAAQ,CAAA9K,IAAA,CAC3BqkB,UACCA,MAAO,CAAAC,IAAA,KAAS,WAAWxjB,iBAAkB,CAAAujB,MAAA,CAAO/iB,MAAMnB,UAAU,CAAA,CACxE;IACA,OAAA,CAAOikB,+CAAe9iB,KAAM,CAAAwL,IAAA,IAAOK,aAAaiX,aAAe,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,aAAA,CAAA9iB,KAAA,CAAMwL,IAAI,CAAI,GAAA,KAAA,CAAA;EAAA,CAC/E,EAAG,CAAChC,OAAO,CAAC,CAAA;EAEZ,0BACGmZ,wBAAyB,CAAA/X,QAAA,EAAzB;IAAkC9I,KAAO,EAAA+gB,iBAAA;IACvCve,gBAAMA;EACT,CAAA,CAAA;AAEJ;AChBO,SAAS2e,mBAAmBld,KAAmB,EAAA;EAC9C,MAAA;IAAClH;EAAc,CAAA,GAAAkH,KAAA;EAEf,MAAAmd,WAAA,GAAc7f,QAAQ,MAAM7D,iBAAA,CAAkBX,UAAU,CAAG,EAAA,CAACA,UAAU,CAAC,CAAA;EAG3E,IAAA,CAACqkB,eACDrkB,UAAW,CAAAE,IAAA,CAAK2B,WAAW,SAAS,CAAA,IACpC7B,UAAW,CAAAE,IAAA,KAASxF,uBACpB,EAAA;IACO,OAAAwM,KAAA,CAAMod,cAAcpd,KAAK,CAAA;EAClC;EACI,IAAA,CAACnH,OAAOmH,KAAM,CAAAlH,UAAA,EAAY,UAAU,CAAK,IAAAkH,KAAA,CAAMqd,YAAY,MAAQ,EAAA;IACrE,sBAAQpf,GAAA,CAAAqf,WAAA,EAAA;MAAa,GAAGtd,KAAA;MAAQzB,gBAAMA;IAAS,CAAA,CAAA;EACjD;EAEO,OAAAyB,KAAA,CAAMod,cAAcpd,KAAK,CAAA;AAClC;AAEO,SAASsd,YAAYtd,KAAmB,EAAA;EACvC,MAAA;IAACyF;EAAQ,CAAA,GAAAzF,KAAA;EAEf,MAAMud,cAAiB,GAAAjgB,OAAA,CACrB,MAAM,CAAC,EAAEkgB,iBAAA,CAAkBxd,MAAMlH,UAAU,CAAA,IAAKJ,mBAAoB,CAAAsH,KAAA,CAAMlH,UAAU,CAAA,CAAA,EACpF,CAACkH,MAAMlH,UAAU,CAAA,CACnB;EAEA,MAAMsI,QAAW,GAAAqY,iBAAA,CAAkBzZ,KAAM,CAAAyF,IAAA,EAAM8X,cAAc,CAAA;EAEvD,MAAAT,iBAAA,GAAoB3L,WAAWyL,wBAAwB,CAAA;EAC7D,MAAMa,eAAkB,GAAAngB,OAAA,CACtB,MAAMwI,YAAa,CAAAL,IAAI,CAAM,KAAAqX,iBAAA,EAC7B,CAACrX,MAAMqX,iBAAiB,CAAA,CAC1B;EAEA,MAAM;IAAC3G,cAAA;IAAgBE;EAAiB,CAAA,GAAIH,qBAAqBP,kBAAkB,CAAA;EAE7E,MAAA+H,OAAA,uBACHte,IAAK,EAAA;IAAAC,GAAA,EAAK;IAAGsD,KAAM,EAAA,QAAA;IAASE,SAAQ,eAClC;IAAAtE,QAAA,EAAA,CAAA6C,QAAA,CAASxG,GAAI,CAAC+iB,GACb,IAAA,eAAA1f,GAAA,CAACU;MACCJ,QAAC,EAAA,eAAAN,GAAA,CAAA8d,eAAA,EAAA;QAAuC3a,QAAU,EAAAuc;MAAA,CAAA,EAA5BA,IAAIvD,YAA6B;IAAA,CAAA,EAD/CuD,GAAI,CAAApO,IAAA,CAAK/L,EAEnB,CACD,CAAA,EAEAia,eAAmB,IAAAtH,cAAA,IAAA,eAAmBlY,GAAA,CAAAoe,uBAAA,EAAA;MAAwBC,SAASjG;KAAmB,CAAA;EAC7F,CAAA,CAAA;EAGF,OAAOrW,MAAMod,aAAc,CAAA;IACzB,GAAGpd,KAAA;IAAA;IAGH0d,OAAS,EAAAD,eAAA,IAAmBtH,cAAiB,GAAA,KAAKnW,KAAM,CAAA0d,OAAA;IAAA;IAAA;IAIxDE,eAAiB,EAAAF;EAAA,CAClB,CAAA;AACH;ACpEa,MAAAG,sBAAA,GAAyBlZ,cAAsC,IAAI,CAAA;ACCzE,SAASmZ,kBAAsCA,CAAA,EAAA;EAC9C,MAAApgB,KAAA,GAAQyT,WAAW0M,sBAAsB,CAAA;EAE/C,IAAI,CAACngB,KAAO,EAAA;IACJ,MAAA,IAAI3H,MAAM,kCAAkC,CAAA;EACpD;EAEO,OAAA2H,KAAA;AACT;ACZO,SAASqgB,kBAAkBC,EAA0B,EAAA;EACpD,MAAA5f,QAAA,GAAW6f,gBAAiB,CAAAD,EAAE,CAAE,CAAA5f,QAAA;EAE/B,OAAAA,QAAA,CAAS5H,QAAS,CAAA,MAAM,CAAK,IAAA4H,QAAA,CAAS5H,SAAS,QAAQ,CAAA,IAAK4H,QAAS,CAAA5H,QAAA,CAAS,QAAQ,CAAA;AAC/F;ACAO,SAAS0nB,cAAiBA,CAAA,EAAA;EACzB,MAAAxb,GAAA,GAAM7K,OAAuB,IAAI,CAAA;EAEvC,MAAM,CAACsmB,kBAAA,EAAoBC,qBAAqB,CAAA,GAAI7mB,SAAsB,IAAI,CAAA;EAC9E,MAAM,CAAC8mB,mBAAA,EAAqBC,sBAAsB,CAAA,GAAI/mB,SAAsB,IAAI,CAAA;EAC1E,MAAA,CAACgnB,YAAc,EAAAC,eAAe,CAAI,GAAAjnB,QAAA,CAAiB;IAACknB,CAAG,EAAA,CAAA;IAAGC,CAAG,EAAA;EAAA,CAAE,CAAA;EAC/D,MAAA,CAACC,MAAQ,EAAAC,SAAS,CAAI,GAAArnB,QAAA,CAAiB;IAACknB,CAAG,EAAA,CAAA;IAAGC,CAAG,EAAA;EAAA,CAAE,CAAA;EAEnD,MAAAG,gBAAA,GAAmBhnB,OAAO,CAAC,CAAA;EAC3B,MAAAinB,gBAAA,GAAmBjnB,OAAO,CAAC,CAAA;EAE3B,MAAAknB,iBAAA,GAAoBlnB,OAAO,CAAC,CAAA;EAC5B,MAAAmnB,iBAAA,GAAoBnnB,OAAO,CAAC,CAAA;EAElCE,SAAA,CAAU,MAAM;IACd,MAAMimB,KAAKtb,GAAI,CAAA1K,OAAA;IAEf,IAAI,CAACgmB,EAAA,EAAW,OAAA,KAAA,CAAA;IAEhB,MAAMiB,gBAA+B,EAAC;IACtC,IAAIvZ,SAASsY,EAAG,CAAAkB,aAAA;IAET,OAAAxZ,MAAA,IAAUA,MAAW,KAAAvB,QAAA,CAAS+L,IAAM,EAAA;MAEvC,IAAA6N,iBAAA,CAAkBrY,MAAM,CAExB,EAAA;QACAuZ,aAAA,CAAc7O,KAAK1K,MAAM,CAAA;MAC3B;MAEAA,MAAA,GAASA,MAAO,CAAAwZ,aAAA;IAClB;IAEA,SAASC,YAAeA,CAAA,EAAA;MAChB,MAAAC,YAAA,GAAeH,cAAc,CAAC,CAAA;MAE9B,MAAAI,UAAA,GAAA,CAAaD,6CAAcE,qBAA2B,EAAA,KAAA;QAC1Db,CAAG,EAAA,CAAA;QACHC,CAAG,EAAA,CAAA;QACH7Q,OAAO0R,MAAO,CAAAC,UAAA;QACdlhB,QAAQihB,MAAO,CAAAE;MAAA,CACjB;MAEM,MAAAC,OAAA,GAAU1B,GAAIsB,qBAAsB,EAAA;MAEpBlB,qBAAA,CAAA;QACpBK,CAAA,EAAGY,UAAW,CAAAZ,CAAA,GAAII,gBAAiB,CAAA7mB,OAAA;QACnC0mB,CAAA,EAAGW,UAAW,CAAAX,CAAA,GAAII,gBAAiB,CAAA9mB,OAAA;QACnC2nB,GAAGN,UAAW,CAAAxR,KAAA;QACd+R,GAAGP,UAAW,CAAA/gB;MAAA,CACf,CAAA;MAEsBggB,sBAAA,CAAA;QACrBG,CAAA,EAAGiB,OAAQ,CAAAjB,CAAA,GAAIM,iBAAkB,CAAA/mB,OAAA;QACjC0mB,CAAA,EAAGgB,OAAQ,CAAAhB,CAAA,GAAIM,iBAAkB,CAAAhnB,OAAA;QACjC2nB,GAAGD,OAAQ,CAAA7R,KAAA;QACX+R,GAAGF,OAAQ,CAAAphB;MAAA,CACZ,CAAA;IACH;IAEA,SAASuhB,YAAeA,CAAA,EAAA;MACtB,IAAIC,UAAUP,MAAO,CAAAO,OAAA;MACrB,IAAIC,UAAUR,MAAO,CAAAQ,OAAA;MAErB,KAAA,MAAWX,iBAAgBH,aAAe,EAAA;QACxCa,OAAA,IAAWV,aAAa,CAAAY,UAAA;QACxBD,OAAA,IAAWX,aAAa,CAAAa,SAAA;MAC1B;MAEM,MAAAb,YAAA,GAAeH,cAAc,CAAC,CAAA;MAEpCJ,gBAAA,CAAiB7mB,OAAU,GAAA8nB,OAAA,IAAA,CAAWV,YAAc,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,YAAA,CAAAY,UAAA,KAAcT,MAAO,CAAAO,OAAA,CAAA;MAEzEhB,gBAAA,CAAiB9mB,OAAU,GAAA+nB,OAAA,IAAA,CAAWX,YAAc,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,YAAA,CAAAa,SAAA,KAAaV,MAAO,CAAAQ,OAAA,CAAA;MAExDvB,eAAA,CAAA;QACdC,GAAGI,gBAAiB,CAAA7mB,OAAA;QACpB0mB,GAAGI,gBAAiB,CAAA9mB;MAAA,CACrB,CAAA;MAED+mB,iBAAA,CAAkB/mB,OAAU,GAAA8nB,OAAA;MAC5Bd,iBAAA,CAAkBhnB,OAAU,GAAA+nB,OAAA;MAE5BnB,SAAA,CAAU;QAACH,CAAA,EAAGqB,OAAS;QAAApB,CAAA,EAAGqB;MAAQ,CAAA,CAAA;IACpC;IAEAR,MAAA,CAAOW,iBAAiB,QAAU,EAAAL,YAAA,EAAc;MAACM,OAAA,EAAS;KAAK,CAAA;IAEzD,MAAAC,EAAA,GAAK,IAAIC,cAAA,CAAelB,YAAY,CAAA;IAE1CiB,EAAA,CAAGE,QAAQtC,EAAE,CAAA;IAEb,KAAA,MAAWoB,gBAAgBH,aAAe,EAAA;MACxCG,YAAA,CAAac,iBAAiB,QAAU,EAAAL,YAAA,EAAc;QAACM,OAAA,EAAS;OAAK,CAAA;MACrEC,EAAA,CAAGE,QAAQlB,YAAY,CAAA;IACzB;IAEaS,YAAA,EAAA;IAEb,OAAO,MAAM;MACXO,EAAA,CAAGG,UAAUvC,EAAE,CAAA;MAEf,KAAA,MAAWoB,gBAAgBH,aAAe,EAAA;QACxCmB,EAAA,CAAGG,UAAUnB,YAAY,CAAA;QACZA,YAAA,CAAAoB,mBAAA,CAAoB,UAAUX,YAAY,CAAA;MACzD;MAEAO,EAAA,CAAGK,UAAW,CAAA,CAAA;MAEPlB,MAAA,CAAAiB,mBAAA,CAAoB,UAAUX,YAAY,CAAA;IAAA,CACnD;EACF,CAAA,EAAG,EAAE,CAAA;EAEL,MAAMa,MAAsB,GAAApjB,OAAA,CAC1B,MACE6gB,kBAAsB,IAAA;IACpBM,CAAA,EAAGN,kBAAmB,CAAAM,CAAA,GAAIF,YAAa,CAAAE,CAAA;IACvCC,CAAA,EAAGP,kBAAmB,CAAAO,CAAA,GAAIH,YAAa,CAAAG,CAAA;IACvCiB,GAAGxB,kBAAmB,CAAAwB,CAAA;IACtBC,GAAGzB,kBAAmB,CAAAyB;EACxB,CAAA,EACF,CAACzB,oBAAoBI,YAAY,CAAA,CACnC;EAEA,MAAMoC,OAAuB,GAAArjB,OAAA,CAC3B,MACE+gB,mBAAuB,IAAA;IACrBI,CAAA,EAAGJ,mBAAoB,CAAAI,CAAA,GAAIE,MAAO,CAAAF,CAAA;IAClCC,CAAA,EAAGL,mBAAoB,CAAAK,CAAA,GAAIC,MAAO,CAAAD,CAAA;IAClCiB,GAAGtB,mBAAoB,CAAAsB,CAAA;IACvBC,GAAGvB,mBAAoB,CAAAuB;EACzB,CAAA,EACF,CAACvB,qBAAqBM,MAAM,CAAA,CAC9B;EAEO,OAAA;IAAC+B,MAAQ;IAAAC,OAAA;IAASje;GAAG;AAC9B;ACxIO,SAASke,gBACd5gB,KAGA,EAAA;EACA,MAAM;IAACzB,QAAA;IAAUsiB,aAAe;IAAA,GAAGC;GAAa,GAAA9gB,KAAA;EAEhD,MAAM;IAAC0gB,MAAA;IAAQC,OAAS;IAAAje;MAAOwb,cAAe,CAAA,CAAA;EAE9CnmB,SAAA,CAAU,MAAM;IACd8oB,aAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,aAAA,CAAgBH,MAAU,IAAAC,OAAA,GAAU;MAACD,MAAA;MAAQC;IAAW,CAAA,GAAA,IAAA,CAAA;EACvD,CAAA,EAAA,CAACD,MAAQ,EAAAC,OAAA,EAASE,aAAa,CAAC,CAAA;EAEnC,OACG,eAAA5iB,GAAA,CAAA,KAAA,EAAA;IAAK,GAAG6iB,SAAA;IAAWpe;IACjBnE;EACH,CAAA,CAAA;AAEJ;ACjBO,SAASwiB,kBACd/gB,KACA,EAAA;EACA,MAAM;IAACzB,QAAU;IAAAwK,IAAA,EAAMnM;IAAKokB,MAAQ;IAAA,GAAGF;EAAa,CAAA,GAAA9gB,KAAA;EACpD,MAAMtC,QAAQogB,kBAAmB,EAAA;EACjC,MAAM,CAACmD,KAAA,EAAOC,QAAQ,CAAA,GAAI3pB,SAAsC,IAAI,CAAA;EAEpEQ,SAAA,CAAU,MAAM2F,KAAA,CAAMqX,IAAK,CAAAzc,SAAA,CAAUsE,GAAK,EAAA;IAACokB;EAAO,CAAA,CAAG,EAAA,CAACpkB,GAAK,EAAAc,KAAA,EAAOsjB,MAAM,CAAC,CAAA;EAEzEjpB,SAAA,CAAU,MAAM;IACV,IAAAkpB,KAAA,EAAavjB,KAAA,CAAAqX,IAAA,CAAKoM,IAAK,CAAAvkB,GAAA,EAAKqkB,KAAK,CAAA;EACpC,CAAA,EAAA,CAACrkB,GAAK,EAAAqkB,KAAA,EAAOvjB,KAAK,CAAC,CAAA;EAEtB,0BACGkjB,eAAiB,EAAA;IAAA,GAAGE,SAAW;IAAAD,aAAA,EAAeK;IAC5C3iB;EACH,CAAA,CAAA;AAEJ;ACLO,SAAS6iB,qBAAyCA,CAAA,EAAA;EACvD,MAAMC,aAAuB,EAAC;EAC9B,MAAMC,YAAsB,EAAC;EAE7B,MAAMC,QAAW,GAAA;IACfxM,IAAA,EAAA,mBAAUyM,GAAyC,CAAA,CAAA;IACnDzmB,EAAA,EAAA,mBAAQymB,GAAyC,CAAA;EAAA,CACnD;EAEA,MAAMC,QAAW,GAAA;IACf1M,IAAA,EAAA,mBAAUyM,GAAiD,CAAA,CAAA;IAC3DzmB,EAAA,EAAA,mBAAQymB,GAAiD,CAAA;EAAA,CAC3D;EAEA,MAAME,YAAmD,EAAC;EAE1D,SAASC,eAAkBA,CAAA,EAAA;IACzB,MAAMC,aAA0B,EAAC;IAEjC,KAAA,MAAWhlB,OAAOykB,UAAY,EAAA;MAC5B,MAAMQ,OAAU,GAAAN,QAAA,CAASxmB,EAAG,CAAAF,GAAA,CAAI+B,GAAG,CAAA;MACnC,MAAMklB,SAAY,GAAAL,QAAA,CAAS1M,IAAK,CAAAla,GAAA,CAAI+B,GAAG,CAAA;MAEvC,MAAMmlB,SAAY,GAAAR,QAAA,CAASxM,IAAK,CAAAla,GAAA,CAAI+B,GAAG,CAAA;MACvC,MAAMolB,WAAc,GAAAP,QAAA,CAAS1M,IAAK,CAAAla,GAAA,CAAI+B,GAAG,CAAA;MAEzC,IAAIilB,WAAWE,SAAW,EAAA;QACxBH,UAAA,CAAWxR,IAAK,CAAA;UACdxT,GAAA;UACAmY,IAAM,EAAA;YAAC,GAAGgN,SAAA;YAAWE,SAASD;UAAW,CAAA;UACzCjnB,EAAI,EAAA;YAAC,GAAG8mB,OAAA;YAASI,SAASH;UAAS;QAAA,CACpC,CAAA;MACH;IACF;IAEA,KAAA,MAAWI,YAAYR,SAAW,EAAA;MAChCQ,QAAA,CAASN,UAAU,CAAA;IACrB;EACF;EAEO,OAAA;IACL7mB,EAAI,EAAA;MACFzC,SAAAA,CAAUsE,KAAKqlB,OAAS,EAAA;QACbV,QAAA,CAAAxmB,EAAA,CAAGmR,GAAI,CAAAtP,GAAA,EAAK,IAAI,CAAA;QAChB6kB,QAAA,CAAA1mB,EAAA,CAAGmR,GAAI,CAAAtP,GAAA,EAAKqlB,OAAO,CAAA;QAE5BZ,UAAA,CAAWjR,KAAKxT,GAAG,CAAA;QAEnB,OAAO,MAAM;UACF2kB,QAAA,CAAAxmB,EAAA,CAAGonB,OAAOvlB,GAAG,CAAA;UACb6kB,QAAA,CAAA1mB,EAAA,CAAGonB,OAAOvlB,GAAG,CAAA;UAEhB,MAAAwlB,GAAA,GAAMf,UAAW,CAAAgB,OAAA,CAAQzlB,GAAG,CAAA;UAElC,IAAIwlB,GAAM,GAAA,CAAA,CAAA,EAAef,UAAA,CAAAiB,MAAA,CAAOF,KAAK,CAAC,CAAA;UAEtBT,eAAA,EAAA;QAAA,CAClB;MACF,CAAA;MACAR,IAAAA,CAAKvkB,KAAKqkB,KAAO,EAAA;QACNM,QAAA,CAAAxmB,EAAA,CAAGmR,GAAI,CAAAtP,GAAA,EAAKqkB,KAAK,CAAA;QAEtB,IAAAK,SAAA,CAAU9qB,SAASoG,GAAG,CAAA,EAAmB+kB,eAAA,EAAA;MAC/C;IACF,CAAA;IAEAC,UAAY,EAAA;MACVtpB,UAAU4pB,QAAU,EAAA;QAClBR,SAAA,CAAUtR,KAAK8R,QAAQ,CAAA;QAEvB,OAAO,MAAM;UACL,MAAAE,GAAA,GAAMV,SAAU,CAAAW,OAAA,CAAQH,QAAQ,CAAA;UAEtC,IAAIE,GAAM,GAAA,CAAA,CAAA,EAAcV,SAAA,CAAAY,MAAA,CAAOF,KAAK,CAAC,CAAA;QAAA,CACvC;MACF;IACF,CAAA;IAEArN,IAAM,EAAA;MACJzc,SAAAA,CAAUsE,KAAKqlB,OAAS,EAAA;QACbV,QAAA,CAAAxM,IAAA,CAAK7I,GAAI,CAAAtP,GAAA,EAAK,IAAI,CAAA;QAClB6kB,QAAA,CAAA1M,IAAA,CAAK7I,GAAI,CAAAtP,GAAA,EAAKqlB,OAAO,CAAA;QAE9BX,SAAA,CAAUlR,KAAKxT,GAAG,CAAA;QAElB,OAAO,MAAM;UACF2kB,QAAA,CAAAxM,IAAA,CAAKoN,OAAOvlB,GAAG,CAAA;UACf6kB,QAAA,CAAA1M,IAAA,CAAKoN,OAAOvlB,GAAG,CAAA;UAElB,MAAAwlB,GAAA,GAAMd,SAAU,CAAAe,OAAA,CAAQzlB,GAAG,CAAA;UAEjC,IAAIwlB,GAAM,GAAA,CAAA,CAAA,EAAcd,SAAA,CAAAgB,MAAA,CAAOF,KAAK,CAAC,CAAA;UAErBT,eAAA,EAAA;QAAA,CAClB;MACF,CAAA;MACAR,IAAAA,CAAKvkB,KAAKqkB,KAAO,EAAA;QACNM,QAAA,CAAAxM,IAAA,CAAK7I,GAAI,CAAAtP,GAAA,EAAKqkB,KAAK,CAAA;QAExB,IAAAI,UAAA,CAAW7qB,SAASoG,GAAG,CAAA,EAAmB+kB,eAAA,EAAA;MAChD;IACF;EAAA,CACF;AACF;ACpHO,SAASY,mBAAmBviB,KAGhC,EAAA;EACK,MAAA;IAACzB,QAAU;IAAAikB;EAAsB,CAAA,GAAAxiB,KAAA;EACvC,MAAMtC,QAAyBJ,OAAQ,CAAA,MAAM8jB,qBAAsB,CAAA,CAAA,EAAG,EAAE,CAAA;EAExErpB,SAAA,CACE,MAAMyqB,kBAAA,IAAsB9kB,KAAM,CAAAkkB,UAAA,CAAWtpB,UAAUkqB,kBAAkB,CAAA,EACzE,CAACA,oBAAoB9kB,KAAK,CAAA,CAC5B;EAEA,0BAAQmgB,sBAAuB,CAAAhZ,QAAA,EAAvB;IAAgC9I,KAAA,EAAO2B;IAAQa;EAAS,CAAA,CAAA;AAClE;ACVA,SAASkkB,qBAAAA,CACPpuB,OACA,EAAAquB,IAAA,EACAhC,MACoB,EAAA;EACpB,MAAMiC,OAAU,GAAAD,IAAA,CAAKhE,CAAI,GAAAgE,IAAA,CAAK9C,CAAI,GAAA,CAAA;EAC5B,MAAAgD,OAAA,GAAUF,KAAKhE,CAAI,GAAAgE,IAAA,CAAK9C,IAAIc,MAAO,CAAAhC,CAAA,GAAIrqB,QAAQwuB,KAAM,CAAAC,OAAA;EACrD,MAAAC,OAAA,GAAUL,KAAKhE,CAAI,GAAAgC,MAAA,CAAOhC,IAAIgC,MAAO,CAAAd,CAAA,GAAIvrB,QAAQwuB,KAAM,CAAAC,OAAA;EAEtD,OAAA;IACLpC,MAAA;IACAjC,GAAGiE,IAAK,CAAAjE,CAAA;IACRC,CAAG,EAAAiE,OAAA;IACHA,OAAA;IACAK,MAAQ,EAAAN,IAAA,CAAKhE,CAAI,GAAArqB,OAAA,CAAQoR,IAAK,CAAAqd,OAAA;IAC9BG,MAAMP,IAAK,CAAAhE,CAAA,GAAIgE,IAAK,CAAA9C,CAAA,GAAIvrB,QAAQoR,IAAK,CAAAqd,OAAA;IACrCF,OAAA;IACAG,OAAA;IACAG,aAAaN,OAAW,IAAAG;EAAA,CAC1B;AACF;AAEgB,SAAAI,kBAAAA,CACd9uB,SACA+uB,SACe,EAAA;EACf,MAAMC,UAAmB,GAAA;IACvB3E,GAAG0E,SAAU,CAAArO,IAAA,CAAK2L,MAAO,CAAAhC,CAAA,GAAIrqB,QAAQwuB,KAAM,CAAAS,SAAA;IAAA;IAE3C7E,CAAA,EAAG2E,SAAU,CAAArO,IAAA,CAAK2L,MAAO,CAAAjC,CAAA;IAAA;IAEzBkB,CAAA,EAAGyD,SAAU,CAAArO,IAAA,CAAK2L,MAAO,CAAAf,CAAA;IACzBC,GAAGwD,SAAU,CAAArO,IAAA,CAAK2L,OAAOd,CAAI,GAAAvrB,OAAA,CAAQwuB,MAAMS,SAAY,GAAA;EAAA,CACzD;EAEA,MAAMvO,OAAO0N,qBAAsB,CAAApuB,OAAA,EAAS+uB,SAAU,CAAArO,IAAA,CAAK4L,SAAS0C,UAAU,CAAA;EAC9EtO,IAAA,CAAK0J,IAAI2E,SAAU,CAAArO,IAAA,CAAK4L,QAAQlC,CAAI,GAAA2E,SAAA,CAAUrO,KAAK4L,OAAQ,CAAAhB,CAAA;EAErD,MAAA4D,UAAA,GAAaF,UAAW,CAAA3E,CAAA,GAAI2E,UAAW,CAAAzD,CAAA;EAE7C,MAAM4D,QAAiB,GAAA;IACrB9E,GAAG0E,SAAU,CAAAroB,EAAA,CAAG2lB,MAAO,CAAAhC,CAAA,GAAIrqB,QAAQwuB,KAAM,CAAAS,SAAA;IAAA;IAEzC7E,CAAA,EAAG2E,SAAU,CAAAroB,EAAA,CAAG2lB,MAAO,CAAAjC,CAAA;IAAA;IAEvBkB,CAAA,EAAGyD,SAAU,CAAAroB,EAAA,CAAG2lB,MAAO,CAAAf,CAAA;IACvBC,GAAGwD,SAAU,CAAAroB,EAAA,CAAG2lB,OAAOd,CAAI,GAAAvrB,OAAA,CAAQwuB,MAAMS,SAAY,GAAA;EAAA,CACvD;EAEM,MAAAG,QAAA,GAAWD,QAAS,CAAA9E,CAAA,GAAI8E,QAAS,CAAA5D,CAAA;EAEvC,MAAM7kB,KAAK0nB,qBAAsB,CAAApuB,OAAA,EAAS+uB,SAAU,CAAAroB,EAAA,CAAG4lB,SAAS6C,QAAQ,CAAA;EAExE,MAAME,YAAYC,IAAK,CAAAC,GAAA,CAAI7oB,EAAG,CAAAioB,MAAA,EAAQjO,KAAKiO,MAAM,CAAA;EAGjDjO,IAAA,CAAK2J,CAAI,GAAAiF,IAAA,CAAKE,GAAI,CAAAH,SAAA,EAAW3O,KAAKkO,IAAI,CAAA;EAClC,IAAAlO,IAAA,CAAK2J,CAAI,GAAA8E,QAAA,CAAS9E,CAAG,EAAA;IACvB3J,IAAA,CAAK2J,IAAIiF,IAAK,CAAAE,GAAA,CAAIL,QAAS,CAAA9E,CAAA,EAAG3J,KAAKkO,IAAI,CAAA;EAAA,CACzC,MAAA,IAAWlO,IAAK,CAAA2J,CAAA,GAAI+E,QAAU,EAAA;IAC5B1O,IAAA,CAAK2J,CAAI,GAAAiF,IAAA,CAAKC,GAAI,CAAAH,QAAA,EAAU1O,KAAKiO,MAAM,CAAA;EACzC;EACAjoB,EAAA,CAAG2jB,CAAI,GAAAiF,IAAA,CAAKE,GAAI,CAAAH,SAAA,EAAW3oB,GAAGkoB,IAAI,CAAA;EAC9B,IAAAloB,EAAA,CAAG2jB,CAAI,GAAA2E,UAAA,CAAW3E,CAAG,EAAA;IACvB3jB,EAAA,CAAG2jB,IAAIiF,IAAK,CAAAE,GAAA,CAAIR,UAAW,CAAA3E,CAAA,EAAG3jB,GAAGkoB,IAAI,CAAA;EAAA,CACvC,MAAA,IAAWloB,EAAG,CAAA2jB,CAAA,GAAI6E,UAAY,EAAA;IAC5BxoB,EAAA,CAAG2jB,CAAI,GAAAiF,IAAA,CAAKC,GAAI,CAAAL,UAAA,EAAYxoB,GAAGioB,MAAM,CAAA;EACvC;EAGKjO,IAAA,CAAA2J,CAAA,GAAIiF,IAAK,CAAAE,GAAA,CAAIF,IAAK,CAAAC,GAAA,CAAI7O,KAAK2J,CAAG,EAAA2E,UAAA,CAAW3E,CAAC,CAAA,EAAG6E,UAAU,CAAA;EACzDxoB,EAAA,CAAA2jB,CAAA,GAAIiF,IAAK,CAAAE,GAAA,CAAIF,IAAK,CAAAC,GAAA,CAAI7oB,GAAG2jB,CAAG,EAAA8E,QAAA,CAAS9E,CAAC,CAAA,EAAG+E,QAAQ,CAAA;EAE7C,OAAA;IAAC1O;IAAMha;GAAE;AAClB;AChFO,SAAS+oB,SAAUA,CAAAzvB,OAAA,EAA2BoqB,CAAW,EAAAC,CAAA,EAAWqF,GAAqB,EAAA;EACvF,OAAA,CACL,IAAA,CAAK/tB,MAAI,CAAAyoB,CAAA,GAAApqB,OAAA,CAAQwuB,KAAM,CAAA7f,IAAA,EAAI,KAAIhN,MAAI,CAAA0oB,CAAA,GAAArqB,OAAA,CAAQwuB,KAAM,CAAA7f,IAAA,GAAO+gB,GAAG,EAAA,GAAA,CAAA,EAC3D,IAAA,CAAK/tB,UAAC,GAAI,CAAA,CAAAA,MAAA,CAAA0oB,CAAA,CAAA,EACV,IAAA,CAAK1oB,WAAI3B,OAAQ,CAAAwuB,KAAA,CAAM7f,MAAI,GAAI,CAAA,CAAAhN,MAAA,CAAA0oB,CAAA,GAAIrqB,OAAQ,CAAAwuB,KAAA,CAAM7f,IAAO,GAAA+gB,GAAA,CAAA,CAC1D,CAAEhe,KAAK,EAAE,CAAA;AACX;ACOA,SAASie,MAAAA,CAAOvF,GAAWC,CAAW,EAAA;EAC7B,OAAA,GAAA,CAAI1oB,UAAC,GAAI,CAAA,CAAAA,MAAA,CAAA0oB,CAAA,CAAA;AAClB;AAEA,SAASuF,MAAAA,CAAOxF,GAAWC,CAAW,EAAA;EAC7B,OAAA,GAAA,CAAI1oB,UAAC,GAAI,CAAA,CAAAA,MAAA,CAAA0oB,CAAA,CAAA;AAClB;AAEA,SAAS3Y,IAAAA,CAAKme,OAAmB,EAAY;EAAA,IAAZC,KAAA,GAAAjvB,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAQ,EAAI;EACpC,OAAAgvB,OAAA,CAAQne,KAAKoe,KAAK,CAAA;AAC3B;AAEA,SAASC,SAAUA,CAAAC,EAAA,EAAYC,EAAY,EAAA7F,CAAA,EAAWC,CAAW,EAAA;EAC/D,OAAO,IAAI1oB,MAAE,CAAAquB,EAAA,EAAA,GAAA,CAAA,CAAIruB,MAAE,CAAAsuB,EAAA,EAAA,GAAA,CAAA,CAAItuB,UAAC,GAAI,CAAA,CAAAA,MAAA,CAAA0oB,CAAA,CAAA;AAC9B;AAEgB,SAAA6F,iBAAAA,CAAkBlwB,SAA2BmwB,IAA6B,EAAA;EAClF,MAAA;IAACC;EAAY,CAAA,GAAIpwB,OAAQ,CAAAoR,IAAA;EACzB,MAAA;IAACsP,IAAM;IAAAha;EAAM,CAAA,GAAAypB,IAAA;EACnB,MAAM;IAAC/F,CAAA,EAAGiG,KAAO;IAAAhG,CAAA,EAAGiG;GAAS,GAAA5P,IAAA;EAC7B,MAAM;IAAC0J,CAAA,EAAGmG,IAAM;IAAAlG,CAAA,EAAGmG;GAAO,GAAA9pB,EAAA;EAE1B,MAAM+pB,MAAMF,IAAO,GAAA,CAAA;EAGnB,MAAMG,QAAW,GAAAhqB,EAAA,CAAG2lB,MAAO,CAAAjC,CAAA,GAAIpqB,QAAQ2wB,OAAQ,CAAAC,OAAA;EAGzC,MAAAC,SAAA,GAAYnQ,KAAK6N,OAAW,IAAA7N,IAAA,CAAKgO,UAAU2B,KAAQ,GAAArwB,OAAA,CAAQwuB,MAAMsC,OAAU,GAAAT,KAAA;EAG3E,MAAAU,EAAA,GAAKzB,KAAKE,GAAI,CAAAY,YAAA,EAAcd,KAAK0B,GAAI,CAAAH,SAAA,GAAYH,QAAQ,CAAA,GAAI,CAAC,CAAA;EAC9D,MAAAO,EAAA,GAAK3B,KAAKE,GAAI,CAAAY,YAAA,EAAcd,KAAK0B,GAAI,CAAAV,KAAA,GAAQE,GAAG,CAAA,GAAI,CAAC,CAAA;EAE3D,MAAMU,OAAiB,EAAC;EAGxB,IAAIxQ,KAAK6N,OAAS,EAAA;IACX2C,IAAA,CAAAnV,IAAA,CACH4T,MAAA,CACEU,KAAA,GAAQrwB,QAAQwuB,KAAM,CAAAsC,OAAA,EACtBR,KAAQ,GAAAtwB,OAAA,CAAQwuB,KAAM,CAAAS,SAAA,GAAYjvB,QAAQwuB,KAAM,CAAAC,OAClD,CAAA,EACAmB,OAAOS,KAAQ,GAAArwB,OAAA,CAAQwuB,KAAM,CAAAsC,OAAA,EAASR,QAAQS,EAAE,CAAA,EAChDhB,SAAA,CAAUM,KAAQ,GAAArwB,OAAA,CAAQwuB,KAAM,CAAAsC,OAAA,EAASR,KAAO,EAAAD,KAAA,GAAQrwB,OAAQ,CAAAwuB,KAAA,CAAMsC,OAAU,GAAAC,EAAA,EAAIT,KAAK,CAAA,CAC3F;EAAA,CACF,MAAA,IAAW5P,KAAKgO,OAAS,EAAA;IAClBwC,IAAA,CAAAnV,IAAA,CACH4T,MAAA,CACEU,KAAA,GAAQrwB,QAAQwuB,KAAM,CAAAsC,OAAA,EACtBR,KAAQ,GAAAtwB,OAAA,CAAQwuB,KAAM,CAAAS,SAAA,GAAYjvB,QAAQwuB,KAAM,CAAAC,OAClD,CAAA,EACAmB,OAAOS,KAAQ,GAAArwB,OAAA,CAAQwuB,KAAM,CAAAsC,OAAA,EAASR,QAAQS,EAAE,CAAA,EAChDhB,SAAA,CAAUM,KAAQ,GAAArwB,OAAA,CAAQwuB,KAAM,CAAAsC,OAAA,EAASR,KAAO,EAAAD,KAAA,GAAQrwB,OAAQ,CAAAwuB,KAAA,CAAMsC,OAAU,GAAAC,EAAA,EAAIT,KAAK,CAAA,CAC3F;EAAA,CACK,MAAA;IACLY,IAAA,CAAKnV,IAAK,CAAA4T,MAAA,CAAOU,KAAO,EAAAC,KAAK,CAAC,CAAA;EAChC;EAGA,IAAI5pB,GAAG6nB,OAAS,EAAA;IACV,IAAA+B,KAAA,GAAQ5pB,EAAG,CAAA2lB,MAAA,CAAOhC,CAAG,EAAA;MAClB6G,IAAA,CAAAnV,IAAA,CACH6T,MAAA,CAAOc,QAAW,GAAAO,EAAA,EAAIX,KAAK,CAAA,EAC3BP,SAAU,CAAAW,QAAA,EAAUJ,KAAO,EAAAI,QAAA,EAAUJ,QAAQW,EAAE,CAAA,EAC/CrB,MAAA,CAAOc,QAAU,EAAAF,GAAA,GAAMS,EAAE,CAAA,EACzBlB,SAAU,CAAAW,QAAA,EAAUF,GAAK,EAAAE,QAAA,GAAWO,IAAIT,GAAG,CAAA,EAC3CZ,MAAA,CAAOc,QAAW,GAAAN,YAAA,EAAcI,GAAG,CAAA,EACnCT,SAAU,CAAAW,QAAA,EAAUF,GAAK,EAAAE,QAAA,EAAUF,MAAMJ,YAAY,CAAA,EACrDR,MAAA,CAAOc,UAAUF,GAAM,GAAAxwB,OAAA,CAAQwuB,MAAMS,SAAY,GAAAjvB,OAAA,CAAQwuB,MAAMC,OAAO,CAAA,CACxE;IAAA,CACK,MAAA;MACAyC,IAAA,CAAAnV,IAAA,CACH6T,MAAA,CAAOc,QAAW,GAAAN,YAAA,EAAcE,KAAK,CAAA,EACrCP,SAAU,CAAAW,QAAA,EAAUJ,KAAO,EAAAI,QAAA,EAAUJ,QAAQF,YAAY,CAAA,EACzDR,MAAA,CAAOc,UAAUF,GAAM,GAAAxwB,OAAA,CAAQwuB,MAAMS,SAAY,GAAAjvB,OAAA,CAAQwuB,MAAMC,OAAO,CAAA,CACxE;IACF;EAAA,CACF,MAAA,IAAW/nB,GAAGgoB,OAAS,EAAA;IACrB,IAAI4B,QAAQ5pB,EAAG,CAAA2lB,MAAA,CAAOhC,CAAI,GAAA3jB,EAAA,CAAG2lB,OAAOd,CAAG,EAAA;MAEhC2F,IAAA,CAAAnV,IAAA,CACH6T,OAAOc,QAAW,GAAA1wB,OAAA,CAAQwuB,KAAM,CAAAsC,OAAA,GAAUG,IAAIX,KAAK,CAAA,EACnDP,SAAA,CACEW,QAAA,GAAW1wB,QAAQwuB,KAAM,CAAAsC,OAAA,EACzBR,KAAA,EACAI,QAAA,GAAW1wB,QAAQwuB,KAAM,CAAAsC,OAAA,EACzBR,KAAQ,GAAAW,EACV,CAAA,EACArB,OAAOc,QAAW,GAAA1wB,OAAA,CAAQwuB,KAAM,CAAAsC,OAAA,EAASN,MAAMS,EAAE,CAAA,EACjDlB,SAAA,CACEW,QAAA,GAAW1wB,QAAQwuB,KAAM,CAAAsC,OAAA,EACzBN,GAAA,EACAE,QAAA,GAAW1wB,OAAQ,CAAAwuB,KAAA,CAAMsC,OAAU,GAAAG,EAAA,EACnCT,GACF,CAAA,EACAZ,MAAA,CAAOc,QAAW,GAAAN,YAAA,EAAcI,GAAG,CAAA,EACnCT,SAAU,CAAAW,QAAA,EAAUF,GAAK,EAAAE,QAAA,EAAUF,MAAMJ,YAAY,CAAA,EACrDR,MAAA,CAAOc,UAAUF,GAAM,GAAAxwB,OAAA,CAAQwuB,MAAMS,SAAY,GAAAjvB,OAAA,CAAQwuB,MAAMC,OAAO,CAAA,CACxE;IAAA,CACK,MAAA;MACAyC,IAAA,CAAAnV,IAAA,CACH6T,MAAA,CAAOc,QAAW,GAAAN,YAAA,EAAcE,KAAK,CAAA,EACrCP,SAAU,CAAAW,QAAA,EAAUJ,KAAO,EAAAI,QAAA,EAAUJ,QAAQF,YAAY,CAAA,EACzDR,MAAA,CAAOc,UAAUF,GAAM,GAAAxwB,OAAA,CAAQwuB,MAAMS,SAAY,GAAAjvB,OAAA,CAAQwuB,MAAMC,OAAO,CAAA,CACxE;IACF;EAAA,CACF,MAAA,IAAW6B,QAAQE,GAAK,EAAA;IACjBU,IAAA,CAAAnV,IAAA,CACH6T,MAAA,CAAOc,QAAW,GAAAK,EAAA,EAAIT,KAAK,CAAA,EAC3BP,SAAU,CAAAW,QAAA,EAAUJ,KAAO,EAAAI,QAAA,EAAUJ,QAAQW,EAAE,CAAA,EAC/CrB,MAAA,CAAOc,QAAU,EAAAF,GAAA,GAAMS,EAAE,CAAA,EACzBlB,SAAU,CAAAW,QAAA,EAAUF,GAAK,EAAAE,QAAA,GAAWO,IAAIT,GAAG,CAAA,EAC3CZ,MAAA,CAAOa,KAAKD,GAAG,CAAA,CACjB;EAAA,CACK,MAAA;IACAU,IAAA,CAAAnV,IAAA,CACH6T,OAAOc,QAAW,GAAApB,IAAA,CAAKE,IAAIuB,EAAI,EAAAE,EAAE,GAAGX,KAAK,CAAA,EACzCP,SAAA,CAAUW,UAAUJ,KAAO,EAAAI,QAAA,EAAUJ,QAAQhB,IAAK,CAAAE,GAAA,CAAIuB,EAAI,EAAAE,EAAE,CAAC,CAAA,EAC7DrB,MAAA,CAAOc,QAAU,EAAAF,GAAA,GAAMS,EAAE,CAAA,EACzBlB,SAAU,CAAAW,QAAA,EAAUF,GAAK,EAAAE,QAAA,GAAWO,IAAIT,GAAG,CAAA,EAC3CZ,MAAA,CAAOa,KAAKD,GAAG,CAAA,CACjB;EACF;EAEA,OAAO9e,KAAKwf,IAAI,CAAA;AAClB;ACvIO,SAASC,cAAcxlB,KAI3B,EAAA;EACD,MAAM;IAAC+U,IAAA;IAAM1gB,OAAS;IAAA0G;EAAA,CAAM,GAAAiF,KAAA;EACtB,MAAA;IAACmV;EAAW,CAAA,GAAI9gB,OAAQ,CAAAoR,IAAA;EAC9B,MAAMggB,QAAQC,QAAS,EAAA;EAEvB,MAAMlB,IAAO,GAAAlnB,OAAA,CAAQ,MAAM6lB,kBAAA,CAAmB9uB,SAAS;IAAC0gB,IAAA;IAAMha;EAAE,CAAC,CAAG,EAAA,CAACga,IAAM,EAAA1gB,OAAA,EAAS0G,EAAE,CAAC,CAAA;EAEvF,sBAEIyD,IAAA,CAAAwQ,QAAA,EAAA;IAAAzQ,QAAA,EAAA,CAAA,eAAAN,GAAA,CAAC,MAAA,EAAA;MACC0nB,CAAA,EAAGpB,iBAAkB,CAAAlwB,OAAA,EAASmwB,IAAI,CAAA;MAClCoB,MAAQ,EAAAH,KAAA,CAAMI,MAAO,CAAA/J,KAAA,CAAMgK,IAAK,CAAAC,EAAA;MAChC5Q,aAAaA,WAAc,GAAA;IAAA,CAC7B,CAAA,EAAA,eAEAlX,GAAA,CAAC,MAAA,EAAA;MACC0nB,CAAA,EAAGpB,iBAAkB,CAAAlwB,OAAA,EAASmwB,IAAI,CAAA;MAClCoB,QAAQI,IAAK,CAAAP,KAAA,CAAMI,OAAO/J,KAAM,CAAAgK,IAAA,CAAKhN,QAAQ,GAAG,CAAA;MAChD3D;IAAA,CACF,CAAA,EAECqP,IAAA,CAAKzP,KAAK6N,OACT,mBAAA3kB,GAAA,CAAC,MAAA,EAAA;MACC0nB,CAAG,EAAA7B,SAAA,CACDzvB,OAAA,EACAmwB,IAAK,CAAAzP,IAAA,CAAK0J,CAAI,GAAApqB,OAAA,CAAQwuB,KAAM,CAAAsC,OAAA,EAC5BX,IAAA,CAAKzP,KAAK2L,MAAO,CAAAhC,CAAA,GAAIrqB,QAAQwuB,KAAM,CAAAS,SAAA,GAAYjvB,QAAQwuB,KAAM,CAAAC,OAAA,EAC7D,CAAA,CACF,CAAA;MACA8C,MAAQ,EAAAH,KAAA,CAAMI,MAAO,CAAA/J,KAAA,CAAMgK,IAAK,CAAAhN,MAAA;MAChC3D;IAAA,CACF,CAAA,EAGDqP,IAAA,CAAKzP,KAAKgO,OACT,mBAAA9kB,GAAA,CAAC,MAAA,EAAA;MACC0nB,CAAG,EAAA7B,SAAA,CACDzvB,OAAA,EACAmwB,IAAK,CAAAzP,IAAA,CAAK0J,CAAI,GAAApqB,OAAA,CAAQwuB,KAAM,CAAAsC,OAAA,EAC5BX,IAAK,CAAAzP,IAAA,CAAK2L,MAAO,CAAAhC,CAAA,GACf8F,IAAK,CAAAzP,IAAA,CAAK2L,MAAO,CAAAd,CAAA,GACjBvrB,OAAQ,CAAAwuB,KAAA,CAAMS,SACd,GAAAjvB,OAAA,CAAQwuB,KAAM,CAAAC,OAAA,EAChB,CACF,CAAA;MACA8C,MAAQ,EAAAH,KAAA,CAAMI,MAAO,CAAA/J,KAAA,CAAMgK,IAAK,CAAAhN,MAAA;MAChC3D;IAAA,CACF,CAAA;EAEJ,CAAA,CAAA;AAEJ;ACzDA,MAAM8Q,KAAQ,GAAA,KAAA;AAEd,MAAM5xB,OAA4B,GAAA;EAChCwuB,KAAO,EAAA;IACLsC,OAAS,EAAA,IAAA;IACTrC,OAAS,EAAA,CAAA;IACT9f,IAAM,EAAA,CAAA;IACNsgB,SAAW,EAAA;EACb,CAAA;EACA0B,OAAS,EAAA;IACPC,OAAS,EAAA,CAAA;EACX,CAAA;EACAxf,IAAM,EAAA;IACJgf,YAAc,EAAA,CAAA;IACd3B,OAAS,EAAA,IAAA;IACT3N,WAAa,EAAA;EACf;AACF,CAAA;AAEO,SAAS+Q,wBAAwBlmB,KAAkC,EAAA;EAClE,MAAA;IAAC4hB;EAAc,CAAA,GAAA5hB,KAAA;EAUrB,MAAM,GAAGmmB,SAAS,CAAA,GAAI5uB,SAAS,KAAK,CAAA;EACpCQ,SAAA,CAAU,MAAM;IAGdouB,SAAA,CAAU,IAAI,CAAA;EAChB,CAAA,EAAG,EAAE,CAAA;EAIL,sBAEI3nB,IAAA,CAAAwQ,QAAA,EAAA;IAAAzQ,QAAA,EAAA,CAAA,eAAAN,GAAA,CAAC,KAAA,EAAA;MACCyd,IAAK,EAAA,MAAA;MACL7N,OAAO0R,MAAO,CAAAC,UAAA;MACdlhB,QAAQihB,MAAO,CAAAE,WAAA;MACfphB,KAAO,EAAA;QACL2d,QAAU,EAAA,UAAA;QACVoK,GAAK,EAAA,CAAA;QACLC,IAAM,EAAA,CAAA;QACNxY,KAAO,EAAA,MAAA;QACPvP,MAAQ,EAAA,MAAA;QACRgoB,aAAe,EAAA,MAAA;QACftF,MAAQ,EAAA;QAAA;MAEV,CAAA;;MAECziB,QAAA,EAAAqjB,UAAA,CAAWhnB,GAAI,CAACwoB,SACf,IAAA,eAAAnlB,GAAA,CAACunB,aAAA,EAAA;QACCzQ,MAAMqO,SAAU,CAAArO,IAAA;QAEhB1gB,OAAA;QACA0G,IAAIqoB,SAAU,CAAAroB;MAAA,CAAA,EAFTqoB,SAAU,CAAAxmB,GAAA,CAIlB;IAAA,CACH,CAAA,EACCqpB,KAAA;EA4DH,CAAA,CAAA;AAEJ;AC/HO,MAAMM,4BAA+B,GAAA,YAAA;AAErC,MAAMC,4BAA+B,GAAA,mBAAA;AAQrC,MAAMC,6BAAgC,GAAA,wBAAA;AAEtC,MAAMC,kCAAqC,GAAA,6BAAA;ACiBlD,MAAMC,iBAAyC,EAAC;AAChD,MAAMC,kBAAoC,EAAC;AAC3C,MAAMC,SAAmB,EAAC;AASnB,SAASC,cAAiBA,CAAA,EAAA;EAC/B,MAAM,CAACC,eAAA,EAAiBC,kBAAkB,CAAA,GAAIzvB,SAASovB,cAAc,CAAA;EACrE,MAAM,CAACM,WAAA,EAAaC,cAAc,CAAA,GAAI3vB,SAASqvB,eAAe,CAAA;EAC9D,MAAM,CAACO,iBAAA,EAAmBC,kBAAkB,CAAA,GAAI7vB,SAASsvB,MAAM,CAAA;EAC/D,MAAM,CAACrvB,KAAA,EAAOC,QAAQ,CAAA,GAAIF,SAA4B,KAAS,CAAA,CAAA;EAC/D,MAAM,CAAC8vB,QAAA,EAAUC,WAAW,CAAA,GAAI/vB,SAA6B,KAAS,CAAA,CAAA;EACtE,MAAMiY,QAAQC,QAAS,EAAA;EACvB,MAAMvb,MAAS,GAAA4D,SAAA,CAAU;IAACX,UAAA,EAAY;EAAa,CAAA,CAAA;EAEnDY,SAAA,CAAU,MAAM;IACd,IAAIwvB,SAAY,GAAA,IAAA;IAEbrzB,MAAA,CAAAD,KAAA,CAKC,yCAEwB,CAAA+B,MAAA,CAAAwwB,4BAAA,EAA4B,4CACrB,CAAA,CAAAxwB,MAAA,CAAA0wB,kCAAA,EAAkC,4CACxC1wB,MAA6B,CAAAywB,6BAAA,EAAA,mBAAA,CAAA,CAGxD,CACChV,IAAK,CAAC+V,MAAW,IAAA;MArExB,IAAAruB,EAAA,EAAAG,EAAA,EAAAqC,EAAA;MAsEY,IAAA,CAAC4rB,SAAa,IAAA,CAACC,MAAQ,EAAA;QACzB;MACF;MACmBR,kBAAA,CAAA,CAAA7tB,EAAA,GAAAquB,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,MAAA,CAAQC,UAAR,KAAA,IAAA,GAAAtuB,EAAA,GAAsBwtB,cAAc,CAAA;MACpCS,kBAAA,CAAA,CAAA9tB,EAAA,GAAAkuB,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,MAAA,CAAQL,iBAAR,KAAA,IAAA,GAAA7tB,EAAA,GAA6ButB,MAAM,CAAA;MACvCK,cAAA,CAAA,CAAAvrB,EAAA,GAAA6rB,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,MAAA,CAAQP,WAAR,KAAA,IAAA,GAAAtrB,EAAA,GAAuBirB,eAAe,CAAA;IAAA,CACtD,CAAA;IACH,OAAO,MAAM;MACCW,SAAA,GAAA,KAAA;IAAA,CACd;KACC,CAACrzB,MAAA,EAAQ8yB,kBAAoB,EAAAI,kBAAA,EAAoBF,cAAc,CAAC,CAAA;EAE7D,MAAAQ,OAAA,GAAUlqB,YAAY,YAAY;IAClC,IAAA;MACF8pB,WAAA,CAAY,IAAM,CAAA;MAElB,MAAM/e,KAAgB,GAAA,CACpB,MAAMof,kBAAmB,CAAAzzB,MAAA,EAAQ+yB,WAAW,CAAA,EAC3CW,eAAA,IAAoBC,UAAW,CAAA3zB,MAAA,EAAQizB,mBAAmBS,eAAe,CAAA,EACzEA,eAAA,IAAoBE,WAAY,CAAA5zB,MAAA,EAAQ6yB,iBAAiBa,eAAe,CAAA,EACxEA,eACC,IAAAC,UAAA,CACE3zB,MAAA,EACA+yB,WAAY,CAAArsB,GAAA,CAAK+qB,CAAA,IAAMA,EAAErqB,GAAG,CAAA,EAC5BssB,eACF,CAAA,CACJ;MAEM,MAAAG,QAAA,GAAW,IAAIxf,KAAM,CAAApT,MAAA;MAC3B,KAAA,IAASS,CAAI,GAAA,CAAA,EAAGA,CAAI,GAAA2S,KAAA,CAAMpT,QAAQS,CAAK,EAAA,EAAA;QAC/B,MAAAoyB,aAAA,GAAgBpyB,IAAI2S,KAAM,CAAApT,MAAA;QAC1B,MAAAoT,KAAA,CAAM3S,CAAC,CAAE,CAACqyB,eAAgBX,WAAY,CAAAU,aAAA,GAAgBC,WAAc,GAAAF,QAAQ,CAAC,CAAA;QACtET,WAAA,CAAA,CAAA1xB,CAAA,GAAI,CAAK,IAAA2S,KAAA,CAAMpT,MAAM,CAAA;MACpC;MAEAmyB,WAAA,CAAY,CAAC,CAAA;MACbN,kBAAA,CAAmBL,cAAc,CAAA;MACjCO,cAAA,CAAeN,eAAe,CAAA;MAC9BQ,kBAAA,CAAmBP,MAAM,CAAA;MACzBrX,KAAA,CAAMY,IAAK,CAAA;QACT5U,KAAO,EAAA,uCAAA;QACP6U,MAAQ,EAAA,SAAA;QACR6X,QAAU,EAAA;MAAA,CACX,CAAA;aACM/X,CAAQ,EAAA;MACf9X,OAAA,CAAQb,MAAM2Y,CAAC,CAAA;MACfX,KAAA,CAAMY,IAAK,CAAA;QACT5U,KAAO,EAAA,mBAAA;QACP6U,MAAQ,EAAA,OAAA;QACR6X,QAAU,EAAA;MAAA,CACX,CAAA;MACDzwB,QAAA,CAAS0Y,CAAC,CAAA;MACVmX,WAAA,CAAY,KAAS,CAAA,CAAA;IACvB;EAAA,CACF,EAAG,CAACL,WAAa,EAAA/yB,MAAA,EAAQ6yB,iBAAiBI,iBAAmB,EAAAG,WAAA,EAAa9X,KAAK,CAAC,CAAA;EAG7E,IAAA,CAAAuX,eAAA,CAAgB5xB,UAAUgyB,iBAAkB,CAAAhyB,MAAA,IAAU8xB,YAAY9xB,MAClE,MAAA,CAACkyB,QAAY,IAAAA,QAAA,GAAW,CACzB,CAAA,EAAA;IACA,OAAA,mBACG/T,MAAO,EAAA;MAAA9P,EAAA,EAAG;MAAuBgQ,MAAQ,EAAA9L,WAAA;MACxCnJ,6BAACL,IAAK,EAAA;QAAAC,OAAA,EAAS,CACb;QAAAI,QAAA,EAAA,eAAAC,IAAA,CAACC;UAAMC,KAAO,EAAA,CAAA;UAAGL,OAAO;YAAC8pB,QAAA,EAAU;WACjC;UAAA5pB,QAAA,EAAA,CAAC,eAAAC,IAAA,CAAAuE,IAAA,EAAA;YAAKC,MAAM,CAAG;YAAAzE,QAAA,EAAA,CAAA,yDAAA,EAC2C,GAAA,EAAA,oBACvD,QAAO,EAAA;cAAAA,QAAA,EAAA,CAAA,mBAAA,EAAkBmJ,WAAA;aAAY,CAAA,EAAS,GAAA;WACjD,CAAA,EAAA,eACCzJ,GAAA,CAAA8E,IAAA,EAAA;YAAKC,IAAM,EAAA,CAAA;YAAGzE,QAAoB,EAAA;WAAA,CAAA,EAClC/G,KAAA,uBACE0G,IAAK,EAAA;YAAAC,OAAA,EAAS;YAAGmN,IAAK,EAAA,UAAA;YAAWwN,QAAM,IACtC;YAAAva,QAAA,EAAA,CAAA,eAACN,GAAA,CAAA8E,IAAA,EAAA;cAAKC,IAAM,EAAA,CAAA;cAAGzE,QAA2C,EAAA;aAAA,CAAA,EAAQ,GAAA;UAAA,CACpE,CACE,GAAA,IAAA,EAAA,eACJN,GAAA,CAACW,MAAA,EAAA;YACCC,IACE,EAAAwoB,QAAA,GAAA,eACGppB,GAAA,CAAAU,GAAA,EAAA;cAAIN,KAAO,EAAA;gBAACU,SAAW,EAAA;cAAA,CACtB;cAAAR,QAAA,EAAA,eAAAN,GAAA,CAACa,OAAQ,EAAA,CAAA,CAAA;YAAA,CACX,CAEA,GAAA6d,aAAA;YAGJzd,QAAA,EAAU,CAAC,CAACmoB,QAAA;YACZpoB,IAAA,EAAMooB,WAAW,EAAG,CAAArxB,MAAA,CAAA2tB,IAAA,CAAKyE,MAAMf,QAAW,GAAA,GAAG,GAAC,GAAM,CAAA,GAAA,4BAAA;YACpD/b,IAAK,EAAA,SAAA;YACLnM,OAAS,EAAAuoB;UAAA,CACX,CAAA;SACF;OACF;IACF,CAAA,CAAA;EAEJ;EAEO,OAAA,IAAA;AACT;AAEA,eAAeG,UAAAA,CACb3zB,MACA,EAAAm0B,GAAA,EACAC,cACA,EAAA;EACA,MAAMC,SAAY,GAAA,EAAA;EAClB,KAAA,IAAS3yB,IAAI,CAAG,EAAAA,CAAA,GAAIyyB,GAAI,CAAAlzB,MAAA,EAAQS,KAAK2yB,SAAW,EAAA;IAC9C,MAAMC,gBAAgB7E,IAAK,CAAAE,GAAA,CAAIwE,GAAI,CAAAlzB,MAAA,EAAQS,IAAI2yB,SAAS,CAAA;IACxD,MAAME,KAAQ,GAAAJ,GAAA,CAAIK,KAAM,CAAA9yB,CAAA,EAAG4yB,aAAa,CAAA;IAClC,MAAAG,KAAA,GAAQz0B,OAAOyJ,WAAY,EAAA;IACjC8qB,KAAA,CAAM9rB,QAAS6G,EAAA,IAAOmlB,KAAM,CAAAxG,MAAA,CAAO3e,EAAE,CAAC,CAAA;IACtC,MAAMmlB,MAAM9qB,MAAO,EAAA;IACJyqB,cAAA,CAAAE,aAAA,GAAgBH,IAAIlzB,MAAM,CAAA;EAC3C;AACF;AAEA,eAAewyB,kBAAAA,CAAmBzzB,QAAsB00B,IAAwB,EAAA;EACxE,MAAAD,KAAA,GAAQz0B,OAAOyJ,WAAY,EAAA;EAEjC,KAAA,MAAWkrB,OAAOD,IAAM,EAAA;IACtB,MAAM;MAACttB,GAAA;MAAKC,KAAO;MAAA,GAAGutB;KAAQ,GAAAD,GAAA;IAC9BF,KAAA,CAAM/qB,eAAgB,CAAA;MACpB,GAAGkrB,IAAA;MACHxtB,KAAK,OAAQ,CAAAtF,MAAA,CAAAsF,GAAA,CAAA;MACbytB,QAAU,EAAAztB,GAAA;MACVC,KAAO,EAAA/H;IAAA,CACR,CAAA;EACH;EAEA,MAAMm1B,MAAM9qB,MAAO,EAAA;AACrB;AAEA,eAAeiqB,WAAAA,CACb5zB,MACA,EAAA00B,IAAA,EACAN,cACA,EAAA;EACA,MAAMC,SAAY,GAAA,EAAA;EAClB,KAAA,IAAS3yB,IAAI,CAAG,EAAAA,CAAA,GAAIgzB,IAAK,CAAAzzB,MAAA,EAAQS,KAAK2yB,SAAW,EAAA;IAC/C,MAAMC,gBAAgB7E,IAAK,CAAAE,GAAA,CAAI+E,IAAK,CAAAzzB,MAAA,EAAQS,IAAI2yB,SAAS,CAAA;IACzD,MAAME,KAAQ,GAAAG,IAAA,CAAKF,KAAM,CAAA9yB,CAAA,EAAG4yB,aAAa,CAAA;IAEnC,MAAAG,KAAA,GAAQz0B,OAAOyJ,WAAY,EAAA;IAC3B,MAAAspB,WAAA,GAAoC,MAAM/yB,MAAO,CAAAD,KAAA,CACrD,aAAa+B,MAAuB,CAAAxC,uBAAA,EAAA,uCAAA,CAAA,CACtC;IAEMi1B,KAAA,CAAA9rB,OAAA,CAASqsB,MAAW,IAAA;MAvN9B,IAAA7vB,EAAA;MAwNY,MAAAkH,YAAA,GAAe2oB,OAAO1tB,GAAI,CAAA2L,OAAA,CAC9B,IAAIF,MAAO,CAAA,IAAA,CAAK/Q,MAA4B,CAAAuwB,4BAAA,EAAA,GAAA,CAAA,CAAIvwB,+BAAsB,GAAG,CAAA,CAAA,EACzE,EAAA,CACF;MAEM,MAAAwN,EAAA,GAAK0D,iBAAiB7G,YAAY,CAAA;MAElC,MAAArG,MAAA,GAAA,CAAA,CAAyBb,YAAOa,MAAP,KAAA,IAAA,GAAAb,EAAA,GAAiB,EAC7C,EAAAvC,MAAA,CAAQqD,KAAO,IAAA;QAhOxBd,IAAAA,GAAAA;QAgO2B,OAAA,CAAAA,GAAA,GAAAc,KAAA,CAAMyO,YAAN,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAvP,GAAoB,CAAAhE,MAAA;MAAA,CAAM,CAAA,CAC5CyF,GAAI,CAACquB,QAAa,IAAA;QAjO3B9vB,IAAAA,GAAAA;QAkOgB,MAAAuP,YAAA,GAAA,CAAA,CAAgBvP,GAAA,GAAA8vB,QAAA,CAASvgB,YAAT,KAAA,IAAA,GAAAvP,MAAyB,EAAC,EAAGyB,GAAI,CAACsuB,IAAS,IAAA;UAlO3E/vB,IAAAA,GAAAA;UAoOkB,MAAAmQ,MAAA,GAAA,CAAA,CAAUnQ,GAAA,GAAA+vB,IAAA,CAAK5f,MAAL,KAAA,IAAA,GAAAnQ,MAAe,EAAC,EAAGyB,GAAI,CAAC2O,KAAU,IAAA;YACzC,OAAA4f,QAAA,CAAS5f,OAAO0d,WAAW,CAAA;UAAA,CACnC,CAAA;UACM,OAAA;YACL,GAAGiC,IAAA;YACH3tB,KAAO,EAAApI,mBAAA;YACPmW;UAAA,CACF;QAAA,CACD,CAAA;QACM,OAAA;UACL,GAAG2f,QAAA;UACH1tB,KAAO,EAAArI,mBAAA;UACPwV;QAAA,CACF;MAAA,CACD,CAAA;MAEH,IAAI1O,OAAO7E,MAAQ,EAAA;QACjBwzB,KAAA,CAAM/qB,eAAgB,CAAA;UACpBtC,GAAK,EAAAkI,EAAA;UACLjI,KAAO,EAAAtI,sBAAA;UACP+G;QAAA,CACD,CAAA;MACH;MACM2uB,KAAA,CAAAxG,MAAA,CAAO6G,OAAO1tB,GAAG,CAAA;IAAA,CACxB,CAAA;IACD,MAAMqtB,MAAM9qB,MAAO,EAAA;IACJyqB,cAAA,CAAAE,aAAA,GAAgBI,KAAKzzB,MAAM,CAAA;EAC5C;AACF;AAIA,SAASi0B,WAAW7f,KAAwC,EAAA;EAC1D,OAAOA,MAAMhO,KAAU,KAAA,2BAAA;AACzB;AAEA,SAAS8tB,UAAU9f,KAA4C,EAAA;EAC7D,OAAOA,MAAMhO,KAAU,KAAA,0BAAA;AACzB;AAEA,SAAS+tB,YAAY/f,KAA8C,EAAA;EACjE,OAAOA,MAAMhO,KAAU,KAAA,4BAAA;AACzB;AAEA,SAASguB,OAAOhgB,KAA0C,EAAA;EACxD,OAAOA,MAAMhO,KAAU,KAAA,MAAA;AACzB;AAEA,SAAS4tB,QAAAA,CACP5f,OACAigB,gBACiC,EAAA;EAvRnC,IAAArwB,EAAA,EAAAG,EAAA,EAAAqC,EAAA,EAAAof,EAAA;EAwRM,IAAAqO,UAAA,CAAW7f,KAAK,CAAG,EAAA;IACrB,OAAO;MAAC,GAAGA,KAAO;MAAAhO,KAAA,EAAOhI;IAAsB,CAAA;EACjD;EACI,IAAA+1B,WAAA,CAAY/f,KAAK,CAAG,EAAA;IACtB,OAAO;MAAC,GAAGA,KAAO;MAAAhO,KAAA,EAAOlI;IAAiB,CAAA;EAC5C;EACI,IAAAg2B,SAAA,CAAU9f,KAAK,CAAG,EAAA;IACpB,MAAMkgB,QAAW,GAAA;MACf,GAAGlgB,KAAA;MACHhO,KAAO,EAAAjI,0BAAA;MACPo2B,SAAW,EAAA;QACTnuB,KAAO,EAAA,WAAA;QACPkE,IACE,EAAA,CAAA9D,EAAA,GAAA,CAAAxC,EAAA,GAAAqwB,gBAAA,CAAiB7wB,IAAK,CAAC6Q,CAAG,IAAA;UArSpCrQ,IAAAA,GAAAA;UAqSuC,OAAAqQ,CAAA,CAAEuf,QAAa5vB,MAAAA,CAAAA,GAAAA,GAAAoQ,KAAM,CAAAmgB,SAAA,KAAN,gBAAAvwB,GAAiB,CAAAsG,IAAA,CAAA;QAAA,CAAI,MAAjE,IAAoE,GAAA,KAAA,CAAA,GAAAtG,EAAA,CAAAmC,GAAA,KAApE,IACA,GAAAK,EAAA,GAAA,CAAArC,EAAA,GAAAiQ,KAAA,CAAMmgB,cAAN,IAAiB,GAAA,KAAA,CAAA,GAAApwB,EAAA,CAAAmG;MACrB;IAAA,CACF;IACO,OAAAgqB,QAAA;EACT;EACI,IAAAF,MAAA,CAAOhgB,KAAK,CAAG,EAAA;IACV,OAAAA,KAAA;EACT;EACA,MAAMogB,SAAY,GAAApgB,KAAA;EACX,OAAA;IACL,GAAGogB,SAAA;IACHprB,QAAW,EAAA,CAAA,CAAAwc,EAAA,GAAA4O,SAAA,CAAUprB,QAAV,KAAA,IAAA,GAAAwc,EAAA,GAAsB,EAAI,EAAAngB,GAAA,CAClCgvB,KAAA,IAAUT,QAAS,CAAAS,KAAA,EAAOJ,gBAAgB,CAC7C;EAAA,CACF;AACF;ACjSO,SAASK,aAAa7pB,KAA4B,EAAA;EApBzD,IAAA7G,EAAA;EAqBE,MAAM,CAACyoB,UAAY,EAAAkI,aAAa,CAAI,GAAAvyB,QAAA,CAAsB,EAAE,CAAA;EAC5D,MAAMwyB,OAAU,GAAA,CAAA5wB,EAAA,GAAA6G,KAAA,CAAM+P,MAAO,CAAAia,cAAA,KAAb,IAA+B,GAAA7wB,EAAA,GAAA,IAAA;EAE/C,OACG,eAAAqF,IAAA,CAAA4S,0BAAA,EAAA;IAA2BrB,MAAQ,EAAA/P,KAAA,CAAM+P,MACvC;IAAAxR,QAAA,EAAA,CAAUwrB,OAAA,kBAAA9rB,GAAA,CAAC6oB,kBAAe,CAAK,GAAA,IAAA,EAAA,eAC/B7oB,GAAA,CAAAgU,sBAAA,EAAA;MACC1T,QAAC,EAAA,eAAAC,IAAA,CAAA+jB,kBAAA,EAAA;QAAmBC,oBAAoBsH,aACrC;QAAAvrB,QAAA,EAAA,CAAAyB,KAAA,CAAMod,cAAcpd,KAAK,CAAA,qBACzBiqB,aAAc,EAAA;UAAA3e,IAAA,EAAK;UAClB/M,QAAC,iBAAAN,GAAA,CAAAioB,uBAAA,EAAA;YAAwBtE;UAAwB,CAAA;SACnD,CAAA;MAAA,CACF;IACF,CAAA,CAAA;EACF,CAAA,CAAA;AAEJ;;;;;;ACrCA,IAAAzoB,IAAA;AAMA,MAAM+wB,WAAc,GAAAhf,MAAA,CAAOhN,IAAI,CAAA,CAAX/E,IAAY,KAAAA,IAAA,GAAA6R,YAAA,CAAA,CAAA,2DAAA,CAAA,CAAA,CAAA,CAAA;AAMzB,SAASmf,eAAenqB,KAAmB,EAAA;EAE9C,OAAA,eAAA/B,GAAA,CAACmsB;IAAa3pB,QAAU,EAAAT,KAAA,CAAMS;IAC5BlC,QAAC,EAAA,eAAAN,GAAA,CAAAosB,aAAA,EAAA;MAAe,GAAGrqB;IAAO,CAAA;EAC5B,CAAA,CAAA;AAEJ;AAEO,SAASoqB,aACdpqB,KACA,EAAA;EACM,MAAA;IAACS;EAAY,CAAA,GAAAT,KAAA;EACnB,MAAM,CAACxI,KAAA,EAAOC,QAAQ,CAAA,GAAIF,QAA4B,CAAA,CAAA;EAEtD,MAAMY,UAAa,GAAAqF,WAAA,CAChBpJ,MAA4C,IAAA;IAC3CqD,QAAA,CAASrD,OAAOoD,KAAK,CAAA;EACvB,CAAA,EACA,CAACC,QAAQ,CAAA,CACX;EAEA,MAAM6yB,UAAa,GAAA9sB,WAAA,CAAY,MAAMiD,QAAA,CAASqU,UAAW,CAAAC,IAAA,CAAKC,KAAM,EAAC,CAAC,CAAA,EAAG,CAACvU,QAAQ,CAAC,CAAA;EACnF,MAAM6b,UAAU9e,WAAY,CAAA,MAAM/F,SAAS,KAAS,CAAA,CAAA,EAAG,EAAE,CAAA;EACzD,MAAM8yB,yBAAWtsB,GAAA,CAAAusB,aAAA,EAAA;IAAcC,OAAS,EAAAtyB,UAAA;IAAaoG,gBAAMA;EAAS,CAAA,CAAA;EAEpE,OAAO/G,KACL,GAAA,eAAAyG,GAAA,CAACC,IAAK,EAAA;IAAA4a,MAAA,EAAM;IAACxN,IAAK,EAAA,UAAA;IAAWnN,OAAS,EAAA,CAAA;IAAG+d,eAAiB,EAAA,KAAA;IACxD3d,QAAC,iBAAAC,IAAA,CAAAC,KAAA,EAAA;MAAMC,OAAO,CACZ;MAAAH,QAAA,EAAA,CAAA,eAAAN,GAAA,CAAC8E,IAAK,EAAA;QAAAgB,KAAA,EAAK,IAAC;QAAAgL,MAAA,EAAO;QAAWxQ,QAE9B,EAAA;OAAA,CAAA,EAEA,eAAAN,GAAA,CAACisB,WAAY,EAAA;QAAArb,IAAA,EAAM,CAAG;QAAA1Q,OAAA,EAAS;QAAGmN,IAAK,EAAA,UAAA;QAAWwN,MAAM,EAAA,IAAA;QACrDva,QACH,EAAAgsB;MAAA,CAAA,CAAA,EAAA,oBAECnrB,IAAK,EAAA;QAAAyO,KAAA,EAAM;QAAOgB,IAAM,EAAA,CAAA;QAAGxP,KAAK,CAC/B;QAAAd,QAAA,EAAA,CAAA,eAACN,GAAA,CAAAU,GAAA,EAAA;UAAIkQ,IAAM,EAAA,CAAA;UACTtQ,QAAC,EAAA,eAAAN,GAAA,CAAAW,MAAA,EAAA;YAAOK,IAAK,EAAA,SAAA;YAAUE,OAAS,EAAAmd,OAAA;YAAShR,IAAK,EAAA;UAAU,CAAA;SAC1D,CAAA,EAAA,mBACC1M,MAAO,EAAA;UAAAK,IAAA,EAAK;UAAcE,OAAS,EAAAmrB,UAAA;UAAYhf,MAAK;SAAW,CAAA;OAClE,CAAA;KACF;GACF,CAEA,GAAAif,OAAA;AAEJ;AAEA,SAASF,cAAcrqB,KAAmB,EAAA;EACxC,MAAMud,cAAiB,GAAAjgB,OAAA,CACrB,MAAMkgB,iBAAkB,CAAAxd,KAAA,CAAMlH,UAAU,CAAK,IAAAJ,mBAAA,CAAoBsH,MAAMlH,UAAU,CAAA,EACjF,CAACkH,MAAMlH,UAAU,CAAA,CACnB;EACA,MAAMiD,QAAQiE,KAAM,CAAAjE,KAAA;EACpB,IAAIwhB,cAAkB,IAAAxhB,KAAA,IAAS,CAAEA,KAAA,CAAgB5G,MAAQ,EAAA;IACvD,OAAO6K,MAAMod,aAAc,CAAA;MAAC,GAAGpd,KAAO;MAAAjE,KAAA,EAAO;KAAU,CAAA;EACzD;EAEO,OAAAiE,KAAA,CAAMod,cAAcpd,KAAK,CAAA;AAClC;ACjEO,SAAS0qB,gBAAgB1qB,KAAmB,EAAA;EACjD,MAAMoB,QAAW,GAAAqY,iBAAA,CAAkBzZ,KAAM,CAAAyF,IAAA,EAAM,IAAI,CAAA;EAC7C,MAAA;IAAChF;GAAQ,GAAIkqB,gBAAiB,EAAA;EAC9B,MAAA/tB,GAAA,GAAMoD,MAAMjE,KAAM,CAAAgN,IAAA;EACxB,MAAM6hB,aAAgB,GAAAptB,WAAA,CACnBqtB,UAA2B,IAAA;IAC1B,IAAI,CAACjuB,GAAK,EAAA;MACR;IACF;IACS6D,QAAA,CAAAqU,UAAA,CAAWC,KAAK8V,UAAU,CAAA,CAAEC,UAAU;MAAC/hB,IAAA,EAAMnM;IAAI,CAAA,CAAC,CAAA;EAC7D,CAAA,EACA,CAAC6D,UAAU7D,GAAG,CAAA,CAChB;EAEE,OAAA,eAAAqB,GAAA,CAACmsB;IAAa3pB,QAAU,EAAAmqB,aAAA;IACtBrsB,8BAACa,IAAK,EAAA;MAAAuD,KAAA,EAAM,QAAS;MAAAE,OAAA,EAAQ,eAC3B;MAAAtE,QAAA,EAAA,CAAA,eAAAN,GAAA,CAACU;QAAIkQ,IAAM,EAAA,CAAA;QAAItQ,QAAM,EAAAyB,KAAA,CAAAod,aAAA,CAAcpd,KAAK;OAAE,CAAA,EACzCoB,QAAA,CAASxG,GAAI,CAAC+iB,GACb,IAAA,eAAA1f,GAAA,CAAC8d;QAAuC3a,QAAU,EAAAuc;MAAA,CAAA,EAA5BA,GAAI,CAAAvD,YAA6B,CACxD,CAAA;IACH,CAAA;EACF,CAAA,CAAA;AAEJ;ACzBO,SAAS2Q,WAAW/qB,KAAkB,EAAA;EACrC,MAAA;IAACyF;EAAQ,CAAA,GAAAzF,KAAA;EACT,MAAAoB,QAAA,GAAWqY,iBAAkB,CAAAhU,IAAA,EAAM,IAAI,CAAA;EAG3C,OAAA,eAAAjH,IAAA,CAACY,IAAK,EAAA;IAAAuD,KAAA,EAAM,QAAS;IAAAkL,KAAA,EAAM;IAAOxP,KAAO,EAAA;MAAC2d,QAAU,EAAA;IAAA,CAClD;IAAAzd,QAAA,EAAA,CAAC,eAAAN,GAAA,CAAAU,GAAA,EAAA;MAAIkQ,MAAM,CAAI;MAAAtQ,QAAA,EAAAyB,KAAA,CAAMod,cAAc;QAAC,GAAGpd;MAAK,CAAC;IAAE,CAAA,CAAA,EAC9CoB,QAAA,CAASxG,IAAK+iB,GAAA,IAAA,mBACZhf,GAAsB,EAAA;MAAAN,KAAA,EAAO;QAAC2d,QAAU,EAAA,UAAA;QAAYgP,OAAO;OAAE;MAC5DzsB,6BAACwd,eAAgB,EAAA;QAAA3a,QAAA,EAAUuc;OAAK;IADxB,CAAA,EAAAA,GAAA,CAAIpO,IAAK,CAAA/L,EAEnB,CACD,CAAA;EACH,CAAA,CAAA;AAEJ;ACZO,SAASynB,yBAA4BA,CAAA,EAAA;EACpC,MAAA;IAACC;GAAa,GAAIjqB,eAAgB,EAAA;EAExC,MAAMkqB,MAAS,GAAA3tB,WAAA,CACb,MAAM0tB,cAAcrrB,aAAe,EAAA;IAAC,CAAC9L,gBAAgB,GAAG;GAAiB,CAAA,EACzE,CAACm3B,aAAa,CAAA,CAChB;EAEA,OAAA,mBACG,KACC,EAAA;IAAA3sB,QAAA,iBAAAN,GAAA,CAACW,MAAA,EAAA;MACC6D,EAAG,EAAA,GAAA;MACH4L,QAAU,EAAA,CAAA;MACVxP,IAAM,EAAAusB,aAAA;MACNhd,IAAK,EAAA,OAAA;MACLjQ,OAAS,EAAA,CAAA;MACTO,KAAO,EAAA,CAAA;MACPS,OAAS,EAAAgsB,MAAA;MACTlsB,IAAK,EAAA,gBAAA;MACLsW,SAAU,EAAA;IAAA,CAEd;EAAA,CAAA,CAAA;AAEJ;ACGA,MAAM8V,eAA8B,EAAC;AAE9B,SAASC,mBAAmBtrB,KAAyB,EAAA;EACpD,MAAA;IAACS;EAAY,CAAA,GAAAT,KAAA;EACnB,MAAMjE,QAAQiE,KAAM,CAAAjE,KAAA;EACpB,MAAMyH,KAAKzH,KAAO,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,KAAA,CAAAT,GAAA;EAClB,MAAMtB,SAAS+B,KAAO,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,KAAA,CAAA/B,MAAA;EAEhB,MAAAuxB,kBAAA,GAAqBjuB,QAAQ,MAAM;IACvC,IAAI,CAACkG,EAAI,EAAA;MACA,OAAA,KAAA,CAAA;IACT;IACA,OAAO2D,6BAA6B3D,EAAE,CAAA;EAAA,CACxC,EAAG,CAACA,EAAE,CAAC,CAAA;EAEP,MAAM;IAACpP,MAAA;IAAQo3B;EAAS,CAAA,GAAInlB,eAAgB,CAAA,CAAA;EACtC,MAAA2Q,OAAA,GAAU5iB,OAAON,cAAc,CAAA;EAC/B,MAAA+U,WAAA,GAAczU,OAAOL,gBAAgB,CAAA;EAE3C,MAAM03B,SAAY,GAAAnuB,OAAA,CAChB,MAAG;IArDP,IAAAnE,EAAA;IAqDqB,OAAA,CAAAA,EAAA,GAAA,CAAAa,MAAA,IAAA,IAAA,GAAAA,MAAA,GAAAqxB,YAAA,EAAc1yB,KAAMwD,CAAA,IAAMA,EAAEsJ,IAAS,KAAAuR,OAAO,MAAtD,IAAyD,GAAA,KAAA,CAAA,GAAA7d,EAAA,CAAA4P,IAAA;EAAA,CAAA,EAChE,CAAC/O,QAAQgd,OAAO,CAAA,CAClB;EAEM,MAAA0U,UAAA,GAA+BpuB,QAAQ,MAAM;IACjD,IAAI,CAACmuB,SAAW,EAAA;MACP,OAAA,KAAA,CAAA;IACT;IACA,MAAM3F,OAAO,CAAC,QAAA,EAAU;MAAC/c,IAAA,EAAM0iB;IAAU,CAAA,CAAA;IAClC,OAAA5iB,WAAA,GAAc,CAAC,GAAGid,IAAA,EAAM,gBAAgB;MAAC/c,IAAA,EAAMF;KAAY,CAAI,GAAAid,IAAA;EAAA,CACrE,EAAA,CAAC2F,SAAW,EAAA5iB,WAAW,CAAC,CAAA;EAE3B,MAAMrO,SAASwC,SAAU,EAAA;EACnB,MAAA2uB,cAAA,GAA+CruB,QAAQ,MAAM;IACjE,IAAI,CAACiuB,kBAAoB,EAAA;MAChB,OAAA,KAAA,CAAA;IACT;IACO,OAAA/wB,MAAA,CAAOK,IAAI0wB,kBAAkB,CAAA;EAAA,CACnC,EAAA,CAAC/wB,MAAQ,EAAA+wB,kBAAkB,CAAC,CAAA;EAEzB,MAAAK,WAAA,GAAcC,iBAAkB,CAAA7U,OAAA,EAAS2U,cAAc,CAAA;EAC7D,MAAMza,OAAqC,GAAA5T,OAAA,CACzC,OAAO;IACLquB,cAAA;IACAC,aAAaA,WAAe,IAAA,IAAA,GAAAA,WAAA,GAAAD;EAAA,CAC9B,CAAA,EACA,CAACC,aAAaD,cAAc,CAAA,CAC9B;EAEA,MAAMnwB,QAAQO,KAAO,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,KAAA,CAAAP,KAAA;EAErBzD,SAAA,CAAU,MAAM;IApFlB,IAAAoB,EAAA;IAqFI,IAAI,CAACqC,KAAS,IAAAmwB,cAAA,IAAkB,EAACnoB,EAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,EAAA,CAAI7I,WAAW,SAAY,CAAA,CAAA,EAAA;MACjD8F,QAAA,CAAAyL,GAAA,CAAA,CAAI/S,oBAAeqC,KAAf,KAAA,IAAA,GAAArC,EAAA,GAAwBwyB,eAAe3yB,IAAM,EAAA,CAAC,OAAO,CAAC,CAAC,CAAA;IACtE;KACC,CAACwC,KAAA,EAAOmwB,cAAgB,EAAAlrB,QAAA,EAAU+C,EAAE,CAAC,CAAA;EAElC,MAAAsoB,WAAA,GAAc,CAAC,EAAC9xB,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,MAAA,CAAQuS,KAAMpQ,CAAA,IAAMA,EAAE4M,IAAS,KAAAiO,OAAA,CAAA,CAAA;EAErD,MAAM;IAACrW,UAAA;IAAY,GAAGorB;MAAiBpB,gBAAiB,CAAA,CAAA;EAExD,MAAMqB,YAAmC,GAAA1uB,OAAA,CACvC,OAAO;IACL,GAAGyuB,aAAA;IACHprB,UAAA,EAAa8E,IAAS,IAAA;MAjG5B,IAAAtM,EAAA;MAkGY,IAAA,CAAC0P,eAAepD,IAAK,CAAAtQ,MAAA,KAAW,KAAKsQ,IAAK,CAAA,CAAC,MAAM,cAAgB,EAAA;QACnE+lB,SAAA,CACEjvB,KAAkC,CAAA;UAChC,GAAGnI,MAAA;UACH,CAACL,gBAAgB,GAAA,CAAIoF,EAAK,GAAAsM,IAAA,CAAA,CAAC,MAAN,IAA0B,GAAA,KAAA,CAAA,GAAAtM,EAAA,CAAA4P;QAAA,CAChD,CAAA,CACH;QACApI,UAAA,CAAW,EAAE,CAAA;MAAA,CACR,MAAA;QACL4P,UAAA,CAAW,MAAM5P,UAAA,CAAW8E,IAAI,CAAA,EAAG,CAAC,CAAA;MACtC;IACF;EAAA,CACF,CAAA,EACA,CAACsmB,aAAA,EAAeprB,UAAY,EAAAvM,MAAA,EAAQo3B,WAAW3iB,WAAW,CAAA,CAC5D;EAEA9Q,SAAA,CAAU,MAAM;IACV,IAAA2zB,UAAA,IAAc,CAAC7iB,WAAa,EAAA;MAC9BlI,UAAA,CAAW,EAAE,CAAA;IACf;EACC,CAAA,EAAA,CAAC+qB,UAAY,EAAA7iB,WAAA,EAAalI,UAAU,CAAC,CAAA;EAExC,OAAA,mBACGiE,4BAA6B,EAAA;IAAA7I,KAAA,EAAOmV;IACnC3S,QAAC,iBAAAC,IAAA,CAAAC,KAAA,EAAA;MAAMC,OAAO,CACZ;MAAAH,QAAA,EAAA,CAAA,eAAAN,GAAA,CAACguB,iBAAA,EAAA;QAECjV,OAAA;QACA0U,UAAA;QACAI,WAAA;QACArrB;MAAA,CAAA,EAJKuW,OAKP,CAAA,EACCnO,WAAA,uBAAgBoiB,yBAA0B,EAAA,EAAA,CAAA,EAE1CS,cACE,eAAAztB,GAAA,CAAAiuB,qBAAA,EAAA;QAAuB,GAAGF,YACzB;QAAAztB,QAAA,EAAA,eAAAN,GAAA,CAAC;UAAII,KAAO,EAAA;YAACuZ,YAAY;UAAQ,CAAA;UAC/BrZ,6BAAC4tB,SAAW,EAAA;YAAA,GAAGnsB;YAAOosB,YAAc,EAAAV;UAAA,CAAY;QAClD,CAAA;OACF,CAAA,EAGD,CAACA,UAAA,IAAc1rB,KAAM,CAAAod,aAAA,CAAcpd,KAAK,CAAA;IAC3C,CAAA;EACF,CAAA,CAAA;AAEJ;AAEA,SAAS6rB,iBAAAA,CACPQ,WACAV,cACwB,EAAA;EACxB,OAAOruB,QAAQ,MAAM;IACnB,IAAI,CAAC+uB,SAAW,EAAA;MACP,OAAA,KAAA,CAAA;IACT;IACA,IAAIA,cAAcr4B,eAAiB,EAAA;MAC1B,OAAA23B,cAAA;IACT;IAEM,MAAAlmB,IAAA,GAAOoU,aAAawS,SAAS,CAAA;IACnC,IAAIC,aAA8C,GAAAX,cAAA;IAClD,KAAA,IAAS/1B,CAAI,GAAA,CAAA,EAAGA,CAAI,GAAA6P,IAAA,CAAKtQ,QAAQS,CAAK,EAAA,EAAA;MAC9B,MAAA22B,OAAA,GAAU9mB,KAAK7P,CAAC,CAAA;MACtB,MAAMqE,QAAQqyB,aAAe,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,aAAA,CAAAtyB,MAAA,CAAOrB,KAAMwD,CAAA,IAAMA,EAAEnD,IAAS,KAAAuzB,OAAA,CAAA;MAC3D,IAAI,CAACtyB,KAAO,EAAA;QACH,OAAA,KAAA,CAAA;MACT;MACI,IAAArE,CAAA,KAAM6P,IAAK,CAAAtQ,MAAA,GAAS,CAAG,EAAA;QACzB,OAAO8E,KAAM,CAAAjF,IAAA;MACf;MACI,IAAAiF,KAAA,CAAMjF,IAAK,CAAA4E,QAAA,KAAa,QAAU,EAAA;QAC7B,OAAA,KAAA,CAAA;MACT;MACA0yB,aAAA,GAAgBryB,KAAM,CAAAjF,IAAA;IACxB;IACO,OAAAs3B,aAAA;EAAA,CACN,EAAA,CAACX,cAAgB,EAAAU,SAAS,CAAC,CAAA;AAChC;AAEA,SAASJ,iBAAkBA,CAAAO,KAAA,EAUxB;EAAA,IAVwB;IACzBxV,OAAA;IACA0U,UAAA;IACAI,WAAA;IACArrB;EACF,CAKG,GAAA+rB,KAAA;EAEK,MAAA7V,WAAA,GAAc9e,OAAO,KAAK,CAAA;EAChCE,SAAA,CAAU,MAAM;IACd,IAAI4e,WAAY,CAAA3e,OAAA,IAAW8zB,WAAe,IAAAJ,UAAA,IAAc,CAAC1U,OAAS,EAAA;MAChE;IACF;IACSvW,QAAA,CAAA,CACPgsB,YAAa,CAAA,EAAI,EAAA,CAAC,QAAQ,CAAC,CAAA,EAC3BC,MAAA,CACE,CACEnwB,KAAmB,CAAA;MACjBwM,IAAM,EAAAiO,OAAA;MACNzb,KAAO,EAAArI,mBAAA;MACPuS,IAAM,EAAAuR;IAAA,CACP,CAAA,CACH,EACA,OAAA,EACA,CAAC,UAAU,CAAE,CAAA,CACf,CAAA,CACD,CAAA;IACDL,WAAA,CAAY3e,OAAU,GAAA,IAAA;KACrB,CAAC0zB,UAAA,EAAYjrB,QAAU,EAAAuW,OAAA,EAAS8U,WAAW,CAAC,CAAA;EAExC,OAAA,IAAA;AACT;ACnNgB,SAAAa,eAAAA,CACdlpB,SACAmpB,SACsC,EAAA;EACtC,OAAOnpB,OAAQ,CAAA9K,IAAA,CACZk0B,CAAA,IACEA,CAAE,CAAA5P,IAAA,KAAS,OAAW,IAAA4P,CAAA,CAAE7zB,IAAS,KAAA4zB,SAAA,IACjCC,CAAE,CAAA5P,IAAA,KAAS,OAAW,IAAA4P,CAAA,CAAED,SAAc,KAAAA,SAAA,CAC3C;AACF;AAEgB,SAAAE,kBAAAA,CACdrpB,SACAspB,YAC4B,EAAA;EAC5B,OAAOtpB,OAAQ,CAAA9K,IAAA,CACZk0B,CAA2B,IAAAA,CAAA,CAAE5P,SAAS,UAAc,IAAA4P,CAAA,CAAEG,SAASh0B,IAAS,KAAA+zB,YAAA,CAC3E;AACF;ACfO,SAASE,iBAAiBjtB,KAAyB,EAAA;EAEtD,sBAAAxB,IAAA,CAACC;IAAMC,KAAO,EAAA,CAAC,GAAG,CAAG,EAAA,CAAA,EAAG,CAAC,CACvB;IAAAH,QAAA,EAAA,CAAC,eAAAN,GAAA,CAAAivB,SAAA,EAAA;MAAW,GAAGltB;KAAO,CAAA,EACtB,eAAA/B,GAAA,CAACkvB,UAAY,EAAA;MAAA,GAAGntB;KAAO,CAAA,EACvB,eAAA/B,GAAA,CAACmvB,WAAa,EAAA;MAAA,GAAGptB;KAAO,CAAA;EAC1B,CAAA,CAAA;AAEJ;AAEA,SAASotB,YAAYptB,KAAyB,EAAA;EAC5C,MAAMqtB,YAAe,GAAAV,eAAA,CAAgB3sB,KAAM,CAAAyD,OAAA,EAAS,QAAQ,CAAA;EAC5D,OAAO4pB,8BAAgBpvB,GAAA,CAAAqvB,iBAAA,EAAA;IAAmB,GAAGttB,KAAO;IAAAgd,MAAA,EAAQqQ;GAAc,CAAK,GAAA,IAAA;AACjF;AAEA,MAAME,OAAqC,EAAC;AAE5C,SAASL,UAAUltB,KAAyB,EAAA;EAtB5C,IAAA7G,EAAA;EAuBE,MAAMq0B,cAAiB,GAAAV,kBAAA,CAAmB9sB,KAAM,CAAAyD,OAAA,EAAS,YAAY,CAAA;EACrE,MAAMgqB,UAAUtb,KAAM,EAAA;EAEtB,MAAM1O,OAAU,GAAA,CAAAtK,EAAA,GAAAq0B,cAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,cAAA,CAAgBR,QAAS,CAAAvpB,OAAA,KAAzB,IAAoC,GAAAtK,EAAA,GAAAo0B,IAAA;EAC9C,MAAAG,UAAA,GAAaf,eAAgB,CAAAlpB,OAAA,EAAS,MAAM,CAAA;EAC5C,MAAAkqB,WAAA,GAAchB,eAAgB,CAAAlpB,OAAA,EAAS,OAAO,CAAA;EAEpD,MAAMmqB,gBAAmB,GAAA,UAAA;EACnB,MAAAC,iBAAA,GAAoBvwB,QAAQ,MAAM;IACtC,IAAI,CAACqwB,WAAa,EAAA;MACT,OAAA,KAAA,CAAA;IACT;IACI,IAAAA,WAAA,CAAY1Q,SAAS,OAAS,EAAA;MACzB,OAAA0Q,WAAA;IACT;IACO,OAAA;MACL,GAAGA,WAAA;MACH1zB,KAAO,EAAA;QACL,IAAG0zB,WAAa,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,WAAA,CAAA1zB,KAAA;QAChBnB,UAAY,EAAA;UACV,IAAG60B,2CAAa1zB,KAAM,CAAAnB,UAAA;UACtB0jB,WAAa,EAAAoR;QACf;MACF;IAAA,CACF;EAAA,CACC,EAAA,CAACD,WAAa,EAAAC,gBAAgB,CAAC,CAAA;EAElC,OAAA,mBACGnvB,KAAM,EAAA;IAAAC,KAAA,EAAO;IACZH,QAAC,iBAAAC,IAAA,CAAAC,KAAA,EAAA;MAAMC,OAAO,CACZ;MAAAH,QAAA,EAAA,CAAA,eAAAN,GAAA,CAACmB,IAAK,EAAA;QAAAC,GAAA,EAAK,CACT;QAAAd,QAAA,iBAAAN,GAAA,CAAC8E;UAAKN,EAAG,EAAA,OAAA;UAAQsM,MAAO,EAAA,UAAA;UAAW/L,IAAM,EAAA,CAAA;UAAG8qB,OAAS,EAAAL,OAAA;UAASlvB;QAE9D,CAAA;OACF,CAAA,EAAA,mBAECwE,IAAK,EAAA;QAAAgB,KAAA,EAAK,IAAC;QAAAf,IAAA,EAAM;QAAGzE,QAErB,EAAA;OAAA,CAAA,EAEA,eAAAC,IAAA,CAACY,IAAK,EAAA;QAAAuD,KAAA,EAAM,QACT;QAAApE,QAAA,EAAA,CACCmvB,UAAA,IAAA,eAAAzvB,GAAA,CAACU,GAAI,EAAA;UAAAkQ,IAAA,EAAK,MACR;UAAAtQ,QAAA,EAAA,eAAAN,GAAA,CAACqvB;YAAmB,GAAGttB,KAAA;YAAOgd,MAAQ,EAAA0Q;UAAA,CAAY;QACpD,CAAA,CAAA,EAEDG,qBACE,eAAA5vB,GAAA,CAAAU,GAAA,EAAA;UAAIkQ,IAAM,EAAA,CAAA;UAAGxQ,OAAO;YAAC0vB,UAAA,EAAY,CAAE;UAAA,CAAA;UAClCxvB,6BAAC+uB,iBAAmB,EAAA;YAAA,GAAGttB,KAAO;YAAAgd,MAAA,EAAQ6Q;UAAmB,CAAA;SAC3D,CAAA;OAEJ,CAAA;IACF,CAAA;EACF,CAAA,CAAA;AAEJ;AAEA,SAASV,WAAWntB,KAAyB,EAAA;EAhF7C,IAAA7G,EAAA;EAiFE,MAAMq0B,cAAiB,GAAAV,kBAAA,CAAmB9sB,KAAM,CAAAyD,OAAA,EAAS,YAAY,CAAA;EACrE,MAAMA,OAAU,GAAA,CAAAtK,EAAA,GAAAq0B,cAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,cAAA,CAAgBR,QAAS,CAAAvpB,OAAA,KAAzB,IAAoC,GAAAtK,EAAA,GAAAo0B,IAAA;EAC9C,MAAAS,gBAAA,GAAmBrB,eAAgB,CAAAlpB,OAAA,EAAS,QAAQ,CAAA;EAEnD,OAAA,eAAAxF,GAAA,CAAA+Q,QAAA,EAAA;IAAGzQ,6CAAqBN,GAAA,CAAAqvB,iBAAA,EAAA;MAAmB,GAAGttB,KAAO;MAAAgd,MAAA,EAAQgR;IAAkB,CAAA;EAAG,CAAA,CAAA;AAC3F;ACpFO,SAASC,iBAAiBjuB,KAAmB,EAAA;EAClD,OAAOA,KAAM,CAAAod,aAAA,CAAc;IAAC,GAAGpd,KAAO;IAAAxE,KAAA,EAAO,EAAI;IAAA4N,KAAA,EAAOpJ,KAAM,CAAAoJ,KAAA,GAAQ,CAAG;IAAA/F,OAAA,EAAS;EAAM,CAAA,CAAA;AAC1F;ACAO,SAAS6qB,sBAAsBluB,KAAyB,EAAA;EACvD,MAAA;IAACjE,KAAO;IAAA0E;EAAY,CAAA,GAAAT,KAAA;EAE1B,MAAMuP,OAAOrH,cAAe,EAAA;EAEtB,MAAAimB,YAAA,GAAe3wB,YAAY,MAAM;IATzC,IAAArE,EAAA;IAUI,MAAMi1B,QAAW,GAAAryB,KAAA,GAAQ,EAAK,GAAA,CAAA5C,EAAA,GAAAoW,IAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,IAAA,CAAM/L,OAAN,IAAY,GAAArK,EAAA,GAAA,EAAA;IAC1CsH,QAAA,CAAS2tB,QAAW,GAAAliB,GAAA,CAAIkiB,QAAQ,CAAA,GAAIpZ,MAAO,CAAA,CAAA;EAC1C,CAAA,EAAA,CAACvU,QAAU,EAAA8O,IAAA,EAAMxT,KAAK,CAAC,CAAA;EAE1B,MAAMyH,KAAK2O,KAAM,EAAA;EAEjB,OAAA,mBACGjU,IACC,EAAA;IAAAK,QAAA,EAAA,eAAAC,IAAA,CAACY;MAAKC,GAAK,EAAA,CAAA;MAAGsD,OAAM,YAClB;MAAApE,QAAA,EAAA,CAAA,eAAAN,GAAA,CAAC,KAAI,EAAA;QAAAI,KAAA,EAAO;UAAC0a,MAAA,EAAQ;SACnB;QAAAxa,QAAA,iBAAAN,GAAA,CAACowB,MAAA,EAAA;UACE,GAAGruB,KAAM,CAAAsuB,YAAA;UACV9qB,EAAA;UACAzH,KAAA,EAAO,GAAG/F,MAAC,CAAA,CAAA+F,KAAA,CAAA;UACXwyB,SAAS,CAACxyB,KAAA;UACV0E,QAAU,EAAA0tB,YAAA;UACVjvB,QAAA,EAAUc,MAAMsuB,YAAa,CAAAn0B;QAAA,CAAA;OAEjC,CAAA,EAAA,eAEC8D,GAAA,CAAA8E,IAAA,EAAA;QAAKgB,KAAK,EAAA,IAAA;QAACf,IAAM,EAAA,CAAA;QAAG+L,MAAO,EAAA,QAAA;QAC1BxQ,QAAC,EAAA,eAAAN,GAAA,CAAA,OAAA,EAAA;UAAM6vB,OAAS,EAAAtqB,EAAA;UAAIjF;QAAkC,CAAA;OACxD,CAAA;IACF,CAAA;EACF,CAAA,CAAA;AAEJ;AC/BO,SAASiwB,UAAUxuB,KAAyB,EAAA;EAC3C,MAAA;IAACjE,KAAO;IAAA0E;EAAY,CAAA,GAAAT,KAAA;EAC1B,MAAMwD,KAAK2O,KAAM,EAAA;EACjB,MAAMsc,KAAQ,GAAAnxB,OAAA,CACZ,MACEb,MAAO,CAAAoW,OAAA,CAAQ6b,KAAK,CAAE,CAAA9zB,GAAA,CAAI+zB,MAAA;IAAA,IAAC,CAAC/xB,GAAA,EAAKiC,IAAI,CAAA,GAAA8vB,MAAA;IAAA,0BAClCC,QAAmB,EAAA;MAAAC,OAAA,EAASjyB;MAAKiC,IAAY;MAAA4B;IAAA,CAAA,EAA/B7D,GAAmD,CACnE;EAAA,EAAA,EACH,CAAC6D,QAAQ,CAAA,CACX;EAEM,MAAAquB,YAAA,GAAexxB,QAAQ,MAAMyxB,OAAA,CAAQhzB,KAAK,CAAG,EAAA,CAACA,KAAK,CAAC,CAAA;EAGxD,sBAAAkC,GAAA,CAAC+wB,UAAA,EAAA;IACCliB,MACE,EAAA,eAAA7O,GAAA,CAACW,MAAO,EAAA;MAAAC,IAAA,EAAMiwB,YAAc;MAAAtzB,KAAA,EAAM,aAAc;MAAA2C,OAAA,EAAS,CAAG;MAAAiQ,IAAA,EAAK,OAAQ;MAAAQ,MAAA,EAAQ;IAAG,CAAA,CAAA;IAEtFpL,EAAA;IACAyrB,IAAA,qBAAOC,IAAK,EAAA;MAAA7wB,KAAA,EAAO;QAAC8wB,SAAW,EAAA;;MAAO5wB,QAAM,EAAAkwB;KAAA,CAAA;IAC5CzhB,OAAA,EAAS;MAACY,MAAA,EAAQ;IAAI;EAAA,CAAA,CACxB;AAEJ;AAEA,SAASghB,QAASA,CAAAQ,MAAA,EAQf;EAAA,IARe;IAChBvwB,IAAA;IACAgwB,OAAS,EAAAjyB,GAAA;IACT6D;EACF,CAIG,GAAA2uB,MAAA;EACK,MAAAjwB,OAAA,GAAU3B,WAAY,CAAA,MAAMiD,QAAS,CAAAyL,GAAA,CAAItP,GAAG,CAAC,CAAG,EAAA,CAAC6D,QAAU,EAAA7D,GAAG,CAAC,CAAA;EACrE,0BAAQyyB,QAAS,EAAA;IAAAxwB,IAAA;IAAYrD,OAAOoB,GAAK;IAAAqC,IAAA,EAAMrC;IAAKuC;EAAkB,CAAA,CAAA;AACxE;AAEO,SAAS4vB,QAAQO,QAAmB,EAAA;EA3C3C,IAAAn2B,EAAA,EAAAG,EAAA;EA4CE,OAAA,CAAOA,EAAO,GAAA,CAAAH,EAAA,GAAAsD,MAAA,CAAAoW,OAAA,CAAQ6b,KAAK,CAAA,CAAE/1B,KAAK42B,MAAA;IAAA,IAAC,CAAC3yB,GAAG,CAAA,GAAA2yB,MAAA;IAAA,OAAM3yB,QAAQ0yB,QAAQ;EAAA,EAAA,KAAtD,IAA0D,GAAA,KAAA,CAAA,GAAAn2B,EAAA,CAAA,CAAA,CAAA,KAA1D,YAAgEu1B,KAAM,CAAAc,QAAA;AAC/E;AC9BO,SAASC,kBAAkBzvB,KAA2B,EAAA;EAC3D,MAAM;IAACwD,EAAI;IAAA1K,UAAA;IAAYuzB,SAAW;IAAAqD,QAAA;IAAUC;EAAmB,CAAA,GAAA3vB,KAAA;EAEzD,MAAA4vB,UAAA,GAAatyB,QAAQ,MAAM;IAC/B,IAAIqyB,eAAiB,EAAA;MACnB,OAAOpqB,yBAAyBzM,UAAU,CAAA;IAC5C;IACA,OAAO0M,aAAa1M,UAAU,CAAA;EAAA,CAC7B,EAAA,CAACA,UAAY,EAAA62B,eAAe,CAAC,CAAA;EAChC,MAAME,YAAe,GAAAvyB,OAAA,CACnB,MAAMsyB,UAAW,CAAAj3B,IAAA,CAAMwD,CAAM,IAAAA,CAAA,CAAES,QAAQyvB,SAAS,CAAA,EAChD,CAACA,WAAWuD,UAAU,CAAA,CACxB;EAEA,MAAME,mBAAsB,GAAAxyB,OAAA,CAC1B,MAAMsyB,UAAW,CAAAh1B,GAAA,CAAKX,KAAA,KAAW;IAAC8B,KAAO,EAAA9B,KAAA,CAAM2C,GAAK;IAAA3C;EAAA,CAAO,CAAA,CAAA,EAC3D,CAAC21B,UAAU,CAAA,CACb;EAEM,MAAAG,YAAA,GAAevyB,WAAY,CAACwyB,MAA6C,IAAA;IACvE,MAAA;MAACj0B,KAAO;MAAA9B;IAAS,CAAA,GAAA+1B,MAAA;IAEvB,IAAI,CAACj0B,KAAO,EAAA;MACV,0BACGmC,IAAK,EAAA;QAAAuE,EAAA,EAAG,QAAS;QAAAtE,OAAA,EAAS;QAAGyQ,MAAQ,EAAA,CAAA;QACpCrQ,QAAC,EAAA,eAAAN,GAAA,CAAA8E,IAAA,EAAA;UAAKktB,QAAM,IAAC;UAAAjtB,IAAA,EAAM,CAChB;UAAAzE,QAAA,EAAAyxB,MAAA,CAAOj0B;SACV;MACF,CAAA,CAAA;IAEJ;IAEA,IAAIlD,MAAO,CAAAoB,KAAA,CAAMnB,UAAY,EAAA,UAAU,CAAG,EAAA;MACxC,sBACGmF,GAAA,CAAAC,IAAA,EAAA;QAAKuE,EAAG,EAAA,QAAA;QAAStE,SAAS,CAAG;QAAAyQ,MAAA,EAAQ,CACpC;QAAArQ,QAAA,EAAA,eAAAN,GAAA,CAAC8E;UAAKC,IAAM,EAAA,CAAA;UAAG+L,MAAO,EAAA,UAAA;UAAWxQ;SAEjC;MACF,CAAA,CAAA;IAEJ;IAEA,MAAM2xB,UAAa,GAAAj2B,KAAA,CAAMuB,KAAM,CAAA20B,KAAA,CAAM,GAAG,CAAA;IAEtC,OAAA,eAAAlyB,GAAA,CAACC,IAAK,EAAA;MAAAuE,EAAA,EAAG,QAAS;MAAAtE,OAAA,EAAS,CAAG;MAAAyQ,MAAA,EAAQ,CACpC;MAAArQ,QAAA,EAAA,eAAAC,IAAA,CAACY,IAAK,EAAA;QAAAC,GAAA,EAAK,CACT;QAAAd,QAAA,EAAA,CAAA,eAAAN,GAAA,CAAC8E;UAAKC,IAAM,EAAA,CAAA;UAAIzE,QAAc,EAAAuQ,aAAA,CAAA7U,KAAA,CAAM4E,IAAI;SAAE,CAAA,EAE1C,eAAAZ,GAAA,CAACU,GAAI,EAAA;UAAAkQ,IAAA,EAAK,MACR;UAAAtQ,QAAA,EAAA,eAAAC,IAAA,CAAC4xB,WAAA,EAAA;YACCC,WACG,eAAApyB,GAAA,CAAA8E,IAAA,EAAA;cAAKgB,OAAK,IAAC;cAAAf,IAAA,EAAM;cAAGzE,QAErB,EAAA;aAAA,CAAA;YAEFG,KAAO,EAAA,CAAA;YAENH,QAAA,EAAA,CAAW2xB,UAAA,CAAAxH,KAAA,CAAM,GAAGwH,UAAW,CAAA/6B,MAAA,GAAS,CAAC,CAAE,CAAAyF,GAAA,CAAI,CAAC01B,EAAI,EAAA16B,CAAA;YAAA;YAEnD;YAAAqI,GAAA,CAAC8E;cAAagB,KAAK,EAAA,IAAA;cAACf,MAAM,CACvB;cAAAzE,QAAA,EAAA+xB,EAAA,CAAGC,IAAK,CAAA;YAAA,CAAA,EADA36B,CAEX,CACD,CAAA,EAED,eAAAqI,GAAA,CAAC8E,IAAK,EAAA;cAAAC,IAAA,EAAM,CAAG;cAAA+L,MAAA,EAAO;cACnBxQ,QAAW,EAAA2xB,UAAA,CAAAA,UAAA,CAAW/6B,MAAS,GAAA,CAAC;YACnC,CAAA,CAAA;UAAA,CAAA;SAEJ,CAAA;MACF,CAAA;IACF,CAAA,CAAA;EAEJ,CAAA,EAAG,EAAE,CAAA;EAEL,MAAMq7B,WAAc,GAAAhzB,WAAA,CAAY,CAACzB,KAAA,EAAei0B,MAA8C,KAAA;IAzFhG,IAAA72B,EAAA;IA0FW,OAAA,CAAAA,EAAA,GAAA62B,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,MAAA,CAAQ/1B,KAAM,CAAAuB,KAAA,KAAd,IAAuB,GAAArC,EAAA,GAAA4C,KAAA;EAChC,CAAA,EAAG,EAAE,CAAA;EAEL,MAAM00B,YAAe,GAAAjzB,WAAA,CAAY,CAACrJ,KAAA,EAAe67B,MAA6C,KAAA;IA7FhG,IAAA72B,EAAA,EAAAG,EAAA,EAAAqC,EAAA;IA8FU,MAAA+0B,MAAA,GAASv8B,MAAMw8B,WAAY,EAAA;IACjC,OAAA,CAAA,CACEx3B,EAAQ,GAAA62B,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,MAAA,CAAAj0B,KAAA,KAAR,IAAe,GAAA,KAAA,CAAA,GAAA5C,EAAA,CAAAw3B,WAAA,CAAA,CAAA,CAAcn6B,QAAS,CAAAk6B,MAAA,CAAA,MAAA,CACtC/0B,EAAQ,GAAA,CAAArC,EAAA,GAAA02B,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,MAAA,CAAA/1B,KAAA,KAAR,IAAe,GAAA,KAAA,CAAA,GAAAX,EAAA,CAAAkC,KAAA,KAAf,IAAsB,GAAA,KAAA,CAAA,GAAAG,EAAA,CAAAg1B,WAAA,CAAA,CAAA,CAAcn6B,QAAS,CAAAk6B,MAAA,CAAA,CAAA;EAEjD,CAAA,EAAG,EAAE,CAAA;EAIH,sBAAAzyB,GAAA,CAAC2yB,YAAA,EAAA;IACCviB,QAAU,EAAA,CAAA;IACVxP,IAAA,EAAMgxB,YAAe,GAAAA,YAAA,CAAahxB,IAAO,GAAAgyB,UAAA;IACzCpwB,QAAU,EAAAivB,QAAA;IACVoB,UAAU,EAAA,IAAA;IACVttB,EAAA;IACAnP,OAAS,EAAAy7B,mBAAA;IACTtT,WAAY,EAAA,oBAAA;IACZ5N,MAAQ,EAAA,CAAA;IACRmhB,YAAA;IACAS,WAAA;IACAz0B,OAAO8zB,YAAc,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,YAAA,CAAAjzB,GAAA;IACrB6zB;EAAA,CAAA,CACF;AAEJ;AChHO,SAASM,kBAAkB/wB,KAAyB,EAAA;EAN3D,IAAA7G,EAAA;EAOE,MAAMwyB,cAAiB,GAAA,CAAAxyB,EAAA,GAAAgY,UAAA,CAAWzM,oBAAoB,CAAA,KAA/B,IAAkC,GAAA,KAAA,CAAA,GAAAvL,EAAA,CAAAwyB,cAAA;EACnD,MAAAjpB,GAAA,GAAM7K,OAAuB,IAAI,CAAA;EACvC,MAAM2L,KAAK2O,KAAM,EAAA;EACX,MAAA;IAAC1R;EAAY,CAAA,GAAAT,KAAA;EAEnBjI,SAAA,CAAU,MAAM;IAZlB,IAAAoB,GAAA,EAAAG,EAAA;IAaI,CAAAA,EAAA,GAAA,CAAAH,MAAAuJ,GAAI,CAAA1K,OAAA,KAAJ,gBAAAmB,GAAa,CAAA63B,aAAA,CAAc,aAA3B,IAAqC,GAAA,KAAA,CAAA,GAAA13B,EAAA,CAAA+T,KAAA,EAAA;EACvC,CAAA,EAAG,EAAE,CAAA;EAEC,MAAAqiB,QAAA,GAAWlyB,WAAY,CAACiI,IAAiB,IAAAhF,QAAA,CAASyL,GAAI,CAAAzG,IAAI,CAAC,CAAA,EAAG,CAAChF,QAAQ,CAAC,CAAA;EAE9E,IAAI,CAACkrB,cAAgB,EAAA;IACZ,OAAA3rB,KAAA,CAAMod,cAAcpd,KAAK,CAAA;EAClC;EAGE,OAAA,eAAA/B,GAAA,CAACU;IAAIkQ,IAAM,EAAA,CAAA;IAAGxQ,OAAO;MAAC4yB,QAAA,EAAU;IAAG,CAAA;IAAGvuB,GACpC;IAAAnE,QAAA,EAAA,eAAAN,GAAA,CAACwxB,iBAAA,EAAA;MACCjsB,EAAA;MACA1K,UAAY,EAAA6yB,cAAA;MACZ+D,QAAA;MACArD,WAAWrsB,KAAM,CAAAjE;IAAA,CAErB;EAAA,CAAA,CAAA;AAEJ;AC5BO,SAASm1B,uBAAuBlxB,KAAiC,EAAA;EACtE,MAAMuP,OAAOrH,cAAe,EAAA;EAE5B,MAAMipB,gBAAgBnxB,KAAM,CAAAjE,KAAA;EAC5B,MAAMq1B,kBAAkBpxB,KAAM,CAAAyD,OAAA;EAC9B,MAAM1H,KAAQ,GAAAuB,OAAA,CACZ,MAAO,CAAA6zB,aAAA,IAAA,IAAA,GAAAA,aAAA,GAAiB,EAAC,EAAGv6B,MAAO,CAACkF,CAAM,IAAA,CAACA,CAAE,CAAA8M,MAAA,IAAU9M,CAAE,CAAA8M,MAAA,MAAW2G,6BAAM/L,EAAE,CAAA,CAAA,EAC5E,CAAC2tB,eAAe5hB,IAAI,CAAA,CACtB;EACA,MAAM9L,OAAU,GAAAnG,OAAA,CACd,OACG8zB,eAAmB,IAAA,IAAA,GAAAA,eAAA,GAAA,EAAI,EAAAx6B,MAAA,CAAQkF,CAAM,IAAA;IAf5C,IAAA3C,EAAA;IAgBY,IAAA2C,CAAA,CAAEmhB,SAAS,OAAS,EAAA;MACf,OAAA,IAAA;IACT;IACMlhB,MAAAA,MAAAA,GAAAA,CAAQ5C,EAAG,GAAA2C,CAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,CAAA,CAAAu1B,IAAA,KAAH,IAAS,GAAA,KAAA,CAAA,GAAAl4B,EAAA,CAAA4C,KAAA;IACvB,OAAO,CAACA,MAAAA,CAAM6M,MAAU7M,IAAAA,MAAAA,CAAM6M,YAAW2G,IAAM,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,IAAA,CAAA/L,EAAA,CAAA;EAAA,CAChD,CAAA,EACH,CAAC4tB,iBAAiB7hB,IAAI,CAAA,CACxB;EACA,OAAOvP,MAAMod,aAAc,CAAA;IAAC,GAAGpd,KAAO;IAAAjE,KAAA;IAAO0H;GAAQ,CAAA;AACvD;ACpBa,MAAA6tB,uBAAA,GAA0B3sB,cAAuB,KAAS,CAAA,CAAA;AAEhE,SAAS4sB,sBAAsBvxB,KAAmB,EAAA;EACvD,sBACG/B,GAAA,CAAAqzB,uBAAA,CAAwBzsB,QAAxB,EAAA;IAAiC9I,OAAOiE,KAAM,CAAAjE,KAAA;IAC7CwC,QAAC,iBAAAN,GAAA,CAAAU,GAAA,EAAA;MAAIkQ,MAAM,CAAI;MAAAtQ,QAAA,EAAAyB,KAAA,CAAMod,aAAc,CAAApd,KAAK;KAAE;EAC5C,CAAA,CAAA;AAEJ;ACNO,SAASwxB,gBAAgBxxB,KAAuC,EAAA;EAPvE,IAAA7G,EAAA,EAAAG,EAAA,EAAAqC,EAAA,EAAAof,EAAA;EAQE,MAAM4Q,cAAiB,GAAA,CAAAxyB,EAAA,GAAAgY,UAAA,CAAWzM,oBAAoB,CAAA,KAA/B,IAAkC,GAAA,KAAA,CAAA,GAAAvL,EAAA,CAAAwyB,cAAA;EACzD,MAAMlmB,QAAQ9J,EAAW,GAAA,CAAArC,EAAA,GAAA6X,UAAA,CAAAmgB,uBAAuB,MAAlC,IAAyD,GAAA,KAAA,CAAA,GAAAh4B,EAAA,CAAAmM,IAAA,KAAzD,YAAiEzF,KAAM,CAAAyF,IAAA;EAC/E,MAAA0R,aAAA,GAAgBnR,gBAAiB,CAAA2lB,cAAA,EAAgBlmB,IAAI,CAAA;EAEzD,OAAA,eAAAjH,IAAA,CAACY,IAAK,EAAA;IAAAC,GAAA,EAAK,CAAG;IAAAsD,KAAA,EAAM;IAAStE,KAAO,EAAA;MAACwP,KAAO,EAAA;IAAA,CAC1C;IAAAtP,QAAA,EAAA,CAAA,eAACN,GAAA,CAAAmB,IAAA,EAAA;MAAKyP,IAAM,EAAA,CAAA;MAAGxP,GAAK,EAAA,CAAA;MAAGsD,OAAM,QAAS;MAAAiW,QAAA,EAAU,CAAG;MAAAD,QAAA,EAAU,CAI3D;MAAApa,QAAA,EAAA,eAAAN,GAAA,CAACU;QACCJ,QAAC,iBAAAN,GAAA,CAAA8E,IAAA,EAAA;UAAKC,IAAM,EAAA,CAAA;UAAGyuB,YAAa,EAAA,UAAA;UACzBlzB,+DAAe/C,KAAf,KAAA,IAAA,GAAAuf,EAAA,GAAwB;QAC3B,CAAA;MACF,CAAA;KACF,CAAA,EACA,eAAA9c,GAAA,CAAA+Q,QAAA,EAAA;MAAGzQ,gBAAMmf;IAAQ,CAAA,CAAA;EACnB,CAAA,CAAA;AAEJ;ACtBO,SAASgU,gCAAgC1xB,KAAyB,EAAA;EACjE,MAAA0C,GAAA,GAAM7K,OAAuB,IAAI,CAAA;EAGvCE,SAAA,CAAU,MAAM;IARlB,IAAAoB,EAAA;IASI,MAAMuM,MAAS,GAAA,CAAAvM,EAAA,GAAAuJ,GAAA,CAAI1K,OAAJ,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAmB,EAAA,CAAaw4B,OAAQ,CAAA,8BAAA,CAAA;IACpC,IAAI,CAACjsB,MAAQ,EAAA;MACX;IACF;IACM,MAAArH,KAAA,GAAQ8F,QAAS,CAAA2K,aAAA,CAAc,OAAO,CAAA;IAC5C,MAAM8iB,WAAW,KAAM,CAAA57B,MAAA,CAAA2tB,IAAA,CAAKkO,OAAW,CAAA,CAAA,CAAA5qB,OAAA,CAAQ,KAAK,GAAG,CAAA;IACvDvB,MAAA,CAAOlC,EAAK,GAAAouB,QAAA;IAENvzB,KAAA,CAAAyzB,SAAA,GAAY,YACb97B,MAAQ,CAAA47B,QAAA,EAAA,oEAAA,CAAA;IAEblsB,MAAA,CAAOqsB,QAAQ1zB,KAAK,CAAA;EAAA,CACtB,EAAG,CAACqE,GAAG,CAAC,CAAA;EAER,0BAAQ/D,GAAI,EAAA;IAAA+D,GAAA;IAAWnE,QAAM,EAAAyB,KAAA,CAAAod,aAAA,CAAcpd,KAAK;EAAE,CAAA,CAAA;AACpD;ACnBO,MAAMgyB,wBAAwBC,UAAW,CAAA;EAC9Cj9B,IAAM,EAAA,UAAA;EACNgE,IAAM,EAAAxF,uBAAA;EACNgI,KAAO,EAAA,YAAA;EACP6Y,QAAU,EAAA,IAAA;EACVxV,IAAM,EAAAqzB,SAAA;EACNC,UAAY,EAAA;IACVC,KAAO,EAAAV;EACT,CAAA;EACA13B,MAAQ,EAAA,CACNq4B,WAAY,CAAA;IACVr9B,IAAM,EAAA,QAAA;IACNgE,IAAM,EAAA,OAAA;IACNwC,KAAO,EAAA;EAAA,CACR,CAAA,EACD62B,WAAY,CAAA;IACVr5B,IAAM,EAAA,SAAA;IACNhE,IAAM,EAAA,OAAA;IACNwG,KAAO,EAAA,SAAA;IACPvF,EAAI,EAAA,CACFq8B,iBAAkB,CAAA;MAChBt9B,IAAM,EAAA,OAAA;MACNu9B,QAAQ,CAAC;QAAC/2B,OAAO,QAAU;QAAAO,KAAA,EAAO;OAAS,CAAA;MAC3Cy2B,OAAO,EAAC;MACRC,KAAO,EAAA;QACLC,YAAY,EAAC;QACbC,aAAa;MACf;IAAA,CACD,CAAA;EACH,CACD,CAAA,CACH;EACAC,OAAS,EAAA;IACPC,MAAQ,EAAA;MACNr3B,KAAO,EAAA,OAAA;MACP0V,OAAS,EAAA;IACX,CAAA;IACA4hB,OAAQA,CAAAC,MAAA,EAAkB;MAAA,IAAlB;QAACv3B,KAAO;QAAA0V;OAAU,GAAA6hB,MAAA;MA1C9B,IAAA55B,EAAA;MA2CY,MAAA8F,IAAA,GAAOiS,mCACTtL,OAAQ,CAAC2D,SAAeA,KAAO,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,KAAA,CAAAhL,QAAA,CAAA,CAChCqH,OAAQ,CAACgkB,KAAY,IAAA;QA7C9BzwB,IAAAA,GAAAA;QA6CiC,OAAA,CAAAA,GAAA,GAAAywB,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,KAAA,CAAO3qB,IAAP,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA9F,IAAag3B,KAAM,CAAA,GAAA,CAAA;MAAA,CAAA,CAAA,CAC3Cv5B,MAAO,CAAAuL,OAAA,CAAA;MACJ,MAAA6wB,KAAA,GAAA,CAAQ75B,EAAM,GAAA8F,IAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,IAAA,CAAA9J,MAAA,KAAN,IAAgB,GAAAgE,EAAA,GAAA,CAAA;MACvB,OAAA;QACLqC,KAAA;QACAy3B,UAAU,SAAU,CAAAj9B,MAAA,CAAAg9B,KAAA,CAAA;QACpBE,KAAO,EAAAC;MAAA,CACT;IACF;EACF;AACF,CAAC,CAAA;;ACvDD;;AAEe,SAASC,eAAeA,CAACC,UAAU,EAAE;EAClD,OAAO9T,MAAM,CAAC+T,MAAM,CAACF,eAAe,CAACC,UAAU,CAAC;AAClD;ACDA,SAASE,SAAAA,CAAA,EAAuB;EAAA,IAAbp+B,6EAAS,EAAI;EACxB,MAAAq+B,KAAA,GAAQ,IAAIC,UAAA,CAAWt+B,MAAM,CAAA;EACnCi+B,eAAA,CAAgBI,KAAK,CAAA;EACd,OAAAA,KAAA;AACT;AAEA,MAAME,mBAAmB,MAAM;EACzB,IAAAC,KAAA;EACJ,OAAO,MAAM;IACX,IAAIA,KAAO,EAAA;MACF,OAAAA,KAAA;IACT;IACAA,KAAA,GAAQ,EAAC;IACT,KAAA,IAAS/9B,CAAI,GAAA,CAAA,EAAGA,CAAI,GAAA,GAAA,EAAK,EAAEA,CAAG,EAAA;MACtB+9B,KAAA,CAAA/9B,CAAC,KAAKA,CAAI,GAAA,GAAA,EAAOg+B,SAAS,EAAE,CAAA,CAAEC,UAAU,CAAC,CAAA;IACjD;IACO,OAAAF,KAAA;EAAA,CACT;AACF,CAAG,GAAA;AAEI,SAASG,UAAU3+B,MAAiB,EAAA;EACzC,MAAMw+B,QAAQD,eAAgB,EAAA;EAC9B,OAAOH,SAAU,CAAAp+B,MAAM,CACpB,CAAA4+B,MAAA,CAAO,CAACC,GAAK,EAAA9pB,CAAA,KAAM8pB,GAAM,GAAAL,KAAA,CAAMzpB,CAAC,CAAG,EAAA,EAAE,CACrC,CAAAwe,KAAA,CAAM,GAAGvzB,MAAM,CAAA;AACpB;;;;;;AC5BA,IAAAgE,EAAA;AAOA,MAAM86B,OAAU,GAAA/oB,MAAA,CAAOvM,GAAG,CAAA,CAAVxF,EAAW,KAAAA,EAAA,GAAA6R,UAAA,CAAA,CAAA,kPAAA,CAAA,CAAA,CAAA,CAAA;AAYpB,SAASkpB,YAAYl0B,KAAiC,EAAA;EAG3Dm0B,mBAAA,CAAoBn0B,KAAK,CAAA;EACzB,sBAAQ/B,GAAA,CAAAg2B,OAAA,EAAA;IAAS11B,QAAM,EAAAyB,KAAA,CAAAod,aAAA,CAAcpd,KAAK;EAAE,CAAA,CAAA;AAC9C;AAEA,SAASm0B,oBAAoBn0B,KAAiC,EAAA;EAC5DjI,SAAA,CAAU,MAAM;IA3BlBoB,IAAAA,GAAAA;IA4BI,IAAIi7B,QAAW,GAAA,KAAA;IACT,MAAAC,GAAA,GAAA,CAAA,CAAQl7B,GAAA,GAAA6G,KAAA,CAAMjE,KAAN,KAAA,IAAA,GAAA5C,MAAiC,EAAC,EAAGyB,GAAI,CAAC2O,KAAU,IAAA;MAC5D,IAAAA,KAAA,CAAMhO,UAAU,OAAS,EAAA;QACpB,OAAAgO,KAAA;MACT;MAEW6qB,QAAA,GAAA,IAAA;MACX,OAAO73B,KAAuB,CAAA;QAC5BwM,IAAA,EAAM+qB,UAAU,EAAE,CAAA;QAClBv4B,KAAO,EAAA,OAAA;QACP6N,KAAO,EAAA,CAAA;QACPkrB,UAAU,EAAC;QACXj2B,KAAO,EAAA,QAAA;QACPE,QAAA,EAAU,CAACgL,KAAiD;MAAA,CAC7D,CAAA;IAAA,CACF,CAAA;IAED,IAAI6qB,QAAU,EAAA;MACNp0B,KAAA,CAAAS,QAAA,CAASyL,GAAI,CAAAmoB,GAAG,CAAC,CAAA;IACzB;EAGF,CAAA,EAAG,EAAE,CAAA;AACP;ACjDO,SAASE,uBAAuBv0B,KAAwB,EAAA;EAC7D,OAAOA,MAAMod,aAAc,CAAA;IACzB,GAAGpd,KAAA;IACHxE,KAAO,EAAA,KAAA;EAAA,CACR,CAAA;AACH;ACiCO,MAAMg5B,iBAAiBvC,UAAW,CAAA;EACvCj9B,IAAM,EAAA,QAAA;EACNgE,IAAM,EAAAzF,sBAAA;EACNiI,KAAO,EAAA,gBAAA;EACPqD,IAAM,EAAA41B,UAAA;EAENz6B,MAAQ,EAAA,CACNq4B,WAAY,CAAA;IACVr9B,IAAM,EAAA,QAAA;IACNgE,IAAM,EAAA,MAAA;IACNwC,KAAO,EAAA,OAAA;IACP22B,UAAY,EAAA;MACVC,KAAO,EAAArB;IACT,CAAA;IACA/vB,YAAa0zB,IAAA,IACXA,KAAKC,MAAO,CAAA,CAAC54B,OAAOmV,OAAY,KAAA;MAvDxC,IAAA/X,EAAA;MAwDU,IAAI,CAAC4C,KAAO,EAAA;QACH,OAAA,uBAAA;MACT;MACI,IAAA;QACI,MAAA64B,KAAA,GAAA,CAAQz7B,EAAQ,GAAA+X,OAAA,CAAA/M,QAAA,KAAR,IAAkB,GAAA,KAAA,CAAA,GAAAhL,EAAA,CAAAmC,GAAA;QAChC,IAAI,CAACs5B,KAAO,EAAA;UACH,OAAA,mGAAA;QACT;QACM,MAAAC,aAAA,GAAgBD,MAAM3tB,OAAQ,CAAA,IAAIF,OAAO,GAAI,CAAA/Q,MAAA,CAAAlD,sBAAA,CAAwB,GAAG,EAAE,CAAA;QAChF,MAAM0H,MAAS,GAAA0W,OAAA,CAAQ1W,MAAO,CAAAK,GAAA,CAAIg6B,aAAa,CAAA;QAC/C,IAAI,CAACr6B,MAAQ,EAAA;UACX,OAAO,+FAAgG,CAAAxE,MAAA,CAAA6+B,aAAA,CAAA;QACzG;QACM,MAAAC,IAAA,GAAOvvB,yBAAyB/K,MAA0B,CAAA;QAChE,MAAMqL,WAAWivB,IAAK,CAAAn8B,IAAA,CAAMiR,CAAM,IAAAA,CAAA,CAAEhN,QAAQb,KAAK,CAAA;QACjD,IAAI,CAAC8J,QAAU,EAAA;UACb,OAAO,oBAAoB7P,MAAK,CAAA+F,KAAA,EAAA,iCAAA,CAAA;QAClC;QACO,OAAA,IAAA;eACAoU,CAAG,EAAA;QACF9X,OAAA,CAAAb,KAAA,CAAM,qCAAqC2Y,CAAC,CAAA;QAC7C,OAAA,0BAAA;MACT;IAAA,CACD;EAAA,CACJ,CAAA,CACH;EACAyiB,OAAS,EAAA;IACPC,MAAQ,EAAA;MACNptB,IAAM,EAAA;IACR,CAAA;IACAqtB,OAAAA,CAAAiC,MAAA,EAAgB;MAAA,IAAR;QAACtvB;OAAO,GAAAsvB,MAAA;MACP,OAAA;QACLv5B,KAAO,EAAAiK,IAAA;QACPA,IAAA;QACA5G,IAAM,EAAAm2B;MAAA,CACR;IACF;EACF,CAAA;EACA7C,UAAY,EAAA;IACVS,OAAS,EAAApB;EACX,CAAA;EACAn9B,OAAS,EAAA;IACP4gC,KAAO,EAAA;MACLjgC,IAAM,EAAA;IACR;EACF;AACF,CAAC,CAAA;AAEM,MAAMge,YAAYif,UAAW,CAAA;EAClCj9B,IAAM,EAAA,QAAA;EACNgE,IAAM,EAAA3F,iBAAA;EACNmI,KAAO,EAAA,YAAA;EACPqD,IAAM,EAAAq2B,WAAA;EACNl7B,MAAQ,EAAA,CACNq4B,WAAY,CAAA;IACVr9B,IAAM,EAAA,QAAA;IACNgE,IAAM,EAAA,SAAA;IACNwC,KAAO,EAAA,kBAAA;IACPghB,WAAa,EAAA,0BAAA;IACblM,WAAa,EAAA,4CAAA;IACbtP,UAAY,EAAC0zB,IAAS,IAAAA,IAAA,CAAKS,QAAS,CAAA;EAAA,CACrC,CAAA,EACD9C,WAAY,CAAA;IACVr9B,IAAM,EAAA,MAAA;IACNkf,IAAM,EAAA,CAAA;IACNlb,IAAM,EAAA,aAAA;IACNwC,KAAO,EAAA,wBAAA;IACP8U,WAAa,EAAA;EAAA,CACd,CAAA,CACH;EACAsiB,OAAS,EAAA;IACPC,MAAQ,EAAA;MACNr3B,KAAO,EAAA;IACT;EACF,CAAA;EACAnH,OAAS,EAAA;IACP4gC,KAAO,EAAA;MACLjgC,IAAM,EAAA,SAAA;MACN6Y,KAAO,EAAA;IACT;EACF;AACF,CAAC,CAAA;AAEM,MAAMunB,gBAAgBnD,UAAW,CAAA;EACtCj9B,IAAM,EAAA,QAAA;EACNgE,IAAM,EAAA1F,0BAAA;EACNkI,OAAOw2B,qBAAsB,CAAAx2B,KAAA;EAC7BqD,MAAMmzB,qBAAsB,CAAAnzB,IAAA;EAC5B7E,MAAQ,EAAA,CACNq4B,WAAY,CAAA;IACVr9B,IAAM,EAAA,WAAA;IACNgE,IAAM,EAAA,WAAA;IACN+B,IAAI,CAAC;MAAC/F,IAAM,EAAAg9B,qBAAA,CAAsBh5B;KAAK,CAAA;IACvCwC,KAAO,EAAA,SAAA;IACP8U,WAAa,EAAA,8DAAA;IACbtP,UAAY,EAAC0zB,IAAS,IAAAA,IAAA,CAAKS,QAAS,CAAA,CAAA;IACpChD,UAAY,EAAA;MACVC,KAAA,EAAO,SAASiD,GAAAA,CAAIr1B,KAAO,EAAA;QAClB,OAAA,eAAA/B,GAAA,CAACU,GAAI,EAAA;UAAAN,KAAA,EAAO;YAAC8pB,QAAA,EAAU;WAAO;UAAA5pB,QAAA,EAAAyB,KAAA,CAAMod,aAAc,CAAApd,KAAK;QAAE,CAAA,CAAA;MAClE;IACF;EAAA,CACD,CAAA,CACH;EACA4yB,OAAS,EAAA;IACPC,MAAQ,EAAA;MACNnwB,GAAK,EAAA,gBAAA;MACLlH,KAAO,EAAA,iBAAA;MACP0V,OAAS,EAAA;IACX,CAAA;IACA4hB,QAAQD,MAAQ,EAAA;MArKpB,IAAA15B,EAAA,EAAAG,EAAA,EAAAqC,EAAA,EAAAof,EAAA;MAsKM,OAAO8X,MAAO,CAAAnwB,GAAA,GAAA,CACVqY,EAAuB,GAAA,CAAApf,EAAA,GAAA,CAAArC,EAAA,GAAA,CAAAH,EAAA,GAAA64B,qBAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA74B,EAAA,CAAAy5B,OAAA,KAAvB,mBAAgCE,OAAhC,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAn3B,EAAA,CAAA25B,IAAA,CAAAh8B,EAAA,EAA0Cu5B,MAA1C,CAAA,KAAA,IAAA,GAAA9X,EAAA,GAAqD8X,SACrD;QAACr3B,KAAA,EAAO,uBAAyB;QAAA03B,KAAA,EAAOlB,sBAAsBnzB;OAAI;IACxE;EACF,CAAA;EACAxK,OAAS,EAAA;IACP4gC,KAAO,EAAA;MACLjgC,IAAM,EAAA,SAAA;MACN6Y,KAAO,EAAA;IACT;EACF;AACF,CAAC,CAAA;AAEM,MAAMvE,SAAS2oB,UAAW,CAAA;EAC/Bj9B,IAAM,EAAA,OAAA;EACNgE,IAAM,EAAA5F,cAAA;EACNoI,KAAO,EAAA,QAAA;EACPvF,EAAI,EAAA,CACFq8B,iBAAkB,CAAA;IAChBt9B,IAAM,EAAA,OAAA;IACNu9B,QAAQ,CAAC;MAAC/2B,OAAO,QAAU;MAAAO,KAAA,EAAO;KAAS,CAAA;IAC3Cy2B,OAAO,EAAC;IACRC,KAAO,EAAA;MACLC,YAAY,EAAC;MACbC,aAAa;IACf,CAAA;IACA18B,EAAI,EAAA,CACFq8B,iBAAkB,CAAA;MAChBt9B,MAAMw/B,cAAe,CAAAx7B;IAAA,CACtB,CAAA,EACDs5B,iBAAkB,CAAA;MAChBt9B,MAAMogC,aAAc,CAAAp8B;IAAA,CACrB,CAAA,EACDs5B,iBAAkB,CAAA;MAChBt9B,MAAMge,SAAU,CAAAha;IAAA,CACjB,CAAA;EACH,CACD;EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAAA;AAWL,CAAC,CAAA;;AAEM,MAAM6P,cAAcopB,UAAW,CAAA;EACpCj9B,IAAM,EAAA,QAAA;EACNgE,IAAM,EAAA7F,mBAAA;EACNqI,KAAO,EAAA,aAAA;EACP+5B,SAAW,EAAA,CACT;IAACv8B,IAAM,EAAA,YAAA;IAAcwC,KAAO,EAAA,YAAA;IAAcnH,OAAS,EAAA;MAACmhC,WAAa,EAAA,IAAA;MAAMC,SAAW,EAAA;;EAAK,CAAA,CACzF;EACA7C,OAAS,EAAA;IACPC,MAAQ,EAAA;MACNh0B,IAAM,EAAA,MAAA;MACNrD,KAAO,EAAA,OAAA;MACPoN,MAAQ,EAAA;IACV,CAAA;IACAkqB,SAAS4C,MAAA,IAA2B;MAAA,IAA1B;QAAC72B,IAAM;QAAArD,KAAA;QAAOoN;OAAY,GAAA8sB,MAAA;MAC3B,OAAA;QACLl6B,KAAA;QACAqD,IAAM,EAAAA,IAAA,GAAO6vB,KAAM,CAAA7vB,IAAkB,CAAI,GAAAqW,YAAA;QACzCtM;MAAA,CACF;IACF;EACF,CAAA;EACAupB,UAAY,EAAA;IACVC,KAAO,EAAAnF,gBAAA;IACP2F,OAAA,EAAU5yB,KAAe,IAAA;MACvB,2BACGZ,IAAK,EAAA;QAAAC,GAAA,EAAK;QAAGsD,KAAM,EAAA,QAAA;QAASxE,SAAS,CACnC;QAAAI,QAAA,EAAA,CAAAyB,KAAA,CAAMnB,IACL,IAAA,eAAAZ,GAAA,CAACU,GAAI,EAAA;UAAAkQ,IAAA,EAAK,MACR;UAAAtQ,QAAA,iBAAAN,GAAA,CAAC8E,IAAK,EAAA;YAAAC,IAAA,EAAM,CAAI;YAAAzE,QAAA,EAAAuQ,aAAA,CAAc9O,KAAM,CAAAnB,IAAI;UAAE,CAAA;SAC5C,CAAA,EAAA,mBAGDJ,KAAM,EAAA;UAAAoQ,IAAA,EAAM,CAAG;UAAAnQ,KAAA,EAAO;UACrBH,QAAC,iBAAAN,GAAA,CAAA8E,IAAA,EAAA;YAAKC,IAAM,EAAA,CAAA;YAAGyuB,cAAa,UAAW;YAAA1iB,MAAA,EAAO;YAC3CxQ,QAAoB,EAAAsM,mBAAA,CAAA7K,KAAK;UAC5B,CAAA;SACF,CAAA,EAECA,KAAM,CAAA4I,MAAA,IAAA,eACJ3K,GAAA,CAAA8E,IAAA,EAAA;UAAKC,MAAM,CACV;UAAAzE,QAAA,iBAAAN,GAAA,CAACyV,OAAA,EAAA;YACClG,OAAS,EAAA,eAAAvP,GAAA,CAAC8E,IAAK,EAAA;cAAAC,IAAA,EAAM;cAAGzE,QAAmB,EAAA;aAAA,CAAA;YAC3CJ,OAAS,EAAA,CAAA;YACTwP,SAAU,EAAA,KAAA;YACVC,MAAM,EAAA,IAAA;YAENrP,6BAACo3B,QAAS,EAAA,EAAA;UAAA,CAAA;SAEd,CAAA;MAEJ,CAAA,CAAA;IAEJ;EACF,CAAA;EACA37B,MAAQ,EAAA,CACNq4B,WAAY,CAAA;IACVr9B,MAAMsU,MAAO,CAAAtQ,IAAA;IACbA,IAAM,EAAA,QAAA;IACNwC,KAAO,EAAA,aAAA;IACP8U,4BACI9R,IAAA,CAAAwQ,QAAA,EAAA;MAAAzQ,QAAA,EAAA,CAAA,YAAA,EACW,GAAA,EAAA,oBACV,GAAE,EAAA;QAAAiX,IAAA,EAAMlO;QAAqByM,MAAO,EAAA,QAAA;QAAS0B,KAAI,YAAa;QAAAlX,QAAA,EAAA,CAAA,wBAAA,EAAA,mBACtCma,cAAe,EAAA,EAAA,CAAA;OACxC,CAAA;KACF,CAAA;IAEFyZ,UAAY,EAAA;MACVC,KAAO,EAAA8B;IACT;EAAA,CACD,CAAA,EACD7B,WAAY,CAAA;IACVr9B,IAAM,EAAA,QAAA;IACNgE,IAAM,EAAA,MAAA;IACNwC,KAAO,EAAA,MAAA;IACPo6B,QAAU,EAAA,YAAA;IACVzD,UAAY,EAAA;MACVl4B,KAAO,EAAAg0B,gBAAA;MACPmE,KAAO,EAAA5D;IACT;EAAA,CACD,CAAA,EACD6D,WAAY,CAAA;IACVr9B,IAAM,EAAA,QAAA;IACNgE,IAAM,EAAA,OAAA;IACNwC,KAAO,EAAA,OAAA;IACPo6B,QAAU,EAAA,YAAA;IACVzD,UAAY,EAAA;MACVl4B,KAAO,EAAAg0B;IACT;EAAA,CACD,CAAA,EACDoE,WAAY,CAAA;IACVr9B,IAAM,EAAA,QAAA;IACNgE,IAAM,EAAA,QAAA;IACNwC,KAAO,EAAA,YAAA;IACPo6B,QAAU,EAAA,YAAA;IACVzD,UAAY,EAAA;MACVl4B,KAAO,EAAAg0B,gBAAA;MACPmE,KAAO,EAAAlE;IACT,CAAA;IACA2H,YAAA,EAAcA,CAACzhC,MAAA,EAAQ8c,OAAS,KAAA;MA3TtC,IAAA/X,EAAA,EAAAG,EAAA;MA2TiD,OAAA,CAAAA,EAAA,GAAA,CAAAH,EAAA,GAAA+X,OAAA,CAAAjJ,WAAA,KAAR,IAAqB,GAAA,KAAA,CAAA,GAAA9O,EAAA,CAAAqK,EAAA,KAArB,IAA2B,GAAAlK,EAAA,GAAA,EAAA;IAAA,CAAA;IAC9Da,QAAA,EAAW+W,OAAS,IAAA;MA5T1B,IAAA/X,EAAA,EAAAG,EAAA,EAAAqC,EAAA;MA6TQ,OAAAwG,OAAA,CACE,CAAA,CAAAhJ,EAAA,GAAA+X,OAAA,CAAQxL,MAAR,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAvM,EAAA,CAAgB28B,WAAe,KAAA,CAAA,CAAAx8B,EAAA,GAAA4X,OAAA,CAAQxL,WAAR,IAAgB,GAAA,KAAA,CAAA,GAAApM,EAAA,CAAAw8B,WAAA,OAAA,CAAgBn6B,EAAQ,GAAAuV,OAAA,CAAAjJ,WAAA,KAAR,IAAqB,GAAA,KAAA,CAAA,GAAAtM,EAAA,CAAA6H,EAAA,CAAA,CACtF;IAAA;EAAA,CACH,CAAA,EACD6uB,WAAY,CAAA;IACVr9B,IAAM,EAAA,QAAA;IACNgE,IAAM,EAAA,aAAA;IACNwC,KAAO,EAAA,YAAA;IACPpB,MAAQ,EAAA,IAAA;IACRw7B,QAAU,EAAA,YAAA;IACVC,YAAA,EAAcA,CAACzhC,MAAA,EAAQ8c,OAAY,KAAA;MAvUzC,IAAA/X,EAAA,EAAAG,EAAA;MAwUQ,OAAA,CAAOA,EAAQ,GAAA,CAAAH,EAAA,GAAA+X,OAAA,CAAAjJ,WAAA,KAAR,IAAqB,GAAA,KAAA,CAAA,GAAA9O,EAAA,CAAAqK,EAAA,KAArB,IAA2B,GAAAlK,EAAA,GAAA,EAAA;IACpC;EAAA,CACD,CAAA;AAEL,CAAC,CAAA;AAEM,MAAMy8B,oBAAoB9D,UAAW,CAAA;EAC1Cj9B,IAAM,EAAA,QAAA;EACNgE,IAAM,EAAA9F,mBAAA;EACNsI,KAAO,EAAA,cAAA;EAAA;AAAA;AAAA;EAIPxB,MAAQ,EAAA,CACNq4B,WAAY,CAAA;IACVr9B,IAAM,EAAA,QAAA;IACNgE,IAAM,EAAA,MAAA;IACNwC,KAAO,EAAA,MAAA;IACPrB,QAAU,EAAA,IAAA;IACVC,MAAQ,EAAA;EAAA,CACT,CAAA,EACDi4B,WAAY,CAAA;IACVr9B,IAAM,EAAA,OAAA;IACNgE,IAAM,EAAA,cAAA;IACNwC,KAAO,EAAA,cAAA;IACPvF,IAAI,CAAC;MAACjB,IAAM,EAAA6T,WAAA,CAAY7P;KAAK,CAAA;IAC7Bm5B,UAAY,EAAA;MACVl4B,KAAO,EAAAs6B,sBAAA;MACPnC,KAAO,EAAAlB;IACT;EAAA,CACD,CAAA,CACH;EACA0B,OAAS,EAAA;IACPC,MAAQ,EAAA;MACNr3B,KAAO,EAAA;IACT;EACF;AACF,CAAC,CAAA;AAEM,MAAMw6B,uBAAuB/D,UAAW,CAAA;EAAA;EAE7Cj9B,IAAM,EAAA,QAAA;EAAA;EAEN,GAAI;IAACqf,QAAA,EAAU;EAAI,CAAA;EACnBrb,IAAM,EAAA/F,sBAAA;EACNuI,KAAO,EAAA,aAAA;EAEP22B,UAAY,EAAA;IACVC,KAAO,EAAA9G,kBAAA;IACPrxB,KAAA,EAAQ+F,KAAU,IAAA;MAChB,OAAOA,MAAMod,aAAc,CAAA;QAAC,GAAGpd,KAAO;QAAAxE,KAAA,EAAO;OAAG,CAAA;IAClD;EACF,CAAA;EACAxB,MAAQ,EAAA,CACNq4B,WAAY,CAAA;IACVr9B,IAAM,EAAA,QAAA;IACNgE,IAAM,EAAA,OAAA;IACNwC,KAAO,EAAA;EAAA,CACR,CAAA,EACD62B,WAAY,CAAA;IACVr9B,IAAM,EAAA,OAAA;IACNgE,IAAM,EAAA,QAAA;IACNwC,KAAO,EAAA,QAAA;IACPvF,IAAI,CAAC;MAACjB,IAAM,EAAA+gC,iBAAA,CAAkB/8B;KAAK;EAAA,CACpC,CAAA,CACH;EACA45B,OAAS,EAAA;IACPC,MAAQ,EAAA;MACNr3B,KAAO,EAAA;IACT;EACF;AACF,CAAC,CAAA;AAEM,MAAMy6B,kBAAkBhE,UAAW,CAAA;EACxCj9B,IAAM,EAAA,QAAA;EACNgE,IAAM,EAAAtF,uBAAA;EACN8H,KAAO,EAAA,kBAAA;EACPxB,MAAQ,EAAA,CACNq4B,WAAY,CAAA;IACVr9B,IAAM,EAAA,QAAA;IACNgE,IAAM,EAAA,MAAA;IACNwC,KAAO,EAAA;EAAA,CACR,CAAA,EACD62B,WAAY,CAAA;IACVr9B,IAAM,EAAA,QAAA;IACNgE,IAAM,EAAA,gBAAA;IACNwC,KAAO,EAAA;EAAA,CACR,CAAA,EACD62B,WAAY,CAAA;IACVr9B,IAAM,EAAA,UAAA;IACNgE,IAAM,EAAA,SAAA;IACNwC,KAAO,EAAA;EAAA,CACR,CAAA,EACD62B,WAAY,CAAA;IACVr9B,IAAM,EAAA,UAAA;IACNgE,IAAM,EAAA,SAAA;IACNwC,KAAO,EAAA;EAAA,CACR,CAAA,EACD62B,WAAY,CAAA;IACVr9B,IAAM,EAAA,QAAA;IACNgE,IAAM,EAAA,MAAA;IACNwC,KAAO,EAAA;EAAA,CACR,CAAA;AAEL,CAAC,CAAA;AAEM,MAAM06B,4BAA4BjE,UAAW,CAAA;EAAA;EAElDj9B,IAAM,EAAA,QAAA;EAAA;EAEN,GAAI;IAACqf,QAAA,EAAU;EAAI,CAAA;EACnBrb,IAAM,EAAAvF,yBAAA;EACN+H,KAAO,EAAA,6BAAA;EACPxB,MAAQ,EAAA,CACNq4B,WAAY,CAAA;IACVr9B,IAAM,EAAA,OAAA;IACNgE,IAAM,EAAA,OAAA;IACNwC,KAAO,EAAA,OAAA;IACPvF,IAAI,CAAC;MAACjB,IAAM,EAAAihC,eAAA,CAAgBj9B;KAAK;EAAA,CAClC,CAAA;AAEL,CAAC,CAAA;ACpbM,MAAMm9B,WAAc,GAAA,CACzBJ,iBAAA,EACAC,oBAAA,EACA1sB,MAAA,EACAkrB,cAAA,EACA3rB,WAAA,EACAqtB,yBAAA,EACAD,eAAA,EACAjE,qBAAA,EACAhf,SAAA,EACAoiB,aAAA,CACF;ACpBgB,SAAAgB,kBAAAA,CAAmB3wB,MAAY3M,UAAwB,EAAA;EAC9D,OAAAwE,OAAA,CACL,MAAMmI,IAAK,CAAA3L,KAAA,CAAO6O,CAAA,IAAM,OAAOA,CAAM,KAAA,QAAQ,CAAK,IAAAlP,iBAAA,CAAkBX,UAAU,CAAA,EAC9E,CAAC2M,MAAM3M,UAAU,CAAA,CACnB;AACF;ACAgB,SAAAu9B,6BAAAA,CACdj2B,YACA6F,kBACA,EAAA;EACM,MAAA;IAACY,SAAW;IAAAD;EAAA,CAAS,GAAAD,YAAA,CACzB2vB,eAAel2B,UAAU,CAAA,EACzB6F,kBAAmB,CAAAjN,IAAA,EACnB,KAAA,CACF;EACA,MAAMu9B,oBAAuB,GAAA,CAAA3vB,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,KAAA,CAAOtL,GAAO,MAAAuL,SAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,SAAA,CAAWvL,GAAO,CAAA,IAAA8E,UAAA;EAC7D,MAAMo2B,gBAAgBr0B,OAAQ,CAAA,EAACyE,+BAAOtL,GAAO,CAAA,IAAA,EAACuL,uCAAWvL,GAAG,CAAA,CAAA;EAC5D,MAAMm7B,oBAAuB,GAAAriB,eAAA,CAAgBnO,kBAAoB,EAAAY,SAAA,EAAWD,KAAK,CAAA;EAE3E,MAAA;IAACxS;GAAM,GAAIiS,eAAgB,EAAA;EAC3B,MAAAqwB,YAAA,GAAetiC,OAAON,cAAc,CAAA;EAC1C,MAAM;IAACo3B,aAAe;IAAAyL,cAAA;IAAgBC;IAAWn2B,QAAU,EAAAiU;EAAA,IAAoBzT,eAAgB,EAAA;EAE/F,MAAMmH,iBAAiBN,uBAAwB,CAAA;IAC7C1H,UAAA;IACAtH,UAAY,EAAAmN;EAAA,CACb,CAAA;EAEK,MAAAlK,KAAA,GAAoCuB,QAAQ,MAAM;IACtD,MAAMwoB,IAAO,GAAA;MACX1lB,UAAA;MACAm2B,oBAAA;MACAtwB,kBAAA;MACAuwB,aAAA;MACAC,oBAAA;MACAvL,aAAA;MACAyL,cAAA;MACAC,SAAA;MACAliB,gBAAA;MACAgiB;IAAA,CACF;IACA,IAAI,CAACtuB,cAAgB,EAAA;MACnB,OAAO;QAAC,GAAG0d,IAAA;QAAMzuB,OAAS,EAAA,IAAA;QAAM+Q,gBAAgB,KAAS;OAAA;IAC3D;IACO,OAAA;MACL,GAAG0d,IAAA;MACHzuB,OAAS,EAAA,KAAA;MACT+Q;IAAA,CACF;EAAA,CACC,EAAA,CACDA,cAAA,EACAquB,oBAAA,EACAr2B,UAAA,EACAm2B,oBAAA,EACAtwB,kBAAA,EACAuwB,aAAA,EACAtL,aAAA,EACAyL,cAAA,EACAC,SAAA,EACAliB,gBAAA,EACAgiB,YAAA,CACD,CAAA;EAEM,OAAA36B,KAAA;AACT;AChEO,SAAS86B,WAAcA,CAAA,EAAA;EAE1B,sBAAA54B,GAAA,CAACyV,OAAA,EAAA;IACClG,OAAA,iBACGvP,GAAA,CAAA8E,IAAA,EAAA;MAAKC,IAAM,EAAA,CAAA;MAAG3E,OAAO;QAACoa,UAAA,EAAY;MAAQ,CAAA;MAAGla,QAE9C,EAAA;IAAA,CAAA,CAAA;IAEFu4B,kBAAA,EAAoB,CAAC,QAAQ,CAAA;IAC7B34B,OAAS,EAAA,CAAA;IACTwP,SAAU,EAAA,KAAA;IACVC,MAAM,EAAA,IAAA;IAENrP,6BAACo3B,QAAS,EAAA,EAAA;EAAA,CAAA,CACZ;AAEJ;ACPa,MAAAoB,YAAA,GAAepyB,cAA6C,KAAS,CAAA,CAAA;AAE3E,SAASqyB,qBAAqBh3B,KAAmB,EAAA;EAdxD,IAAA7G,EAAA;EAeE,MAAM;IAACL,UAAA;IAAY2M,IAAM;IAAA1J;EAAA,CAAS,GAAAiE,KAAA;EAC5B,MAAAi3B,QAAA,GAAA,CAAY99B,EAAe,GAAA4C,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,KAAA,CAAAm7B,KAAA,KAAf,IAAsB,GAAA,KAAA,CAAA,GAAA/9B,EAAA,CAAAsG,IAAA;EACxC,MAAM,CAAC03B,aAAA,EAAeC,gBAAgB,CAAA,GAAI7/B,SAA6B0/B,QAAQ,CAAA;EAEzE,MAAA;IAAC72B;GAAU,GAAImZ,wBAAyB,EAAA;EACxC,MAAA;IAACxJ;GAAM,GAAIkB,qBAAsB,EAAA;EACjC,MAAA3B,SAAA,GAAYH,YAAa,CAAAY,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,MAAA,CAAQuB,iBAAiB,CAAA;EACxD,MAAM;IAAC5B;EAAA,CAAmB,GAAAL,kBAAA,CAAmBC,SAAS,CAAA;EAEtDvX,SAAA,CAAU,MAAM;IACR,MAAAqB,YAAA,GAAeF,sBAAsBJ,UAAU,CAAA;IACrD,IAAIm+B,QAAY,IAAA72B,UAAA,IAAchH,YAAgB,IAAA69B,QAAA,KAAaE,aAAe,EAAA;MACxEC,gBAAA,CAAiBH,QAAQ,CAAA;MACTvnB,eAAA,CAAA;QAACjK,IAAM,EAAAK,YAAA,CAAa,CAAC,GAAGL,MAAMrM,YAAY,CAAC,CAAG;QAAAgH;MAAA,CAAuB,CAAA;IACvF;EAAA,CACF,EAAG,CAACtH,UAAY,EAAA2M,IAAA,EAAMwxB,UAAUE,aAAe,EAAA/2B,UAAA,EAAYsP,eAAe,CAAC,CAAA;EAErE,MAAAwB,OAAA,GAAyC5T,QAAQ,MAAM;IACrD,MAAAlE,YAAA,GAAeF,sBAAsBJ,UAAU,CAAA;IAC9C,OAAAM,YAAA,GAAe;MAACi+B,WAAA,EAAavxB,YAAa,CAAA,CAAC,GAAGL,IAAA,EAAMrM,YAAY,CAAC,CAAG;MAAA69B;IAAY,CAAA,GAAA,KAAA,CAAA;EACtF,CAAA,EAAA,CAACn+B,UAAY,EAAA2M,IAAA,EAAMwxB,QAAQ,CAAC,CAAA;EAExB,OAAA,eAAAh5B,GAAA,CAAC84B,aAAalyB,QAAb,EAAA;IAAsB9I,OAAOmV,OAAU;IAAA3S,QAAA,EAAAyB,KAAA,CAAMod,aAAc,CAAApd,KAAK;EAAE,CAAA,CAAA;AAC5E;AC5BA,SAASs3B,OAAKA,KAA0D,EAAA;EAC/DA,OAAAA,KAAAA;AACT;AAEO,MAAMC,uBAA+C,GAAA;EAC1Dv+B,IAAM,EAAA,iCAAA;EACNw+B,UAAUx3B,KAAO,EAAA;IACT,MAAAgX,OAAA,GAAUtM,UAAW,CAAA1K,KAAA,CAAMyF,IAAI,CAAA;IAE/B,MAAA;MAACsK;KAAM,GAAIkB,qBAAsB,EAAA;IACjC,MAAA3B,SAAA,GAAYH,YAAa,CAAAY,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,MAAA,CAAQuB,iBAAiB,CAAA;IACxD,MAAM;MAAC5B,eAAA;MAAiBrY;IAAO,CAAA,GAAIgY,mBAAmBC,SAAS,CAAA;IAEzD,MAAAmoB,YAAA,GAAetmB,WAAW4lB,YAAY,CAAA;IAExC,IAAAU,YAAA,IAAgBzgB,OAAY,MAAAygB,YAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,YAAA,CAAcJ,WAAa,CAAA,EAAA;MAGnD,MAAA;QAACj3B;OAAU,GAAImZ,wBAAyB,EAAA;MAE9C,OAAOjc,QAAQ,MAAM;QACnB,OAAOg6B,MAAK,CAAA;UACVtiC,IAAM,EAAA,QAAA;UACN6J,MAAMxH,OACF,GAAA,MAAA,mBACGsH,GAAI,EAAA;YAAAN,KAAA,EAAO;cAACC,MAAQ,EAAA;YACnB,CAAA;YAAAC,QAAA,EAAA,eAAAN,GAAA,CAACa;cAAQT,KAAO,EAAA;gBAACq5B,WAAW;cAAiB;YAAA,CAAG;UAClD,CAAA,CAEF,GAAAzyB,SAAA;UACJzJ,KAAO,EAAA,kBAAA;UACPm8B,UAAUA,CAAA,KAAM;YACd,IAAItgC,OAAS,EAAA;cACX;YACF;YACAqY,eAAA,CAAgB;cAACjK,IAAM,EAAAuR,OAAA;cAAS5W,UAAY,EAAAA,UAAA,IAAA,IAAA,GAAAA,UAAA,GAAc;aAAG,CAAA;UAC/D,CAAA;UACAw3B,cAAgB,EAAA,IAAA;UAChB14B,QAAU,EAAA7H,OAAA;UACV+C,MAAA,EAAQ,CAACq9B,YAAa,CAAAR;QAAA,CACvB,CAAA;MAAA,GACA,CAACvnB,eAAA,EAAiBsH,SAAS5W,UAAY,EAAA/I,OAAA,EAASogC,YAAY,CAAC,CAAA;IAClE;IAGO,OAAA,KAAA,CAAA;EACT;AACF,CAAA;ACjCA,SAASH,KAAKA,KAA0D,EAAA;EAC/DA,OAAAA,KAAAA;AACT;AAEO,MAAMO,kBAA0C,GAAA;EACrD7+B,IAAM,EAAA,uBAAA;EACNw+B,UAAUx3B,KAAO,EAAA;IACT,MAAA;MAAClH;IAAc,CAAA,GAAAkH,KAAA;IACrB,MAAM83B,eAAkB,GAAA1B,kBAAA,CAAmBp2B,KAAM,CAAAyF,IAAA,EAAM3M,UAAU,CAAA;IAE3D,MAAAi/B,eAAA,GAAkB/3B,KAAM,CAAAyF,IAAA,CAAKtQ,MAAW,KAAA,CAAA;IAExC,MAAA;MACJiT,cAAA;MACAouB,aAAA;MACAC,oBAAA;MACAvL,aAAA;MACAyL,cAAA;MACAC,SAAA;MACAliB,gBAAA;MACAzO,kBAAA;MACA7F,UAAA;MACAs2B;IACF,CAAA;IAAA;IAAA;IAGEqB,eAAA;IAAA;IAEI1B,6BAAA,CAA8Br2B,KAAM,CAAAI,UAAA,EAAYtH,UAA8B,CAAA;IAAA;IAE9EygB,wBAAyB,CAAA,CAAA;IAE/B,MAAMtR,cAAcC,cAAe,EAAA;IACnC,MAAM8vB,WAAW,CAAC5vB,cAAA;IACZ,MAAA4O,OAAA,GAAUtM,UAAW,CAAA1K,KAAA,CAAMyF,IAAI,CAAA;IACrC,MAAMyB,mBAAmBkB,cAAgB,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,cAAA,CAAA9M,GAAA;IAEnC,MAAA4b,eAAA,GAAkB5C,kBAAmB,CAAArO,kBAAA,EAAoB7F,UAAU,CAAA;IACnE,MAAA;MAACyU;IAAqB,CAAA,GAAIL,wBAAyB,CAAA;MACvDE,gBAAA;MACAN,iBAAiBqiB,oBAAwB,IAAA,IAAA,GAAAA,oBAAA,GAAA;IAAA,CAC1C,CAAA;IAED,MAAMwB,WAAc,GAAA36B,OAAA,CAClB,MAAG;MApET,IAAAnE,EAAA;MAoE6B,OAAA,CAAA,CAAAA,EAAA,GAAAiP,cAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,cAAA,CAAApO,MAAA,KAAhB,YAA0B,EAAC,EAAGrB,KAAMwD,CAAA,IAAMA,CAAE,CAAAsJ,IAAA,IAAQuR,OAAO,CAAA;IAAA,CAAA,EAClE,CAAC5O,cAAgB,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,cAAA,CAAApO,MAAA,EAAQgd,OAAO,CAAA,CAClC;IACA,MAAMkhB,iBAAiBD,WAAa,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,WAAA,CAAAlvB,IAAA;IAC9B,MAAAovB,eAAA,GAAA,CAAkBvB,uCAAW59B,IAAS,MAAA6G,aAAA;IAC5C,MAAMu4B,iBAAiBphB,OAAY,KAAA0f,YAAA;IACnC,MAAM2B,aAAaF,eAAmB,IAAAC,cAAA;IAEhC,MAAAE,kBAAA,GAAqBf,uBAAwB,CAAAC,SAAA,CAAUx3B,KAAK,CAAA;IAElE,MAAMu4B,kBAAqB,GAAA/6B,WAAA,CACzB,MACE66B,UACI,GAAA1B,cAAA,CAAe92B,aAAa,CAAA,GAC5BqrB,cAAcrrB,aAAe,EAAA;MAC3B,CAAC/L,cAAc,GAAGkjB,OAAA;MAClB,CAACjjB,gBAAgB,GAAG,KAAA;IAAA,CACrB,CAAA,EACP,CAACm3B,aAAA,EAAeyL,cAAgB,EAAA0B,UAAA,EAAYrhB,OAAO,CAAA,CACrD;IAEA,MAAMwhB,mBAAsB,GAAAh7B,WAAA,CACzBqL,WAAmC,IAAA;MAClC,IAAI,CAACmO,OAAW,IAAA,CAACkhB,kBAAkB,CAAChxB,gBAAA,IAAoB,CAACgQ,eAAiB,EAAA;QACxE;MACF;MACsBrC,qBAAA,CAAA;QACpBzU,UAAY,EAAA8W,eAAA;QACZhQ,gBAAA;QACAzB,IAAM,EAAAuR,OAAA;QACNnO;MAAA,CACD,CAAA;IACH,CAAA,EACA,CAACgM,qBAAA,EAAuBqC,eAAiB,EAAAF,OAAA,EAAS9P,kBAAkBgxB,cAAc,CAAA,CACpF;IAEA,MAAMO,mBAAsB,GAAAn7B,OAAA,CAC1B,MAAG;MAzGT,IAAAnE,EAAA;MA0GqB,OAAA,CAAA,CAAAA,EAAA,GAAA8+B,WAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,WAAA,CAAAvvB,YAAA,KAAb,IAA2B,GAAA,KAAA,CAAA,GAAAvP,EAAA,CAAAvC,MAAA,CAAQhB,CAAA,IAAMA,CAAE,CAAAgT,MAAA,IAAUhT,CAAE,CAAAgT,MAAA,MAAWX,WAAa,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,WAAA,CAAAzE,EAAA,CAAA,CAAA,KAAO,EAAC;IAAA,CAAA,EACzF,CAACy0B,WAAa,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,WAAA,CAAAvvB,YAAA,EAAcT,WAAW,CAAA,CACzC;IAEA,MAAMywB,kBAAqB,GAAAp7B,OAAA,CACzB,MAAG;MA/GT,IAAAnE,EAAA;MA+GyB,OAAA,CAAA,CAAAA,EAAA,GAAA8+B,WAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,WAAA,CAAAvvB,YAAA,KAAb,mBAA2B9R,MAAO,CAAChB,KAAM,CAACA,CAAA,CAAEgT,YAAW,EAAC;IAAA,CAAA,EAC9D,CAACqvB,2CAAavvB,YAAY,CAAA,CAC5B;IAEA,MAAMA,YAAe,GAAApL,OAAA,CACnB,MAAM,CAAC,GAAGm7B,mBAAA,EAAqB,GAAGC,kBAAkB,CAAA,EACpD,CAACD,qBAAqBC,kBAAkB,CAAA,CAC1C;IAEM,MAAAC,oBAAA,GAAuBr7B,QAAQ,MAAM;MAClC,OAAA,CAAAoL,YAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,YAAA,CAAcvT,MAAU,KAAAmjC,kBAAA,GAC3BhB,IAAK,CAAA;QACHtiC,IAAM,EAAA,OAAA;QACN6J,MAAMA,CAAA,KAAM,IAAA;QACZrD,KAAO,EAAA,kBAAA;QACP+C,QAAU,EAAA,CACR,IAAGmK,YAAc,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,YAAA,CAAA9N,GAAA,CAAKiO,eACpB+vB,eAAgB,CAAA;UACd/vB,WAAA;UACAgwB,WAAW12B,OAAQ,CAAA0G,WAAA,CAAYD,UAAUC,WAAY,CAAAD,MAAA,MAAWX,2CAAazE,EAAE,CAAA,CAAA;UAC/Eg1B,mBAAA;UACAp+B,MAAQ,EAAA49B,QAAA;UACRxB,aAAA,EAAe,CAAC,CAACA,aAAA;UACjBsB;QAAA,CACD,CAAA,CAAA,GAEHQ,kBAAA,CACF,CAAE1hC,OAAOuL,OAAO,CAAA;QAChB22B,QAAU,EAAA;MAAA,CACX,CACD,GAAA,KAAA,CAAA;IAAA,CACH,EAAA,CACDpwB,YAAA,EACAT,WAAa,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,WAAA,CAAAzE,EAAA,EACbg1B,mBAAA,EACAR,QAAA,EACAxB,aAAA,EACAsB,eAAA,EACAQ,kBAAA,CACD,CAAA;IAEK,MAAAS,kBAAA,GAAA,CAAqBrwB,6CAAcvT,MAAU,KAAA,CAAA;IAEnD,MAAM6jC,sBAAyB,GAAA17B,OAAA,CAC7B,MACEg6B,IAAK,CAAA;MACHtiC,IAAM,EAAA,QAAA;MACN6J,IAAM,EAAAo6B,YAAA;MACNz9B,KAAO,EAAA,qBAAA;MACPm8B,QAAU,EAAAY,kBAAA;MACVxqB,QAAU,EAAAsqB;IAAA,CACX,CAAA,EACH,CAACE,oBAAoBF,UAAU,CAAA,CACjC;IAEA,MAAMa,KAAQ,GAAA57B,OAAA,CACZ,MACEg6B,IAAK,CAAA;MACHtiC,IAAM,EAAA,OAAA;MACN6J,IAAM,EAAAqW,YAAA;MACN1Z,KAAO,EAAAmM,gBAAA;MACPpJ,QAAU,EAAA,CAACo6B,oBAAsB,EAAAb,eAAA,IAAmBkB,sBAAsB,CAAE,CAAApiC,MAAA,CACzE4S,CAA+D,IAAA,CAAC,CAACA,CACpE,CAAA;MACAsvB,QAAU,EAAA,KAAA;MACVlB,cAAgB,EAAA,IAAA;MAChBx9B,MAAA,EAAQ,CAAC09B,eAAA,IAAmB,CAACQ;IAAA,CAC9B,CAAA,EACH;IAAA;IAEEK,oBAAA,EACAK,sBAAA,EACAlB,eAAA,EACAQ,kBAAA,CACF,CACF;IAEA,MAAMa,WAAc,GAAA77B,OAAA,CAClB,MACEg6B,IAAK,CAAA;MACHtiC,IAAM,EAAA,QAAA;MACNoF,QAAQ,CAAC09B,eAAA;MACTj5B,IAAM,EAAAqW,YAAA;MACNyiB,QAAU,EAAAY,kBAAA;MACVX,cAAgB,EAAA,IAAA;MAChBp8B,KAAO,EAAAmM,gBAAA;MACPoG,QAAU,EAAAsqB;IAAA,CACX,CAAA,EACH,CAACP,eAAiB,EAAAS,kBAAA,EAAoBF,UAAU,CAAA,CAClD;IAGI,IAAAU,kBAAA,KAAuB,CAAK,IAAA,CAACT,kBAAoB,EAAA;MAC5C,OAAAa,WAAA;IACT;IAEO,OAAAD,KAAA;EACT;AACF,CAAA;AAEA,SAASN,gBAAgB54B,KAOtB,EAAA;EACD,MAAM;IAAC5F,MAAQ;IAAAy+B,SAAA;IAAWL,mBAAqB;IAAAV,eAAA;IAAiBjvB;EAAe,CAAA,GAAA7I,KAAA;EAC/E,OAAOs3B,IAAK,CAAA;IACVtiC,IAAM,EAAA,QAAA;IACN6J,IAAA,EAAMkwB,OAAQ,CAAAlmB,WAAA,CAAYhK,IAAI,CAAA;IAC9Bu6B,SAAA,EAAWP,YAAYhC,WAAc,GAAA,KAAA,CAAA;IACrCr7B,KAAA,EAAOqP,oBAAoBhC,WAAW,CAAA;IACtC8uB,QAAA,EAAUA,CAAA,KAAMa,mBAAA,CAAoB3vB,WAAW,CAAA;IAC/C3J,UAAU44B,eAAkB,GAAA,KAAA,GAAQ;MAACprB,MAAQ,EAAA,EAAA,CAAG1W,oBAAW,kCAAkC;IAAA,CAAA;IAC7FoE;EAAA,CACD,CAAA;AACH;AC3NO,SAASi/B,8BAA8Br5B,KAAgD,EAAA;EACtF,MAAA;IAACI,UAAY;IAAAtH;EAAc,CAAA,GAAAkH,KAAA;EAC3B,MAAAjE,KAAA,GAAQs6B,6BAA8B,CAAAj2B,UAAA,EAAYtH,UAAU,CAAA;EAClE,0BACGwgB,qBAAsB,CAAAzU,QAAA,EAAtB;IAA+B9I,KAAA;IAAewC,gBAAMA;EAAS,CAAA,CAAA;AAElE;ACRA,MAAM+6B,WAA8B,EAAC;AAErB,SAAAC,qBAAAA,CAAsBn5B,YAAoB6F,kBAAsC,EAAA;EAC9F,MAAMmC,iBAAiBN,uBAAwB,CAAA;IAAC1H,UAAY;IAAAtH,UAAA,EAAYmN;GAAmB,CAAA;EAErF,MAAAuzB,eAAA,GAAkB,CAAC,CAACpxB,cAAA;EAC1B,MAAMH,cAAcC,cAAe,EAAA;EACnC,MAAMsH,QAAQC,QAAS,EAAA;EACvB,MAAMlH,QAAQH,cAAgB,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,cAAA,CAAAG,KAAA;EACxB,MAAAkxB,aAAA,GAAgB5hC,OAAkD,SAAS,CAAA;EAEjFE,SAAA,CAAU,MAAM;IAnBlB,IAAAoB,EAAA;IAoBI,IAAI,CAACqgC,eAAiB,EAAA;MACpB;IACF;IAEI,IAAAC,aAAA,CAAczhC,YAAY,SAAW,EAAA;MACvC,MAAM0hC,gBAAgBj9B,MAAO,CAAAk9B,WAAA,CAC1B,CAAA,CAAAxgC,EAAA,GAAAsgC,aAAA,CAAczhC,OAAd,KAAA,IAAA,GAAAmB,EAAA,GAAyBmgC,QAAU,EAAA1+B,GAAA,CAAKqO,GAAA,IAAQ,CAACA,GAAA,CAAIF,IAAM,EAAAE,GAAG,CAAC,CAAA,CAClE;MACM,MAAA2wB,UAAA,GAAarxB,KACf,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,KAAA,CAAA3R,MAAA,CAAQ6R,IAAA,IAASA,IAAK,CAAAoxB,eAAA,MAAoB5xB,WAAa,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,WAAA,CAAAzE,EAAA,CAAA,CAAA,CACxD5M,MAAO,CAAC6R,IAAS,IAAA;QACV,MAAAqxB,QAAA,GAAWJ,aAAc,CAAAjxB,IAAA,CAAKM,IAAI,CAAA;QACxC,OAAQ,CAAC+wB,QAAY,IAAArxB,IAAA,CAAK+D,SAAW,EAACstB,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,QAAA,CAAUttB,UAAS/D,IAAK,CAAA+D,KAAA;MAAA,GAG/D5V,MAAO,CAAC6R,IAAS,IAAAA,IAAA,CAAK+D,SAASutB,OAAQ,CAAAC,UAAA,CAAW,IAAItwB,IAAA,CAAKjB,KAAK+D,KAAK,CAAA,EAAG,EAAE,CAAG,EAAA,eAAA,IAAI9C,KAAM,CAAA,CAAA,CAAA;MAE9EkwB,UAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,UAAA,CAAAj9B,OAAA,CAAS8L,IAAS,IAAA;QArCpC,IAAAtP,GAAA,EAAAG,EAAA;QAsCc,MAAAkC,KAAA,GAAA,CAAQrC,MAAAsP,IAAK,CAAAjN,KAAA,KAAL,OAAArC,GAAc,GAAA0R,mBAAA,CAAoBpC,KAAKI,WAAW,CAAA;QAC5D,IAAAJ,IAAA,CAAKiE,WAAW,OAAS,EAAA;UAC3B8C,KAAA,CAAMY,IAAK,CAAA;YACT5U,OAAO,UAAW,CAAAxF,MAAA,CAAAwF,KAAA,CAAA;YAClB6U,MAAQ,EAAA,OAAA;YACRC,WAAa,EAAA,sBAAA,CAAuBta,MAAK,CAAA,CAAAsD,EAAA,GAAAmP,IAAA,CAAAwG,OAAA,KAAL,IAAgB,GAAA3V,EAAA,GAAA,EAAA,CAAA;YACpD4uB,QAAU,EAAA,IAAA;YACV+R,QAAU,EAAA;UAAA,CACX,CAAA;QAAA,CACH,MAAA,IAAWxxB,IAAK,CAAAiE,MAAA,KAAW,SAAW,EAAA;UACpC8C,KAAA,CAAMY,IAAK,CAAA;YACT5U,OAAO,WAAY,CAAAxF,MAAA,CAAAwF,KAAA,CAAA;YACnB6U,MAAQ,EAAA,OAAA;YACRC,WAAa,EAAA,wBAAA;YACb4X,QAAU,EAAA;UAAA,CACX,CAAA;QAAA,CACH,MAAA,IAAWzf,IAAK,CAAAiE,MAAA,KAAW,SAAW,EAAA;UACpC8C,KAAA,CAAMY,IAAK,CAAA;YACT5U,OAAO,WAAY,CAAAxF,MAAA,CAAAwF,KAAA,CAAA;YACnB6U,MAAQ,EAAA,SAAA;YACRC,WAAa,EAAA,wBAAA;YACb4X,QAAU,EAAA;UAAA,CACX,CAAA;QAAA,CACH,MAAA,IAAWzf,IAAK,CAAAiE,MAAA,KAAW,SAAW,EAAA;UACpC8C,KAAA,CAAMY,IAAK,CAAA;YACT5U,OAAO,YAAa,CAAAxF,MAAA,CAAAwF,KAAA,CAAA;YACpB6U,MAAQ,EAAA,SAAA;YACRC,WAAa,EAAA,uBAAA;YACb4X,QAAU,EAAA;UAAA,CACX,CAAA;QACH;MAAA,CACF,CAAA;IACF;IACAuR,aAAA,CAAczhC,OAAU,GAAAuQ,KAAA;EAAA,GACvB,CAACA,KAAA,EAAOkxB,eAAejqB,KAAO,EAAAvH,WAAA,EAAauxB,eAAe,CAAC,CAAA;AAChE;AC/DO,SAASU,2BAA2Bl6B,KAAmB,EAAA;EAV9D,IAAA7G,EAAA;EAWM,IAAA,CAACN,OAAOmH,KAAM,CAAAlH,UAAA,EAAY,UAAU,CAAK,IAAAkH,KAAA,CAAMwD,OAAO,MAAQ,EAAA;IACzD,OAAA,eAAAvF,GAAA,CAACk8B,WAAa,EAAA;MAAA,GAAGn6B;IAAO,CAAA,CAAA;EACjC;EAEM,MAAAI,UAAA,GAAA,CAAcjH,EAAM,GAAA6G,KAAA,CAAAjE,KAAA,KAAN,IAAqB,GAAA,KAAA,CAAA,GAAA5C,EAAA,CAAAmC,GAAA;EACzC,IAAI,CAAC8E,UAAY,EAAA;IACR,OAAAJ,KAAA,CAAMod,cAAcpd,KAAK,CAAA;EAClC;EAEA,OAAQ,eAAA/B,GAAA,CAAAm8B,mBAAA,EAAA;IAAqB,GAAIp6B,KAAA;IAA4BI;EAAwB,CAAA,CAAA;AACvF;AAEA,SAASg6B,mBAAoBA,CAAAC,MAAA,EAAiE;EAAA,IAAjE;IAACj6B,UAAY;IAAA,GAAGJ;GAAiD,GAAAq6B,MAAA;EACtEd,qBAAA,CAAAn5B,UAAA,EAAYJ,MAAMlH,UAAU,CAAA;EAElD,sBACGmF,GAAA,CAAA4e,yBAAA,EAAA;IAA0BpZ,OAAS,EAAAzD,KAAA,CAAMyD;IACxClF,QAAC,iBAAAN,GAAA,CAAAo7B,6BAAA,EAAA;MAA8BvgC,UAAY,EAAAkH,KAAA,CAAMlH;MAAYsH,UAC1D;MAAA7B,QAAA,EAAAyB,KAAA,CAAMod,aAAc,CAAApd,KAAK;KAC5B;EACF,CAAA,CAAA;AAEJ;AAEA,SAASm6B,YAAYn6B,KAAmB,EAAA;EAChC,MAAA;IAACghB;GAAM,GAAIxS,QAAS,EAAA;EACpB,MAAA;IAAC6J;GAAO,GAAIpX,eAAgB,EAAA;EAC5B,MAAA+V,OAAA,GAAUtM,UAAW,CAAA1K,KAAA,CAAMyF,IAAI,CAAA;EAErC,0BACGsb,iBAAkB,EAAA;IAAAhY,IAAA,EAAM,EAAG,CAAA/S,MAAA,CAAAqiB,OAAA,EAAO,KAAIriB,MAAW,CAAAghB,OAAA,CAAA;IAAAgK,MAAA;IAAgB3iB,KAAO,EAAA;MAAC4yB,UAAU;IAAC,CAAA;IAClF1yB,QAAM,EAAAyB,KAAA,CAAAod,aAAA,CAAcpd,KAAK;EAC5B,CAAA,CAAA;AAEJ;ACrCgB,SAAAs6B,4BAAAA,CACdl6B,YACAtH,UACA,EAAA;EACA,OAAO,SAASyhC,6BAAgCA,CAAA,EAAA;IAC9C,OAAOn6B,UACL,GAAA,eAAAnC,GAAA,CAACu8B,sBAAuB,EAAA;MAAAp6B,UAAA;MAAwBtH;KAAwB,CACtE,GAAA,IAAA;EAAA,CACN;AACF;AAEA,SAAS0hC,uBAAuBx6B,KAA2D,EAAA;EACnF,MAAA;IAACoI;GAAkB,GAAAiuB,6BAAA,CACvBr2B,KAAM,CAAAI,UAAA,EACNJ,KAAM,CAAAlH,UAAA,CACR;EACM,MAAA2hC,WAAA,GAAcn9B,QAAQ,MAAM;IAxBpC,IAAAnE,EAAA,EAAAG,EAAA,EAAAqC,EAAA,EAAAof,EAAA;IAyBI,MAAM0f,gBAAcnhC,EAAgB,GAAA,CAAAH,EAAA,GAAAiP,cAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,cAAA,CAAAG,KAAA,KAAhB,IAChB,GAAA,KAAA,CAAA,GAAApP,EAAA,CAAAvC,MAAA,CAAQqS,GAAQ,IAAA,CAACA,GAAI,CAAAuD,KAAA,IAAS,CAACvD,GAAI,CAAAyD,MAAA,CAAA,KADnB,IAEhB,GAAA,KAAA,CAAA,GAAApT,EAAA,CAAAsM,OAAA,CAASqD,GAAK,IAAA;MA3BtB9P,IAAAA,GAAAA;MA2ByB,OAAA,CAAAA,GAAA,GAAA8P,GAAA,CAAI7H,QAAJ,KAAA,IAAA,GAAAjI,MAAgB,EAAC;IAAA,CAAA,CAAA,CACnCR,KAAMwD,CAAA,IAAMA,CAAE,CAAAsN,OAAA,uBAAeC,IAAK,CAAA,CAAA,CAAEC,OAAQ,CAAA,CAAA,GAAI,IAAID,IAAK,CAAAvN,CAAA,CAAEsN,OAAO,CAAA,CAAEE,SAAY,GAAA,GAAA,CAAA;IACnF,IAAI8wB,YAAa,EAAA;MACR,OAAAxgB,UAAA,CAAWwgB,YAAa,EAAA,EAAE,CAAA;IACnC;IACA,MAAMC,MAAS,GAAA,CAAA3f,EAAA,GAAA,CAAApf,EAAA,GAAAyM,cAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,cAAA,CAAgBG,KAAhB,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA5M,EAAA,CACX/E,MAAO,CAACqS,GAAQ,IAAA,CAACA,GAAI,CAAAuD,KAAA,IAAS,CAACvD,GAAA,CAAIyD,YADxB,IAEX,GAAA,KAAA,CAAA,GAAAqO,EAAA,CAAApiB,IAAA,CAAMwD,CAAA,IAAMA,CAAE,CAAAsN,OAAA,IAAe,eAAA,IAAAC,IAAA,CAAA,CAAO,CAAAC,OAAA,CAAA,CAAY,GAAA,IAAID,IAAK,CAAAvN,CAAA,CAAEsN,OAAO,CAAA,CAAEE,SAAY,GAAA,GAAA,CAAA;IACpF,OAAO+wB,MACH,GAAAzgB,UAAA,CACE;MACExQ,SAASixB,MAAO,CAAAjxB,OAAA;MAChBhE,IAAM,EAAAzR,eAAA;MACN+U,MAAM2xB,MAAO,CAAA3xB,IAAA;MACbxN,KAAO,EAAA5H;IACT,CAAA,EACA,EAEF,CAAA,GAAA,KAAA,CAAA;EAAA,CACH,EAAA,CAACyU,cAAgB,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,cAAA,CAAAG,KAAK,CAAC,CAAA;EAGxB,OAAA,eAAAtK,GAAA,CAACC;IACCK,QAAC,EAAA,eAAAN,GAAA,CAAAmB,IAAA,EAAA;MAAKyP,MAAM,CAAG;MAAAhM,OAAA,EAAQ;MACrBtE,QAAC,EAAA,eAAAN,GAAA,CAAAmB,IAAA,EAAA;QAAKC,KAAK,CAAG;QAAAsD,KAAA,EAAO;QAClBpE,QAAe,EAAAk8B,WAAA,IAAA,eAAAx8B,GAAA,CAAC8d;UAAgB3a,QAAU,EAAAq5B;QAAa,CAAA;MAC1D,CAAA;IACF,CAAA;EACF,CAAA,CAAA;AAEJ;AC3Ba,MAAAE,MAAA,GAASC,YAAwC,CAAC7qB,MAAW,IAAA;EAClE,MAAA8qB,kBAAA,GAAqB9qB,0BAAU,CAAA,CAAC;EAC/B,OAAA;IACL/W,IAAM,EAAAyO,WAAA;IAENjN,MAAQ,EAAA;MACN6C,KAAO,EAAA84B;IACT,CAAA;IAEAhyB,QAAU,EAAA;MACR22B,UAAA,EAAYA,CAACC,IAAA,EAAM7pB,OAAY,KAAA;QAC7B,MAAM8pB,SAAY,GAAA9pB,OAAA,CAAQ1W,MAAO,CAAAK,GAAA,CAAIqW,QAAQ7Q,YAAY,CAAA;QACrD,IAAA26B,SAAA,IAAa3hC,qBAAsB,CAAA2hC,SAAS,CAAG,EAAA;UAC1C,OAAA,CAAC,GAAGD,IAAA,EAAM9hB,eAAe,CAAA;QAClC;QACO,OAAA8hB,IAAA;MACT,CAAA;MACAE,qBAAA,EAAwBF,IAAS,IAAA;QACxB,OAAA,CAAC,GAAGA,IAAA,EAAMlD,kBAAkB,CAAA;MACrC,CAAA;MACAqD,yBAAyBA,CAACH,IAAA,EAAAI,MAAA,KAA2C;QAAA,IAArC;UAAC/6B,UAAY;UAAA5F,MAAA;UAAQ1B;SAAgB,GAAAqiC,MAAA;QAC7D,MAAAH,SAAA,GAAYxgC,MAAO,CAAAK,GAAA,CAAI/B,UAAU,CAAA;QACvC,OAAO,CAAC,GAAGiiC,IAAA,EAAMT,4BAA6B,CAAAl6B,UAAA,EAAY46B,SAAS,CAAC,CAAA;MACtE;IACF,CAAA;IAEAI,MAAQ,EAAA;MACNjJ,UAAY,EAAA;QACVkJ,MAAA,EAAQ,SAASC,MAAAA,CAAOt7B,KAAO,EAAA;UAC7B,OAAQ,eAAA/B,GAAA,CAAA4rB,YAAA,EAAA;YAAc,GAAG7pB,KAAA;YAAO+P,QAAQ8qB;UAAoB,CAAA,CAAA;QAC9D;MACF;IACF,CAAA;IAEAU,IAAM,EAAA;MACJpJ,UAAY,EAAA;QACVC,KAAO,EAAA8H,0BAAA;QACPjgC,KAAO,EAAAijB,kBAAA;QACPmU,IAAM,EAAAtG,UAAA;QACNxhB,KAAO,EAAAmhB,eAAA;QACP8Q,WAAa,EAAAjK;MACf;IACF,CAAA;IAEAkK,OAAS,EAAA,CACPb,YAAa,CAAA;MACX5hC,IAAA,EAAM,GAAGhD,MAAW,CAAAyR,WAAA,EAAA,mBAAA,CAAA;MACpB8zB,MAAM;QAACpJ,UAAA,EAAY;UAACC,KAAA,EAAOjI;;MAAe;IAAA,CAC3C,CAAE,CAAA,CAAA,EAEHyQ,YAAa,CAAA;MACX5hC,IAAA,EAAM,GAAGhD,MAAW,CAAAyR,WAAA,EAAA,mBAAA,CAAA;MACpB8zB,IAAM,EAAA;QACJpJ,UAAY,EAAA;UACVC,KAAA,EAAQpyB,KAAU,IAAA;YACV,MAAA;cAAClH;YAAc,CAAA,GAAAkH,KAAA;YAEjB,IAAA/G,OAAA,CAAQH,UAAU,CAAG,EAAA;cAChB,OAAA,eAAAmF,GAAA,CAAC+4B,oBAAsB,EAAA;gBAAA,GAAGh3B;cAAO,CAAA,CAAA;YAC1C;YACO,OAAAA,KAAA,CAAMod,cAAcpd,KAAK,CAAA;UAClC;QACF;MACF;IAAA,CACD,CAAE,CAAA,CAAA;EACL,CACF;AACF,CAAC,CAAA;","x_google_ignoreList":[30,70]}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/types.ts","../src/_lib/fixedListenQuery.ts","../src/_lib/useListeningQuery.ts","../src/schemas/serialize/schemaUtils.ts","../src/helpers/typeUtils.ts","../src/helpers/assistSupported.ts","../src/schemas/serialize/serializeSchema.ts","../src/schemas/serialize/SchemTypeTool.tsx","../src/assistInspector/constants.ts","../src/_lib/form/DocumentForm.tsx","../src/assistDocument/components/SelectedFieldContext.tsx","../../node_modules/lodash/_arrayPush.js","../../node_modules/lodash/_freeGlobal.js","../../node_modules/lodash/_root.js","../../node_modules/lodash/_Symbol.js","../../node_modules/lodash/_getRawTag.js","../../node_modules/lodash/_objectToString.js","../../node_modules/lodash/_baseGetTag.js","../../node_modules/lodash/isObjectLike.js","../../node_modules/lodash/_baseIsArguments.js","../../node_modules/lodash/isArguments.js","../../node_modules/lodash/isArray.js","../../node_modules/lodash/_isFlattenable.js","../../node_modules/lodash/_baseFlatten.js","../../node_modules/lodash/flatten.js","../../node_modules/lodash/compact.js","../../node_modules/lodash/_listCacheClear.js","../../node_modules/lodash/eq.js","../../node_modules/lodash/_assocIndexOf.js","../../node_modules/lodash/_listCacheDelete.js","../../node_modules/lodash/_listCacheGet.js","../../node_modules/lodash/_listCacheHas.js","../../node_modules/lodash/_listCacheSet.js","../../node_modules/lodash/_ListCache.js","../../node_modules/lodash/_stackClear.js","../../node_modules/lodash/_stackDelete.js","../../node_modules/lodash/_stackGet.js","../../node_modules/lodash/_stackHas.js","../../node_modules/lodash/isObject.js","../../node_modules/lodash/isFunction.js","../../node_modules/lodash/_coreJsData.js","../../node_modules/lodash/_isMasked.js","../../node_modules/lodash/_toSource.js","../../node_modules/lodash/_baseIsNative.js","../../node_modules/lodash/_getValue.js","../../node_modules/lodash/_getNative.js","../../node_modules/lodash/_Map.js","../../node_modules/lodash/_nativeCreate.js","../../node_modules/lodash/_hashClear.js","../../node_modules/lodash/_hashDelete.js","../../node_modules/lodash/_hashGet.js","../../node_modules/lodash/_hashHas.js","../../node_modules/lodash/_hashSet.js","../../node_modules/lodash/_Hash.js","../../node_modules/lodash/_mapCacheClear.js","../../node_modules/lodash/_isKeyable.js","../../node_modules/lodash/_getMapData.js","../../node_modules/lodash/_mapCacheDelete.js","../../node_modules/lodash/_mapCacheGet.js","../../node_modules/lodash/_mapCacheHas.js","../../node_modules/lodash/_mapCacheSet.js","../../node_modules/lodash/_MapCache.js","../../node_modules/lodash/_stackSet.js","../../node_modules/lodash/_Stack.js","../../node_modules/lodash/_setCacheAdd.js","../../node_modules/lodash/_setCacheHas.js","../../node_modules/lodash/_SetCache.js","../../node_modules/lodash/stubFalse.js","../../node_modules/lodash/isBuffer.js","../../node_modules/lodash/_nodeUtil.js","../../node_modules/lodash/_DataView.js","../../node_modules/lodash/_Promise.js","../../node_modules/lodash/_Set.js","../../node_modules/lodash/_WeakMap.js","../../node_modules/lodash/_getTag.js","../../node_modules/ms/index.js","../../node_modules/@sanity/mutator/node_modules/debug/src/common.js","../../node_modules/@sanity/mutator/node_modules/debug/src/browser.js","../../node_modules/has-flag/index.js","../../node_modules/supports-color/index.js","../../node_modules/@sanity/mutator/node_modules/debug/src/node.js","../../node_modules/@sanity/mutator/node_modules/debug/src/index.js","../../node_modules/@sanity/mutator/lib/index.esm.js","../src/assistInspector/helpers.ts","../src/assistDocument/hooks/useDocumentState.ts","../src/helpers/ids.ts","../src/constants.ts","../src/assistDocument/hooks/useStudioAssistDocument.ts","../src/components/TimeAgo.tsx","../src/helpers/misc.ts","../src/assistInspector/InstructionTaskHistoryButton.tsx","../src/useApiClient.ts","../src/assistLayout/AiAssistanceConfigContext.tsx","../src/assistLayout/RunInstructionProvider.tsx","../src/assistDocument/RequestRunInstructionProvider.tsx","../src/onboarding/InspectorOnboarding.tsx","../src/onboarding/onboardingStore.ts","../src/assistDocument/components/instruction/BackToInstructionsLink.tsx","../src/assistDocument/components/AssistDocumentForm.tsx","../src/assistInspector/FieldAutocomplete.tsx","../src/assistInspector/AssistInspector.tsx","../src/assistInspector/index.ts","../src/assistDocument/AssistDocumentContext.tsx","../src/presence/useAssistPresence.ts","../src/components/FadeInContent.tsx","../../node_modules/@sanity/color/dist/index.js","../src/presence/AssistAvatar.tsx","../src/presence/AiFieldPresence.tsx","../src/components/AssistFeatureBadge.tsx","../src/onboarding/FieldActionsOnboarding.tsx","../src/onboarding/FirstAssistedPathProvider.tsx","../src/assistFormComponents/AssistField.tsx","../src/_lib/connector/ConnectorsStoreContext.ts","../src/_lib/connector/useConnectorsStore.ts","../src/_lib/connector/helpers.ts","../src/_lib/connector/useRegionRects.ts","../src/_lib/connector/ConnectorRegion.tsx","../src/_lib/connector/ConnectFromRegion.tsx","../src/_lib/connector/ConnectorsStore.ts","../src/_lib/connector/ConnectorsProvider.tsx","../src/_lib/connector/mapConnectorToLine.ts","../src/assistConnectors/draw/arrowPath.ts","../src/assistConnectors/draw/connectorPath.ts","../src/assistConnectors/ConnectorPath.tsx","../src/assistConnectors/AssistConnectorsOverlay.tsx","../src/legacy-types.ts","../src/assistLayout/AlphaMigration.tsx","../src/assistLayout/AssistLayout.tsx","../src/components/SafeValueInput.tsx","../src/assistFormComponents/AssistFormBlock.tsx","../src/assistFormComponents/AssistItem.tsx","../src/assistDocument/components/helpers.ts","../src/assistDocument/components/instruction/InstructionInput.tsx","../src/assistDocument/components/generic/HiddenFieldTitle.tsx","../src/assistDocument/components/instruction/appearance/InstructionVisibility.tsx","../src/assistDocument/components/instruction/appearance/IconInput.tsx","../src/assistDocument/components/instruction/FieldRefInput.tsx","../src/assistDocument/components/InstructionsArrayInput.tsx","../src/assistFormComponents/AssistInlineFormBlock.tsx","../src/assistDocument/components/FieldRefPreview.tsx","../src/components/HideReferenceChangedBannerInput.tsx","../src/schemas/contextDocumentSchema.tsx","../../node_modules/get-random-values-esm/index.mjs","../src/_lib/randomKey.ts","../src/assistDocument/components/instruction/PromptInput.tsx","../src/assistDocument/components/InstructionsArrayField.tsx","../src/schemas/assistDocumentSchema.tsx","../src/schemas/index.ts","../src/helpers/useAssistSupported.ts","../src/assistDocument/hooks/useAssistDocumentContextValue.tsx","../src/fieldActions/PrivateIcon.tsx","../src/components/ImageContext.tsx","../src/fieldActions/generateCaptionActions.tsx","../src/fieldActions/assistFieldActions.tsx","../src/assistDocument/AssistDocumentContextProvider.tsx","../src/assistDocument/hooks/useInstructionToaster.tsx","../src/assistDocument/AssistDocumentInput.tsx","../src/presence/AssistDocumentPresence.tsx","../src/plugin.tsx"],"sourcesContent":["import {SanityDocument, ValidationMarker} from 'sanity'\nimport {PortableTextBlock, PortableTextMarkDefinition, PortableTextSpan} from '@portabletext/types'\n\n//id prefixes\nexport const assistDocumentIdPrefix = 'sanity.assist.schemaType.'\nexport const assistDocumentStatusIdPrefix = 'sanity.assist.status.'\nexport const assistSchemaIdPrefix = 'sanity.assist.schema.'\n\n// type names\nexport const assistDocumentTypeName = 'sanity.assist.schemaType.annotations' as const\nexport const assistFieldTypeName = 'sanity.assist.schemaType.field' as const\nexport const instructionTypeName = 'sanity.assist.instruction' as const\nexport const promptTypeName = 'sanity.assist.instruction.prompt' as const\n\nexport const userInputTypeName = 'sanity.assist.instruction.userInput' as const\nexport const instructionContextTypeName = 'sanity.assist.instruction.context' as const\nexport const fieldReferenceTypeName = 'sanity.assist.instruction.fieldRef' as const\n\n// user-facing type. Intentionally does not have sanity. prefix\nexport const contextDocumentTypeName = 'assist.instruction.context' as const\n\nexport const assistTasksStatusTypeName = 'sanity.assist.task.status' as const\nexport const instructionTaskTypeName = 'sanity.assist.instructionTask' as const\nexport const fieldPresenceTypeName = 'sanity.assist.instructionTask.presence' as const\n\nexport const assistSerializedTypeName = 'sanity.assist.serialized.type' as const\nexport const assistSerializedFieldTypeName = 'sanity.assist.serialized.field' as const\n\n//url params\nexport const inspectParam = 'inspect' as const\nexport const fieldPathParam = 'pathKey' as const\nexport const instructionParam = 'instruction' as const\n\n// other constants\nexport const documentRootKey = '<document>'\n\nexport interface SerializedSchemaMember {\n _type?: typeof assistSerializedFieldTypeName\n type: string\n name: string\n title?: string\n values?: string[]\n of?: SerializedSchemaMember[]\n to?: {type: string}[]\n}\n\nexport interface SerializedSchemaType {\n _type?: typeof assistSerializedTypeName\n _id?: string\n type: string\n title?: string\n name?: string\n fields?: SerializedSchemaMember[]\n of?: {type: string}[]\n to?: {type: string}[]\n options?: {\n imagePromptField?: string\n }\n}\n\nexport interface AssistDocument extends SanityDocument {\n fields?: AssistField[]\n instructions?: StudioInstruction[]\n}\n\nexport interface StudioAssistDocument {\n _id: string\n _type: typeof assistDocumentTypeName\n fields?: StudioAssistField[]\n\n // added\n tasks?: InstructionTask[]\n}\nexport interface AssistField {\n _key: string\n _type: typeof assistFieldTypeName\n path?: string\n instructions?: StudioInstruction[]\n}\n\nexport interface StudioAssistField {\n _key: string\n path?: string\n instructions?: StudioInstruction[]\n\n // added\n tasks?: InstructionTask[]\n}\n\nexport interface FieldRef extends PortableTextMarkDefinition {\n _type: typeof fieldReferenceTypeName\n path?: string\n}\n\nexport interface ContextBlock {\n _type: typeof instructionContextTypeName\n reference?: {\n _type: 'reference'\n _ref?: string\n }\n}\n\nexport interface UserInputBlock {\n _type: typeof userInputTypeName\n _key: string\n message?: string\n description?: string\n}\n\nexport type InlinePromptBlock = PortableTextSpan | FieldRef | UserInputBlock | ContextBlock\nexport type PromptTextBlock = PortableTextBlock<never, InlinePromptBlock, 'normal', never>\n\nexport type PromptBlock = PromptTextBlock | FieldRef | ContextBlock | UserInputBlock\n\nexport interface AiPresence {\n _key: string\n _type: typeof fieldPresenceTypeName\n path?: string\n started?: string\n}\n\nexport type TaskEndedReason = 'success' | 'error' | 'aborted' | 'timeout'\n\nexport interface InstructionTask {\n _key: string\n _type: typeof instructionTaskTypeName\n instructionKey?: string\n title?: string\n path?: string\n started?: string\n updated?: string\n ended?: string\n message?: string\n reason?: TaskEndedReason\n presence?: AiPresence[]\n startedByUserId?: string\n\n //added by studio\n // eslint-disable-next-line no-use-before-define\n instruction?: StudioInstruction\n}\n\nexport interface StudioInstruction {\n _key: string\n _type: typeof instructionTypeName\n prompt?: PromptBlock[]\n\n icon?: string\n userId?: string\n title?: string\n placeholder?: string\n\n //added after query / synthetic fields\n tasks?: InstructionTask[]\n validation?: ValidationMarker[]\n}\n\nexport interface AssistTasksStatus {\n _id: string\n _type: typeof assistTasksStatusTypeName\n tasks?: InstructionTask[]\n}\n\nexport interface AssistInspectorRouteParams {\n [inspectParam]?: string\n [fieldPathParam]?: string\n [instructionParam]?: string\n}\n","import {SanityClient} from '@sanity/client'\nimport {defer, delay, merge, Observable, of, partition, switchMap, throwError} from 'rxjs'\nimport {filter, mergeMap, share, take} from 'rxjs/operators'\nimport {exhaustMapToWithTrailing} from 'rxjs-exhaustmap-with-trailing'\nimport {MutationEvent, ReconnectEvent, WelcomeEvent} from 'sanity'\n\n/** @internal */\nexport type ListenQueryParams = Record<string, string | number | boolean | string[]>\n\n/** @beta */\nexport interface ListenQueryOptions {\n tag?: string\n apiVersion?: string\n throttleTime?: number\n transitions?: ('update' | 'appear' | 'disappear')[]\n}\n\nconst fetch = (\n client: SanityClient,\n query: string,\n params: ListenQueryParams,\n options: ListenQueryOptions\n) =>\n defer(() =>\n // getVersionedClient(options.apiVersion)\n client.observable.fetch(query, params, {\n tag: options.tag,\n filterResponse: true,\n })\n )\n\nconst listen = (\n client: SanityClient,\n query: string,\n params: ListenQueryParams,\n options: ListenQueryOptions\n) =>\n defer(() =>\n // getVersionedClient(options.apiVersion)\n client.listen(query, params, {\n events: ['welcome', 'mutation', 'reconnect'],\n includeResult: false,\n visibility: 'query',\n tag: options.tag,\n })\n ) as Observable<ReconnectEvent | WelcomeEvent | MutationEvent>\n\nfunction isWelcomeEvent(\n event: MutationEvent | ReconnectEvent | WelcomeEvent\n): event is WelcomeEvent {\n return event.type === 'welcome'\n}\n\n/** @internal */\nexport const listenQuery = (\n client: SanityClient,\n query: string | {fetch: string; listen: string},\n params: ListenQueryParams = {},\n options: ListenQueryOptions = {}\n) => {\n const fetchQuery = typeof query === 'string' ? query : query.fetch\n const listenerQuery = typeof query === 'string' ? query : query.listen\n\n const fetchOnce$ = fetch(client, fetchQuery, params, options)\n\n const events$ = listen(client, listenerQuery, params, options).pipe(\n mergeMap((ev, i) => {\n const isFirst = i === 0\n if (isFirst && !isWelcomeEvent(ev)) {\n // if the first event is not welcome, it is most likely a reconnect and\n // if it's not a reconnect something is very wrong\n return throwError(\n new Error(\n ev.type === 'reconnect'\n ? 'Could not establish EventSource connection'\n : `Received unexpected type of first event \"${ev.type}\"`\n )\n )\n }\n return of(ev)\n }),\n share()\n )\n\n const [welcome$, mutationAndReconnect$] = partition(events$, isWelcomeEvent)\n const isRelevantEvent = (event: MutationEvent | ReconnectEvent | WelcomeEvent): boolean => {\n if (!options.transitions || event.type !== 'mutation') {\n return true\n }\n\n return options.transitions.includes(event.transition)\n }\n\n return merge(\n welcome$.pipe(take(1)),\n mutationAndReconnect$.pipe(\n filter(isRelevantEvent),\n switchMap((event) => merge(of(event), of(event).pipe(delay(options.throttleTime || 1000))))\n )\n ).pipe(exhaustMapToWithTrailing(fetchOnce$))\n}\n","import {useEffect, useRef, useState} from 'react'\nimport {catchError, distinctUntilChanged} from 'rxjs/operators'\nimport isEqual from 'react-fast-compare'\nimport {ListenQueryOptions, useClient} from 'sanity'\nimport {listenQuery} from './fixedListenQuery'\n\ntype Params = Record<string, string | number | boolean | string[]>\n\ntype ReturnShape<T> = {\n loading: boolean\n error: boolean\n data: T | null\n}\n\ntype Observable = {\n unsubscribe: () => void\n}\n\nconst DEFAULT_PARAMS = {}\nconst DEFAULT_OPTIONS: ListenQueryOptions = {apiVersion: `v2022-05-09`}\n\nexport function useListeningQuery<T>(\n query: string,\n params: Params = DEFAULT_PARAMS,\n options: ListenQueryOptions = DEFAULT_OPTIONS\n): ReturnShape<T> {\n const [loading, setLoading] = useState(true)\n const [error, setError] = useState(false)\n const [data, setData] = useState<T | null>(null)\n const subscription = useRef<null | Observable>(null)\n\n const client = useClient({apiVersion: `v2022-05-09`})\n\n useEffect(() => {\n if (query) {\n subscription.current = listenQuery(client, query, params, options)\n .pipe(\n distinctUntilChanged(isEqual),\n catchError((err) => {\n console.error(err)\n setError(err)\n setLoading(false)\n setData(null)\n\n return err\n })\n )\n .subscribe((documents) => {\n setData((current) => (isEqual(current, documents) ? current : documents))\n setLoading(false)\n setError(false)\n })\n }\n\n return () => {\n return subscription.current ? subscription.current.unsubscribe() : undefined\n }\n }, [query, params, options, client])\n\n return {loading, error, data}\n}\n","import {assistSerializedFieldTypeName, assistSerializedTypeName} from '../../types'\n\nexport const hiddenTypes = [\n 'any',\n 'array',\n 'block',\n 'boolean',\n 'crossDatasetReference',\n 'date',\n 'datetime',\n 'document',\n 'email',\n 'file',\n 'image',\n 'number',\n 'object',\n 'reference',\n 'span',\n 'string',\n 'text',\n 'url',\n 'slug',\n 'geopoint',\n 'sanity.assetSourceData',\n 'sanity.imageAsset',\n 'sanity.fileAsset',\n 'sanity.imageCrop',\n 'sanity.imageHotspot',\n 'sanity.imageMetadata',\n 'sanity.imageDimensions',\n 'sanity.imagePalette',\n 'sanity.imagePaletteSwatch',\n\n assistSerializedTypeName,\n assistSerializedFieldTypeName,\n 'sanity-agent.job.document',\n]\n","import {ArraySchemaType, ImageOptions, SchemaType} from 'sanity'\n\nexport function isPortableTextArray(type: ArraySchemaType) {\n return type.of.find((t) => isType(t, 'block'))\n}\n\nexport function isType(schemaType: SchemaType, typeName: string): boolean {\n if (schemaType.name === typeName) {\n return true\n }\n if (!schemaType.type) {\n return false\n }\n return isType(schemaType.type, typeName)\n}\n\nexport function isImage(schemaType: SchemaType) {\n return isType(schemaType, 'image')\n}\n\nexport function getCaptionFieldOption(schemaType: SchemaType | undefined): string | undefined {\n if (!schemaType) {\n return undefined\n }\n const captionField = (schemaType.options as ImageOptions)?.captionField\n if (captionField) {\n return captionField\n }\n return getCaptionFieldOption(schemaType.type)\n}\n","import {SchemaType} from 'sanity'\nimport {AssistOptions} from '../schemas/typeDefExtensions'\nimport {isType} from './typeUtils'\n\nexport function isSchemaAssistEnabled(type: SchemaType) {\n return !(type.options as AssistOptions | undefined)?.aiWritingAssistance?.exclude\n}\n\nexport function isAssistSupported(type: SchemaType, allowReadonlyHidden = false) {\n if (!isSchemaAssistEnabled(type)) {\n return false\n }\n\n if (isDisabled(type, allowReadonlyHidden)) {\n return false\n }\n\n if (type.jsonType === 'array') {\n const unsupportedArray = type.of.every((t) => isDisabled(t, allowReadonlyHidden))\n return !unsupportedArray\n }\n\n if (type.jsonType === 'object') {\n const unsupportedObject = type.fields.every((field) =>\n isDisabled(field.type, allowReadonlyHidden)\n )\n return !unsupportedObject\n }\n return true\n}\n\nfunction isDisabled(type: SchemaType, allowReadonlyHidden: boolean) {\n const readonlyHidden = !!type.readOnly || !!type.hidden\n return (\n !isSchemaAssistEnabled(type) ||\n isUnsupportedType(type) ||\n (!allowReadonlyHidden && readonlyHidden)\n )\n}\n\nfunction isUnsupportedType(type: SchemaType) {\n return (\n type.jsonType === 'number' ||\n type.name === 'sanity.imageCrop' ||\n type.name === 'sanity.imageHotspot' ||\n isType(type, 'reference') ||\n isType(type, 'crossDatasetReference') ||\n isType(type, 'slug') ||\n isType(type, 'url') ||\n isType(type, 'date') ||\n isType(type, 'datetime') ||\n isType(type, 'file')\n )\n}\n","import {\n ArraySchemaType,\n ImageOptions,\n ObjectSchemaType,\n ReferenceSchemaType,\n Schema,\n SchemaType,\n typed,\n} from 'sanity'\nimport {\n assistSerializedFieldTypeName,\n assistSerializedTypeName,\n SerializedSchemaMember,\n SerializedSchemaType,\n assistSchemaIdPrefix,\n} from '../../types'\nimport {hiddenTypes} from './schemaUtils'\nimport {isAssistSupported} from '../../helpers/assistSupported'\n\ninterface Options {\n leanFormat?: boolean\n}\n\nconst inlineTypes = ['document', 'object', 'image', 'file']\n\nexport function serializeSchema(schema: Schema, options?: Options): SerializedSchemaType[] {\n const list = schema\n .getTypeNames()\n .filter((t) => !(hiddenTypes.includes(t) || t.startsWith('sanity.')))\n .map((t) => schema.get(t))\n .filter((t): t is SchemaType => !!t)\n .filter((t) => !t.hidden && !t.readOnly)\n .map((t) => getSchemaStub(t, schema, options))\n .filter((t) => {\n if ('to' in t && t.to && !t.to.length) {\n return false\n }\n if ('of' in t && t.of && !t.of.length) {\n return false\n }\n if ('fields' in t && t.fields && !t.fields.length) {\n return false\n }\n return true\n })\n list.sort((a, b) => (a?.name ?? '').localeCompare(b?.name ?? ''))\n return list\n}\n\nfunction getSchemaStub(\n schemaType: SchemaType,\n schema: Schema,\n options?: Options\n): SerializedSchemaType {\n if (!schemaType.type?.name) {\n console.error('Missing type name', schemaType.type)\n throw new Error('Type is missing name!')\n }\n const baseSchema: SerializedSchemaType = {\n // we dont need type or id when we send using POST, so leave these out to save bandwidth\n ...(options?.leanFormat\n ? {}\n : {_id: `${assistSchemaIdPrefix}${schemaType.name}`, _type: assistSerializedTypeName}),\n name: schemaType.name,\n title: schemaType.title,\n type: schemaType.type.name,\n ...getBaseFields(schema, schemaType, schemaType.type.name, options),\n }\n\n return removeUndef(baseSchema)\n}\n\nfunction getBaseFields(\n schema: Schema,\n type: SchemaType,\n typeName: string,\n options: Options | undefined\n) {\n const imagePromptField = (type.options as ImageOptions)?.imagePromptField\n return removeUndef({\n options: imagePromptField\n ? {\n imagePromptField: imagePromptField,\n }\n : undefined,\n values:\n type.jsonType === 'string' && type?.options?.list\n ? type?.options?.list.map((v) => (typeof v === 'string' ? v : v.value ?? `${v.title}`))\n : undefined,\n of: 'of' in type && typeName === 'array' ? arrayOf(type, schema, options) : undefined,\n to:\n 'to' in type && typeName === 'reference'\n ? refToTypeNames(type as ReferenceSchemaType)\n : undefined,\n fields:\n 'fields' in type && inlineTypes.includes(typeName)\n ? serializeFields(schema, type, options)\n : undefined,\n })\n}\n\nfunction serializeFields(\n schema: Schema,\n schemaType: ObjectSchemaType,\n options: Options | undefined\n) {\n return schemaType.fields\n .filter((f) => !['sanity.imageHotspot', 'sanity.imageCrop'].includes(f.type?.name ?? ''))\n .filter((f) => isAssistSupported(f.type))\n .filter((f) => !f.type.hidden && !f.type.readOnly)\n .map((field) => serializeMember(schema, field.type, field.name, options))\n}\n\nfunction serializeMember(\n schema: Schema,\n type: SchemaType,\n name: string,\n options: Options | undefined\n): SerializedSchemaMember {\n const typeNameExists = !!schema.get(type?.name)\n const typeName = typeNameExists ? type.name : type.type?.name ?? ''\n return removeUndef({\n ...(options?.leanFormat ? {} : {_type: assistSerializedFieldTypeName}),\n name: name,\n type: typeName,\n title: type.title,\n ...getBaseFields(schema, type, typeName, options),\n })\n}\n\nfunction arrayOf(\n arrayType: ArraySchemaType,\n schema: Schema,\n options: Options | undefined\n): SerializedSchemaMember[] {\n return arrayType.of\n .filter((type) => isAssistSupported(type))\n .map((t) => {\n return serializeMember(schema, t, t.name, options)\n })\n}\n\nfunction refToTypeNames(type: ReferenceSchemaType) {\n return type.to.map((t) => ({\n type: typed<string>(t.name),\n }))\n}\n\nfunction removeUndef<T extends Record<string, any>>(obj: T): T {\n Object.keys(obj).forEach((key) => (obj[key] === undefined ? delete obj[key] : {}))\n return obj\n}\n","import {useClient, useSchema} from 'sanity'\nimport {Box, Button, Card, Flex, Label, Spinner, Stack} from '@sanity/ui'\nimport {useCallback, useMemo, useState} from 'react'\nimport {assistSerializedTypeName, SerializedSchemaType} from '../../types'\nimport {SyncIcon} from '@sanity/icons'\nimport {useListeningQuery} from '../../_lib/useListeningQuery'\nimport {serializeSchema} from './serializeSchema'\n\nconst NO_DATA: SerializedSchemaType[] = []\n\nconst defaultTitle = 'Sync schema'\n\nexport function SchemaTypeTool() {\n const schema = useSchema()\n const client = useClient({apiVersion: '2023-01-01'})\n const [saving, setSaving] = useState(false)\n const [syncTitle, setSyncTitle] = useState(defaultTitle)\n\n const {data} = useListeningQuery<SerializedSchemaType[]>('*[_type==$type] | order(_type)', {\n type: assistSerializedTypeName,\n })\n\n const types = useMemo(() => {\n return serializeSchema(schema)\n }, [schema])\n\n const storeTypes = useCallback(() => {\n setSaving(true)\n let canSave = true\n async function store() {\n setSyncTitle(`Syncing 0/${types.length}`)\n const transaction = client.transaction()\n for (let i = 0; i < types.length; i++) {\n if (!canSave) {\n break\n }\n const type = types[i]\n await transaction.createOrReplace(type as Required<typeof type>)\n if (i > 0 && i % 50 === 0) {\n await transaction.commit()\n transaction.reset()\n setSyncTitle(`Syncing ${i}/${types.length}`)\n }\n }\n await transaction.commit()\n }\n store()\n .catch(console.error)\n .finally(() => {\n setSaving(false)\n setSyncTitle(defaultTitle)\n })\n return () => {\n canSave = false\n setSaving(false)\n setSyncTitle(defaultTitle)\n }\n }, [types, client, setSaving, setSyncTitle])\n\n return (\n <Card padding={4} overflow=\"auto\" style={{height: 'calc(100vh - 81px)'}}>\n <Stack space={4}>\n <Box>\n <Button\n icon={saving ? <Spinner style={{marginTop: 5}} /> : SyncIcon}\n text={syncTitle}\n disabled={saving}\n onClick={storeTypes}\n />\n </Box>\n <Flex gap={2}>\n <Stack space={2}>\n <Label>Studio schema</Label>\n <ul>\n {types.map((type) => (\n <li key={type.name}>\n <SchemaEntry schemaStub={type} />\n </li>\n ))}\n </ul>\n </Stack>\n\n <Stack space={2}>\n <Label>Stored schema</Label>\n <ul>\n {(data ?? NO_DATA).map((type) => (\n <li key={type.name}>\n <SchemaEntry schemaStub={type} />\n </li>\n ))}\n </ul>\n </Stack>\n </Flex>\n </Stack>\n </Card>\n )\n}\n\nfunction SchemaEntry({schemaStub}: {schemaStub: SerializedSchemaType}) {\n const out = useMemo(() => JSON.stringify(schemaStub, null, 2), [schemaStub])\n return <pre>{out}</pre>\n}\n","export const aiInspectorId = 'ai-assistance'\n","import {Box, BoxProps, Flex, focusFirstDescendant, Spinner, Text} from '@sanity/ui'\nimport React, {HTMLProps, useEffect, useMemo, useRef} from 'react'\nimport {tap} from 'rxjs/operators'\nimport {\n createPatchChannel,\n DocumentMutationEvent,\n DocumentRebaseEvent,\n FormBuilder,\n fromMutationPatches,\n PatchMsg,\n useDocumentPresence,\n useDocumentStore,\n} from 'sanity'\nimport {useDocumentPane} from 'sanity/desk'\n\nconst preventDefault = (ev: React.FormEvent) => ev.preventDefault()\n\nexport function DocumentForm(\n props: Omit<BoxProps, 'as'> & Omit<HTMLProps<HTMLDivElement>, 'as' | 'onSubmit' | 'ref'>\n) {\n const {\n collapsedFieldSets,\n collapsedPaths,\n displayed: value,\n documentId,\n documentType,\n editState,\n formState,\n onBlur,\n onChange,\n onFocus,\n onPathOpen,\n onSetActiveFieldGroup,\n onSetCollapsedFieldSet,\n onSetCollapsedPath,\n ready,\n validation,\n } = useDocumentPane()\n\n const documentStore = useDocumentStore()\n const presence = useDocumentPresence(documentId)\n\n // The `patchChannel` is an INTERNAL publish/subscribe channel that we use to notify form-builder\n // nodes about both remote and local patches.\n // - Used by the Portable Text input to modify selections.\n // - Used by `withDocument` to reset value.\n const patchChannel = useMemo(() => createPatchChannel(), [])\n\n const isLocked = editState?.transactionSyncLock?.enabled\n\n useEffect(() => {\n const sub = documentStore.pair\n .documentEvents(documentId, documentType)\n .pipe(\n tap((event) => {\n if (event.type === 'mutation') {\n patchChannel.publish(prepareMutationEvent(event))\n }\n\n if (event.type === 'rebase') {\n patchChannel.publish(prepareRebaseEvent(event))\n }\n })\n )\n .subscribe()\n\n return () => {\n sub.unsubscribe()\n }\n }, [documentId, documentStore, documentType, patchChannel])\n\n const hasRev = Boolean(value?._rev)\n useEffect(() => {\n if (hasRev) {\n // this is a workaround for an issue that caused the document pushed to withDocument to get\n // stuck at the first initial value.\n // This effect is triggered only when the document goes from not having a revision, to getting one\n // so it will kick in as soon as the document is received from the backend\n patchChannel.publish({\n type: 'mutation',\n patches: [],\n snapshot: value,\n })\n }\n // React to changes in hasRev only\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [hasRev])\n\n const formRef = useRef<null | HTMLDivElement>(null)\n\n useEffect(() => {\n focusFirstDescendant(formRef.current!)\n }, [])\n\n if (isLocked) {\n return (\n <Box as=\"form\" {...props} ref={formRef}>\n <Flex\n align=\"center\"\n direction=\"column\"\n height=\"fill\"\n justify=\"center\"\n padding={3}\n sizing=\"border\"\n >\n <Text size={1}>\n Please hold tight while the document is synced. This usually happens right after the\n document has been published, and it shouldn’t take more than a few seconds\n </Text>\n </Flex>\n </Box>\n )\n }\n\n return (\n <Box as=\"form\" {...props} onSubmit={preventDefault} ref={formRef}>\n {ready ? (\n formState === null ? (\n <Flex\n align=\"center\"\n direction=\"column\"\n height=\"fill\"\n justify=\"center\"\n padding={3}\n sizing=\"border\"\n >\n <Text size={1}>This form is hidden</Text>\n </Flex>\n ) : (\n <FormBuilder\n __internal_patchChannel={patchChannel}\n collapsedFieldSets={collapsedFieldSets}\n collapsedPaths={collapsedPaths}\n focusPath={formState.focusPath}\n changed={formState.changed}\n focused={formState.focused}\n groups={formState.groups}\n id=\"root\"\n members={formState.members}\n onChange={onChange}\n onFieldGroupSelect={onSetActiveFieldGroup}\n onPathBlur={onBlur}\n onPathFocus={onFocus}\n onPathOpen={onPathOpen}\n onSetFieldSetCollapsed={onSetCollapsedFieldSet}\n onSetPathCollapsed={onSetCollapsedPath}\n presence={presence}\n readOnly={formState.readOnly}\n schemaType={formState.schemaType}\n validation={validation}\n value={formState.value}\n />\n )\n ) : (\n <Flex\n align=\"center\"\n direction=\"column\"\n height=\"fill\"\n justify=\"center\"\n padding={3}\n sizing=\"border\"\n >\n <Spinner muted />\n\n <Box marginTop={3}>\n <Text align=\"center\" muted size={1}>\n Loading document\n </Text>\n </Box>\n </Flex>\n )}\n </Box>\n )\n}\n\nfunction prepareMutationEvent(event: DocumentMutationEvent): PatchMsg {\n const patches = event.mutations.map((mut) => mut.patch).filter(Boolean)\n\n return {\n type: 'mutation',\n snapshot: event.document,\n patches: fromMutationPatches(event.origin, patches),\n }\n}\n\nfunction prepareRebaseEvent(event: DocumentRebaseEvent): PatchMsg {\n const remotePatches = event.remoteMutations.map((mut) => mut.patch).filter(Boolean)\n const localPatches = event.localMutations.map((mut) => mut.patch).filter(Boolean)\n\n return {\n type: 'rebase',\n snapshot: event.document,\n patches: fromMutationPatches('remote', remotePatches).concat(\n fromMutationPatches('local', localPatches)\n ),\n }\n}\n","import {ObjectSchemaType, SchemaType} from 'sanity'\nimport {createContext} from 'react'\n\nexport interface SelectedFieldContextValue {\n documentSchema?: ObjectSchemaType\n fieldSchema?: SchemaType\n}\n\nexport const SelectedFieldContext = createContext<SelectedFieldContextValue | undefined>(undefined)\nexport const SelectedFieldContextProvider = SelectedFieldContext.Provider\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n","/**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\nfunction compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = compact;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\"use strict\";\n\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\nfunction setup(env) {\n createDebug.debug = createDebug;\n createDebug.default = createDebug;\n createDebug.coerce = coerce;\n createDebug.disable = disable;\n createDebug.enable = enable;\n createDebug.enabled = enabled;\n createDebug.humanize = require('ms');\n Object.keys(env).forEach(function (key) {\n createDebug[key] = env[key];\n });\n /**\n * Active `debug` instances.\n */\n\n createDebug.instances = [];\n /**\n * The currently active debug mode names, and names to skip.\n */\n\n createDebug.names = [];\n createDebug.skips = [];\n /**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\n createDebug.formatters = {};\n /**\n * Selects a color for a debug namespace\n * @param {String} namespace The namespace string for the for the debug instance to be colored\n * @return {Number|String} An ANSI color code for the given namespace\n * @api private\n */\n\n function selectColor(namespace) {\n var hash = 0;\n\n for (var i = 0; i < namespace.length; i++) {\n hash = (hash << 5) - hash + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n }\n\n createDebug.selectColor = selectColor;\n /**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\n function createDebug(namespace) {\n var prevTime;\n\n function debug() {\n // Disabled?\n if (!debug.enabled) {\n return;\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var self = debug; // Set `diff` timestamp\n\n var curr = Number(new Date());\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n args[0] = createDebug.coerce(args[0]);\n\n if (typeof args[0] !== 'string') {\n // Anything else let's inspect with %O\n args.unshift('%O');\n } // Apply any `formatters` transformations\n\n\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function (match, format) {\n // If we encounter an escaped % then don't increase the array index\n if (match === '%%') {\n return match;\n }\n\n index++;\n var formatter = createDebug.formatters[format];\n\n if (typeof formatter === 'function') {\n var val = args[index];\n match = formatter.call(self, val); // Now we need to remove `args[index]` since it's inlined in the `format`\n\n args.splice(index, 1);\n index--;\n }\n\n return match;\n }); // Apply env-specific formatting (colors, etc.)\n\n createDebug.formatArgs.call(self, args);\n var logFn = self.log || createDebug.log;\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = createDebug.enabled(namespace);\n debug.useColors = createDebug.useColors();\n debug.color = selectColor(namespace);\n debug.destroy = destroy;\n debug.extend = extend; // Debug.formatArgs = formatArgs;\n // debug.rawLog = rawLog;\n // env-specific initialization logic for debug instances\n\n if (typeof createDebug.init === 'function') {\n createDebug.init(debug);\n }\n\n createDebug.instances.push(debug);\n return debug;\n }\n\n function destroy() {\n var index = createDebug.instances.indexOf(this);\n\n if (index !== -1) {\n createDebug.instances.splice(index, 1);\n return true;\n }\n\n return false;\n }\n\n function extend(namespace, delimiter) {\n return createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n }\n /**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\n\n function enable(namespaces) {\n createDebug.save(namespaces);\n createDebug.names = [];\n createDebug.skips = [];\n var i;\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (i = 0; i < len; i++) {\n if (!split[i]) {\n // ignore empty strings\n continue;\n }\n\n namespaces = split[i].replace(/\\*/g, '.*?');\n\n if (namespaces[0] === '-') {\n createDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n createDebug.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n\n for (i = 0; i < createDebug.instances.length; i++) {\n var instance = createDebug.instances[i];\n instance.enabled = createDebug.enabled(instance.namespace);\n }\n }\n /**\n * Disable debug output.\n *\n * @api public\n */\n\n\n function disable() {\n createDebug.enable('');\n }\n /**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\n\n function enabled(name) {\n if (name[name.length - 1] === '*') {\n return true;\n }\n\n var i;\n var len;\n\n for (i = 0, len = createDebug.skips.length; i < len; i++) {\n if (createDebug.skips[i].test(name)) {\n return false;\n }\n }\n\n for (i = 0, len = createDebug.names.length; i < len; i++) {\n if (createDebug.names[i].test(name)) {\n return true;\n }\n }\n\n return false;\n }\n /**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\n\n function coerce(val) {\n if (val instanceof Error) {\n return val.stack || val.message;\n }\n\n return val;\n }\n\n createDebug.enable(createDebug.load());\n return createDebug;\n}\n\nmodule.exports = setup;\n\n","\"use strict\";\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\n/**\n * Colors.\n */\n\nexports.colors = ['#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC', '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF', '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC', '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF', '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC', '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033', '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366', '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933', '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC', '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF', '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'];\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n// eslint-disable-next-line complexity\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n return true;\n } // Internet Explorer and Edge do not support colors.\n\n\n if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n return false;\n } // Is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\n\n return typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773\n typeof window !== 'undefined' && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker\n typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/);\n}\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\n\nfunction formatArgs(args) {\n args[0] = (this.useColors ? '%c' : '') + this.namespace + (this.useColors ? ' %c' : ' ') + args[0] + (this.useColors ? '%c ' : ' ') + '+' + module.exports.humanize(this.diff);\n\n if (!this.useColors) {\n return;\n }\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit'); // The final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function (match) {\n if (match === '%%') {\n return;\n }\n\n index++;\n\n if (match === '%c') {\n // We only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n args.splice(lastC, 0, c);\n}\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\n\nfunction log() {\n var _console;\n\n // This hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return (typeof console === \"undefined\" ? \"undefined\" : _typeof(console)) === 'object' && console.log && (_console = console).log.apply(_console, arguments);\n}\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\n\nfunction save(namespaces) {\n try {\n if (namespaces) {\n exports.storage.setItem('debug', namespaces);\n } else {\n exports.storage.removeItem('debug');\n }\n } catch (error) {// Swallow\n // XXX (@Qix-) should we be logging these?\n }\n}\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\n\nfunction load() {\n var r;\n\n try {\n r = exports.storage.getItem('debug');\n } catch (error) {} // Swallow\n // XXX (@Qix-) should we be logging these?\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\n\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\n\nfunction localstorage() {\n try {\n // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n // The Browser also has localStorage in the global context.\n return localStorage;\n } catch (error) {// Swallow\n // XXX (@Qix-) should we be logging these?\n }\n}\n\nmodule.exports = require('./common')(exports);\nvar formatters = module.exports.formatters;\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n try {\n return JSON.stringify(v);\n } catch (error) {\n return '[UnexpectedJSONParseError]: ' + error.message;\n }\n};\n\n","'use strict';\n\nmodule.exports = (flag, argv = process.argv) => {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n};\n","'use strict';\nconst os = require('os');\nconst tty = require('tty');\nconst hasFlag = require('has-flag');\n\nconst {env} = process;\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false') ||\n\thasFlag('color=never')) {\n\tforceColor = 0;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = 1;\n}\n\nif ('FORCE_COLOR' in env) {\n\tif (env.FORCE_COLOR === 'true') {\n\t\tforceColor = 1;\n\t} else if (env.FORCE_COLOR === 'false') {\n\t\tforceColor = 0;\n\t} else {\n\t\tforceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(haveStream, streamIsTTY) {\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'GITHUB_ACTIONS', 'BUILDKITE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream, stream && stream.isTTY);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: translateLevel(supportsColor(true, tty.isatty(1))),\n\tstderr: translateLevel(supportsColor(true, tty.isatty(2)))\n};\n","\"use strict\";\n\n/**\n * Module dependencies.\n */\nvar tty = require('tty');\n\nvar util = require('util');\n/**\n * This is the Node.js implementation of `debug()`.\n */\n\n\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\ntry {\n // Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)\n // eslint-disable-next-line import/no-extraneous-dependencies\n var supportsColor = require('supports-color');\n\n if (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {\n exports.colors = [20, 21, 26, 27, 32, 33, 38, 39, 40, 41, 42, 43, 44, 45, 56, 57, 62, 63, 68, 69, 74, 75, 76, 77, 78, 79, 80, 81, 92, 93, 98, 99, 112, 113, 128, 129, 134, 135, 148, 149, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 178, 179, 184, 185, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 214, 215, 220, 221];\n }\n} catch (error) {} // Swallow - we only care if `supports-color` is available; it doesn't have to be.\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\n\nexports.inspectOpts = Object.keys(process.env).filter(function (key) {\n return /^debug_/i.test(key);\n}).reduce(function (obj, key) {\n // Camel-case\n var prop = key.substring(6).toLowerCase().replace(/_([a-z])/g, function (_, k) {\n return k.toUpperCase();\n }); // Coerce string value into JS value\n\n var val = process.env[key];\n\n if (/^(yes|on|true|enabled)$/i.test(val)) {\n val = true;\n } else if (/^(no|off|false|disabled)$/i.test(val)) {\n val = false;\n } else if (val === 'null') {\n val = null;\n } else {\n val = Number(val);\n }\n\n obj[prop] = val;\n return obj;\n}, {});\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n return 'colors' in exports.inspectOpts ? Boolean(exports.inspectOpts.colors) : tty.isatty(process.stderr.fd);\n}\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\n\nfunction formatArgs(args) {\n var name = this.namespace,\n useColors = this.useColors;\n\n if (useColors) {\n var c = this.color;\n var colorCode = \"\\x1B[3\" + (c < 8 ? c : '8;5;' + c);\n var prefix = \" \".concat(colorCode, \";1m\").concat(name, \" \\x1B[0m\");\n args[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n args.push(colorCode + 'm+' + module.exports.humanize(this.diff) + \"\\x1B[0m\");\n } else {\n args[0] = getDate() + name + ' ' + args[0];\n }\n}\n\nfunction getDate() {\n if (exports.inspectOpts.hideDate) {\n return '';\n }\n\n return new Date().toISOString() + ' ';\n}\n/**\n * Invokes `util.format()` with the specified arguments and writes to stderr.\n */\n\n\nfunction log() {\n return process.stderr.write(util.format.apply(util, arguments) + '\\n');\n}\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\n\nfunction save(namespaces) {\n if (namespaces) {\n process.env.DEBUG = namespaces;\n } else {\n // If you set a process.env field to null or undefined, it gets cast to the\n // string 'null' or 'undefined'. Just delete instead.\n delete process.env.DEBUG;\n }\n}\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\n\nfunction load() {\n return process.env.DEBUG;\n}\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\n\nfunction init(debug) {\n debug.inspectOpts = {};\n var keys = Object.keys(exports.inspectOpts);\n\n for (var i = 0; i < keys.length; i++) {\n debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n }\n}\n\nmodule.exports = require('./common')(exports);\nvar formatters = module.exports.formatters;\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nformatters.o = function (v) {\n this.inspectOpts.colors = this.useColors;\n return util.inspect(v, this.inspectOpts)\n .split('\\n')\n .map(function (str) { return str.trim(); })\n .join(' ');\n};\n/**\n * Map %O to `util.inspect()`, allowing multiple lines if needed.\n */\n\n\nformatters.O = function (v) {\n this.inspectOpts.colors = this.useColors;\n return util.inspect(v, this.inspectOpts);\n};\n\n","\"use strict\";\n\n/**\n * Detect Electron renderer / nwjs process, which is node, but we should\n * treat as a browser.\n */\nif (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {\n module.exports = require('./browser.js');\n} else {\n module.exports = require('./node.js');\n}\n\n","import flatten from 'lodash/flatten.js';\nimport compact from 'lodash/compact.js';\nimport isEqual from 'lodash/isEqual.js';\nimport min from 'lodash/min.js';\nimport max from 'lodash/max.js';\nimport { parsePatch as parsePatch$1, applyPatches, stringifyPatches, makePatches } from '@sanity/diff-match-patch';\nimport { uuid } from '@sanity/uuid';\nimport debugIt from 'debug';\nvar __defProp$h = Object.defineProperty;\nvar __defNormalProp$h = (obj, key, value) => key in obj ? __defProp$h(obj, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value\n}) : obj[key] = value;\nvar __publicField$h = (obj, key, value) => {\n __defNormalProp$h(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nconst digitChar = /[0-9]/;\nconst attributeCharMatcher = /^[a-zA-Z0-9_]$/;\nconst attributeFirstCharMatcher = /^[a-zA-Z_]$/;\nconst symbols = {\n operator: [\"..\", \".\", \",\", \":\", \"?\"],\n comparator: [\">\", \">=\", \"<\", \"<=\", \"==\", \"!=\"],\n keyword: [\"$\", \"@\"],\n boolean: [\"true\", \"false\"],\n paren: [\"[\", \"]\"]\n};\nconst symbolClasses = Object.keys(symbols);\nclass Tokenizer {\n constructor(path) {\n __publicField$h(this, \"source\");\n __publicField$h(this, \"i\");\n __publicField$h(this, \"length\");\n __publicField$h(this, \"tokenizers\");\n this.source = path;\n this.length = path.length;\n this.i = 0;\n this.tokenizers = [this.tokenizeSymbol, this.tokenizeIdentifier, this.tokenizeNumber, this.tokenizeQuoted].map(fn => fn.bind(this));\n }\n tokenize() {\n const result = [];\n while (!this.EOF()) {\n this.chompWhitespace();\n let token = null;\n const found = this.tokenizers.some(tokenizer => {\n token = tokenizer();\n return Boolean(token);\n });\n if (!found || !token) {\n throw new Error(\"Invalid tokens in jsonpath '\".concat(this.source, \"' @ \").concat(this.i));\n }\n result.push(token);\n }\n return result;\n }\n takeWhile(fn) {\n const start = this.i;\n let result = \"\";\n while (!this.EOF()) {\n const nextChar = fn(this.source[this.i]);\n if (nextChar === null) {\n break;\n }\n result += nextChar;\n this.i++;\n }\n if (this.i === start) {\n return null;\n }\n return result;\n }\n EOF() {\n return this.i >= this.length;\n }\n peek() {\n if (this.EOF()) {\n return null;\n }\n return this.source[this.i];\n }\n consume(str) {\n if (this.i + str.length > this.length) {\n throw new Error(\"Expected \".concat(str, \" at end of jsonpath\"));\n }\n if (str === this.source.slice(this.i, this.i + str.length)) {\n this.i += str.length;\n } else {\n throw new Error('Expected \"'.concat(str, '\", but source contained \"').concat(this.source.slice()));\n }\n }\n // Tries to match the upcoming bit of string with the provided string. If it matches, returns\n // the string, then advances the read pointer to the next bit. If not, returns null and nothing\n // happens.\n tryConsume(str) {\n if (this.i + str.length > this.length) {\n return null;\n }\n if (str === this.source.slice(this.i, this.i + str.length)) {\n this.i += str.length;\n return str;\n }\n return null;\n }\n chompWhitespace() {\n this.takeWhile(char => {\n return char === \" \" ? \"\" : null;\n });\n }\n tokenizeQuoted() {\n const quote = this.peek();\n if (quote === \"'\" || quote === '\"') {\n this.consume(quote);\n let escape = false;\n const inner = this.takeWhile(char => {\n if (escape) {\n escape = false;\n return char;\n }\n if (char === \"\\\\\") {\n escape = true;\n return \"\";\n }\n if (char != quote) {\n return char;\n }\n return null;\n });\n this.consume(quote);\n return {\n type: \"quoted\",\n value: inner,\n quote: quote === '\"' ? \"double\" : \"single\"\n };\n }\n return null;\n }\n tokenizeIdentifier() {\n let first = true;\n const identifier = this.takeWhile(char => {\n if (first) {\n first = false;\n return char.match(attributeFirstCharMatcher) ? char : null;\n }\n return char.match(attributeCharMatcher) ? char : null;\n });\n if (identifier !== null) {\n return {\n type: \"identifier\",\n name: identifier\n };\n }\n return null;\n }\n tokenizeNumber() {\n const start = this.i;\n let dotSeen = false;\n let digitSeen = false;\n let negative = false;\n if (this.peek() === \"-\") {\n negative = true;\n this.consume(\"-\");\n }\n const number = this.takeWhile(char => {\n if (char === \".\" && !dotSeen && digitSeen) {\n dotSeen = true;\n return char;\n }\n digitSeen = true;\n return char.match(digitChar) ? char : null;\n });\n if (number !== null) {\n return {\n type: \"number\",\n value: negative ? -number : +number,\n raw: negative ? \"-\".concat(number) : number\n };\n }\n this.i = start;\n return null;\n }\n tokenizeSymbol() {\n for (const symbolClass of symbolClasses) {\n const patterns = symbols[symbolClass];\n const symbol = patterns.find(pattern => this.tryConsume(pattern));\n if (symbol) {\n return {\n type: symbolClass,\n symbol\n };\n }\n }\n return null;\n }\n}\nfunction tokenize(jsonpath) {\n return new Tokenizer(jsonpath).tokenize();\n}\nvar __defProp$g = Object.defineProperty;\nvar __defNormalProp$g = (obj, key, value) => key in obj ? __defProp$g(obj, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value\n}) : obj[key] = value;\nvar __publicField$g = (obj, key, value) => {\n __defNormalProp$g(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nclass Parser {\n constructor(path) {\n __publicField$g(this, \"tokens\");\n __publicField$g(this, \"length\");\n __publicField$g(this, \"i\");\n this.tokens = tokenize(path);\n this.length = this.tokens.length;\n this.i = 0;\n }\n parse() {\n return this.parsePath();\n }\n EOF() {\n return this.i >= this.length;\n }\n // Look at upcoming token\n peek() {\n if (this.EOF()) {\n return null;\n }\n return this.tokens[this.i];\n }\n consume() {\n const result = this.peek();\n this.i += 1;\n return result;\n }\n // Return next token if it matches the pattern\n probe(pattern) {\n const token = this.peek();\n if (!token) {\n return null;\n }\n const record = token;\n const match = Object.keys(pattern).every(key => {\n return key in token && pattern[key] === record[key];\n });\n return match ? token : null;\n }\n // Return and consume next token if it matches the pattern\n match(pattern) {\n return this.probe(pattern) ? this.consume() : null;\n }\n parseAttribute() {\n const token = this.match({\n type: \"identifier\"\n });\n if (token && token.type === \"identifier\") {\n return {\n type: \"attribute\",\n name: token.name\n };\n }\n const quoted = this.match({\n type: \"quoted\",\n quote: \"single\"\n });\n if (quoted && quoted.type === \"quoted\") {\n return {\n type: \"attribute\",\n name: quoted.value || \"\"\n };\n }\n return null;\n }\n parseAlias() {\n if (this.match({\n type: \"keyword\",\n symbol: \"@\"\n }) || this.match({\n type: \"keyword\",\n symbol: \"$\"\n })) {\n return {\n type: \"alias\",\n target: \"self\"\n };\n }\n return null;\n }\n parseNumber() {\n const token = this.match({\n type: \"number\"\n });\n if (token && token.type === \"number\") {\n return {\n type: \"number\",\n value: token.value\n };\n }\n return null;\n }\n parseNumberValue() {\n const expr = this.parseNumber();\n if (expr) {\n return expr.value;\n }\n return null;\n }\n parseSliceSelector() {\n const start = this.i;\n const rangeStart = this.parseNumberValue();\n const colon1 = this.match({\n type: \"operator\",\n symbol: \":\"\n });\n if (!colon1) {\n if (rangeStart === null) {\n this.i = start;\n return null;\n }\n return {\n type: \"index\",\n value: rangeStart\n };\n }\n const result = {\n type: \"range\",\n start: rangeStart,\n end: this.parseNumberValue()\n };\n const colon2 = this.match({\n type: \"operator\",\n symbol: \":\"\n });\n if (colon2) {\n result.step = this.parseNumberValue();\n }\n if (result.start === null && result.end === null) {\n this.i = start;\n return null;\n }\n return result;\n }\n parseValueReference() {\n return this.parseAttribute() || this.parseSliceSelector();\n }\n parseLiteralValue() {\n const literalString = this.match({\n type: \"quoted\",\n quote: \"double\"\n });\n if (literalString && literalString.type === \"quoted\") {\n return {\n type: \"string\",\n value: literalString.value || \"\"\n };\n }\n const literalBoolean = this.match({\n type: \"boolean\"\n });\n if (literalBoolean && literalBoolean.type === \"boolean\") {\n return {\n type: \"boolean\",\n value: literalBoolean.symbol === \"true\"\n };\n }\n return this.parseNumber();\n }\n // TODO: Reorder constraints so that literal value is always on rhs, and variable is always\n // on lhs.\n parseFilterExpression() {\n const start = this.i;\n const expr = this.parseAttribute() || this.parseAlias();\n if (!expr) {\n return null;\n }\n if (this.match({\n type: \"operator\",\n symbol: \"?\"\n })) {\n return {\n type: \"constraint\",\n operator: \"?\",\n lhs: expr\n };\n }\n const binOp = this.match({\n type: \"comparator\"\n });\n if (!binOp || binOp.type !== \"comparator\") {\n this.i = start;\n return null;\n }\n const lhs = expr;\n const rhs = this.parseLiteralValue();\n if (!rhs) {\n throw new Error(\"Operator \".concat(binOp.symbol, \" needs a literal value at the right hand side\"));\n }\n return {\n type: \"constraint\",\n operator: binOp.symbol,\n lhs,\n rhs\n };\n }\n parseExpression() {\n return this.parseFilterExpression() || this.parseValueReference();\n }\n parseUnion() {\n if (!this.match({\n type: \"paren\",\n symbol: \"[\"\n })) {\n return null;\n }\n const terms = [];\n let expr = this.parseFilterExpression() || this.parsePath() || this.parseValueReference();\n while (expr) {\n terms.push(expr);\n if (this.match({\n type: \"paren\",\n symbol: \"]\"\n })) {\n break;\n }\n if (!this.match({\n type: \"operator\",\n symbol: \",\"\n })) {\n throw new Error(\"Expected ]\");\n }\n expr = this.parseFilterExpression() || this.parsePath() || this.parseValueReference();\n if (!expr) {\n throw new Error(\"Expected expression following ','\");\n }\n }\n return {\n type: \"union\",\n nodes: terms\n };\n }\n parseRecursive() {\n if (!this.match({\n type: \"operator\",\n symbol: \"..\"\n })) {\n return null;\n }\n const subpath = this.parsePath();\n if (!subpath) {\n throw new Error(\"Expected path following '..' operator\");\n }\n return {\n type: \"recursive\",\n term: subpath\n };\n }\n parsePath() {\n const nodes = [];\n const expr = this.parseAttribute() || this.parseUnion() || this.parseRecursive();\n if (!expr) {\n return null;\n }\n nodes.push(expr);\n while (!this.EOF()) {\n if (this.match({\n type: \"operator\",\n symbol: \".\"\n })) {\n const attr = this.parseAttribute();\n if (!attr) {\n throw new Error(\"Expected attribute name following '.\");\n }\n nodes.push(attr);\n continue;\n } else if (this.probe({\n type: \"paren\",\n symbol: \"[\"\n })) {\n const union = this.parseUnion();\n if (!union) {\n throw new Error(\"Expected union following '['\");\n }\n nodes.push(union);\n } else {\n const recursive = this.parseRecursive();\n if (recursive) {\n nodes.push(recursive);\n }\n break;\n }\n }\n if (nodes.length === 1) {\n return nodes[0];\n }\n return {\n type: \"path\",\n nodes\n };\n }\n}\nfunction parseJsonPath(path) {\n const parsed = new Parser(path).parse();\n if (!parsed) {\n throw new Error('Failed to parse JSON path \"'.concat(path, '\"'));\n }\n return parsed;\n}\nfunction descend$1(tail) {\n const [head, newTail] = splitIfPath(tail);\n if (!head) {\n throw new Error(\"Head cannot be null\");\n }\n return spreadIfUnionHead(head, newTail);\n}\nfunction splitIfPath(tail) {\n if (tail.type !== \"path\") {\n return [tail, null];\n }\n const nodes = tail.nodes;\n if (nodes.length === 0) {\n return [null, null];\n }\n if (nodes.length === 1) {\n return [nodes[0], null];\n }\n return [nodes[0], {\n type: \"path\",\n nodes: nodes.slice(1)\n }];\n}\nfunction concatPaths(path1, path2) {\n if (!path1 && !path2) {\n return null;\n }\n const nodes1 = path1 ? path1.nodes : [];\n const nodes2 = path2 ? path2.nodes : [];\n return {\n type: \"path\",\n nodes: nodes1.concat(nodes2)\n };\n}\nfunction spreadIfUnionHead(head, tail) {\n if (head.type !== \"union\") {\n return [[head, tail]];\n }\n return head.nodes.map(node => {\n if (node.type === \"path\") {\n const [subHead, subTail] = splitIfPath(node);\n return [subHead, concatPaths(subTail, tail)];\n }\n return [node, tail];\n });\n}\nfunction toPath(expr) {\n return toPathInner(expr, false);\n}\nfunction toPathInner(expr, inUnion) {\n switch (expr.type) {\n case \"attribute\":\n return expr.name;\n case \"alias\":\n return expr.target === \"self\" ? \"@\" : \"$\";\n case \"number\":\n return \"\".concat(expr.value);\n case \"range\":\n {\n const result = [];\n if (!inUnion) {\n result.push(\"[\");\n }\n if (expr.start) {\n result.push(\"\".concat(expr.start));\n }\n result.push(\":\");\n if (expr.end) {\n result.push(\"\".concat(expr.end));\n }\n if (expr.step) {\n result.push(\":\".concat(expr.step));\n }\n if (!inUnion) {\n result.push(\"]\");\n }\n return result.join(\"\");\n }\n case \"index\":\n if (inUnion) {\n return \"\".concat(expr.value);\n }\n return \"[\".concat(expr.value, \"]\");\n case \"constraint\":\n {\n const rhs = expr.rhs ? \" \".concat(toPathInner(expr.rhs, false)) : \"\";\n const inner = \"\".concat(toPathInner(expr.lhs, false), \" \").concat(expr.operator).concat(rhs);\n if (inUnion) {\n return inner;\n }\n return \"[\".concat(inner, \"]\");\n }\n case \"string\":\n return JSON.stringify(expr.value);\n case \"path\":\n {\n const result = [];\n const nodes = expr.nodes.slice();\n while (nodes.length > 0) {\n const node = nodes.shift();\n if (node) {\n result.push(toPath(node));\n }\n const upcoming = nodes[0];\n if (upcoming && toPathInner(upcoming, false)[0] !== \"[\") {\n result.push(\".\");\n }\n }\n return result.join(\"\");\n }\n case \"union\":\n return \"[\".concat(expr.nodes.map(e => toPathInner(e, true)).join(\",\"), \"]\");\n default:\n throw new Error(\"Unknown node type \".concat(expr.type));\n case \"recursive\":\n return \"..\".concat(toPathInner(expr.term, false));\n }\n}\nvar __defProp$f = Object.defineProperty;\nvar __defNormalProp$f = (obj, key, value) => key in obj ? __defProp$f(obj, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value\n}) : obj[key] = value;\nvar __publicField$f = (obj, key, value) => {\n __defNormalProp$f(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nclass Expression {\n constructor(expr) {\n __publicField$f(this, \"expr\");\n if (!expr) {\n throw new Error(\"Attempted to create Expression from null-value\");\n }\n if (\"expr\" in expr) {\n this.expr = expr.expr;\n } else {\n this.expr = expr;\n }\n if (!(\"type\" in this.expr)) {\n throw new Error(\"Attempt to create Expression for expression with no type\");\n }\n }\n isPath() {\n return this.expr.type === \"path\";\n }\n isUnion() {\n return this.expr.type === \"union\";\n }\n isCollection() {\n return this.isPath() || this.isUnion();\n }\n isConstraint() {\n return this.expr.type === \"constraint\";\n }\n isRecursive() {\n return this.expr.type === \"recursive\";\n }\n isExistenceConstraint() {\n return this.expr.type === \"constraint\" && this.expr.operator === \"?\";\n }\n isIndex() {\n return this.expr.type === \"index\";\n }\n isRange() {\n return this.expr.type === \"range\";\n }\n expandRange(probe) {\n const probeLength = () => {\n if (!probe) {\n throw new Error(\"expandRange() required a probe that was not passed\");\n }\n return probe.length();\n };\n let start = \"start\" in this.expr ? this.expr.start || 0 : 0;\n start = interpretNegativeIndex(start, probe);\n let end = \"end\" in this.expr ? this.expr.end || probeLength() : probeLength();\n end = interpretNegativeIndex(end, probe);\n const step = \"step\" in this.expr ? this.expr.step || 1 : 1;\n return {\n start,\n end,\n step\n };\n }\n isAttributeReference() {\n return this.expr.type === \"attribute\";\n }\n // Is a range or index -> something referencing indexes\n isIndexReference() {\n return this.isIndex() || this.isRange();\n }\n name() {\n return \"name\" in this.expr ? this.expr.name : \"\";\n }\n isSelfReference() {\n return this.expr.type === \"alias\" && this.expr.target === \"self\";\n }\n constraintTargetIsSelf() {\n return this.expr.type === \"constraint\" && this.expr.lhs.type === \"alias\" && this.expr.lhs.target === \"self\";\n }\n constraintTargetIsAttribute() {\n return this.expr.type === \"constraint\" && this.expr.lhs.type === \"attribute\";\n }\n testConstraint(probe) {\n const expr = this.expr;\n if (expr.type === \"constraint\" && expr.lhs.type === \"alias\" && expr.lhs.target === \"self\") {\n if (probe.containerType() !== \"primitive\") {\n return false;\n }\n if (expr.type === \"constraint\" && expr.operator === \"?\") {\n return true;\n }\n const lhs2 = probe.get();\n const rhs2 = expr.rhs && \"value\" in expr.rhs ? expr.rhs.value : void 0;\n return testBinaryOperator(lhs2, expr.operator, rhs2);\n }\n if (expr.type !== \"constraint\") {\n return false;\n }\n const lhs = expr.lhs;\n if (!lhs) {\n throw new Error(\"No LHS of expression\");\n }\n if (lhs.type !== \"attribute\") {\n throw new Error(\"Constraint target \".concat(lhs.type, \" not supported\"));\n }\n if (probe.containerType() !== \"object\") {\n return false;\n }\n const lhsValue = probe.getAttribute(lhs.name);\n if (lhsValue === void 0 || lhsValue === null || lhsValue.containerType() !== \"primitive\") {\n return false;\n }\n if (this.isExistenceConstraint()) {\n return true;\n }\n const rhs = expr.rhs && \"value\" in expr.rhs ? expr.rhs.value : void 0;\n return testBinaryOperator(lhsValue.get(), expr.operator, rhs);\n }\n pathNodes() {\n return this.expr.type === \"path\" ? this.expr.nodes : [this.expr];\n }\n prepend(node) {\n if (!node) {\n return this;\n }\n return new Expression({\n type: \"path\",\n nodes: node.pathNodes().concat(this.pathNodes())\n });\n }\n concat(other) {\n return other ? other.prepend(this) : this;\n }\n descend() {\n return descend$1(this.expr).map(headTail => {\n const [head, tail] = headTail;\n return {\n head: head ? new Expression(head) : null,\n tail: tail ? new Expression(tail) : null\n };\n });\n }\n unwrapRecursive() {\n if (this.expr.type !== \"recursive\") {\n throw new Error(\"Attempt to unwrap recursive on type \".concat(this.expr.type));\n }\n return new Expression(this.expr.term);\n }\n toIndicies(probe) {\n if (this.expr.type !== \"index\" && this.expr.type !== \"range\") {\n throw new Error(\"Node cannot be converted to indexes\");\n }\n if (this.expr.type === \"index\") {\n return [interpretNegativeIndex(this.expr.value, probe)];\n }\n const result = [];\n const range = this.expandRange(probe);\n let {\n start,\n end\n } = range;\n if (range.step < 0) {\n [start, end] = [end, start];\n }\n for (let i = start; i < end; i++) {\n result.push(i);\n }\n return result;\n }\n toFieldReferences() {\n if (this.isIndexReference()) {\n return this.toIndicies();\n }\n if (this.expr.type === \"attribute\") {\n return [this.expr.name];\n }\n throw new Error(\"Can't convert \".concat(this.expr.type, \" to field references\"));\n }\n toString() {\n return toPath(this.expr);\n }\n static fromPath(path) {\n const parsed = parseJsonPath(path);\n if (!parsed) {\n throw new Error('Failed to parse path \"'.concat(path, '\"'));\n }\n return new Expression(parsed);\n }\n static attributeReference(name) {\n return new Expression({\n type: \"attribute\",\n name\n });\n }\n static indexReference(i) {\n return new Expression({\n type: \"index\",\n value: i\n });\n }\n}\nfunction testBinaryOperator(lhsValue, operator, rhsValue) {\n switch (operator) {\n case \">\":\n return lhsValue > rhsValue;\n case \">=\":\n return lhsValue >= rhsValue;\n case \"<\":\n return lhsValue < rhsValue;\n case \"<=\":\n return lhsValue <= rhsValue;\n case \"==\":\n return lhsValue === rhsValue;\n case \"!=\":\n return lhsValue !== rhsValue;\n default:\n throw new Error(\"Unsupported binary operator \".concat(operator));\n }\n}\nfunction interpretNegativeIndex(index, probe) {\n if (index >= 0) {\n return index;\n }\n if (!probe) {\n throw new Error(\"interpretNegativeIndex() must have a probe when < 0\");\n }\n return index + probe.length();\n}\nvar __defProp$e = Object.defineProperty;\nvar __defNormalProp$e = (obj, key, value) => key in obj ? __defProp$e(obj, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value\n}) : obj[key] = value;\nvar __publicField$e = (obj, key, value) => {\n __defNormalProp$e(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nclass Descender {\n constructor(head, tail) {\n __publicField$e(this, \"head\");\n __publicField$e(this, \"tail\");\n this.head = head;\n this.tail = tail;\n }\n // Iterate this descender once processing any constraints that are\n // resolvable on the current value. Returns an array of new descenders\n // that are guaranteed to be without constraints in the head\n iterate(probe) {\n let result = [this];\n if (this.head && this.head.isConstraint()) {\n let anyConstraints = true;\n while (anyConstraints) {\n result = flatten(result.map(descender => {\n return descender.iterateConstraints(probe);\n }));\n anyConstraints = result.some(descender => {\n return descender.head && descender.head.isConstraint();\n });\n }\n }\n return result;\n }\n isRecursive() {\n return Boolean(this.head && this.head.isRecursive());\n }\n hasArrived() {\n return this.head === null && this.tail === null;\n }\n extractRecursives() {\n if (this.head && this.head.isRecursive()) {\n const term = this.head.unwrapRecursive();\n return new Descender(null, term.concat(this.tail)).descend();\n }\n return [];\n }\n iterateConstraints(probe) {\n const head = this.head;\n if (head === null || !head.isConstraint()) {\n return [this];\n }\n const result = [];\n if (probe.containerType() === \"primitive\" && head.constraintTargetIsSelf()) {\n if (head.testConstraint(probe)) {\n result.push(...this.descend());\n }\n return result;\n }\n if (probe.containerType() === \"array\") {\n const length = probe.length();\n for (let i = 0; i < length; i++) {\n const constraint = probe.getIndex(i);\n if (constraint && head.testConstraint(constraint)) {\n result.push(new Descender(new Expression({\n type: \"index\",\n value: i\n }), this.tail));\n }\n }\n return result;\n }\n if (probe.containerType() === \"object\") {\n if (head.constraintTargetIsSelf()) {\n return [];\n }\n if (head.testConstraint(probe)) {\n return this.descend();\n }\n return result;\n }\n return result;\n }\n descend() {\n if (!this.tail) {\n return [new Descender(null, null)];\n }\n return this.tail.descend().map(ht => {\n return new Descender(ht.head, ht.tail);\n });\n }\n toString() {\n const result = [\"<\"];\n if (this.head) {\n result.push(this.head.toString());\n }\n result.push(\"|\");\n if (this.tail) {\n result.push(this.tail.toString());\n }\n result.push(\">\");\n return result.join(\"\");\n }\n}\nvar __defProp$d = Object.defineProperty;\nvar __defNormalProp$d = (obj, key, value) => key in obj ? __defProp$d(obj, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value\n}) : obj[key] = value;\nvar __publicField$d = (obj, key, value) => {\n __defNormalProp$d(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nclass Matcher {\n constructor(active, parent) {\n __publicField$d(this, \"active\");\n __publicField$d(this, \"recursives\");\n __publicField$d(this, \"payload\");\n this.active = active || [];\n if (parent) {\n this.recursives = parent.recursives;\n this.payload = parent.payload;\n } else {\n this.recursives = [];\n }\n this.extractRecursives();\n }\n setPayload(payload) {\n this.payload = payload;\n return this;\n }\n // Moves any recursive descenders onto the recursive track, removing them from\n // the active set\n extractRecursives() {\n this.active = this.active.filter(descender => {\n if (descender.isRecursive()) {\n this.recursives.push(...descender.extractRecursives());\n return false;\n }\n return true;\n });\n }\n // Find recursives that are relevant now and should be considered part of the active set\n activeRecursives(probe) {\n return this.recursives.filter(descender => {\n const head = descender.head;\n if (!head) {\n return false;\n }\n if (head.isConstraint()) {\n return true;\n }\n if (probe.containerType() === \"array\" && head.isIndexReference()) {\n return true;\n }\n if (probe.containerType() === \"object\") {\n return head.isAttributeReference() && probe.hasAttribute(head.name());\n }\n return false;\n });\n }\n match(probe) {\n return this.iterate(probe).extractMatches(probe);\n }\n iterate(probe) {\n const newActiveSet = [];\n this.active.concat(this.activeRecursives(probe)).forEach(descender => {\n newActiveSet.push(...descender.iterate(probe));\n });\n return new Matcher(newActiveSet, this);\n }\n // Returns true if any of the descenders in the active or recursive set\n // consider the current state a final destination\n isDestination() {\n return this.active.some(descender => descender.hasArrived());\n }\n hasRecursives() {\n return this.recursives.length > 0;\n }\n // Returns any payload delivieries and leads that needs to be followed to complete\n // the process.\n extractMatches(probe) {\n const leads = [];\n const targets = [];\n this.active.forEach(descender => {\n if (descender.hasArrived()) {\n targets.push(new Expression({\n type: \"alias\",\n target: \"self\"\n }));\n return;\n }\n const descenderHead = descender.head;\n if (!descenderHead) {\n return;\n }\n if (probe.containerType() === \"array\" && !descenderHead.isIndexReference()) {\n return;\n }\n if (probe.containerType() === \"object\" && !descenderHead.isAttributeReference()) {\n return;\n }\n if (descender.tail) {\n const matcher = new Matcher(descender.descend(), this);\n descenderHead.toFieldReferences().forEach(() => {\n leads.push({\n target: descenderHead,\n matcher\n });\n });\n } else {\n targets.push(descenderHead);\n }\n });\n if (this.hasRecursives()) {\n const recursivesMatcher = new Matcher([], this);\n if (probe.containerType() === \"array\") {\n const length = probe.length();\n for (let i = 0; i < length; i++) {\n leads.push({\n target: Expression.indexReference(i),\n matcher: recursivesMatcher\n });\n }\n } else if (probe.containerType() === \"object\") {\n probe.attributeKeys().forEach(name => {\n leads.push({\n target: Expression.attributeReference(name),\n matcher: recursivesMatcher\n });\n });\n }\n }\n return targets.length > 0 ? {\n leads,\n delivery: {\n targets,\n payload: this.payload\n }\n } : {\n leads\n };\n }\n static fromPath(jsonpath) {\n const path = parseJsonPath(jsonpath);\n if (!path) {\n throw new Error('Failed to parse path from \"'.concat(jsonpath, '\"'));\n }\n const descender = new Descender(null, new Expression(path));\n return new Matcher(descender.descend());\n }\n}\nfunction isRecord$1(value) {\n return value !== null && typeof value === \"object\";\n}\nvar __defProp$c = Object.defineProperty;\nvar __defNormalProp$c = (obj, key, value) => key in obj ? __defProp$c(obj, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value\n}) : obj[key] = value;\nvar __publicField$c = (obj, key, value) => {\n __defNormalProp$c(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nclass PlainProbe {\n constructor(value, path) {\n __publicField$c(this, \"_value\");\n __publicField$c(this, \"path\");\n this._value = value;\n this.path = path || [];\n }\n containerType() {\n if (Array.isArray(this._value)) {\n return \"array\";\n } else if (this._value !== null && typeof this._value === \"object\") {\n return \"object\";\n }\n return \"primitive\";\n }\n length() {\n if (!Array.isArray(this._value)) {\n throw new Error(\"Won't return length of non-indexable _value\");\n }\n return this._value.length;\n }\n getIndex(i) {\n if (!Array.isArray(this._value)) {\n return false;\n }\n if (i >= this.length()) {\n return null;\n }\n return new PlainProbe(this._value[i], this.path.concat(i));\n }\n hasAttribute(key) {\n if (!isRecord$1(this._value)) {\n return false;\n }\n return this._value.hasOwnProperty(key);\n }\n attributeKeys() {\n return isRecord$1(this._value) ? Object.keys(this._value) : [];\n }\n getAttribute(key) {\n if (!isRecord$1(this._value)) {\n throw new Error(\"getAttribute only applies to plain objects\");\n }\n if (!this.hasAttribute(key)) {\n return null;\n }\n return new PlainProbe(this._value[key], this.path.concat(key));\n }\n get() {\n return this._value;\n }\n}\nfunction extractAccessors(path, value) {\n const result = [];\n const matcher = Matcher.fromPath(path).setPayload(function appendResult(values) {\n result.push(...values);\n });\n const accessor = new PlainProbe(value);\n descend(matcher, accessor);\n return result;\n}\nfunction descend(matcher, accessor) {\n const {\n leads,\n delivery\n } = matcher.match(accessor);\n leads.forEach(lead => {\n accessorsFromTarget(lead.target, accessor).forEach(childAccessor => {\n descend(lead.matcher, childAccessor);\n });\n });\n if (delivery) {\n delivery.targets.forEach(target => {\n if (typeof delivery.payload === \"function\") {\n delivery.payload(accessorsFromTarget(target, accessor));\n }\n });\n }\n}\nfunction accessorsFromTarget(target, accessor) {\n const result = [];\n if (target.isIndexReference()) {\n target.toIndicies(accessor).forEach(i => {\n result.push(accessor.getIndex(i));\n });\n } else if (target.isAttributeReference()) {\n result.push(accessor.getAttribute(target.name()));\n } else if (target.isSelfReference()) {\n result.push(accessor);\n } else {\n throw new Error(\"Unable to derive accessor for target \".concat(target.toString()));\n }\n return compact(result);\n}\nfunction extract(path, value) {\n const accessors = extractAccessors(path, value);\n return accessors.map(acc => acc.get());\n}\nfunction extractWithPath(path, value) {\n const accessors = extractAccessors(path, value);\n return accessors.map(acc => ({\n path: acc.path,\n value: acc.get()\n }));\n}\nconst IS_DOTTABLE = /^[a-z_$]+/;\nfunction arrayToJSONMatchPath(pathArray) {\n let path = \"\";\n pathArray.forEach((segment, index) => {\n path += stringifySegment(segment, index === 0);\n });\n return path;\n}\nfunction stringifySegment(segment, hasLeading) {\n if (typeof segment === \"number\") {\n return \"[\".concat(segment, \"]\");\n }\n if (isRecord$1(segment)) {\n const seg = segment;\n return Object.keys(segment).map(key => isPrimitiveValue(seg[key]) ? \"[\".concat(key, '==\"').concat(seg[key], '\"]') : \"\").join(\"\");\n }\n if (typeof segment === \"string\" && IS_DOTTABLE.test(segment)) {\n return hasLeading ? segment : \".\".concat(segment);\n }\n return \"['\".concat(segment, \"']\");\n}\nfunction isPrimitiveValue(val) {\n switch (typeof val) {\n case \"number\":\n case \"string\":\n case \"boolean\":\n return true;\n default:\n return false;\n }\n}\nvar __defProp$b = Object.defineProperty;\nvar __defNormalProp$b = (obj, key, value) => key in obj ? __defProp$b(obj, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value\n}) : obj[key] = value;\nvar __publicField$b = (obj, key, value) => {\n __defNormalProp$b(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nclass SetPatch {\n constructor(id, path, value) {\n __publicField$b(this, \"id\");\n __publicField$b(this, \"path\");\n __publicField$b(this, \"value\");\n this.id = id;\n this.path = path;\n this.value = value;\n }\n apply(targets, accessor) {\n let result = accessor;\n targets.forEach(target => {\n if (target.isSelfReference()) {\n result = result.set(this.value);\n } else if (target.isIndexReference()) {\n target.toIndicies(accessor).forEach(i => {\n result = result.setIndex(i, this.value);\n });\n } else if (target.isAttributeReference()) {\n result = result.setAttribute(target.name(), this.value);\n } else {\n throw new Error(\"Unable to apply to target \".concat(target.toString()));\n }\n });\n return result;\n }\n}\nvar __defProp$a = Object.defineProperty;\nvar __defNormalProp$a = (obj, key, value) => key in obj ? __defProp$a(obj, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value\n}) : obj[key] = value;\nvar __publicField$a = (obj, key, value) => {\n __defNormalProp$a(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nfunction performIncrement(previousValue, delta) {\n if (typeof previousValue !== \"number\" || !Number.isFinite(previousValue)) {\n return previousValue;\n }\n return previousValue + delta;\n}\nclass IncPatch {\n constructor(id, path, value) {\n __publicField$a(this, \"path\");\n __publicField$a(this, \"value\");\n __publicField$a(this, \"id\");\n this.path = path;\n this.value = value;\n this.id = id;\n }\n apply(targets, accessor) {\n let result = accessor;\n if (result.containerType() === \"primitive\") {\n return result;\n }\n for (const target of targets) {\n if (target.isIndexReference()) {\n for (const index of target.toIndicies(accessor)) {\n const item = result.getIndex(index);\n if (!item) {\n continue;\n }\n const previousValue = item.get();\n result = result.setIndex(index, performIncrement(previousValue, this.value));\n }\n continue;\n }\n if (target.isAttributeReference()) {\n const attribute = result.getAttribute(target.name());\n if (!attribute) {\n continue;\n }\n const previousValue = attribute.get();\n result = result.setAttribute(target.name(), performIncrement(previousValue, this.value));\n continue;\n }\n throw new Error(\"Unable to apply to target \".concat(target.toString()));\n }\n return result;\n }\n}\nfunction targetsToIndicies(targets, accessor) {\n const result = [];\n targets.forEach(target => {\n if (target.isIndexReference()) {\n result.push(...target.toIndicies(accessor));\n }\n });\n return result.sort();\n}\nvar __defProp$9 = Object.defineProperty;\nvar __defNormalProp$9 = (obj, key, value) => key in obj ? __defProp$9(obj, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value\n}) : obj[key] = value;\nvar __publicField$9 = (obj, key, value) => {\n __defNormalProp$9(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nclass InsertPatch {\n constructor(id, location, path, items) {\n __publicField$9(this, \"location\");\n __publicField$9(this, \"path\");\n __publicField$9(this, \"items\");\n __publicField$9(this, \"id\");\n this.id = id;\n this.location = location;\n this.path = path;\n this.items = items;\n }\n apply(targets, accessor) {\n let result = accessor;\n if (accessor.containerType() !== \"array\") {\n throw new Error(\"Attempt to apply insert patch to non-array value\");\n }\n switch (this.location) {\n case \"before\":\n {\n const pos = minIndex(targets, accessor);\n result = result.insertItemsAt(pos, this.items);\n break;\n }\n case \"after\":\n {\n const pos = maxIndex(targets, accessor);\n result = result.insertItemsAt(pos + 1, this.items);\n break;\n }\n case \"replace\":\n {\n const indicies = targetsToIndicies(targets, accessor);\n result = result.unsetIndices(indicies);\n result = result.insertItemsAt(indicies[0], this.items);\n break;\n }\n default:\n {\n throw new Error(\"Unsupported location atm: \".concat(this.location));\n }\n }\n return result;\n }\n}\nfunction minIndex(targets, accessor) {\n let result = min(targetsToIndicies(targets, accessor)) || 0;\n targets.forEach(target => {\n if (target.isRange()) {\n const {\n start\n } = target.expandRange();\n if (start < result) {\n result = start;\n }\n }\n });\n return result;\n}\nfunction maxIndex(targets, accessor) {\n let result = max(targetsToIndicies(targets, accessor)) || 0;\n targets.forEach(target => {\n if (target.isRange()) {\n const {\n end\n } = target.expandRange();\n if (end > result) {\n result = end;\n }\n }\n });\n return result;\n}\nvar __defProp$8 = Object.defineProperty;\nvar __defNormalProp$8 = (obj, key, value) => key in obj ? __defProp$8(obj, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value\n}) : obj[key] = value;\nvar __publicField$8 = (obj, key, value) => {\n __defNormalProp$8(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nclass SetIfMissingPatch {\n constructor(id, path, value) {\n __publicField$8(this, \"id\");\n __publicField$8(this, \"path\");\n __publicField$8(this, \"value\");\n this.id = id;\n this.path = path;\n this.value = value;\n }\n apply(targets, accessor) {\n let result = accessor;\n targets.forEach(target => {\n if (target.isIndexReference()) ;else if (target.isAttributeReference()) {\n if (!result.hasAttribute(target.name())) {\n result = accessor.setAttribute(target.name(), this.value);\n }\n } else {\n throw new Error(\"Unable to apply to target \".concat(target.toString()));\n }\n });\n return result;\n }\n}\nvar __defProp$7 = Object.defineProperty;\nvar __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value\n}) : obj[key] = value;\nvar __publicField$7 = (obj, key, value) => {\n __defNormalProp$7(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nclass UnsetPatch {\n constructor(id, path) {\n __publicField$7(this, \"id\");\n __publicField$7(this, \"path\");\n __publicField$7(this, \"value\");\n this.id = id;\n this.path = path;\n }\n // eslint-disable-next-line class-methods-use-this\n apply(targets, accessor) {\n let result = accessor;\n switch (accessor.containerType()) {\n case \"array\":\n result = result.unsetIndices(targetsToIndicies(targets, accessor));\n break;\n case \"object\":\n targets.forEach(target => {\n result = result.unsetAttribute(target.name());\n });\n break;\n default:\n throw new Error(\"Target value is neither indexable or an object. This error should potentially just be silently ignored?\");\n }\n return result;\n }\n}\nvar __defProp$6 = Object.defineProperty;\nvar __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value\n}) : obj[key] = value;\nvar __publicField$6 = (obj, key, value) => {\n __defNormalProp$6(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nfunction applyPatch(patch, oldValue) {\n if (typeof oldValue !== \"string\") return oldValue;\n const [result] = applyPatches(patch, oldValue, {\n allowExceedingIndices: true\n });\n return result;\n}\nclass DiffMatchPatch {\n constructor(id, path, dmpPatchSrc) {\n __publicField$6(this, \"path\");\n __publicField$6(this, \"dmpPatch\");\n __publicField$6(this, \"id\");\n this.id = id;\n this.path = path;\n this.dmpPatch = parsePatch$1(dmpPatchSrc);\n }\n apply(targets, accessor) {\n let result = accessor;\n if (result.containerType() === \"primitive\") {\n return result;\n }\n for (const target of targets) {\n if (target.isIndexReference()) {\n for (const index of target.toIndicies(accessor)) {\n const item = result.getIndex(index);\n if (!item) {\n continue;\n }\n const oldValue = item.get();\n const nextValue = applyPatch(this.dmpPatch, oldValue);\n result = result.setIndex(index, nextValue);\n }\n continue;\n }\n if (target.isAttributeReference() && result.hasAttribute(target.name())) {\n const attribute = result.getAttribute(target.name());\n if (!attribute) {\n continue;\n }\n const oldValue = attribute.get();\n const nextValue = applyPatch(this.dmpPatch, oldValue);\n result = result.setAttribute(target.name(), nextValue);\n continue;\n }\n throw new Error(\"Unable to apply diffMatchPatch to target \".concat(target.toString()));\n }\n return result;\n }\n}\nfunction parsePatch(patch) {\n const result = [];\n if (Array.isArray(patch)) {\n return patch.reduce((r, p) => r.concat(parsePatch(p)), result);\n }\n const {\n set,\n setIfMissing,\n unset,\n diffMatchPatch,\n inc,\n dec,\n insert\n } = patch;\n if (set) {\n Object.keys(set).forEach(path => {\n result.push(new SetPatch(patch.id, path, set[path]));\n });\n }\n if (setIfMissing) {\n Object.keys(setIfMissing).forEach(path => {\n result.push(new SetIfMissingPatch(patch.id, path, setIfMissing[path]));\n });\n }\n if (unset) {\n unset.forEach(path => {\n result.push(new UnsetPatch(patch.id, path));\n });\n }\n if (diffMatchPatch) {\n Object.keys(diffMatchPatch).forEach(path => {\n result.push(new DiffMatchPatch(patch.id, path, diffMatchPatch[path]));\n });\n }\n if (inc) {\n Object.keys(inc).forEach(path => {\n result.push(new IncPatch(patch.id, path, inc[path]));\n });\n }\n if (dec) {\n Object.keys(dec).forEach(path => {\n result.push(new IncPatch(patch.id, path, -dec[path]));\n });\n }\n if (insert) {\n let location;\n let path;\n const spec = insert;\n if (\"before\" in spec) {\n location = \"before\";\n path = spec.before;\n } else if (\"after\" in spec) {\n location = \"after\";\n path = spec.after;\n } else if (\"replace\" in spec) {\n location = \"replace\";\n path = spec.replace;\n } else {\n throw new Error(\"Invalid insert patch\");\n }\n result.push(new InsertPatch(patch.id, location, path, spec.items));\n }\n return result;\n}\nvar __defProp$5 = Object.defineProperty;\nvar __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value\n}) : obj[key] = value;\nvar __publicField$5 = (obj, key, value) => {\n __defNormalProp$5(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nclass ImmutableAccessor {\n constructor(value, path) {\n __publicField$5(this, \"_value\");\n __publicField$5(this, \"path\");\n this._value = value;\n this.path = path || [];\n }\n containerType() {\n if (Array.isArray(this._value)) {\n return \"array\";\n } else if (this._value !== null && typeof this._value === \"object\") {\n return \"object\";\n }\n return \"primitive\";\n }\n // Common reader, supported by all containers\n get() {\n return this._value;\n }\n // Array reader\n length() {\n if (!Array.isArray(this._value)) {\n throw new Error(\"Won't return length of non-indexable _value\");\n }\n return this._value.length;\n }\n getIndex(i) {\n if (!Array.isArray(this._value)) {\n return false;\n }\n if (i >= this.length()) {\n return null;\n }\n return new ImmutableAccessor(this._value[i], this.path.concat(i));\n }\n // Object reader\n hasAttribute(key) {\n return isRecord(this._value) ? this._value.hasOwnProperty(key) : false;\n }\n attributeKeys() {\n return isRecord(this._value) ? Object.keys(this._value) : [];\n }\n getAttribute(key) {\n if (!isRecord(this._value)) {\n throw new Error(\"getAttribute only applies to plain objects\");\n }\n if (!this.hasAttribute(key)) {\n return null;\n }\n return new ImmutableAccessor(this._value[key], this.path.concat(key));\n }\n // Common writer, supported by all containers\n set(value) {\n return value === this._value ? this : new ImmutableAccessor(value, this.path);\n }\n // array writer interface\n setIndex(i, value) {\n if (!Array.isArray(this._value)) {\n throw new Error(\"setIndex only applies to arrays\");\n }\n if (Object.is(value, this._value[i])) {\n return this;\n }\n const nextValue = this._value.slice();\n nextValue[i] = value;\n return new ImmutableAccessor(nextValue, this.path);\n }\n setIndexAccessor(i, accessor) {\n return this.setIndex(i, accessor.get());\n }\n unsetIndices(indices) {\n if (!Array.isArray(this._value)) {\n throw new Error(\"unsetIndices only applies to arrays\");\n }\n const length = this._value.length;\n const nextValue = [];\n for (let i = 0; i < length; i++) {\n if (indices.indexOf(i) === -1) {\n nextValue.push(this._value[i]);\n }\n }\n return new ImmutableAccessor(nextValue, this.path);\n }\n insertItemsAt(pos, items) {\n if (!Array.isArray(this._value)) {\n throw new Error(\"insertItemsAt only applies to arrays\");\n }\n let nextValue;\n if (this._value.length === 0 && pos === 0) {\n nextValue = items;\n } else {\n nextValue = this._value.slice(0, pos).concat(items).concat(this._value.slice(pos));\n }\n return new ImmutableAccessor(nextValue, this.path);\n }\n // Object writer interface\n setAttribute(key, value) {\n if (!isRecord(this._value)) {\n throw new Error(\"Unable to set attribute of non-object container\");\n }\n if (Object.is(value, this._value[key])) {\n return this;\n }\n const nextValue = Object.assign({}, this._value, {\n [key]: value\n });\n return new ImmutableAccessor(nextValue, this.path);\n }\n setAttributeAccessor(key, accessor) {\n return this.setAttribute(key, accessor.get());\n }\n unsetAttribute(key) {\n if (!isRecord(this._value)) {\n throw new Error(\"Unable to unset attribute of non-object container\");\n }\n const nextValue = Object.assign({}, this._value);\n delete nextValue[key];\n return new ImmutableAccessor(nextValue, this.path);\n }\n}\nfunction isRecord(value) {\n return value !== null && typeof value === \"object\";\n}\nvar __defProp$4 = Object.defineProperty;\nvar __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value\n}) : obj[key] = value;\nvar __publicField$4 = (obj, key, value) => {\n __defNormalProp$4(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nclass Patcher {\n constructor(patch) {\n __publicField$4(this, \"patches\");\n this.patches = parsePatch(patch);\n }\n apply(value) {\n const accessor = new ImmutableAccessor(value);\n return this.applyViaAccessor(accessor).get();\n }\n // If you want to use your own accessor implementation, you can use this method\n // to invoke the patcher. Since all subsequent accessors for children of this accessor\n // are obtained through the methods in the accessors, you retain full control of the\n // implementation throguhgout the application. Have a look in ImmutableAccessor\n // to see an example of how accessors are implemented.\n applyViaAccessor(accessor) {\n let result = accessor;\n const idAccessor = accessor.getAttribute(\"_id\");\n if (!idAccessor) {\n throw new Error(\"Cannot apply patch to document with no _id\");\n }\n const id = idAccessor.get();\n for (const patch of this.patches) {\n if (patch.id !== id) {\n continue;\n }\n const matcher = Matcher.fromPath(patch.path).setPayload(patch);\n result = process(matcher, result);\n }\n return result;\n }\n}\nfunction process(matcher, accessor) {\n let result = accessor;\n const {\n leads,\n delivery\n } = matcher.match(accessor);\n leads.forEach(lead => {\n if (lead.target.isIndexReference()) {\n lead.target.toIndicies().forEach(i => {\n const item = result.getIndex(i);\n if (!item) {\n throw new Error(\"Index out of bounds\");\n }\n result = result.setIndexAccessor(i, process(lead.matcher, item));\n });\n } else if (lead.target.isAttributeReference()) {\n const oldValueAccessor = result.getAttribute(lead.target.name());\n if (!oldValueAccessor) {\n return;\n }\n const newValueAccessor = process(lead.matcher, oldValueAccessor);\n if (oldValueAccessor !== newValueAccessor) {\n result = result.setAttributeAccessor(lead.target.name(), newValueAccessor);\n }\n } else {\n throw new Error(\"Unable to handle target \".concat(lead.target.toString()));\n }\n });\n if (delivery && isPatcher(delivery.payload)) {\n const patch = delivery.payload;\n result = patch.apply(delivery.targets, result);\n }\n return result;\n}\nfunction isPatcher(payload) {\n return Boolean(payload && typeof payload === \"object\" && payload !== null && \"apply\" in payload && typeof payload.apply === \"function\");\n}\nconst luid = uuid;\nconst debug = debugIt(\"mutator-document\");\nvar __defProp$3 = Object.defineProperty;\nvar __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value\n}) : obj[key] = value;\nvar __publicField$3 = (obj, key, value) => {\n __defNormalProp$3(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nclass Mutation {\n constructor(options) {\n __publicField$3(this, \"params\");\n __publicField$3(this, \"compiled\");\n __publicField$3(this, \"_appliesToMissingDocument\");\n this.params = options;\n }\n get transactionId() {\n return this.params.transactionId;\n }\n get transition() {\n return this.params.transition;\n }\n get identity() {\n return this.params.identity;\n }\n get previousRev() {\n return this.params.previousRev;\n }\n get resultRev() {\n return this.params.resultRev;\n }\n get mutations() {\n return this.params.mutations;\n }\n get timestamp() {\n if (typeof this.params.timestamp === \"string\") {\n return new Date(this.params.timestamp);\n }\n return void 0;\n }\n get effects() {\n return this.params.effects;\n }\n assignRandomTransactionId() {\n this.params.transactionId = luid();\n this.params.resultRev = this.params.transactionId;\n }\n appliesToMissingDocument() {\n if (typeof this._appliesToMissingDocument !== \"undefined\") {\n return this._appliesToMissingDocument;\n }\n const firstMut = this.mutations[0];\n if (firstMut) {\n this._appliesToMissingDocument = Boolean(firstMut.create || firstMut.createIfNotExists || firstMut.createOrReplace);\n } else {\n this._appliesToMissingDocument = true;\n }\n return this._appliesToMissingDocument;\n }\n // Compiles all mutations into a handy function\n compile() {\n const operations = [];\n this.mutations.forEach(mutation => {\n if (mutation.create) {\n const create = mutation.create || {};\n operations.push(doc => {\n if (doc) {\n return doc;\n }\n return Object.assign(create, {\n _createdAt: create._createdAt || this.params.timestamp\n });\n });\n return;\n }\n if (mutation.createIfNotExists) {\n const createIfNotExists = mutation.createIfNotExists || {};\n operations.push(doc => doc === null ? Object.assign(createIfNotExists, {\n _createdAt: createIfNotExists._createdAt || this.params.timestamp\n }) : doc);\n return;\n }\n if (mutation.createOrReplace) {\n const createOrReplace = mutation.createOrReplace || {};\n operations.push(() => Object.assign(createOrReplace, {\n _createdAt: createOrReplace._createdAt || this.params.timestamp\n }));\n return;\n }\n if (mutation.delete) {\n operations.push(() => null);\n return;\n }\n if (mutation.patch) {\n if (\"query\" in mutation.patch) {\n return;\n }\n const patch = new Patcher(mutation.patch);\n operations.push(doc => patch.apply(doc));\n return;\n }\n throw new Error(\"Unsupported mutation \".concat(JSON.stringify(mutation, null, 2)));\n });\n if (typeof this.params.timestamp === \"string\") {\n operations.push(doc => {\n return doc ? Object.assign(doc, {\n _updatedAt: this.params.timestamp\n }) : null;\n });\n }\n const prevRev = this.previousRev;\n const rev = this.resultRev || this.transactionId;\n this.compiled = doc => {\n if (prevRev && doc && prevRev !== doc._rev) {\n throw new Error(\"Previous revision for this mutation was \".concat(prevRev, \", but the document revision is \").concat(doc._rev));\n }\n let result = doc;\n for (const operation of operations) {\n result = operation(result);\n }\n if (result && rev) {\n if (result === doc) {\n result = Object.assign({}, doc);\n }\n result._rev = rev;\n }\n return result;\n };\n }\n apply(document) {\n debug(\"Applying mutation %O to document %O\", this.mutations, document);\n if (!this.compiled) {\n this.compile();\n }\n const result = this.compiled(document);\n debug(\" => %O\", result);\n return result;\n }\n static applyAll(document, mutations) {\n return mutations.reduce((doc, mutation) => mutation.apply(doc), document);\n }\n // Given a number of yet-to-be-committed mutation objects, collects them into one big mutation\n // any metadata like transactionId is ignored and must be submitted by the client. It is assumed\n // that all mutations are on the same document.\n // TOOO: Optimize mutations, eliminating mutations that overwrite themselves!\n static squash(document, mutations) {\n const squashed = mutations.reduce((result, mutation) => result.concat(...mutation.mutations), []);\n return new Mutation({\n mutations: squashed\n });\n }\n}\nvar __defProp$2 = Object.defineProperty;\nvar __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value\n}) : obj[key] = value;\nvar __publicField$2 = (obj, key, value) => {\n __defNormalProp$2(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nclass Document {\n constructor(doc) {\n /**\n * Incoming patches from the server waiting to be applied to HEAD\n */\n __publicField$2(this, \"incoming\", []);\n /**\n * Patches we know has been subitted to the server, but has not been seen yet in the return channel\n * so we can't be sure about the ordering yet (someone else might have slipped something between them)\n */\n __publicField$2(this, \"submitted\", []);\n /**\n * Pending mutations\n */\n __publicField$2(this, \"pending\", []);\n /**\n * Our model of the document according to the incoming patches from the server\n */\n __publicField$2(this, \"HEAD\");\n /**\n * Our optimistic model of what the document will probably look like as soon as all our patches\n * have been processed. Updated every time we stage a new mutation, but also might revert back\n * to previous states if our mutations fail, or could change if unexpected mutations arrive\n * between our own. The `onRebase` callback will be called when EDGE changes in this manner.\n */\n __publicField$2(this, \"EDGE\");\n /**\n * Called with the EDGE document when that document changes for a reason other than us staging\n * a new patch or receiving a mutation from the server while our EDGE is in sync with HEAD:\n * I.e. when EDGE changes because the order of mutations has changed in relation to our\n * optimistic predictions.\n */\n __publicField$2(this, \"onRebase\");\n /**\n * Called when we receive a patch in the normal order of things, but the mutation is not ours\n */\n __publicField$2(this, \"onMutation\");\n /**\n * Called when consistency state changes with the boolean value of the current consistency state\n */\n __publicField$2(this, \"onConsistencyChanged\");\n /**\n * Called whenever a new incoming mutation comes in. These are always ordered correctly.\n */\n __publicField$2(this, \"onRemoteMutation\");\n /**\n * We are consistent when there are no unresolved mutations of our own, and no un-applicable\n * incoming mutations. When this has been going on for too long, and there has been a while\n * since we staged a new mutation, it is time to reset your state.\n */\n __publicField$2(this, \"inconsistentAt\", null);\n /**\n * The last time we staged a patch of our own. If we have been inconsistent for a while, but it\n * hasn't been long since we staged a new mutation, the reason is probably just because the user\n * is typing or something.\n *\n * Should be used as a guard against resetting state for inconsistency reasons.\n */\n __publicField$2(this, \"lastStagedAt\", null);\n this.reset(doc);\n this.HEAD = doc;\n this.EDGE = doc;\n }\n // Reset the state of the Document, used to recover from unsavory states by reloading the document\n reset(doc) {\n this.incoming = [];\n this.submitted = [];\n this.pending = [];\n this.inconsistentAt = null;\n this.HEAD = doc;\n this.EDGE = doc;\n this.considerIncoming();\n this.updateConsistencyFlag();\n }\n // Call when a mutation arrives from Sanity\n arrive(mutation) {\n this.incoming.push(mutation);\n this.considerIncoming();\n this.updateConsistencyFlag();\n }\n // Call to signal that we are submitting a mutation. Returns a callback object with a\n // success and failure handler that must be called according to the outcome of our\n // submission.\n stage(mutation, silent) {\n if (!mutation.transactionId) {\n throw new Error(\"Mutations _must_ have transactionId when submitted\");\n }\n this.lastStagedAt = /* @__PURE__ */new Date();\n debug(\"Staging mutation %s (pushed to pending)\", mutation.transactionId);\n this.pending.push(mutation);\n this.EDGE = mutation.apply(this.EDGE);\n if (this.onMutation && !silent) {\n this.onMutation({\n mutation,\n document: this.EDGE,\n remote: false\n });\n }\n const txnId = mutation.transactionId;\n this.updateConsistencyFlag();\n return {\n success: () => {\n this.pendingSuccessfullySubmitted(txnId);\n this.updateConsistencyFlag();\n },\n failure: () => {\n this.pendingFailed(txnId);\n this.updateConsistencyFlag();\n }\n };\n }\n // Call to check if everything is nice and quiet and there are no unresolved mutations.\n // Means this model thinks both HEAD and EDGE is up to date with what the server sees.\n isConsistent() {\n return !this.inconsistentAt;\n }\n // Private\n // Attempts to apply any resolvable incoming patches to HEAD. Will keep patching as long as there\n // are applicable patches to be applied\n considerIncoming() {\n let mustRebase = false;\n let nextMut;\n const rebaseMutations = [];\n if (this.HEAD && this.HEAD._updatedAt) {\n const updatedAt = new Date(this.HEAD._updatedAt);\n if (this.incoming.find(mut => mut.timestamp && mut.timestamp < updatedAt)) {\n this.incoming = this.incoming.filter(mut => mut.timestamp && mut.timestamp < updatedAt);\n }\n }\n let protect = 0;\n do {\n if (this.HEAD) {\n const HEAD = this.HEAD;\n nextMut = HEAD._rev ? this.incoming.find(mut => mut.previousRev === HEAD._rev) : void 0;\n } else {\n nextMut = this.incoming.find(mut => mut.appliesToMissingDocument());\n }\n if (nextMut) {\n const applied = this.applyIncoming(nextMut);\n mustRebase = mustRebase || applied;\n if (mustRebase) {\n rebaseMutations.push(nextMut);\n }\n if (protect++ > 10) {\n throw new Error(\"Mutator stuck flushing incoming mutations. Probably stuck here: \".concat(JSON.stringify(nextMut)));\n }\n }\n } while (nextMut);\n if (this.incoming.length > 0 && debug.enabled) {\n debug(\"Unable to apply mutations %s\", this.incoming.map(mut => mut.transactionId).join(\", \"));\n }\n if (mustRebase) {\n this.rebase(rebaseMutations);\n }\n }\n // check current consistency state, update flag and invoke callback if needed\n updateConsistencyFlag() {\n const wasConsistent = this.isConsistent();\n const isConsistent = this.pending.length === 0 && this.submitted.length === 0 && this.incoming.length === 0;\n if (isConsistent) {\n this.inconsistentAt = null;\n } else if (!this.inconsistentAt) {\n this.inconsistentAt = /* @__PURE__ */new Date();\n }\n if (wasConsistent != isConsistent && this.onConsistencyChanged) {\n if (isConsistent) {\n debug(\"Buffered document is inconsistent\");\n } else {\n debug(\"Buffered document is consistent\");\n }\n this.onConsistencyChanged(isConsistent);\n }\n }\n // apply an incoming patch that has been prequalified as the next in line for this document\n applyIncoming(mut) {\n if (!mut) {\n return false;\n }\n if (!mut.transactionId) {\n throw new Error(\"Received incoming mutation without a transaction ID\");\n }\n debug(\"Applying mutation %s -> %s to rev %s\", mut.previousRev, mut.resultRev, this.HEAD && this.HEAD._rev);\n this.HEAD = mut.apply(this.HEAD);\n if (this.onRemoteMutation) {\n this.onRemoteMutation(mut);\n }\n this.incoming = this.incoming.filter(m => m.transactionId !== mut.transactionId);\n if (this.hasUnresolvedMutations()) {\n const needRebase = this.consumeUnresolved(mut.transactionId);\n if (debug.enabled) {\n debug(\"Incoming mutation \".concat(mut.transactionId, \" appeared while there were pending or submitted local mutations\"));\n debug(\"Submitted txnIds: \".concat(this.submitted.map(m => m.transactionId).join(\", \")));\n debug(\"Pending txnIds: \".concat(this.pending.map(m => m.transactionId).join(\", \")));\n debug(\"needRebase === %s\", needRebase);\n }\n return needRebase;\n }\n debug(\"Remote mutation %s arrived w/o any pending or submitted local mutations\", mut.transactionId);\n this.EDGE = this.HEAD;\n if (this.onMutation) {\n this.onMutation({\n mutation: mut,\n document: this.EDGE,\n remote: true\n });\n }\n return false;\n }\n /**\n * Returns true if there are unresolved mutations between HEAD and EDGE, meaning we have\n * mutations that are still waiting to be either submitted, or to be confirmed by the server.\n *\n * @returns true if there are unresolved mutations between HEAD and EDGE, false otherwise\n */\n hasUnresolvedMutations() {\n return this.submitted.length > 0 || this.pending.length > 0;\n }\n /**\n * When an incoming mutation is applied to HEAD, this is called to remove the mutation from\n * the unresolved state. If the newly applied patch is the next upcoming unresolved mutation,\n * no rebase is needed, but we might have the wrong idea about the ordering of mutations, so in\n * that case we are given the flag `needRebase` to tell us that this mutation arrived out of\n * order in terms of our optimistic version, so a rebase is needed.\n *\n * @param txnId - Transaction ID of the remote mutation\n * @returns true if rebase is needed, false otherwise\n */\n consumeUnresolved(txnId) {\n if (this.submitted.length === 0 && this.pending.length === 0) {\n return false;\n }\n if (this.submitted.length !== 0) {\n if (this.submitted[0].transactionId === txnId) {\n debug(\"Remote mutation %s matches upcoming submitted mutation, consumed from 'submitted' buffer\", txnId);\n this.submitted.shift();\n return false;\n }\n } else if (this.pending.length > 0 && this.pending[0].transactionId === txnId) {\n debug(\"Remote mutation %s matches upcoming pending mutation, consumed from 'pending' buffer\", txnId);\n this.pending.shift();\n return false;\n }\n debug(\"The mutation was not the upcoming mutation, scrubbing. Pending: %d, Submitted: %d\", this.pending.length, this.submitted.length);\n this.submitted = this.submitted.filter(mut => mut.transactionId !== txnId);\n this.pending = this.pending.filter(mut => mut.transactionId !== txnId);\n debug(\"After scrubbing: Pending: %d, Submitted: %d\", this.pending.length, this.submitted.length);\n return true;\n }\n pendingSuccessfullySubmitted(pendingTxnId) {\n if (this.pending.length === 0) {\n return;\n }\n const first = this.pending[0];\n if (first.transactionId === pendingTxnId) {\n this.pending.shift();\n this.submitted.push(first);\n return;\n }\n let justSubmitted;\n const stillPending = [];\n this.pending.forEach(mutation => {\n if (mutation.transactionId === pendingTxnId) {\n justSubmitted = mutation;\n return;\n }\n stillPending.push(mutation);\n });\n if (justSubmitted) {\n this.submitted.push(justSubmitted);\n }\n this.pending = stillPending;\n this.rebase([]);\n }\n pendingFailed(pendingTxnId) {\n this.pending = this.pending.filter(mutation => mutation.transactionId !== pendingTxnId);\n this.rebase([]);\n }\n rebase(incomingMutations) {\n const oldEdge = this.EDGE;\n this.EDGE = Mutation.applyAll(this.HEAD, this.submitted.concat(this.pending));\n if (oldEdge !== null && this.EDGE !== null) {\n oldEdge._rev = this.EDGE._rev;\n }\n const changed = !isEqual(this.EDGE, oldEdge);\n if (changed && this.onRebase) {\n this.onRebase(this.EDGE, incomingMutations, this.pending);\n }\n }\n}\nvar __defProp$1 = Object.defineProperty;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value\n}) : obj[key] = value;\nvar __publicField$1 = (obj, key, value) => {\n __defNormalProp$1(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nclass SquashingBuffer {\n constructor(doc) {\n /**\n * The document forming the basis of this squash\n */\n __publicField$1(this, \"BASIS\");\n /**\n * The document after the out-Mutation has been applied, but before the staged\n * operations are committed.\n */\n __publicField$1(this, \"PRESTAGE\");\n /**\n * setOperations contain the latest set operation by path. If the set-operations are\n * updating strings to new strings, they are rewritten as diffMatchPatch operations,\n * any new set operations on the same paths overwrites any older set operations.\n * Only set-operations assigning plain values to plain values gets optimized like this.\n */\n __publicField$1(this, \"setOperations\");\n /**\n * `documentPresent` is true whenever we know that the document must be present due\n * to preceeding mutations. `false` implies that it may or may not already exist.\n */\n __publicField$1(this, \"documentPresent\");\n /**\n * The operations in the out-Mutation are not able to be optimized any further\n */\n __publicField$1(this, \"out\", []);\n /**\n * Staged mutation operations\n */\n __publicField$1(this, \"staged\");\n if (doc) {\n debug(\"Reset mutation buffer to rev %s\", doc._rev);\n } else {\n debug(\"Reset mutation buffer state to document being deleted\");\n }\n this.staged = [];\n this.setOperations = {};\n this.documentPresent = false;\n this.BASIS = doc;\n this.PRESTAGE = doc;\n }\n add(mut) {\n mut.mutations.forEach(op => this.addOperation(op));\n }\n hasChanges() {\n return this.out.length > 0 || Object.keys(this.setOperations).length > 0;\n }\n /**\n * Extracts the mutations in this buffer.\n * After this is done, the buffer lifecycle is over and the client should\n * create an new one with the new, updated BASIS.\n *\n * @param txnId - Transaction ID\n * @returns A `Mutation` instance if we had outgoing mutations pending, null otherwise\n */\n purge(txnId) {\n this.stashStagedOperations();\n let result = null;\n if (this.out.length > 0) {\n debug(\"Purged mutation buffer\");\n result = new Mutation({\n mutations: this.out,\n resultRev: txnId,\n transactionId: txnId\n });\n }\n this.out = [];\n this.documentPresent = false;\n return result;\n }\n addOperation(op) {\n var _a;\n if (op.patch && op.patch.set && \"id\" in op.patch && op.patch.id === ((_a = this.PRESTAGE) == null ? void 0 : _a._id) && Object.keys(op.patch).length === 2) {\n const setPatch = op.patch.set;\n const unoptimizable = {};\n for (const path of Object.keys(setPatch)) {\n if (setPatch.hasOwnProperty(path)) {\n if (!this.optimiseSetOperation(path, setPatch[path])) {\n unoptimizable[path] = setPatch[path];\n }\n }\n }\n if (Object.keys(unoptimizable).length > 0) {\n debug(\"Unoptimizable set-operation detected, purging optimization buffer\");\n this.staged.push({\n patch: {\n id: this.PRESTAGE._id,\n set: unoptimizable\n }\n });\n this.stashStagedOperations();\n }\n return;\n }\n if (op.createIfNotExists && this.PRESTAGE && op.createIfNotExists._id === this.PRESTAGE._id) {\n if (!this.documentPresent) {\n this.staged.push(op);\n this.documentPresent = true;\n this.stashStagedOperations();\n }\n return;\n }\n debug(\"Unoptimizable mutation detected, purging optimization buffer\");\n this.staged.push(op);\n this.stashStagedOperations();\n }\n /**\n * Attempt to perform one single set operation in an optimised manner, return value\n * reflects whether or not the operation could be performed.\n \n * @param path - The JSONPath to the set operation in question\n * @param nextValue - The value to be set\n * @returns True of optimized, false otherwise\n */\n optimiseSetOperation(path, nextValue) {\n if (typeof nextValue === \"object\") {\n return false;\n }\n const matches = extractWithPath(path, this.PRESTAGE);\n if (matches.length !== 1) {\n return false;\n }\n const match = matches[0];\n if (typeof match.value === \"object\") {\n return false;\n }\n if (!this.PRESTAGE) {\n return false;\n }\n let op = null;\n if (match.value === nextValue) {\n op = null;\n } else if (typeof match.value === \"string\" && typeof nextValue === \"string\") {\n try {\n const patch = stringifyPatches(makePatches(match.value, nextValue));\n op = {\n patch: {\n id: this.PRESTAGE._id,\n diffMatchPatch: {\n [path]: patch\n }\n }\n };\n } catch {\n return false;\n }\n } else {\n op = {\n patch: {\n id: this.PRESTAGE._id,\n set: {\n [path]: nextValue\n }\n }\n };\n }\n const canonicalPath = arrayToJSONMatchPath(match.path);\n if (op) {\n this.setOperations[canonicalPath] = op;\n } else {\n delete this.setOperations[canonicalPath];\n }\n return true;\n }\n stashStagedOperations() {\n const nextOps = [];\n Object.keys(this.setOperations).forEach(key => {\n const op = this.setOperations[key];\n if (op) {\n nextOps.push(op);\n }\n });\n nextOps.push(...this.staged);\n if (nextOps.length > 0) {\n this.PRESTAGE = new Mutation({\n mutations: nextOps\n }).apply(this.PRESTAGE);\n this.staged = [];\n this.setOperations = {};\n }\n this.out.push(...nextOps);\n }\n /**\n * Rebases given the new base-document\n *\n * @param newBasis - New base document to rebase on\n * @returns New \"edge\" document with buffered changes integrated\n */\n rebase(newBasis) {\n this.stashStagedOperations();\n if (newBasis === null) {\n this.out = [];\n this.BASIS = newBasis;\n this.PRESTAGE = newBasis;\n this.documentPresent = false;\n } else {\n this.BASIS = newBasis;\n if (this.out) {\n this.PRESTAGE = new Mutation({\n mutations: this.out\n }).apply(this.BASIS);\n } else {\n this.PRESTAGE = this.BASIS;\n }\n }\n return this.PRESTAGE;\n }\n}\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value\n}) : obj[key] = value;\nvar __publicField = (obj, key, value) => {\n __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nconst ONE_MINUTE = 1e3 * 60;\nclass Commit {\n constructor(mutations, _ref) {\n let {\n resolve,\n reject\n } = _ref;\n __publicField(this, \"mutations\");\n __publicField(this, \"tries\");\n __publicField(this, \"resolve\");\n __publicField(this, \"reject\");\n this.mutations = mutations;\n this.tries = 0;\n this.resolve = resolve;\n this.reject = reject;\n }\n apply(doc) {\n return Mutation.applyAll(doc, this.mutations);\n }\n squash(doc) {\n const result = Mutation.squash(doc, this.mutations);\n result.assignRandomTransactionId();\n return result;\n }\n}\nconst mutReducerFn = (acc, mut) => acc.concat(mut.mutations);\nclass BufferedDocument {\n constructor(doc) {\n __publicField(this, \"mutations\");\n /**\n * The Document we are wrapping\n */\n __publicField(this, \"document\");\n /**\n * The Document with local changes applied\n */\n __publicField(this, \"LOCAL\");\n /**\n * Commits that are waiting to be delivered to the server\n */\n __publicField(this, \"commits\");\n /**\n * Local mutations that are not scheduled to be committed yet\n */\n __publicField(this, \"buffer\");\n /**\n * Assignable event handler for when the buffered document applies a mutation\n */\n __publicField(this, \"onMutation\");\n /**\n * Assignable event handler for when a remote mutation happened\n */\n __publicField(this, \"onRemoteMutation\");\n /**\n * Assignable event handler for when the buffered document rebased\n */\n __publicField(this, \"onRebase\");\n /**\n * Assignable event handler for when the document is deleted\n */\n __publicField(this, \"onDelete\");\n /**\n * Assignable event handler for when the state of consistency changed\n */\n __publicField(this, \"onConsistencyChanged\");\n /**\n * Assignable event handler for when the buffered document should commit changes\n */\n __publicField(this, \"commitHandler\");\n /**\n * Whether or not we are currently commiting\n */\n __publicField(this, \"committerRunning\", false);\n this.buffer = new SquashingBuffer(doc);\n this.document = new Document(doc);\n this.document.onMutation = msg => this.handleDocMutation(msg);\n this.document.onRemoteMutation = mut => this.onRemoteMutation && this.onRemoteMutation(mut);\n this.document.onRebase = (edge, remoteMutations, localMutations) => this.handleDocRebase(edge, remoteMutations, localMutations);\n this.document.onConsistencyChanged = msg => this.handleDocConsistencyChanged(msg);\n this.LOCAL = doc;\n this.mutations = [];\n this.commits = [];\n }\n // Used to reset the state of the local document model. If the model has been inconsistent\n // for too long, it has probably missed a notification, and should reload the document from the server\n reset(doc) {\n if (doc) {\n debug(\"Document state reset to revision %s\", doc._rev);\n } else {\n debug(\"Document state reset to being deleted\");\n }\n this.document.reset(doc);\n this.rebase([], []);\n this.handleDocConsistencyChanged(this.document.isConsistent());\n }\n // Add a change to the buffer\n add(mutation) {\n if (this.onConsistencyChanged) {\n this.onConsistencyChanged(false);\n }\n debug(\"Staged local mutation\");\n this.buffer.add(mutation);\n const oldLocal = this.LOCAL;\n this.LOCAL = mutation.apply(this.LOCAL);\n if (this.onMutation && oldLocal !== this.LOCAL) {\n debug(\"onMutation fired\");\n this.onMutation({\n mutation,\n document: this.LOCAL,\n remote: false\n });\n if (this.LOCAL === null && this.onDelete) {\n this.onDelete(this.LOCAL);\n }\n }\n }\n // Call when a mutation arrives from Sanity\n arrive(mutation) {\n debug(\"Remote mutation arrived %s -> %s\", mutation.previousRev, mutation.resultRev);\n if (mutation.previousRev === mutation.resultRev) {\n throw new Error(\"Mutation \".concat(mutation.transactionId, \" has previousRev === resultRev (\").concat(mutation.previousRev, \")\"));\n }\n return this.document.arrive(mutation);\n }\n // Submit all mutations in the buffer to be committed\n commit() {\n return new Promise((resolve, reject) => {\n if (!this.buffer.hasChanges()) {\n resolve();\n return;\n }\n debug(\"Committing local changes\");\n const pendingMutations = this.buffer.purge();\n this.commits.push(new Commit(pendingMutations ? [pendingMutations] : [], {\n resolve,\n reject\n }));\n this.buffer = new SquashingBuffer(this.LOCAL);\n this.performCommits();\n });\n }\n // Starts the committer that will try to committ all staged commits to the database\n // by calling the commitHandler. Will keep running until all commits are successfully\n // committed.\n performCommits() {\n if (!this.commitHandler) {\n throw new Error(\"No commitHandler configured for this BufferedDocument\");\n }\n if (this.committerRunning) {\n return;\n }\n this._cycleCommitter();\n }\n // TODO: Error handling, right now retries after every error\n _cycleCommitter() {\n const commit = this.commits.shift();\n if (!commit) {\n this.committerRunning = false;\n return;\n }\n this.committerRunning = true;\n const squashed = commit.squash(this.LOCAL);\n const docResponder = this.document.stage(squashed, true);\n const responder = {\n success: () => {\n debug(\"Commit succeeded\");\n docResponder.success();\n commit.resolve();\n this._cycleCommitter();\n },\n failure: () => {\n debug(\"Commit failed\");\n commit.tries += 1;\n if (this.LOCAL !== null) {\n this.commits.unshift(commit);\n }\n docResponder.failure();\n if (commit.tries < 200) {\n setTimeout(() => this._cycleCommitter(), Math.min(commit.tries * 1e3, ONE_MINUTE));\n }\n },\n cancel: error => {\n this.commits.forEach(comm => comm.reject(error));\n this.commits = [];\n this.reset(this.document.HEAD);\n this.buffer = new SquashingBuffer(this.LOCAL);\n this.committerRunning = false;\n }\n };\n debug(\"Posting commit\");\n if (this.commitHandler) {\n this.commitHandler({\n mutation: squashed,\n success: responder.success,\n failure: responder.failure,\n cancel: responder.cancel\n });\n }\n }\n handleDocRebase(edge, remoteMutations, localMutations) {\n this.rebase(remoteMutations, localMutations);\n }\n handleDocumentDeleted() {\n debug(\"Document deleted\");\n if (this.LOCAL !== null && this.onDelete) {\n this.onDelete(this.LOCAL);\n }\n this.commits = [];\n this.mutations = [];\n }\n handleDocMutation(msg) {\n if (this.commits.length === 0 && !this.buffer.hasChanges()) {\n debug(\"Document mutated from remote with no local changes\");\n this.LOCAL = this.document.EDGE;\n this.buffer = new SquashingBuffer(this.LOCAL);\n if (this.onMutation) {\n this.onMutation(msg);\n }\n return;\n }\n debug(\"Document mutated from remote with local changes\");\n if (this.document.EDGE === null) {\n this.handleDocumentDeleted();\n }\n this.rebase([msg.mutation], []);\n }\n rebase(remoteMutations, localMutations) {\n debug(\"Rebasing document\");\n if (this.document.EDGE === null) {\n this.handleDocumentDeleted();\n }\n const oldLocal = this.LOCAL;\n this.LOCAL = this.commits.reduce((doc, commit) => commit.apply(doc), this.document.EDGE);\n this.LOCAL = this.buffer.rebase(this.LOCAL);\n if (oldLocal !== null && this.LOCAL !== null) {\n oldLocal._rev = this.LOCAL._rev;\n }\n const changed = !isEqual(this.LOCAL, oldLocal);\n if (changed && this.onRebase) {\n this.onRebase(this.LOCAL, remoteMutations.reduce(mutReducerFn, []), localMutations.reduce(mutReducerFn, []));\n }\n }\n handleDocConsistencyChanged(isConsistent) {\n if (!this.onConsistencyChanged) {\n return;\n }\n const hasLocalChanges = this.commits.length > 0 || this.buffer.hasChanges();\n if (isConsistent && !hasLocalChanges) {\n this.onConsistencyChanged(true);\n }\n if (!isConsistent) {\n this.onConsistencyChanged(false);\n }\n }\n}\nexport { BufferedDocument, Mutation, arrayToJSONMatchPath, extract, extractWithPath };\n//# sourceMappingURL=index.esm.js.map\n","import {\n BlockContentIcon,\n BlockquoteIcon,\n DocumentIcon,\n ImageIcon,\n LinkIcon,\n OlistIcon,\n StringIcon,\n} from '@sanity/icons'\nimport {\n ArraySchemaType,\n isKeySegment,\n isObjectSchemaType,\n ObjectSchemaType,\n Path,\n pathToString,\n SanityDocumentLike,\n SchemaType,\n stringToPath,\n} from 'sanity'\nimport {ComponentType, useContext, useMemo} from 'react'\nimport {AssistInspectorRouteParams, documentRootKey, fieldPathParam} from '../types'\nimport {usePaneRouter} from 'sanity/desk'\nimport {isAssistSupported} from '../helpers/assistSupported'\nimport {isPortableTextArray, isType} from '../helpers/typeUtils'\nimport {SelectedFieldContext} from '../assistDocument/components/SelectedFieldContext'\nimport {extractWithPath} from '@sanity/mutator'\n\nexport interface FieldRef {\n key: string\n path: Path\n title: string\n schemaType: SchemaType\n icon: ComponentType\n synthetic?: boolean\n}\n\nconst maxDepth = 6\n\nexport function getTypeIcon(schemaType: SchemaType) {\n let t: SchemaType | undefined = schemaType\n\n while (t) {\n if (t.icon) return t.icon\n t = t.type\n }\n\n if (isType(schemaType, 'slug')) return LinkIcon\n if (isType(schemaType, 'image')) return ImageIcon\n if (schemaType.jsonType === 'array' && isPortableTextArray(schemaType)) return BlockContentIcon\n\n if (schemaType.jsonType === 'array') return OlistIcon\n if (schemaType.jsonType === 'object') return BlockquoteIcon\n if (schemaType.jsonType === 'string') return StringIcon\n\n return DocumentIcon\n}\n\nexport function getFieldRefsWithDocument(schemaType: ObjectSchemaType): FieldRef[] {\n const fields = getFieldRefs(schemaType)\n return [\n {\n key: documentRootKey,\n icon: schemaType.icon ?? DocumentIcon,\n title: `The entire document`,\n path: [],\n schemaType: schemaType,\n },\n\n ...fields,\n ]\n}\n\nexport function getFieldRefs(\n schemaType: ObjectSchemaType,\n parent?: FieldRef,\n depth = 0\n): FieldRef[] {\n if (depth >= maxDepth) {\n return []\n }\n return schemaType.fields\n .filter((f) => !f.name.startsWith('_'))\n .flatMap((field) => {\n const path: Path = parent ? [...parent.path, field.name] : [field.name]\n const title = field.type.title ?? field.name\n const fieldRef: FieldRef = {\n key: patchableKey(pathToString(path)),\n path,\n title: parent ? [parent.title, title].join(' / ') : title,\n schemaType: field.type,\n icon: getTypeIcon(field.type),\n }\n const fields =\n field.type.jsonType === 'object' ? getFieldRefs(field.type, fieldRef, depth + 1) : []\n\n const syntheticFields =\n field.type.jsonType === 'array' ? getSyntheticFields(field.type, fieldRef, depth + 1) : []\n if (!isAssistSupported(field.type, true)) {\n return [...fields, ...syntheticFields]\n }\n return [fieldRef, ...fields, ...syntheticFields]\n })\n}\n\nfunction getSyntheticFields(schemaType: ArraySchemaType, parent?: FieldRef, depth = 0) {\n if (depth >= maxDepth) {\n return []\n }\n\n return schemaType.of\n .filter((itemType) => !isType(itemType, 'block'))\n .flatMap((itemType) => {\n const segment = {_key: itemType.name}\n const title = itemType.title ?? itemType.name\n const path: Path = parent ? [...parent.path, segment] : [segment]\n const fieldRef: FieldRef = {\n key: patchableKey(pathToString(path)),\n path,\n title: parent ? [parent.title, title].join(' / ') : title,\n schemaType: itemType,\n icon: getTypeIcon(itemType),\n synthetic: true,\n }\n const fields =\n itemType.jsonType === 'object' ? getFieldRefs(itemType, fieldRef, depth + 1) : []\n\n if (!isAssistSupported(itemType, true)) {\n return fields\n }\n return [fieldRef, ...fields]\n })\n}\n\nexport function getTypePath(doc: SanityDocumentLike, pathString: string) {\n if (!pathString) {\n return undefined\n }\n\n const path = stringToPath(pathString)\n const currentPath: Path = []\n let valid = true\n const syntheticPath = path.map((segment) => {\n currentPath.push(segment)\n\n if (isKeySegment(segment)) {\n const match = extractWithPath(pathToString(currentPath), doc)[0]\n const value = match?.value\n if (match && value && typeof value === 'object' && '_type' in value) {\n return {_key: value._type as string}\n }\n valid = false\n }\n return segment\n })\n\n return valid ? patchableKey(pathToString(syntheticPath)) : undefined\n}\n\n/**\n * mutator crashes if path contains certain letters\n * @param pathKey\n */\nfunction patchableKey(pathKey: string) {\n return pathKey.replace(/[=]=/g, ':').replace(/[[\\]]/g, '|').replace(/\"/g, '')\n}\n\nexport function useTypePath(doc: SanityDocumentLike, pathString: string) {\n return useMemo(() => getTypePath(doc, pathString), [doc, pathString])\n}\n\nexport function useSelectedField(\n documentSchemaType?: SchemaType,\n path?: string\n): FieldRef | undefined {\n const selectableFields = useMemo(\n () =>\n documentSchemaType && isObjectSchemaType(documentSchemaType)\n ? getFieldRefsWithDocument(documentSchemaType)\n : [],\n [documentSchemaType]\n )\n\n return useMemo(() => {\n return path ? selectableFields?.find((f) => f.key === path) : undefined\n }, [selectableFields, path])\n}\n\nexport function useSelectedFieldTitle() {\n const {params} = useAiPaneRouter()\n const {documentSchema} = useContext(SelectedFieldContext) ?? {}\n const selectedField = useSelectedField(documentSchema, params[fieldPathParam])\n return getFieldTitle(selectedField)\n}\n\nexport function getFieldTitle(field?: FieldRef) {\n const schemaType = field?.schemaType\n return field?.title ?? schemaType?.title ?? schemaType?.name ?? 'Untitled'\n}\n\nexport function useAiPaneRouter() {\n const paneRouter = usePaneRouter()\n\n return useMemo(\n () =>\n ({...paneRouter, params: paneRouter.params ?? {}} as Omit<\n typeof paneRouter,\n 'setParams' | 'params'\n > & {\n params: AssistInspectorRouteParams\n setParams: (p: Record<keyof AssistInspectorRouteParams, string | undefined>) => void\n }),\n [paneRouter]\n )\n}\n","import {useEditState} from 'sanity'\n\nexport function useDocumentState<T>(id: string, docType: string): T | undefined {\n const state = useEditState(id, docType)\n return (state.draft || state.published) as T | undefined\n}\n","import {assistDocumentIdPrefix, assistDocumentStatusIdPrefix} from '../types'\n\nconst aiDocPrefixPattern = new RegExp(`^${assistDocumentIdPrefix}`)\n\nexport function publicId(id: string) {\n return id.replace('drafts.', '')\n}\n\nexport function assistDocumentId(documentType: string) {\n return `${assistDocumentIdPrefix}${documentType}`\n}\n\nexport function documentTypeFromAiDocumentId(id: string) {\n return id.replace(aiDocPrefixPattern, '')\n}\n\nexport function assistTasksStatusId(documentId: string) {\n return `${assistDocumentStatusIdPrefix}${publicId(documentId)}`\n}\n","import {minutesToMilliseconds} from 'date-fns'\n\nexport const releaseAnnouncementUrl =\n 'https://www.sanity.io/blog/sanity-ai-assist-announcement?utm_source=sanity-assist-plugin&utm_medium=organic_social&utm_campaign=ai-assist&utm_content='\n\nexport const instructionGuideUrl =\n 'https://sanity.io/guides/getting-started-with-ai-assist-instructions?utm_source=sanity-assist-plugin&utm_medium=organic_social&utm_campaign=ai-assist&utm_content='\n\nexport const giveFeedbackUrl = 'https://forms.gle/Kwz7CThxGeA2GiEU8'\n\nexport const salesUrl =\n 'https://www.sanity.io/contact/sales?utm_source=sanity-assist-plugin&utm_medium=organic_social&utm_campaign=ai-assist&utm_content='\n\nexport const packageName = '@sanity/assist'\n\nexport const pluginTitle = 'Sanity AI Assist'\n\nexport const pluginTitleShort = 'AI Assist'\n\nexport const maxHistoryVisibilityMs = minutesToMilliseconds(30)\n","import {useEffect, useMemo} from 'react'\nimport {\n assistDocumentTypeName,\n AssistTasksStatus,\n assistTasksStatusTypeName,\n FieldRef,\n fieldReferenceTypeName,\n InstructionTask,\n StudioAssistDocument,\n StudioAssistField,\n StudioInstruction,\n} from '../../types'\nimport {\n ObjectSchemaType,\n pathToString,\n typed,\n useClient,\n useCurrentUser,\n useValidationStatus,\n ValidationMarker,\n} from 'sanity'\nimport {useDocumentState} from './useDocumentState'\nimport {assistDocumentId, assistTasksStatusId, publicId} from '../../helpers/ids'\nimport {maxHistoryVisibilityMs} from '../../constants'\n\ninterface UseAssistDocumentProps {\n documentId: string\n schemaType: ObjectSchemaType\n}\n\nexport function useStudioAssistDocument({\n documentId,\n schemaType,\n}: UseAssistDocumentProps): StudioAssistDocument | undefined {\n const documentTypeName = schemaType.name\n const currentUser = useCurrentUser()\n\n const validation = useValidationStatus(publicId(documentId), schemaType.name).validation\n const assistDocument = useDocumentState<StudioAssistDocument>(\n assistDocumentId(documentTypeName),\n assistDocumentTypeName\n )\n const assistTasksStatus = useDocumentState<AssistTasksStatus>(\n assistTasksStatusId(documentId ?? ''),\n assistTasksStatusTypeName\n )\n\n const client = useClient({apiVersion: '2023-01-01'})\n\n useEffect(() => {\n if (!assistDocument) {\n client.createIfNotExists({\n _id: assistDocumentId(documentTypeName),\n _type: assistDocumentTypeName,\n })\n }\n }, [client, assistDocument, documentTypeName])\n\n return useMemo(() => {\n if (!assistDocument) {\n return undefined\n }\n const tasks = assistTasksStatus?.tasks ?? []\n const fields = (assistDocument?.fields ?? []).map((assistField): StudioAssistField => {\n return {\n ...assistField,\n tasks: tasks.filter((task) => task.path === assistField.path),\n instructions: assistField.instructions\n ?.filter((p) => !p.userId || p.userId === currentUser?.id)\n .map((instruction) => asStudioInstruction(instruction, tasks, validation)),\n }\n })\n return typed<StudioAssistDocument>({\n ...assistDocument,\n tasks: tasks?.map((task) => {\n const instruction = fields\n .find((f) => f.path === task.path)\n ?.instructions?.find((i) => i._key === task.instructionKey)\n return {\n ...task,\n instruction,\n }\n }),\n fields: fields,\n })\n }, [assistDocument, assistTasksStatus, currentUser, validation])\n}\n\nfunction asStudioInstruction(\n instruction: StudioInstruction,\n run: InstructionTask[],\n validation: ValidationMarker[]\n): StudioInstruction {\n const errors = validation.filter((marker) => marker.level === 'error')\n\n const fieldRefs: FieldRef[] = (instruction?.prompt ?? []).flatMap((block) => {\n if (block._type === 'block') {\n return block.children.filter((c): c is FieldRef => c._type === fieldReferenceTypeName)\n }\n return []\n })\n\n return {\n ...instruction,\n tasks: run\n .filter((task) => task.instructionKey === instruction._key)\n .filter(\n (task) =>\n task.started &&\n new Date().getTime() - new Date(task.started).getTime() < maxHistoryVisibilityMs\n ),\n validation: errors.filter((marker) =>\n fieldRefs\n .map((r) => r.path)\n .filter((p): p is string => !!p)\n .find((path) => pathToString(marker.path) === path)\n ),\n }\n}\n","import {useEffect, useReducer} from 'react'\nimport formatDistanceToNow from 'date-fns/formatDistanceToNow'\n\nfunction useInterval(ms: number) {\n const [tick, update] = useReducer((n) => n + 1, 0)\n\n useEffect(() => {\n const i = setInterval(update, ms)\n return () => clearInterval(i)\n }, [ms])\n return tick\n}\n\nexport function TimeAgo({date}: {date?: string}) {\n useInterval(1000)\n const timeSince = formatDistanceToNow(date ? new Date(date) : new Date())\n return <span title={timeSince}>{timeSince} ago</span>\n}\n","import {documentRootKey, StudioInstruction} from '../types'\nimport {Path, pathToString} from 'sanity'\nimport {useMemo} from 'react'\n\nexport function usePathKey(path: Path | string) {\n return useMemo(() => {\n if (path.length) {\n return Array.isArray(path) ? pathToString(path) : path\n }\n return documentRootKey\n }, [path])\n}\n\nexport function getInstructionTitle(instruction?: StudioInstruction) {\n return instruction?.title ?? 'Untitled'\n}\n","import {AssistTasksStatus, InstructionTask, StudioInstruction, TaskEndedReason} from '../types'\nimport {createElement, ForwardedRef, forwardRef, useCallback, useMemo, useState} from 'react'\nimport {\n Box,\n Button,\n Card,\n Flex,\n Popover,\n Spinner,\n Stack,\n Text,\n useClickOutside,\n useGlobalKeyDown,\n useLayer,\n} from '@sanity/ui'\nimport {\n CheckmarkCircleIcon,\n ClockIcon,\n CloseCircleIcon,\n ErrorOutlineIcon,\n SyncIcon,\n} from '@sanity/icons'\nimport {TimeAgo} from '../components/TimeAgo'\nimport {StatusButton, StatusButtonProps, typed, useClient} from 'sanity'\nimport {getInstructionTitle} from '../helpers/misc'\nimport styled, {keyframes} from 'styled-components'\nimport {assistTasksStatusId} from '../helpers/ids'\nimport {maxHistoryVisibilityMs, pluginTitle} from '../constants'\n\nexport interface InstructionTaskHistoryButtonProps {\n documentId?: string\n tasks: InstructionTask[] | undefined\n instructions: StudioInstruction[] | undefined\n showTitles: boolean\n}\n\ninterface CancelableInstructionTask extends InstructionTask {\n cancel: () => void\n title?: string\n}\n\nconst rotate = keyframes`\n 0% {\n transform: rotate(0);\n }\n 100% {\n transform: rotate(360deg);\n }\n`\n\nconst SyncSpinningIcon = styled(SyncIcon)`\n animation: ${rotate} 1s linear infinite;\n`\n\nconst TASK_CONFIG = {\n aborted: {\n title: 'Canceled',\n icon: CloseCircleIcon,\n tone: 'transparent',\n },\n error: {\n title: 'Error',\n icon: ErrorOutlineIcon,\n tone: 'critical',\n },\n success: {\n title: 'Completed',\n icon: CheckmarkCircleIcon,\n tone: 'positive',\n },\n timeout: {\n title: 'Timeout',\n icon: ClockIcon,\n tone: 'caution',\n },\n} as const\n\nexport function InstructionTaskHistoryButton(props: InstructionTaskHistoryButtonProps) {\n const {tasks, instructions, documentId, showTitles} = props\n\n const client = useClient({apiVersion: '2023-01-01'})\n const cancelRun = useCallback(\n (taskKey: string) => {\n if (!documentId) {\n return\n }\n const statusDocId = assistTasksStatusId(documentId)\n const basePath = `${typed<keyof AssistTasksStatus>('tasks')}[_key==\"${taskKey}\"]`\n client\n .patch(statusDocId)\n .set({\n [`${basePath}.${typed<keyof InstructionTask>('ended')}`]: new Date().toISOString(),\n [`${basePath}.${typed<keyof InstructionTask>('reason')}`]:\n typed<TaskEndedReason>('aborted'),\n })\n .commit()\n .catch(console.error)\n },\n [client, documentId]\n )\n\n const titledTasks = useMemo(() => {\n const t =\n tasks\n ?.filter(\n (task) =>\n task.started &&\n new Date().getTime() - new Date(task.started).getTime() < maxHistoryVisibilityMs\n )\n .map((task): CancelableInstructionTask => {\n const instruction = instructions?.find((i) => i._key === task.instructionKey)\n return {\n ...task,\n title: showTitles ? task.title ?? getInstructionTitle(instruction) : undefined,\n cancel: () => cancelRun(task._key),\n }\n }) ?? []\n t.sort((a, b) => new Date(b.started ?? '').getTime() - new Date(a.started ?? '').getTime())\n return t\n }, [tasks, instructions, cancelRun, showTitles])\n\n // const id = useId()\n\n const isRunning = useMemo(() => titledTasks.some((r) => !r.ended), [titledTasks])\n const hasErrors = useMemo(\n () => titledTasks.some((r) => r.reason === 'error' || r.reason === 'timeout'),\n [titledTasks]\n )\n\n const [open, setOpen] = useState(false)\n\n const toggleOpen = useCallback(() => setOpen((v) => !v), [])\n\n const [button, setButton] = useState<HTMLButtonElement | null>(null)\n const [popover, setPopover] = useState<HTMLDivElement | null>(null)\n\n const handleClickOutside = useCallback(() => {\n setOpen(false)\n }, [])\n\n useClickOutside(handleClickOutside, [button, popover])\n\n const handleEscape = useCallback(() => {\n setOpen(false)\n button?.focus()\n }, [button])\n\n return (\n <Popover\n constrainSize\n content={<TaskList onEscape={handleEscape} tasks={titledTasks} />}\n open={open && !!titledTasks?.length}\n placement=\"top\"\n portal\n ref={setPopover}\n width={0}\n >\n <TaskStatusButton\n disabled={!titledTasks?.length}\n hasErrors={hasErrors}\n isRunning={isRunning}\n onClick={toggleOpen}\n ref={setButton}\n selected={open}\n />\n </Popover>\n )\n}\n\nconst TASK_STATUS_BUTTON_TOOLTIP_PROPS: StatusButtonProps['tooltip'] = {\n placement: 'top',\n}\n\nconst TaskStatusButton = forwardRef(function TaskStatusButton(\n props: {\n disabled: boolean\n hasErrors: boolean\n isRunning: boolean\n onClick: () => void\n selected: boolean\n },\n ref: ForwardedRef<HTMLButtonElement>\n) {\n const {disabled, hasErrors, isRunning, onClick, selected} = props\n\n return (\n <StatusButton\n label={`${pluginTitle} status`}\n icon={isRunning ? SyncSpinningIcon : hasErrors ? ErrorOutlineIcon : CheckmarkCircleIcon}\n mode=\"bleed\"\n onClick={onClick}\n tone={hasErrors ? 'critical' : undefined}\n fontSize={1}\n disabled={disabled}\n ref={ref}\n selected={selected}\n tooltip={TASK_STATUS_BUTTON_TOOLTIP_PROPS}\n />\n )\n})\n\nfunction TaskList(props: {onEscape: () => void; tasks: CancelableInstructionTask[]}) {\n const {onEscape, tasks} = props\n\n const {isTopLayer} = useLayer()\n\n useGlobalKeyDown(\n useCallback(\n (event) => {\n if (isTopLayer && event.key === 'Escape') {\n onEscape()\n }\n },\n [isTopLayer, onEscape]\n )\n )\n\n return (\n <Stack padding={1} space={1}>\n {tasks.map((task) => (\n <TaskItem key={task._key} task={task} />\n ))}\n </Stack>\n )\n}\n\nfunction TaskItem(props: {task: CancelableInstructionTask}) {\n const {task} = props\n\n const taskType = task.reason && TASK_CONFIG[task.reason]\n return (\n <Card radius={2} tone={taskType && taskType?.tone}>\n <Flex align=\"center\" gap={1}>\n <Flex align=\"flex-start\" flex={1} gap={3} padding={3}>\n <Box flex=\"none\">\n <Text size={1}>\n {taskType && createElement(taskType.icon)}\n {!task.reason && <Spinner />}\n </Text>\n </Box>\n <Stack flex={1} space={2}>\n <Text size={1} weight=\"medium\">\n {taskType ? taskType.title : 'Running'}\n {task.title && <>: {task.title}</>}\n </Text>\n {task.message ? <Text size={1}>{task.message}</Text> : null}\n <Text muted size={1}>\n <TimeAgo date={task.ended ?? task.started} />\n </Text>\n </Stack>\n </Flex>\n\n {!task.ended && (\n <Box flex=\"none\" padding={1}>\n <Button fontSize={1} mode=\"bleed\" onClick={task.cancel} text=\"Cancel\" />\n </Box>\n )}\n </Flex>\n </Card>\n )\n}\n","import {useClient, useCurrentUser, useSchema} from 'sanity'\nimport {useCallback, useMemo, useState} from 'react'\nimport {serializeSchema} from './schemas/serialize/serializeSchema'\nimport {useToast} from '@sanity/ui'\nimport {SanityClient} from '@sanity/client'\n\nexport interface UserTextInstance {\n blockKey: string\n userInput: string\n}\n\nexport interface RunInstructionRequest {\n documentId: string\n assistDocumentId: string\n path: string\n typePath?: string\n instructionKey: string\n userId?: string\n userTexts?: UserTextInstance[]\n}\n\nexport interface InstructStatus {\n enabled: boolean\n initialized: boolean\n validToken: boolean\n}\n\nconst basePath = '/assist/tasks/instruction'\nconst editorialAiFieldActionFeature = 'editorialAiFieldActions'\n\nexport function useApiClient(customApiClient?: (defaultClient: SanityClient) => SanityClient) {\n const client = useClient({apiVersion: '2023-06-05'})\n return useMemo(\n () => (customApiClient ? customApiClient(client) : client),\n [client, customApiClient]\n )\n}\n\nexport function useGenerateCaption(apiClient: SanityClient) {\n const [loading, setLoading] = useState(false)\n const user = useCurrentUser()\n const schema = useSchema()\n const types = useMemo(() => serializeSchema(schema, {leanFormat: true}), [schema])\n const toast = useToast()\n\n const generateCaption = useCallback(\n ({path, documentId}: {path: string; documentId: string}) => {\n setLoading(true)\n\n return apiClient\n .request({\n method: 'POST',\n url: `/assist/tasks/generate-caption/${apiClient.config().dataset}?projectId=${\n apiClient.config().projectId\n }`,\n body: {\n path,\n documentId,\n types,\n userId: user?.id,\n },\n })\n .catch((e) => {\n toast.push({\n status: 'error',\n title: 'Generate caption failed',\n description: e.message,\n })\n setLoading(false)\n throw e\n })\n .finally(() => {\n // adding some artificial delay here\n // server responds with 201 then proceeds; we dont need to allow spamming the button\n setTimeout(() => {\n setLoading(false)\n }, 2000)\n })\n },\n [setLoading, apiClient, toast, user, types]\n )\n\n return useMemo(\n () => ({\n generateCaption,\n loading,\n }),\n [generateCaption, loading]\n )\n}\n\nexport function useGetInstructStatus(apiClient: SanityClient) {\n const [loading, setLoading] = useState(true)\n const projectClient = useClient({apiVersion: '2023-06-05'})\n\n const getInstructStatus = useCallback(async () => {\n setLoading(true)\n\n const projectId = apiClient.config().projectId\n try {\n const features = await projectClient.request<string[]>({\n method: 'GET',\n url: `/projects/${projectId}/features`,\n })\n\n const enabled = features.some((f) => f === editorialAiFieldActionFeature)\n\n const status = await apiClient.request<Omit<InstructStatus, 'enabled'>>({\n method: 'GET',\n url: `${basePath}/${apiClient.config().dataset}/status?projectId=${projectId}`,\n })\n\n return {\n ...status,\n enabled,\n }\n } finally {\n setLoading(false)\n }\n }, [setLoading, apiClient, projectClient])\n\n return {\n loading,\n getInstructStatus,\n }\n}\n\nexport function useInitInstruct(apiClient: SanityClient) {\n const [loading, setLoading] = useState(false)\n const initInstruct = useCallback(() => {\n setLoading(true)\n return apiClient\n .request({\n method: 'GET',\n url: `${basePath}/${apiClient.config().dataset}/init?projectId=${\n apiClient.config().projectId\n }`,\n })\n .finally(() => {\n setLoading(false)\n })\n }, [setLoading, apiClient])\n\n return {\n loading,\n initInstruct,\n }\n}\n\nexport function useRunInstructionApi(apiClient: SanityClient) {\n const toast = useToast()\n const [loading, setLoading] = useState(false)\n const user = useCurrentUser()\n const schema = useSchema()\n const types = useMemo(() => serializeSchema(schema, {leanFormat: true}), [schema])\n\n const runInstruction = useCallback(\n (request: RunInstructionRequest) => {\n setLoading(true)\n return apiClient\n .request({\n method: 'POST',\n url: `${basePath}/${apiClient.config().dataset}?projectId=${\n apiClient.config().projectId\n }`,\n body: {\n ...request,\n types,\n userId: user?.id,\n },\n })\n .catch((e) => {\n toast.push({\n status: 'error',\n title: 'Instruction failed',\n description: e.message,\n })\n throw e\n })\n .finally(() => {\n setLoading(false)\n })\n },\n [apiClient, types, user, toast]\n )\n\n return useMemo(\n () => ({\n runInstruction,\n loading,\n }),\n [runInstruction, loading]\n )\n}\n","import {\n createContext,\n ReactNode,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from 'react'\nimport {AssistPluginConfig} from '../plugin'\nimport {InstructStatus, useApiClient, useGetInstructStatus, useInitInstruct} from '../useApiClient'\n\nexport interface AiAssistanceConfigContextValue {\n config: AssistPluginConfig\n status?: InstructStatus\n statusLoading: boolean\n initLoading: boolean\n init: () => void\n error?: Error\n}\n\nexport const AiAssistanceConfigContext = createContext<AiAssistanceConfigContextValue>({} as any)\n\nexport function useAiAssistanceConfig() {\n const context = useContext(AiAssistanceConfigContext)\n if (!context) {\n throw new Error('Missing AiAssistanceConfigContext')\n }\n return context\n}\n\nexport function AiAssistanceConfigProvider(props: {\n children?: ReactNode\n config: AssistPluginConfig\n}) {\n const [status, setStatus] = useState<InstructStatus | undefined>()\n const [error, setError] = useState<Error | undefined>()\n\n const apiClient = useApiClient(props.config?.__customApiClient)\n const {getInstructStatus, loading: statusLoading} = useGetInstructStatus(apiClient)\n const {initInstruct, loading: initLoading} = useInitInstruct(apiClient)\n\n useEffect(() => {\n getInstructStatus()\n .then((s) => setStatus(s))\n .catch((e) => {\n console.error(e)\n setError(e as Error)\n })\n }, [getInstructStatus])\n\n const init = useCallback(async () => {\n setError(undefined)\n try {\n await initInstruct()\n const status = await getInstructStatus()\n setStatus(status)\n } catch (e) {\n console.error('Failed to init ai assistance', e)\n setError(e as Error)\n }\n }, [initInstruct, getInstructStatus, setStatus])\n\n const {config, children} = props\n const context = useMemo<AiAssistanceConfigContextValue>(() => {\n return {\n config,\n status,\n statusLoading,\n init,\n initLoading,\n error,\n }\n }, [config, status, init, statusLoading, initLoading, error])\n\n return (\n <AiAssistanceConfigContext.Provider value={context}>\n {children}\n </AiAssistanceConfigContext.Provider>\n )\n}\n","import {Button, Dialog, Flex, Stack, Text, TextArea, Tooltip} from '@sanity/ui'\nimport {getInstructionTitle} from '../helpers/misc'\nimport {PlayIcon} from '@sanity/icons'\nimport {\n createContext,\n Dispatch,\n FormEvent,\n PropsWithChildren,\n SetStateAction,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport {UserInputBlock, userInputTypeName} from '../types'\nimport {RunInstructionArgs} from './AssistLayout'\nimport {useApiClient, useRunInstructionApi} from '../useApiClient'\nimport {useAiAssistanceConfig} from './AiAssistanceConfigContext'\nimport {FormFieldHeaderText} from 'sanity'\n\ntype BlockInputs = Record<string, string>\nconst NO_INPUT: BlockInputs = {}\n\nexport interface RunInstructionContextValue {\n runInstruction: (req: RunInstructionArgs) => void\n instructionLoading: boolean\n}\n\nexport const RunInstructionContext = createContext<RunInstructionContextValue>({\n runInstruction: () => {},\n instructionLoading: false,\n})\n\nexport function useRunInstruction() {\n return useContext(RunInstructionContext)\n}\n\nfunction isUserInputBlock(block: {_type: string}): block is UserInputBlock {\n return block._type === userInputTypeName\n}\n\nexport function RunInstructionProvider(props: PropsWithChildren<{}>) {\n const {config} = useAiAssistanceConfig()\n const apiClient = useApiClient(config?.__customApiClient)\n const {runInstruction: runInstructionRequest, loading} = useRunInstructionApi(apiClient)\n\n const id = useId()\n\n const [inputs, setInputs] = useState(NO_INPUT)\n const [runRequest, setRunRequest] = useState<\n (RunInstructionArgs & {userInputBlocks: UserInputBlock[]}) | undefined\n >()\n\n const runInstruction = useCallback(\n (req: RunInstructionArgs) => {\n if (loading) {\n return\n }\n const {instruction, ...request} = req\n const instructionKey = instruction._key\n const userInputBlocks = instruction?.prompt\n ?.flatMap((block) =>\n block._type === 'block' ? block.children.filter(isUserInputBlock) : [block]\n )\n .filter(isUserInputBlock)\n\n if (!userInputBlocks?.length) {\n runInstructionRequest({\n ...request,\n instructionKey,\n userTexts: undefined,\n })\n return\n }\n\n setRunRequest({\n ...req,\n userInputBlocks,\n })\n },\n [setRunRequest, runInstructionRequest, loading]\n )\n\n const close = useCallback(() => {\n setRunRequest(undefined)\n setInputs(NO_INPUT)\n }, [setRunRequest, setInputs])\n\n const runWithInput = useCallback(() => {\n if (runRequest) {\n const {instruction, userTexts, ...request} = runRequest\n runInstructionRequest({\n ...request,\n instructionKey: instruction._key,\n userTexts: Object.entries(inputs).map(([key, value]) => ({\n blockKey: key,\n userInput: value,\n })),\n })\n }\n close()\n }, [close, runInstructionRequest, runRequest, inputs])\n\n const open = !!runRequest\n\n const runDisabled = useMemo(\n () =>\n (runRequest?.userInputBlocks?.length ?? 0) >\n Object.entries(inputs).filter(([, value]) => !!value).length,\n [runRequest?.userInputBlocks, inputs]\n )\n\n const runButton = (\n <Button\n text=\"Run instruction\"\n onClick={runWithInput}\n tone=\"primary\"\n icon={PlayIcon}\n style={{width: '100%'}}\n disabled={runDisabled}\n />\n )\n\n const contextValue: RunInstructionContextValue = useMemo(\n () => ({runInstruction, instructionLoading: loading}),\n [runInstruction, loading]\n )\n\n return (\n <RunInstructionContext.Provider value={contextValue}>\n {open ? (\n <Dialog\n id={id}\n open={open}\n onClose={close}\n width={1}\n header={getInstructionTitle(runRequest?.instruction)}\n footer={\n <Flex justify=\"space-between\" padding={2} flex={1}>\n {runDisabled ? (\n <Tooltip\n content={\n <Flex padding={2}>\n <Text>Unable to run instruction. All fields must have a value.</Text>\n </Flex>\n }\n placement=\"top\"\n >\n <Flex flex={1}>{runButton}</Flex>\n </Tooltip>\n ) : (\n runButton\n )}\n </Flex>\n }\n >\n <Stack padding={4} space={2}>\n {runRequest?.userInputBlocks?.map((block, i) => (\n <UserInput\n key={block._key}\n block={block}\n autoFocus={i === 0}\n inputs={inputs}\n setInputs={setInputs}\n />\n ))}\n </Stack>\n </Dialog>\n ) : null}\n {props.children}\n </RunInstructionContext.Provider>\n )\n}\n\nfunction UserInput(props: {\n block: UserInputBlock\n inputs: BlockInputs\n setInputs: Dispatch<SetStateAction<BlockInputs>>\n autoFocus?: boolean\n}) {\n const {block, autoFocus, setInputs, inputs} = props\n const key = block._key\n const textAreaRef = useRef<HTMLTextAreaElement>(null)\n\n const onChange = useCallback(\n (e: FormEvent<HTMLTextAreaElement>) => {\n setInputs((current) => ({\n ...current,\n [key]: (e.currentTarget ?? e.target).value,\n }))\n },\n [key, setInputs]\n )\n\n const value = useMemo(() => inputs[key], [inputs, key])\n\n useEffect(() => {\n if (!autoFocus) {\n return\n }\n setTimeout(() => textAreaRef.current?.focus(), 0)\n }, [autoFocus])\n\n return (\n <Stack padding={2} space={3}>\n <FormFieldHeaderText\n title={block?.message ?? 'Provide more context'}\n description={block.description}\n />\n <TextArea\n ref={textAreaRef}\n rows={4}\n value={value}\n onChange={onChange}\n style={{resize: 'vertical'}}\n />\n </Stack>\n )\n}\n","import {useRunInstruction} from '../assistLayout/RunInstructionProvider'\nimport {useCallback, useEffect, useState} from 'react'\nimport {ObjectSchemaType, PatchEvent, SanityDocument, unset} from 'sanity'\nimport {RunInstructionArgs} from '../assistLayout/AssistLayout'\nimport {publicId} from '../helpers/ids'\n\nexport interface DocumentArgs {\n documentOnChange: (event: PatchEvent) => void\n // indicates if the document is a draft or liveEditable currently\n isDocAssistable: boolean\n}\n\nexport function isDocAssistable(\n documentSchemaType: ObjectSchemaType,\n published?: SanityDocument | null,\n draft?: SanityDocument | null\n) {\n return !!(documentSchemaType.liveEdit ? published : draft)\n}\n\nexport function getAssistableDocId(documentSchemaType: ObjectSchemaType, documentId: string) {\n const baseId = publicId(documentId)\n return documentSchemaType.liveEdit ? baseId : `drafts.${baseId}`\n}\n\nexport function useRequestRunInstruction(args: DocumentArgs) {\n const {documentOnChange, isDocAssistable} = args\n\n const {runInstruction, instructionLoading} = useRunInstruction()\n const [queuedTask, setQueuedTask] = useState<RunInstructionArgs | undefined>(undefined)\n\n useEffect(() => {\n if (queuedTask && isDocAssistable) {\n runInstruction(queuedTask)\n setQueuedTask(undefined)\n }\n }, [queuedTask, isDocAssistable, runInstruction])\n\n return {\n instructionLoading,\n requestRunInstruction: useCallback(\n (task: RunInstructionArgs) => {\n // make a dummy edit: this will trigger the document/draft to be created\n documentOnChange(PatchEvent.from([unset(['_force_document_creation'])]))\n setQueuedTask(task)\n },\n [setQueuedTask, documentOnChange]\n ),\n }\n}\n","import {Box, Button, Container, Flex, Stack, Text} from '@sanity/ui'\nimport {SparklesIcon} from '@sanity/icons'\nimport {releaseAnnouncementUrl} from '../constants'\nimport styled from 'styled-components'\n\nconst SparklesIllustration = styled(SparklesIcon)({\n fontSize: '3.125em',\n '& path': {\n strokeWidth: `0.6px !important`,\n },\n})\n\nexport function InspectorOnboarding(props: {onDismiss: () => void}) {\n const {onDismiss} = props\n return (\n <Box padding={4}>\n <Container width={0}>\n <Stack space={4}>\n <div style={{textAlign: 'center'}}>\n <SparklesIllustration />\n </div>\n <Text align=\"center\" size={1}>\n Create reusable AI instructions that can be applied across all documents of a certain\n type.\n </Text>\n\n <Flex align=\"center\" gap={2} justify=\"center\">\n <Button\n as=\"a\"\n href={releaseAnnouncementUrl}\n rel=\"noreferrer\"\n target=\"_blank\"\n fontSize={1}\n mode=\"default\"\n onClick={onDismiss}\n padding={2}\n text=\"Learn more\"\n tone=\"primary\"\n />\n <Button fontSize={1} mode=\"bleed\" onClick={onDismiss} padding={2} text=\"Dismiss\" />\n </Flex>\n </Stack>\n </Container>\n </Box>\n )\n}\n","import {useCallback, useState} from 'react'\n\nexport const inspectorOnboardingKey = 'sanityStudio:assist:inspector:onboarding:dismissed'\nexport const fieldOnboardingKey = 'sanityStudio:assist:field:onboarding:dismissed'\n\nexport function isFeatureOnboardingDismissed(featureKey: string): boolean {\n if (typeof localStorage === 'undefined') {\n return false\n }\n\n const value = localStorage.getItem(featureKey)\n return value === 'true'\n}\n\nexport function dismissFeatureOnboarding(featureKey: string) {\n if (typeof localStorage === 'undefined') {\n return\n }\n\n localStorage.setItem(featureKey, 'true')\n}\n\nexport function useOnboardingFeature(featureKey: string) {\n const [showOnboarding, setShowOnboarding] = useState(\n () => !isFeatureOnboardingDismissed(featureKey)\n )\n const dismissOnboarding = useCallback(() => {\n setShowOnboarding(false)\n dismissFeatureOnboarding(featureKey)\n }, [setShowOnboarding, featureKey])\n\n return {showOnboarding, dismissOnboarding}\n}\n","import {ArrowLeftIcon} from '@sanity/icons'\nimport {Button} from '@sanity/ui'\nimport {useCallback} from 'react'\nimport {instructionParam} from '../../../types'\nimport {useDocumentPane} from 'sanity/desk'\nimport {aiInspectorId} from '../../../assistInspector/constants'\n\nexport function BackToInstructionListLink() {\n const {openInspector} = useDocumentPane()\n\n const goBack = useCallback(\n () => openInspector(aiInspectorId, {[instructionParam]: undefined as any}),\n [openInspector]\n )\n\n return (\n <div>\n <Button\n as=\"a\"\n fontSize={1}\n icon={ArrowLeftIcon}\n mode=\"bleed\"\n padding={1}\n space={2}\n onClick={goBack}\n text=\" Instructions\"\n textAlign=\"left\"\n />\n </div>\n )\n}\n","import {\n AssistDocument,\n AssistField,\n assistFieldTypeName,\n AssistInspectorRouteParams,\n documentRootKey,\n fieldPathParam,\n instructionParam,\n} from '../../types'\nimport {createContext, useContext, useEffect, useMemo, useRef} from 'react'\nimport {\n FormCallbacksProvider,\n FormCallbacksValue,\n FormInput,\n insert,\n KeyedSegment,\n ObjectInputProps,\n ObjectSchemaType,\n Path,\n SchemaType,\n set,\n setIfMissing,\n stringToPath,\n typed,\n useFormCallbacks,\n useSchema,\n} from 'sanity'\nimport {BackToInstructionListLink} from './instruction/BackToInstructionsLink'\nimport {useAiPaneRouter} from '../../assistInspector/helpers'\nimport {SelectedFieldContextProvider, SelectedFieldContextValue} from './SelectedFieldContext'\nimport {Stack} from '@sanity/ui'\nimport {documentTypeFromAiDocumentId} from '../../helpers/ids'\n\nconst EMPTY_FIELDS: AssistField[] = []\n\nexport const TypePathContext = createContext<string | undefined>(undefined)\n\nexport function AssistDocumentForm(props: ObjectInputProps) {\n const {onChange} = props\n const value = props.value as AssistDocument | undefined\n const id = value?._id\n const fields = value?.fields\n\n const targetDocumentType = useMemo(() => {\n if (!id) {\n return undefined\n }\n return documentTypeFromAiDocumentId(id)\n }, [id])\n\n const {params, setParams} = useAiPaneRouter()\n const pathKey = params[fieldPathParam]\n const typePath = useContext(TypePathContext)\n const instruction = params[instructionParam]\n\n const activeKey = useMemo(() => {\n if (!typePath) {\n return undefined\n }\n return (fields ?? EMPTY_FIELDS).find((f) => f.path === typePath)?._key\n }, [fields, typePath])\n\n const activePath: Path | undefined = useMemo(() => {\n if (!activeKey) {\n return undefined\n }\n const base = ['fields', {_key: activeKey}]\n return instruction ? [...base, 'instructions', {_key: instruction}] : base\n }, [activeKey, instruction])\n\n const schema = useSchema()\n const documentSchema: ObjectSchemaType | undefined = useMemo(() => {\n if (!targetDocumentType) {\n return undefined\n }\n return schema.get(targetDocumentType) as ObjectSchemaType\n }, [schema, targetDocumentType])\n\n const fieldSchema = useSelectedSchema(pathKey, documentSchema)\n\n const context: SelectedFieldContextValue = useMemo(\n () => ({\n documentSchema,\n fieldSchema: fieldSchema ?? documentSchema,\n }),\n [fieldSchema, documentSchema]\n )\n\n const title = value?.title\n\n useEffect(() => {\n if (!title && documentSchema && !id?.startsWith('drafts.')) {\n onChange(set(documentSchema.title ?? documentSchema.name, ['title']))\n }\n }, [title, documentSchema, onChange, id])\n\n const fieldExists = !!fields?.some((f) => f._key === typePath)\n\n const {onPathOpen, ...formCallbacks} = useFormCallbacks()\n\n const newCallbacks: FormCallbacksValue = useMemo(\n () => ({\n ...formCallbacks,\n onPathOpen: (path) => {\n if (!instruction && path.length === 4 && path[2] === 'instructions') {\n setParams(\n typed<AssistInspectorRouteParams>({\n ...params,\n [instructionParam]: (path[3] as KeyedSegment)?._key,\n }) as Record<keyof AssistInspectorRouteParams, string | undefined>\n )\n onPathOpen([])\n } else {\n setTimeout(() => onPathOpen(path), 0)\n }\n },\n }),\n [formCallbacks, onPathOpen, params, setParams, instruction]\n )\n\n useEffect(() => {\n if (activePath && !instruction) {\n onPathOpen([])\n }\n }, [activePath, instruction, onPathOpen])\n\n return (\n <SelectedFieldContextProvider value={context}>\n <Stack space={5}>\n <FieldsInitializer\n key={typePath}\n pathKey={typePath}\n activePath={activePath}\n fieldExists={fieldExists}\n onChange={onChange}\n />\n {instruction && <BackToInstructionListLink />}\n\n {activePath && (\n <FormCallbacksProvider {...newCallbacks}>\n <div style={{lineHeight: '1.25em'}}>\n <FormInput {...props} absolutePath={activePath} />\n </div>\n </FormCallbacksProvider>\n )}\n\n {!activePath && props.renderDefault(props)}\n </Stack>\n </SelectedFieldContextProvider>\n )\n}\n\nfunction useSelectedSchema(\n fieldPath: string | undefined,\n documentSchema: ObjectSchemaType | undefined\n): SchemaType | undefined {\n return useMemo(() => {\n if (!fieldPath) {\n return undefined\n }\n if (fieldPath === documentRootKey) {\n return documentSchema\n }\n\n const path = stringToPath(fieldPath)\n let currentSchema: ObjectSchemaType | undefined = documentSchema\n for (let i = 0; i < path.length; i++) {\n const segment = path[i]\n const field = currentSchema?.fields.find((f) => f.name === segment)\n if (!field) {\n return undefined\n }\n if (i === path.length - 1) {\n return field.type\n }\n if (field.type.jsonType !== 'object') {\n return undefined\n }\n currentSchema = field.type\n }\n return currentSchema\n }, [documentSchema, fieldPath])\n}\n\nfunction FieldsInitializer({\n pathKey,\n activePath,\n fieldExists,\n onChange,\n}: {\n pathKey?: string\n activePath?: Path\n fieldExists: boolean\n onChange: ObjectInputProps['onChange']\n}) {\n // need this to not fire onChange twice in React strict mode\n const initialized = useRef(false)\n useEffect(() => {\n if (initialized.current || fieldExists || activePath || !pathKey) {\n return\n }\n onChange([\n setIfMissing([], ['fields']),\n insert(\n [\n typed<AssistField>({\n _key: pathKey,\n _type: assistFieldTypeName,\n path: pathKey,\n }),\n ],\n 'after',\n ['fields', -1]\n ),\n ])\n initialized.current = true\n }, [activePath, onChange, pathKey, fieldExists])\n\n return null\n}\n","import {SearchIcon} from '@sanity/icons'\nimport {Autocomplete, Box, Breadcrumbs, Card, Flex, Text} from '@sanity/ui'\nimport {createElement, useCallback, useMemo} from 'react'\nimport {FieldRef, getFieldRefs, getFieldRefsWithDocument} from './helpers'\nimport {ObjectSchemaType} from 'sanity'\nimport {isType} from '../helpers/typeUtils'\n\ninterface FieldSelectorProps {\n id: string\n schemaType: ObjectSchemaType\n fieldPath?: string\n onSelect: (path: string) => void\n includeDocument?: boolean\n filter?: (field: FieldRef) => boolean\n}\n\nexport function FieldAutocomplete(props: FieldSelectorProps) {\n const {id, schemaType, fieldPath, onSelect, includeDocument, filter} = props\n\n const fieldRefs = useMemo(() => {\n if (includeDocument) {\n return getFieldRefsWithDocument(schemaType)\n }\n return getFieldRefs(schemaType)\n }, [schemaType, includeDocument])\n const currentField = useMemo(\n () => fieldRefs.find((f) => f.key === fieldPath),\n [fieldPath, fieldRefs]\n )\n\n const autocompleteOptions = useMemo(\n () =>\n fieldRefs\n .filter((field) => (filter ? filter(field) : true))\n .map((field) => ({value: field.key, field})),\n [fieldRefs, filter]\n )\n\n const renderOption = useCallback((option: {value: string; field: FieldRef}) => {\n const {value, field} = option\n\n if (!value) {\n return (\n <Card as=\"button\" padding={3} radius={1}>\n <Text accent size={1}>\n {option.value}\n </Text>\n </Card>\n )\n }\n\n if (isType(field.schemaType, 'document')) {\n return (\n <Card as=\"button\" padding={3} radius={1}>\n <Text size={1} weight=\"semibold\">\n The entire document\n </Text>\n </Card>\n )\n }\n\n return (\n <Card as=\"button\" padding={3} radius={1}>\n <Flex gap={3}>\n <Text size={1}>{createElement(field.icon)}</Text>\n\n <FieldTitle field={field} />\n </Flex>\n </Card>\n )\n }, [])\n\n const renderValue = useCallback((value: string, option?: {value: string; field: FieldRef}) => {\n return option?.field.title ?? value\n }, [])\n\n const filterOption = useCallback((query: string, option: {value: string; field: FieldRef}) => {\n const lQuery = query.toLowerCase()\n return (\n option?.value?.toLowerCase().includes(lQuery) ||\n option?.field?.title?.toLowerCase().includes(lQuery)\n )\n }, [])\n\n return (\n <Autocomplete\n fontSize={1}\n icon={currentField ? currentField.icon : SearchIcon}\n onChange={onSelect}\n openButton\n id={id}\n options={autocompleteOptions}\n placeholder=\"Search for a field\"\n radius={2}\n renderOption={renderOption}\n renderValue={renderValue}\n value={currentField?.key}\n filterOption={filterOption}\n />\n )\n}\n\nexport function FieldTitle(props: {field: FieldRef}) {\n const splitTitle = props.field.title.split('/')\n return (\n <Box flex=\"none\">\n <Breadcrumbs\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n marginTop: '-4px',\n }}\n separator={\n <Box marginTop={1}>\n <Text muted size={1}>\n /\n </Text>\n </Box>\n }\n space={1}\n >\n {splitTitle.slice(0, splitTitle.length - 1).map((pt, i) => (\n // eslint-disable-next-line react/no-array-index-key\n <Box key={i} marginTop={1}>\n <Text muted size={1}>\n {pt.trim()}\n </Text>\n </Box>\n ))}\n <Box marginTop={1}>\n <Text size={1} weight=\"medium\">\n {splitTitle[splitTitle.length - 1]}\n </Text>\n </Box>\n </Breadcrumbs>\n </Box>\n )\n}\n","import {ArrowRightIcon, CloseIcon, PlayIcon, RetryIcon} from '@sanity/icons'\nimport {Box, Button, Card, Flex, Spinner, Stack, Text} from '@sanity/ui'\nimport {useCallback, useMemo, useRef} from 'react'\nimport {\n DocumentInspectorProps,\n PresenceOverlay,\n useEditState,\n VirtualizerScrollInstanceProvider,\n} from 'sanity'\nimport {\n DocumentInspectorHeader,\n DocumentPaneNode,\n DocumentPaneProvider,\n useDocumentPane,\n} from 'sanity/desk'\nimport {DocumentForm} from '../_lib/form'\nimport {assistDocumentTypeName, fieldPathParam, instructionParam} from '../types'\nimport {FieldRef, getFieldTitle, useAiPaneRouter, useSelectedField, useTypePath} from './helpers'\nimport styled from 'styled-components'\nimport {useStudioAssistDocument} from '../assistDocument/hooks/useStudioAssistDocument'\nimport {InstructionTaskHistoryButton} from './InstructionTaskHistoryButton'\nimport {useAiAssistanceConfig} from '../assistLayout/AiAssistanceConfigContext'\nimport {giveFeedbackUrl, pluginTitle, releaseAnnouncementUrl, salesUrl} from '../constants'\nimport {assistDocumentId} from '../helpers/ids'\nimport {\n getAssistableDocId,\n isDocAssistable,\n useRequestRunInstruction,\n} from '../assistDocument/RequestRunInstructionProvider'\nimport {InspectorOnboarding} from '../onboarding/InspectorOnboarding'\nimport {inspectorOnboardingKey, useOnboardingFeature} from '../onboarding/onboardingStore'\nimport {TypePathContext} from '../assistDocument/components/AssistDocumentForm'\nimport {FieldTitle} from './FieldAutocomplete'\n\nconst CardWithShadowBelow = styled(Card)`\n position: relative;\n\n &:after {\n content: '';\n display: block;\n position: absolute;\n left: 0;\n right: 0;\n bottom: -1px;\n border-bottom: 1px solid var(--card-border-color);\n opacity: 0.5;\n z-index: 100;\n }\n`\n\nconst CardWithShadowAbove = styled(Card)`\n position: relative;\n\n &:after {\n content: '';\n display: block;\n position: absolute;\n left: 0;\n right: 0;\n top: -1px;\n border-top: 1px solid var(--card-border-color);\n opacity: 0.5;\n z-index: 100;\n }\n`\n\nexport function AssistInspectorWrapper(props: DocumentInspectorProps) {\n const context = useAiAssistanceConfig()\n\n if (context.statusLoading) {\n return (\n <Flex align=\"center\" height=\"fill\" justify=\"center\" padding={4} sizing=\"border\">\n <Stack space={3} style={{textAlign: 'center'}}>\n <Spinner muted />\n <Text muted size={1}>\n Loading {pluginTitle}...\n </Text>\n </Stack>\n </Flex>\n )\n }\n\n const status = context.status\n\n if (!status?.enabled) {\n return (\n <Flex direction=\"column\" height=\"fill\">\n <DocumentInspectorHeader\n closeButtonLabel=\"Close\"\n onClose={props.onClose}\n title={pluginTitle}\n />\n\n <Stack flex={1} overflow=\"auto\" padding={4} space={3}>\n <Text as=\"p\" size={1} weight=\"semibold\">\n {pluginTitle} is not available\n </Text>\n\n <Text as=\"p\" muted size={1}>\n Please get in touch with a Sanity account manager or{' '}\n <a href={salesUrl} target=\"_blank\" rel=\"noreferrer\">\n contact our sales team\n </a>{' '}\n to get started with {pluginTitle}.{' '}\n <a href={releaseAnnouncementUrl} target=\"_blank\" rel=\"noreferrer\">\n Learn more →\n </a>\n </Text>\n </Stack>\n </Flex>\n )\n }\n\n if (!status?.initialized || !status.validToken) {\n return (\n <Flex direction=\"column\" height=\"fill\">\n <DocumentInspectorHeader\n closeButtonLabel=\"Close\"\n onClose={props.onClose}\n title={pluginTitle}\n />\n\n <Stack padding={4} space={3}>\n {context.error ? (\n <Text size={1} weight=\"semibold\">\n Failed to start {pluginTitle}\n </Text>\n ) : null}\n\n {!context.error && !status?.initialized ? (\n <Text size={1} weight=\"semibold\">\n {pluginTitle} is not enabled\n </Text>\n ) : null}\n\n {!context.error && status?.initialized && !status.validToken ? (\n <>\n <Text size={1} weight=\"semibold\">\n Invalid token\n </Text>\n <Text muted size={1}>\n The token used by the AI Assistant is not valid and has to be regenerated.\n </Text>\n </>\n ) : null}\n\n {context.error && (\n <Text muted size={1}>\n Something went wrong. See console for details.\n </Text>\n )}\n\n {!context.error && !status?.initialized && (\n <Text size={1} muted>\n Please enable {pluginTitle}.\n </Text>\n )}\n\n <Button\n fontSize={1}\n icon={\n context.initLoading ? (\n <Box marginTop={1}>\n <Spinner />\n </Box>\n ) : context.error ? (\n RetryIcon\n ) : undefined\n }\n text={\n context.error\n ? 'Retry'\n : status?.initialized && !status.validToken\n ? `Restore ${pluginTitle}`\n : `Enable ${pluginTitle} now`\n }\n tone=\"primary\"\n onClick={context.init}\n disabled={context.initLoading}\n />\n </Stack>\n </Flex>\n )\n }\n\n return <AssistInspector {...props} />\n}\n\nexport function AssistInspector(props: DocumentInspectorProps) {\n const {params} = useAiPaneRouter()\n\n const boundary = useRef<HTMLDivElement | null>(null)\n const pathKey = params?.[fieldPathParam]\n const instructionKey = params?.[instructionParam]\n const documentPane = useDocumentPane()\n const {\n documentId,\n documentType,\n value: docValue,\n schemaType,\n onChange: documentOnChange,\n } = documentPane\n const {published, draft} = useEditState(documentId, documentType, 'low')\n\n const assistableDocId = getAssistableDocId(schemaType, documentId)\n const {instructionLoading, requestRunInstruction} = useRequestRunInstruction({\n documentOnChange,\n isDocAssistable: isDocAssistable(schemaType, published, draft),\n })\n\n const typePath = useTypePath(docValue, pathKey ?? '')\n const selectedField = useSelectedField(schemaType, typePath)\n\n const aiDocId = assistDocumentId(documentType)\n\n const assistDocument = useStudioAssistDocument({documentId, schemaType})\n const assistField = assistDocument?.fields?.find((f) => f.path === typePath)\n const instruction = assistField?.instructions?.find((i) => i._key === instructionKey)\n const tasks = useMemo(\n () =>\n assistDocument?.tasks?.filter((i) => !instructionKey || i.instructionKey === instructionKey),\n [assistDocument?.tasks, instructionKey]\n )\n const instructions = useMemo(\n () => assistDocument?.fields?.flatMap((f) => f.instructions ?? []),\n [assistDocument?.fields]\n )\n\n const promptValue = instruction?.prompt\n const isEmptyPrompt = useMemo(() => {\n if (!promptValue?.length) {\n return true\n }\n const firstBlock = promptValue[0] as any\n const children = firstBlock?.children\n\n return promptValue.length == 1 && children?.length === 1 && !children?.[0]?.text?.length\n }, [promptValue])\n\n const paneNode: DocumentPaneNode = useMemo(\n () => ({\n type: 'document',\n id: aiDocId,\n title: pluginTitle,\n options: {\n id: aiDocId,\n type: assistDocumentTypeName,\n },\n }),\n [aiDocId]\n )\n\n const runCurrentInstruction = useCallback(\n () =>\n instruction &&\n pathKey &&\n typePath &&\n requestRunInstruction({\n documentId: assistableDocId,\n path: pathKey,\n typePath,\n assistDocumentId: assistDocumentId(documentType),\n instruction,\n }),\n [pathKey, instruction, typePath, documentType, assistableDocId, requestRunInstruction]\n )\n\n const Region = useCallback((_props: any) => {\n // disabled for now\n /* return (\n <ConnectToRegion\n {..._props}\n _key={`${paneKey}_${selectedField?.key || '_field'}`}\n style={{height: '100%', flex: 1, overflow: 'auto'}}\n />\n )*/\n return <div {..._props} style={{height: '100%', flex: 1, overflow: 'auto'}} />\n }, [])\n\n if (!documentId || !schemaType || schemaType.jsonType !== 'object') {\n return (\n <Card flex={1} padding={4}>\n <Text>Document not ready yet.</Text>\n </Card>\n )\n }\n\n return (\n <Flex\n ref={boundary}\n direction=\"column\"\n height=\"fill\"\n overflow=\"hidden\"\n sizing=\"border\"\n style={{lineHeight: 0}}\n >\n <AiInspectorHeader\n onClose={props.onClose}\n field={selectedField}\n fieldTitle={getFieldTitle(selectedField)}\n />\n\n <Card as={Region} flex={1} overflow=\"auto\">\n <Flex direction=\"column\" style={{minHeight: '100%'}}>\n <Box flex={1}>\n <PresenceOverlay>\n <Box padding={4}>\n {selectedField && (\n <TypePathContext.Provider value={typePath}>\n <VirtualizerScrollInstanceProvider\n scrollElement={boundary.current}\n containerElement={boundary}\n >\n <DocumentPaneProvider\n paneKey={documentPane.paneKey}\n index={documentPane.index}\n itemId=\"ai\"\n pane={paneNode}\n >\n <DocumentForm />\n </DocumentPaneProvider>\n </VirtualizerScrollInstanceProvider>\n </TypePathContext.Provider>\n )}\n </Box>\n </PresenceOverlay>\n </Box>\n\n <Box flex=\"none\" padding={4}>\n <Text muted size={1}>\n How is Sanity AI Assist working for you?{' '}\n <a\n href={giveFeedbackUrl}\n target=\"_blank\"\n rel=\"noreferrer\"\n style={{whiteSpace: 'nowrap'}}\n >\n Let us know <ArrowRightIcon />\n </a>\n </Text>\n </Box>\n </Flex>\n </Card>\n <CardWithShadowAbove flex=\"none\" paddingX={4} paddingY={3} style={{justifySelf: 'flex-end'}}>\n <Flex gap={2} flex={1} justify=\"flex-end\">\n {schemaType?.name && pathKey && instructionKey && (\n <Stack flex={1}>\n <Button\n mode=\"ghost\"\n disabled={isEmptyPrompt || instructionLoading}\n fontSize={1}\n icon={instructionLoading ? <Spinner /> : PlayIcon}\n onClick={runCurrentInstruction}\n padding={3}\n text={'Run instruction'}\n />\n </Stack>\n )}\n\n <InstructionTaskHistoryButton\n documentId={assistableDocId}\n tasks={tasks}\n instructions={instructions}\n showTitles={!instructionKey}\n />\n </Flex>\n </CardWithShadowAbove>\n </Flex>\n )\n}\n\nfunction AiInspectorHeader(props: {fieldTitle: string; field?: FieldRef; onClose: () => void}) {\n const {onClose, field, fieldTitle} = props\n const {showOnboarding, dismissOnboarding} = useOnboardingFeature(inspectorOnboardingKey)\n\n return (\n <CardWithShadowBelow flex=\"none\" padding={2}>\n <Flex flex={1} align=\"center\">\n <Flex flex={1} padding={3} gap={2} align=\"center\">\n <Flex gap={1} align=\"center\" wrap=\"wrap\" style={{marginTop: '-4px'}}>\n <Box marginTop={1}>\n <Text size={1} weight=\"semibold\">\n AI instructions for\n </Text>\n </Box>\n <Card radius={2} border padding={1} marginTop={1}>\n {field ? (\n <FieldTitle field={field} />\n ) : (\n <Text size={1} weight=\"semibold\">\n {fieldTitle}\n </Text>\n )}\n </Card>\n </Flex>\n </Flex>\n <Box flex=\"none\">\n <Button fontSize={1} icon={CloseIcon} mode=\"bleed\" onClick={onClose} />\n </Box>\n </Flex>\n\n {showOnboarding && <InspectorOnboarding onDismiss={dismissOnboarding} />}\n </CardWithShadowBelow>\n )\n}\n","import {SparklesIcon} from '@sanity/icons'\nimport {DocumentInspector, typed} from 'sanity'\nimport {aiInspectorId} from './constants'\nimport {AssistInspectorWrapper} from './AssistInspector'\nimport {AssistInspectorRouteParams, fieldPathParam, instructionParam} from '../types'\nimport {pluginTitle} from '../constants'\n\nexport const assistInspector: DocumentInspector = {\n name: aiInspectorId,\n useMenuItem: () => ({\n icon: SparklesIcon,\n title: pluginTitle,\n hidden: true,\n showAsAction: false,\n }),\n component: AssistInspectorWrapper,\n onClose({params}) {\n return {\n params: typed<AssistInspectorRouteParams>({\n ...params,\n [fieldPathParam]: undefined,\n [instructionParam]: undefined,\n }) as typeof params,\n }\n },\n}\n","import {DocumentInspector, ObjectSchemaType, PatchEvent} from 'sanity'\nimport {createContext, useContext} from 'react'\nimport {StudioAssistDocument} from '../types'\n\nexport type AssistDocumentContextValue = (\n | {assistDocument: StudioAssistDocument; loading: false}\n | {assistDocument: undefined; loading: true}\n) & {\n documentIsNew: boolean\n assistableDocumentId: string\n documentIsAssistable: boolean\n documentId: string\n documentSchemaType: ObjectSchemaType\n openInspector: (inspectorName: string, paneParams?: Record<string, string>) => void\n closeInspector: (inspectorName?: string) => void\n inspector: DocumentInspector | null\n selectedPath?: string\n documentOnChange: (event: PatchEvent) => void\n}\n\nexport const AssistDocumentContext = createContext<AssistDocumentContextValue | undefined>(\n undefined\n)\n\nexport function useAssistDocumentContext(): AssistDocumentContextValue {\n const context = useContext(AssistDocumentContext)\n if (!context) {\n throw new Error('AssistDocumentContext value is missing')\n }\n return context\n}\n","import {useMemo} from 'react'\nimport {FormNodePresence, isKeySegment, Path, stringToPath} from 'sanity'\nimport {useAssistDocumentContext} from '../assistDocument/AssistDocumentContext'\nimport {AiPresence} from '../types'\nimport {maxHistoryVisibilityMs, pluginTitle} from '../constants'\n\nconst NO_PRESENCE: FormNodePresence[] = []\n\nexport function useAssistPresence(path: Path, showFocusWithin?: boolean): FormNodePresence[] {\n const context = useAssistDocumentContext()\n const assistDocument = context && 'assistDocument' in context ? context.assistDocument : undefined\n const tasks = assistDocument?.tasks\n\n return useMemo(() => {\n const activePresence = tasks\n ?.filter((task) => !task.ended)\n ?.flatMap((task) => task.presence ?? [])\n ?.filter(\n (p) =>\n p.started && new Date().getTime() - new Date(p.started).getTime() < maxHistoryVisibilityMs\n )\n .filter((presence) => {\n if (!presence.path || !path.length) {\n return false\n }\n const statusPath = stringToPath(presence.path)\n\n if (!showFocusWithin && statusPath.length !== path.length) {\n return false\n }\n\n return path.every((pathSegment, i) => {\n const statusSegment = statusPath[i]\n if (typeof pathSegment === 'string') {\n return pathSegment === statusSegment\n }\n if (isKeySegment(pathSegment) && isKeySegment(statusSegment)) {\n return pathSegment._key === statusSegment._key\n }\n return false\n })\n })\n if (!activePresence?.length) {\n return NO_PRESENCE\n }\n\n return activePresence.map((status) => aiPresence(status, path))\n }, [showFocusWithin, tasks, path])\n}\n\nexport function aiPresence(presence: AiPresence, path: Path, title?: string): FormNodePresence {\n return {\n user: {\n id: `sanity-assistant_${presence._key}`,\n displayName: pluginTitle,\n },\n path: path,\n sessionId: 'not-available',\n lastActiveAt: presence?.started ?? new Date().toISOString(),\n }\n}\n","import {forwardRef, ReactElement, ReactNode} from 'react'\nimport styled, {keyframes} from 'styled-components'\n\nconst fadeIn = keyframes`\n 0% {\n opacity: 0;\n transform: scale(0.75);\n }\n 40% {\n opacity: 0;\n transform: scale(0.75);\n }\n 100% {\n opacity: 1;\n transform: scale(1);\n }\n`\n\nconst FadeInDiv = styled.div`\n animation-name: ${fadeIn};\n animation-timing-function: ease-in-out;\n`\n\nexport const FadeInContent = forwardRef(function FadeInContent(\n {\n children,\n durationMs = 250,\n }: {\n children?: ReactNode\n ms?: number\n durationMs?: number\n },\n ref: any\n): ReactElement {\n return (\n <FadeInDiv ref={ref} style={{animationDuration: `${durationMs}ms`}}>\n {children}\n </FadeInDiv>\n )\n})\n","const black$1 = \"#101112\";\nconst white$1 = \"#fff\";\nconst gray = {\n \"50\": {\n title: \"Gray 50\",\n hex: \"#f2f3f5\"\n },\n \"100\": {\n title: \"Gray 100\",\n hex: \"#e6e8ec\"\n },\n \"200\": {\n title: \"Gray 200\",\n hex: \"#ced2d9\"\n },\n \"300\": {\n title: \"Gray 300\",\n hex: \"#b6bcc6\"\n },\n \"400\": {\n title: \"Gray 400\",\n hex: \"#9ea6b3\"\n },\n \"500\": {\n title: \"Gray 500\",\n hex: \"#8690a0\"\n },\n \"600\": {\n title: \"Gray 600\",\n hex: \"#6e7683\"\n },\n \"700\": {\n title: \"Gray 700\",\n hex: \"#565d67\"\n },\n \"800\": {\n title: \"Gray 800\",\n hex: \"#3f434a\"\n },\n \"900\": {\n title: \"Gray 900\",\n hex: \"#272a2e\"\n },\n \"950\": {\n title: \"Gray 950\",\n hex: \"#1b1d20\"\n }\n};\nconst blue = {\n \"50\": {\n title: \"Blue 50\",\n hex: \"#e8f1fe\"\n },\n \"100\": {\n title: \"Blue 100\",\n hex: \"#d2e3fe\"\n },\n \"200\": {\n title: \"Blue 200\",\n hex: \"#a6c8fd\"\n },\n \"300\": {\n title: \"Blue 300\",\n hex: \"#7aacfd\"\n },\n \"400\": {\n title: \"Blue 400\",\n hex: \"#4e91fc\"\n },\n \"500\": {\n title: \"Blue 500\",\n hex: \"#2276fc\"\n },\n \"600\": {\n title: \"Blue 600\",\n hex: \"#1e61cd\"\n },\n \"700\": {\n title: \"Blue 700\",\n hex: \"#1a4d9e\"\n },\n \"800\": {\n title: \"Blue 800\",\n hex: \"#17396f\"\n },\n \"900\": {\n title: \"Blue 900\",\n hex: \"#132540\"\n },\n \"950\": {\n title: \"Blue 950\",\n hex: \"#111b29\"\n }\n};\nconst purple = {\n \"50\": {\n title: \"Purple 50\",\n hex: \"#f8e9fe\"\n },\n \"100\": {\n title: \"Purple 100\",\n hex: \"#f2d3fe\"\n },\n \"200\": {\n title: \"Purple 200\",\n hex: \"#e6a7fd\"\n },\n \"300\": {\n title: \"Purple 300\",\n hex: \"#d97bfd\"\n },\n \"400\": {\n title: \"Purple 400\",\n hex: \"#cd4efc\"\n },\n \"500\": {\n title: \"Purple 500\",\n hex: \"#c123fc\"\n },\n \"600\": {\n title: \"Purple 600\",\n hex: \"#9d1fcd\"\n },\n \"700\": {\n title: \"Purple 700\",\n hex: \"#7a1b9e\"\n },\n \"800\": {\n title: \"Purple 800\",\n hex: \"#56186f\"\n },\n \"900\": {\n title: \"Purple 900\",\n hex: \"#331440\"\n },\n \"950\": {\n title: \"Purple 950\",\n hex: \"#211229\"\n }\n};\nconst magenta = {\n \"50\": {\n title: \"Magenta 50\",\n hex: \"#fcebf5\"\n },\n \"100\": {\n title: \"Magenta 100\",\n hex: \"#f9d7eb\"\n },\n \"200\": {\n title: \"Magenta 200\",\n hex: \"#f4afd8\"\n },\n \"300\": {\n title: \"Magenta 300\",\n hex: \"#ef87c4\"\n },\n \"400\": {\n title: \"Magenta 400\",\n hex: \"#ea5fb1\"\n },\n \"500\": {\n title: \"Magenta 500\",\n hex: \"#e5389e\"\n },\n \"600\": {\n title: \"Magenta 600\",\n hex: \"#ba3082\"\n },\n \"700\": {\n title: \"Magenta 700\",\n hex: \"#8f2866\"\n },\n \"800\": {\n title: \"Magenta 800\",\n hex: \"#65204a\"\n },\n \"900\": {\n title: \"Magenta 900\",\n hex: \"#3a182d\"\n },\n \"950\": {\n title: \"Magenta 950\",\n hex: \"#25141f\"\n }\n};\nconst red = {\n \"50\": {\n title: \"Red 50\",\n hex: \"#fdebea\"\n },\n \"100\": {\n title: \"Red 100\",\n hex: \"#fcd8d5\"\n },\n \"200\": {\n title: \"Red 200\",\n hex: \"#f9b1ab\"\n },\n \"300\": {\n title: \"Red 300\",\n hex: \"#f68b82\"\n },\n \"400\": {\n title: \"Red 400\",\n hex: \"#f36458\"\n },\n \"500\": {\n title: \"Red 500\",\n hex: \"#f03e2f\"\n },\n \"600\": {\n title: \"Red 600\",\n hex: \"#c33529\"\n },\n \"700\": {\n title: \"Red 700\",\n hex: \"#962c23\"\n },\n \"800\": {\n title: \"Red 800\",\n hex: \"#69231d\"\n },\n \"900\": {\n title: \"Red 900\",\n hex: \"#3c1a17\"\n },\n \"950\": {\n title: \"Red 950\",\n hex: \"#261514\"\n }\n};\nconst orange = {\n \"50\": {\n title: \"Orange 50\",\n hex: \"#fef0e6\"\n },\n \"100\": {\n title: \"Orange 100\",\n hex: \"#fee2ce\"\n },\n \"200\": {\n title: \"Orange 200\",\n hex: \"#fdc59d\"\n },\n \"300\": {\n title: \"Orange 300\",\n hex: \"#fca86d\"\n },\n \"400\": {\n title: \"Orange 400\",\n hex: \"#fb8b3c\"\n },\n \"500\": {\n title: \"Orange 500\",\n hex: \"#e57322\"\n },\n \"600\": {\n title: \"Orange 600\",\n hex: \"#ba5f1f\"\n },\n \"700\": {\n title: \"Orange 700\",\n hex: \"#904b1b\"\n },\n \"800\": {\n title: \"Orange 800\",\n hex: \"#653818\"\n },\n \"900\": {\n title: \"Orange 900\",\n hex: \"#3a2415\"\n },\n \"950\": {\n title: \"Orange 950\",\n hex: \"#251a13\"\n }\n};\nconst yellow = {\n \"50\": {\n title: \"Yellow 50\",\n hex: \"#fef7da\"\n },\n \"100\": {\n title: \"Yellow 100\",\n hex: \"#fdefb6\"\n },\n \"200\": {\n title: \"Yellow 200\",\n hex: \"#fcdf6d\"\n },\n \"300\": {\n title: \"Yellow 300\",\n hex: \"#fbd024\"\n },\n \"400\": {\n title: \"Yellow 400\",\n hex: \"#d9b421\"\n },\n \"500\": {\n title: \"Yellow 500\",\n hex: \"#b7991e\"\n },\n \"600\": {\n title: \"Yellow 600\",\n hex: \"#967e1c\"\n },\n \"700\": {\n title: \"Yellow 700\",\n hex: \"#746219\"\n },\n \"800\": {\n title: \"Yellow 800\",\n hex: \"#534717\"\n },\n \"900\": {\n title: \"Yellow 900\",\n hex: \"#312c14\"\n },\n \"950\": {\n title: \"Yellow 950\",\n hex: \"#201e13\"\n }\n};\nconst green = {\n \"50\": {\n title: \"Green 50\",\n hex: \"#e7f9ed\"\n },\n \"100\": {\n title: \"Green 100\",\n hex: \"#d0f4dc\"\n },\n \"200\": {\n title: \"Green 200\",\n hex: \"#a1eaba\"\n },\n \"300\": {\n title: \"Green 300\",\n hex: \"#72e097\"\n },\n \"400\": {\n title: \"Green 400\",\n hex: \"#43d675\"\n },\n \"500\": {\n title: \"Green 500\",\n hex: \"#3ab564\"\n },\n \"600\": {\n title: \"Green 600\",\n hex: \"#329454\"\n },\n \"700\": {\n title: \"Green 700\",\n hex: \"#297343\"\n },\n \"800\": {\n title: \"Green 800\",\n hex: \"#215233\"\n },\n \"900\": {\n title: \"Green 900\",\n hex: \"#183122\"\n },\n \"950\": {\n title: \"Green 950\",\n hex: \"#14211a\"\n }\n};\nconst cyan = {\n \"50\": {\n title: \"Cyan 50\",\n hex: \"#e3fafd\"\n },\n \"100\": {\n title: \"Cyan 100\",\n hex: \"#c7f5fc\"\n },\n \"200\": {\n title: \"Cyan 200\",\n hex: \"#90ecf9\"\n },\n \"300\": {\n title: \"Cyan 300\",\n hex: \"#59e3f6\"\n },\n \"400\": {\n title: \"Cyan 400\",\n hex: \"#22daf4\"\n },\n \"500\": {\n title: \"Cyan 500\",\n hex: \"#1fb8ce\"\n },\n \"600\": {\n title: \"Cyan 600\",\n hex: \"#1c97a8\"\n },\n \"700\": {\n title: \"Cyan 700\",\n hex: \"#197583\"\n },\n \"800\": {\n title: \"Cyan 800\",\n hex: \"#16545d\"\n },\n \"900\": {\n title: \"Cyan 900\",\n hex: \"#133237\"\n },\n \"950\": {\n title: \"Cyan 950\",\n hex: \"#112124\"\n }\n};\nconst hues = {\n gray,\n blue,\n purple,\n magenta,\n red,\n orange,\n yellow,\n green,\n cyan\n};\nconst COLOR_HUES = [\"gray\", \"blue\", \"purple\", \"magenta\", \"red\", \"orange\", \"yellow\", \"green\", \"cyan\"];\nconst COLOR_TINTS = [\"50\", \"100\", \"200\", \"300\", \"400\", \"500\", \"600\", \"700\", \"800\", \"900\", \"950\"];\nconst black = {\n title: \"Black\",\n hex: black$1\n};\nconst white = {\n title: \"White\",\n hex: white$1\n};\nexport { COLOR_HUES, COLOR_TINTS, black, blue, cyan, gray, green, hues, magenta, orange, purple, red, white, yellow };\n//# sourceMappingURL=index.js.map\n","import {purple} from '@sanity/color'\nimport {SparklesIcon} from '@sanity/icons'\nimport {Text} from '@sanity/ui'\nimport {CSSProperties, useMemo} from 'react'\nimport {useColorSchemeValue} from 'sanity'\nimport styled, {keyframes} from 'styled-components'\n\nconst Root = styled.span`\n display: block;\n width: 25px;\n height: 25px;\n position: relative;\n`\n\nconst dash = keyframes`\n 0% {\n transform: rotate(0);\n }\n 100% {\n transform: rotate(43deg);\n }\n`\n\nconst Outline = styled.svg`\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n\n & > circle {\n stroke: var(--ai-avatar-stroke-color);\n stroke-width: 1.5px;\n stroke-linecap: round;\n transform-origin: center;\n animation: ${dash} 500ms ease-in-out infinite;\n transition: stroke-dasharray 200ms ease-in-out;\n\n stroke-dasharray: 2.34px 0;\n\n [data-state='active'] > & {\n stroke-dasharray: 2px 2.34px;\n }\n }\n`\n\nconst IconDisc = styled.span`\n background: var(--ai-avatar-disc-color);\n color: white;\n width: 21px;\n height: 21px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 10.5px;\n position: absolute;\n top: 2px;\n left: 2px;\n`\n\nexport function AssistAvatar(props: {state?: 'present' | 'active'}) {\n const {state = 'present'} = props\n const scheme = useColorSchemeValue()\n\n const style = useMemo(() => {\n if (scheme === 'dark') {\n return {\n [`--ai-avatar-stroke-color`]: purple[400].hex,\n [`--ai-avatar-disc-color`]: purple[600].hex,\n } as CSSProperties\n }\n\n return {\n [`--ai-avatar-stroke-color`]: purple[500].hex,\n [`--ai-avatar-disc-color`]: purple[600].hex,\n } as CSSProperties\n }, [scheme])\n\n return (\n <Root data-state={state} style={style}>\n <Outline\n width=\"25\"\n height=\"25\"\n viewBox=\"0 0 25 25\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"12.5\" cy=\"12.5\" r=\"11.75\" />\n </Outline>\n <IconDisc>\n <Text as=\"span\" size={0} style={{color: 'inherit'}}>\n <SparklesIcon />\n </Text>\n </IconDisc>\n </Root>\n )\n}\n","// eslint-disable-next-line react/no-unused-prop-types\nimport {FormNodePresence} from 'sanity'\nimport {Card, Flex, Text, Tooltip} from '@sanity/ui'\nimport {FadeInContent} from '../components/FadeInContent'\nimport {AssistAvatar} from './AssistAvatar'\n\nexport function AiFieldPresence(props: {presence: FormNodePresence}) {\n return (\n <Card style={{position: 'relative', background: 'transparent'}} contentEditable={false}>\n <Tooltip\n placement=\"left\"\n content={\n <Card padding={3} border>\n <Flex align=\"center\">\n <Text size={1}>Running instruction...</Text>\n </Flex>\n </Card>\n }\n >\n <FadeInContent durationMs={300}>\n <AssistAvatar state=\"active\" />\n </FadeInContent>\n </Tooltip>\n </Card>\n )\n}\n","import {Badge} from '@sanity/ui'\n\nexport function AssistFeatureBadge() {\n return (\n <Badge fontSize={0} style={{margin: '-2px 0'}} tone=\"primary\">\n Beta\n </Badge>\n )\n}\n","import {Button, Card, Flex, Popover, Stack, Text} from '@sanity/ui'\nimport {useRef} from 'react'\nimport {AssistFeatureBadge} from '../components/AssistFeatureBadge'\nimport {ArrowRightIcon, CheckmarkIcon, SparklesIcon} from '@sanity/icons'\nimport {pluginTitle, releaseAnnouncementUrl} from '../constants'\n\nexport interface FieldActionsOnboardingProps {\n dismiss: () => void\n}\n\nexport function AssistOnboardingPopover(props: FieldActionsOnboardingProps) {\n const {dismiss} = props\n\n return (\n <Popover\n content={<AssistIntroCard dismiss={dismiss} />}\n open\n portal\n placeholder=\"bottom\"\n tone=\"default\"\n width={0}\n >\n <Card radius={2} shadow={2} style={{padding: 2, lineHeight: 0}}>\n <Button disabled fontSize={1} icon={SparklesIcon} mode=\"bleed\" padding={2} />\n </Card>\n </Popover>\n )\n}\n\nfunction AssistIntroCard(props: {dismiss: () => void}) {\n const buttonRef = useRef<HTMLButtonElement>(null)\n\n return (\n <Stack as=\"section\" padding={3} space={3}>\n <Stack padding={2} space={4}>\n <Flex gap={2} align=\"center\">\n <Text as=\"h1\" size={1} weight=\"semibold\">\n {pluginTitle}\n </Text>\n <div aria-hidden style={{margin: '-3px 0', lineHeight: 0}}>\n <AssistFeatureBadge />\n </div>\n </Flex>\n\n <Stack space={3}>\n <Text as=\"p\" muted size={1}>\n Manage reusable AI instructions to boost your content creation and reduce amount of\n repetitive chores.{' '}\n <a href={releaseAnnouncementUrl} target=\"_blank\" rel=\"noreferrer\">\n Learn more <ArrowRightIcon />\n </a>\n </Text>\n </Stack>\n </Stack>\n\n <Button\n fontSize={1}\n icon={CheckmarkIcon}\n onClick={props.dismiss}\n padding={3}\n ref={buttonRef}\n text=\"Ok, good to know!\"\n tone=\"primary\"\n />\n </Stack>\n )\n}\n","import {ObjectInputProps, FieldMember, pathToString} from 'sanity'\nimport {createContext, PropsWithChildren, useMemo} from 'react'\nimport {isAssistSupported} from '../helpers/assistSupported'\n\nexport const FirstAssistedPathContext = createContext<string | undefined>(undefined)\n\nexport interface FirstAssistedPathProviderProps {\n members: ObjectInputProps['members']\n}\n\nexport function FirstAssistedPathProvider(\n props: PropsWithChildren<FirstAssistedPathProviderProps>\n) {\n const {members} = props\n\n const firstAssistedPath = useMemo(() => {\n const firstAssisted = members.find(\n (member): member is FieldMember =>\n member.kind === 'field' && isAssistSupported(member.field.schemaType)\n )\n return firstAssisted?.field.path ? pathToString(firstAssisted?.field.path) : undefined\n }, [members])\n\n return (\n <FirstAssistedPathContext.Provider value={firstAssistedPath}>\n {props.children}\n </FirstAssistedPathContext.Provider>\n )\n}\n","import {FieldProps, isArraySchemaType, pathToString} from 'sanity'\nimport {useAssistPresence} from '../presence/useAssistPresence'\nimport {useContext, useMemo} from 'react'\nimport {Box, Flex} from '@sanity/ui'\nimport {contextDocumentTypeName} from '../types'\nimport {isAssistSupported} from '../helpers/assistSupported'\nimport {isPortableTextArray, isType} from '../helpers/typeUtils'\nimport {AiFieldPresence} from '../presence/AiFieldPresence'\nimport {AssistOnboardingPopover} from '../onboarding/FieldActionsOnboarding'\nimport {FirstAssistedPathContext} from '../onboarding/FirstAssistedPathProvider'\nimport {fieldOnboardingKey, useOnboardingFeature} from '../onboarding/onboardingStore'\n\nexport function AssistFieldWrapper(props: FieldProps) {\n const {schemaType} = props\n\n const isSupported = useMemo(() => isAssistSupported(schemaType), [schemaType])\n\n if (\n !isSupported ||\n schemaType.name.startsWith('sanity.') ||\n schemaType.name === contextDocumentTypeName\n ) {\n return props.renderDefault(props)\n }\n if (!isType(props.schemaType, 'document') && props.inputId !== 'root') {\n return <AssistField {...props}>{props.children}</AssistField>\n }\n\n return props.renderDefault(props)\n}\n\nexport function AssistField(props: FieldProps) {\n const {path} = props\n\n const isPortableText = useMemo(\n () => !!(isArraySchemaType(props.schemaType) && isPortableTextArray(props.schemaType)),\n [props.schemaType]\n )\n\n const presence = useAssistPresence(props.path, isPortableText)\n\n const firstAssistedPath = useContext(FirstAssistedPathContext)\n const isFirstAssisted = useMemo(\n () => pathToString(path) === firstAssistedPath,\n [path, firstAssistedPath]\n )\n\n const {showOnboarding, dismissOnboarding} = useOnboardingFeature(fieldOnboardingKey)\n\n const actions = (\n <Flex gap={2} align=\"center\" justify=\"space-between\">\n {presence.map((pre) => (\n <Box key={pre.user.id}>\n <AiFieldPresence key={pre.lastActiveAt} presence={pre} />\n </Box>\n ))}\n\n {isFirstAssisted && showOnboarding && <AssistOnboardingPopover dismiss={dismissOnboarding} />}\n </Flex>\n )\n\n return props.renderDefault({\n ...props,\n\n // When showing the onboarding, prevent default field actions from being rendered\n actions: isFirstAssisted && showOnboarding ? [] : props.actions,\n\n // Render presence (and possibly onboarding) in the internal slot (between presence and the field actions)\n // eslint-disable-next-line camelcase\n __internal_slot: actions,\n })\n}\n","import {createContext} from 'react'\nimport {ConnectorsStore} from './ConnectorsStore'\n\nexport const ConnectorsStoreContext = createContext<ConnectorsStore | null>(null)\n","import {useContext} from 'react'\nimport {ConnectorsStoreContext} from './ConnectorsStoreContext'\nimport {ConnectorsStore} from './ConnectorsStore'\n\nexport function useConnectorsStore(): ConnectorsStore {\n const store = useContext(ConnectorsStoreContext)\n\n if (!store) {\n throw new Error('Missing connectors store context')\n }\n\n return store\n}\n","export function hasOverflowScroll(el: HTMLElement): boolean {\n const overflow = getComputedStyle(el).overflow\n\n return overflow.includes('auto') || overflow.includes('hidden') || overflow.includes('scroll')\n}\n","import {useEffect, useMemo, useRef, useState} from 'react'\nimport {Rect, Scroll} from './types'\nimport {hasOverflowScroll} from './helpers'\n\nexport function useRegionRects() {\n const ref = useRef<HTMLDivElement>(null)\n\n const [relativeBoundsRect, setRelativeBoundsRect] = useState<Rect | null>(null)\n const [relativeElementRect, setRelativeElementRect] = useState<Rect | null>(null)\n const [boundsScroll, setBoundsScroll] = useState<Scroll>({x: 0, y: 0})\n const [scroll, setScroll] = useState<Scroll>({x: 0, y: 0})\n\n const boundsScrollXRef = useRef(0)\n const boundsScrollYRef = useRef(0)\n\n const elementScrollXRef = useRef(0)\n const elementScrollYRef = useRef(0)\n\n useEffect(() => {\n const el = ref.current\n\n if (!el) return undefined\n\n const scrollParents: HTMLElement[] = []\n let parent = el.parentElement\n\n while (parent && parent !== document.body) {\n if (\n hasOverflowScroll(parent)\n // || parent.scrollHeight > parent.clientHeight\n ) {\n scrollParents.push(parent)\n }\n\n parent = parent.parentElement\n }\n\n function handleResize() {\n const scrollParent = scrollParents[0]\n\n const boundsRect = scrollParent?.getBoundingClientRect() || {\n x: 0,\n y: 0,\n width: window.innerWidth,\n height: window.innerHeight,\n }\n\n const domRect = el!.getBoundingClientRect()\n\n setRelativeBoundsRect({\n x: boundsRect.x + boundsScrollXRef.current,\n y: boundsRect.y + boundsScrollYRef.current,\n w: boundsRect.width,\n h: boundsRect.height,\n })\n\n setRelativeElementRect({\n x: domRect.x + elementScrollXRef.current,\n y: domRect.y + elementScrollYRef.current,\n w: domRect.width,\n h: domRect.height,\n })\n }\n\n function handleScroll() {\n let scrollX = window.scrollX\n let scrollY = window.scrollY\n\n for (const scrollParent of scrollParents) {\n scrollX += scrollParent.scrollLeft\n scrollY += scrollParent.scrollTop\n }\n\n const scrollParent = scrollParents[0]\n\n boundsScrollXRef.current = scrollX - (scrollParent?.scrollLeft || window.scrollX)\n\n boundsScrollYRef.current = scrollY - (scrollParent?.scrollTop || window.scrollY)\n\n setBoundsScroll({\n x: boundsScrollXRef.current,\n y: boundsScrollYRef.current,\n })\n\n elementScrollXRef.current = scrollX\n elementScrollYRef.current = scrollY\n\n setScroll({x: scrollX, y: scrollY})\n }\n\n window.addEventListener('scroll', handleScroll, {passive: true})\n\n const ro = new ResizeObserver(handleResize)\n\n ro.observe(el)\n\n for (const scrollParent of scrollParents) {\n scrollParent.addEventListener('scroll', handleScroll, {passive: true})\n ro.observe(scrollParent)\n }\n\n handleScroll()\n\n return () => {\n ro.unobserve(el)\n\n for (const scrollParent of scrollParents) {\n ro.unobserve(scrollParent)\n scrollParent.removeEventListener('scroll', handleScroll)\n }\n\n ro.disconnect()\n\n window.removeEventListener('scroll', handleScroll)\n }\n }, [])\n\n const bounds: Rect | null = useMemo(\n () =>\n relativeBoundsRect && {\n x: relativeBoundsRect.x - boundsScroll.x,\n y: relativeBoundsRect.y - boundsScroll.y,\n w: relativeBoundsRect.w,\n h: relativeBoundsRect.h,\n },\n [relativeBoundsRect, boundsScroll]\n )\n\n const element: Rect | null = useMemo(\n () =>\n relativeElementRect && {\n x: relativeElementRect.x - scroll.x,\n y: relativeElementRect.y - scroll.y,\n w: relativeElementRect.w,\n h: relativeElementRect.h,\n },\n [relativeElementRect, scroll]\n )\n\n return {bounds, element, ref}\n}\n","import {HTMLProps, useEffect} from 'react'\nimport {ConnectorRegionRects} from './types'\nimport {useRegionRects} from './useRegionRects'\n\nexport function ConnectorRegion(\n props: {\n onRectsChange?: (rects: ConnectorRegionRects | null) => void\n } & HTMLProps<HTMLDivElement>\n) {\n const {children, onRectsChange, ...restProps} = props\n\n const {bounds, element, ref} = useRegionRects()\n\n useEffect(() => {\n onRectsChange?.(bounds && element ? {bounds, element} : null)\n }, [bounds, element, onRectsChange])\n\n return (\n <div {...restProps} ref={ref}>\n {children}\n </div>\n )\n}\n","import {HTMLProps, useEffect, useState} from 'react'\nimport {useConnectorsStore} from './useConnectorsStore'\nimport {ConnectorRegionRects} from './types'\nimport {ConnectorRegion} from './ConnectorRegion'\n\nexport function ConnectFromRegion(\n props: {_key: string; zIndex: number} & HTMLProps<HTMLDivElement>\n) {\n const {children, _key: key, zIndex, ...restProps} = props\n const store = useConnectorsStore()\n const [rects, setRects] = useState<ConnectorRegionRects | null>(null)\n\n useEffect(() => store.from.subscribe(key, {zIndex}), [key, store, zIndex])\n\n useEffect(() => {\n if (rects) store.from.next(key, rects)\n }, [key, rects, store])\n\n return (\n <ConnectorRegion {...restProps} onRectsChange={setRects}>\n {children}\n </ConnectorRegion>\n )\n}\n","import {Connector, ConnectorRegionRects} from './types'\n\nexport interface ConnectorsStore {\n connectors: {\n subscribe: (observer: (connectors: Connector[]) => void) => () => void\n }\n\n from: {\n subscribe: (key: string, payload?: Record<string, unknown>) => () => void\n next: (key: string, rects: ConnectorRegionRects) => void\n }\n\n to: {\n subscribe: (key: string, payload?: Record<string, unknown>) => () => void\n next: (key: string, rects: ConnectorRegionRects) => void\n }\n}\n\nexport function createConnectorsStore(): ConnectorsStore {\n const configKeys: string[] = []\n const fieldKeys: string[] = []\n\n const channels = {\n from: new Map<string, ConnectorRegionRects | null>(),\n to: new Map<string, ConnectorRegionRects | null>(),\n }\n\n const payloads = {\n from: new Map<string, Record<string, unknown> | undefined>(),\n to: new Map<string, Record<string, unknown> | undefined>(),\n }\n\n const observers: ((connectors: Connector[]) => void)[] = []\n\n function notifyObservers() {\n const connectors: Connector[] = []\n\n for (const key of configKeys) {\n const toRects = channels.to.get(key)\n const toPayload = payloads.from.get(key)\n\n const fromRects = channels.from.get(key)\n const fromPayload = payloads.from.get(key)\n\n if (toRects && fromRects) {\n connectors.push({\n key,\n from: {...fromRects, payload: fromPayload},\n to: {...toRects, payload: toPayload},\n })\n }\n }\n\n for (const observer of observers) {\n observer(connectors)\n }\n }\n\n return {\n to: {\n subscribe(key, payload) {\n channels.to.set(key, null)\n payloads.to.set(key, payload)\n\n configKeys.push(key)\n\n return () => {\n channels.to.delete(key)\n payloads.to.delete(key)\n\n const idx = configKeys.indexOf(key)\n\n if (idx > -1) configKeys.splice(idx, 1)\n\n notifyObservers()\n }\n },\n next(key, rects) {\n channels.to.set(key, rects)\n\n if (fieldKeys.includes(key)) notifyObservers()\n },\n },\n\n connectors: {\n subscribe(observer) {\n observers.push(observer)\n\n return () => {\n const idx = observers.indexOf(observer)\n\n if (idx > -1) observers.splice(idx, 1)\n }\n },\n },\n\n from: {\n subscribe(key, payload) {\n channels.from.set(key, null)\n payloads.from.set(key, payload)\n\n fieldKeys.push(key)\n\n return () => {\n channels.from.delete(key)\n payloads.from.delete(key)\n\n const idx = fieldKeys.indexOf(key)\n\n if (idx > -1) fieldKeys.splice(idx, 1)\n\n notifyObservers()\n }\n },\n next(key, rects) {\n channels.from.set(key, rects)\n\n if (configKeys.includes(key)) notifyObservers()\n },\n },\n }\n}\n","import {ReactNode, useEffect, useMemo} from 'react'\nimport {ConnectorsStore, createConnectorsStore} from './ConnectorsStore'\nimport {ConnectorsStoreContext} from './ConnectorsStoreContext'\nimport {Connector} from './types'\n\nexport function ConnectorsProvider(props: {\n children?: ReactNode\n onConnectorsChange?: (connectors: Connector[]) => void\n}) {\n const {children, onConnectorsChange} = props\n const store: ConnectorsStore = useMemo(() => createConnectorsStore(), [])\n\n useEffect(\n () => onConnectorsChange && store.connectors.subscribe(onConnectorsChange),\n [onConnectorsChange, store]\n )\n\n return <ConnectorsStoreContext.Provider value={store}>{children}</ConnectorsStoreContext.Provider>\n}\n","import {\n ConnectorLine,\n ConnectorLinePoint,\n ConnectorOptions,\n ConnectorRegionRects,\n Rect,\n} from './types'\n\nfunction getConnectorLinePoint(\n options: ConnectorOptions,\n rect: Rect,\n bounds: Rect\n): ConnectorLinePoint {\n const centerY = rect.y + rect.h / 2\n const isAbove = rect.y + rect.h < bounds.y + options.arrow.marginY\n const isBelow = rect.y > bounds.y + bounds.h - options.arrow.marginY\n\n return {\n bounds,\n x: rect.x,\n y: centerY,\n centerY,\n startY: rect.y + options.path.marginY,\n endY: rect.y + rect.h - options.path.marginY,\n isAbove,\n isBelow,\n outOfBounds: isAbove || isBelow,\n }\n}\n\nexport function mapConnectorToLine(\n options: ConnectorOptions,\n connector: {from: ConnectorRegionRects; to: ConnectorRegionRects}\n): ConnectorLine {\n const fromBounds: Rect = {\n y: connector.from.bounds.y + options.arrow.threshold,\n // bottom: connector.from.bounds.y + connector.from.bounds.h - options.arrow.threshold,\n x: connector.from.bounds.x,\n // right: connector.from.bounds.x + connector.from.bounds.w,\n w: connector.from.bounds.w,\n h: connector.from.bounds.h - options.arrow.threshold * 2,\n }\n\n const from = getConnectorLinePoint(options, connector.from.element, fromBounds)\n from.x = connector.from.element.x + connector.from.element.w // + 1\n\n const fromBottom = fromBounds.y + fromBounds.h\n\n const toBounds: Rect = {\n y: connector.to.bounds.y + options.arrow.threshold,\n // bottom: connector.to.bounds.y + connector.to.bounds.h - options.arrow.threshold,\n x: connector.to.bounds.x,\n // right: connector.to.bounds.x + connector.to.bounds.w,\n w: connector.to.bounds.w,\n h: connector.to.bounds.h - options.arrow.threshold * 2,\n }\n\n const toBottom = toBounds.y + toBounds.h\n\n const to = getConnectorLinePoint(options, connector.to.element, toBounds)\n\n const maxStartY = Math.max(to.startY, from.startY)\n\n // Align from <-> to vertically\n from.y = Math.min(maxStartY, from.endY)\n if (from.y < toBounds.y) {\n from.y = Math.min(toBounds.y, from.endY)\n } else if (from.y > toBottom) {\n from.y = Math.max(toBottom, from.startY)\n }\n to.y = Math.min(maxStartY, to.endY)\n if (to.y < fromBounds.y) {\n to.y = Math.min(fromBounds.y, to.endY)\n } else if (to.y > fromBottom) {\n to.y = Math.max(fromBottom, to.startY)\n }\n\n // Keep within bounds\n from.y = Math.min(Math.max(from.y, fromBounds.y), fromBottom)\n to.y = Math.min(Math.max(to.y, toBounds.y), toBottom)\n\n return {from, to}\n}\n","import {ConnectorOptions} from '../../_lib/connector'\n\nexport function arrowPath(options: ConnectorOptions, x: number, y: number, dir: 1 | -1): string {\n return [\n `M ${x - options.arrow.size} ${y - options.arrow.size * dir} `,\n `L ${x} ${y}`,\n `L ${x + options.arrow.size} ${y - options.arrow.size * dir}`,\n ].join('')\n}\n","import {ConnectorLine, ConnectorOptions} from '../../_lib/connector'\n\nexport function drawArrowPath(\n options: ConnectorOptions,\n x: number,\n y: number,\n dir: number\n): string {\n return [\n `M ${x - options.arrow.size} ${y - options.arrow.size * dir} `,\n `L ${x} ${y}`,\n `L ${x + options.arrow.size} ${y - options.arrow.size * dir}`,\n ].join('')\n}\n\nfunction moveTo(x: number, y: number) {\n return `M${x} ${y}`\n}\n\nfunction lineTo(x: number, y: number) {\n return `L${x} ${y}`\n}\n\nfunction join(strings: string[], delim = '') {\n return strings.join(delim)\n}\n\nfunction quadCurve(x1: number, y1: number, x: number, y: number) {\n return `Q${x1} ${y1} ${x} ${y}`\n}\n\nexport function drawConnectorPath(options: ConnectorOptions, line: ConnectorLine): string {\n const {cornerRadius} = options.path\n const {from, to} = line\n const {x: fromX, y: fromY} = from\n const {x: _toX, y: toY} = to\n\n const toX = _toX - 1\n\n // Calculate divider position\n const dividerX = to.bounds.x + options.divider.offsetX\n\n // Calculate connector FROM path X position\n const fromPathX = from.isAbove || from.isBelow ? fromX + options.arrow.marginX : fromX\n\n // Calculate maximum corner radius\n const r0 = Math.min(cornerRadius, Math.abs(fromPathX - dividerX) / 2)\n const r1 = Math.min(cornerRadius, Math.abs(fromY - toY) / 2)\n\n const cmds: string[] = []\n\n // FROM\n if (from.isAbove) {\n cmds.push(\n moveTo(\n fromX + options.arrow.marginX,\n fromY - options.arrow.threshold + options.arrow.marginY\n ),\n lineTo(fromX + options.arrow.marginX, fromY - r0),\n quadCurve(fromX + options.arrow.marginX, fromY, fromX + options.arrow.marginX + r0, fromY)\n )\n } else if (from.isBelow) {\n cmds.push(\n moveTo(\n fromX + options.arrow.marginX,\n fromY + options.arrow.threshold - options.arrow.marginY\n ),\n lineTo(fromX + options.arrow.marginX, fromY + r0),\n quadCurve(fromX + options.arrow.marginX, fromY, fromX + options.arrow.marginX + r0, fromY)\n )\n } else {\n cmds.push(moveTo(fromX, fromY))\n }\n\n // TO\n if (to.isAbove) {\n if (fromY < to.bounds.y) {\n cmds.push(\n lineTo(dividerX - r1, fromY),\n quadCurve(dividerX, fromY, dividerX, fromY + r1),\n lineTo(dividerX, toY - r1),\n quadCurve(dividerX, toY, dividerX + r1, toY),\n lineTo(dividerX - cornerRadius, toY),\n quadCurve(dividerX, toY, dividerX, toY - cornerRadius),\n lineTo(dividerX, toY - options.arrow.threshold + options.arrow.marginY)\n )\n } else {\n cmds.push(\n lineTo(dividerX - cornerRadius, fromY),\n quadCurve(dividerX, fromY, dividerX, fromY - cornerRadius),\n lineTo(dividerX, toY - options.arrow.threshold + options.arrow.marginY)\n )\n }\n } else if (to.isBelow) {\n if (fromY > to.bounds.y + to.bounds.h) {\n // curl around\n cmds.push(\n lineTo(dividerX - options.arrow.marginX - r1, fromY),\n quadCurve(\n dividerX - options.arrow.marginX,\n fromY,\n dividerX - options.arrow.marginX,\n fromY - r1\n ),\n lineTo(dividerX - options.arrow.marginX, toY + r1),\n quadCurve(\n dividerX - options.arrow.marginX,\n toY,\n dividerX - options.arrow.marginX + r1,\n toY\n ),\n lineTo(dividerX - cornerRadius, toY),\n quadCurve(dividerX, toY, dividerX, toY + cornerRadius),\n lineTo(dividerX, toY + options.arrow.threshold - options.arrow.marginY)\n )\n } else {\n cmds.push(\n lineTo(dividerX - cornerRadius, fromY),\n quadCurve(dividerX, fromY, dividerX, fromY + cornerRadius),\n lineTo(dividerX, toY + options.arrow.threshold - options.arrow.marginY)\n )\n }\n } else if (fromY < toY) {\n cmds.push(\n lineTo(dividerX - r0, fromY),\n quadCurve(dividerX, fromY, dividerX, fromY + r1),\n lineTo(dividerX, toY - r1),\n quadCurve(dividerX, toY, dividerX + r1, toY),\n lineTo(toX, toY)\n )\n } else {\n cmds.push(\n lineTo(dividerX - Math.min(r0, r1), fromY),\n quadCurve(dividerX, fromY, dividerX, fromY - Math.min(r0, r1)),\n lineTo(dividerX, toY + r1),\n quadCurve(dividerX, toY, dividerX + r1, toY),\n lineTo(toX, toY)\n )\n }\n\n return join(cmds)\n}\n","import {rgba, useTheme} from '@sanity/ui'\nimport {useMemo} from 'react'\nimport {ConnectorOptions, mapConnectorToLine, Rect} from '../_lib/connector'\nimport {arrowPath} from './draw/arrowPath'\nimport {drawConnectorPath} from './draw/connectorPath'\n\nexport function ConnectorPath(props: {\n from: {bounds: Rect; element: Rect}\n to: {bounds: Rect; element: Rect}\n options: ConnectorOptions\n}) {\n const {from, options, to} = props\n const {strokeWidth} = options.path\n const theme = useTheme()\n\n const line = useMemo(() => mapConnectorToLine(options, {from, to}), [from, options, to])\n\n return (\n <>\n <path\n d={drawConnectorPath(options, line)}\n stroke={theme.sanity.color.base.bg}\n strokeWidth={strokeWidth + 4}\n />\n\n <path\n d={drawConnectorPath(options, line)}\n stroke={rgba(theme.sanity.color.base.border, 0.5)}\n strokeWidth={strokeWidth}\n />\n\n {line.from.isAbove && (\n <path\n d={arrowPath(\n options,\n line.from.x + options.arrow.marginX,\n line.from.bounds.y - options.arrow.threshold + options.arrow.marginY,\n -1\n )}\n stroke={theme.sanity.color.base.border}\n strokeWidth={strokeWidth}\n />\n )}\n\n {line.from.isBelow && (\n <path\n d={arrowPath(\n options,\n line.from.x + options.arrow.marginX,\n line.from.bounds.y +\n line.from.bounds.h +\n options.arrow.threshold -\n options.arrow.marginY,\n 1\n )}\n stroke={theme.sanity.color.base.border}\n strokeWidth={strokeWidth}\n />\n )}\n </>\n )\n}\n","import {Fragment, useEffect, useState} from 'react'\nimport {Connector, ConnectorOptions} from '../_lib/connector'\nimport {ConnectorPath} from './ConnectorPath'\n\nconst DEBUG = false\n\nconst options: ConnectorOptions = {\n arrow: {\n marginX: 10.5,\n marginY: 5,\n size: 4,\n threshold: 16.5,\n },\n divider: {\n offsetX: -10.5,\n },\n path: {\n cornerRadius: 3,\n marginY: 10.5,\n strokeWidth: 1,\n },\n}\n\nexport function AssistConnectorsOverlay(props: {connectors: Connector[]}) {\n const {connectors} = props\n // const zIndexes = connectors.map((connector) => {\n // const zIndex = connector.from.payload?.zIndex\n\n // if (typeof zIndex === 'number') {\n // return zIndex\n // }\n\n // return 1\n // })\n const [, setRedraw] = useState(false)\n useEffect(() => {\n // hacky workaround to force redraw for connectors on initial render\n // this seem to improve initial measurements of elements\n setRedraw(true)\n }, [])\n\n // const zIndex = zIndexes.length ? Math.max(...zIndexes) : 1\n\n return (\n <>\n <svg\n fill=\"none\"\n width={window.innerWidth}\n height={window.innerHeight}\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n pointerEvents: 'none',\n zIndex: 150,\n // zIndex,\n }}\n >\n {connectors.map((connector) => (\n <ConnectorPath\n from={connector.from}\n key={connector.key}\n options={options}\n to={connector.to}\n />\n ))}\n </svg>\n {DEBUG &&\n connectors.map(({key, from, to}) => {\n return (\n <Fragment key={key}>\n <div\n style={{\n position: 'fixed',\n top: from.bounds.y,\n left: from.bounds.x,\n width: from.bounds.w,\n height: from.bounds.h,\n pointerEvents: 'none',\n overflow: 'hidden',\n outline: '1px dotted red',\n outlineOffset: -1,\n zIndex: 10000000 - 1,\n }}\n >\n <div\n style={{\n position: 'absolute',\n top: from.element.y - from.bounds.y,\n left: from.element.x - from.bounds.x,\n width: from.element.w,\n height: from.element.h,\n border: '1px solid red',\n boxSizing: 'border-box',\n }}\n />\n </div>\n\n <div\n style={{\n position: 'fixed',\n top: to.bounds.y,\n left: to.bounds.x,\n width: to.bounds.w,\n height: to.bounds.h,\n pointerEvents: 'none',\n overflow: 'hidden',\n outline: '1px dotted teal',\n outlineOffset: -1,\n zIndex: 10000000 - 1,\n }}\n >\n <div\n style={{\n position: 'absolute',\n top: to.element.y - to.bounds.y,\n left: to.element.x - to.bounds.x,\n width: to.element.w,\n height: to.element.h,\n border: '1px solid teal',\n boxSizing: 'border-box',\n }}\n />\n </div>\n </Fragment>\n )\n })}\n </>\n )\n}\n","import {SanityDocument} from 'sanity'\nimport {PortableTextBlock, PortableTextMarkDefinition, PortableTextSpan} from '@portabletext/types'\n\n//id prefixes\nexport const legacyAssistDocumentIdPrefix = 'sanity.ai.'\n\nexport const legacyAssistDocumentTypeName = 'sanity.ai.docType' as const\nconst aiFieldTypeName = 'sanity.ai.docType.field' as const\nconst instructionTypeName = 'sanity.ai.field.instruction' as const\n\nconst userInputTypeName = 'sanity.ai.prompt.userInput' as const\nconst promptContextTypeName = 'sanity.ai.prompt.context' as const\nconst fieldReferenceTypeName = 'sanity.ai.prompt.fieldRef' as const\n\nexport const legacyContextDocumentTypeName = 'ai.instruction.context' as const\n\nexport const legacyAssistStatusDocumentTypeName = 'sanity.ai.instructionStatus' as const\n\nexport interface FieldPrompts {\n _key: string\n _type: typeof aiFieldTypeName\n path?: string\n instructions?: LegacyInstruction[]\n}\n\nexport interface LegacyAssistDocument extends SanityDocument {\n fields: FieldPrompts[]\n}\n\nexport interface LegacyFieldRef extends PortableTextMarkDefinition {\n _type: typeof fieldReferenceTypeName\n path?: string\n}\n\nexport interface LegacyContextBlock {\n _type: typeof promptContextTypeName\n reference?: {\n _type: 'reference'\n _ref?: string\n }\n}\n\nexport interface LegacyUserInputBlock {\n _type: typeof userInputTypeName\n _key: string\n message?: string\n description?: string\n}\n\nexport type LegacyPromptTextBlock = PortableTextBlock<\n never,\n PortableTextSpan | LegacyFieldRef | LegacyUserInputBlock | LegacyContextBlock,\n 'normal',\n never\n>\n\nexport type LegacyPromptBlock =\n | LegacyPromptTextBlock\n | LegacyFieldRef\n | LegacyContextBlock\n | LegacyUserInputBlock\n\nexport interface LegacyInstruction {\n _key: string\n _type: typeof instructionTypeName\n prompt?: LegacyPromptBlock[]\n\n icon?: string\n userId?: string\n title?: string\n placeholder?: string\n}\n","import {SanityClient, SanityDocument, useClient} from 'sanity'\nimport {useCallback, useEffect, useState} from 'react'\nimport {Box, Button, Card, Dialog, Spinner, Stack, Text, useToast} from '@sanity/ui'\nimport {CheckmarkIcon} from '@sanity/icons'\nimport {\n LegacyAssistDocument,\n legacyAssistDocumentIdPrefix,\n legacyAssistDocumentTypeName,\n legacyAssistStatusDocumentTypeName,\n LegacyContextBlock,\n legacyContextDocumentTypeName,\n LegacyFieldRef,\n LegacyPromptBlock,\n LegacyPromptTextBlock,\n LegacyUserInputBlock,\n} from '../legacy-types'\nimport {assistDocumentId} from '../helpers/ids'\nimport {\n assistDocumentIdPrefix,\n assistDocumentTypeName,\n AssistField,\n assistFieldTypeName,\n contextDocumentTypeName,\n fieldReferenceTypeName,\n InlinePromptBlock,\n instructionContextTypeName,\n instructionTypeName,\n PromptBlock,\n userInputTypeName,\n} from '../types'\nimport {PortableTextSpan} from '@portabletext/types'\nimport {pluginTitle} from '../constants'\n\nconst NO_ASSIST_DOCS: LegacyAssistDocument[] = []\nconst NO_CONTEXT_DOCS: SanityDocument[] = []\nconst NO_IDS: string[] = []\n\ninterface MigratedContextDoc {\n _id: string\n _alphaId: string\n}\n\ntype Task = (subtaskProgress: (percentage: number) => void) => Promise<void>\n\nexport function AlphaMigration() {\n const [alphaAssistDocs, setAlphaAssistDocs] = useState(NO_ASSIST_DOCS)\n const [contextDocs, setContextDocs] = useState(NO_CONTEXT_DOCS)\n const [staleStatusDocIds, setStaleStatusDocs] = useState(NO_IDS)\n const [error, setError] = useState<Error | undefined>(undefined)\n const [progress, setProgress] = useState<number | undefined>(undefined)\n const toast = useToast()\n const client = useClient({apiVersion: '2023-06-01'})\n\n useEffect(() => {\n let canUpdate = true\n client\n .fetch<{\n assistDocs?: LegacyAssistDocument[]\n staleStatusDocIds?: string[]\n contextDocs?: SanityDocument[]\n }>(\n `\n {\n \"assistDocs\": *[_type==\"${legacyAssistDocumentTypeName}\"],\n \"staleStatusDocIds\": *[_type==\"${legacyAssistStatusDocumentTypeName}\"]._id,\n \"contextDocs\": *[_type==\"${legacyContextDocumentTypeName}\"],\n }\n `\n )\n .then((result) => {\n if (!canUpdate || !result) {\n return\n }\n setAlphaAssistDocs(result?.assistDocs ?? NO_ASSIST_DOCS)\n setStaleStatusDocs(result?.staleStatusDocIds ?? NO_IDS)\n setContextDocs(result?.contextDocs ?? NO_CONTEXT_DOCS)\n })\n return () => {\n canUpdate = false\n }\n }, [client, setAlphaAssistDocs, setStaleStatusDocs, setContextDocs])\n\n const convert = useCallback(async () => {\n try {\n setProgress(0.0001)\n\n const tasks: Task[] = [\n () => convertContextDocs(client, contextDocs),\n (subtaskProgress) => deleteDocs(client, staleStatusDocIds, subtaskProgress),\n (subtaskProgress) => convertDocs(client, alphaAssistDocs, subtaskProgress),\n (subtaskProgress) =>\n deleteDocs(\n client,\n contextDocs.map((d) => d._id),\n subtaskProgress\n ),\n ]\n\n const taskSize = 1 / tasks.length\n for (let i = 0; i < tasks.length; i++) {\n const startProgress = i / tasks.length\n await tasks[i]((subProgress) => setProgress(startProgress + subProgress * taskSize))\n setProgress((i + 1) / tasks.length)\n }\n\n setProgress(1)\n setAlphaAssistDocs(NO_ASSIST_DOCS)\n setContextDocs(NO_CONTEXT_DOCS)\n setStaleStatusDocs(NO_IDS)\n toast.push({\n title: `Converted instructions to new format.`,\n status: 'success',\n closable: true,\n })\n } catch (e: any) {\n console.error(e)\n toast.push({\n title: `An error occurred`,\n status: 'error',\n closable: true,\n })\n setError(e)\n setProgress(undefined)\n }\n }, [contextDocs, client, alphaAssistDocs, staleStatusDocIds, setProgress, toast])\n\n if (\n (alphaAssistDocs.length || staleStatusDocIds.length || contextDocs.length) &&\n (!progress || progress < 1)\n ) {\n return (\n <Dialog id=\"outdated-assist-docs\" header={pluginTitle}>\n <Card padding={3}>\n <Stack space={4} style={{maxWidth: 500}}>\n <Text size={1}>\n It seems like this workspace contains documents from an{' '}\n <strong>older version of {pluginTitle}</strong>.\n </Text>\n <Text size={1}>Cleanup is required.</Text>\n {error ? (\n <Card padding={2} tone=\"critical\" border>\n <Text size={1}>An error occurred. See console for details.</Text>{' '}\n </Card>\n ) : null}\n <Button\n icon={\n progress ? (\n <Box style={{marginTop: 5}}>\n <Spinner />\n </Box>\n ) : (\n CheckmarkIcon\n )\n }\n disabled={!!progress}\n text={progress ? `${Math.floor(progress * 100)}%` : 'Ok, convert to new format!'}\n tone=\"primary\"\n onClick={convert}\n />\n </Stack>\n </Card>\n </Dialog>\n )\n }\n\n return null\n}\n\nasync function deleteDocs(\n client: SanityClient,\n ids: string[],\n updateProgress: (percentage: number) => void\n) {\n const chunkSize = 50\n for (let i = 0; i < ids.length; i += chunkSize) {\n const progressCount = Math.min(ids.length, i + chunkSize)\n const chunk = ids.slice(i, progressCount)\n const trans = client.transaction()\n chunk.forEach((id) => trans.delete(id))\n await trans.commit()\n updateProgress(progressCount / ids.length)\n }\n}\n\nasync function convertContextDocs(client: SanityClient, docs: SanityDocument[]) {\n const trans = client.transaction()\n\n for (const doc of docs) {\n const {_id, _type, ...rest} = doc\n trans.createOrReplace({\n ...rest,\n _id: `port.${_id}`,\n _alphaId: _id,\n _type: contextDocumentTypeName,\n })\n }\n\n await trans.commit()\n}\n\nasync function convertDocs(\n client: SanityClient,\n docs: LegacyAssistDocument[],\n updateProgress: (percentage: number) => void\n) {\n const chunkSize = 10\n for (let i = 0; i < docs.length; i += chunkSize) {\n const progressCount = Math.min(docs.length, i + chunkSize)\n const chunk = docs.slice(i, progressCount)\n\n const trans = client.transaction()\n const contextDocs: MigratedContextDoc[] = await client.fetch(\n `*[_type==\"${contextDocumentTypeName}\" && _alphaId != null]{_id, _alphaId}`\n )\n\n chunk.forEach((oldDoc) => {\n const documentType = oldDoc._id.replace(\n new RegExp(`^(${legacyAssistDocumentIdPrefix}|${assistDocumentIdPrefix})`),\n ''\n )\n\n const id = assistDocumentId(documentType)\n\n const fields: AssistField[] = (oldDoc.fields ?? [])\n .filter((field) => field.instructions?.length)\n .map((oldField) => {\n const instructions = (oldField.instructions ?? []).map((inst) => {\n // eslint-disable-next-line max-nested-callbacks\n const prompt = (inst.prompt ?? []).map((block) => {\n return mapBlock(block, contextDocs) as PromptBlock\n })\n return {\n ...inst,\n _type: instructionTypeName,\n prompt,\n }\n })\n return {\n ...oldField,\n _type: assistFieldTypeName,\n instructions,\n }\n })\n\n if (fields.length) {\n trans.createOrReplace({\n _id: id,\n _type: assistDocumentTypeName,\n fields,\n })\n }\n trans.delete(oldDoc._id)\n })\n await trans.commit()\n updateProgress(progressCount / docs.length)\n }\n}\n\ntype Blocks = LegacyPromptBlock | LegacyPromptTextBlock | PortableTextSpan\n\nfunction isFieldRef(block: Blocks): block is LegacyFieldRef {\n return block._type === 'sanity.ai.prompt.fieldRef'\n}\n\nfunction isContext(block: Blocks): block is LegacyContextBlock {\n return block._type === 'sanity.ai.prompt.context'\n}\n\nfunction isUserInput(block: Blocks): block is LegacyUserInputBlock {\n return block._type === 'sanity.ai.prompt.userInput'\n}\n\nfunction isSpan(block: Blocks): block is PortableTextSpan {\n return block._type === 'span'\n}\n\nfunction mapBlock(\n block: Blocks,\n migratedContexts: MigratedContextDoc[]\n): PromptBlock | InlinePromptBlock {\n if (isFieldRef(block)) {\n return {...block, _type: fieldReferenceTypeName}\n }\n if (isUserInput(block)) {\n return {...block, _type: userInputTypeName}\n }\n if (isContext(block)) {\n const newBlock = {\n ...block,\n _type: instructionContextTypeName,\n reference: {\n _type: 'reference',\n _ref:\n migratedContexts.find((c) => c._alphaId === block.reference?._ref)?._id ??\n block.reference?._ref,\n },\n } as const\n return newBlock\n }\n if (isSpan(block)) {\n return block\n }\n const textBlock = block\n return {\n ...textBlock,\n children: (textBlock.children ?? []).map(\n (child) => mapBlock(child, migratedContexts) as InlinePromptBlock\n ),\n }\n}\n","import {useState} from 'react'\nimport {LayoutProps} from 'sanity'\nimport {Connector, ConnectorsProvider} from '../_lib/connector'\nimport {AssistConnectorsOverlay} from '../assistConnectors'\nimport {AssistPluginConfig} from '../plugin'\nimport {AiAssistanceConfigProvider} from './AiAssistanceConfigContext'\nimport {RunInstructionRequest} from '../useApiClient'\nimport {StudioInstruction} from '../types'\nimport {RunInstructionProvider} from './RunInstructionProvider'\nimport {ThemeProvider} from '@sanity/ui'\nimport {AlphaMigration} from './AlphaMigration'\n\nexport interface AIStudioLayoutProps extends LayoutProps {\n config: AssistPluginConfig\n}\n\nexport type RunInstructionArgs = Omit<RunInstructionRequest, 'instructionKey' | 'userText'> & {\n instruction: StudioInstruction\n}\n\nexport function AssistLayout(props: AIStudioLayoutProps) {\n const [connectors, setConnectors] = useState<Connector[]>([])\n const migrate = props.config.alphaMigration ?? true\n\n return (\n <AiAssistanceConfigProvider config={props.config}>\n {migrate ? <AlphaMigration /> : null}\n <RunInstructionProvider>\n <ConnectorsProvider onConnectorsChange={setConnectors}>\n {props.renderDefault(props)}\n <ThemeProvider tone=\"default\">\n <AssistConnectorsOverlay connectors={connectors} />\n </ThemeProvider>\n </ConnectorsProvider>\n </RunInstructionProvider>\n </AiAssistanceConfigProvider>\n )\n}\n","import {InputProps, isArraySchemaType, PatchEvent, unset} from 'sanity'\nimport {ErrorInfo, PropsWithChildren, useCallback, useMemo, useState} from 'react'\nimport {Box, Button, Card, ErrorBoundary, Flex, Stack, Text} from '@sanity/ui'\nimport {isPortableTextArray} from '../helpers/typeUtils'\nimport styled from 'styled-components'\n\nconst WrapPreCard = styled(Card)`\n & pre {\n white-space: pre-wrap !important;\n }\n`\n\nexport function SafeValueInput(props: InputProps) {\n return (\n <ErrorWrapper onChange={props.onChange}>\n <PteValueFixer {...props} />\n </ErrorWrapper>\n )\n}\n\nexport function ErrorWrapper(\n props: PropsWithChildren<{onChange: (patchEvent: PatchEvent) => void}>\n) {\n const {onChange} = props\n const [error, setError] = useState<Error | undefined>()\n\n const catchError = useCallback(\n (params: {error: Error; info: ErrorInfo}) => {\n setError(params.error)\n },\n [setError]\n )\n\n const unsetValue = useCallback(() => onChange(PatchEvent.from(unset())), [onChange])\n const dismiss = useCallback(() => setError(undefined), [])\n const catcher = <ErrorBoundary onCatch={catchError}>{props.children}</ErrorBoundary>\n\n return error ? (\n <Card border tone=\"critical\" padding={2} contentEditable={false}>\n <Stack space={3}>\n <Text muted weight=\"semibold\">\n An error occurred.\n </Text>\n\n <WrapPreCard flex={1} padding={2} tone=\"critical\" border>\n {catcher}\n </WrapPreCard>\n\n <Flex width=\"fill\" flex={1} gap={3}>\n <Box flex={1}>\n <Button text=\"Dismiss\" onClick={dismiss} tone=\"primary\" />\n </Box>\n <Button text=\"Unset value\" onClick={unsetValue} tone=\"critical\" />\n </Flex>\n </Stack>\n </Card>\n ) : (\n catcher\n )\n}\n\nfunction PteValueFixer(props: InputProps) {\n const isPortableText = useMemo(\n () => isArraySchemaType(props.schemaType) && isPortableTextArray(props.schemaType),\n [props.schemaType]\n )\n const value = props.value\n if (isPortableText && value && !(value as any[]).length) {\n return props.renderDefault({...props, value: undefined})\n }\n\n return props.renderDefault(props)\n}\n","import {BlockProps, PatchEvent, useFormCallbacks} from 'sanity'\nimport {useAssistPresence} from '../presence/useAssistPresence'\nimport {Box, Flex} from '@sanity/ui'\nimport {ErrorWrapper} from '../components/SafeValueInput'\nimport {useCallback} from 'react'\nimport {AiFieldPresence} from '../presence/AiFieldPresence'\n\nexport function AssistFormBlock(props: BlockProps) {\n const presence = useAssistPresence(props.path, true)\n const {onChange} = useFormCallbacks()\n const key = props.value._key\n const localOnChange = useCallback(\n (patchEvent: PatchEvent) => {\n if (!key) {\n return\n }\n onChange(PatchEvent.from(patchEvent).prefixAll({_key: key}))\n },\n [onChange, key]\n )\n return (\n <ErrorWrapper onChange={localOnChange}>\n <Flex align=\"center\" justify=\"space-between\">\n <Box flex={1}>{props.renderDefault(props)}</Box>\n {presence.map((pre) => (\n <AiFieldPresence key={pre.lastActiveAt} presence={pre} />\n ))}\n </Flex>\n </ErrorWrapper>\n )\n}\n","import {ItemProps} from 'sanity'\nimport {useAssistPresence} from '../presence/useAssistPresence'\nimport {Box, Flex} from '@sanity/ui'\nimport {AiFieldPresence} from '../presence/AiFieldPresence'\n\nexport function AssistItem(props: ItemProps) {\n const {path} = props\n const presence = useAssistPresence(path, true)\n\n return (\n <Flex align=\"center\" width=\"fill\" style={{position: 'relative'}}>\n <Box flex={1}>{props.renderDefault({...props})}</Box>\n {presence.map((pre) => (\n <Box key={pre.user.id} style={{position: 'absolute', right: 35}}>\n <AiFieldPresence presence={pre} />\n </Box>\n ))}\n </Flex>\n )\n}\n","import {FieldError, FieldMember, FieldSetMember, ObjectMember} from 'sanity'\n\nexport function findFieldMember(\n members: ObjectMember[],\n fieldName: string\n): FieldMember | FieldError | undefined {\n return members.find(\n (m): m is FieldMember | FieldError =>\n (m.kind === 'field' && m.name === fieldName) ||\n (m.kind === 'error' && m.fieldName === fieldName)\n )\n}\n\nexport function findFieldsetMember(\n members: ObjectMember[],\n fieldsetName: string\n): FieldSetMember | undefined {\n return members.find(\n (m): m is FieldSetMember => m.kind === 'fieldSet' && m.fieldSet.name === fieldsetName\n )\n}\n","import {FieldError, FieldMember, ObjectInputMember, ObjectInputProps} from 'sanity'\nimport {findFieldMember, findFieldsetMember} from '../helpers'\nimport {Box, Flex, Stack, Text} from '@sanity/ui'\nimport {useId, useMemo} from 'react'\n\nexport function InstructionInput(props: ObjectInputProps) {\n return (\n <Stack space={[4, 4, 4, 5]}>\n <NameField {...props} />\n <ShareField {...props} />\n <PromptField {...props} />\n </Stack>\n )\n}\n\nfunction PromptField(props: ObjectInputProps) {\n const promptMember = findFieldMember(props.members, 'prompt')\n return promptMember ? <ObjectInputMember {...props} member={promptMember} /> : null\n}\n\nconst NONE: (FieldMember | FieldError)[] = []\n\nfunction NameField(props: ObjectInputProps) {\n const fieldsetMember = findFieldsetMember(props.members, 'appearance')\n const titleId = useId()\n\n const members = fieldsetMember?.fieldSet.members ?? NONE\n const iconMember = findFieldMember(members, 'icon')\n const titleMember = findFieldMember(members, 'title')\n\n const titlePlaceholder = 'Untitled'\n const moddedTitleMember = useMemo(() => {\n if (!titleMember) {\n return undefined\n }\n if (titleMember.kind === 'error') {\n return titleMember\n }\n return {\n ...titleMember,\n field: {\n ...titleMember?.field,\n schemaType: {\n ...titleMember?.field.schemaType,\n placeholder: titlePlaceholder,\n },\n },\n }\n }, [titleMember, titlePlaceholder])\n\n return (\n <Stack space={5}>\n <Stack space={2}>\n <Flex gap={1}>\n <Text as=\"label\" weight=\"semibold\" size={1} htmlFor={titleId}>\n Name\n </Text>\n </Flex>\n\n <Text muted size={1}>\n How this instruction appears in menus\n </Text>\n\n <Flex align=\"center\">\n {iconMember && (\n <Box flex=\"none\">\n <ObjectInputMember {...props} member={iconMember} />\n </Box>\n )}\n {moddedTitleMember && (\n <Box flex={1} style={{marginLeft: -1}}>\n <ObjectInputMember {...props} member={moddedTitleMember} />\n </Box>\n )}\n </Flex>\n </Stack>\n </Stack>\n )\n}\n\nfunction ShareField(props: ObjectInputProps) {\n const fieldsetMember = findFieldsetMember(props.members, 'appearance')\n const members = fieldsetMember?.fieldSet.members ?? NONE\n const visibilityMember = findFieldMember(members, 'userId')\n\n return <>{visibilityMember && <ObjectInputMember {...props} member={visibilityMember} />}</>\n}\n","import {FieldProps} from 'sanity'\n\nexport function HiddenFieldTitle(props: FieldProps) {\n return props.renderDefault({...props, title: '', level: props.level - 2, changed: false})\n}\n","import {set, StringInputProps, unset, useCurrentUser} from 'sanity'\nimport {Card, Flex, Switch, Text} from '@sanity/ui'\nimport {useCallback, useId} from 'react'\n\nexport function InstructionVisibility(props: StringInputProps) {\n const {value, onChange} = props\n\n const user = useCurrentUser()\n\n const handleChange = useCallback(() => {\n const newValue = value ? '' : user?.id ?? ''\n onChange(newValue ? set(newValue) : unset())\n }, [onChange, user, value])\n\n const id = useId()\n\n return (\n <Card>\n <Flex gap={2} align=\"flex-start\">\n <div style={{margin: '-3px 0'}}>\n <Switch\n {...props.elementProps}\n id={id}\n value={`${!value}`}\n checked={!value}\n onChange={handleChange}\n disabled={props.elementProps.readOnly}\n />\n </div>\n\n <Text muted size={1} weight=\"medium\">\n <label htmlFor={id}>Make visible to all Studio members</label>\n </Text>\n </Flex>\n </Card>\n )\n}\n","import {icons} from '@sanity/icons'\nimport {set, StringInputProps} from 'sanity'\nimport {Button, Menu, MenuButton, MenuItem} from '@sanity/ui'\nimport {ElementType, ReactNode, useCallback, useId, useMemo} from 'react'\n\nexport function IconInput(props: StringInputProps) {\n const {value, onChange} = props\n const id = useId()\n const items = useMemo(\n () =>\n Object.entries(icons).map(([key, icon]) => (\n <IconItem key={key} iconKey={key} icon={icon} onChange={onChange} />\n )),\n [onChange]\n )\n\n const selectedIcon = useMemo(() => getIcon(value), [value])\n\n return (\n <MenuButton\n button={\n <Button icon={selectedIcon} title=\"Select icon\" padding={3} mode=\"ghost\" radius={1} />\n }\n id={id}\n menu={<Menu style={{maxHeight: 300}}>{items}</Menu>}\n popover={{portal: true}}\n />\n )\n}\n\nfunction IconItem({\n icon,\n iconKey: key,\n onChange,\n}: {\n iconKey: string\n icon: ElementType | ReactNode\n onChange: StringInputProps['onChange']\n}) {\n const onClick = useCallback(() => onChange(set(key)), [onChange, key])\n return <MenuItem icon={icon} title={key} text={key} onClick={onClick} />\n}\n\nexport function getIcon(iconName?: string) {\n return Object.entries(icons).find(([key]) => key === iconName)?.[1] ?? icons.sparkles\n}\n","import {set, StringInputProps} from 'sanity'\nimport {useCallback, useContext, useEffect, useId, useRef} from 'react'\nimport {Box} from '@sanity/ui'\nimport {SelectedFieldContext} from '../SelectedFieldContext'\nimport {FieldAutocomplete} from '../../../assistInspector/FieldAutocomplete'\nimport {FieldRef} from '../../../assistInspector/helpers'\nimport {TypePathContext} from '../AssistDocumentForm'\n\nexport function FieldRefPathInput(props: StringInputProps) {\n const documentSchema = useContext(SelectedFieldContext)?.documentSchema\n const typePath = useContext(TypePathContext)\n const ref = useRef<HTMLDivElement>(null)\n const id = useId()\n const {onChange} = props\n\n useEffect(() => {\n ref.current?.querySelector('input')?.focus()\n }, [])\n\n const onSelect = useCallback((path: string) => onChange(set(path)), [onChange])\n\n const filter = useCallback(\n (field: FieldRef) => {\n if (!field.key.includes('|') || !typePath) {\n return true\n }\n const dotSplit = typePath.split('.')\n const base = dotSplit.slice(0, dotSplit.length - 1).join('.')\n return field.key.includes(base)\n },\n [typePath]\n )\n if (!documentSchema) {\n return props.renderDefault(props)\n }\n\n return (\n <Box flex={1} style={{minWidth: 300}} ref={ref}>\n <FieldAutocomplete\n id={id}\n schemaType={documentSchema}\n onSelect={onSelect}\n fieldPath={props.value}\n filter={filter}\n />\n </Box>\n )\n}\n","import {ArrayOfObjectsInputProps, useCurrentUser} from 'sanity'\nimport {useMemo} from 'react'\nimport {StudioInstruction} from '../../types'\n\nexport function InstructionsArrayInput(props: ArrayOfObjectsInputProps) {\n const user = useCurrentUser()\n\n const originalValue = props.value as StudioInstruction[] | undefined\n const originalMembers = props.members\n const value = useMemo(\n () => (originalValue ?? []).filter((v) => !v.userId || v.userId === user?.id),\n [originalValue, user]\n )\n const members = useMemo(\n () =>\n (originalMembers ?? []).filter((v) => {\n if (v.kind === 'error') {\n return true\n }\n const value = v?.item?.value as any\n return !value.userId || value.userId === user?.id\n }),\n [originalMembers, user]\n )\n return props.renderDefault({...props, value, members})\n}\n","import {BlockProps} from 'sanity'\nimport {Box} from '@sanity/ui'\nimport {createContext} from 'react'\n\n// workaround for preview value sometimes lagging behind\nexport const InlineBlockValueContext = createContext<unknown>(undefined)\n\nexport function AssistInlineFormBlock(props: BlockProps) {\n return (\n <InlineBlockValueContext.Provider value={props.value}>\n <Box flex={1}>{props.renderDefault(props)}</Box>\n </InlineBlockValueContext.Provider>\n )\n}\n","import {useContext} from 'react'\nimport {useSelectedField} from '../../assistInspector/helpers'\nimport {Box, Flex, Text} from '@sanity/ui'\nimport {PreviewProps} from 'sanity'\nimport {SelectedFieldContext} from './SelectedFieldContext'\nimport {InlineBlockValueContext} from '../../assistFormComponents/AssistInlineFormBlock'\n\nexport function FieldRefPreview(props: PreviewProps & {path?: string}) {\n const documentSchema = useContext(SelectedFieldContext)?.documentSchema\n const path = (useContext(InlineBlockValueContext) as {path?: string})?.path ?? props.path\n const selectedField = useSelectedField(documentSchema, path)\n return (\n <Flex gap={2} align=\"center\" style={{width: '100%'}}>\n <Flex flex={1} gap={2} align=\"center\" paddingY={3} paddingX={1}>\n {/*<Box>\n <Text>{selectedField?.icon ? createElement(selectedField?.icon) : <CodeIcon />}</Text>\n </Box>*/}\n <Box>\n <Text size={1} textOverflow=\"ellipsis\">\n {selectedField?.title ?? 'Select field'}\n </Text>\n </Box>\n </Flex>\n <>{props.actions}</>\n </Flex>\n )\n}\n","import {ObjectInputProps} from 'sanity'\nimport {Box} from '@sanity/ui'\nimport {useEffect, useRef} from 'react'\n\nexport function HideReferenceChangedBannerInput(props: ObjectInputProps) {\n const ref = useRef<HTMLDivElement>(null)\n\n // hides \"reference was changed\" banner (it is incorrectly flashing because the pane handler does not support the way wie use the assist pane)\n useEffect(() => {\n const parent = ref.current?.closest('[data-testid=\"pane-content\"]')\n if (!parent) {\n return\n }\n const style = document.createElement('style')\n const parentId = `id-${Math.random()}`.replace('.', '-')\n parent.id = parentId\n\n style.innerText = `\n #${parentId} [data-testid=\"reference-changed-banner\"] { display: none; }\n `\n parent.prepend(style)\n }, [ref])\n\n return <Box ref={ref}>{props.renderDefault(props)}</Box>\n}\n","import {defineArrayMember, defineField, defineType} from 'sanity'\nimport {contextDocumentTypeName} from '../types'\nimport {DocumentTextIcon, TokenIcon} from '@sanity/icons'\nimport {HideReferenceChangedBannerInput} from '../components/HideReferenceChangedBannerInput'\n\nexport const contextDocumentSchema = defineType({\n type: 'document',\n name: contextDocumentTypeName,\n title: 'AI context',\n liveEdit: true,\n icon: TokenIcon,\n components: {\n input: HideReferenceChangedBannerInput,\n },\n fields: [\n defineField({\n type: 'string',\n name: 'title',\n title: 'Title',\n }),\n defineField({\n name: 'context',\n type: 'array',\n title: 'Context',\n of: [\n defineArrayMember({\n type: 'block',\n styles: [{title: 'Normal', value: 'normal'}],\n lists: [],\n marks: {\n decorators: [],\n annotations: [],\n },\n }),\n ],\n }),\n ],\n preview: {\n select: {\n title: 'title',\n context: 'context',\n },\n prepare({title, context}) {\n const text = context\n ?.flatMap((block: any) => block?.children)\n .flatMap((child: any) => child?.text?.split(' '))\n .filter(Boolean)\n const words = text?.length ?? 0\n return {\n title,\n subtitle: `Words: ${words}`,\n media: DocumentTextIcon,\n }\n },\n },\n})\n","// Strict ESM env, designed to run outside Node.js in envs that provide WebCrypto (deno, browsers, etc)\n\nexport default function getRandomValues(typedArray) {\n return window.crypto.getRandomValues(typedArray)\n}\n","import getRandomValues from 'get-random-values-esm'\n\n// WHATWG crypto RNG - https://w3c.github.io/webcrypto/Overview.html\nfunction whatwgRNG(length = 16) {\n const rnds8 = new Uint8Array(length)\n getRandomValues(rnds8)\n return rnds8\n}\n\nconst getByteHexTable = (() => {\n let table: string[]\n return () => {\n if (table) {\n return table\n }\n table = []\n for (let i = 0; i < 256; ++i) {\n table[i] = (i + 0x100).toString(16).substring(1)\n }\n return table\n }\n})()\n\nexport function randomKey(length?: number) {\n const table = getByteHexTable()\n return whatwgRNG(length)\n .reduce((str, n) => str + table[n], '')\n .slice(0, length)\n}\n","import {ArrayOfObjectsInputProps, set, typed} from 'sanity'\nimport {Box} from '@sanity/ui'\nimport styled from 'styled-components'\nimport {useEffect} from 'react'\nimport {ContextBlock, FieldRef, PromptBlock, PromptTextBlock, UserInputBlock} from '../../../types'\nimport {randomKey} from '../../../_lib/randomKey'\n\nconst PteMods = styled(Box)`\n & [data-testid='pt-editor__toolbar-card'] > div > div:last-child {\n display: none;\n }\n & [data-testid='pt-editor'] {\n min-height: 300px;\n }\n & [data-testid='pt-editor'] .pt-inline-object * {\n max-width: 400px;\n }\n`\n\nexport function PromptInput(props: ArrayOfObjectsInputProps) {\n // quickfixes the model (converts blocks to inline blocks for alpha customers)\n // backend supports both types, but this prevents \"missing block\" schema errors\n useOnlyInlineBlocks(props)\n return <PteMods>{props.renderDefault(props)}</PteMods>\n}\n\nfunction useOnlyInlineBlocks(props: ArrayOfObjectsInputProps) {\n useEffect(() => {\n let needsFix = false\n const val = ((props.value as PromptBlock[]) ?? []).map((block) => {\n if (block._type === 'block') {\n return block\n }\n\n needsFix = true\n return typed<PromptTextBlock>({\n _key: randomKey(12),\n _type: 'block',\n level: 0,\n markDefs: [],\n style: 'normal',\n children: [block as FieldRef | ContextBlock | UserInputBlock],\n })\n })\n\n if (needsFix) {\n props.onChange(set(val))\n }\n // only run this once when loading the field\n // eslint-disable-next-line\n }, [])\n}\n","import {ArrayFieldProps} from 'sanity'\n\nexport function InstructionsArrayField(props: ArrayFieldProps) {\n return props.renderDefault({\n ...props,\n title: ' ',\n })\n}\n","import {defineArrayMember, defineField, defineType, ObjectSchemaType} from 'sanity'\nimport {\n ArrowRightIcon,\n CodeIcon,\n ComposeIcon,\n icons,\n IconSymbol,\n LockIcon,\n SparklesIcon,\n ThListIcon,\n} from '@sanity/icons'\nimport {\n assistDocumentIdPrefix,\n assistDocumentTypeName,\n assistFieldTypeName,\n assistTasksStatusTypeName,\n fieldReferenceTypeName,\n instructionContextTypeName,\n instructionTaskTypeName,\n instructionTypeName,\n promptTypeName,\n userInputTypeName,\n} from '../types'\nimport {Box, Flex, Stack, Text, Tooltip} from '@sanity/ui'\nimport {getInstructionTitle} from '../helpers/misc'\nimport {AssistDocumentForm} from '../assistDocument/components/AssistDocumentForm'\nimport {InstructionInput} from '../assistDocument/components/instruction/InstructionInput'\nimport {HiddenFieldTitle} from '../assistDocument/components/generic/HiddenFieldTitle'\nimport {InstructionVisibility} from '../assistDocument/components/instruction/appearance/InstructionVisibility'\nimport {IconInput} from '../assistDocument/components/instruction/appearance/IconInput'\nimport {FieldRefPathInput} from '../assistDocument/components/instruction/FieldRefInput'\nimport {InstructionsArrayInput} from '../assistDocument/components/InstructionsArrayInput'\nimport {FieldRefPreview} from '../assistDocument/components/FieldRefPreview'\nimport {createElement} from 'react'\nimport {contextDocumentSchema} from './contextDocumentSchema'\nimport {PromptInput} from '../assistDocument/components/instruction/PromptInput'\nimport {instructionGuideUrl} from '../constants'\nimport {InstructionsArrayField} from '../assistDocument/components/InstructionsArrayField'\nimport {getFieldRefsWithDocument} from '../assistInspector/helpers'\n\nexport const fieldReference = defineType({\n type: 'object',\n name: fieldReferenceTypeName,\n title: 'Document field',\n icon: ThListIcon,\n\n fields: [\n defineField({\n type: 'string',\n name: 'path',\n title: 'Field',\n components: {\n input: FieldRefPathInput,\n },\n validation: (rule) =>\n rule.custom((value, context) => {\n if (!value) {\n return 'Please select a field'\n }\n try {\n const docId = context.document?._id\n if (!docId) {\n return `Field reference cannot be used outside document inspector context. Could not resolve document id.`\n }\n const targetDocType = docId.replace(new RegExp(`^${assistDocumentIdPrefix}`), '')\n const schema = context.schema.get(targetDocType)\n if (!schema) {\n return `Field reference cannot be used outside document inspector context. Could not resolve schema: ${targetDocType}`\n }\n const refs = getFieldRefsWithDocument(schema as ObjectSchemaType)\n const fieldRef = refs.find((r) => r.key === value)\n if (!fieldRef) {\n return `Field with path \"${value}\" does not exist in the schema.`\n }\n return true\n } catch (e) {\n console.error('Failed to resolve field reference', e)\n return 'Invalid field reference.'\n }\n }),\n }),\n ],\n preview: {\n select: {\n path: 'path',\n },\n prepare({path}) {\n return {\n title: path,\n path,\n icon: CodeIcon,\n }\n },\n },\n components: {\n preview: FieldRefPreview,\n },\n options: {\n modal: {\n type: 'popover',\n },\n },\n})\n\nexport const userInput = defineType({\n type: 'object',\n name: userInputTypeName,\n title: 'User input',\n icon: ComposeIcon,\n fields: [\n defineField({\n type: 'string',\n name: 'message',\n title: 'User input title',\n placeholder: 'Provide instruction text',\n description: 'The header above the user input text field',\n validation: (rule) => rule.required(),\n }),\n defineField({\n type: 'text',\n rows: 3,\n name: 'description',\n title: 'User input description',\n description: 'The description above the user input text field',\n }),\n ],\n preview: {\n select: {\n title: 'message',\n },\n },\n options: {\n modal: {\n type: 'popover',\n width: 1,\n },\n },\n})\n\nexport const promptContext = defineType({\n type: 'object',\n name: instructionContextTypeName,\n title: contextDocumentSchema.title,\n icon: contextDocumentSchema.icon,\n fields: [\n defineField({\n type: 'reference',\n name: 'reference',\n to: [{type: contextDocumentSchema.name}],\n title: 'Context',\n description: 'The referenced context will be inserted into the instruction',\n validation: (rule) => rule.required(),\n components: {\n input: function Fix(props) {\n return <Box style={{maxWidth: 300}}>{props.renderDefault(props)}</Box>\n },\n },\n }),\n ],\n preview: {\n select: {\n ref: 'reference._ref',\n title: 'reference.title',\n context: 'reference.context',\n },\n prepare(select) {\n return select.ref\n ? contextDocumentSchema?.preview?.prepare?.(select) ?? select\n : {title: 'No reference selected', media: contextDocumentSchema.icon}\n },\n },\n options: {\n modal: {\n type: 'popover',\n width: 'auto',\n },\n },\n})\n\nexport const prompt = defineType({\n type: 'array',\n name: promptTypeName,\n title: 'Prompt',\n of: [\n defineArrayMember({\n type: 'block',\n styles: [{title: 'Normal', value: 'normal'}],\n lists: [],\n marks: {\n decorators: [],\n annotations: [],\n },\n of: [\n defineArrayMember({\n type: fieldReference.name,\n }),\n defineArrayMember({\n type: promptContext.name,\n }),\n defineArrayMember({\n type: userInput.name,\n }),\n ],\n }),\n /* defineArrayMember({\n type: fieldReference.name,\n }),\n defineArrayMember({\n type: promptContext.name,\n }),\n defineArrayMember({\n type: userInput.name,\n }),*/\n ],\n})\n\nexport const instruction = defineType({\n type: 'object',\n name: instructionTypeName,\n title: 'Instruction',\n fieldsets: [\n {name: 'appearance', title: 'Appearance', options: {collapsible: true, collapsed: true}},\n ],\n preview: {\n select: {\n icon: 'icon',\n title: 'title',\n userId: 'userId',\n },\n prepare: ({icon, title, userId}) => {\n return {\n title,\n icon: icon ? icons[icon as IconSymbol] : SparklesIcon,\n userId,\n }\n },\n },\n components: {\n input: InstructionInput,\n preview: (props: any) => {\n return (\n <Flex gap={3} align=\"center\" padding={2}>\n {props.icon && (\n <Box flex=\"none\">\n <Text size={1}>{createElement(props.icon)}</Text>\n </Box>\n )}\n\n <Stack flex={1} space={2}>\n <Text size={1} textOverflow=\"ellipsis\" weight=\"medium\">\n {getInstructionTitle(props)}\n </Text>\n </Stack>\n\n {props.userId && (\n <Text size={1}>\n <Tooltip\n content={<Text size={1}>Only visible to you</Text>}\n padding={2}\n placement=\"top\"\n portal\n >\n <LockIcon />\n </Tooltip>\n </Text>\n )}\n </Flex>\n )\n },\n },\n fields: [\n defineField({\n type: prompt.name,\n name: 'prompt',\n title: 'Instruction',\n description: (\n <>\n Learn from{' '}\n <a href={instructionGuideUrl} target=\"_blank\" rel=\"noreferrer\">\n our instruction guide <ArrowRightIcon />\n </a>\n </>\n ),\n components: {\n input: PromptInput,\n },\n }),\n defineField({\n type: 'string',\n name: 'icon',\n title: 'Icon',\n fieldset: 'appearance',\n components: {\n field: HiddenFieldTitle,\n input: IconInput,\n },\n }),\n defineField({\n type: 'string',\n name: 'title',\n title: 'Title',\n fieldset: 'appearance',\n components: {\n field: HiddenFieldTitle,\n },\n }),\n defineField({\n type: 'string',\n name: 'userId',\n title: 'Visibility',\n fieldset: 'appearance',\n components: {\n field: HiddenFieldTitle,\n input: InstructionVisibility,\n },\n initialValue: (params, context) => context.currentUser?.id ?? '',\n readOnly: (context) =>\n Boolean(\n context.parent?.createdById && context.parent?.createdById !== context.currentUser?.id\n ),\n }),\n defineField({\n type: 'string',\n name: 'createdById',\n title: 'Created by',\n hidden: true,\n fieldset: 'appearance',\n initialValue: (params, context) => {\n return context.currentUser?.id ?? ''\n },\n }),\n ],\n})\n\nexport const fieldInstructions = defineType({\n type: 'object',\n name: assistFieldTypeName,\n title: 'Field prompt',\n /* components: {\n input: FieldPromptInput,\n },*/\n fields: [\n defineField({\n type: 'string',\n name: 'path',\n title: 'Path',\n readOnly: true,\n hidden: true,\n }),\n defineField({\n type: 'array',\n name: 'instructions',\n title: 'Instructions',\n of: [{type: instruction.name}],\n components: {\n field: InstructionsArrayField,\n input: InstructionsArrayInput,\n },\n }),\n ],\n preview: {\n select: {\n title: 'path',\n },\n },\n})\n\nexport const assistDocumentSchema = defineType({\n //NOTE: this is a document type. Using object here ensures it does not appear in structure menus\n type: 'document',\n //workaround for using object and not document\n ...({liveEdit: true} as any),\n name: assistDocumentTypeName,\n title: 'AI Document',\n\n components: {\n input: AssistDocumentForm,\n field: (props) => {\n return props.renderDefault({...props, title: ''})\n },\n },\n fields: [\n defineField({\n type: 'string',\n name: 'title',\n title: 'Title',\n }),\n defineField({\n type: 'array',\n name: 'fields',\n title: 'Fields',\n of: [{type: fieldInstructions.name}],\n }),\n ],\n preview: {\n select: {\n title: 'title',\n },\n },\n})\n\nexport const instructionTask = defineType({\n type: 'object',\n name: instructionTaskTypeName,\n title: 'Instruction task',\n fields: [\n defineField({\n type: 'string',\n name: 'path',\n title: 'Path',\n }),\n defineField({\n type: 'string',\n name: 'instructionKey',\n title: 'Instruction key',\n }),\n defineField({\n type: 'datetime',\n name: 'started',\n title: 'Started',\n }),\n defineField({\n type: 'datetime',\n name: 'updated',\n title: 'Updated',\n }),\n defineField({\n type: 'string',\n name: 'info',\n title: 'Info',\n }),\n ],\n})\n\nexport const documentInstructionStatus = defineType({\n //NOTE: this is a document type. Using object here ensures it does not appear in structure menus\n type: 'object',\n //workaround for using object and not document\n ...({liveEdit: true} as any),\n name: assistTasksStatusTypeName,\n title: 'Document instruction status',\n fields: [\n defineField({\n type: 'array',\n name: 'tasks',\n title: 'Tasks',\n of: [{type: instructionTask.name}],\n }),\n ],\n})\n","import {\n assistDocumentSchema,\n documentInstructionStatus,\n fieldInstructions,\n fieldReference,\n instruction,\n instructionTask,\n prompt,\n promptContext,\n userInput,\n} from './assistDocumentSchema'\nimport {contextDocumentSchema} from './contextDocumentSchema'\n\nexport const schemaTypes = [\n fieldInstructions,\n assistDocumentSchema,\n prompt,\n fieldReference,\n instruction,\n documentInstructionStatus,\n instructionTask,\n contextDocumentSchema,\n userInput,\n promptContext,\n]\n","import {Path, SchemaType} from 'sanity'\nimport {useMemo} from 'react'\nimport {isAssistSupported} from './assistSupported'\n\nexport function useAssistSupported(path: Path, schemaType: SchemaType) {\n return useMemo(() => isAssistSupported(schemaType), [schemaType])\n}\n","import {getPublishedId, ObjectSchemaType, useEditState} from 'sanity'\nimport {useStudioAssistDocument} from './useStudioAssistDocument'\nimport {AssistDocumentContextValue} from '../AssistDocumentContext'\nimport {useMemo} from 'react'\nimport {isDocAssistable} from '../RequestRunInstructionProvider'\nimport {useDocumentPane} from 'sanity/desk'\nimport {useAiPaneRouter} from '../../assistInspector/helpers'\nimport {fieldPathParam} from '../../types'\n\nexport function useAssistDocumentContextValue(\n documentId: string,\n documentSchemaType: ObjectSchemaType\n) {\n const {published, draft} = useEditState(\n getPublishedId(documentId),\n documentSchemaType.name,\n 'low'\n )\n const assistableDocumentId = draft?._id || published?._id || documentId\n const documentIsNew = Boolean(!draft?._id && !published?._id)\n const documentIsAssistable = isDocAssistable(documentSchemaType, published, draft)\n\n const {params} = useAiPaneRouter()\n const selectedPath = params[fieldPathParam]\n const {openInspector, closeInspector, inspector, onChange: documentOnChange} = useDocumentPane()\n\n const assistDocument = useStudioAssistDocument({\n documentId,\n schemaType: documentSchemaType,\n })\n\n const value: AssistDocumentContextValue = useMemo(() => {\n const base = {\n documentId,\n assistableDocumentId,\n documentSchemaType,\n documentIsNew,\n documentIsAssistable,\n openInspector,\n closeInspector,\n inspector,\n documentOnChange,\n selectedPath,\n }\n if (!assistDocument) {\n return {...base, loading: true, assistDocument: undefined}\n }\n return {\n ...base,\n loading: false,\n assistDocument: assistDocument,\n }\n }, [\n assistDocument,\n documentIsAssistable,\n documentId,\n assistableDocumentId,\n documentSchemaType,\n documentIsNew,\n openInspector,\n closeInspector,\n inspector,\n documentOnChange,\n selectedPath,\n ])\n\n return value\n}\n","import {LockIcon} from '@sanity/icons'\nimport {Text, Tooltip} from '@sanity/ui'\n\nexport function PrivateIcon() {\n return (\n <Tooltip\n content={\n <Text size={1} style={{whiteSpace: 'nowrap'}}>\n Only visible to you\n </Text>\n }\n fallbackPlacements={['bottom']}\n padding={2}\n placement=\"top\"\n portal\n >\n <LockIcon />\n </Tooltip>\n )\n}\n","import {createContext, useEffect, useMemo, useState} from 'react'\nimport {InputProps, pathToString} from 'sanity'\nimport {getCaptionFieldOption} from '../helpers/typeUtils'\nimport {useAssistDocumentContext} from '../assistDocument/AssistDocumentContext'\nimport {useApiClient, useGenerateCaption} from '../useApiClient'\nimport {useAiAssistanceConfig} from '../assistLayout/AiAssistanceConfigContext'\n\nexport interface ImageContextValue {\n captionPath: string\n assetRef?: string\n}\n\nexport const ImageContext = createContext<ImageContextValue | undefined>(undefined)\n\nexport function ImageContextProvider(props: InputProps) {\n const {schemaType, path, value} = props\n const assetRef = (value as any)?.asset?._ref\n const [assetRefState, setAssetRefState] = useState<string | undefined>(assetRef)\n\n const {documentId} = useAssistDocumentContext()\n const {config} = useAiAssistanceConfig()\n const apiClient = useApiClient(config?.__customApiClient)\n const {generateCaption} = useGenerateCaption(apiClient)\n\n useEffect(() => {\n const captionField = getCaptionFieldOption(schemaType)\n if (assetRef && documentId && captionField && assetRef !== assetRefState) {\n setAssetRefState(assetRef)\n generateCaption({path: pathToString([...path, captionField]), documentId: documentId})\n }\n }, [schemaType, path, assetRef, assetRefState, documentId, generateCaption])\n\n const context: ImageContextValue | undefined = useMemo(() => {\n const captionField = getCaptionFieldOption(schemaType)\n return captionField ? {captionPath: pathToString([...path, captionField]), assetRef} : undefined\n }, [schemaType, path, assetRef])\n\n return <ImageContext.Provider value={context}>{props.renderDefault(props)}</ImageContext.Provider>\n}\n","import {DocumentFieldAction, DocumentFieldActionGroup, DocumentFieldActionItem} from 'sanity'\nimport {ImageIcon} from '@sanity/icons'\nimport {useContext, useMemo} from 'react'\nimport {usePathKey} from '../helpers/misc'\nimport {useApiClient, useGenerateCaption} from '../useApiClient'\nimport {useAiAssistanceConfig} from '../assistLayout/AiAssistanceConfigContext'\nimport {useAssistDocumentContext} from '../assistDocument/AssistDocumentContext'\nimport {ImageContext} from '../components/ImageContext'\nimport {Box, Spinner} from '@sanity/ui'\n\nfunction node(node: DocumentFieldActionItem | DocumentFieldActionGroup) {\n return node\n}\n\nexport const generateCaptionsActions: DocumentFieldAction = {\n name: 'sanity-assist-generate-captions',\n useAction(props) {\n const pathKey = usePathKey(props.path)\n\n const {config} = useAiAssistanceConfig()\n const apiClient = useApiClient(config?.__customApiClient)\n const {generateCaption, loading} = useGenerateCaption(apiClient)\n\n const imageContext = useContext(ImageContext)\n\n if (imageContext && pathKey === imageContext?.captionPath) {\n //if this is true, it is stable, and not breaking rules of hooks\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const {documentId} = useAssistDocumentContext()\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return useMemo(() => {\n return node({\n type: 'action',\n icon: loading\n ? () => (\n <Box style={{height: 17}}>\n <Spinner style={{transform: 'translateY(6px)'}} />\n </Box>\n )\n : ImageIcon,\n title: 'Generate caption',\n onAction: () => {\n if (loading) {\n return\n }\n generateCaption({path: pathKey, documentId: documentId ?? ''})\n },\n renderAsButton: true,\n disabled: loading,\n hidden: !imageContext.assetRef,\n })\n }, [generateCaption, pathKey, documentId, loading, imageContext])\n }\n\n // works but not supported by types\n return undefined as unknown as DocumentFieldActionItem\n },\n}\n","import {\n DocumentFieldAction,\n DocumentFieldActionGroup,\n DocumentFieldActionItem,\n ObjectSchemaType,\n useCurrentUser,\n} from 'sanity'\nimport {ControlsIcon, SparklesIcon} from '@sanity/icons'\nimport {useCallback, useMemo} from 'react'\nimport {pluginTitle, pluginTitleShort} from '../constants'\nimport {useAssistSupported} from '../helpers/useAssistSupported'\nimport {useAssistDocumentContext} from '../assistDocument/AssistDocumentContext'\nimport {getInstructionTitle, usePathKey} from '../helpers/misc'\nimport {documentRootKey, fieldPathParam, instructionParam, StudioInstruction} from '../types'\nimport {aiInspectorId} from '../assistInspector/constants'\nimport {getIcon} from '../assistDocument/components/instruction/appearance/IconInput'\nimport {useAssistDocumentContextValue} from '../assistDocument/hooks/useAssistDocumentContextValue'\nimport {\n getAssistableDocId,\n useRequestRunInstruction,\n} from '../assistDocument/RequestRunInstructionProvider'\nimport {PrivateIcon} from './PrivateIcon'\nimport {generateCaptionsActions} from './generateCaptionActions'\nimport {useDocumentPane} from 'sanity/desk'\nimport {useSelectedField, useTypePath} from '../assistInspector/helpers'\n\nfunction node(node: DocumentFieldActionItem | DocumentFieldActionGroup) {\n return node\n}\n\nexport const assistFieldActions: DocumentFieldAction = {\n name: 'sanity-assist-actions',\n useAction(props) {\n const {schemaType} = props\n\n const isDocumentLevel = props.path.length === 0\n\n const {\n assistDocument,\n documentIsNew,\n documentIsAssistable,\n openInspector,\n closeInspector,\n inspector,\n documentOnChange,\n documentSchemaType,\n documentId,\n selectedPath,\n } =\n // document field actions do not have access to the document context\n // conditional hook _should_ be safe here since the logical path will be stable\n isDocumentLevel\n ? // eslint-disable-next-line react-hooks/rules-of-hooks\n useAssistDocumentContextValue(props.documentId, schemaType as ObjectSchemaType)\n : // eslint-disable-next-line react-hooks/rules-of-hooks\n useAssistDocumentContext()\n\n const {value: docValue} = useDocumentPane()\n const currentUser = useCurrentUser()\n const isHidden = !assistDocument\n const pathKey = usePathKey(props.path)\n const typePath = useTypePath(docValue, pathKey)\n const assistDocumentId = assistDocument?._id\n\n const assistableDocId = getAssistableDocId(documentSchemaType, documentId)\n const {requestRunInstruction} = useRequestRunInstruction({\n documentOnChange,\n isDocAssistable: documentIsAssistable ?? false,\n })\n\n const isSelectable = !!useSelectedField(documentSchemaType, typePath)\n const assistSupported = useAssistSupported(props.path, schemaType) && isSelectable\n\n const fieldAssist = useMemo(\n () =>\n (assistDocument?.fields ?? []).find(\n (f) => f.path === typePath || (pathKey === documentRootKey && f.path === pathKey)\n ),\n [assistDocument?.fields, pathKey, typePath]\n )\n\n const fieldAssistKey = fieldAssist?._key\n const isInspectorOpen = inspector?.name === aiInspectorId\n const isPathSelected = pathKey === selectedPath\n const isSelected = isInspectorOpen && isPathSelected\n\n const imageCaptionAction = generateCaptionsActions.useAction(props)\n\n const manageInstructions = useCallback(\n () =>\n isSelected\n ? closeInspector(aiInspectorId)\n : openInspector(aiInspectorId, {\n [fieldPathParam]: pathKey,\n [instructionParam]: undefined as any,\n }),\n [openInspector, closeInspector, isSelected, pathKey]\n )\n\n const onInstructionAction = useCallback(\n (instruction: StudioInstruction) => {\n if (!pathKey || !fieldAssistKey || !assistDocumentId || !assistableDocId) {\n return\n }\n requestRunInstruction({\n documentId: assistableDocId,\n assistDocumentId,\n path: pathKey,\n typePath,\n instruction,\n })\n },\n [requestRunInstruction, assistableDocId, pathKey, typePath, assistDocumentId, fieldAssistKey]\n )\n\n const privateInstructions = useMemo(\n () =>\n fieldAssist?.instructions?.filter((i) => i.userId && i.userId === currentUser?.id) || [],\n [fieldAssist?.instructions, currentUser]\n )\n\n const sharedInstructions = useMemo(\n () => fieldAssist?.instructions?.filter((i) => !i.userId) || [],\n [fieldAssist?.instructions]\n )\n\n const instructions = useMemo(\n () => [...privateInstructions, ...sharedInstructions],\n [privateInstructions, sharedInstructions]\n )\n\n const runInstructionsGroup = useMemo(() => {\n return instructions?.length || imageCaptionAction\n ? node({\n type: 'group',\n icon: () => null,\n title: 'Run instructions',\n children: [\n ...instructions?.map((instruction) =>\n instructionItem({\n instruction,\n isPrivate: Boolean(instruction.userId && instruction.userId === currentUser?.id),\n onInstructionAction,\n hidden: isHidden,\n documentIsNew: !!documentIsNew,\n assistSupported,\n })\n ),\n imageCaptionAction,\n ].filter(Boolean),\n expanded: true,\n })\n : undefined\n }, [\n instructions,\n currentUser?.id,\n onInstructionAction,\n isHidden,\n documentIsNew,\n assistSupported,\n imageCaptionAction,\n ])\n\n const instructionsLength = instructions?.length || 0\n\n const manageInstructionsItem = useMemo(\n () =>\n node({\n type: 'action',\n icon: ControlsIcon,\n title: 'Manage instructions',\n onAction: manageInstructions,\n selected: isSelected,\n }),\n [manageInstructions, isSelected]\n )\n\n const group = useMemo(\n () =>\n node({\n type: 'group',\n icon: SparklesIcon,\n title: pluginTitleShort,\n children: [runInstructionsGroup, assistSupported && manageInstructionsItem].filter(\n (c): c is DocumentFieldActionItem | DocumentFieldActionGroup => !!c\n ),\n expanded: false,\n renderAsButton: true,\n hidden: !assistSupported && !imageCaptionAction,\n }),\n [\n //documentIsNew,\n runInstructionsGroup,\n manageInstructionsItem,\n assistSupported,\n imageCaptionAction,\n ]\n )\n\n const emptyAction = useMemo(\n () =>\n node({\n type: 'action',\n hidden: !assistSupported,\n icon: SparklesIcon,\n onAction: manageInstructions,\n renderAsButton: true,\n title: pluginTitleShort,\n selected: isSelected,\n }),\n [assistSupported, manageInstructions, isSelected]\n )\n\n // If there are no instructions, we don't want to render the group\n if (instructionsLength === 0 && !imageCaptionAction) {\n return emptyAction\n }\n\n return group\n },\n}\n\nfunction instructionItem(props: {\n instruction: StudioInstruction\n isPrivate: boolean\n onInstructionAction: (ins: StudioInstruction) => void\n assistSupported: boolean\n documentIsNew: boolean\n hidden: boolean\n}) {\n const {hidden, isPrivate, onInstructionAction, assistSupported, instruction} = props\n return node({\n type: 'action',\n icon: getIcon(instruction.icon),\n iconRight: isPrivate ? PrivateIcon : undefined,\n title: getInstructionTitle(instruction),\n onAction: () => onInstructionAction(instruction),\n disabled: assistSupported ? false : {reason: `${pluginTitle} is not supported for this field`},\n hidden,\n })\n}\n","import {ObjectSchemaType} from 'sanity'\nimport {AssistDocumentContext} from './AssistDocumentContext'\nimport {useAssistDocumentContextValue} from './hooks/useAssistDocumentContextValue'\nimport {PropsWithChildren} from 'react'\n\nexport interface AIDocumentInputProps {\n documentId: string\n schemaType: ObjectSchemaType\n}\n\nexport function AssistDocumentContextProvider(props: PropsWithChildren<AIDocumentInputProps>) {\n const {documentId, schemaType} = props\n const value = useAssistDocumentContextValue(documentId, schemaType)\n return (\n <AssistDocumentContext.Provider value={value}>{props.children}</AssistDocumentContext.Provider>\n )\n}\n","import {useEffect, useRef} from 'react'\nimport {InstructionTask} from '../../types'\nimport {addSeconds, isAfter} from 'date-fns'\nimport {getInstructionTitle} from '../../helpers/misc'\nimport {useStudioAssistDocument} from './useStudioAssistDocument'\nimport {ObjectSchemaType, useCurrentUser} from 'sanity'\nimport {useToast} from '@sanity/ui'\n\nconst NO_TASKS: InstructionTask[] = []\n\nexport function useInstructionToaster(documentId: string, documentSchemaType: ObjectSchemaType) {\n const assistDocument = useStudioAssistDocument({documentId, schemaType: documentSchemaType})\n\n const assistDocLoaded = !!assistDocument\n const currentUser = useCurrentUser()\n const toast = useToast()\n const tasks = assistDocument?.tasks\n const previousTasks = useRef<InstructionTask[] | undefined | 'initial'>('initial')\n\n useEffect(() => {\n if (!assistDocLoaded) {\n return\n }\n\n if (previousTasks.current !== 'initial') {\n const prevTaskByKey = Object.fromEntries(\n (previousTasks.current ?? NO_TASKS).map((run) => [run._key, run])\n )\n const endedTasks = tasks\n ?.filter((task) => task.startedByUserId === currentUser?.id)\n .filter((task) => {\n const prevTask = prevTaskByKey[task._key]\n return (!prevTask && task.ended) || (!prevTask?.ended && task.ended)\n })\n // filter out old stuff\n .filter((task) => task.ended && isAfter(addSeconds(new Date(task.ended), 30), new Date()))\n\n endedTasks?.forEach((task) => {\n const title = task.title ?? getInstructionTitle(task.instruction)\n if (task.reason === 'error') {\n toast.push({\n title: `Failed: ${title}`,\n status: 'error',\n description: `Instruction failed. ${task.message ?? ''}`,\n closable: true,\n duration: 10000,\n })\n } else if (task.reason === 'timeout') {\n toast.push({\n title: `Timeout: ${title}`,\n status: 'error',\n description: `Instruction timed out.`,\n closable: true,\n })\n } else if (task.reason === 'success') {\n toast.push({\n title: `Success: ${title}`,\n status: 'success',\n description: `Instruction completed.`,\n closable: true,\n })\n } else if (task.reason === 'aborted') {\n toast.push({\n title: `Canceled: ${title}`,\n status: 'warning',\n description: `Instruction canceled.`,\n closable: true,\n })\n }\n })\n }\n previousTasks.current = tasks\n }, [tasks, previousTasks, toast, currentUser, assistDocLoaded])\n}\n","import {InputProps, ObjectInputProps} from 'sanity'\nimport {AssistDocumentContextProvider} from './AssistDocumentContextProvider'\nimport {FirstAssistedPathProvider} from '../onboarding/FirstAssistedPathProvider'\nimport {useInstructionToaster} from './hooks/useInstructionToaster'\nimport {isType} from '../helpers/typeUtils'\nimport {useLayer} from '@sanity/ui'\nimport {useDocumentPane} from 'sanity/desk'\nimport {usePathKey} from '../helpers/misc'\nimport {ConnectFromRegion} from '../_lib/connector'\n\nexport function AssistDocumentInputWrapper(props: InputProps) {\n if (!isType(props.schemaType, 'document') && props.id !== 'root') {\n return <AssistInput {...props} />\n }\n\n const documentId = (props.value as any)?._id as string | undefined\n if (!documentId) {\n return props.renderDefault(props)\n }\n\n return <AssistDocumentInput {...(props as ObjectInputProps)} documentId={documentId} />\n}\n\nfunction AssistDocumentInput({documentId, ...props}: ObjectInputProps & {documentId: string}) {\n useInstructionToaster(documentId, props.schemaType)\n\n return (\n <FirstAssistedPathProvider members={props.members}>\n <AssistDocumentContextProvider schemaType={props.schemaType} documentId={documentId}>\n {props.renderDefault(props)}\n </AssistDocumentContextProvider>\n </FirstAssistedPathProvider>\n )\n}\n\nfunction AssistInput(props: InputProps) {\n const {zIndex} = useLayer()\n const {paneKey} = useDocumentPane()\n const pathKey = usePathKey(props.path)\n\n return (\n <ConnectFromRegion _key={`${paneKey}_${pathKey}`} zIndex={zIndex} style={{minWidth: 0}}>\n {props.renderDefault(props)}\n </ConnectFromRegion>\n )\n}\n","import {ObjectSchemaType} from 'sanity'\nimport {useMemo} from 'react'\nimport {useAssistDocumentContextValue} from '../assistDocument/hooks/useAssistDocumentContextValue'\nimport {aiPresence} from './useAssistPresence'\nimport {documentRootKey, fieldPresenceTypeName} from '../types'\nimport {Card, Flex} from '@sanity/ui'\nimport {AiFieldPresence} from './AiFieldPresence'\n\nexport function createAssistDocumentPresence(\n documentId: string | undefined,\n schemaType: ObjectSchemaType\n) {\n return function AssistDocumentPresenceWrapper() {\n return documentId ? (\n <AssistDocumentPresence documentId={documentId} schemaType={schemaType} />\n ) : null\n }\n}\n\nfunction AssistDocumentPresence(props: {documentId: string; schemaType: ObjectSchemaType}) {\n const {assistDocument} = useAssistDocumentContextValue(\n props.documentId,\n props.schemaType as ObjectSchemaType\n )\n const anyPresence = useMemo(() => {\n const anyPresence = assistDocument?.tasks\n ?.filter((run) => !run.ended && !run.reason)\n ?.flatMap((run) => run.presence ?? [])\n .find((f) => f.started && new Date().getTime() - new Date(f.started).getTime() < 30000)\n if (anyPresence) {\n return aiPresence(anyPresence, [])\n }\n const anyRun = assistDocument?.tasks\n ?.filter((run) => !run.ended && !run.reason)\n ?.find((f) => f.started && new Date().getTime() - new Date(f.started).getTime() < 30000)\n return anyRun\n ? aiPresence(\n {\n started: anyRun.started,\n path: documentRootKey,\n _key: anyRun._key,\n _type: fieldPresenceTypeName,\n },\n []\n )\n : undefined\n }, [assistDocument?.tasks])\n\n return (\n <Card>\n <Flex flex={1} justify=\"flex-end\">\n <Flex gap={2} align={'center'}>\n {anyPresence && <AiFieldPresence presence={anyPresence} />}\n </Flex>\n </Flex>\n </Card>\n )\n}\n","import {definePlugin, ObjectSchemaType} from 'sanity'\nimport {assistInspector} from './assistInspector'\nimport {AssistFieldWrapper} from './assistFormComponents/AssistField'\nimport {AssistLayout} from './assistLayout/AssistLayout'\nimport {AssistFormBlock} from './assistFormComponents/AssistFormBlock'\nimport {AssistItem} from './assistFormComponents/AssistItem'\nimport {SanityClient} from '@sanity/client'\nimport {SafeValueInput} from './components/SafeValueInput'\nimport {schemaTypes} from './schemas'\nimport {AssistInlineFormBlock} from './assistFormComponents/AssistInlineFormBlock'\nimport {assistFieldActions} from './fieldActions/assistFieldActions'\nimport {packageName} from './constants'\nimport {AssistDocumentInputWrapper} from './assistDocument/AssistDocumentInput'\nimport {createAssistDocumentPresence} from './presence/AssistDocumentPresence'\nimport {isSchemaAssistEnabled} from './helpers/assistSupported'\nimport {isImage} from './helpers/typeUtils'\nimport {ImageContextProvider} from './components/ImageContext'\n\nexport interface AssistPluginConfig {\n /**\n * Set this to false to disable model migration from the alpha version of this plugin\n */\n alphaMigration?: boolean\n\n /**\n * @internal\n */\n __customApiClient?: (defaultClient: SanityClient) => SanityClient\n}\n\nexport const assist = definePlugin<AssistPluginConfig | void>((config) => {\n const configWithDefaults = config ?? {}\n return {\n name: packageName,\n\n schema: {\n types: schemaTypes,\n },\n\n document: {\n inspectors: (prev, context) => {\n const docSchema = context.schema.get(context.documentType)\n if (docSchema && isSchemaAssistEnabled(docSchema)) {\n return [...prev, assistInspector]\n }\n return prev\n },\n unstable_fieldActions: (prev) => {\n return [...prev, assistFieldActions]\n },\n unstable_languageFilter: (prev, {documentId, schema, schemaType}) => {\n const docSchema = schema.get(schemaType) as ObjectSchemaType\n return [...prev, createAssistDocumentPresence(documentId, docSchema)]\n },\n },\n\n studio: {\n components: {\n layout: function Layout(props) {\n return <AssistLayout {...props} config={configWithDefaults} />\n },\n },\n },\n\n form: {\n components: {\n input: AssistDocumentInputWrapper,\n field: AssistFieldWrapper,\n item: AssistItem,\n block: AssistFormBlock,\n inlineBlock: AssistInlineFormBlock,\n },\n },\n\n plugins: [\n definePlugin({\n name: `${packageName}/safe-value-input`,\n form: {components: {input: SafeValueInput}},\n })(),\n\n definePlugin({\n name: `${packageName}/generate-caption`,\n form: {\n components: {\n input: (props) => {\n const {schemaType} = props\n\n if (isImage(schemaType)) {\n return <ImageContextProvider {...props} />\n }\n return props.renderDefault(props)\n },\n },\n },\n })(),\n ],\n }\n})\n"],"names":["assistDocumentIdPrefix","assistDocumentStatusIdPrefix","assistSchemaIdPrefix","assistDocumentTypeName","assistFieldTypeName","instructionTypeName","promptTypeName","userInputTypeName","instructionContextTypeName","fieldReferenceTypeName","contextDocumentTypeName","assistTasksStatusTypeName","instructionTaskTypeName","fieldPresenceTypeName","assistSerializedTypeName","assistSerializedFieldTypeName","fieldPathParam","instructionParam","documentRootKey","fetch","client","query","params","options","defer","observable","tag","filterResponse","listen","events","includeResult","visibility","isWelcomeEvent","event","type","listenQuery","arguments","length","undefined","fetchQuery","listenerQuery","fetchOnce$","events$","pipe","mergeMap","ev","i","isFirst","throwError","Error","concat","of","share","welcome$","mutationAndReconnect$","partition","isRelevantEvent","transitions","includes","transition","merge","take","filter","switchMap","delay","throttleTime","exhaustMapToWithTrailing","DEFAULT_PARAMS","DEFAULT_OPTIONS","apiVersion","useListeningQuery","loading","setLoading","useState","error","setError","data","setData","subscription","useRef","useClient","useEffect","current","distinctUntilChanged","isEqual","catchError","err","console","subscribe","documents","unsubscribe","hiddenTypes","isPortableTextArray","find","t","isType","schemaType","typeName","name","isImage","getCaptionFieldOption","_a","captionField","isSchemaAssistEnabled","_b","aiWritingAssistance","exclude","isAssistSupported","allowReadonlyHidden","isDisabled","jsonType","unsupportedArray","every","unsupportedObject","fields","field","readonlyHidden","readOnly","hidden","isUnsupportedType","inlineTypes","serializeSchema","schema","list","getTypeNames","startsWith","map","get","getSchemaStub","to","sort","a","b","localeCompare","baseSchema","leanFormat","_id","_type","title","getBaseFields","removeUndef","_c","imagePromptField","values","v","value","arrayOf","refToTypeNames","serializeFields","f","serializeMember","typeNameExists","arrayType","typed","obj","Object","keys","forEach","key","NO_DATA","defaultTitle","SchemaTypeTool","useSchema","saving","setSaving","syncTitle","setSyncTitle","types","useMemo","storeTypes","useCallback","canSave","store","transaction","createOrReplace","commit","reset","catch","finally","jsx","Card","padding","overflow","style","height","children","jsxs","Stack","space","Box","Button","icon","Spinner","marginTop","SyncIcon","text","disabled","onClick","Flex","gap","Label","SchemaEntry","schemaStub","_ref","out","JSON","stringify","aiInspectorId","preventDefault","DocumentForm","props","collapsedFieldSets","collapsedPaths","displayed","documentId","documentType","editState","formState","onBlur","onChange","onFocus","onPathOpen","onSetActiveFieldGroup","onSetCollapsedFieldSet","onSetCollapsedPath","ready","validation","useDocumentPane","documentStore","useDocumentStore","presence","useDocumentPresence","patchChannel","createPatchChannel","isLocked","transactionSyncLock","enabled","sub","pair","documentEvents","tap","publish","prepareMutationEvent","prepareRebaseEvent","hasRev","Boolean","_rev","patches","snapshot","formRef","focusFirstDescendant","as","ref","align","direction","justify","sizing","Text","size","onSubmit","FormBuilder","__internal_patchChannel","focusPath","changed","focused","groups","id","members","onFieldGroupSelect","onPathBlur","onPathFocus","onSetFieldSetCollapsed","onSetPathCollapsed","muted","mutations","mut","patch","document","fromMutationPatches","origin","remotePatches","remoteMutations","localPatches","localMutations","SelectedFieldContext","createContext","SelectedFieldContextProvider","Provider","arrayPush","arrayPush$1","array","index","offset","_arrayPush","freeGlobal","global","_freeGlobal","require$$0","freeSelf","self","root","Function","_root","Symbol","_Symbol","objectProto","prototype","hasOwnProperty","nativeObjectToString","toString","symToStringTag","toStringTag","getRawTag","getRawTag$1","isOwn","call","unmasked","e","result","_getRawTag","objectToString","objectToString$1","_objectToString","require$$1","require$$2","nullTag","undefinedTag","baseGetTag","baseGetTag$3","_baseGetTag","isObjectLike","isObjectLike$2","isObjectLike_1","argsTag","baseIsArguments","baseIsArguments$1","_baseIsArguments","propertyIsEnumerable","isArguments","isArguments_1","isArray","Array","isArray_1","spreadableSymbol","isConcatSpreadable","isFlattenable","isFlattenable$1","_isFlattenable","baseFlatten","baseFlatten$1","depth","predicate","isStrict","_baseFlatten","flatten","flatten_1","compact","resIndex","compact_1","listCacheClear","listCacheClear$1","__data__","_listCacheClear","eq","eq$1","other","eq_1","assocIndexOf","assocIndexOf$4","_assocIndexOf","arrayProto","splice","listCacheDelete","listCacheDelete$1","lastIndex","pop","_listCacheDelete","listCacheGet","listCacheGet$1","_listCacheGet","listCacheHas","listCacheHas$1","_listCacheHas","listCacheSet","listCacheSet$1","push","_listCacheSet","require$$3","require$$4","ListCache","ListCache$4","entries","clear","entry","set","has","_ListCache","stackClear","stackClear$1","_stackClear","stackDelete","stackDelete$1","_stackDelete","stackGet","stackGet$1","_stackGet","stackHas","stackHas$1","_stackHas","isObject","isObject$2","isObject_1","asyncTag","funcTag","genTag","proxyTag","isFunction","isFunction$1","isFunction_1","coreJsData","_coreJsData","maskSrcKey","uid","exec","IE_PROTO","isMasked","isMasked$1","func","_isMasked","funcProto","funcToString","toSource","toSource$2","_toSource","reRegExpChar","reIsHostCtor","reIsNative","RegExp","replace","baseIsNative","baseIsNative$1","pattern","test","_baseIsNative","getValue","getValue$1","object","_getValue","getNative","getNative$6","_getNative","Map","_Map","nativeCreate","_nativeCreate","hashClear","hashClear$1","_hashClear","hashDelete","hashDelete$1","_hashDelete","HASH_UNDEFINED","hashGet","hashGet$1","_hashGet","hashHas","hashHas$1","_hashHas","hashSet","hashSet$1","_hashSet","Hash","Hash$1","_Hash","mapCacheClear","mapCacheClear$1","_mapCacheClear","isKeyable","isKeyable$1","_isKeyable","getMapData","getMapData$4","_getMapData","mapCacheDelete","mapCacheDelete$1","_mapCacheDelete","mapCacheGet","mapCacheGet$1","_mapCacheGet","mapCacheHas","mapCacheHas$1","_mapCacheHas","mapCacheSet","mapCacheSet$1","_mapCacheSet","MapCache","MapCache$2","_MapCache","LARGE_ARRAY_SIZE","stackSet","stackSet$1","pairs","_stackSet","require$$5","setCacheAdd","setCacheAdd$1","_setCacheAdd","setCacheHas","setCacheHas$1","_setCacheHas","SetCache","add","stubFalse","stubFalse_1","freeExports","exports","nodeType","freeModule","module","moduleExports","Buffer","nativeIsBuffer","isBuffer","freeProcess","process","nodeUtil","require","binding","DataView","_DataView","Promise","_Promise","Set","_Set","WeakMap","_WeakMap","require$$6","mapTag","objectTag","promiseTag","setTag","weakMapTag","dataViewTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag","ArrayBuffer","resolve","Ctor","constructor","ctorString","s","m","h","d","w","y","ms","val","parse","isFinite","long","fmtLong","fmtShort","str","String","match","n","parseFloat","toLowerCase","msAbs","Math","abs","round","plural","isPlural","setup","env","createDebug","debug","default","coerce","disable","enable","humanize","instances","names","skips","formatters","selectColor","namespace","hash","charCodeAt","colors","prevTime","_len","args","_key","curr","Number","Date","diff","prev","unshift","format","formatter","formatArgs","logFn","log","apply","useColors","color","destroy","extend","init","indexOf","delimiter","namespaces","save","split","len","substr","instance","stack","message","load","common","_typeof","iterator","storage","localstorage","window","__nwjs","navigator","userAgent","documentElement","WebkitAppearance","firebug","exception","table","parseInt","$1","c","lastC","_console","setItem","removeItem","r","getItem","DEBUG","localStorage","j","hasFlag","flag","argv","prefix","position","terminatorPosition","os","tty","forceColor","FORCE_COLOR","min","translateLevel","level","hasBasic","has256","has16m","supportsColor","haveStream","streamIsTTY","TERM","platform","osRelease","release","some","sign","CI_NAME","TEAMCITY_VERSION","COLORTERM","version","TERM_PROGRAM_VERSION","TERM_PROGRAM","getSupportLevel","stream","isTTY","supportsColor_1","stdout","isatty","stderr","util","inspectOpts","reduce","prop","substring","_","k","toUpperCase","fd","colorCode","join","getDate","hideDate","toISOString","write","o","inspect","trim","O","browser","srcModule","__defProp$h","defineProperty","__defNormalProp$h","enumerable","configurable","writable","__publicField$h","digitChar","attributeCharMatcher","attributeFirstCharMatcher","symbols","operator","comparator","keyword","boolean","paren","symbolClasses","Tokenizer","path","source","tokenizers","tokenizeSymbol","tokenizeIdentifier","tokenizeNumber","tokenizeQuoted","fn","bind","tokenize","EOF","chompWhitespace","token","found","tokenizer","takeWhile","start","nextChar","peek","consume","slice","tryConsume","char","quote","escape","inner","first","identifier","dotSeen","digitSeen","negative","number","raw","symbolClass","patterns","symbol","jsonpath","__defProp$g","__defNormalProp$g","__publicField$g","Parser","tokens","parsePath","probe","record","parseAttribute","quoted","parseAlias","target","parseNumber","parseNumberValue","expr","parseSliceSelector","rangeStart","colon1","end","colon2","step","parseValueReference","parseLiteralValue","literalString","literalBoolean","parseFilterExpression","lhs","binOp","rhs","parseExpression","parseUnion","terms","nodes","parseRecursive","subpath","term","attr","union","recursive","parseJsonPath","parsed","descend$1","tail","head","newTail","splitIfPath","spreadIfUnionHead","concatPaths","path1","path2","nodes1","nodes2","node","subHead","subTail","toPath","toPathInner","inUnion","shift","upcoming","__defProp$f","__defNormalProp$f","__publicField$f","Expression","isPath","isUnion","isCollection","isConstraint","isRecursive","isExistenceConstraint","isIndex","isRange","expandRange","probeLength","interpretNegativeIndex","isAttributeReference","isIndexReference","isSelfReference","constraintTargetIsSelf","constraintTargetIsAttribute","testConstraint","containerType","lhs2","rhs2","testBinaryOperator","lhsValue","getAttribute","pathNodes","prepend","descend","headTail","unwrapRecursive","toIndicies","range","toFieldReferences","fromPath","attributeReference","indexReference","rhsValue","__defProp$e","__defNormalProp$e","__publicField$e","Descender","iterate","anyConstraints","descender","iterateConstraints","hasArrived","extractRecursives","constraint","getIndex","ht","__defProp$d","__defNormalProp$d","__publicField$d","Matcher","active","parent","recursives","payload","setPayload","activeRecursives","hasAttribute","extractMatches","newActiveSet","isDestination","hasRecursives","leads","targets","descenderHead","matcher","recursivesMatcher","attributeKeys","delivery","isRecord$1","__defProp$c","__defNormalProp$c","__publicField$c","PlainProbe","_value","extractAccessors","appendResult","accessor","lead","accessorsFromTarget","childAccessor","extractWithPath","accessors","acc","debugIt","maxDepth","getTypeIcon","LinkIcon","ImageIcon","BlockContentIcon","OlistIcon","BlockquoteIcon","StringIcon","DocumentIcon","getFieldRefsWithDocument","getFieldRefs","flatMap","fieldRef","patchableKey","pathToString","syntheticFields","getSyntheticFields","itemType","segment","synthetic","getTypePath","doc","pathString","stringToPath","currentPath","valid","syntheticPath","isKeySegment","pathKey","useTypePath","useSelectedField","documentSchemaType","selectableFields","isObjectSchemaType","getFieldTitle","useAiPaneRouter","paneRouter","usePaneRouter","useDocumentState","docType","state","useEditState","draft","published","aiDocPrefixPattern","publicId","assistDocumentId","documentTypeFromAiDocumentId","assistTasksStatusId","releaseAnnouncementUrl","instructionGuideUrl","giveFeedbackUrl","salesUrl","packageName","pluginTitle","pluginTitleShort","maxHistoryVisibilityMs","minutesToMilliseconds","useStudioAssistDocument","_ref2","documentTypeName","currentUser","useCurrentUser","useValidationStatus","assistDocument","assistTasksStatus","createIfNotExists","tasks","assistField","task","instructions","p","userId","instruction","asStudioInstruction","instructionKey","run","errors","marker","fieldRefs","prompt","block","started","getTime","useInterval","tick","update","useReducer","setInterval","clearInterval","TimeAgo","_ref3","date","timeSince","formatDistanceToNow","usePathKey","getInstructionTitle","rotate","keyframes","__template","SyncSpinningIcon","styled","TASK_CONFIG","aborted","CloseCircleIcon","tone","ErrorOutlineIcon","success","CheckmarkCircleIcon","timeout","ClockIcon","InstructionTaskHistoryButton","showTitles","cancelRun","taskKey","statusDocId","basePath","titledTasks","cancel","isRunning","ended","hasErrors","reason","open","setOpen","toggleOpen","button","setButton","popover","setPopover","handleClickOutside","useClickOutside","handleEscape","focus","Popover","constrainSize","content","TaskList","onEscape","placement","portal","width","TaskStatusButton","selected","TASK_STATUS_BUTTON_TOOLTIP_PROPS","forwardRef","StatusButton","label","mode","fontSize","tooltip","isTopLayer","useLayer","useGlobalKeyDown","TaskItem","taskType","radius","flex","createElement","weight","Fragment","editorialAiFieldActionFeature","useApiClient","customApiClient","useGenerateCaption","apiClient","user","toast","useToast","generateCaption","_ref4","request","method","url","config","dataset","projectId","body","status","description","setTimeout","useGetInstructStatus","projectClient","getInstructStatus","features","useInitInstruct","initInstruct","useRunInstructionApi","runInstruction","AiAssistanceConfigContext","useAiAssistanceConfig","context","useContext","AiAssistanceConfigProvider","setStatus","__customApiClient","statusLoading","initLoading","then","NO_INPUT","RunInstructionContext","instructionLoading","useRunInstruction","isUserInputBlock","RunInstructionProvider","runInstructionRequest","useId","inputs","setInputs","runRequest","setRunRequest","req","userInputBlocks","userTexts","close","runWithInput","_ref5","blockKey","userInput","runDisabled","_ref6","runButton","PlayIcon","contextValue","Dialog","onClose","header","footer","Tooltip","UserInput","autoFocus","textAreaRef","currentTarget","FormFieldHeaderText","TextArea","rows","resize","isDocAssistable","liveEdit","getAssistableDocId","baseId","useRequestRunInstruction","documentOnChange","queuedTask","setQueuedTask","requestRunInstruction","PatchEvent","from","unset","SparklesIllustration","SparklesIcon","strokeWidth","InspectorOnboarding","onDismiss","Container","textAlign","href","rel","inspectorOnboardingKey","fieldOnboardingKey","isFeatureOnboardingDismissed","featureKey","dismissFeatureOnboarding","useOnboardingFeature","showOnboarding","setShowOnboarding","dismissOnboarding","BackToInstructionListLink","openInspector","goBack","ArrowLeftIcon","EMPTY_FIELDS","TypePathContext","AssistDocumentForm","targetDocumentType","setParams","typePath","activeKey","activePath","base","documentSchema","fieldSchema","useSelectedSchema","fieldExists","formCallbacks","useFormCallbacks","newCallbacks","FieldsInitializer","FormCallbacksProvider","lineHeight","FormInput","absolutePath","renderDefault","fieldPath","currentSchema","_ref7","initialized","setIfMissing","insert","FieldAutocomplete","onSelect","includeDocument","currentField","autocompleteOptions","renderOption","option","accent","FieldTitle","renderValue","filterOption","lQuery","Autocomplete","SearchIcon","openButton","placeholder","splitTitle","Breadcrumbs","display","flexWrap","alignItems","separator","pt","CardWithShadowBelow","CardWithShadowAbove","AssistInspectorWrapper","DocumentInspectorHeader","closeButtonLabel","validToken","RetryIcon","AssistInspector","boundary","documentPane","docValue","assistableDocId","selectedField","aiDocId","promptValue","isEmptyPrompt","firstBlock","paneNode","runCurrentInstruction","Region","_props","AiInspectorHeader","fieldTitle","minHeight","PresenceOverlay","VirtualizerScrollInstanceProvider","scrollElement","containerElement","DocumentPaneProvider","paneKey","itemId","pane","whiteSpace","ArrowRightIcon","paddingX","paddingY","justifySelf","wrap","border","CloseIcon","assistInspector","useMenuItem","showAsAction","component","_ref8","AssistDocumentContext","useAssistDocumentContext","NO_PRESENCE","useAssistPresence","showFocusWithin","activePresence","statusPath","pathSegment","statusSegment","aiPresence","displayName","sessionId","lastActiveAt","fadeIn","FadeInDiv","div","FadeInContent","FadeInContent2","_ref9","durationMs","animationDuration","purple","hex","_d","Root","span","dash","Outline","svg","IconDisc","AssistAvatar","scheme","useColorSchemeValue","viewBox","fill","xmlns","cx","cy","AiFieldPresence","background","contentEditable","AssistFeatureBadge","Badge","margin","AssistOnboardingPopover","dismiss","AssistIntroCard","shadow","buttonRef","CheckmarkIcon","FirstAssistedPathContext","FirstAssistedPathProvider","firstAssistedPath","firstAssisted","member","kind","AssistFieldWrapper","isSupported","inputId","AssistField","isPortableText","isArraySchemaType","isFirstAssisted","actions","pre","__internal_slot","ConnectorsStoreContext","useConnectorsStore","hasOverflowScroll","el","getComputedStyle","useRegionRects","relativeBoundsRect","setRelativeBoundsRect","relativeElementRect","setRelativeElementRect","boundsScroll","setBoundsScroll","x","scroll","setScroll","boundsScrollXRef","boundsScrollYRef","elementScrollXRef","elementScrollYRef","scrollParents","parentElement","handleResize","scrollParent","boundsRect","getBoundingClientRect","innerWidth","innerHeight","domRect","handleScroll","scrollX","scrollY","scrollLeft","scrollTop","addEventListener","passive","ro","ResizeObserver","observe","unobserve","removeEventListener","disconnect","bounds","element","ConnectorRegion","onRectsChange","restProps","ConnectFromRegion","zIndex","rects","setRects","next","createConnectorsStore","configKeys","fieldKeys","channels","payloads","observers","notifyObservers","connectors","toRects","toPayload","fromRects","fromPayload","observer","delete","idx","ConnectorsProvider","onConnectorsChange","getConnectorLinePoint","rect","centerY","isAbove","arrow","marginY","isBelow","startY","endY","outOfBounds","mapConnectorToLine","connector","fromBounds","threshold","fromBottom","toBounds","toBottom","maxStartY","max","arrowPath","dir","moveTo","lineTo","strings","delim","quadCurve","x1","y1","drawConnectorPath","line","cornerRadius","fromX","fromY","_toX","toY","toX","dividerX","divider","offsetX","fromPathX","marginX","r0","r1","cmds","ConnectorPath","theme","useTheme","stroke","sanity","bg","rgba","AssistConnectorsOverlay","setRedraw","top","left","pointerEvents","legacyAssistDocumentIdPrefix","legacyAssistDocumentTypeName","legacyContextDocumentTypeName","legacyAssistStatusDocumentTypeName","NO_ASSIST_DOCS","NO_CONTEXT_DOCS","NO_IDS","AlphaMigration","alphaAssistDocs","setAlphaAssistDocs","contextDocs","setContextDocs","staleStatusDocIds","setStaleStatusDocs","progress","setProgress","canUpdate","assistDocs","convert","convertContextDocs","subtaskProgress","deleteDocs","convertDocs","taskSize","startProgress","subProgress","closable","maxWidth","floor","ids","updateProgress","chunkSize","progressCount","chunk","trans","docs","rest","_alphaId","oldDoc","oldField","inst","mapBlock","isFieldRef","isContext","isUserInput","isSpan","migratedContexts","newBlock","reference","textBlock","child","AssistLayout","setConnectors","migrate","alphaMigration","ThemeProvider","WrapPreCard","SafeValueInput","ErrorWrapper","PteValueFixer","unsetValue","catcher","ErrorBoundary","onCatch","AssistFormBlock","localOnChange","patchEvent","prefixAll","AssistItem","right","findFieldMember","fieldName","findFieldsetMember","fieldsetName","fieldSet","InstructionInput","NameField","ShareField","PromptField","promptMember","ObjectInputMember","NONE","fieldsetMember","titleId","iconMember","titleMember","titlePlaceholder","moddedTitleMember","htmlFor","marginLeft","visibilityMember","HiddenFieldTitle","InstructionVisibility","handleChange","newValue","Switch","elementProps","checked","IconInput","items","icons","_ref10","IconItem","iconKey","selectedIcon","getIcon","MenuButton","menu","Menu","maxHeight","_ref11","MenuItem","iconName","_ref12","sparkles","FieldRefPathInput","querySelector","dotSplit","minWidth","InstructionsArrayInput","originalValue","originalMembers","item","InlineBlockValueContext","AssistInlineFormBlock","FieldRefPreview","textOverflow","HideReferenceChangedBannerInput","closest","parentId","random","innerText","contextDocumentSchema","defineType","TokenIcon","components","input","defineField","defineArrayMember","styles","lists","marks","decorators","annotations","preview","select","prepare","_ref13","words","subtitle","media","DocumentTextIcon","getRandomValues","typedArray","crypto","whatwgRNG","rnds8","Uint8Array","getByteHexTable","randomKey","PteMods","PromptInput","useOnlyInlineBlocks","needsFix","markDefs","InstructionsArrayField","fieldReference","ThListIcon","rule","custom","docId","targetDocType","refs","_ref14","CodeIcon","modal","ComposeIcon","required","promptContext","Fix","fieldsets","collapsible","collapsed","_ref15","LockIcon","fieldset","initialValue","createdById","fieldInstructions","assistDocumentSchema","instructionTask","documentInstructionStatus","schemaTypes","useAssistSupported","useAssistDocumentContextValue","getPublishedId","assistableDocumentId","documentIsNew","documentIsAssistable","selectedPath","closeInspector","inspector","PrivateIcon","fallbackPlacements","ImageContext","ImageContextProvider","assetRef","asset","assetRefState","setAssetRefState","captionPath","generateCaptionsActions","useAction","imageContext","transform","onAction","renderAsButton","assistFieldActions","isDocumentLevel","isHidden","isSelectable","assistSupported","fieldAssist","fieldAssistKey","isInspectorOpen","isPathSelected","isSelected","imageCaptionAction","manageInstructions","onInstructionAction","privateInstructions","sharedInstructions","runInstructionsGroup","instructionItem","isPrivate","expanded","instructionsLength","manageInstructionsItem","ControlsIcon","group","emptyAction","iconRight","AssistDocumentContextProvider","NO_TASKS","useInstructionToaster","assistDocLoaded","previousTasks","prevTaskByKey","fromEntries","endedTasks","startedByUserId","prevTask","isAfter","addSeconds","duration","AssistDocumentInputWrapper","AssistInput","AssistDocumentInput","_ref16","createAssistDocumentPresence","AssistDocumentPresenceWrapper","AssistDocumentPresence","anyPresence","anyRun","assist","definePlugin","configWithDefaults","inspectors","docSchema","unstable_fieldActions","unstable_languageFilter","_ref17","studio","layout","Layout","form","inlineBlock","plugins"],"mappings":"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","x_google_ignoreList":[11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,105,142]}
|