{"version":3,"file":"__federation_expose_DRPage2EF.chunk.bundle","sources":["/Users/claudiobaiardi/Documents/GitHub/aldyl/DataOil-front/apps/data-oil-app/dailyReport/src/components/DRFooterActions.tsx","/Users/claudiobaiardi/Documents/GitHub/aldyl/DataOil-front/apps/data-oil-app/dailyReport/src/screens/DRPage2EF.tsx","/Users/claudiobaiardi/Documents/GitHub/aldyl/DataOil-front/apps/data-oil-app/dailyReport/src/store/dailyReportBase.store.ts","/Users/claudiobaiardi/Documents/GitHub/aldyl/DataOil-front/apps/data-oil-app/dailyReport/src/store/dailyReportEF.store.ts"],"sourcesContent":["import React from 'react';\nimport { View, StyleSheet, Platform } from 'react-native';\nimport { useNavigation, useRoute } from '@react-navigation/native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\nimport { StatusButton } from '@data-oil-front/ui-mobile';\n// import { useTheme } from '@data-oil-front/core-shared';\nimport {\n  ArrowRightIcon,\n  XMarkIcon,\n  ArrowLeftIcon,\n} from 'react-native-heroicons/outline';\n\ntype DRFooterActionsProps = {\n  onContinue: () => void;\n  continueDisabled?: boolean;\n  onCancel?: () => void;\n  onBack?: () => void;\n  homeRouteName?: string;\n  accentColor?: string;\n  continueLabel?: string;\n};\n\nexport default function DRFooterActions({\n  onContinue,\n  continueDisabled,\n  onCancel,\n  onBack,\n  homeRouteName = 'DailyReport',\n  // TODO: Create a const for default black color\n  accentColor = '#000000',\n  continueLabel = 'Continuar',\n}: DRFooterActionsProps) {\n  const navigation = useNavigation();\n  const route = useRoute();\n  const insets = useSafeAreaInsets();\n  const calcPaddingBottom =\n    Platform.OS === 'ios' ? Math.max(insets.bottom, 12) : 12;\n\n  const canGoBack =\n    // @ts-ignore navegación provista por host\n    typeof navigation?.canGoBack === 'function' && navigation.canGoBack();\n  const showBackButton = canGoBack && route?.name !== homeRouteName;\n\n  const handleCancel = () => {\n    if (onCancel) return onCancel();\n    // @ts-ignore navegación provista por host\n    navigation?.navigate?.('Home');\n  };\n\n  return (\n    <View style={[styles.footerBar, { paddingBottom: calcPaddingBottom }]}>\n      <StatusButton\n        title=\"Cancelar\"\n        onPress={handleCancel}\n        leftIcon={<XMarkIcon size={20} color={accentColor} />}\n        // Texto visible con color de marca para contraste\n        textStyle={{ color: accentColor }}\n        style={styles.flexOne}\n      />\n      {showBackButton ? (\n        <StatusButton\n          title=\"Atrás\"\n          onPress={() => {\n            if (onBack) return onBack();\n            // @ts-ignore navegación provista por host\n            navigation?.goBack?.();\n          }}\n          leftIcon={<ArrowLeftIcon size={20} color={accentColor} />}\n          backgroundColor=\"transparent\"\n          textStyle={{ color: accentColor }}\n          style={styles.flexOne}\n        />\n      ) : (\n        <View style={styles.flexOne} />\n      )}\n      <StatusButton\n        title={continueLabel}\n        onPress={onContinue}\n        backgroundColor={accentColor}\n        rightIcon={<ArrowRightIcon size={20} color=\"white\" />}\n        style={styles.flexOne}\n        disabled={continueDisabled}\n      />\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({\n  footerBar: {\n    position: 'absolute',\n    left: 0,\n    right: 0,\n    bottom: 0,\n    backgroundColor: '#fff',\n    borderTopWidth: 1,\n    borderTopColor: '#E5E7EB',\n    paddingHorizontal: 20,\n    // Reducido de 12 a 10 para un diseño más compacto\n    paddingTop: 10,\n    // Espaciado entre botones\n    gap: 12,\n    flexDirection: 'row',\n    shadowColor: '#000',\n    shadowOpacity: 0.08,\n    shadowRadius: 8,\n    shadowOffset: { width: 6, height: -3 },\n    elevation: 6,\n  },\n  cancelButtonText: {\n    // Color principal para el texto de cancelar (mejor visibilidad)\n    color: '#374151',\n  },\n  whiteText: {\n    // Color blanco para botones con fondo de color acento\n    color: 'white',\n  },\n  flexOne: { flex: 1 },\n});\n","import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { ScrollView, StyleSheet, View } from 'react-native';\nimport { useNavigation, useRoute } from '@react-navigation/native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\nimport {\n  ConfirmationModal,\n  LoadingSpinner,\n  MenuItem,\n  Select,\n  SummaryTable,\n} from '@data-oil-front/ui-mobile';\nimport { Controller, useForm, useWatch } from 'react-hook-form';\n\nimport DRFooterActions from '../components/DRFooterActions';\nimport { useDailyReportBaseStore } from '../store/dailyReportBase.store';\nimport { useDailyReportEFStore } from '../store/dailyReportEF.store';\nimport {\n  getAllFlowStations,\n  getFlowStationTanksFiltered,\n  type FlowStationTank,\n  getDailyReportFlowStationTankById,\n  useTheme,\n} from '@data-oil-front/core-shared';\nimport { TABLE_NAMES } from '@data-oil-front/core-shared';\n\ninterface DailyReportEFForm {\n  flowStation: string | null;\n  tank: string | null;\n}\n\n\n\ntype RouteParams = {\n  mode?: string;\n  reportId?: string | number;\n  id?: string | number;\n  editionNumber?: string | number;\n  snapshot?: Record<string, any> | null;\n};\n\nconst parseNumberParam = (value: unknown): number | null => {\n  if (value === null || value === undefined) return null;\n  const parsed = Number(value);\n  return Number.isFinite(parsed) ? parsed : null;\n};\n\nexport default function DRPage2EF() {\n  const navigation = useNavigation();\n  const route = useRoute<any>();\n  const params: RouteParams = route?.params ?? {};\n  const reportIdParam = parseNumberParam(params.reportId ?? params.id);\n  const editionNumberParam = parseNumberParam(params.editionNumber);\n  const snapshotParam = params.snapshot ?? null;\n  const isEditing = params.mode === 'edit' && reportIdParam != null;\n\n  const insets = useSafeAreaInsets();\n  const { primaryColor: themeColor } = useTheme();\n  const accentColor = themeColor ?? '#1B418C';\n\n  const { summary, fieldId, setSummary, setEditing, editing } = useDailyReportBaseStore(\n    state => state,\n  );\n  const { step2, setStep2, reset, setLoadingMeta } = useDailyReportEFStore(\n    state => state,\n  );\n\n  const {\n    control,\n    handleSubmit,\n    formState: { isValid },\n    setValue,\n  } = useForm<DailyReportEFForm>({\n    defaultValues: {\n      flowStation: step2.flowStationId ?? null,\n      tank: step2.tankId ?? null,\n    },\n    mode: 'onChange',\n  });\n\n  const selectedFlowStation = useWatch({ control, name: 'flowStation' });\n  const selectedTank = useWatch({ control, name: 'tank' });\n\n  const [flowStations, setFlowStations] = useState<any[]>([]);\n  const [tanks, setTanks] = useState<FlowStationTank[]>([]);\n  const [loadingFlowStations, setLoadingFlowStations] = useState(false);\n  const [loadingTanks, setLoadingTanks] = useState(false);\n  const [isModalOpen, setIsModalOpen] = useState(false);\n  const [prefillLoading, setPrefillLoading] = useState(false);\n\n  const lastFlowStationRef = useRef<string | null>(step2.flowStationId ?? null);\n\n  const filteredFlowStations = useMemo(() => {\n    if (!fieldId) return flowStations;\n    return flowStations.filter(\n      item =>\n        item.field_id != null &&\n        String(item.field_id) === String(fieldId),\n    );\n  }, [fieldId, flowStations]);\n\n  const safeSummary = useMemo(\n    () => [\n      { name: 'Localización', value: summary.location ?? '-' },\n      { name: 'Actividad', value: summary.activity ?? '-' },\n      { name: 'Campo', value: summary.field ?? '-' },\n      { name: 'Instalación', value: summary.facility ?? 'Estación de flujo' },\n    ],\n    [summary.activity, summary.field, summary.facility, summary.location],\n  );\n\n  // Handle editing state in base store\n  useEffect(() => {\n    if (isEditing && reportIdParam != null) {\n      const needsUpdate =\n        !editing.isEditing ||\n        editing.table !== TABLE_NAMES.DAILY_REPORT_FLOW_STATION_TANK ||\n        editing.reportId !== reportIdParam ||\n        (editing.revision ?? null) !== (editionNumberParam ?? null);\n\n      if (needsUpdate) {\n        setEditing({\n          isEditing: true,\n          reportId: reportIdParam,\n          table: TABLE_NAMES.DAILY_REPORT_FLOW_STATION_TANK,\n          revision: editionNumberParam ?? null,\n          payload: snapshotParam\n            ? { report: snapshotParam }\n            : editing.payload ?? null,\n        });\n      }\n    } else if (\n      !isEditing &&\n      editing.isEditing &&\n      editing.table === TABLE_NAMES.DAILY_REPORT_FLOW_STATION_TANK\n    ) {\n      setEditing({\n        isEditing: false,\n        reportId: null,\n        table: null,\n        revision: null,\n        payload: null,\n      });\n    }\n  }, [\n    editionNumberParam,\n    editing.isEditing,\n    editing.payload,\n    editing.reportId,\n    editing.revision,\n    editing.table,\n    isEditing,\n    reportIdParam,\n    setEditing,\n    snapshotParam,\n  ]);\n\n  // Handle loading meta in EF store\n  useEffect(() => {\n    if (isEditing && reportIdParam != null) {\n      setLoadingMeta({\n        editionMode: true,\n        recordId: String(reportIdParam),\n        revision: editionNumberParam ?? null,\n        payload: snapshotParam ? { report: snapshotParam } : null,\n      });\n    } else {\n      setLoadingMeta({\n        editionMode: false,\n        recordId: null,\n        revision: null,\n        payload: null,\n      });\n    }\n  }, [\n    editionNumberParam,\n    isEditing,\n    reportIdParam,\n    setLoadingMeta,\n    snapshotParam,\n  ]);\n\n  // Load report data for editing\n  useEffect(() => {\n    if (!isEditing || !reportIdParam) return;\n\n    let mounted = true;\n    const loadReportData = async () => {\n      setPrefillLoading(true);\n      try {\n        let reportData = snapshotParam;\n\n        if (!reportData) {\n          const result = await getDailyReportFlowStationTankById(reportIdParam);\n          if (result) {\n            reportData = result;\n          }\n        }\n\n        if (!mounted || !reportData) return;\n\n        // Update summary if needed\n        const nextActivity =\n          reportData.activity_id === 1 ? 'Producción' : 'Recuperación';\n        if (summary.activity !== nextActivity) {\n          setSummary({\n            location: summary.location ?? null,\n            activity: nextActivity,\n            field: summary.field ?? null,\n            facility: 'Estación de flujo',\n          });\n        }\n\n        // Get tank details to find flow station\n        if (reportData.flow_station_tank_id) {\n          const tankResult = await getFlowStationTanksFiltered([\n            ['id', '=', reportData.flow_station_tank_id],\n          ]);\n\n          if (mounted && Array.isArray(tankResult) && tankResult.length > 0) {\n            const tankInfo = tankResult[0];\n            const flowStationId = tankInfo.flow_station_id\n              ? String(tankInfo.flow_station_id)\n              : null;\n            const tankId = String(tankInfo.id);\n\n            // Fetch flow station name if needed (optional, just for display in store)\n            // But for the form, we just need the ID to select from the dropdown options\n\n            // Set form values\n            setValue('flowStation', flowStationId, { shouldValidate: true });\n            // We need to wait for tanks to load before setting tank, but setting flowStation will trigger tanks load\n            // However, since we are fetching asynchronously, we can set the store and form value\n            // The tanks loading effect will run when flowStation changes\n\n            // Pre-set step2 store\n            setStep2({\n              flowStationId,\n              tankId,\n              tankName: tankInfo.name,\n              // flowStationName will be set when flowStations are loaded and one is selected\n            });\n\n            // Set tank value after a small delay to allow tanks to load?\n            // Actually, if we set the value, react-hook-form holds it.\n            // But the Select component might not show the selected text if options aren't loaded yet.\n            // When options load, it should resolve.\n            setTimeout(() => {\n              if (mounted) {\n                setValue('tank', tankId, { shouldValidate: true });\n              }\n            }, 500);\n          }\n        }\n\n        // Also update loading meta with full report data if we fetched it\n        if (!snapshotParam) {\n          setLoadingMeta({\n            editionMode: true,\n            recordId: String(reportIdParam),\n            revision: editionNumberParam ?? null,\n            payload: { report: reportData },\n          });\n        }\n      } catch (error) {\n        if (__DEV__) {\n          console.error('Error loading report for editing', error);\n        }\n      } finally {\n        if (mounted) setPrefillLoading(false);\n      }\n    };\n\n    loadReportData();\n\n    return () => {\n      mounted = false;\n    };\n  }, [\n    isEditing,\n    reportIdParam,\n    snapshotParam,\n    editionNumberParam,\n    setValue,\n    setSummary,\n    setStep2,\n    setLoadingMeta,\n    summary.activity,\n    summary.field,\n    summary.location,\n  ]);\n\n  useEffect(() => {\n    let mounted = true;\n    const loadFlowStations = async () => {\n      setLoadingFlowStations(true);\n      try {\n        const rows = await getAllFlowStations();\n        if (!mounted) return;\n        const filtered = Array.isArray(rows)\n          ? rows\n          : [];\n        setFlowStations(filtered);\n      } catch (error) {\n        if (__DEV__) {\n          // eslint-disable-next-line no-console\n          console.error('No se pudieron cargar las estaciones de flujo', error);\n        }\n        if (mounted) setFlowStations([]);\n      } finally {\n        if (mounted) setLoadingFlowStations(false);\n      }\n    };\n\n    loadFlowStations();\n    return () => {\n      mounted = false;\n    };\n  }, []);\n\n  useEffect(() => {\n    if (!fieldId || !selectedFlowStation) return;\n    const isValidFlowStation = filteredFlowStations.some(\n      item => String(item.id) === String(selectedFlowStation),\n    );\n    if (isValidFlowStation) return;\n    setValue('flowStation', null, { shouldValidate: true });\n  }, [fieldId, filteredFlowStations, selectedFlowStation, setValue]);\n\n  useEffect(() => {\n    const lastFlowStation = lastFlowStationRef.current;\n    if (selectedFlowStation === lastFlowStation) {\n      if (selectedFlowStation) {\n        const station = filteredFlowStations.find(\n          item => String(item.id) === String(selectedFlowStation),\n        );\n        if (station) {\n          setStep2({\n            flowStationId: selectedFlowStation,\n            flowStationName: station.name,\n          });\n        }\n      }\n      return;\n    }\n\n    lastFlowStationRef.current = selectedFlowStation ?? null;\n\n    if (!selectedFlowStation) {\n      setValue('tank', null, {\n        shouldDirty: false,\n        shouldValidate: true,\n      });\n      setStep2({\n        flowStationId: null,\n        flowStationName: null,\n        tankId: null,\n        tankName: null,\n      });\n      setTanks([]);\n      return;\n    }\n\n    const station = filteredFlowStations.find(\n      item => String(item.id) === String(selectedFlowStation),\n    );\n    setValue('tank', null, {\n      shouldDirty: true,\n      shouldValidate: true,\n    });\n\n    setStep2({\n      flowStationId: selectedFlowStation,\n      flowStationName: station?.name ?? null,\n      tankId: null,\n      tankName: null,\n    });\n  }, [filteredFlowStations, selectedFlowStation, setStep2, setValue]);\n\n  useEffect(() => {\n    let mounted = true;\n    const loadTanks = async () => {\n      if (!selectedFlowStation) {\n        setTanks([]);\n        return;\n      }\n      setLoadingTanks(true);\n      try {\n        const rows = await getFlowStationTanksFiltered([\n          ['flow_station_id', '=', Number(selectedFlowStation)],\n        ]);\n        if (!mounted) return;\n        setTanks(Array.isArray(rows) ? rows : []);\n\n        // Restore tank value if we are editing and have a tank ID in step2 or params\n        // This is a cleaner way than the timeout in prefill logic\n        if (isEditing && step2.tankId) {\n          // Check if the tank belongs to this station (it should)\n          const tankExists = rows.some(\n            t => String(t.id) === String(step2.tankId),\n          );\n          if (tankExists) {\n            setValue('tank', step2.tankId, { shouldValidate: true });\n          }\n        }\n      } catch (error) {\n        if (__DEV__) {\n          console.error('No se pudieron cargar los tanques', error);\n        }\n        if (mounted) setTanks([]);\n      } finally {\n        if (mounted) setLoadingTanks(false);\n      }\n    };\n\n    loadTanks();\n\n    return () => {\n      mounted = false;\n    };\n  }, [selectedFlowStation, isEditing, step2.tankId, setValue]);\n\n  useEffect(() => {\n    if (!selectedTank) {\n      setStep2({ tankId: null, tankName: null });\n      return;\n    }\n    const tank = tanks.find(item => String(item.id) === String(selectedTank));\n    setStep2({\n      tankId: selectedTank,\n      tankName: tank?.name ?? null,\n    });\n  }, [selectedTank, setStep2, tanks]);\n\n  const onSubmit = handleSubmit(values => {\n    const flowStation = filteredFlowStations.find(\n      item => String(item.id) === String(values.flowStation),\n    );\n    const tank = tanks.find(item => String(item.id) === String(values.tank));\n\n    setStep2({\n      flowStationId: values.flowStation,\n      flowStationName: flowStation?.name ?? null,\n      tankId: values.tank,\n      tankName: tank?.name ?? null,\n    });\n\n    const nextRoute = 'DRPage3EFUnicModel';\n\n    const paramsToSend = isEditing\n      ? {\n          mode: 'edit',\n          reportId: reportIdParam,\n          editionNumber: editionNumberParam ?? null,\n          snapshot: snapshotParam,\n        }\n      : undefined;\n\n    // @ts-ignore navegación provista por host\n    navigation?.navigate?.(nextRoute, paramsToSend);\n  });\n\n  const disableTankSelect =\n    !selectedFlowStation ||\n    loadingTanks ||\n    (!loadingTanks && tanks.length === 0);\n\n  return (\n    <View style={styles.screen}>\n      <ScrollView\n        style={styles.container}\n        contentContainerStyle={{ paddingBottom: insets.bottom + 120 }}\n      >\n        <View style={styles.form}>\n          {prefillLoading && (\n            <View style={styles.loadingBox}>\n              <LoadingSpinner />\n            </View>\n          )}\n          <SummaryTable items={safeSummary} />\n\n          <View style={styles.block} />\n\n          <Controller\n            control={control}\n            name=\"flowStation\"\n            rules={{ required: true }}\n            render={({ field: { value, onChange } }) => (\n              <Select\n                value={value}\n                onChange={onChange}\n                label=\"Estación de flujo\"\n                accentColor={accentColor}\n                required\n                disabled={loadingFlowStations || isEditing}\n              >\n                {loadingFlowStations ? (\n                  <MenuItem value=\"loading\" disabled>\n                    Cargando...\n                  </MenuItem>\n                ) : null}\n                {filteredFlowStations.map(opt => (\n                  <MenuItem key={String(opt.id)} value={String(opt.id)}>\n                    {opt.name}\n                  </MenuItem>\n                ))}\n              </Select>\n            )}\n          />\n\n          <View style={styles.block} />\n\n          <Controller\n            control={control}\n            name=\"tank\"\n            rules={{ required: true }}\n            render={({ field: { value, onChange } }) => (\n              <Select\n                value={value}\n                onChange={onChange}\n                label=\"Tanque\"\n                accentColor={accentColor}\n                required\n                disabled={disableTankSelect || isEditing}\n                placeholder={\n                  !selectedFlowStation\n                    ? 'Selecciona una estación de flujo primero'\n                    : loadingTanks\n                    ? 'Cargando tanques...'\n                    : tanks.length === 0\n                    ? 'No hay tanques disponibles'\n                    : 'Seleccione un tanque'\n                }\n              >\n                {tanks.map(opt => (\n                  <MenuItem key={String(opt.id)} value={String(opt.id)}>\n                    {opt.name ?? `Tanque ${opt.id}`}\n                  </MenuItem>\n                ))}\n              </Select>\n            )}\n          />\n\n          {(loadingFlowStations || loadingTanks) && (\n            <View style={styles.loadingInline}>\n              <LoadingSpinner size=\"small\" color={accentColor} />\n            </View>\n          )}\n        </View>\n      </ScrollView>\n      <DRFooterActions\n        onContinue={onSubmit}\n        continueDisabled={!isValid || prefillLoading}\n        onCancel={() => setIsModalOpen(true)}\n        accentColor={accentColor}\n      />\n      <ConfirmationModal\n        open={isModalOpen}\n        onClose={() => setIsModalOpen(false)}\n        onConfirm={() => {\n          reset();\n          // @ts-ignore navegación provista por host\n          navigation?.navigate?.('Home');\n        }}\n        title=\"¿Estás seguro de que deseas cancelar?\"\n        message=\"Se perderán todos los datos cargados en el reporte actual.\"\n      />\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({\n  screen: { flex: 1, backgroundColor: '#f9fafb' },\n  container: { flex: 1, paddingTop: 16 },\n  form: { paddingHorizontal: 20, paddingBottom: 24, gap: 0 },\n  block: { height: 16 },\n  loadingInline: {\n    marginTop: 24,\n    alignItems: 'center',\n    justifyContent: 'center',\n  },\n  loadingBox: {\n    paddingVertical: 16,\n    alignItems: 'center',\n  },\n});\n","import { create } from 'zustand';\nimport type { ReportHistoryTable } from '@data-oil-front/core-shared';\n\ninterface DailyReportBaseStore {\n  fieldId: string | null;\n  summary: {\n    location: string | null;\n    activity: string | null;\n    field: string | null;\n    facility: string | null;\n  };\n  editing: DailyReportEditingState;\n}\n\ninterface DailyReportBaseStoreActions {\n  setFieldId: (fieldId: string | null) => void;\n  setSummary: (summary: DailyReportBaseStore['summary']) => void;\n  setEditing: (editing: Partial<DailyReportEditingState>) => void;\n  resetEditing: () => void;\n}\n\nexport interface DailyReportEditingState {\n  isEditing: boolean;\n  reportId: string | number | null;\n  table: ReportHistoryTable | null;\n  revision?: number | null;\n  payload?: Record<string, any> | null;\n}\n\nconst INITIAL_EDITING_STATE: DailyReportEditingState = {\n  isEditing: false,\n  reportId: null,\n  table: null,\n  revision: null,\n  payload: null,\n};\n\nconst INITIAL_STATE: DailyReportBaseStore = {\n  fieldId: null,\n  summary: {\n    location: null,\n    activity: null,\n    field: null,\n    facility: null,\n  },\n  editing: INITIAL_EDITING_STATE,\n};\n\nexport const useDailyReportBaseStore = create<\n  DailyReportBaseStore & DailyReportBaseStoreActions\n>(set => ({\n  ...INITIAL_STATE,\n  // ACTIONS\n  setFieldId: (fieldId: string | null) => set(state => ({ ...state, fieldId })),\n  setSummary: (summary: DailyReportBaseStore['summary']) =>\n    set(state => ({ ...state, summary })),\n  setEditing: editing =>\n    set(state => ({\n      ...state,\n      editing: {\n        ...state.editing,\n        ...editing,\n      },\n    })),\n  resetEditing: () =>\n    set(state => ({\n      ...state,\n      editing: INITIAL_EDITING_STATE,\n    })),\n}));\n","import { create } from 'zustand';\n\nexport interface DREFStep2State {\n  flowStationId: string | null;\n  flowStationName?: string | null;\n  tankId: string | null;\n  tankName?: string | null;\n}\n\nexport type SampleTakenOption = 'yes' | 'no' | null;\n\nexport interface DREFModel1Step3State {\n  status: string | null;\n  reportDate: Date | null;\n  reportTime: string | null;\n  tankLevel: string | null;\n  sampleTaken: SampleTakenOption;\n  netOperatedProduction: string | null;\n}\n\nexport interface DREFModel2Step3State {\n  status: string | null;\n  reportDate: Date | null;\n  reportTime: string | null;\n  fillingStartDate: Date | null;\n  fillingStartTime: string | null;\n  fillingStartLevel: string | null;\n  fillingEndDate: Date | null;\n  fillingEndTime: string | null;\n  fillingEndLevel: string | null;\n  rawOperatedProduction: string | null;\n  sampleTaken: SampleTakenOption;\n  netOperatedProduction: string | null;\n}\n\nexport interface DREFUnicModelStep3State {\n  status: string | null;\n  reportDate: Date | null;\n  reportTime: string | null;\n  tankLevel: string | null;\n  rawOperatedProduction: string | null;\n  sampleTaken: SampleTakenOption;\n  netOperatedProduction: string | null;\n  comments: string | null;\n}\n\nexport interface DREFModel3Step3State {\n  status: string | null;\n  currentStockDate: Date | null;\n  currentStockTime: string | null;\n  currentStock: string | null;\n  previousDayStock: string | null;\n  vacuumTransfer: string | null;\n  grossOperatedProduction: string | null;\n  sampleTaken: SampleTakenOption;\n  netOperatedProduction: string | null;\n}\n\nexport interface DREFMeta {\n  editionMode: boolean;\n  recordId?: string | null;\n  revision?: number | null;\n  payload?: Record<string, any> | null;\n}\n\ninterface DailyReportEFStoreState {\n  step2: Partial<DREFStep2State>;\n  model1Step3: Partial<DREFModel1Step3State>;\n  model2Step3: Partial<DREFModel2Step3State>;\n  model3Step3: Partial<DREFModel3Step3State>;\n  unicModelStep3: Partial<DREFUnicModelStep3State>;\n  meta: DREFMeta;\n  setStep2: (values: Partial<DREFStep2State>) => void;\n  setModel1Step3: (values: Partial<DREFModel1Step3State>) => void;\n  setModel2Step3: (values: Partial<DREFModel2Step3State>) => void;\n  setModel3Step3: (values: Partial<DREFModel3Step3State>) => void;\n  setUnicModelStep3: (values: Partial<DREFUnicModelStep3State>) => void;\n  setLoadingMeta: (values: Partial<DREFMeta>) => void;\n  resetStep3: () => void;\n  reset: () => void;\n}\n\nconst createInitialStep2State = (): Partial<DREFStep2State> => ({\n  flowStationId: null,\n  tankId: null,\n  flowStationName: null,\n  tankName: null,\n});\n\nconst createInitialModel1Step3State = (): Partial<DREFModel1Step3State> => ({\n  status: 'active',\n  reportDate: null,\n  reportTime: null,\n  tankLevel: null,\n  sampleTaken: null,\n  netOperatedProduction: null,\n});\n\nconst createInitialModel2Step3State = (): Partial<DREFModel2Step3State> => ({\n  status: 'active',\n  reportDate: null,\n  reportTime: null,\n  fillingStartDate: null,\n  fillingStartTime: null,\n  fillingStartLevel: null,\n  fillingEndDate: null,\n  fillingEndTime: null,\n  fillingEndLevel: null,\n  rawOperatedProduction: null,\n  sampleTaken: null,\n  netOperatedProduction: null,\n});\n\nconst createInitialModel3Step3State = (): Partial<DREFModel3Step3State> => ({\n  status: 'active',\n  currentStockDate: null,\n  currentStockTime: null,\n  currentStock: null,\n  previousDayStock: null,\n  vacuumTransfer: null,\n  grossOperatedProduction: '0',\n  sampleTaken: null,\n  netOperatedProduction: null,\n});\n\nconst createInitialUnicModelStep3State = (): Partial<DREFUnicModelStep3State> => ({\n    status: 'active',\n    reportDate: null,\n    reportTime: null,\n    tankLevel: null,\n    rawOperatedProduction: null,\n    sampleTaken: null,\n    netOperatedProduction: null,\n    comments: null,\n});\n\nconst INITIAL_META_STATE: DREFMeta = {\n  editionMode: false,\n  recordId: null,\n  revision: null,\n  payload: null,\n};\n\nexport const useDailyReportEFStore = create<DailyReportEFStoreState>(set => ({\n  step2: createInitialStep2State(),\n  model1Step3: createInitialModel1Step3State(),\n  model2Step3: createInitialModel2Step3State(),\n  model3Step3: createInitialModel3Step3State(),\n  unicModelStep3: createInitialUnicModelStep3State(),\n  meta: INITIAL_META_STATE,\n  setStep2: values =>\n    set(state => ({\n      step2: {\n        ...state.step2,\n        ...values,\n      },\n    })),\n  setModel1Step3: values =>\n    set(state => ({\n      model1Step3: {\n        ...state.model1Step3,\n        ...values,\n      },\n    })),\n  setModel2Step3: values =>\n    set(state => ({\n      model2Step3: {\n        ...state.model2Step3,\n        ...values,\n      },\n    })),\n  setModel3Step3: values =>\n    set(state => ({\n      model3Step3: {\n        ...state.model3Step3,\n        ...values,\n      },\n    })),\n    setUnicModelStep3: values =>\n    set(state => ({\n      unicModelStep3: {\n        ...state.unicModelStep3,\n        ...values,\n      },\n    })),\n  setLoadingMeta: values =>\n    set(state => ({\n      meta: {\n        ...state.meta,\n        ...values,\n      },\n    })),\n  resetStep3: () =>\n    set(state => ({\n      step2: state.step2,\n      model1Step3: createInitialModel1Step3State(),\n      model2Step3: createInitialModel2Step3State(),\n      model3Step3: createInitialModel3Step3State(),\n      unicModelStep3: createInitialUnicModelStep3State(),\n      meta: state.meta,\n    })),\n  reset: () =>\n    set(() => ({\n      step2: createInitialStep2State(),\n      model1Step3: createInitialModel1Step3State(),\n      model2Step3: createInitialModel2Step3State(),\n      model3Step3: createInitialModel3Step3State(),\n      unicModelStep3: createInitialUnicModelStep3State(),\n      meta: INITIAL_META_STATE,\n    })),\n}));\n"],"names":["DRFooterActions","onContinue","continueDisabled","onCancel","onBack","homeRouteName","accentColor","continueLabel","navigation","useNavigation","route","useRoute","insets","useSafeAreaInsets","calcPaddingBottom","Platform","OS","Math","max","bottom","showBackButton","canGoBack","name","View","style","styles","footerBar","paddingBottom","StatusButton","title","onPress","handleCancel","navigate","leftIcon","XMarkIcon","size","color","textStyle","flexOne","goBack","ArrowLeftIcon","backgroundColor","rightIcon","ArrowRightIcon","disabled","StyleSheet","create","position","left","right","borderTopWidth","borderTopColor","paddingHorizontal","paddingTop","gap","flexDirection","shadowColor","shadowOpacity","shadowRadius","shadowOffset","width","height","elevation","cancelButtonText","whiteText","flex","DRPage2EF","parseNumberParam","value","parsed","Number","isFinite","params","step2","RouteParams","reportIdParam","reportId","id","editionNumberParam","editionNumber","snapshotParam","snapshot","isEditing","mode","themeColor","primaryColor","state","summary","fieldId","useDailyReportBaseStore","setSummary","setEditing","editing","useDailyReportEFStore","setStep2","reset","setLoadingMeta","useForm","defaultValues","flowStation","flowStationId","tank","tankId","control","handleSubmit","formState","isValid","setValue","selectedFlowStation","useWatch","selectedTank","flowStations","setFlowStations","useState","tanks","setTanks","loadingFlowStations","setLoadingFlowStations","loadingTanks","setLoadingTanks","isModalOpen","setIsModalOpen","prefillLoading","setPrefillLoading","lastFlowStationRef","useRef","filteredFlowStations","useMemo","filter","item","field_id","String","safeSummary","location","activity","field","facility","useEffect","table","TABLE_NAMES","DAILY_REPORT_FLOW_STATION_TANK","revision","payload","report","editionMode","recordId","mounted","reportData","result","getDailyReportFlowStationTankById","nextActivity","activity_id","flow_station_tank_id","tankResult","getFlowStationTanksFiltered","Array","isArray","length","tankInfo","flow_station_id","shouldValidate","tankName","setTimeout","error","rows","getAllFlowStations","filtered","some","lastFlowStation","current","shouldDirty","flowStationName","station","find","t","onSubmit","values","paramsToSend","undefined","disableTankSelect","screen","ScrollView","container","contentContainerStyle","form","loadingBox","LoadingSpinner","SummaryTable","items","block","Controller","rules","required","render","onChange","Select","label","MenuItem","map","opt","placeholder","loadingInline","ConfirmationModal","open","onClose","onConfirm","message","marginTop","alignItems","justifyContent","paddingVertical","INITIAL_EDITING_STATE","INITIAL_STATE","DailyReportBaseStore","set","setFieldId","resetEditing","INITIAL_META_STATE","DailyReportEFStoreState","model1Step3","status","reportDate","reportTime","tankLevel","sampleTaken","netOperatedProduction","model2Step3","fillingStartDate","fillingStartTime","fillingStartLevel","fillingEndDate","fillingEndTime","fillingEndLevel","rawOperatedProduction","model3Step3","currentStockDate","currentStockTime","currentStock","previousDayStock","vacuumTransfer","grossOperatedProduction","unicModelStep3","comments","meta","setModel1Step3","setModel2Step3","setModel3Step3","setUnicModelStep3","resetStep3"],"mappings":"uPAsBwBA,C,mCAtBN,M,EACyB,Q,IACH,O,IACN,O,IACL,O,IAMtB,OAYQ,SAASA,EAAgB,G,QACtCC,WAAU,IACVC,iBAAgB,IAChBC,SACAC,EAAM,2BACNC,OAAa,IAAG,gBAAa,M,YAE7BC,OAAW,IAAG,YAAS,IAPe,gBAQtCC,OAAa,IAAG,gBAEVC,GAAa,EAAAC,EAAAA,iBACbC,GAAQC,EAAAA,EAAAA,YACRC,GAAS,EAAAC,EAAAA,qBACTC,EACY,QAAhBC,EAAAA,SAASC,GAAeC,KAAKC,IAAIN,EAAOO,OAAQ,IAAM,GAKlDC,EAD6B,mBAAjC,eAAOZ,EAAYa,YAA4Bb,EAAWa,cACnB,MAALX,OAAK,IAAEY,QAASjB,EAQpD,OACE,UAAC,EAAAkB,KAAI,CAACC,MAAO,CAACC,EAAOC,UAAW,CAAEC,cAAeb,I,WAC/C,SAAC,EAAAc,aAAY,CACXC,MAAM,WACNC,QAVeC,W,MACnB,GAAI5B,EAAU,OAAOA,I,SAED,O,IAAR6B,WAAQ,OAApBxB,EAAuB,OACzB,EAOMyB,UAAU,SAAC,EAAAC,UAAS,CAACC,KAAM,GAAIC,MAAO9B,IAEtC+B,UAAW,CAAED,MAAO9B,GACpBkB,MAAOC,EAAOa,UAEflB,GACC,SAAC,EAAAQ,aAAY,CACXC,MAAM,QACNC,QAAS,W,IAGPtB,EAFA,GAAIJ,EAAQ,OAAOA,I,SAEG,O,IAAVmC,SAAU,SACxB,EACAN,UAAU,SAAC,EAAAO,cAAa,CAACL,KAAM,GAAIC,MAAO9B,IAC1CmC,gBAAgB,cAChBJ,UAAW,CAAED,MAAO9B,GACpBkB,MAAOC,EAAOa,WAGhB,SAAC,EAAAf,KAAI,CAACC,MAAOC,EAAOa,WAEtB,SAAC,EAAAV,aAAY,CACXC,MAAOtB,EACPuB,QAAS7B,EACTwC,gBAAiBnC,EACjBoC,WAAW,SAAC,EAAAC,eAAc,CAACR,KAAM,GAAIC,MAAM,UAC3CZ,MAAOC,EAAOa,QACdM,SAAU1C,MAIlB,CAEA,IAAMuB,EAASoB,EAAAA,WAAWC,OAAO,CAC/BpB,UAAW,CACTqB,SAAU,WACVC,KAAM,EACNC,MAAO,EACP9B,OAAQ,EACRsB,gBAAiB,OACjBS,eAAgB,EAChBC,eAAgB,UAChBC,kBAAmB,GAEnBC,WAAY,GAEZC,IAAK,GACLC,cAAe,MACfC,YAAa,OACbC,cAAe,IACfC,aAAc,EACdC,aAAc,CAAEC,MAAO,EAAGC,QAAS,GACnCC,UAAW,GAEbC,iBAAkB,CAEhB3B,MAAO,WAET4B,UAAW,CAET5B,MAAO,SAETE,QAAS,CAAE2B,KAAM,I,gJCtEKC,C,uEA9CoC,O,IACf,O,IACL,O,IACN,O,IAO3B,O,IACuC,O,QAElB,Q,IACY,O,IACF,O,IAO/B,OAkBDC,EAAmBA,SAACC,GACxB,GAAIA,QAAuC,OAAO,KAClD,IAAMC,EAASC,OAAOF,GACtB,OAAOE,OAAOC,SAASF,GAAUA,EAAS,IAC5C,EAEe,SAASH,I,MAIiBM,EAAM,IAwBnCC,EAeuCA,EA1C3CjE,GAAa,EAAAC,EAAAA,iBACbC,GAAQ,EAAAC,EAAAA,YACR6D,EAAmC,OAA3BE,EAAW,MAAXA,OAAW,EAAGhE,EAAO8D,QAAM,EAAI,CAAC,EACxCG,EAAgBR,EAAgC,OAAhB,IAAQS,UAAQ,EAAIJ,EAAOK,IAC3DC,EAAqBX,EAAiBK,EAAOO,eAC7CC,EAA+B,OAAlB,EAAGR,EAAOS,UAAQ,EAAI,KACnCC,EAA4B,SAAhBV,EAAOW,MAAoC,MAAjBR,EAEtC/D,GAASC,EAAAA,EAAAA,qBACOuE,GAAhB,gBAAEC,aACF/E,EAAW,MAAG8E,EAAAA,EAAc,UAElC,GAAM,6BACJE,SAAK,G,OAAIA,C,OADHC,QAASC,EAA6CC,EAA7CD,QAASE,EAAF,EAAEA,WAAYC,EAAF,EAAEA,WAAYC,EAAF,EAAEA,QAGlD,GAAM,EAA6CC,EAAAA,uBAAqB,SACtEP,G,OAASA,C,OADHb,MAAOqB,EAAF,EAAEA,SAAUC,EAAF,EAAEA,MAAOC,EAAAA,EAAAA,eAIhC,GAKIC,EAAAA,EAAAA,SAA2B,CAC7BC,cAAe,CACbC,YAAgC,OAArB,IAAQC,eAAN3B,EAAuB,KACpC4B,KAAkB,OAAd,IAAQC,QAAM,EAAI,MAExBnB,KAAM,aACN,IAVAoB,QAAO,IACPC,aAAY,IACZC,UAAaC,QAAF,IACXC,SASIC,GAAsB,EAAAC,EAAAA,UAAS,C,QAAEN,EAASjF,KAAM,gBAChDwF,GAAe,EAAAD,EAAAA,UAAS,C,QAAEN,EAASjF,KAAM,SAE/C,EAAM,mBAAkD,IAAD,GAAhDyF,EAAY,KAAEC,EAAmBC,EAAAA,GACxC,EAAM,mBAAgD,IAAG,GAAlDC,EAA8C,KAAvCC,GAAYF,EAAAA,GAC1B,GAAM,KAAgDA,EAAAA,EAAAA,WAAS,GAAM,GAA9DG,GAAmB,MAAEC,GAAuB,MACnD,GAAM,oBAA2C,GAAM,GAAhDC,GAAY,MAAEC,GAAmBN,GAAAA,GACxC,GAAM,OAAgCA,EAAAA,WAAS,GAAM,GAA9CO,GAAW,MAAEC,GAAe,MACnC,GAAM,oBAA+C,GAAM,GAApDC,GAAc,MAAEC,GAAqBV,GAAAA,GAEtCW,IAAqB,EAAAC,EAAAA,QAAyC,OAAlC,EAAc,EAAOzB,eAAa,EAAI,MAElE0B,IAAuB,EAAAC,EAAAA,SAAQ,WACnC,OAAKvC,EACEuB,EAAaiB,OAAO,SACzBC,G,OACmB,MAAjBA,EAAKC,UACLC,OAAOF,EAAKC,YAAcC,OAAO3C,E,GAJhBuB,CAMvB,EAAG,CAACvB,EAASuB,IAEPqB,IAAc,EAAAL,EAAAA,SAClB,W,QAG0BxC,EACMA,E,MAJ1B,CACJ,CAAEjE,KAAM,eAAgB8C,MAAuB,OAAlB,EAAEmB,EAAQ8C,UAAQ,EAAI,KACnD,CAAE/G,KAAM,YAAa8C,MAAuB,OAAlB,IAAUkE,UAAR/C,EAAoB,KAChD,CAAEjE,KAAM,QAAS8C,MAAoB,OAAf,IAAUmE,OAAK,EAAI,KACzC,CAAEjH,KAAM,cAAe8C,MAAuB,OAAlB,IAAUoE,UAAQ,EAAI,qB,EAEpD,CAACjD,EAAQ+C,SAAU/C,EAAQgD,MAAOhD,EAAQiD,SAAUjD,EAAQ8C,Y,EAI9DI,EAAAA,WAAU,W,IAMH7C,EAUKA,EAfNV,GAA8B,MAAjBP,EAEZiB,EAAQV,WACTU,EAAQ8C,QAAUC,EAAAA,YAAYC,gCAC9BhD,EAAQhB,WAAaD,IACJ,OAAjB,IAASkE,UAAQ,EAAI,SAAI,MAAO/D,EAAAA,EAAsB,OAGtDa,EAAW,CACTT,WAAW,EACXN,SAAUD,EACV+D,MAAOC,EAAAA,YAAYC,+BACnBC,SAAQ,MAAE/D,EAAAA,EAAsB,KAChCgE,QAAS9D,EACL,CAAE+D,OAAQ/D,GACK,OADU,IACjB8D,SAAO,EAAI,QAI1B5D,GACDU,EAAQV,WACRU,EAAQ8C,QAAUC,EAAAA,YAAYC,gCAE9BjD,EAAW,CACTT,WAAW,EACXN,SAAU,KACV8D,MAAO,KACPG,SAAU,KACVC,QAAS,MAGf,EAAG,CACDhE,EACAc,EAAQV,UACRU,EAAQkD,QACRlD,EAAQhB,SACRgB,EAAQiD,SACRjD,EAAQ8C,MACRxD,EACAP,EACAgB,EACAX,K,EAIFyD,EAAAA,WAAU,WAENzC,EADEd,GAA8B,MAAjBP,EACA,CACbqE,aAAa,EACbC,SAAUd,OAAOxD,GACjBkE,SAAQ,MAAE/D,EAAAA,EAAsB,KAChCgE,QAAS9D,EAAgB,CAAE+D,OAAQ/D,GAAkB,MAGxC,CACbgE,aAAa,EACbC,SAAU,KACVJ,SAAU,KACVC,QAAS,MAGf,EAAG,CACDhE,EACAI,EACAP,EACAqB,EACAhB,KAIFyD,EAAAA,EAAAA,WAAU,WACR,GAAKvD,GAAcP,EAAnB,CAEA,IAAIuE,GAAU,EAyFd,O,gBAvFEvB,IAAkB,GAClB,IACE,IAAIwB,EAAanE,EAEjB,IAAKmE,EAAY,CACf,IAAMC,QAAS,EAAMC,EAAAA,mCAAkC1E,GACnDyE,IACFD,EAAaC,EAEjB,CAEA,IAAKF,IAAYC,EAAY,OAG7B,IAIc5D,EAEHA,EANL+D,EACuB,IAA3BH,EAAWI,YAAoB,aAAe,eAWhD,GAVIhE,EAAQ+C,WAAagB,GACvB5D,EAAW,CACT2C,SAA0B,OAAlB,IAAUA,UAAQ,EAAI,KAC9BC,SAAUgB,EACVf,MAAoB,OAAf,IAAUA,OAAK,EAAI,KACxBC,SAAU,sBAKVW,EAAWK,qBAAsB,CACnC,IAAMC,QAAa,EAAMC,EAAAA,6BAA4B,CACnD,CAAC,KAAM,IAAKP,EAAWK,wBAGzB,GAAIN,GAAWS,MAAMC,QAAQH,IAAeA,EAAWI,OAAS,EAAG,CACjE,IAAMC,EAAWL,EAAW,GACtBrD,EAAgB0D,EAASC,gBAC3B5B,OAAO2B,EAASC,iBAChB,KACEzD,EAAS6B,OAAO2B,EAASjF,IAM/B8B,EAAS,cAAeP,EAAe,CAAE4D,gBAAgB,IAMzDlE,EAAS,C,cACPM,E,OACAE,EACA2D,SAAUH,EAASxI,OAQrB4I,WAAW,WACLhB,GACFvC,EAAS,OAAQL,EAAQ,CAAE0D,gBAAgB,GAE/C,EAAG,IACL,CACF,CAGKhF,GACHgB,EAAe,CACbgD,aAAa,EACbC,SAAUd,OAAOxD,GACjBkE,SAAQ,MAAE/D,EAAAA,EAAsB,KAChCgE,QAAS,CAAEC,OAAQI,IAGzB,CAAE,MAAOgB,GAIT,CAAE,QACIjB,GAASvB,IAAkB,EACjC,CACF,E,GAIO,WACLuB,GAAU,CACZ,CA7FwC,CA8F1C,EAAG,CACDhE,EACAP,EACAK,EACAF,EACA6B,EACAjB,EACAI,EACAE,EACAT,EAAQ+C,SACR/C,EAAQgD,MACRhD,EAAQ8C,Y,EAGVI,EAAAA,WAAU,WACR,IAAIS,GAAU,EAsBd,O,gBApBE7B,IAAuB,GACvB,IACE,IAAM+C,QAAO,EAAMC,EAAAA,sBACnB,IAAKnB,EAAS,OACd,IAAMoB,EAAWX,MAAMC,QAAQQ,GAC3BA,EACA,GACJpD,EAAgBsD,EAClB,CAAE,MAAOH,GAKHjB,GAASlC,EAAgB,GAC/B,CAAE,QACIkC,GAAS7B,IAAuB,EACtC,CACF,E,GAGO,WACL6B,GAAU,CACZ,CACF,EAAG,K,EAEHT,EAAAA,WAAU,WACHjD,GAAYoB,IACUkB,GAAqByC,KAAK,SACnDtC,G,OAAQE,OAAOF,EAAKpD,MAAQsD,OAAOvB,E,IAGrCD,EAAS,cAAe,KAAM,CAAEqD,gBAAgB,IAClD,EAAG,CAACxE,EAASsC,GAAsBlB,EAAqBD,KAExD8B,EAAAA,EAAAA,WAAU,W,MACF+B,EAAkB5C,GAAmB6C,QAC3C,GAAI7D,IAAwB4D,EAA5B,CAiBA,GAFA5C,GAAmB6C,QAAO,MAAG7D,EAAAA,EAAuB,MAE/CA,EAYH,OAXAD,EAAS,OAAQ,KAAM,CACrB+D,aAAa,EACbV,gBAAgB,IAElBlE,EAAS,CACPM,cAAe,KACfuE,gBAAiB,KACjBrE,OAAQ,KACR2D,SAAU,YAEZ9C,GAAS,IAIX,IAAMyD,EAAU9C,GAAqB+C,KAAK,SACxC5C,G,OAAQE,OAAOF,EAAKpD,MAAQsD,OAAOvB,E,GAErCD,EAAS,OAAQ,KAAM,CACrB+D,aAAa,EACbV,gBAAgB,IAGlBlE,EAAS,CACPM,cAAeQ,EACf+D,gBAA8B,OAAf,iBAAEC,EAAStJ,MAAI,EAAI,KAClCgF,OAAQ,KACR2D,SAAU,MA/BZ,MAZE,GAAIrD,EAAqB,CACvB,IAAMgE,EAAU9C,GAAqB+C,KAAK,SACxC5C,G,OAAQE,OAAOF,EAAKpD,MAAQsD,OAAOvB,E,GAEjCgE,GACF9E,EAAS,CACPM,cAAeQ,EACf+D,gBAAiBC,EAAQtJ,MAG/B,CAmCJ,EAAG,CAACwG,GAAsBlB,EAAqBd,EAAUa,K,EAEzD8B,EAAAA,WAAU,WACR,IAAIS,GAAU,EAqCd,O,gBAnCE,GAAKtC,EAAL,CAIAW,IAAgB,GAChB,IACE,IAAM6C,QAAaV,EAAAA,EAAAA,6BAA4B,CAC7C,CAAC,kBAAmB,IAAKpF,OAAOsC,MAElC,IAAKsC,EAAS,OACd/B,GAASwC,MAAMC,QAAQQ,GAAQA,EAAO,IAIlClF,GAAaT,EAAM6B,QAEF8D,EAAKG,KAAK,SAC3BO,G,OAAK3C,OAAO2C,EAAEjG,MAAQsD,OAAO1D,EAAM6B,O,IAGnCK,EAAS,OAAQlC,EAAM6B,OAAQ,CAAE0D,gBAAgB,GAGvD,CAAE,MAAOG,GAIHjB,GAAS/B,GAAS,GACxB,CAAE,QACI+B,GAAS3B,IAAgB,EAC/B,CA3BA,MAFEJ,GAAS,GA8Bb,E,GAIO,WACL+B,GAAU,CACZ,CACF,EAAG,CAACtC,EAAqB1B,EAAWT,EAAM6B,OAAQK,K,EAElD8B,EAAAA,WAAU,W,MACR,GAAK3B,EAAL,CAIA,IAAMT,EAAOa,EAAM2D,KAAK,SAAA5C,G,OAAQE,OAAOF,EAAKpD,MAAQsD,OAAOrB,E,GAC3DhB,EAAS,CACPQ,OAAQQ,EACRmD,SAAoB,OAAZ,iBAAE5D,EAAM/E,MAAI,EAAI,MAJ1B,MAFEwE,EAAS,CAAEQ,OAAQ,KAAM2D,SAAU,MAQvC,EAAG,CAACnD,EAAchB,EAAUoB,IAE5B,IAAM6D,GAAWvE,EAAa,SAAAwE,G,QAyB5BxK,EAxBM2F,EAAc2B,GAAqB+C,KAAK,SAC5C5C,G,OAAQE,OAAOF,EAAKpD,MAAQsD,OAAO6C,EAAO7E,Y,GAEtCE,EAAOa,EAAM2D,KAAK,SAAA5C,G,OAAQE,OAAOF,EAAKpD,MAAQsD,OAAO6C,EAAO3E,K,GAElEP,EAAS,CACPM,cAAe4E,EAAO7E,YACtBwE,gBAAkC,OAAnB,iBAAExE,EAAa7E,MAAI,EAAI,KACtCgF,OAAQ0E,EAAO3E,KACf4D,SAAoB,OAAZ,iBAAE5D,EAAM/E,MAAI,EAAI,OAG1B,IAEM2J,EAAe/F,EACjB,CACEC,KAAM,OACNP,SAAUD,EACVI,cAAa,MAAED,EAAAA,EAAsB,KACrCG,SAAUD,QAEZkG,E,SAGgB,O,IAARlJ,WAAQ,SAZF,qBAYgBiJ,EACpC,GAEME,IACHvE,GACDU,KACEA,IAAiC,IAAjBJ,EAAM2C,OAE1B,OACE,UAAC,EAAAtI,KAAI,CAACC,MAAOC,EAAO2J,O,WAClB,SAAC,EAAAC,WAAU,CACT7J,MAAOC,EAAO6J,UACdC,sBAAuB,CAAE5J,cAAef,EAAOO,OAAS,K,UAExD,UAAC,EAAAI,KAAI,CAACC,MAAOC,EAAO+J,K,UACjB9D,KACC,SAAC,EAAAnG,KAAI,CAACC,MAAOC,EAAOgK,W,UAClB,SAAC,EAAAC,eAAc,OAGnB,SAAC,EAAAC,aAAY,CAACC,MAAOxD,MAErB,SAAC,EAAA7G,KAAI,CAACC,MAAOC,EAAOoK,SAEpB,SAAC,EAAAC,WAAU,CACTvF,QAASA,EACTjF,KAAK,cACLyK,MAAO,CAAEC,UAAU,GACnBC,OAAQ,SAAC,G,QAAE1D,MAAO,IAAEnE,MAAO8H,EAAF,EAAEA,S,OACzB,UAAC,EAAAC,OAAM,CACL/H,MAAOA,EACP8H,SAAUA,EACVE,MAAM,oBACN9L,YAAaA,EACb0L,UAAQ,EACRpJ,SAAUwE,IAAuBlC,E,UAEhCkC,IACC,SAAC,EAAAiF,SAAQ,CAACjI,MAAM,UAAUxB,UAAQ,E,SAAA,gBAGhC,KACHkF,GAAqBwE,IAAI,SAAAC,G,OACxB,SAAC,EAAAF,SAAS,CAAqBjI,MAAO+D,OAAOoE,EAAI1H,I,SAC9C0H,EAAIjL,MADQ6G,OAAOoE,EAAI1H,I,UAQlC,SAAC,EAAAtD,KAAI,CAACC,MAAOC,EAAOoK,SAEpB,SAAC,EAAAC,WAAU,CACTvF,QAASA,EACTjF,KAAK,OACLyK,MAAO,CAAEC,UAAU,GACnBC,OAAQ,SAAC,G,QAAE1D,MAAO,IAAEnE,MAAO8H,EAAF,EAAEA,S,OACzB,SAAC,EAAAC,OAAM,CACL/H,MAAOA,EACP8H,SAAUA,EACVE,MAAM,SACN9L,YAAaA,EACb0L,UAAQ,EACRpJ,SAAUuI,IAAqBjG,EAC/BsH,YACG5F,EAEGU,GACA,sBACiB,IAAjBJ,EAAM2C,OACN,6BACA,uBALA,2C,SAQL3C,EAAMoF,IAAIC,SAAG,G,aACZ,SAAC,EAAAF,SAAS,CAAqBjI,MAAO+D,OAAOoE,EAAI1H,I,SACtC,O,IAAJvD,MAAJiL,EAAY,UAAUA,EAAI1H,MADdsD,OAAOoE,EAAI1H,I,SAQhCuC,IAAuBE,MACvB,SAAC,EAAA/F,KAAI,CAACC,MAAOC,EAAOgL,c,UAClB,SAAC,EAAAf,eAAc,CAACvJ,KAAK,QAAQC,MAAO9B,YAK5C,SAAC,UAAe,CACdL,WAAY8K,GACZ7K,kBAAmBwG,GAAWgB,GAC9BvH,SAAU,W,OAAMsH,IAAe,E,EAC/BnH,YAAaA,KAEf,SAAC,EAAAoM,kBAAiB,CAChBC,KAAMnF,GACNoF,QAAS,W,OAAMnF,IAAe,E,EAC9BoF,UAAW,W,IAGTrM,EAFAuF,I,SAEoB,O,IAAR/D,WAAQ,SAAG,OACzB,EACAH,MAAM,wCACNiL,QAAQ,iEAIhB,CAEA,IAAMrL,EAASoB,EAAAA,WAAWC,OAAO,CAC/BsI,OAAQ,CAAEnH,KAAM,EAAGxB,gBAAiB,WACpC6I,UAAW,CAAErH,KAAM,EAAGZ,WAAY,IAClCmI,KAAM,CAAEpI,kBAAmB,GAAIzB,cAAe,GAAI2B,IAAK,GACvDuI,MAAO,CAAEhI,OAAQ,IACjB4I,cAAe,CACbM,UAAW,GACXC,WAAY,SACZC,eAAgB,UAElBxB,WAAY,CACVyB,gBAAiB,GACjBF,WAAY,W,mMCtkBO,OA6BjBG,EAAiD,CACrDjI,WAAW,EACXN,SAAU,KACV8D,MAAO,KACPG,SAAU,KACVC,QAAS,MAGLsE,EAAsC,CAC1C5H,QAAS,KACTD,QAAS,CACP8C,SAAU,KACVC,SAAU,KACVC,MAAO,KACPC,SAAU,MAEZ5C,QAASuH,GAGJ,KAAgCrK,EAAAA,QACrCuK,SACAC,G,OAAQ,WACLF,GAAa,CAEhBG,WAAYA,SAAC/H,G,OAA2B8H,EAAI,SAAAhI,G,OAAU,WAAKA,GAAK,C,QAAEE,G,IAClEE,WAAYA,SAACH,G,OACX+H,EAAI,SAAAhI,G,OAAU,WAAKA,GAAK,C,QAAEC,G,IAC5BI,WAAYC,SAAO,G,OACjB0H,EAAI,SAAAhI,G,OAAU,WACTA,GAAK,CACRM,QAAS,OACJN,EAAMM,QACNA,I,IAGT4H,aAAcA,W,OACZF,EAAI,SAAAhI,G,OAAU,WACTA,GAAK,CACRM,QAASuH,G,6LCnEQ,OAwIjBM,EAA+B,CACnCzE,aAAa,EACbC,SAAU,KACVJ,SAAU,KACVC,QAAS,MAGJ,KAA8BhG,EAAAA,QAAO4K,SAAyBJ,G,MAAQ,CAC3E7I,MA9D8D,CAC9D2B,cAAe,KACfE,OAAQ,KACRqE,gBAAiB,KACjBV,SAAU,MA2DV0D,YAxD0E,CAC1EC,OAAQ,SACRC,WAAY,KACZC,WAAY,KACZC,UAAW,KACXC,YAAa,KACbC,sBAAuB,MAmDvBC,YAhD0E,CAC1EN,OAAQ,SACRC,WAAY,KACZC,WAAY,KACZK,iBAAkB,KAClBC,iBAAkB,KAClBC,kBAAmB,KACnBC,eAAgB,KAChBC,eAAgB,KAChBC,gBAAiB,KACjBC,sBAAuB,KACvBT,YAAa,KACbC,sBAAuB,MAqCvBS,YAlC0E,CAC1Ed,OAAQ,SACRe,iBAAkB,KAClBC,iBAAkB,KAClBC,aAAc,KACdC,iBAAkB,KAClBC,eAAgB,KAChBC,wBAAyB,IACzBhB,YAAa,KACbC,sBAAuB,MA0BvBgB,eAvBgF,CAC9ErB,OAAQ,SACRC,WAAY,KACZC,WAAY,KACZC,UAAW,KACXU,sBAAuB,KACvBT,YAAa,KACbC,sBAAuB,KACvBiB,SAAU,MAgBZC,KAAM1B,EACN3H,SAAU,SAAAkF,G,OACRsC,EAAI,SAAAhI,G,MAAU,CACZb,MAAO,OACFa,EAAMb,MACNuG,G,IAGToE,eAAgB,SAAApE,G,OACdsC,EAAI,SAAAhI,G,MAAU,CACZqI,YAAa,OACRrI,EAAMqI,YACN3C,G,IAGTqE,eAAgB,SAAArE,G,OACdsC,EAAI,SAAAhI,G,MAAU,CACZ4I,YAAa,OACR5I,EAAM4I,YACNlD,G,IAGTsE,eAAgB,SAAAtE,G,OACdsC,EAAI,SAAAhI,G,MAAU,CACZoJ,YAAa,OACRpJ,EAAMoJ,YACN1D,G,IAGPuE,kBAAmB,SAAAvE,G,OACnBsC,EAAI,SAAAhI,G,MAAU,CACZ2J,eAAgB,OACX3J,EAAM2J,eACNjE,G,IAGThF,eAAgB,SAAAgF,G,OACdsC,EAAI,SAAAhI,G,MAAU,CACZ6J,KAAM,OACD7J,EAAM6J,KACNnE,G,IAGTwE,WAAYA,W,OACVlC,EAAI,SAAAhI,G,MAAU,CACZb,MAAOa,EAAMb,MACbkJ,YA1GsE,CAC1EC,OAAQ,SACRC,WAAY,KACZC,WAAY,KACZC,UAAW,KACXC,YAAa,KACbC,sBAAuB,MAqGnBC,YAlGsE,CAC1EN,OAAQ,SACRC,WAAY,KACZC,WAAY,KACZK,iBAAkB,KAClBC,iBAAkB,KAClBC,kBAAmB,KACnBC,eAAgB,KAChBC,eAAgB,KAChBC,gBAAiB,KACjBC,sBAAuB,KACvBT,YAAa,KACbC,sBAAuB,MAuFnBS,YApFsE,CAC1Ed,OAAQ,SACRe,iBAAkB,KAClBC,iBAAkB,KAClBC,aAAc,KACdC,iBAAkB,KAClBC,eAAgB,KAChBC,wBAAyB,IACzBhB,YAAa,KACbC,sBAAuB,MA4EnBgB,eAzE4E,CAC9ErB,OAAQ,SACRC,WAAY,KACZC,WAAY,KACZC,UAAW,KACXU,sBAAuB,KACvBT,YAAa,KACbC,sBAAuB,KACvBiB,SAAU,MAkERC,KAAM7J,EAAM6J,K,IAEhBpJ,MAAOA,W,OACLuH,EAAI,W,MAAO,CACT7I,MAzH0D,CAC9D2B,cAAe,KACfE,OAAQ,KACRqE,gBAAiB,KACjBV,SAAU,MAsHN0D,YAnHsE,CAC1EC,OAAQ,SACRC,WAAY,KACZC,WAAY,KACZC,UAAW,KACXC,YAAa,KACbC,sBAAuB,MA8GnBC,YA3GsE,CAC1EN,OAAQ,SACRC,WAAY,KACZC,WAAY,KACZK,iBAAkB,KAClBC,iBAAkB,KAClBC,kBAAmB,KACnBC,eAAgB,KAChBC,eAAgB,KAChBC,gBAAiB,KACjBC,sBAAuB,KACvBT,YAAa,KACbC,sBAAuB,MAgGnBS,YA7FsE,CAC1Ed,OAAQ,SACRe,iBAAkB,KAClBC,iBAAkB,KAClBC,aAAc,KACdC,iBAAkB,KAClBC,eAAgB,KAChBC,wBAAyB,IACzBhB,YAAa,KACbC,sBAAuB,MAqFnBgB,eAlF4E,CAC9ErB,OAAQ,SACRC,WAAY,KACZC,WAAY,KACZC,UAAW,KACXU,sBAAuB,KACvBT,YAAa,KACbC,sBAAuB,KACvBiB,SAAU,MA2ERC,KAAM1B,E"}