@argusoft/medplat-core 1.0.17 → 1.0.19

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.
Files changed (64) hide show
  1. package/dist/{AddMenuConfiguration-QWfpcnuP.js → AddMenuConfiguration-DsnY0Rws.js} +544 -544
  2. package/dist/AddMenuConfiguration-DsnY0Rws.js.map +1 -0
  3. package/dist/{AddRoleDrawer-SvntLdRu.js → AddRoleDrawer-Bc655LQU.js} +17 -17
  4. package/dist/{AddRoleDrawer-SvntLdRu.js.map → AddRoleDrawer-Bc655LQU.js.map} +1 -1
  5. package/dist/ChangePasswordModalCore-50EzprTk.js +5495 -0
  6. package/dist/ChangePasswordModalCore-50EzprTk.js.map +1 -0
  7. package/dist/{ConditionConfig-DB0FqwgG.js → ConditionConfig-D2hOAa4n.js} +2 -2
  8. package/dist/{ConditionConfig-DB0FqwgG.js.map → ConditionConfig-D2hOAa4n.js.map} +1 -1
  9. package/dist/{EntityManagement-DQKXnEzz.js → EntityManagement-D4nG7wUX.js} +2 -2
  10. package/dist/{EntityManagement-DQKXnEzz.js.map → EntityManagement-D4nG7wUX.js.map} +1 -1
  11. package/dist/ImmunizationConfigurationBase-C5wnjI_-.js +5706 -0
  12. package/dist/ImmunizationConfigurationBase-C5wnjI_-.js.map +1 -0
  13. package/dist/ImmunizationConfigurationBase.css +1 -1
  14. package/dist/{ManageDynamicFeature-CsIett5x.js → ManageDynamicFeature-i6ARKe36.js} +2 -2
  15. package/dist/{ManageDynamicFeature-CsIett5x.js.map → ManageDynamicFeature-i6ARKe36.js.map} +1 -1
  16. package/dist/{ManageEventConfiguration-0YBDaxOI.js → ManageEventConfiguration-CHugu2vQ.js} +92 -92
  17. package/dist/ManageEventConfiguration-CHugu2vQ.js.map +1 -0
  18. package/dist/{ManageUser-eBS0yC5k.js → ManageUser-C6dlK-Mr.js} +3 -4
  19. package/dist/{ManageUser-eBS0yC5k.js.map → ManageUser-C6dlK-Mr.js.map} +1 -1
  20. package/dist/{MobileMenuManagement-BmrO-7MN.js → MobileMenuManagement-CV6QCeos.js} +15 -15
  21. package/dist/MobileMenuManagement-CV6QCeos.js.map +1 -0
  22. package/dist/{MobileTypeEventConfigModal-Ltm529jG.js → MobileTypeEventConfigModal-2w0WQ3WY.js} +2 -2
  23. package/dist/{MobileTypeEventConfigModal-Ltm529jG.js.map → MobileTypeEventConfigModal-2w0WQ3WY.js.map} +1 -1
  24. package/dist/{NewServerManagement-5YcAtF-g.js → NewServerManagement-Cxe0dV0O.js} +5 -5
  25. package/dist/NewServerManagement-Cxe0dV0O.js.map +1 -0
  26. package/dist/{OtherTypeEventConfigModal-dXt2qDg_.js → OtherTypeEventConfigModal-D1p8M39y.js} +43 -43
  27. package/dist/{OtherTypeEventConfigModal-dXt2qDg_.js.map → OtherTypeEventConfigModal-D1p8M39y.js.map} +1 -1
  28. package/dist/{QueryManagement-DGHV_-d5.js → QueryManagement-CRykYGum.js} +3 -3
  29. package/dist/QueryManagement-CRykYGum.js.map +1 -0
  30. package/dist/SecurityAuditLogList-Dod711KT.js +874 -0
  31. package/dist/SecurityAuditLogList-Dod711KT.js.map +1 -0
  32. package/dist/{TableDetails-DztbjsIA.js → TableDetails-Cf_YfnY2.js} +235 -235
  33. package/dist/TableDetails-Cf_YfnY2.js.map +1 -0
  34. package/dist/{TableList-DYwotUDO.js → TableList-HGbEN4bv.js} +28 -28
  35. package/dist/TableList-HGbEN4bv.js.map +1 -0
  36. package/dist/{TypeConfiguration-DYbBG_hZ.js → TypeConfiguration-D-3xNcyd.js} +2 -2
  37. package/dist/{TypeConfiguration-DYbBG_hZ.js.map → TypeConfiguration-D-3xNcyd.js.map} +1 -1
  38. package/dist/{UserList-BAeAFeXZ.js → UserList-D7GL7jvO.js} +420 -421
  39. package/dist/UserList-D7GL7jvO.js.map +1 -0
  40. package/dist/{WidgetList-D-fIf3N2.js → WidgetList-B3Sm9weK.js} +2 -2
  41. package/dist/{WidgetList-D-fIf3N2.js.map → WidgetList-B3Sm9weK.js.map} +1 -1
  42. package/dist/index-D9YNFPn9.js +1439 -0
  43. package/dist/index-D9YNFPn9.js.map +1 -0
  44. package/dist/index.css +1 -1
  45. package/dist/index.js +189 -174
  46. package/dist/index.js.map +1 -1
  47. package/dist/{index-BFznsakV.js → pdfmake-Cf-381ou.js} +13951 -15385
  48. package/dist/pdfmake-Cf-381ou.js.map +1 -0
  49. package/package.json +1 -1
  50. package/dist/AddMenuConfiguration-QWfpcnuP.js.map +0 -1
  51. package/dist/ChangePasswordModalCore-ClND1mel.js +0 -181
  52. package/dist/ChangePasswordModalCore-ClND1mel.js.map +0 -1
  53. package/dist/ImmunizationConfigurationBase-VqVvVR57.js +0 -5389
  54. package/dist/ImmunizationConfigurationBase-VqVvVR57.js.map +0 -1
  55. package/dist/ManageEventConfiguration-0YBDaxOI.js.map +0 -1
  56. package/dist/MobileMenuManagement-BmrO-7MN.js.map +0 -1
  57. package/dist/NewServerManagement-5YcAtF-g.js.map +0 -1
  58. package/dist/QueryManagement-DGHV_-d5.js.map +0 -1
  59. package/dist/SecurityAuditLogList-DHTcOtbx.js +0 -748
  60. package/dist/SecurityAuditLogList-DHTcOtbx.js.map +0 -1
  61. package/dist/TableDetails-DztbjsIA.js.map +0 -1
  62. package/dist/TableList-DYwotUDO.js.map +0 -1
  63. package/dist/UserList-BAeAFeXZ.js.map +0 -1
  64. package/dist/index-BFznsakV.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"SecurityAuditLogList-DHTcOtbx.js","sources":["../src/views/SecurityAuditLog/SecurityAuditLogFilterForm.jsx","../src/views/SecurityAuditLog/SecurityAuditLogList.jsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport {\n Box,\n Button,\n TextField,\n InputLabel,\n alpha,\n Tooltip,\n useTheme,\n Typography,\n} from \"@mui/material\";\nimport { useTranslateProvider } from \"@/common/languageTranslator/TranslationContext\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faSearch, faInfoCircle, faCalendar } from \"@fortawesome/free-solid-svg-icons\";\nimport { DateRange } from \"react-date-range\";\nimport \"react-date-range/dist/styles.css\";\nimport \"react-date-range/dist/theme/default.css\";\n\nexport default function SecurityAuditLogFilterForm({\n filter,\n setFilter,\n handleOverlayState,\n}) {\n const { translate } = useTranslateProvider();\n const theme = useTheme();\n const isDark = theme.palette.mode === \"dark\";\n const [localFilter, setLocalFilter] = useState(filter);\n const [showCalendar, setShowCalendar] = useState(false);\n\n const [dateRange, setDateRange] = useState([\n {\n startDate: filter.startTime ? new Date(filter.startTime) : new Date(),\n endDate: filter.endTime ? new Date(filter.endTime) : new Date(),\n key: 'selection'\n }\n ]);\n\n useEffect(() => {\n setLocalFilter(filter);\n setDateRange([\n {\n startDate: filter.startTime ? new Date(filter.startTime) : new Date(),\n endDate: filter.endTime ? new Date(filter.endTime) : new Date(),\n key: 'selection'\n }\n ]);\n }, [filter]);\n\n const handleDateChange = (ranges) => {\n const { selection } = ranges;\n setDateRange([selection]);\n \n const startStr = selection.startDate ? formatDate(selection.startDate) : null;\n const endStr = selection.endDate ? formatDate(selection.endDate) : null;\n \n setLocalFilter(prev => ({\n ...prev,\n startTime: startStr,\n endTime: endStr\n }));\n };\n\n const formatDate = (date) => {\n if (!date) return null;\n const d = new Date(date);\n return `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, '0')}-${String(d.getDate()).padStart(2, '0')}`;\n };\n\n const getDisplayRange = () => {\n if (!localFilter.startTime && !localFilter.endTime) return \"Select date range\";\n const start = localFilter.startTime ? new Date(localFilter.startTime).toLocaleDateString() : \"\";\n const end = localFilter.endTime ? new Date(localFilter.endTime).toLocaleDateString() : \"\";\n return `${start} - ${end}`;\n };\n\n const handleInputChange = (field, value) => {\n setLocalFilter((prev) => ({ ...prev, [field]: value }));\n };\n\n const applyFilters = () => {\n setFilter(localFilter);\n handleOverlayState(); \n };\n\n const textFieldStyles = {\n \"& .MuiInputLabel-root\": {\n color: theme.palette.text.secondary, \n fontSize: \"0.85rem\",\n fontWeight: 500,\n transform: \"translate(0, -1.5px) scale(1)\", \n \"&.Mui-focused\": { color: theme.palette.primary.main },\n },\n \"& .MuiInputBase-root\": {\n backgroundColor: alpha(theme.palette.text.primary, 0.05),\n borderRadius: \"12px\",\n color: theme.palette.text.primary,\n marginTop: \"20px\",\n \"& fieldset\": { \n borderColor: alpha(theme.palette.text.primary, 0.1),\n borderRadius: \"12px\",\n },\n \"&:hover fieldset\": { borderColor: alpha(theme.palette.text.primary, 0.3) },\n \"&.Mui-focused fieldset\": { borderColor: theme.palette.primary.main, borderWidth: \"2px\" },\n },\n \"& .MuiInputBase-input\": {\n padding: \"10px 14px\",\n colorScheme: isDark ? \"dark\" : \"light\",\n }\n };\n\n return (\n <Box className=\"flex flex-col gap-6 p-6\">\n <Box className=\"flex flex-col gap-1.5 pt-1\">\n <Typography variant=\"caption\" sx={{ color: theme.palette.text.secondary, fontWeight: 500, fontSize: \"0.85rem\", transform: \"translate(0, -1.5px)\" }}>\n {translate(\"Date Range\")}\n </Typography>\n <Box \n onClick={() => setShowCalendar(!showCalendar)}\n className=\"flex items-center justify-between gap-2 px-3 py-2.5 rounded-xl cursor-pointer transition-all\" \n sx={{ \n backgroundColor: alpha(theme.palette.text.primary, 0.05), \n border: `1px solid ${alpha(theme.palette.text.primary, 0.1)}`,\n \"&:hover\": { borderColor: alpha(theme.palette.text.primary, 0.3) }\n }}\n >\n <Typography variant=\"body2\" sx={{ color: theme.palette.text.primary, fontSize: '0.875rem' }}>\n {getDisplayRange()}\n </Typography>\n <FontAwesomeIcon icon={faCalendar} className=\"opacity-50 text-sm\" />\n </Box>\n {showCalendar && (\n <Box \n className=\"mt-2 p-2 rounded-xl flex justify-center overflow-hidden border\"\n sx={{ \n backgroundColor: theme.palette.background.paper,\n borderColor: alpha(theme.palette.text.primary, 0.1),\n \"& .rdrCalendarWrapper\": {\n backgroundColor: theme.palette.background.paper,\n color: theme.palette.text.primary,\n },\n \"& .rdrDateDisplayWrapper\": {\n backgroundColor: alpha(theme.palette.text.primary, 0.05),\n },\n \"& .rdrMonthAndYearWrapper\": {\n color: theme.palette.text.primary,\n },\n \"& .rdrMonthName\": {\n color: theme.palette.text.primary,\n },\n \"& .rdrDayNumber span\": {\n color: theme.palette.text.primary,\n },\n \"& .rdrDayDisabled\": {\n backgroundColor: 'transparent',\n \"& .rdrDayNumber span\": {\n color: alpha(theme.palette.text.primary, 0.25),\n }\n },\n \"& .rdrDayPassive\": {\n \"& .rdrDayNumber span\": {\n color: alpha(theme.palette.text.primary, 0.3),\n }\n }\n }}\n >\n <DateRange\n editableDateInputs={false}\n onChange={handleDateChange}\n moveRangeOnFirstSelection={false}\n ranges={dateRange}\n rangeColors={[theme.palette.primary.main]}\n />\n </Box>\n )}\n </Box>\n\n <Box className=\"flex flex-col gap-4 pt-2\">\n <TextField\n label={translate(\"User ID\")}\n placeholder={translate(\"e.g. 101\")}\n value={localFilter.userId || \"\"}\n onChange={(e) => handleInputChange(\"userId\", e.target.value)}\n fullWidth\n size=\"small\"\n slotProps={{ inputLabel: { shrink: true } }}\n sx={textFieldStyles}\n />\n\n <TextField\n label={translate(\"IP Address\")}\n placeholder=\"192.168.1.1\"\n value={localFilter.ip || \"\"}\n onChange={(e) => handleInputChange(\"ip\", e.target.value)}\n fullWidth\n size=\"small\"\n slotProps={{ inputLabel: { shrink: true } }}\n sx={textFieldStyles}\n />\n\n <TextField\n label={translate(\"Session ID\")}\n placeholder={translate(\"e.g. E561890...\")}\n value={localFilter.sessionId || \"\"}\n onChange={(e) => handleInputChange(\"sessionId\", e.target.value)}\n fullWidth\n size=\"small\"\n slotProps={{ inputLabel: { shrink: true } }}\n sx={textFieldStyles}\n />\n\n <TextField\n label={translate(\"Event Type\")}\n placeholder=\"LOGIN_SUCCESS\"\n value={localFilter.eventType || \"\"}\n onChange={(e) => handleInputChange(\"eventType\", e.target.value)}\n fullWidth\n size=\"small\"\n slotProps={{ inputLabel: { shrink: true } }}\n sx={textFieldStyles}\n />\n\n <TextField\n label={translate(\"Resource Path\")}\n placeholder=\"/api/v1/...\"\n value={localFilter.resource || \"\"}\n onChange={(e) => handleInputChange(\"resource\", e.target.value)}\n fullWidth\n size=\"small\"\n slotProps={{ inputLabel: { shrink: true } }}\n sx={textFieldStyles}\n />\n </Box>\n\n <Box className=\"flex justify-stretch mt-4\">\n <Button \n variant=\"contained\" \n onClick={applyFilters} \n fullWidth\n startIcon={<FontAwesomeIcon icon={faSearch} />}\n sx={{ \n backgroundColor: theme.palette.primary.main, \n height: '45px',\n borderRadius: '12px',\n fontWeight: 'bold',\n textTransform: 'uppercase',\n letterSpacing: '1px',\n '&:hover': { backgroundColor: theme.palette.primary.dark } \n }}\n >\n {translate(\"Apply Filters\")}\n </Button>\n </Box>\n </Box>\n );\n}\n","import { useTranslateProvider } from \"@/common/languageTranslator/TranslationContext\";\nimport { showToast } from \"@/common/toaster/toaster.jsx\";\nimport usePagination from \"@/hooks/usePagination.js\";\nimport CustomizedTable from \"@/views/custom-components/CustomizedTable/CustomizedTableV2\";\nimport SideOverlay from \"@/views/custom-components/SideOverlay.jsx\";\nimport SecurityAuditLogFilterForm from \"./SecurityAuditLogFilterForm.jsx\";\nimport { alpha, useTheme } from \"@mui/material/styles\";\nimport { execute } from \"@/common/services/GlobalApis\";\n\nimport {\n faEye,\n faFileExcel,\n faFilePdf,\n faSync,\n faChartLine,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n Box,\n Button,\n CircularProgress,\n Dialog,\n DialogContent,\n DialogTitle,\n TextField,\n Typography,\n Tooltip,\n IconButton,\n} from \"@mui/material\";\nimport Grid from \"@mui/material/Grid2\";\nimport { saveAs } from \"file-saver\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport useTrackEvent from \"@/hooks/useTrackEvent\";\nimport * as XLSX from \"xlsx-js-style\";\nimport useDownloadPdf from \"@/hooks/useDownloadPdf.js\";\nimport dayjs from \"dayjs\";\nimport moment from \"moment\";\n\nexport default function SecurityAuditLogList() {\n const getTimeAgo = (timestamp) => {\n if (!timestamp) return 'N/A';\n const now = moment();\n const past = moment(timestamp);\n const duration = moment.duration(now.diff(past));\n const years = duration.years();\n const months = duration.months();\n const days = duration.days();\n const hours = duration.hours();\n const minutes = duration.minutes();\n const seconds = duration.seconds();\n if (years > 0) return `${years} year${years > 1 ? 's' : ''} ago`;\n if (months > 0) return `${months} month${months > 1 ? 's' : ''} ago`;\n if (days > 0) return `${days} day${days > 1 ? 's' : ''} ago`;\n let result = [];\n if (hours > 0) result.push(`${hours} hour${hours > 1 ? 's' : ''}`);\n if (minutes > 0) result.push(`${minutes} minute${minutes > 1 ? 's' : ''}`);\n if (seconds > 0 && hours === 0) result.push(`${seconds} second${seconds > 1 ? 's' : ''}`);\n if (result.length === 0) return 'Just now';\n return result.join(' ') + ' ago';\n };\n\n const trackEvent = useTrackEvent();\n const theme = useTheme();\n const isDark = theme.palette.mode === \"dark\";\n const [refreshToggle, setRefreshToggle] = useState(false);\n\n const [search, setSearch] = useState(\"\");\n const [debounceSearch, setDebounceSearch] = useState(\"\");\n const [logsData, setLogsData] = useState([]);\n const [hasMore, setHasMore] = useState(true);\n const [overlayOpen, setOverlayOpen] = useState(false);\n const [sortConfig, setSortConfig] = useState({\n sortColumn: \"timestamp\",\n sortOrder: \"desc\",\n });\n const [filter, setFilter] = useState({\n startTime: null,\n endTime: null,\n userId: null,\n username: null,\n ip: null,\n sessionId: null,\n eventType: null,\n resource: null,\n });\n\n const pageSize = 50;\n const { translate } = useTranslateProvider();\n const [isLoading, setIsLoading] = useState(false);\n\n const [detailsModalOpen, setDetailsModalOpen] = useState(false);\n const [selectedRow, setSelectedRow] = useState(null);\n\n useEffect(() => {\n const timer = setTimeout(() => {\n setDebounceSearch(search);\n }, 1000);\n return () => clearTimeout(timer);\n }, [search]);\n\n const columns = useMemo(\n () => [\n { field: \"Sr. No.\", label: \"#\", align: \"left\" },\n {\n field: \"timestamp\",\n label: \"Time\".toUpperCase(),\n sortable: true,\n sortOrder: sortConfig.sortColumn === \"timestamp\" ? sortConfig.sortOrder : \"asc\",\n align: \"left\",\n render: (row) => (\n <Tooltip title={getTimeAgo(row?.timestamp)} arrow placement=\"top\">\n <Box className=\"flex items-center h-full cursor-pointer\">\n {dayjs(row?.timestamp).format(\"DD/MM/YYYY hh:mm:ss A\")}\n </Box>\n </Tooltip>\n ),\n },\n {\n field: \"session_id\",\n label: \"Session ID\".toUpperCase(),\n align: \"left\",\n render: (row) => (\n <Typography variant=\"caption\" className=\"font-mono opacity-70\">\n {row?.session_id || \"N/A\"}\n </Typography>\n ),\n },\n {\n field: \"user_id\",\n label: \"User ID\".toUpperCase(),\n sortable: true,\n sortOrder: sortConfig.sortColumn === \"user_id\" ? sortConfig.sortOrder : \"asc\",\n align: \"left\",\n render: (row) => (\n <Typography variant=\"body2\" className=\"font-bold\" sx={{ color: theme.palette.text.primary }}>\n {row?.user_id || 'System'}\n </Typography>\n )\n },\n {\n field: \"resource\",\n label: \"Resource\".toUpperCase(),\n sortable: true,\n sortOrder: sortConfig.sortColumn === \"resource\" ? sortConfig.sortOrder : \"asc\",\n align: \"left\",\n render: (row) => (\n <Box className=\"max-w-xs truncate font-mono text-[0.7rem] opacity-80\" title={row?.resource}>\n {row?.resource || 'N/A'}\n </Box>\n ),\n },\n {\n field: \"Actions\",\n label: \"View Details\".toUpperCase(),\n align: \"center\",\n },\n ],\n [sortConfig]\n );\n\n const getActions = useCallback(\n (row) => {\n return [\n {\n label: \"\",\n icon: <FontAwesomeIcon icon={faEye} size=\"lg\" title=\"View Event Details\" />,\n onClick: () => {\n setSelectedRow(row);\n setDetailsModalOpen(true);\n },\n iconColor: theme.palette.primary.main,\n backgroundColor: alpha(theme.palette.primary.main, 0.1),\n hoverBackgroundColor: theme.palette.primary.main,\n hoverIconColor: \"white\",\n borderColor: theme.palette.primary.main,\n },\n {\n label: \"Trace Detailed Session Logs\",\n icon: <FontAwesomeIcon icon={faChartLine} size=\"lg\" title=\"Filter Activity Analytics by this Session ID\" />,\n onClick: () => {\n if (row.session_id) {\n const baseUrl = window.location.origin + window.location.pathname.split('/medplat/')[0];\n let attrs = {};\n try { if (row.attributes) attrs = JSON.parse(row.attributes); } catch(e) {}\n if (row.user_id) attrs.user_id = row.user_id;\n const attrsEncoded = `&attributes=${encodeURIComponent(JSON.stringify(attrs))}`;\n const url = `${baseUrl}/medplat/manage/activityAnalytics?sessionId=${row.session_id}${attrsEncoded}`;\n window.open(url, \"_blank\");\n } else {\n showToast({ message: \"No Session ID available for this log\", type: \"warning\" });\n }\n },\n iconColor: theme.palette.secondary.main,\n backgroundColor: alpha(theme.palette.secondary.main, 0.1),\n hoverBackgroundColor: theme.palette.secondary.main,\n hoverIconColor: \"white\",\n borderColor: theme.palette.secondary.main,\n },\n ];\n },\n [theme]\n );\n\n const handleSort = async (column) => {\n const newOrder =\n sortConfig.sortColumn === column.field && sortConfig.sortOrder === \"asc\"\n ? \"desc\"\n : \"asc\";\n setSortConfig({ sortColumn: column.field, sortOrder: newOrder });\n };\n\n const handleOverlayState = () => {\n setOverlayOpen(!overlayOpen);\n };\n\n const resetFilter = () => {\n setFilter({\n startTime: null,\n endTime: null,\n userId: null,\n username: null,\n ip: null,\n sessionId: null,\n eventType: null,\n resource: null,\n });\n setSearch(\"\");\n setOverlayOpen(false);\n };\n\n async function loadMoreData(pageParam, initialLoad) {\n try {\n initialLoad && setIsLoading(true);\n\n const params = {\n limit: pageParam.limit,\n offset: pageParam.offset,\n userId: filter.userId || null,\n ip: filter.ip || null,\n sessionId: filter.sessionId || null,\n eventType: filter.eventType || null,\n resource: filter.resource || null,\n startTime: filter.startTime ? dayjs(filter.startTime).startOf('day').valueOf() : null,\n endTime: filter.endTime ? dayjs(filter.endTime).endOf('day').valueOf() : null,\n sortBy: sortConfig.sortColumn,\n sortOrder: sortConfig.sortOrder,\n };\n\n const response = await execute(\n {\n code: \"GET_SECURITY_AUDIT_LOGS\",\n parameters: params,\n },\n { showLoader: false }\n );\n \n const results = response?.data?.result || [];\n const parsedResults = results.map(row => {\n let parsedAttrs = null;\n if (row.attributes) {\n try { parsedAttrs = JSON.parse(row.attributes); } catch(e) {}\n }\n return { ...row, parsedAttributes: parsedAttrs };\n });\n\n initialLoad && setIsLoading(false);\n return parsedResults;\n } catch (error) {\n showToast({ message: `Error fetching logs: ${error.message}`, type: \"error\" });\n setIsLoading(false);\n return [];\n }\n }\n\n const {\n data: pageData,\n fetchNextPage,\n hasNextPage,\n } = usePagination({\n key: [\n \"security_audit_logs\",\n debounceSearch,\n sortConfig.sortOrder,\n sortConfig.sortColumn,\n filter,\n refreshToggle,\n ],\n queryFn: ({ pageParam }) => {\n const isInitial = !pageParam?.offset || pageParam?.offset === 0;\n return loadMoreData(pageParam, isInitial);\n },\n limit: pageSize,\n });\n\n useEffect(() => {\n const allLogs = pageData?.pages?.flat() || [];\n setHasMore(allLogs.length > 0 ? hasNextPage : false);\n setLogsData(allLogs);\n }, [pageData, hasNextPage]);\n\n // Excel Logic\n const [disableExcel, setDisableExcel] = useState(false);\n const downloadExcelData = async () => {\n try {\n if (logsData.length === 0) {\n showToast({ message: \"No data to export\", type: \"warning\" });\n return;\n }\n setDisableExcel(true);\n\n const wsData = [\n [\"SECURITY AUDIT LOGS REPORT\"],\n [`Server Instance: ${window.location.hostname || \"NA\"}`],\n [], // blank spacer row\n // Table Headers\n [\n \"No.\",\n \"TIME\",\n \"EVENT CATEGORY\",\n \"EVENT TYPE\",\n \"SEVERITY\",\n \"USER ID\",\n \"USERNAME\",\n \"NAME\",\n \"ROLE ID\",\n \"IP ADDRESS\",\n \"SESSION ID\",\n \"HTTP METHOD\",\n \"RESOURCE\",\n \"RESPONSE CODE\",\n \"USER AGENT\"\n ]\n ];\n\n logsData.forEach((log, index) => {\n wsData.push([\n index + 1,\n dayjs(log?.timestamp).format(\"DD/MM/YYYY hh:mm:ss A\"),\n log?.event_category || \"NA\",\n log?.event_type || \"NA\",\n log?.severity || \"NA\",\n log?.user_id || \"NA\",\n log?.parsedAttributes?.user_name || \"NA\",\n log?.parsedAttributes?.name || \"NA\",\n log?.parsedAttributes?.role_id || \"NA\",\n log?.parsedAttributes?.ip || log?.ip_address || \"NA\",\n log?.session_id || \"NA\",\n log?.http_method || \"NA\",\n log?.resource || \"NA\",\n log?.response_code || \"NA\",\n log?.parsedAttributes?.user_agent || log?.user_agent || \"NA\"\n ]);\n });\n\n const worksheet = XLSX.utils.aoa_to_sheet(wsData);\n const workbook = XLSX.utils.book_new();\n XLSX.utils.book_append_sheet(workbook, worksheet, \"Logs\");\n \n const wbout = XLSX.write(workbook, { bookType: 'xlsx', type: 'binary' });\n\n function s2ab(s) {\n const buf = new ArrayBuffer(s.length);\n const view = new Uint8Array(buf);\n for (let i = 0; i !== s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;\n return buf;\n }\n\n saveAs(new Blob([s2ab(wbout)], { type: \"application/octet-stream\" }), `SecurityAuditLogs-${new Date().getTime()}.xlsx`);\n setDisableExcel(false);\n } catch (error) {\n setDisableExcel(false);\n showToast({ message: \"Error in downloading excel\", type: \"error\" });\n }\n };\n\n // PDF Logic\n const downloadPdfHook = useDownloadPdf();\n const [disablePdf, setDisablePdf] = useState(false);\n const handleDownloadPdf = async () => {\n try {\n if (logsData.length === 0) {\n showToast({ message: \"No data to export\", type: \"warning\" });\n return;\n }\n setDisablePdf(true);\n \n const pdfColumns = [\"TIME\", \"CATEGORY\", \"TYPE\", \"USER ID\", \"USERNAME\", \"IP\", \"STATUS\", \"METHOD\", \"URI\"];\n const pdfKeys = [\"timeStr\", \"event_category\", \"event_type\", \"user_id\", \"username\", \"ip_address\", \"response_code\", \"http_method\", \"request_uri\"];\n \n const leanData = logsData.map((log) => ({\n timeStr: dayjs(log.timestamp).format(\"DD/MM/YYYY hh:mm:ss A\"),\n event_category: log.event_category || \"NA\",\n event_type: log.event_type || \"NA\",\n user_id: log.user_id || \"NA\",\n username: log.parsedAttributes?.user_name || \"NA\",\n ip_address: log.parsedAttributes?.ip || log.ip_address || \"NA\",\n response_code: log.response_code || \"NA\",\n http_method: log.http_method || \"NA\",\n request_uri: log.resource || \"NA\"\n }));\n\n downloadPdfHook({\n title: [\n \"SECURITY AUDIT LOGS REPORT\",\n `Server Instance: ${window.location.hostname || \"NA\"}`\n ],\n columns: pdfColumns,\n keys: pdfKeys,\n data: leanData,\n fileName: `AuditLogs-${new Date().getTime()}`, \n headerText: \"Security Audit Logs\",\n footerText: \"Audit Log Report\",\n orientation: \"landscape\",\n });\n setDisablePdf(false);\n } catch (error) {\n setDisablePdf(false);\n console.error(error);\n showToast({ message: \"Error in downloading pdf\", type: \"error\" });\n }\n };\n\n const handleDownloadRowPdf = (row) => {\n if (!row) return;\n \n const details = [\n { label: 'User ID', value: String(row.user_id || 'N/A') },\n { label: 'Username', value: String(row.parsedAttributes?.user_name || 'N/A') },\n { label: 'Name', value: String(row.parsedAttributes?.name || 'N/A') },\n { label: 'Role ID', value: String(row.parsedAttributes?.role_id || 'N/A') },\n { label: 'Role Name', value: String(row.parsedAttributes?.role_name || 'N/A') },\n { label: 'Role Code', value: String(row.parsedAttributes?.role_code || 'N/A') },\n { label: 'Event Timestamp', value: dayjs(row.timestamp).format(\"DD/MM/YYYY hh:mm:ss A\") },\n { label: 'Event Category', value: String(row.event_category || 'N/A') },\n { label: 'Event Type', value: String(row.event_type || 'N/A') },\n { label: 'Severity', value: String(row.severity || 'N/A') },\n { label: 'IP Address', value: String(row.parsedAttributes?.ip || row.ip_address || 'N/A') },\n { label: 'Session ID', value: String(row.session_id || 'N/A') },\n { label: 'HTTP Method', value: String(row.http_method || 'N/A') },\n { label: 'Request URI', value: String(row.resource || 'N/A') },\n { label: 'Response Code', value: String(row.response_code || 'N/A') },\n { label: 'Server Instance', value: String(window.location.hostname || 'N/A') },\n { label: 'User Agent', value: String(row.parsedAttributes?.user_agent || row.user_agent || 'N/A') },\n ];\n\n downloadPdfHook({\n columns: [\"Field\", \"Value\"],\n keys: [\"label\", \"value\"],\n data: details,\n fileName: `AuditLog_Detail_${row.id || new Date().getTime()}`,\n headerText: `Security Audit Log - Entry #${row.id || ''}`,\n footerText: `Generated on ${new Date().toLocaleString()}`,\n orientation: \"portrait\"\n });\n };\n\n const renderDetails = (row) => {\n if (!row) return null;\n \n const fields = [\n { label: 'Event Timestamp', value: dayjs(row.timestamp).format(\"DD/MM/YYYY hh:mm:ss A\"), key: 'timestamp' },\n { label: 'Event Category', value: row.event_category, key: 'event_category' },\n { label: 'Event Type', value: row.event_type, key: 'event_type' },\n { label: 'Severity', value: row.severity, key: 'severity' },\n { label: 'User ID', value: row.user_id, key: 'user_id' },\n { label: 'Username', value: row.parsedAttributes?.user_name, key: 'username' },\n { label: 'Name', value: row.parsedAttributes?.name, key: 'name' },\n { label: 'Role ID', value: row.parsedAttributes?.role_id, key: 'role_id' },\n { label: 'Role Name', value: row.parsedAttributes?.role_name, key: 'role_name' },\n { label: 'Role Code', value: row.parsedAttributes?.role_code, key: 'role_code' },\n { label: 'IP Address', value: row.parsedAttributes?.ip || row.ip_address || 'N/A', key: 'ip_address' },\n { label: 'Session ID', value: row.session_id || 'N/A', key: 'session_id' },\n { label: 'HTTP Method', value: row.http_method, key: 'http_method' },\n { label: 'Resource', value: row.resource, key: 'resource' },\n { label: 'Response Code', value: row.response_code, key: 'response_code' },\n ];\n\n const formatDetails = (val) => {\n if (!val) return 'N/A';\n try {\n return JSON.stringify(typeof val === 'string' ? JSON.parse(val) : val, null, 2);\n } catch(e) {\n return String(val);\n }\n }\n\n return (\n <Grid container spacing={2}>\n <Grid size={6}>\n <DetailItem label=\"Event Category\" value={row.event_category} />\n </Grid>\n <Grid size={6}>\n <DetailItem label=\"Event Type\" value={row.event_type} />\n </Grid>\n \n <Grid size={6}>\n <DetailItem label=\"User ID\" value={row.user_id} />\n </Grid>\n <Grid size={6}>\n <DetailItem label=\"Username\" value={row.parsedAttributes?.user_name || 'N/A'} />\n </Grid>\n\n <Grid size={6}>\n <DetailItem label=\"Name\" value={row.parsedAttributes?.name || 'N/A'} />\n </Grid>\n <Grid size={6}>\n <DetailItem label=\"Role ID\" value={row.parsedAttributes?.role_id || 'N/A'} />\n </Grid>\n <Grid size={6}>\n <DetailItem label=\"Role Name\" value={row.parsedAttributes?.role_name || 'N/A'} />\n </Grid>\n\n <Grid size={6}>\n <DetailItem label=\"Role Code\" value={row.parsedAttributes?.role_code || 'N/A'} />\n </Grid>\n <Grid size={6}>\n <DetailItem label=\"HTTP Method\" value={row.http_method} />\n </Grid>\n <Grid size={6}>\n <DetailItem label=\"Resource\" value={row.resource} />\n </Grid>\n\n <Grid size={6}>\n <DetailItem label=\"Response Code\" value={row.response_code} />\n </Grid>\n <Grid size={6}>\n <DetailItem label=\"Severity\" value={row.severity} />\n </Grid>\n\n <Grid size={6}>\n <DetailItem label=\"IP Address\" value={row.parsedAttributes?.ip || row.ip_address || 'N/A'} />\n </Grid>\n <Grid size={6}>\n <DetailItem label=\"Timestamp\" value={dayjs(row.timestamp).format(\"DD/MM/YYYY hh:mm:ss A\")} />\n </Grid>\n\n <Grid size={12}>\n <DetailItem label=\"Session ID\" value={row.session_id || 'N/A'} />\n </Grid>\n <Grid size={12}>\n <DetailItem label=\"User Agent\" value={row.parsedAttributes?.user_agent || row.user_agent || 'N/A'} />\n </Grid>\n </Grid>\n );\n };\n\n const DetailItem = ({ label, value, isCode }) => (\n <Box sx={{ mb: 1, borderBottom: `1px solid ${theme.palette.divider}`, pb: 0.5 }}>\n <Typography variant=\"caption\" sx={{ color: theme.palette.text.secondary, textTransform: 'uppercase', fontWeight: 'bold', fontSize: '0.65rem' }}>\n {label}\n </Typography>\n <Typography \n variant=\"body2\" \n sx={{ \n color: theme.palette.text.primary, \n wordBreak: 'break-word', \n whiteSpace: isCode ? 'pre-wrap' : 'normal',\n fontFamily: isCode ? 'monospace' : 'inherit',\n fontSize: isCode ? '0.75rem' : '0.875rem'\n }}\n >\n {String(value || 'N/A')}\n </Typography>\n </Box>\n );\n\n return (\n <Grid className=\"w-[98%] mt-4\">\n <Grid\n container\n spacing={2}\n className=\"mb-4 justify-between items-center\"\n >\n <Grid size={{ xs: 12, md: 4 }}>\n <Typography\n variant=\"h6\"\n sx={{ fontWeight: 'bold', color: theme.palette.primary.main, textTransform: 'uppercase' }}\n >\n {translate(\"Security Audit Logs\")}\n </Typography>\n </Grid>\n\n <Grid size={{ xs: 12, md: 8 }} className=\"flex flex-col md:flex-row gap-3 justify-end items-center\">\n <div className=\"flex items-center gap-3 w-full md:w-auto\">\n <IconButton\n color=\"primary\"\n onClick={() => setRefreshToggle(prev => !prev)}\n className=\"rounded-xl border border-slate-200 dark:border-slate-800 shadow-sm\"\n sx={{\n backgroundColor: alpha(theme.palette.primary.main, 0.1),\n width: 40,\n height: 40,\n '&:hover': { backgroundColor: theme.palette.primary.main, color: 'white' }\n }}\n >\n <FontAwesomeIcon icon={faSync} className=\"text-sm\" />\n </IconButton>\n </div>\n <div className=\"flex items-center gap-3\">\n <div className={`flex items-center rounded-2xl p-1 shadow-sm transition-all border ${\n isDark ? \"bg-slate-900 border-slate-800\" : \"bg-white border-slate-200\"\n }`}>\n <button\n disabled={disablePdf || isLoading}\n onClick={handleDownloadPdf}\n className={`px-4 py-2 rounded-xl transition-all flex items-center gap-2 text-xs font-black uppercase tracking-wider ${\n isDark ? \"text-slate-400 hover:text-slate-100 hover:bg-slate-800\" : \"text-slate-600 hover:text-red-600 hover:bg-slate-50\"\n }`}\n >\n {disablePdf ? <CircularProgress size={14} sx={{ color: \"inherit\" }} /> : <FontAwesomeIcon icon={faFilePdf} />}\n Pdf\n </button>\n\n <button\n disabled={disableExcel || isLoading}\n onClick={downloadExcelData}\n className={`px-4 py-2 rounded-xl transition-all flex items-center gap-2 text-xs font-black uppercase tracking-wider ml-1 ${\n isDark ? \"bg-slate-800 text-slate-100 hover:bg-slate-700\" : \"bg-[#243A50] text-white hover:bg-[#1a2b3c]\"\n }`}\n >\n {disableExcel ? <CircularProgress size={14} sx={{ color: \"inherit\" }} /> : <FontAwesomeIcon icon={faFileExcel} />}\n Excel Data\n </button>\n </div>\n </div>\n </Grid>\n </Grid>\n\n <CustomizedTable\n columns={columns}\n tableData={logsData}\n actions={getActions}\n paginationConfig={{\n pagination: true,\n paginationType: \"infinite-scroll\",\n rowsPerPageInTable: pageSize,\n hasMore,\n loadMore: () => hasMore && fetchNextPage({ cancelRefetch: false }),\n }}\n isLoading={isLoading}\n handleSort={handleSort}\n />\n\n <SideOverlay\n title=\"Audit Filter\"\n resetButtonLabel=\"Reset\"\n onResetClick={resetFilter}\n FormBody={SecurityAuditLogFilterForm}\n handleOverlayState={handleOverlayState}\n overlayOpen={overlayOpen}\n dataTestId=\"security-audit-log-filter\"\n ModalProps={{\n sx: {\n '& .MuiDrawer-paper': {\n backgroundColor: theme.palette.background.paper,\n color: theme.palette.text.primary,\n '& .p-2\\\\.5': { \n backgroundColor: theme.palette.background.paper,\n borderBottom: `1px solid ${theme.palette.divider}`,\n color: theme.palette.primary.main,\n fontWeight: 'bold',\n letterSpacing: '1px'\n }\n }\n }\n }}\n formProps={{\n filter,\n setFilter,\n handleOverlayState\n }}\n />\n \n <Dialog \n open={detailsModalOpen} \n onClose={() => setDetailsModalOpen(false)} \n maxWidth=\"sm\" \n fullWidth\n PaperProps={{\n sx: {\n backgroundColor: theme.palette.background.paper, \n color: theme.palette.text.primary\n }\n }}\n >\n <DialogTitle sx={{ borderBottom: `1px solid ${theme.palette.divider}`, fontWeight: 'bold', color: theme.palette.primary.main }}>\n Log Entry Details\n </DialogTitle>\n <DialogContent dividers sx={{ borderColor: theme.palette.divider }}>\n <Box className=\"p-2\">\n {renderDetails(selectedRow)}\n </Box>\n </DialogContent>\n <Box sx={{ p: 2, display: 'flex', justifyContent: 'flex-end', gap: 2 }}>\n <Button \n onClick={() => handleDownloadRowPdf(selectedRow)} \n variant=\"outlined\" \n color=\"primary\" \n startIcon={<FontAwesomeIcon icon={faFilePdf} />}\n sx={{ borderRadius: '12px' }}\n >\n Download PDF\n </Button>\n <Button onClick={() => setDetailsModalOpen(false)} variant=\"contained\" color=\"primary\" sx={{ borderRadius: '12px' }}>\n Close\n </Button>\n </Box>\n </Dialog>\n </Grid>\n );\n}\n"],"names":["SecurityAuditLogFilterForm","filter","setFilter","handleOverlayState","translate","useTranslateProvider","theme","useTheme","isDark","localFilter","setLocalFilter","useState","showCalendar","setShowCalendar","dateRange","setDateRange","useEffect","handleDateChange","ranges","selection","startStr","formatDate","endStr","prev","date","d","getDisplayRange","start","end","handleInputChange","field","value","applyFilters","textFieldStyles","alpha","jsxs","Box","jsx","Typography","FontAwesomeIcon","faCalendar","DateRange","TextField","e","Button","faSearch","SecurityAuditLogList","getTimeAgo","timestamp","now","moment","past","duration","years","months","days","hours","minutes","seconds","result","useTrackEvent","refreshToggle","setRefreshToggle","search","setSearch","debounceSearch","setDebounceSearch","logsData","setLogsData","hasMore","setHasMore","overlayOpen","setOverlayOpen","sortConfig","setSortConfig","pageSize","isLoading","setIsLoading","detailsModalOpen","setDetailsModalOpen","selectedRow","setSelectedRow","timer","columns","useMemo","row","Tooltip","dayjs","getActions","useCallback","faEye","faChartLine","baseUrl","attrs","attrsEncoded","url","showToast","handleSort","column","newOrder","resetFilter","loadMoreData","pageParam","initialLoad","params","response","execute","parsedResults","_a","parsedAttrs","error","pageData","fetchNextPage","hasNextPage","usePagination","isInitial","allLogs","disableExcel","setDisableExcel","downloadExcelData","s2ab","s","buf","view","i","wsData","log","index","_b","_c","_d","_e","worksheet","XLSX.utils","workbook","wbout","XLSX.write","saveAs","downloadPdfHook","useDownloadPdf","disablePdf","setDisablePdf","handleDownloadPdf","pdfColumns","pdfKeys","leanData","handleDownloadRowPdf","details","_f","_g","renderDetails","Grid","DetailItem","_h","_i","_j","_k","_l","_m","label","isCode","IconButton","faSync","CircularProgress","faFilePdf","faFileExcel","CustomizedTable","SideOverlay","Dialog","DialogTitle","DialogContent"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TableDetails-DztbjsIA.js","sources":["../src/views/Mobile/EntityManagement/TableDetails.jsx"],"sourcesContent":["import { execute } from \"@/common/services/QueryBuilder\";\nimport { showToast } from \"@/common/toaster/toaster\";\nimport { useDebounceFn } from \"@/hooks/useDebounceFn\";\nimport CustomConfirmationModal from \"@/views/custom-components/CustomConfirmationModal\";\nimport CustomTextField from \"@/views/custom-components/CustomTextField\";\nimport FontAwesomeIcons from \"@/common/fontAwesomeIcons/FontAwesomeIcons\";\nimport Editor from \"@monaco-editor/react\";\nimport {\n Autocomplete,\n Button,\n FormControl,\n FormControlLabel,\n IconButton,\n InputAdornment,\n Modal,\n Paper,\n Popover,\n Radio,\n RadioGroup,\n Switch,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TableRow,\n TextField,\n Tooltip,\n Typography,\n Checkbox,\n} from \"@mui/material\";\nimport Grid from \"@mui/material/Grid2\";\nimport { Box } from \"@mui/system\";\nimport PropTypes from \"prop-types\";\nimport React, { useEffect, useState } from \"react\";\nimport { Controller, useForm, useWatch } from \"react-hook-form\";\nimport { useSelector } from \"react-redux\";\nexport default function TableDetails({\n tableInfo,\n table,\n isEditMode,\n updateEditMode,\n tableCompleteInfo,\n reloadComponents,\n isCreateTableMode,\n isSyncTableMode,\n updateCreateTableMode,\n openDeleteModal,\n setOpenDeleteModal,\n generateRebuildScript,\n}) {\n const DOWNLOAD_TYPE_OPTIONS = [\n \"Document Master\",\n \"Form Configurator\",\n \"Form Media Record\",\n \"LMS\",\n ];\n const labelToCode = (label) => label?.toUpperCase().replace(/ /g, \"_\") || \"\";\n const codeToLabel = (code) =>\n DOWNLOAD_TYPE_OPTIONS.find((o) => labelToCode(o) === code) || \"\";\n\n const getNewDownloadType = (mc) => {\n if (mc?.downloadType)\n return codeToLabel(mc.downloadType) || mc.downloadType;\n if (mc?.data?.downloadType)\n return codeToLabel(mc.data.downloadType) || mc.data.downloadType;\n return \"\";\n };\n const getNewApiEndpoint = (mc) => {\n const flat = mc?.downloadUrl;\n if (typeof flat === \"object\" && flat !== null)\n return flat.apiEndpoint || \"\";\n const nested = mc?.data?.downloadUrl;\n if (typeof nested === \"object\" && nested !== null)\n return nested.apiEndpoint || \"\";\n return \"\";\n };\n const getNewRequestParams = (mc) => {\n const flat = mc?.downloadUrl;\n if (typeof flat === \"object\" && flat !== null)\n return flat.requestParameters || [];\n const nested = mc?.data?.downloadUrl;\n if (typeof nested === \"object\" && nested !== null)\n return nested.requestParameters || [];\n return [];\n };\n\n const [allColumns, setAllColumns] = useState([]);\n const [modalOpen, setModalOpen] = useState(false);\n const [migrationScript, setMigrationScript] = useState(\"\");\n const [formData, setFormData] = useState({});\n const [searchColumn, setSearchColumn] = useState(\"\");\n const [syncedFilteredCols, setSyncedFilteredCols] = useState([]);\n const [filteredCols, setFilteredCols] = useState([]);\n const [colTabValue, setColTabValue] = useState(0);\n const [queryTabValue, setQueryTabValue] = useState(0);\n const [anchorEl, setAnchorEl] = useState(null);\n const [editColumnIndex, setEditColumnIndex] = useState(null);\n const [migrationVersions, setMigrationVersions] = useState({});\n const [requestParams, setRequestParams] = useState(\n !isCreateTableMode\n ? getNewRequestParams(tableInfo?.mediaConfiguration)\n : [],\n );\n\n const popOverOpen = Boolean(anchorEl);\n const id = popOverOpen ? \"simple-popover\" : undefined;\n\n const columnTypeOptions = [\"TEXT\", \"INTEGER\"];\n\n const loggedInUser = useSelector((state) => {\n return state.Authenticate.user.id;\n });\n const defaultValues = {\n selectedColumns: !isCreateTableMode ? [...tableInfo.columnInfo] : [],\n modifiedOnQuery: !isCreateTableMode ? tableInfo.modifiedOnQuery : \"\",\n dataFetchQuery: !isCreateTableMode ? tableInfo.selectQuery : \"\",\n tableName: \"\",\n createTableQuery: \"\",\n syncByDefault: !isCreateTableMode\n ? tableInfo?.syncByDefault?.toString()\n : null,\n primaryKey: !isCreateTableMode\n ? tableInfo.primaryKey\n ? tableInfo.primaryKey\n : null\n : null,\n userData: !isCreateTableMode\n ? tableInfo?.userData?.toString() || null\n : null,\n hasMedia: !isCreateTableMode\n ? tableInfo?.hasMedia?.toString() || null\n : null,\n downloadType: !isCreateTableMode\n ? getNewDownloadType(tableInfo.mediaConfiguration)\n : \"\",\n apiEndpoint: !isCreateTableMode\n ? getNewApiEndpoint(tableInfo.mediaConfiguration)\n : \"\",\n requestParameters: !isCreateTableMode\n ? getNewRequestParams(tableInfo.mediaConfiguration)\n : [],\n directoryPath: !isCreateTableMode\n ? tableInfo.mediaConfiguration?.directoryPath?.split(\"/\")[1] ||\n tableInfo.mediaConfiguration?.data?.directoryPath?.split(\"/\")[1] ||\n \"\"\n : \"\",\n };\n const formCtrl = useForm({\n defaultValues: {\n ...defaultValues,\n },\n mode: \"onChange\",\n });\n const isFormValid = !formCtrl.formState.isValid;\n const hasMediaVal = formCtrl.watch(\"hasMedia\");\n const newColumnNameVal = formCtrl.watch(\"newColumnName\");\n const newColumnTypeVal = formCtrl.watch(\"newColumnType\");\n\n formCtrl.register(\"requestParameters\", {\n validate: (value) => {\n if (hasMediaVal !== \"true\") return true;\n if (!value || value.length === 0)\n return \"At least one request parameter is required.\";\n const hasIncomplete = value.some(\n (p) => !p.key?.trim() || !p.value?.trim(),\n );\n if (hasIncomplete)\n return \"Each parameter must have both a key and a value filled.\";\n return true;\n },\n });\n\n const onSubmit = async (data) => {\n const script = isCreateTableMode\n ? formCtrl.getValues(\"createTableQuery\")\n : await createScript(\n [...tableInfo.columnInfo],\n data.selectedColumns,\n tableInfo.primaryKey,\n data.primaryKey?.toString(),\n );\n if (script) {\n setFormData(() => data);\n setMigrationScript(() => script);\n getMigrationVersion();\n setModalOpen(true);\n } else {\n saveForm(data, false);\n }\n };\n\n const saveForm = async (data, migrationRequired) => {\n const columns = {};\n let response;\n let entity = data || formData;\n if (!migrationRequired) setMigrationScript(\"\");\n if (Object.keys(entity).length > 0) {\n entity.selectedColumns.forEach((col) => {\n columns[col.name] = col.type;\n });\n entity.columns = JSON.stringify(columns);\n entity.primaryKey = entity.primaryKey?.toString();\n let mediaConfig = {\n downloadType: labelToCode(entity.downloadType),\n downloadUrl: {\n apiEndpoint: entity.apiEndpoint || \"\",\n requestParameters: requestParams || [],\n },\n directoryPath: \"#directoryPath#/\" + entity.directoryPath + \"/\",\n };\n mediaConfig = JSON.stringify(mediaConfig);\n try {\n response = (\n await execute({\n code: \"update_mobile_entity\",\n parameters: {\n tableName:\n (isCreateTableMode ? formCtrl.getValues(\"tableName\") : table) ||\n \"\",\n syncByDefault: entity.syncByDefault === \"true\",\n columnInfo: entity.columns || \"\",\n primaryKey: entity.primaryKey || \"\",\n modifiedOnQuery: entity.modifiedOnQuery || \"\",\n selectQuery: entity.dataFetchQuery || \"\",\n userData: entity.userData === \"true\",\n hasMedia: entity.hasMedia === \"true\",\n mediaConfiguration:\n entity.hasMedia === \"true\" ? mediaConfig : null,\n modifiedBy: loggedInUser || \"\",\n isUpdate: true,\n },\n })\n ).data;\n\n if (response?.result && migrationRequired && migrationScript) {\n const migrationRes = (\n await execute({\n code: \"INSERT_MOBILE_MIGRATION\",\n parameters: {\n migrationScript,\n modifiedBy: loggedInUser || \"\",\n generateMigration: true,\n },\n })\n ).data;\n\n if (migrationRes?.status === 0) {\n showToast({\n message: `Migration insertion failed: ${migrationRes?.message}`,\n type: \"error\",\n });\n }\n }\n } catch (error) {\n showToast({\n message: `Submission failure ${error}`,\n type: \"error\",\n });\n }\n } else {\n try {\n response = (\n await execute({\n code: \"update_mobile_entity\",\n parameters: {\n tableName:\n (isCreateTableMode ? formCtrl.getValues(\"tableName\") : table) ||\n \"\",\n syncByDefault: false,\n columnInfo: \"\",\n primaryKey: \"\",\n modifiedOnQuery: \"\",\n selectQuery: \"\",\n userData: false,\n hasMedia: false,\n mediaConfiguration: null,\n modifiedBy: loggedInUser || \"\",\n isUpdate: false,\n },\n })\n ).data;\n\n if (response?.result && migrationScript) {\n const migrationRes = (\n await execute({\n code: \"INSERT_MOBILE_MIGRATION\",\n parameters: {\n migrationScript,\n modifiedBy: loggedInUser || \"\",\n generateMigration: true,\n },\n })\n ).data;\n\n if (migrationRes?.status === 0) {\n showToast({\n message: `Migration insertion failed: ${migrationRes?.message}`,\n type: \"error\",\n });\n }\n }\n } catch (error) {\n showToast({\n message: `Submission failure ${error}`,\n type: \"error\",\n });\n }\n }\n if (response?.result) {\n updateEditMode(false);\n updateCreateTableMode(false);\n reloadComponents((prev) => !prev);\n showToast({\n message: \"Table configuration saved successfully!\",\n type: \"success\",\n });\n }\n setModalOpen(false);\n };\n\n const handleModalClose = () => {\n setModalOpen(false);\n };\n\n const createScript = async (\n previousColumns,\n newColumns,\n oldPrimaryKey,\n newPrimaryKey,\n ) => {\n let tableScript = \"\";\n\n if (previousColumns.length > 0) {\n const previousColumnsMap = Object.fromEntries(\n previousColumns.map((col) => [col.name, col.type]),\n );\n const newColumnsMap = Object.fromEntries(\n newColumns.map((col) => [col.name, col.type]),\n );\n\n const previousColumnsNames = Object.keys(previousColumnsMap);\n const newColumnsNames = Object.keys(newColumnsMap);\n\n const droppedColumns = previousColumns.filter(\n (col) => !newColumnsNames.includes(col.name),\n );\n const addedColumns = newColumns.filter(\n (col) => !previousColumnsNames.includes(col.name),\n );\n\n // Detect columns that exist in both old and new but with a different type\n const modifiedColumns = previousColumns.filter((col) => {\n const newType = newColumnsMap[col.name];\n return newType !== undefined && newType !== col.type;\n });\n\n const dropColumnSql = droppedColumns\n .map((col) => `ALTER TABLE ${table} DROP COLUMN ${col.name};`)\n .join(\"\\n\");\n const addColumnSql = addedColumns\n .map(\n (col) => `ALTER TABLE ${table} ADD COLUMN ${col.name} ${col.type};`,\n )\n .join(\"\\n\");\n\n let modifyColumnSql = \"\";\n\n if (modifiedColumns.length > 0) {\n modifyColumnSql = generateRebuildScript(\n table,\n {\n columnInfo: previousColumns,\n primaryKey: oldPrimaryKey,\n },\n {\n columnInfo: newColumns,\n primaryKey: newPrimaryKey,\n },\n );\n }\n if (modifyColumnSql) {\n return modifyColumnSql.trim();\n }\n\n if (dropColumnSql) tableScript += `${dropColumnSql}\\n`;\n if (addColumnSql) tableScript += `${addColumnSql}\\n`;\n\n return tableScript.trim();\n } else {\n const tableName = isCreateTableMode\n ? formCtrl.getValues(\"tableName\")\n : table;\n tableScript = `CREATE TABLE ${tableName} (\\n`;\n\n tableScript += newColumns\n .map((col) => `${col.name} ${col.type}`)\n .join(\",\\n\");\n\n if (newPrimaryKey) {\n tableScript += `,\\nCONSTRAINT ${tableName}_pkey PRIMARY KEY (${newPrimaryKey})`;\n }\n\n tableScript += `);`;\n\n return tableScript;\n }\n };\n\n const getMigrationVersion = async () => {\n const res = (\n await execute({\n code: \"MFA_MIGRATION_MASTER_GET_LATEST_VERSIONS\",\n }).catch((error) => {\n showToast({\n message: `Failed to fetch migration versions ${error}`,\n type: \"error\",\n });\n })\n )?.data;\n setMigrationVersions(res?.result[0]);\n };\n\n useEffect(() => {\n setSearchColumn(\"\");\n setQueryTabValue(0);\n setColTabValue(0);\n\n if (isCreateTableMode) {\n setAllColumns([]);\n setSyncedFilteredCols([]);\n setFilteredCols([]);\n setRequestParams([]);\n formCtrl.reset({\n ...defaultValues,\n });\n // Trigger validation after reset so isValid updates\n setTimeout(() => formCtrl.trigger(), 0);\n }\n if (!!table && !!tableInfo && !isCreateTableMode) {\n tableCompleteInfo !== undefined\n ? setAllColumns(() => tableCompleteInfo.columnInfo)\n : setAllColumns(() => tableInfo.columnInfo);\n let allColumnsNames =\n tableCompleteInfo !== undefined\n ? tableCompleteInfo.columnInfo.map((col) => col.name)\n : tableInfo.columnInfo.map((col) => col.name);\n\n let tableCompleteInfoObj = {};\n\n tableCompleteInfo !== undefined\n ? tableCompleteInfo.columnInfo.forEach((item) => {\n tableCompleteInfoObj[item.name] = item.type;\n })\n : tableInfo.columnInfo.forEach((item) => {\n tableCompleteInfoObj[item.name] = item.type;\n });\n\n let tableInfoObj = {};\n\n tableInfo.columnInfo.forEach((item) => {\n tableInfoObj[item.name] = item.type;\n });\n\n tableInfo.columnInfo.map((col) => {\n if (!allColumnsNames.includes(col.name)) {\n col[\"onlyMobileDb\"] = true;\n }\n if (tableInfoObj[col.name] !== tableCompleteInfoObj[col.name]) {\n col[\"isTypeChanged\"] = true;\n }\n if (col.name === tableInfo.primaryKey) {\n col[\"isPrimaryKey\"] = true;\n }\n });\n formCtrl.reset({\n ...defaultValues,\n });\n // Trigger validation after reset so isValid reflects current state\n setTimeout(() => formCtrl.trigger(), 0);\n setRequestParams(getNewRequestParams(tableInfo?.mediaConfiguration));\n setSyncedFilteredCols(() =>\n tableInfo.columnInfo.sort((a, b) => {\n if (a.name === tableInfo.primaryKey) {\n a.isPrimaryKey = true;\n return -1;\n }\n if (b.name === tableInfo.primaryKey) {\n b.isPrimaryKey = true;\n return 1;\n }\n return a.name.localeCompare(b.name);\n }),\n );\n\n tableCompleteInfo !== undefined\n ? setFilteredCols(() => {\n const syncedNames = new Set(\n tableInfo.columnInfo.map((col) => col.name),\n );\n\n const updatedCols = tableCompleteInfo.columnInfo.map((col) => ({\n ...col,\n isSynced: syncedNames.has(col.name),\n }));\n\n return updatedCols.sort((a, b) => {\n if (a.name === tableInfo.primaryKey) return -1;\n if (b.name === tableInfo.primaryKey) return 1;\n return a.name.localeCompare(b.name);\n });\n })\n : setFilteredCols([]);\n }\n }, [tableInfo, tableCompleteInfo, table, isCreateTableMode]);\n useEffect(() => {\n const searchValue = searchColumn.toLowerCase();\n\n if (colTabValue === 0) {\n const allSynced = formCtrl.getValues(\"selectedColumns\");\n const filtered = searchValue\n ? allSynced.filter((col) =>\n col.name.toLowerCase().includes(searchValue),\n )\n : allSynced;\n\n setSyncedFilteredCols(filtered);\n } else {\n const syncedNames = new Set(\n formCtrl.getValues(\"selectedColumns\").map((col) => col.name),\n );\n const filtered = searchValue\n ? allColumns\n .filter((col) => col.name.toLowerCase().includes(searchValue))\n .map((col) => ({\n ...col,\n isSynced: syncedNames.has(col.name),\n }))\n : allColumns.map((col) => ({\n ...col,\n isSynced: syncedNames.has(col.name),\n }));\n\n setFilteredCols(filtered);\n }\n }, [searchColumn, colTabValue]);\n const watchedTableName = useWatch({\n control: formCtrl.control,\n name: \"tableName\",\n });\n\n useEffect(() => {\n if (\n isCreateTableMode &&\n formCtrl.getValues(\"selectedColumns\").length > 0 &&\n watchedTableName\n ) {\n updateCreateTableScript(formCtrl.getValues(\"selectedColumns\"));\n }\n }, [watchedTableName]);\n\n const handleEditorChange = (value) => {\n setMigrationScript(value);\n };\n const onCancel = () => {\n if (isEditMode) {\n updateEditMode(!isEditMode);\n }\n if (isCreateTableMode) {\n updateCreateTableMode(!isCreateTableMode);\n }\n formCtrl.reset({\n ...defaultValues,\n newColumnName: null,\n newColumnType: null,\n });\n setRequestParams(defaultValues.requestParameters || []);\n setSyncedFilteredCols(defaultValues.selectedColumns || []);\n\n const syncedNames = new Set(\n (defaultValues.selectedColumns || []).map((col) => col.name),\n );\n setFilteredCols(\n (defaultValues.allColumns || []).map((col) => ({\n ...col,\n isSynced: syncedNames.has(col.name),\n })),\n );\n };\n\n const handleDelete = async () => {\n setOpenDeleteModal(() => false);\n const response = await execute({\n code: \"DELETE_MOBILE_ENTITY\",\n parameters: {\n tableName: table,\n },\n }).catch((error) => {\n showToast({\n message: `Metadata deletion failure ${error}`,\n type: \"error\",\n });\n });\n\n if (response?.data?.result?.[0]?.table_name) {\n showToast({ message: `${table} deleted successfully!`, type: \"success\" });\n }\n let dropTableSql = `DROP TABLE if exists ${table};`;\n setMigrationScript(() => dropTableSql);\n getMigrationVersion();\n setModalOpen(true);\n };\n\n const checkAvailability = async (name) => {\n const isValidFormat = /^[a-zA-Z_][a-zA-Z0-9_]*$/.test(name);\n if (name.trim().length === 0) {\n formCtrl.setError(\"newColumnName\", {\n type: \"manual\",\n message: \"*Column name is required. \",\n });\n return;\n }\n if (!isValidFormat) {\n formCtrl.setError(\"newColumnName\", {\n type: \"manual\",\n message:\n \"Must start with a letter/underscore and contain only letters, numbers, and underscores.\",\n });\n return;\n }\n if (\n filteredCols.some((col) => col.name === name) ||\n syncedFilteredCols.some((col) => col.name === name)\n ) {\n formCtrl.setError(\"newColumnName\", {\n type: \"manual\",\n message: \"Column name already exists in the table.\",\n });\n } else {\n formCtrl.clearErrors(\"newColumnName\");\n }\n };\n\n const debouncedCheckAvailability = useDebounceFn(checkAvailability, 500);\n\n const hasPrimaryKey = syncedFilteredCols.some(\n (col) => col.isPrimaryKey === true,\n );\n\n const updateCreateTableScript = async (columns) => {\n queryTabValue !== 2 && isCreateTableMode && setQueryTabValue(2);\n if (columns.length === 0) {\n formCtrl.setValue(\"createTableQuery\", \"\", { shouldDirty: true });\n return;\n }\n\n const newPrimaryKey = columns.find((c) => c.isPrimaryKey)?.name || \"\";\n const script = await createScript([], columns, \"\", newPrimaryKey);\n formCtrl.setValue(\"createTableQuery\", script, { shouldDirty: true });\n };\n\n return (\n <Grid\n size={9}\n sx={{\n maxHeight: \"88vh\",\n overflowY: \"auto\",\n overflowX: \"hidden\",\n }}\n >\n <Paper\n variant=\"outlined\"\n sx={{\n p: 2.5,\n borderRadius: 2.5,\n backgroundColor: \"background.paper\",\n }}\n >\n <form\n onSubmit={formCtrl.handleSubmit(onSubmit)}\n noValidate\n className=\"w-full\"\n >\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n mb: 2.5,\n pb: 2,\n borderBottom: \"1px solid\",\n borderColor: \"divider\",\n }}\n >\n <Box sx={{ flex: 1 }}>\n {!isCreateTableMode ? (\n <>\n <Typography\n variant=\"h6\"\n sx={{ fontWeight: 700, color: \"text.primary\" }}\n >\n {table ? table : \"No Table Selected\"}\n </Typography>\n <Typography variant=\"caption\" color=\"text.secondary\">\n {table\n ? \"View and manage table configuration\"\n : \"Select a table from the list\"}\n </Typography>\n </>\n ) : (\n <Box sx={{ maxWidth: 350 }}>\n <Typography\n variant=\"subtitle2\"\n sx={{ fontWeight: 600, mb: 0.5 }}\n >\n New Table\n </Typography>\n <CustomTextField\n control={formCtrl.control}\n id=\"tableName\"\n name=\"tableName\"\n errors={formCtrl.formState.errors}\n label=\"Table Name\"\n size=\"small\"\n rules={{\n required: {\n value: true,\n message: \"Please Enter the name\",\n },\n pattern: {\n value: /^[a-z0-9_]+$/,\n message:\n \"Only lowercase letters, numbers, and underscores are allowed\",\n },\n validate: {},\n }}\n />\n </Box>\n )}\n <CustomConfirmationModal\n description={\"Do you want to drop this table?\"}\n title={\"CONFIRMATION\"}\n open={openDeleteModal}\n handleClick={handleDelete}\n handleClose={() => setOpenDeleteModal((cur) => !cur)}\n />\n </Box>\n <Box sx={{ display: \"flex\", gap: 1 }}>\n {(isEditMode || isCreateTableMode) && (\n <Tooltip\n title={\n !hasPrimaryKey\n ? \"A primary key is required to proceed.\"\n : \"\"\n }\n arrow\n placement=\"bottom\"\n >\n <span>\n <Button\n type=\"submit\"\n variant=\"contained\"\n size=\"small\"\n sx={{\n borderRadius: 2,\n fontWeight: 600,\n textTransform: \"none\",\n boxShadow: \"none\",\n px: 2.5,\n }}\n disabled={isFormValid || !hasPrimaryKey}\n startIcon={<FontAwesomeIcons iconName=\"faCheck\" />}\n >\n Submit\n </Button>\n </span>\n </Tooltip>\n )}\n {(isEditMode || isCreateTableMode) && (\n <Button\n type=\"button\"\n variant=\"outlined\"\n onClick={() => onCancel()}\n size=\"small\"\n sx={{\n borderRadius: 2,\n fontWeight: 600,\n textTransform: \"none\",\n borderColor: \"divider\",\n color: \"text.secondary\",\n px: 2.5,\n \"&:hover\": {\n backgroundColor: \"action.hover\",\n borderColor: \"text.disabled\",\n },\n }}\n >\n Cancel\n </Button>\n )}\n </Box>\n </Box>\n <Grid container spacing={2}>\n <Grid size={7}>\n {/* Pill-style query tabs matching ManageAllForms */}\n <Box\n sx={{\n display: \"inline-flex\",\n gap: 0.75,\n p: 0.75,\n backgroundColor: \"action.hover\",\n borderRadius: 2.5,\n border: \"1px solid\",\n borderColor: \"divider\",\n mb: 2,\n }}\n >\n {[\n { value: 0, label: \"Modified On Query\", icon: \"faClock\" },\n { value: 1, label: \"Data Fetch Query\", icon: \"faDatabase\" },\n ...(isCreateTableMode\n ? [\n {\n value: 2,\n label: \"Create Table Query\",\n icon: \"faCode\",\n },\n ]\n : []),\n ].map((tab) => {\n const isActive = queryTabValue === tab.value;\n return (\n <Button\n key={tab.value}\n onClick={() => setQueryTabValue(tab.value)}\n size=\"small\"\n disableElevation\n sx={{\n px: 2,\n py: 0.6,\n borderRadius: 2,\n textTransform: \"none\",\n fontSize: \"0.8rem\",\n fontWeight: isActive ? 700 : 500,\n color: isActive ? \"primary.dark\" : \"text.secondary\",\n backgroundColor: isActive\n ? \"background.paper\"\n : \"transparent\",\n boxShadow: isActive\n ? \"0px 2px 6px rgba(0,0,0,0.06)\"\n : \"none\",\n border: \"1px solid\",\n borderColor: isActive ? \"divider\" : \"transparent\",\n transition: \"all 0.2s ease\",\n \"&:hover\": {\n backgroundColor: isActive\n ? \"background.paper\"\n : \"action.hover\",\n },\n }}\n startIcon={<FontAwesomeIcons iconName={tab.icon} />}\n >\n {tab.label}\n </Button>\n );\n })}\n </Box>\n {queryTabValue === 0 && (\n <Grid>\n <Typography variant=\"subtitle1\">\n Modified On Query:\n </Typography>\n <Controller\n name=\"modifiedOnQuery\"\n control={formCtrl.control}\n render={({ field, fieldState: { error } }) => (\n <>\n <Editor\n height=\"35vh\"\n defaultLanguage=\"sql\"\n theme=\"vs-dark\"\n options={{\n fontSize: 12,\n minimap: { enabled: false },\n automaticLayout: true,\n scrollBeyondLastLine: false,\n wordWrap: \"on\",\n occurrencesHighlight: false,\n selectionHighlight: false,\n readOnly: !isEditMode && !isCreateTableMode,\n }}\n value={field.value || \"\"}\n defaultValue={field.value || \"\"}\n onChange={field.onChange}\n editorProps={{ $blockScrolling: true }}\n />\n {error?.message && (\n <Typography\n variant=\"subtitle1\"\n color=\"error\"\n fontSize=\"13px\"\n className=\"mt-1 ml-[13px]\"\n >\n {error.message}\n </Typography>\n )}\n </>\n )}\n ></Controller>\n </Grid>\n )}\n {queryTabValue === 1 && (\n <Grid>\n <Typography variant=\"subtitle1\">Data Fetch Query:</Typography>\n <Controller\n name=\"dataFetchQuery\"\n control={formCtrl.control}\n render={({ field, fieldState: { error } }) => (\n <>\n <Editor\n height=\"35vh\"\n defaultLanguage=\"sql\"\n theme=\"vs-dark\"\n options={{\n fontSize: 12,\n minimap: { enabled: false },\n automaticLayout: true,\n scrollBeyondLastLine: false,\n wordWrap: \"on\",\n occurrencesHighlight: false,\n selectionHighlight: false,\n readOnly: !isEditMode && !isCreateTableMode,\n }}\n value={field.value || \"\"}\n defaultValue={field.value || \"\"}\n onChange={field.onChange}\n editorProps={{ $blockScrolling: true }}\n />\n {error?.message && (\n <Typography\n variant=\"subtitle1\"\n color=\"error\"\n fontSize=\"13px\"\n className=\"mt-1 ml-[13px]\"\n >\n {error.message}\n </Typography>\n )}\n </>\n )}\n ></Controller>\n </Grid>\n )}\n {queryTabValue === 2 && (\n <Grid>\n <Typography variant=\"subtitle1\">\n Create Table Query:\n </Typography>\n <Controller\n name=\"createTableQuery\"\n control={formCtrl.control}\n render={({ field, fieldState: { error } }) => (\n <>\n <Editor\n height=\"35vh\"\n defaultLanguage=\"sql\"\n theme=\"vs-dark\"\n options={{\n fontSize: 12,\n minimap: { enabled: false },\n automaticLayout: true,\n scrollBeyondLastLine: false,\n wordWrap: \"on\",\n occurrencesHighlight: false,\n selectionHighlight: false,\n readOnly: true,\n }}\n value={field.value || \"\"}\n defaultValue={field.value || \"\"}\n onChange={field.onChange}\n editorProps={{ $blockScrolling: true }}\n />\n {error?.message && (\n <Typography\n variant=\"subtitle1\"\n color=\"error\"\n fontSize=\"13px\"\n className=\"mt-1 ml-[13px]\"\n >\n {error.message}\n </Typography>\n )}\n </>\n )}\n ></Controller>\n </Grid>\n )}\n {/* ── Configuration Options Section ── */}\n <Paper\n variant=\"outlined\"\n sx={{\n p: 2,\n mt: 2,\n borderRadius: 2,\n backgroundColor: \"action.hover\",\n }}\n >\n <Typography\n variant=\"subtitle2\"\n sx={{ fontWeight: 700, mb: 1.5, color: \"text.primary\" }}\n >\n Table Settings\n </Typography>\n <Grid container spacing={2}>\n <Grid size={6} xs={12}>\n <Typography\n variant=\"body2\"\n sx={{ fontWeight: 600, mb: 0.5 }}\n >\n Data Scope <span style={{ color: \"#ef4444\" }}>*</span>\n </Typography>\n <FormControl>\n <Controller\n name=\"userData\"\n control={formCtrl.control}\n rules={{ required: \"Required field.\" }}\n disabled={!isEditMode && !isCreateTableMode}\n defaultValue={\n tableInfo.userData !== undefined &&\n tableInfo.userData !== null\n ? String(tableInfo.userData)\n : \"\"\n }\n render={({ field }) => (\n <RadioGroup row {...field} value={field.value}>\n <FormControlLabel\n value=\"true\"\n control={\n <Radio\n disabled={!isEditMode && !isCreateTableMode}\n size=\"small\"\n />\n }\n label={\n <Typography variant=\"body2\">User</Typography>\n }\n />\n <FormControlLabel\n value=\"false\"\n control={\n <Radio\n disabled={!isEditMode && !isCreateTableMode}\n size=\"small\"\n />\n }\n label={\n <Typography variant=\"body2\">System</Typography>\n }\n />\n </RadioGroup>\n )}\n />\n </FormControl>\n </Grid>\n <Grid size={6} xs={12}>\n <Typography\n variant=\"body2\"\n sx={{ fontWeight: 600, mb: 0.5 }}\n >\n Sync by Default{\" \"}\n <span style={{ color: \"#ef4444\" }}>*</span>\n </Typography>\n <FormControl>\n <Controller\n name=\"syncByDefault\"\n id=\"syncByDefault\"\n control={formCtrl.control}\n rules={{ required: \"Required field.\" }}\n disabled={!isEditMode && !isCreateTableMode}\n defaultValue={\n tableInfo.syncByDefault !== undefined &&\n tableInfo.syncByDefault !== null\n ? String(tableInfo.syncByDefault)\n : \"\"\n }\n render={({ field }) => (\n <RadioGroup row {...field} value={field.value}>\n <FormControlLabel\n value=\"true\"\n control={\n <Radio\n disabled={!isEditMode && !isCreateTableMode}\n size=\"small\"\n />\n }\n label={\n <Typography variant=\"body2\">Yes</Typography>\n }\n />\n <FormControlLabel\n value=\"false\"\n control={\n <Radio\n disabled={!isEditMode && !isCreateTableMode}\n size=\"small\"\n />\n }\n label={\n <Typography variant=\"body2\">No</Typography>\n }\n />\n </RadioGroup>\n )}\n />\n </FormControl>\n </Grid>\n <Grid size={6} xs={12}>\n <Typography\n variant=\"body2\"\n sx={{ fontWeight: 600, mb: 0.5 }}\n >\n Has Media <span style={{ color: \"#ef4444\" }}>*</span>\n </Typography>\n <FormControl>\n <Controller\n name=\"hasMedia\"\n id=\"hasMedia\"\n control={formCtrl.control}\n rules={{ required: \"Required field.\" }}\n disabled={!isEditMode && !isCreateTableMode}\n defaultValue={\n tableInfo.hasMedia !== undefined &&\n tableInfo.hasMedia !== null\n ? String(tableInfo.hasMedia)\n : \"\"\n }\n render={({ field }) => (\n <RadioGroup row {...field} value={field.value}>\n <FormControlLabel\n value=\"true\"\n control={\n <Radio\n disabled={!isEditMode && !isCreateTableMode}\n size=\"small\"\n />\n }\n label={\n <Typography variant=\"body2\">Yes</Typography>\n }\n />\n <FormControlLabel\n value=\"false\"\n control={\n <Radio\n disabled={!isEditMode && !isCreateTableMode}\n size=\"small\"\n />\n }\n label={\n <Typography variant=\"body2\">No</Typography>\n }\n />\n </RadioGroup>\n )}\n />\n </FormControl>\n </Grid>\n </Grid>\n </Paper>\n {hasMediaVal === \"true\" && (\n <>\n <Typography\n variant=\"h6\"\n className=\"mt-2\"\n sx={{ fontWeight: 600, color: \"#566A79\" }}\n >\n Media Configuration:\n </Typography>\n <Grid container spacing={2} className=\"mt-2\">\n <Grid size={6} xs={12}>\n <Typography\n variant=\"subtitle2\"\n sx={{ mb: 0.5, fontWeight: 600 }}\n >\n Download Type<span style={{ color: \"red\" }}>*</span>:\n </Typography>\n <Controller\n name=\"downloadType\"\n control={formCtrl.control}\n rules={{\n validate: (value) =>\n hasMediaVal !== \"true\" ||\n !!value ||\n \"Download Type is required.\",\n }}\n render={({\n field: { onChange, value },\n fieldState: { error },\n }) => (\n <Autocomplete\n options={DOWNLOAD_TYPE_OPTIONS}\n value={value || null}\n disabled={!isEditMode && !isCreateTableMode}\n onChange={(_, newValue) => onChange(newValue)}\n renderInput={(params) => (\n <TextField\n {...params}\n size=\"small\"\n placeholder=\"Select download type\"\n error={!!error}\n helperText={error?.message}\n />\n )}\n />\n )}\n />\n </Grid>\n\n <Grid size={12}>\n <Box\n sx={{\n border: \"1px solid #ddd\",\n borderRadius: \"8px\",\n p: 2,\n backgroundColor: \"#fafafa\",\n }}\n >\n <Typography\n variant=\"subtitle1\"\n sx={{ fontWeight: 600, mb: 1.5, color: \"#374151\" }}\n >\n Download URL\n </Typography>\n\n <Typography\n variant=\"subtitle2\"\n sx={{ mb: 0.5, fontWeight: 600 }}\n >\n API Endpoint<span style={{ color: \"red\" }}>*</span>:\n </Typography>\n <Controller\n name=\"apiEndpoint\"\n control={formCtrl.control}\n rules={{\n validate: (value) =>\n hasMediaVal !== \"true\" ||\n !!value?.trim() ||\n \"API Endpoint is required.\",\n }}\n render={({ field, fieldState: { error } }) => (\n <TextField\n {...field}\n value={field.value || \"\"}\n size=\"small\"\n variant=\"outlined\"\n fullWidth\n placeholder=\"https://api.example.com/endpoint\"\n error={!!error}\n helperText={error?.message}\n slotProps={{\n input: {\n readOnly: !isEditMode && !isCreateTableMode,\n },\n }}\n sx={{ mb: 2 }}\n />\n )}\n />\n\n <Box\n sx={{ display: \"flex\", alignItems: \"center\", mb: 1 }}\n >\n <Typography\n variant=\"subtitle2\"\n sx={{ fontWeight: 600, color: \"#374151\", flex: 1 }}\n >\n Request Parameters\n <span style={{ color: \"red\" }}>*</span>:\n </Typography>\n {(isEditMode || isCreateTableMode) && (\n <Tooltip title=\"Add parameter\" arrow>\n <IconButton\n size=\"small\"\n onClick={() => {\n const newParams = [\n ...requestParams,\n { key: \"\", value: \"\" },\n ];\n setRequestParams(newParams);\n formCtrl.setValue(\n \"requestParameters\",\n newParams,\n {\n shouldDirty: true,\n shouldValidate: true,\n },\n );\n }}\n sx={{\n backgroundColor: \"#566A79\",\n color: \"white\",\n \"&:hover\": { backgroundColor: \"#3d4f5c\" },\n borderRadius: \"6px\",\n width: \"28px\",\n height: \"28px\",\n }}\n >\n <FontAwesomeIcons\n iconName=\"faPlus\"\n className=\"text-[0.75rem]\"\n />\n </IconButton>\n </Tooltip>\n )}\n </Box>\n\n {requestParams.length === 0 && (\n <Typography\n variant=\"caption\"\n sx={{ color: \"#9ca3af\", fontStyle: \"italic\" }}\n >\n No request parameters added.\n </Typography>\n )}\n\n {requestParams.map((param, index) => (\n <Box\n key={index}\n sx={{\n display: \"flex\",\n gap: 1,\n alignItems: \"flex-start\",\n mb: 1,\n p: 1,\n borderRadius: \"6px\",\n backgroundColor: \"#f0f4f8\",\n border: \"1px solid #e2e8f0\",\n }}\n >\n <TextField\n size=\"small\"\n label=\"Key\"\n value={param.key}\n placeholder=\"parameterKey\"\n disabled={!isEditMode && !isCreateTableMode}\n onChange={(e) => {\n const updated = requestParams.map((p, i) =>\n i === index\n ? { ...p, key: e.target.value }\n : p,\n );\n setRequestParams(updated);\n formCtrl.setValue(\n \"requestParameters\",\n updated,\n {\n shouldDirty: true,\n shouldValidate: true,\n },\n );\n }}\n sx={{ flex: 1 }}\n />\n\n <Autocomplete\n size=\"small\"\n options={syncedFilteredCols.map(\n (col) => col.name,\n )}\n value={param.value || null}\n disabled={!isEditMode && !isCreateTableMode}\n noOptionsText={\n syncedFilteredCols.length === 0\n ? \"No synced columns yet\"\n : \"No match\"\n }\n onChange={(_, newValue) => {\n const updated = requestParams.map((p, i) =>\n i === index\n ? { ...p, value: newValue || \"\" }\n : p,\n );\n setRequestParams(updated);\n formCtrl.setValue(\n \"requestParameters\",\n updated,\n {\n shouldDirty: true,\n shouldValidate: true,\n },\n );\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Value (Column)\"\n placeholder=\"Select column\"\n />\n )}\n sx={{ flex: 1 }}\n />\n\n {(isEditMode || isCreateTableMode) && (\n <Tooltip title=\"Remove parameter\" arrow>\n <IconButton\n size=\"small\"\n onClick={() => {\n const updated = requestParams.filter(\n (_, i) => i !== index,\n );\n setRequestParams(updated);\n formCtrl.setValue(\n \"requestParameters\",\n updated,\n {\n shouldDirty: true,\n shouldValidate: true,\n },\n );\n }}\n sx={{ color: \"#ef4444\", alignSelf: \"center\" }}\n >\n <FontAwesomeIcons\n iconName=\"faTrashCan\"\n className=\"text-[0.85rem]\"\n />\n </IconButton>\n </Tooltip>\n )}\n </Box>\n ))}\n\n {formCtrl.formState.errors.requestParameters && (\n <Typography\n variant=\"caption\"\n sx={{ color: \"#ef4444\", mt: 0.5, display: \"block\" }}\n >\n {\n formCtrl.formState.errors.requestParameters\n .message\n }\n </Typography>\n )}\n </Box>\n </Grid>\n\n <Grid size={6} xs={12}>\n <Typography\n variant=\"subtitle2\"\n sx={{ mb: 0.5, fontWeight: 600 }}\n >\n Directory Path<span style={{ color: \"red\" }}>*</span>:\n </Typography>\n <Controller\n name=\"directoryPath\"\n control={formCtrl.control}\n defaultValue=\"\"\n rules={{\n validate: (value) =>\n hasMediaVal !== \"true\" ||\n (!!value?.trim() && value.trim().length > 0) ||\n \"Directory Path is required.\",\n }}\n render={({ field, fieldState: { error } }) => (\n <TextField\n {...field}\n size=\"small\"\n variant=\"outlined\"\n fullWidth\n error={!!error}\n helperText={error?.message}\n slotProps={{\n input: {\n readOnly: !isEditMode && !isCreateTableMode,\n startAdornment: (\n <InputAdornment position=\"start\">\n #directoryPath#/\n </InputAdornment>\n ),\n endAdornment: (\n <InputAdornment position=\"end\">\n /\n </InputAdornment>\n ),\n },\n }}\n />\n )}\n />\n </Grid>\n </Grid>\n </>\n )}\n </Grid>\n <Grid size={5}>\n <Paper\n variant=\"outlined\"\n sx={{ px: 2, borderRadius: 2.5, height: \"100%\", mb: 1 }}\n >\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n flexWrap: \"wrap\",\n gap: 1,\n pt: 1.5,\n }}\n >\n {/* Pill-style column tabs */}\n <Box\n sx={{\n display: \"inline-flex\",\n gap: 0.5,\n p: 0.5,\n backgroundColor: \"action.hover\",\n borderRadius: 2,\n border: \"1px solid\",\n borderColor: \"divider\",\n mb: 1,\n }}\n >\n {!isCreateTableMode && (\n <Button\n size=\"small\"\n onClick={() => {\n setColTabValue(0);\n setSearchColumn(\"\");\n }}\n sx={{\n px: 1.5,\n py: 0.4,\n borderRadius: 1.5,\n textTransform: \"none\",\n fontSize: \"0.78rem\",\n fontWeight: colTabValue === 0 ? 700 : 500,\n color:\n colTabValue === 0\n ? \"primary.dark\"\n : \"text.secondary\",\n backgroundColor:\n colTabValue === 0\n ? \"background.paper\"\n : \"transparent\",\n boxShadow:\n colTabValue === 0\n ? \"0px 1px 4px rgba(0,0,0,0.06)\"\n : \"none\",\n border: \"1px solid\",\n borderColor:\n colTabValue === 0 ? \"divider\" : \"transparent\",\n \"&:hover\": {\n backgroundColor:\n colTabValue === 0\n ? \"background.paper\"\n : \"action.hover\",\n },\n }}\n >\n Synced Columns\n </Button>\n )}\n {tableCompleteInfo !== undefined && (\n <Button\n size=\"small\"\n onClick={() => {\n setColTabValue(1);\n setSearchColumn(\"\");\n }}\n sx={{\n px: 1.5,\n py: 0.4,\n borderRadius: 1.5,\n textTransform: \"none\",\n fontSize: \"0.78rem\",\n fontWeight: colTabValue === 1 ? 700 : 500,\n color:\n colTabValue === 1\n ? \"primary.dark\"\n : \"text.secondary\",\n backgroundColor:\n colTabValue === 1\n ? \"background.paper\"\n : \"transparent\",\n boxShadow:\n colTabValue === 1\n ? \"0px 1px 4px rgba(0,0,0,0.06)\"\n : \"none\",\n border: \"1px solid\",\n borderColor:\n colTabValue === 1 ? \"divider\" : \"transparent\",\n \"&:hover\": {\n backgroundColor:\n colTabValue === 1\n ? \"background.paper\"\n : \"action.hover\",\n },\n }}\n >\n {!isCreateTableMode ? \"DB Columns\" : \"Columns\"}\n </Button>\n )}\n </Box>\n {colTabValue === 0 &&\n syncedFilteredCols.length > 0 &&\n isSyncTableMode && (\n <Box sx={{ minWidth: 200, marginLeft: 2 }}>\n <Autocomplete\n size=\"small\"\n options={syncedFilteredCols.map((col) => col.name)}\n value={formCtrl.getValues(\"primaryKey\") || \"\"}\n readOnly={!isEditMode && !isCreateTableMode}\n onChange={(_, newValue) => {\n const updatedCols = syncedFilteredCols.map(\n (col) => ({\n ...col,\n isPrimaryKey: col.name === newValue,\n }),\n );\n setSyncedFilteredCols(updatedCols);\n formCtrl.setValue(\"selectedColumns\", updatedCols, {\n shouldDirty: true,\n });\n formCtrl.setValue(\"primaryKey\", newValue);\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Primary Key\"\n placeholder=\"Select column\"\n />\n )}\n renderOption={(props, option) => (\n <li {...props}>\n <Tooltip title={option} placement=\"left\" arrow>\n <span className=\"truncate max-w-[250px]\">\n {option}\n </span>\n </Tooltip>\n </li>\n )}\n />\n </Box>\n )}\n\n {(isCreateTableMode || isEditMode) && (\n <Button\n id=\"edit-button-anchor\"\n size=\"small\"\n variant=\"contained\"\n sx={{\n borderRadius: 2,\n fontWeight: 600,\n textTransform: \"none\",\n boxShadow: \"none\",\n px: 1.5,\n ml: 1,\n }}\n disabled={!!formCtrl.formState.errors.tableName}\n onClick={async (e) => {\n const target = e.currentTarget;\n const isValid = await formCtrl.trigger(\"tableName\");\n if (!isValid) return;\n setEditColumnIndex(null);\n setAnchorEl(target);\n }}\n startIcon={<FontAwesomeIcons iconName={\"faPlus\"} />}\n >\n Column\n </Button>\n )}\n {(isCreateTableMode || isEditMode) && (\n <Popover\n id={id}\n open={popOverOpen}\n anchorEl={anchorEl}\n onClose={async () => {\n setAnchorEl(null);\n formCtrl.setValue(\"newColumnName\", \"\");\n formCtrl.setValue(\"newColumnType\", null);\n formCtrl.setValue(\"isPrimaryKey\", false);\n formCtrl.clearErrors([\n \"newColumnName\",\n \"newColumnType\",\n ]);\n setEditColumnIndex(null);\n }}\n anchorOrigin={{\n vertical: \"bottom\",\n horizontal: \"left\",\n }}\n >\n <Grid\n container\n spacing={1}\n sx={{\n p: 1,\n width: \"200px\",\n height: !formCtrl\n .getValues(\"selectedColumns\")\n ?.some((col) => col.isPrimaryKey)\n ? \"210px\"\n : \"180px\",\n }}\n >\n <Grid size={12} className=\"h-fit\">\n <FormControl fullWidth>\n <Controller\n name=\"newColumnName\"\n id=\"newColumnName\"\n control={formCtrl.control}\n render={({\n field: { onChange, value, ...field },\n fieldState: { error },\n }) => (\n <TextField\n {...field}\n value={value?.trim() || \"\"}\n variant=\"outlined\"\n fullWidth\n size=\"small\"\n error={!!error}\n helperText={error?.message}\n label=\"Column Name\"\n sx={{\n \"& .MuiInputLabel-root\": {\n fontSize: \"0.9rem\",\n },\n margin: 0,\n }}\n onChange={(e) => {\n onChange(e.target.value);\n debouncedCheckAvailability(e.target.value);\n }}\n />\n )}\n />\n </FormControl>\n </Grid>\n <Grid size={12} className=\"h-fit\">\n <FormControl fullWidth>\n <Controller\n name=\"newColumnType\"\n id=\"newColumnType\"\n control={formCtrl.control}\n render={({\n field: { onChange, value },\n fieldState: { error },\n }) => (\n <Autocomplete\n options={columnTypeOptions || []}\n value={value?.trim() || null}\n getOptionLabel={(option) => option}\n onChange={(event, newValue) => {\n onChange(newValue);\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n size=\"small\"\n error={!!error}\n helperText={error?.message}\n sx={{\n \"& .MuiInputLabel-root\": {\n fontSize: \"0.9rem\",\n },\n m: 0,\n }}\n label=\"Column Type\"\n onChange={(e) => {\n onChange(e.target.value);\n formCtrl.setValue(\n \"newColumnType\",\n e.target.value,\n {\n shouldDirty: true,\n },\n );\n }}\n />\n )}\n />\n )}\n />\n </FormControl>\n </Grid>\n {editColumnIndex === null &&\n !formCtrl\n .getValues(\"selectedColumns\")\n .some((col) => col.isPrimaryKey) && (\n <Grid size={12} className=\"h-fit\">\n <FormControlLabel\n control={\n <Controller\n name=\"isPrimaryKey\"\n control={formCtrl.control}\n render={({\n field: { onChange, value },\n }) => (\n <Checkbox\n checked={value || false}\n onChange={(e) =>\n onChange(e.target.checked)\n }\n sx={{\n margin: \"0px\",\n }}\n />\n )}\n />\n }\n label=\"Primary Key\"\n />\n </Grid>\n )}\n <Grid>\n <Button\n size=\"small\"\n variant=\"contained\"\n disabled={\n !newColumnNameVal ||\n !newColumnTypeVal ||\n newColumnNameVal.trim() === \"\" ||\n !columnTypeOptions.includes(\n newColumnTypeVal.trim(),\n )\n }\n onClick={async () => {\n const isPrimaryKey =\n formCtrl.getValues(\"isPrimaryKey\");\n const updatedName =\n formCtrl.getValues(\"newColumnName\");\n const updatedType =\n formCtrl.getValues(\"newColumnType\");\n\n const hasExistingPrimaryKey = formCtrl\n .getValues(\"selectedColumns\")\n .some((col) => col.isPrimaryKey);\n\n let updatedCols = [\n ...formCtrl.getValues(\"selectedColumns\"),\n ];\n\n if (editColumnIndex !== null) {\n updatedCols[editColumnIndex] = {\n ...updatedCols[editColumnIndex],\n name: updatedName,\n type: updatedType,\n };\n } else {\n if (\n updatedCols.some(\n (col) => col.name === updatedName,\n )\n ) {\n showToast({\n message: \"Column already exists\",\n type: \"error\",\n });\n return;\n }\n\n const newColumn = {\n name: updatedName,\n type: updatedType,\n };\n if (!hasExistingPrimaryKey && isPrimaryKey) {\n formCtrl.setValue(\"primaryKey\", updatedName);\n newColumn.isPrimaryKey = true;\n }\n\n updatedCols.push(newColumn);\n }\n\n formCtrl.setValue(\n \"selectedColumns\",\n updatedCols,\n {\n shouldDirty: true,\n },\n );\n\n const synced = [...updatedCols].sort((a, b) => {\n if (a.isPrimaryKey) return -1;\n if (b.isPrimaryKey) return 1;\n return a.name.localeCompare(b.name);\n });\n\n setSyncedFilteredCols(synced);\n isCreateTableMode &&\n (await updateCreateTableScript(updatedCols));\n\n setEditColumnIndex(null);\n setAnchorEl(null);\n colTabValue !== 0 && setColTabValue(0);\n formCtrl.setValue(\"newColumnName\", \" \");\n formCtrl.setValue(\"newColumnType\", \" \");\n formCtrl.setValue(\"isPrimaryKey\", null);\n }}\n >\n {editColumnIndex !== null ? \"Update\" : \"Add\"}\n </Button>\n </Grid>\n </Grid>\n </Popover>\n )}\n </Box>\n <TableContainer\n sx={{\n maxHeight: hasMediaVal === \"true\" ? \"112vh\" : \"59vh\",\n border: \"1px solid\",\n borderColor: \"divider\",\n borderRadius: 2,\n }}\n >\n <Table stickyHeader>\n <TableHead>\n <TableRow>\n <TableCell\n className=\" px-3 \"\n sx={{ backgroundColor: \"white\" }}\n >\n <TextField\n size=\"small\"\n placeholder=\"Search Columns\"\n variant=\"outlined\"\n value={searchColumn}\n onChange={(e) => {\n setSearchColumn(e.target.value);\n }}\n className=\"w-full py-0.5 text-xs\"\n InputProps={{\n startAdornment: (\n <InputAdornment position=\"start\">\n <IconButton>\n <FontAwesomeIcons\n iconName={\"faMagnifyingGlass\"}\n className=\"text-[1rem]\"\n />\n </IconButton>\n </InputAdornment>\n ),\n }}\n />\n {!hasPrimaryKey && (\n <Typography\n variant=\"body2\"\n color=\"info\"\n className=\"mb-0\"\n >\n <span style={{ color: \"red\" }}>*</span> Select a\n primary key for the table before submitting.\n </Typography>\n )}\n </TableCell>\n </TableRow>\n </TableHead>\n {colTabValue === 0 && (\n <TableBody>\n {syncedFilteredCols.length ? (\n syncedFilteredCols.map((col, index) => (\n <TableRow\n key={index + 1}\n className={`border-b ${index === syncedFilteredCols.length - 1 ? \"border-none\" : \"border-[#ccc]\"}`}\n sx={{\n backgroundColor: col.onlyMobileDb\n ? \"#d3ecc7\"\n : col.isTypeChanged\n ? \"rgba(255, 0, 0, 0.1)\"\n : \"#fff\",\n \"&:hover\": {\n backgroundColor: col.onlyMobileDb\n ? \"#d2f7c0\"\n : col.isTypeChanged\n ? \"#e79a9a\"\n : \"#e9f3ff\",\n },\n }}\n >\n <TableCell className=\"p-2 px-4 flex justify-between\">\n <Tooltip\n title={\n col.onlyMobileDb\n ? \"Column only present in mobile database\"\n : col.isTypeChanged\n ? \"Type changed\"\n : \"\"\n }\n placement=\"top\"\n arrow\n disableHoverListener={\n !(col.onlyMobileDb || col.isTypeChanged)\n }\n >\n <Typography\n variant=\"caption\"\n className=\"w-full text-ellipsis cursor-pointer\"\n >\n {col.name} ({col.type})\n </Typography>\n </Tooltip>\n <Box display=\"flex\" alignItems=\"center\">\n {col.isPrimaryKey && (\n <IconButton\n sx={{\n height: \"1.5rem\",\n marginRight: 0,\n paddingRight: 1,\n }}\n >\n <FontAwesomeIcons\n iconName={\"faKey\"}\n className=\"text-[1rem] text-[#d3bb51]\"\n />\n </IconButton>\n )}\n\n {(isCreateTableMode || isEditMode) && (\n <>\n <Tooltip\n title={\n !isCreateTableMode &&\n col.isPrimaryKey &&\n !isSyncTableMode\n ? \"Deletion of primary key is not allowed.\"\n : \"\"\n }\n arrow\n placement=\"left\"\n >\n {\" \"}\n <span>\n <IconButton\n sx={{\n height: \"1.3rem\",\n marginRight: \"0\",\n }}\n disabled={\n !isCreateTableMode &&\n col.isPrimaryKey &&\n !isSyncTableMode\n }\n onClick={async () => {\n const fullSynced =\n formCtrl.getValues(\n \"selectedColumns\",\n );\n setSearchColumn(\"\");\n const updatedCols =\n fullSynced.filter(\n (c) => c.name !== col.name,\n );\n\n formCtrl.setValue(\n \"selectedColumns\",\n updatedCols,\n { shouldDirty: true },\n );\n\n const searchVal = searchColumn\n .trim()\n .toLowerCase();\n const visibleCols = searchVal\n ? updatedCols.filter((c) =>\n c.name\n .toLowerCase()\n .includes(searchVal),\n )\n : updatedCols;\n\n setSyncedFilteredCols(\n visibleCols,\n );\n\n setFilteredCols((prev) =>\n prev.map((c) => {\n if (c.name === col.name) {\n return {\n ...c,\n isSynced: false,\n };\n }\n return c;\n }),\n );\n\n if (col.isPrimaryKey) {\n formCtrl.setValue(\n \"primaryKey\",\n \"\",\n );\n }\n\n if (isCreateTableMode) {\n await updateCreateTableScript(\n updatedCols,\n );\n }\n }}\n >\n <FontAwesomeIcons\n iconName={\"faTrashCan\"}\n className=\"text-[1rem] text-[#df5f5f]\"\n />\n </IconButton>\n </span>\n </Tooltip>\n {isCreateTableMode && (\n <IconButton\n sx={{\n height: \"1.3rem\",\n marginRight: \"0\",\n color: \"success\",\n }}\n onClick={() => {\n const selectedColumns =\n formCtrl.getValues(\n \"selectedColumns\",\n );\n const columnIndex =\n selectedColumns.findIndex(\n (c) => c.name === col.name,\n );\n setEditColumnIndex(columnIndex);\n formCtrl.setValue(\n \"newColumnName\",\n col.name,\n );\n formCtrl.setValue(\n \"newColumnType\",\n col.type,\n );\n setAnchorEl(\n document.getElementById(\n \"edit-button-anchor\",\n ) ?? null,\n );\n }}\n >\n <FontAwesomeIcons\n iconName={\"faPen\"}\n className=\"text-[1rem] text-[#4f4f4f]\"\n />\n </IconButton>\n )}\n </>\n )}\n </Box>\n </TableCell>\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell colSpan={1} className=\"p-2\">\n <Typography variant=\"body2\">\n {\" \"}\n {formCtrl.getValues(\"selectedColumns\")\n .length === 0\n ? \"There are no columns to display.\"\n : syncedFilteredCols.length === 0\n ? \"No columns for search query.\"\n : null}\n </Typography>\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n )}\n {colTabValue === 1 && (\n <TableBody>\n {filteredCols.length ? (\n filteredCols.map((col, index) => {\n const isPrimaryKey =\n col.name === tableInfo.primaryKey;\n const isSynced = col.isSynced || false;\n\n const renderSwitch = (\n <Switch\n icon={\n <Box\n sx={{\n backgroundColor: \"#001e3c\",\n borderRadius: \"50%\",\n width: 20,\n height: 20,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n <FontAwesomeIcons\n iconName={\"faBan\"}\n size=\"sm\"\n className=\"pr-[0.4px]\"\n />\n </Box>\n }\n checkedIcon={\n <Box\n sx={{\n backgroundColor: \"#4caf50\",\n borderRadius: \"50%\",\n width: 20,\n height: 20,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n <FontAwesomeIcons\n iconName={\"faRotate\"}\n className=\"text-white text-xs\"\n />\n </Box>\n }\n checked={isSynced}\n disabled={!isEditMode}\n onChange={(e) => {\n const isChecked = e.target.checked;\n if (\n !isChecked &&\n isEditMode &&\n !isSyncTableMode &&\n !isCreateTableMode &&\n col.name === tableInfo.primaryKey\n ) {\n return;\n }\n const newCols = [...filteredCols];\n const updatedCol = {\n ...newCols[index],\n isSynced: e.target.checked,\n };\n newCols[index] = updatedCol;\n setFilteredCols(newCols);\n\n const temp = [...syncedFilteredCols];\n if (isChecked) {\n const hasPrimaryKeyInSynced =\n syncedFilteredCols.some(\n (c) => c.isPrimaryKey,\n );\n if (\n col.name === tableInfo.primaryKey &&\n !hasPrimaryKeyInSynced\n ) {\n temp.push({\n ...updatedCol,\n isPrimaryKey: true,\n });\n formCtrl.setValue(\"primaryKey\", col.name);\n } else {\n temp.push(updatedCol);\n }\n } else {\n const colIndex = temp.findIndex(\n (c) => c.name === newCols[index].name,\n );\n if (colIndex > -1) {\n const isRemovingPrimary =\n temp[colIndex].isPrimaryKey;\n temp.splice(colIndex, 1);\n if (isRemovingPrimary) {\n formCtrl.setValue(\"primaryKey\", \"\");\n }\n }\n }\n setSyncedFilteredCols(temp);\n formCtrl.setValue(\"selectedColumns\", temp, {\n shouldDirty: true,\n });\n }}\n />\n );\n\n const renderPrimaryKeyIcon = (\n <IconButton\n sx={{\n height: \"2rem\",\n marginRight: !isEditMode ? 0 : 1,\n paddingRight: !isEditMode ? 0 : 1,\n }}\n >\n <FontAwesomeIcons\n iconName={\"faKey\"}\n className=\"text-lg text-[#d3bb51]\"\n />\n </IconButton>\n );\n\n return (\n <TableRow\n key={index + 1}\n className={`border-b ${index === filteredCols.length - 1 ? \"border-none\" : \"border-[#ccc]\"}`}\n sx={{\n \"&:hover\": { backgroundColor: \"#e9f3ff\" },\n }}\n >\n <TableCell\n sx={{\n p: 0,\n px: 2,\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n }}\n >\n <Typography\n variant=\"caption\"\n className=\"w-full text-ellipsis cursor-pointer align-content-center\"\n >\n {col.name} ({col.type})\n </Typography>\n\n {isEditMode ? (\n isPrimaryKey ? (\n isCreateTableMode ? (\n renderPrimaryKeyIcon\n ) : (\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n }}\n >\n {renderPrimaryKeyIcon}\n <Tooltip\n title={\n isEditMode &&\n !isSyncTableMode &&\n col.name === tableInfo.primaryKey\n ? \"Primary key cannot be unsynced in edit mode.\"\n : \"\"\n }\n arrow\n placement=\"top\"\n >\n <span>{renderSwitch}</span>\n </Tooltip>\n </Box>\n )\n ) : (\n renderSwitch\n )\n ) : isSynced ? (\n <Box\n sx={{\n backgroundColor: \"#4caf50\",\n borderRadius: \"50%\",\n width: 20,\n height: 20,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n margin: \"9px 0px\",\n }}\n >\n <FontAwesomeIcons\n iconName={\"faRotate\"}\n className=\"text-white text-xs\"\n />\n </Box>\n ) : isPrimaryKey ? (\n renderPrimaryKeyIcon\n ) : (\n <Box\n sx={{\n backgroundColor: \"#001e3c\",\n borderRadius: \"50%\",\n width: 20,\n height: 20,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n margin: \"9px 0px\",\n }}\n >\n <FontAwesomeIcons\n iconName={\"faBan\"}\n className=\"text-white pl-[0.5px]\"\n />\n </Box>\n )}\n </TableCell>\n </TableRow>\n );\n })\n ) : (\n <TableRow>\n <TableCell colSpan={1} className=\"p-2\">\n <Typography variant=\"body2\">\n No columns for search query.\n </Typography>\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n )}\n </Table>\n </TableContainer>\n </Paper>\n </Grid>\n </Grid>\n </form>\n </Paper>\n\n {modalOpen && (\n <Modal open={modalOpen} onClose={handleModalClose}>\n <Box sx={{ ...modalStyle }}>\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n mb: 2,\n }}\n >\n <Typography variant=\"h6\">Generated Migration Script</Typography>\n <Typography variant=\"body2\">\n From : <strong>v{migrationVersions?.from_version + 1}</strong>{\" \"}\n <FontAwesomeIcons\n iconName=\"faArrowRight\"\n size=\"sm\"\n className=\"m-[0.3rem 0.3rem 0 0.3rem]\"\n />{\" \"}\n To : <strong>v{migrationVersions?.to_version + 1}</strong>\n </Typography>\n </Box>\n <Editor\n height=\"50vh\"\n defaultLanguage=\"sql\"\n theme=\"light\"\n options={{\n fontSize: 12,\n minimap: { enabled: true },\n automaticLayout: true,\n scrollBeyondLastLine: false,\n wordWrap: \"on\",\n occurrencesHighlight: false,\n selectionHighlight: false,\n }}\n value={migrationScript || \"\"}\n defaultValue={migrationScript || \"\"}\n onChange={handleEditorChange}\n editorProps={{ $blockScrolling: true }}\n ></Editor>\n <Button\n variant=\"contained\"\n color=\"primary\"\n className=\"mt-2\"\n onClick={() => saveForm(null, true)}\n >\n OK\n </Button>\n </Box>\n </Modal>\n )}\n </Grid>\n );\n}\n\nconst modalStyle = {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n width: \"50%\",\n height: \"70%\",\n bgcolor: \"background.paper\",\n boxShadow: 24,\n padding: \"15px\",\n borderRadius: \"8px\",\n};\n\nTableDetails.propTypes = {\n tableInfo: PropTypes.any,\n table: PropTypes.any,\n isEditMode: PropTypes.bool,\n updateEditMode: PropTypes.any,\n tableCompleteInfo: PropTypes.any,\n reloadComponents: PropTypes.any,\n isCreateTableMode: PropTypes.bool,\n isSyncTableMode: PropTypes.bool,\n updateCreateTableMode: PropTypes.any,\n openDeleteModal: PropTypes.bool,\n setOpenDeleteModal: PropTypes.func,\n};\n"],"names":["TableDetails","tableInfo","table","isEditMode","updateEditMode","tableCompleteInfo","reloadComponents","isCreateTableMode","isSyncTableMode","updateCreateTableMode","openDeleteModal","setOpenDeleteModal","generateRebuildScript","DOWNLOAD_TYPE_OPTIONS","labelToCode","label","codeToLabel","code","o","getNewDownloadType","mc","_a","getNewApiEndpoint","flat","nested","getNewRequestParams","allColumns","setAllColumns","useState","modalOpen","setModalOpen","migrationScript","setMigrationScript","formData","setFormData","searchColumn","setSearchColumn","syncedFilteredCols","setSyncedFilteredCols","filteredCols","setFilteredCols","colTabValue","setColTabValue","queryTabValue","setQueryTabValue","anchorEl","setAnchorEl","editColumnIndex","setEditColumnIndex","migrationVersions","setMigrationVersions","requestParams","setRequestParams","popOverOpen","id","columnTypeOptions","loggedInUser","useSelector","state","defaultValues","_b","_c","_e","_d","_h","_g","_f","formCtrl","useForm","isFormValid","hasMediaVal","newColumnNameVal","newColumnTypeVal","value","p","onSubmit","data","script","createScript","getMigrationVersion","saveForm","migrationRequired","columns","response","entity","col","mediaConfig","execute","migrationRes","showToast","error","prev","handleModalClose","previousColumns","newColumns","oldPrimaryKey","newPrimaryKey","tableScript","previousColumnsMap","newColumnsMap","previousColumnsNames","newColumnsNames","droppedColumns","addedColumns","modifiedColumns","newType","dropColumnSql","addColumnSql","modifyColumnSql","tableName","res","useEffect","allColumnsNames","tableCompleteInfoObj","item","tableInfoObj","b","syncedNames","a","searchValue","allSynced","filtered","watchedTableName","useWatch","updateCreateTableScript","handleEditorChange","onCancel","handleDelete","dropTableSql","debouncedCheckAvailability","useDebounceFn","name","isValidFormat","hasPrimaryKey","c","jsxs","Grid","jsx","Paper","Box","Typography","CustomTextField","Fragment","CustomConfirmationModal","cur","Tooltip","Button","FontAwesomeIcons","tab","isActive","Controller","field","Editor","FormControl","RadioGroup","FormControlLabel","Radio","onChange","Autocomplete","_","newValue","params","TextField","IconButton","newParams","param","index","e","updated","i","InputAdornment","updatedCols","props","option","target","Popover","_i","event","Checkbox","isPrimaryKey","updatedName","updatedType","hasExistingPrimaryKey","newColumn","synced","TableContainer","Table","TableHead","TableRow","TableCell","TableBody","fullSynced","searchVal","visibleCols","columnIndex","isSynced","renderSwitch","Switch","isChecked","newCols","updatedCol","temp","hasPrimaryKeyInSynced","colIndex","isRemovingPrimary","renderPrimaryKeyIcon","Modal","modalStyle","PropTypes"],"mappings":";;;;;;;;;;;;;;;AAqCA,SAAwBA,GAAa;AAAA,EACnC,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,YAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,uBAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,uBAAAC;AACF,GAAG;;AACD,QAAMC,KAAwB;AAAA,IAC5B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,GAEIC,KAAc,CAACC,OAAUA,KAAA,gBAAAA,EAAO,cAAc,QAAQ,MAAM,SAAQ,IACpEC,KAAc,CAACC,MACnBJ,GAAsB,KAAK,CAACK,MAAMJ,GAAYI,CAAC,MAAMD,CAAI,KAAK,IAE1DE,KAAqB,CAACC,MAAO;;AACjC,WAAIA,KAAA,QAAAA,EAAI,eACCJ,GAAYI,EAAG,YAAY,KAAKA,EAAG,gBACxCC,IAAAD,KAAA,gBAAAA,EAAI,SAAJ,QAAAC,EAAU,eACLL,GAAYI,EAAG,KAAK,YAAY,KAAKA,EAAG,KAAK,eAC/C;AAAA,EACT,GACME,KAAoB,CAACF,MAAO;;AAChC,UAAMG,IAAOH,KAAA,gBAAAA,EAAI;AACjB,QAAI,OAAOG,KAAS,YAAYA,MAAS;AACvC,aAAOA,EAAK,eAAe;AAC7B,UAAMC,KAASH,IAAAD,KAAA,gBAAAA,EAAI,SAAJ,gBAAAC,EAAU;AACzB,WAAI,OAAOG,KAAW,YAAYA,MAAW,QACpCA,EAAO,eAAe;AAAA,EAEjC,GACMC,KAAsB,CAACL,MAAO;;AAClC,UAAMG,IAAOH,KAAA,gBAAAA,EAAI;AACjB,QAAI,OAAOG,KAAS,YAAYA,MAAS;AACvC,aAAOA,EAAK,qBAAqB,CAAA;AACnC,UAAMC,KAASH,IAAAD,KAAA,gBAAAA,EAAI,SAAJ,gBAAAC,EAAU;AACzB,WAAI,OAAOG,KAAW,YAAYA,MAAW,OACpCA,EAAO,qBAAqB,CAAA,IAC9B,CAAA;AAAA,EACT,GAEM,CAACE,IAAYC,EAAa,IAAIC,EAAS,CAAA,CAAE,GACzC,CAACC,IAAWC,EAAY,IAAIF,EAAS,EAAK,GAC1C,CAACG,GAAiBC,EAAkB,IAAIJ,EAAS,EAAE,GACnD,CAACK,IAAUC,EAAW,IAAIN,EAAS,CAAA,CAAE,GACrC,CAACO,IAAcC,CAAe,IAAIR,EAAS,EAAE,GAC7C,CAACS,GAAoBC,CAAqB,IAAIV,EAAS,CAAA,CAAE,GACzD,CAACW,GAAcC,CAAe,IAAIZ,EAAS,CAAA,CAAE,GAC7C,CAACa,GAAaC,EAAc,IAAId,EAAS,CAAC,GAC1C,CAACe,GAAeC,EAAgB,IAAIhB,EAAS,CAAC,GAC9C,CAACiB,IAAUC,EAAW,IAAIlB,EAAS,IAAI,GACvC,CAACmB,GAAiBC,EAAkB,IAAIpB,EAAS,IAAI,GACrD,CAACqB,GAAmBC,EAAoB,IAAItB,EAAS,CAAA,CAAE,GACvD,CAACuB,GAAeC,CAAgB,IAAIxB;AAAA,IACvCrB,IAEG,CAAA,IADAkB,GAAoBxB,KAAA,gBAAAA,EAAW,kBAAkB;AAAA,EAChD,GAGDoD,KAAc,EAAQR,IACtBS,KAAKD,KAAc,mBAAmB,QAEtCE,KAAoB,CAAC,QAAQ,SAAS,GAEtCC,KAAeC,GAAY,CAACC,MACzBA,EAAM,aAAa,KAAK,EAChC,GACKC,IAAgB;AAAA,IACpB,iBAAkBpD,IAAgD,CAAA,IAA5B,CAAC,GAAGN,EAAU,UAAU;AAAA,IAC9D,iBAAkBM,IAAgD,KAA5BN,EAAU;AAAA,IAChD,gBAAiBM,IAA4C,KAAxBN,EAAU;AAAA,IAC/C,WAAW;AAAA,IACX,kBAAkB;AAAA,IAClB,eAAgBM,IAEZ,QADAc,KAAApB,KAAA,gBAAAA,EAAW,kBAAX,gBAAAoB,GAA0B;AAAA,IAE9B,YAAad,IAIT,OAHAN,EAAU,aACRA,EAAU,aACV;AAAA,IAEN,UAAWM,IAEP,SADAqD,KAAA3D,KAAA,gBAAAA,EAAW,aAAX,gBAAA2D,GAAqB,eAAc;AAAA,IAEvC,UAAWrD,IAEP,SADAsD,KAAA5D,KAAA,gBAAAA,EAAW,aAAX,gBAAA4D,GAAqB,eAAc;AAAA,IAEvC,cAAetD,IAEX,KADAY,GAAmBlB,EAAU,kBAAkB;AAAA,IAEnD,aAAcM,IAEV,KADAe,GAAkBrB,EAAU,kBAAkB;AAAA,IAElD,mBAAoBM,IAEhB,CAAA,IADAkB,GAAoBxB,EAAU,kBAAkB;AAAA,IAEpD,eAAgBM,IAIZ,OAHAuD,MAAAC,KAAA9D,EAAU,uBAAV,gBAAA8D,GAA8B,kBAA9B,gBAAAD,GAA6C,MAAM,KAAK,SACxDE,MAAAC,MAAAC,KAAAjE,EAAU,uBAAV,gBAAAiE,GAA8B,SAA9B,gBAAAD,GAAoC,kBAApC,gBAAAD,GAAmD,MAAM,KAAK,OAC9D;AAAA,EACA,GAEAG,IAAWC,GAAQ;AAAA,IACvB,eAAe;AAAA,MACb,GAAGT;AAAA,IAAA;AAAA,IAEL,MAAM;AAAA,EAAA,CACP,GACKU,KAAc,CAACF,EAAS,UAAU,SAClCG,IAAcH,EAAS,MAAM,UAAU,GACvCI,KAAmBJ,EAAS,MAAM,eAAe,GACjDK,KAAmBL,EAAS,MAAM,eAAe;AAEvD,EAAAA,EAAS,SAAS,qBAAqB;AAAA,IACrC,UAAU,CAACM,MACLH,MAAgB,SAAe,KAC/B,CAACG,KAASA,EAAM,WAAW,IACtB,gDACaA,EAAM;AAAA,MAC1B,CAACC,MAAA;;AAAM,kBAACrD,IAAAqD,EAAE,QAAF,QAAArD,EAAO,WAAU,GAACuC,IAAAc,EAAE,UAAF,QAAAd,EAAS;AAAA;AAAA,IAAK,IAGjC,4DACF;AAAA,EACT,CACD;AAED,QAAMe,KAAW,OAAOC,MAAS;;AAC/B,UAAMC,IAAStE,IACX4D,EAAS,UAAU,kBAAkB,IACrC,MAAMW;AAAA,MACJ,CAAC,GAAG7E,EAAU,UAAU;AAAA,MACxB2E,EAAK;AAAA,MACL3E,EAAU;AAAA,OACVoB,IAAAuD,EAAK,eAAL,gBAAAvD,EAAiB;AAAA,IAAS;AAEhC,IAAIwD,KACF3C,GAAY,MAAM0C,CAAI,GACtB5C,GAAmB,MAAM6C,CAAM,GAC/BE,GAAA,GACAjD,GAAa,EAAI,KAEjBkD,GAASJ,GAAM,EAAK;AAAA,EAExB,GAEMI,KAAW,OAAOJ,GAAMK,MAAsB;;AAClD,UAAMC,IAAU,CAAA;AAChB,QAAIC,GACAC,IAASR,KAAQ3C;AAErB,QADKgD,KAAmBjD,GAAmB,EAAE,GACzC,OAAO,KAAKoD,CAAM,EAAE,SAAS,GAAG;AAClC,MAAAA,EAAO,gBAAgB,QAAQ,CAACC,MAAQ;AACtC,QAAAH,EAAQG,EAAI,IAAI,IAAIA,EAAI;AAAA,MAC1B,CAAC,GACDD,EAAO,UAAU,KAAK,UAAUF,CAAO,GACvCE,EAAO,cAAa/D,IAAA+D,EAAO,eAAP,gBAAA/D,EAAmB;AACvC,UAAIiE,IAAc;AAAA,QAChB,cAAcxE,GAAYsE,EAAO,YAAY;AAAA,QAC7C,aAAa;AAAA,UACX,aAAaA,EAAO,eAAe;AAAA,UACnC,mBAAmBjC,KAAiB,CAAA;AAAA,QAAC;AAAA,QAEvC,eAAe,qBAAqBiC,EAAO,gBAAgB;AAAA,MAAA;AAE7D,MAAAE,IAAc,KAAK,UAAUA,CAAW;AACxC,UAAI;AAuBF,YAtBAH,KACE,MAAMI,EAAQ;AAAA,UACZ,MAAM;AAAA,UACN,YAAY;AAAA,YACV,YACGhF,IAAoB4D,EAAS,UAAU,WAAW,IAAIjE,MACvD;AAAA,YACF,eAAekF,EAAO,kBAAkB;AAAA,YACxC,YAAYA,EAAO,WAAW;AAAA,YAC9B,YAAYA,EAAO,cAAc;AAAA,YACjC,iBAAiBA,EAAO,mBAAmB;AAAA,YAC3C,aAAaA,EAAO,kBAAkB;AAAA,YACtC,UAAUA,EAAO,aAAa;AAAA,YAC9B,UAAUA,EAAO,aAAa;AAAA,YAC9B,oBACEA,EAAO,aAAa,SAASE,IAAc;AAAA,YAC7C,YAAY9B,MAAgB;AAAA,YAC5B,UAAU;AAAA,UAAA;AAAA,QACZ,CACD,GACD,MAEE2B,KAAA,QAAAA,EAAU,UAAUF,KAAqBlD,GAAiB;AAC5D,gBAAMyD,KACJ,MAAMD,EAAQ;AAAA,YACZ,MAAM;AAAA,YACN,YAAY;AAAA,cACV,iBAAAxD;AAAA,cACA,YAAYyB,MAAgB;AAAA,cAC5B,mBAAmB;AAAA,YAAA;AAAA,UACrB,CACD,GACD;AAEF,WAAIgC,KAAA,gBAAAA,EAAc,YAAW,KAC3BC,EAAU;AAAA,YACR,SAAS,+BAA+BD,KAAA,gBAAAA,EAAc,OAAO;AAAA,YAC7D,MAAM;AAAA,UAAA,CACP;AAAA,QAEL;AAAA,MACF,SAASE,GAAO;AACd,QAAAD,EAAU;AAAA,UACR,SAAS,sBAAsBC,CAAK;AAAA,UACpC,MAAM;AAAA,QAAA,CACP;AAAA,MACH;AAAA,IACF;AACE,UAAI;AAsBF,YArBAP,KACE,MAAMI,EAAQ;AAAA,UACZ,MAAM;AAAA,UACN,YAAY;AAAA,YACV,YACGhF,IAAoB4D,EAAS,UAAU,WAAW,IAAIjE,MACvD;AAAA,YACF,eAAe;AAAA,YACf,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,iBAAiB;AAAA,YACjB,aAAa;AAAA,YACb,UAAU;AAAA,YACV,UAAU;AAAA,YACV,oBAAoB;AAAA,YACpB,YAAYsD,MAAgB;AAAA,YAC5B,UAAU;AAAA,UAAA;AAAA,QACZ,CACD,GACD,MAEE2B,KAAA,QAAAA,EAAU,UAAUpD,GAAiB;AACvC,gBAAMyD,KACJ,MAAMD,EAAQ;AAAA,YACZ,MAAM;AAAA,YACN,YAAY;AAAA,cACV,iBAAAxD;AAAA,cACA,YAAYyB,MAAgB;AAAA,cAC5B,mBAAmB;AAAA,YAAA;AAAA,UACrB,CACD,GACD;AAEF,WAAIgC,KAAA,gBAAAA,EAAc,YAAW,KAC3BC,EAAU;AAAA,YACR,SAAS,+BAA+BD,KAAA,gBAAAA,EAAc,OAAO;AAAA,YAC7D,MAAM;AAAA,UAAA,CACP;AAAA,QAEL;AAAA,MACF,SAASE,GAAO;AACd,QAAAD,EAAU;AAAA,UACR,SAAS,sBAAsBC,CAAK;AAAA,UACpC,MAAM;AAAA,QAAA,CACP;AAAA,MACH;AAEF,IAAIP,KAAA,QAAAA,EAAU,WACZ/E,GAAe,EAAK,GACpBK,GAAsB,EAAK,GAC3BH,GAAiB,CAACqF,MAAS,CAACA,CAAI,GAChCF,EAAU;AAAA,MACR,SAAS;AAAA,MACT,MAAM;AAAA,IAAA,CACP,IAEH3D,GAAa,EAAK;AAAA,EACpB,GAEM8D,KAAmB,MAAM;AAC7B,IAAA9D,GAAa,EAAK;AAAA,EACpB,GAEMgD,KAAe,OACnBe,GACAC,GACAC,GACAC,MACG;AACH,QAAIC,IAAc;AAElB,QAAIJ,EAAgB,SAAS,GAAG;AAC9B,YAAMK,IAAqB,OAAO;AAAA,QAChCL,EAAgB,IAAI,CAACR,MAAQ,CAACA,EAAI,MAAMA,EAAI,IAAI,CAAC;AAAA,MAAA,GAE7Cc,IAAgB,OAAO;AAAA,QAC3BL,EAAW,IAAI,CAACT,MAAQ,CAACA,EAAI,MAAMA,EAAI,IAAI,CAAC;AAAA,MAAA,GAGxCe,IAAuB,OAAO,KAAKF,CAAkB,GACrDG,IAAkB,OAAO,KAAKF,CAAa,GAE3CG,IAAiBT,EAAgB;AAAA,QACrC,CAACR,MAAQ,CAACgB,EAAgB,SAAShB,EAAI,IAAI;AAAA,MAAA,GAEvCkB,IAAeT,EAAW;AAAA,QAC9B,CAACT,MAAQ,CAACe,EAAqB,SAASf,EAAI,IAAI;AAAA,MAAA,GAI5CmB,IAAkBX,EAAgB,OAAO,CAACR,MAAQ;AACtD,cAAMoB,KAAUN,EAAcd,EAAI,IAAI;AACtC,eAAOoB,OAAY,UAAaA,OAAYpB,EAAI;AAAA,MAClD,CAAC,GAEKqB,IAAgBJ,EACnB,IAAI,CAACjB,MAAQ,eAAenF,CAAK,gBAAgBmF,EAAI,IAAI,GAAG,EAC5D,KAAK;AAAA,CAAI,GACNsB,KAAeJ,EAClB;AAAA,QACC,CAAClB,MAAQ,eAAenF,CAAK,eAAemF,EAAI,IAAI,IAAIA,EAAI,IAAI;AAAA,MAAA,EAEjE,KAAK;AAAA,CAAI;AAEZ,UAAIuB,KAAkB;AAetB,aAbIJ,EAAgB,SAAS,MAC3BI,KAAkBhG;AAAA,QAChBV;AAAA,QACA;AAAA,UACE,YAAY2F;AAAA,UACZ,YAAYE;AAAA,QAAA;AAAA,QAEd;AAAA,UACE,YAAYD;AAAA,UACZ,YAAYE;AAAA,QAAA;AAAA,MACd,IAGAY,KACKA,GAAgB,KAAA,KAGrBF,MAAeT,KAAe,GAAGS,CAAa;AAAA,IAC9CC,OAAcV,KAAe,GAAGU,EAAY;AAAA,IAEzCV,EAAY,KAAA;AAAA,IACrB,OAAO;AACL,YAAMY,IAAYtG,IACd4D,EAAS,UAAU,WAAW,IAC9BjE;AACJ,aAAA+F,IAAc,gBAAgBY,CAAS;AAAA,GAEvCZ,KAAeH,EACZ,IAAI,CAACT,MAAQ,GAAGA,EAAI,IAAI,IAAIA,EAAI,IAAI,EAAE,EACtC,KAAK;AAAA,CAAK,GAETW,MACFC,KAAe;AAAA,aAAiBY,CAAS,sBAAsBb,CAAa,MAG9EC,KAAe,MAERA;AAAA,IACT;AAAA,EACF,GAEMlB,KAAsB,YAAY;;AACtC,UAAM+B,KACJzF,IAAA,MAAMkE,EAAQ;AAAA,MACZ,MAAM;AAAA,IAAA,CACP,EAAE,MAAM,CAACG,MAAU;AAClB,MAAAD,EAAU;AAAA,QACR,SAAS,sCAAsCC,CAAK;AAAA,QACpD,MAAM;AAAA,MAAA,CACP;AAAA,IACH,CAAC,MAPD,gBAAArE,EAQC;AACH,IAAA6B,GAAqB4D,KAAA,gBAAAA,EAAK,OAAO,EAAE;AAAA,EACrC;AAEA,EAAAC,GAAU,MAAM;AAgBd,QAfA3E,EAAgB,EAAE,GAClBQ,GAAiB,CAAC,GAClBF,GAAe,CAAC,GAEZnC,MACFoB,GAAc,CAAA,CAAE,GAChBW,EAAsB,CAAA,CAAE,GACxBE,EAAgB,CAAA,CAAE,GAClBY,EAAiB,CAAA,CAAE,GACnBe,EAAS,MAAM;AAAA,MACb,GAAGR;AAAA,IAAA,CACJ,GAED,WAAW,MAAMQ,EAAS,QAAA,GAAW,CAAC,IAElCjE,KAAWD,KAAa,CAACM,GAAmB;AAChD,MACIoB,GADJtB,MAAsB,SACJ,MAAMA,EAAkB,aACxB,MAAMJ,EAAU,UADkB;AAEpD,UAAI+G,IACF3G,MAAsB,SAClBA,EAAkB,WAAW,IAAI,CAACgF,MAAQA,EAAI,IAAI,IAClDpF,EAAU,WAAW,IAAI,CAACoF,MAAQA,EAAI,IAAI,GAE5C4B,IAAuB,CAAA;AAE3B,MAAA5G,MAAsB,SAClBA,EAAkB,WAAW,QAAQ,CAAC6G,MAAS;AAC7C,QAAAD,EAAqBC,EAAK,IAAI,IAAIA,EAAK;AAAA,MACzC,CAAC,IACDjH,EAAU,WAAW,QAAQ,CAACiH,MAAS;AACrC,QAAAD,EAAqBC,EAAK,IAAI,IAAIA,EAAK;AAAA,MACzC,CAAC;AAEL,UAAIC,IAAe,CAAA;AAEnB,MAAAlH,EAAU,WAAW,QAAQ,CAACiH,MAAS;AACrC,QAAAC,EAAaD,EAAK,IAAI,IAAIA,EAAK;AAAA,MACjC,CAAC,GAEDjH,EAAU,WAAW,IAAI,CAACoF,MAAQ;AAChC,QAAK2B,EAAgB,SAAS3B,EAAI,IAAI,MACpCA,EAAI,eAAkB,KAEpB8B,EAAa9B,EAAI,IAAI,MAAM4B,EAAqB5B,EAAI,IAAI,MAC1DA,EAAI,gBAAmB,KAErBA,EAAI,SAASpF,EAAU,eACzBoF,EAAI,eAAkB;AAAA,MAE1B,CAAC,GACDlB,EAAS,MAAM;AAAA,QACb,GAAGR;AAAA,MAAA,CACJ,GAED,WAAW,MAAMQ,EAAS,QAAA,GAAW,CAAC,GACtCf,EAAiB3B,GAAoBxB,KAAA,gBAAAA,EAAW,kBAAkB,CAAC,GACnEqC;AAAA,QAAsB,MACpBrC,EAAU,WAAW,KAAK,CAAC,GAAGmH,MACxB,EAAE,SAASnH,EAAU,cACvB,EAAE,eAAe,IACV,MAELmH,EAAE,SAASnH,EAAU,cACvBmH,EAAE,eAAe,IACV,KAEF,EAAE,KAAK,cAAcA,EAAE,IAAI,CACnC;AAAA,MAAA,GAIC5E,EADJnC,MAAsB,SACF,MAAM;AACpB,cAAMgH,IAAc,IAAI;AAAA,UACtBpH,EAAU,WAAW,IAAI,CAACoF,MAAQA,EAAI,IAAI;AAAA,QAAA;AAQ5C,eALoBhF,EAAkB,WAAW,IAAI,CAACgF,OAAS;AAAA,UAC7D,GAAGA;AAAA,UACH,UAAUgC,EAAY,IAAIhC,EAAI,IAAI;AAAA,QAAA,EAClC,EAEiB,KAAK,CAACiC,GAAGF,MACtBE,EAAE,SAASrH,EAAU,aAAmB,KACxCmH,EAAE,SAASnH,EAAU,aAAmB,IACrCqH,EAAE,KAAK,cAAcF,EAAE,IAAI,CACnC;AAAA,MACH,IACgB,EADf;AAAA,IAEP;AAAA,EACF,GAAG,CAACnH,GAAWI,GAAmBH,GAAOK,CAAiB,CAAC,GAC3DwG,GAAU,MAAM;AACd,UAAMQ,IAAcpF,GAAa,YAAA;AAEjC,QAAIM,MAAgB,GAAG;AACrB,YAAM+E,IAAYrD,EAAS,UAAU,iBAAiB,GAChDsD,IAAWF,IACbC,EAAU;AAAA,QAAO,CAACnC,MAChBA,EAAI,KAAK,YAAA,EAAc,SAASkC,CAAW;AAAA,MAAA,IAE7CC;AAEJ,MAAAlF,EAAsBmF,CAAQ;AAAA,IAChC,OAAO;AACL,YAAMJ,IAAc,IAAI;AAAA,QACtBlD,EAAS,UAAU,iBAAiB,EAAE,IAAI,CAACkB,MAAQA,EAAI,IAAI;AAAA,MAAA,GAEvDoC,IAAWF,IACb7F,GACG,OAAO,CAAC2D,MAAQA,EAAI,KAAK,YAAA,EAAc,SAASkC,CAAW,CAAC,EAC5D,IAAI,CAAClC,OAAS;AAAA,QACb,GAAGA;AAAA,QACH,UAAUgC,EAAY,IAAIhC,EAAI,IAAI;AAAA,MAAA,EAClC,IACJ3D,GAAW,IAAI,CAAC2D,OAAS;AAAA,QACvB,GAAGA;AAAA,QACH,UAAUgC,EAAY,IAAIhC,EAAI,IAAI;AAAA,MAAA,EAClC;AAEN,MAAA7C,EAAgBiF,CAAQ;AAAA,IAC1B;AAAA,EACF,GAAG,CAACtF,IAAcM,CAAW,CAAC;AAC9B,QAAMiF,KAAmBC,GAAS;AAAA,IAChC,SAASxD,EAAS;AAAA,IAClB,MAAM;AAAA,EAAA,CACP;AAED,EAAA4C,GAAU,MAAM;AACd,IACExG,KACA4D,EAAS,UAAU,iBAAiB,EAAE,SAAS,KAC/CuD,MAEAE,GAAwBzD,EAAS,UAAU,iBAAiB,CAAC;AAAA,EAEjE,GAAG,CAACuD,EAAgB,CAAC;AAErB,QAAMG,KAAqB,CAACpD,MAAU;AACpC,IAAAzC,GAAmByC,CAAK;AAAA,EAC1B,GACMqD,KAAW,MAAM;AACrB,IAAI3H,KACFC,GAAe,CAACD,CAAU,GAExBI,KACFE,GAAsB,CAACF,CAAiB,GAE1C4D,EAAS,MAAM;AAAA,MACb,GAAGR;AAAA,MACH,eAAe;AAAA,MACf,eAAe;AAAA,IAAA,CAChB,GACDP,EAAiBO,EAAc,qBAAqB,EAAE,GACtDrB,EAAsBqB,EAAc,mBAAmB,EAAE;AAEzD,UAAM0D,IAAc,IAAI;AAAA,OACrB1D,EAAc,mBAAmB,CAAA,GAAI,IAAI,CAAC0B,MAAQA,EAAI,IAAI;AAAA,IAAA;AAE7D,IAAA7C;AAAA,OACGmB,EAAc,cAAc,CAAA,GAAI,IAAI,CAAC0B,OAAS;AAAA,QAC7C,GAAGA;AAAA,QACH,UAAUgC,EAAY,IAAIhC,EAAI,IAAI;AAAA,MAAA,EAClC;AAAA,IAAA;AAAA,EAEN,GAEM0C,KAAe,YAAY;;AAC/B,IAAApH,GAAmB,MAAM,EAAK;AAC9B,UAAMwE,IAAW,MAAMI,EAAQ;AAAA,MAC7B,MAAM;AAAA,MACN,YAAY;AAAA,QACV,WAAWrF;AAAA,MAAA;AAAA,IACb,CACD,EAAE,MAAM,CAACwF,MAAU;AAClB,MAAAD,EAAU;AAAA,QACR,SAAS,6BAA6BC,CAAK;AAAA,QAC3C,MAAM;AAAA,MAAA,CACP;AAAA,IACH,CAAC;AAED,KAAI7B,KAAAD,KAAAvC,IAAA8D,KAAA,gBAAAA,EAAU,SAAV,gBAAA9D,EAAgB,WAAhB,gBAAAuC,EAAyB,OAAzB,QAAAC,EAA6B,cAC/B4B,EAAU,EAAE,SAAS,GAAGvF,CAAK,0BAA0B,MAAM,WAAW;AAE1E,QAAI8H,IAAe,wBAAwB9H,CAAK;AAChD,IAAA8B,GAAmB,MAAMgG,CAAY,GACrCjD,GAAA,GACAjD,GAAa,EAAI;AAAA,EACnB,GAgCMmG,KAA6BC,GA9BT,OAAOC,MAAS;AACxC,UAAMC,IAAgB,2BAA2B,KAAKD,CAAI;AAC1D,QAAIA,EAAK,OAAO,WAAW,GAAG;AAC5B,MAAAhE,EAAS,SAAS,iBAAiB;AAAA,QACjC,MAAM;AAAA,QACN,SAAS;AAAA,MAAA,CACV;AACD;AAAA,IACF;AACA,QAAI,CAACiE,GAAe;AAClB,MAAAjE,EAAS,SAAS,iBAAiB;AAAA,QACjC,MAAM;AAAA,QACN,SACE;AAAA,MAAA,CACH;AACD;AAAA,IACF;AACA,IACE5B,EAAa,KAAK,CAAC8C,MAAQA,EAAI,SAAS8C,CAAI,KAC5C9F,EAAmB,KAAK,CAACgD,MAAQA,EAAI,SAAS8C,CAAI,IAElDhE,EAAS,SAAS,iBAAiB;AAAA,MACjC,MAAM;AAAA,MACN,SAAS;AAAA,IAAA,CACV,IAEDA,EAAS,YAAY,eAAe;AAAA,EAExC,GAEoE,GAAG,GAEjEkE,KAAgBhG,EAAmB;AAAA,IACvC,CAACgD,MAAQA,EAAI,iBAAiB;AAAA,EAAA,GAG1BuC,KAA0B,OAAO1C,MAAY;;AAEjD,QADAvC,MAAkB,KAAKpC,KAAqBqC,GAAiB,CAAC,GAC1DsC,EAAQ,WAAW,GAAG;AACxB,MAAAf,EAAS,SAAS,oBAAoB,IAAI,EAAE,aAAa,IAAM;AAC/D;AAAA,IACF;AAEA,UAAM6B,MAAgB3E,IAAA6D,EAAQ,KAAK,CAACoD,MAAMA,EAAE,YAAY,MAAlC,gBAAAjH,EAAqC,SAAQ,IAC7DwD,IAAS,MAAMC,GAAa,CAAA,GAAII,GAAS,IAAIc,CAAa;AAChE,IAAA7B,EAAS,SAAS,oBAAoBU,GAAQ,EAAE,aAAa,IAAM;AAAA,EACrE;AAEA,SACE,gBAAA0D;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,MAAM;AAAA,MACN,IAAI;AAAA,QACF,WAAW;AAAA,QACX,WAAW;AAAA,QACX,WAAW;AAAA,MAAA;AAAA,MAGb,UAAA;AAAA,QAAA,gBAAAC;AAAA,UAACC;AAAA,UAAA;AAAA,YACC,SAAQ;AAAA,YACR,IAAI;AAAA,cACF,GAAG;AAAA,cACH,cAAc;AAAA,cACd,iBAAiB;AAAA,YAAA;AAAA,YAGnB,UAAA,gBAAAH;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,UAAUpE,EAAS,aAAaQ,EAAQ;AAAA,gBACxC,YAAU;AAAA,gBACV,WAAU;AAAA,gBAEV,UAAA;AAAA,kBAAA,gBAAA4D;AAAA,oBAACI;AAAA,oBAAA;AAAA,sBACC,IAAI;AAAA,wBACF,SAAS;AAAA,wBACT,gBAAgB;AAAA,wBAChB,YAAY;AAAA,wBACZ,IAAI;AAAA,wBACJ,IAAI;AAAA,wBACJ,cAAc;AAAA,wBACd,aAAa;AAAA,sBAAA;AAAA,sBAGf,UAAA;AAAA,wBAAA,gBAAAJ,EAACI,GAAA,EAAI,IAAI,EAAE,MAAM,KACd,UAAA;AAAA,0BAACpI,IAeA,gBAAAgI,EAACI,GAAA,EAAI,IAAI,EAAE,UAAU,OACnB,UAAA;AAAA,4BAAA,gBAAAF;AAAA,8BAACG;AAAA,8BAAA;AAAA,gCACC,SAAQ;AAAA,gCACR,IAAI,EAAE,YAAY,KAAK,IAAI,IAAA;AAAA,gCAC5B,UAAA;AAAA,8BAAA;AAAA,4BAAA;AAAA,4BAGD,gBAAAH;AAAA,8BAACI;AAAA,8BAAA;AAAA,gCACC,SAAS1E,EAAS;AAAA,gCAClB,IAAG;AAAA,gCACH,MAAK;AAAA,gCACL,QAAQA,EAAS,UAAU;AAAA,gCAC3B,OAAM;AAAA,gCACN,MAAK;AAAA,gCACL,OAAO;AAAA,kCACL,UAAU;AAAA,oCACR,OAAO;AAAA,oCACP,SAAS;AAAA,kCAAA;AAAA,kCAEX,SAAS;AAAA,oCACP,OAAO;AAAA,oCACP,SACE;AAAA,kCAAA;AAAA,kCAEJ,UAAU,CAAA;AAAA,gCAAC;AAAA,8BACb;AAAA,4BAAA;AAAA,0BACF,GACF,IAzCA,gBAAAoE,EAAAO,GAAA,EACE,UAAA;AAAA,4BAAA,gBAAAL;AAAA,8BAACG;AAAA,8BAAA;AAAA,gCACC,SAAQ;AAAA,gCACR,IAAI,EAAE,YAAY,KAAK,OAAO,eAAA;AAAA,gCAE7B,eAAgB;AAAA,8BAAA;AAAA,4BAAA;AAAA,4BAEnB,gBAAAH,EAACG,KAAW,SAAQ,WAAU,OAAM,kBACjC,UAAA1I,IACG,wCACA,+BAAA,CACN;AAAA,0BAAA,GACF;AAAA,0BA+BF,gBAAAuI;AAAA,4BAACM;AAAA,4BAAA;AAAA,8BACC,aAAa;AAAA,8BACb,OAAO;AAAA,8BACP,MAAMrI;AAAA,8BACN,aAAaqH;AAAA,8BACb,aAAa,MAAMpH,GAAmB,CAACqI,MAAQ,CAACA,CAAG;AAAA,4BAAA;AAAA,0BAAA;AAAA,wBACrD,GACF;AAAA,wBACA,gBAAAT,EAACI,KAAI,IAAI,EAAE,SAAS,QAAQ,KAAK,KAC7B,UAAA;AAAA,2BAAAxI,KAAcI,MACd,gBAAAkI;AAAA,4BAACQ;AAAA,4BAAA;AAAA,8BACC,OACGZ,KAEG,KADA;AAAA,8BAGN,OAAK;AAAA,8BACL,WAAU;AAAA,8BAEV,4BAAC,QAAA,EACC,UAAA,gBAAAI;AAAA,gCAACS;AAAA,gCAAA;AAAA,kCACC,MAAK;AAAA,kCACL,SAAQ;AAAA,kCACR,MAAK;AAAA,kCACL,IAAI;AAAA,oCACF,cAAc;AAAA,oCACd,YAAY;AAAA,oCACZ,eAAe;AAAA,oCACf,WAAW;AAAA,oCACX,IAAI;AAAA,kCAAA;AAAA,kCAEN,UAAU7E,MAAe,CAACgE;AAAA,kCAC1B,WAAW,gBAAAI,EAACU,GAAA,EAAiB,UAAS,UAAA,CAAU;AAAA,kCACjD,UAAA;AAAA,gCAAA;AAAA,8BAAA,EAED,CACF;AAAA,4BAAA;AAAA,0BAAA;AAAA,2BAGFhJ,KAAcI,MACd,gBAAAkI;AAAA,4BAACS;AAAA,4BAAA;AAAA,8BACC,MAAK;AAAA,8BACL,SAAQ;AAAA,8BACR,SAAS,MAAMpB,GAAA;AAAA,8BACf,MAAK;AAAA,8BACL,IAAI;AAAA,gCACF,cAAc;AAAA,gCACd,YAAY;AAAA,gCACZ,eAAe;AAAA,gCACf,aAAa;AAAA,gCACb,OAAO;AAAA,gCACP,IAAI;AAAA,gCACJ,WAAW;AAAA,kCACT,iBAAiB;AAAA,kCACjB,aAAa;AAAA,gCAAA;AAAA,8BACf;AAAA,8BAEH,UAAA;AAAA,4BAAA;AAAA,0BAAA;AAAA,wBAED,EAAA,CAEJ;AAAA,sBAAA;AAAA,oBAAA;AAAA,kBAAA;AAAA,kBAEF,gBAAAS,EAACC,GAAA,EAAK,WAAS,IAAC,SAAS,GACvB,UAAA;AAAA,oBAAA,gBAAAD,EAACC,GAAA,EAAK,MAAM,GAEV,UAAA;AAAA,sBAAA,gBAAAC;AAAA,wBAACE;AAAA,wBAAA;AAAA,0BACC,IAAI;AAAA,4BACF,SAAS;AAAA,4BACT,KAAK;AAAA,4BACL,GAAG;AAAA,4BACH,iBAAiB;AAAA,4BACjB,cAAc;AAAA,4BACd,QAAQ;AAAA,4BACR,aAAa;AAAA,4BACb,IAAI;AAAA,0BAAA;AAAA,0BAGL,UAAA;AAAA,4BACC,EAAE,OAAO,GAAG,OAAO,qBAAqB,MAAM,UAAA;AAAA,4BAC9C,EAAE,OAAO,GAAG,OAAO,oBAAoB,MAAM,aAAA;AAAA,4BAC7C,GAAIpI,IACA;AAAA,8BACE;AAAA,gCACE,OAAO;AAAA,gCACP,OAAO;AAAA,gCACP,MAAM;AAAA,8BAAA;AAAA,4BACR,IAEF,CAAA;AAAA,0BAAC,EACL,IAAI,CAAC6I,MAAQ;AACb,kCAAMC,IAAW1G,MAAkByG,EAAI;AACvC,mCACE,gBAAAX;AAAA,8BAACS;AAAA,8BAAA;AAAA,gCAEC,SAAS,MAAMtG,GAAiBwG,EAAI,KAAK;AAAA,gCACzC,MAAK;AAAA,gCACL,kBAAgB;AAAA,gCAChB,IAAI;AAAA,kCACF,IAAI;AAAA,kCACJ,IAAI;AAAA,kCACJ,cAAc;AAAA,kCACd,eAAe;AAAA,kCACf,UAAU;AAAA,kCACV,YAAYC,IAAW,MAAM;AAAA,kCAC7B,OAAOA,IAAW,iBAAiB;AAAA,kCACnC,iBAAiBA,IACb,qBACA;AAAA,kCACJ,WAAWA,IACP,iCACA;AAAA,kCACJ,QAAQ;AAAA,kCACR,aAAaA,IAAW,YAAY;AAAA,kCACpC,YAAY;AAAA,kCACZ,WAAW;AAAA,oCACT,iBAAiBA,IACb,qBACA;AAAA,kCAAA;AAAA,gCACN;AAAA,gCAEF,WAAW,gBAAAZ,EAACU,GAAA,EAAiB,UAAUC,EAAI,MAAM;AAAA,gCAEhD,UAAAA,EAAI;AAAA,8BAAA;AAAA,8BA7BAA,EAAI;AAAA,4BAAA;AAAA,0BAgCf,CAAC;AAAA,wBAAA;AAAA,sBAAA;AAAA,sBAEFzG,MAAkB,KACjB,gBAAA4F,EAACC,GAAA,EACC,UAAA;AAAA,wBAAA,gBAAAC,EAACG,GAAA,EAAW,SAAQ,aAAY,UAAA,sBAEhC;AAAA,wBACA,gBAAAH;AAAA,0BAACa;AAAA,0BAAA;AAAA,4BACC,MAAK;AAAA,4BACL,SAASnF,EAAS;AAAA,4BAClB,QAAQ,CAAC,EAAE,OAAAoF,GAAO,YAAY,EAAE,OAAA7D,EAAA,EAAM,MACpC,gBAAA6C,EAAAO,GAAA,EACE,UAAA;AAAA,8BAAA,gBAAAL;AAAA,gCAACe;AAAA,gCAAA;AAAA,kCACC,QAAO;AAAA,kCACP,iBAAgB;AAAA,kCAChB,OAAM;AAAA,kCACN,SAAS;AAAA,oCACP,UAAU;AAAA,oCACV,SAAS,EAAE,SAAS,GAAA;AAAA,oCACpB,iBAAiB;AAAA,oCACjB,sBAAsB;AAAA,oCACtB,UAAU;AAAA,oCACV,sBAAsB;AAAA,oCACtB,oBAAoB;AAAA,oCACpB,UAAU,CAACrJ,KAAc,CAACI;AAAA,kCAAA;AAAA,kCAE5B,OAAOgJ,EAAM,SAAS;AAAA,kCACtB,cAAcA,EAAM,SAAS;AAAA,kCAC7B,UAAUA,EAAM;AAAA,kCAChB,aAAa,EAAE,iBAAiB,GAAA;AAAA,gCAAK;AAAA,8BAAA;AAAA,+BAEtC7D,KAAA,gBAAAA,EAAO,YACN,gBAAA+C;AAAA,gCAACG;AAAA,gCAAA;AAAA,kCACC,SAAQ;AAAA,kCACR,OAAM;AAAA,kCACN,UAAS;AAAA,kCACT,WAAU;AAAA,kCAET,UAAAlD,EAAM;AAAA,gCAAA;AAAA,8BAAA;AAAA,4BACT,EAAA,CAEJ;AAAA,0BAAA;AAAA,wBAAA;AAAA,sBAEH,GACH;AAAA,sBAED/C,MAAkB,KACjB,gBAAA4F,EAACC,GAAA,EACC,UAAA;AAAA,wBAAA,gBAAAC,EAACG,GAAA,EAAW,SAAQ,aAAY,UAAA,qBAAiB;AAAA,wBACjD,gBAAAH;AAAA,0BAACa;AAAA,0BAAA;AAAA,4BACC,MAAK;AAAA,4BACL,SAASnF,EAAS;AAAA,4BAClB,QAAQ,CAAC,EAAE,OAAAoF,GAAO,YAAY,EAAE,OAAA7D,EAAA,EAAM,MACpC,gBAAA6C,EAAAO,GAAA,EACE,UAAA;AAAA,8BAAA,gBAAAL;AAAA,gCAACe;AAAA,gCAAA;AAAA,kCACC,QAAO;AAAA,kCACP,iBAAgB;AAAA,kCAChB,OAAM;AAAA,kCACN,SAAS;AAAA,oCACP,UAAU;AAAA,oCACV,SAAS,EAAE,SAAS,GAAA;AAAA,oCACpB,iBAAiB;AAAA,oCACjB,sBAAsB;AAAA,oCACtB,UAAU;AAAA,oCACV,sBAAsB;AAAA,oCACtB,oBAAoB;AAAA,oCACpB,UAAU,CAACrJ,KAAc,CAACI;AAAA,kCAAA;AAAA,kCAE5B,OAAOgJ,EAAM,SAAS;AAAA,kCACtB,cAAcA,EAAM,SAAS;AAAA,kCAC7B,UAAUA,EAAM;AAAA,kCAChB,aAAa,EAAE,iBAAiB,GAAA;AAAA,gCAAK;AAAA,8BAAA;AAAA,+BAEtC7D,KAAA,gBAAAA,EAAO,YACN,gBAAA+C;AAAA,gCAACG;AAAA,gCAAA;AAAA,kCACC,SAAQ;AAAA,kCACR,OAAM;AAAA,kCACN,UAAS;AAAA,kCACT,WAAU;AAAA,kCAET,UAAAlD,EAAM;AAAA,gCAAA;AAAA,8BAAA;AAAA,4BACT,EAAA,CAEJ;AAAA,0BAAA;AAAA,wBAAA;AAAA,sBAEH,GACH;AAAA,sBAED/C,MAAkB,KACjB,gBAAA4F,EAACC,GAAA,EACC,UAAA;AAAA,wBAAA,gBAAAC,EAACG,GAAA,EAAW,SAAQ,aAAY,UAAA,uBAEhC;AAAA,wBACA,gBAAAH;AAAA,0BAACa;AAAA,0BAAA;AAAA,4BACC,MAAK;AAAA,4BACL,SAASnF,EAAS;AAAA,4BAClB,QAAQ,CAAC,EAAE,OAAAoF,GAAO,YAAY,EAAE,OAAA7D,EAAA,EAAM,MACpC,gBAAA6C,EAAAO,GAAA,EACE,UAAA;AAAA,8BAAA,gBAAAL;AAAA,gCAACe;AAAA,gCAAA;AAAA,kCACC,QAAO;AAAA,kCACP,iBAAgB;AAAA,kCAChB,OAAM;AAAA,kCACN,SAAS;AAAA,oCACP,UAAU;AAAA,oCACV,SAAS,EAAE,SAAS,GAAA;AAAA,oCACpB,iBAAiB;AAAA,oCACjB,sBAAsB;AAAA,oCACtB,UAAU;AAAA,oCACV,sBAAsB;AAAA,oCACtB,oBAAoB;AAAA,oCACpB,UAAU;AAAA,kCAAA;AAAA,kCAEZ,OAAOD,EAAM,SAAS;AAAA,kCACtB,cAAcA,EAAM,SAAS;AAAA,kCAC7B,UAAUA,EAAM;AAAA,kCAChB,aAAa,EAAE,iBAAiB,GAAA;AAAA,gCAAK;AAAA,8BAAA;AAAA,+BAEtC7D,KAAA,gBAAAA,EAAO,YACN,gBAAA+C;AAAA,gCAACG;AAAA,gCAAA;AAAA,kCACC,SAAQ;AAAA,kCACR,OAAM;AAAA,kCACN,UAAS;AAAA,kCACT,WAAU;AAAA,kCAET,UAAAlD,EAAM;AAAA,gCAAA;AAAA,8BAAA;AAAA,4BACT,EAAA,CAEJ;AAAA,0BAAA;AAAA,wBAAA;AAAA,sBAEH,GACH;AAAA,sBAGF,gBAAA6C;AAAA,wBAACG;AAAA,wBAAA;AAAA,0BACC,SAAQ;AAAA,0BACR,IAAI;AAAA,4BACF,GAAG;AAAA,4BACH,IAAI;AAAA,4BACJ,cAAc;AAAA,4BACd,iBAAiB;AAAA,0BAAA;AAAA,0BAGnB,UAAA;AAAA,4BAAA,gBAAAD;AAAA,8BAACG;AAAA,8BAAA;AAAA,gCACC,SAAQ;AAAA,gCACR,IAAI,EAAE,YAAY,KAAK,IAAI,KAAK,OAAO,eAAA;AAAA,gCACxC,UAAA;AAAA,8BAAA;AAAA,4BAAA;AAAA,4BAGD,gBAAAL,EAACC,GAAA,EAAK,WAAS,IAAC,SAAS,GACvB,UAAA;AAAA,8BAAA,gBAAAD,EAACC,GAAA,EAAK,MAAM,GAAG,IAAI,IACjB,UAAA;AAAA,gCAAA,gBAAAD;AAAA,kCAACK;AAAA,kCAAA;AAAA,oCACC,SAAQ;AAAA,oCACR,IAAI,EAAE,YAAY,KAAK,IAAI,IAAA;AAAA,oCAC5B,UAAA;AAAA,sCAAA;AAAA,wDACa,QAAA,EAAK,OAAO,EAAE,OAAO,UAAA,GAAa,UAAA,IAAA,CAAC;AAAA,oCAAA;AAAA,kCAAA;AAAA,gCAAA;AAAA,kDAEhDa,GAAA,EACC,UAAA,gBAAAhB;AAAA,kCAACa;AAAA,kCAAA;AAAA,oCACC,MAAK;AAAA,oCACL,SAASnF,EAAS;AAAA,oCAClB,OAAO,EAAE,UAAU,kBAAA;AAAA,oCACnB,UAAU,CAAChE,KAAc,CAACI;AAAA,oCAC1B,cACEN,EAAU,aAAa,UACvBA,EAAU,aAAa,OACnB,OAAOA,EAAU,QAAQ,IACzB;AAAA,oCAEN,QAAQ,CAAC,EAAE,OAAAsJ,EAAA,MACT,gBAAAhB,EAACmB,IAAA,EAAW,KAAG,IAAE,GAAGH,GAAO,OAAOA,EAAM,OACtC,UAAA;AAAA,sCAAA,gBAAAd;AAAA,wCAACkB;AAAA,wCAAA;AAAA,0CACC,OAAM;AAAA,0CACN,SACE,gBAAAlB;AAAA,4CAACmB;AAAA,4CAAA;AAAA,8CACC,UAAU,CAACzJ,KAAc,CAACI;AAAA,8CAC1B,MAAK;AAAA,4CAAA;AAAA,0CAAA;AAAA,0CAGT,OACE,gBAAAkI,EAACG,GAAA,EAAW,SAAQ,SAAQ,UAAA,OAAA,CAAI;AAAA,wCAAA;AAAA,sCAAA;AAAA,sCAGpC,gBAAAH;AAAA,wCAACkB;AAAA,wCAAA;AAAA,0CACC,OAAM;AAAA,0CACN,SACE,gBAAAlB;AAAA,4CAACmB;AAAA,4CAAA;AAAA,8CACC,UAAU,CAACzJ,KAAc,CAACI;AAAA,8CAC1B,MAAK;AAAA,4CAAA;AAAA,0CAAA;AAAA,0CAGT,OACE,gBAAAkI,EAACG,GAAA,EAAW,SAAQ,SAAQ,UAAA,SAAA,CAAM;AAAA,wCAAA;AAAA,sCAAA;AAAA,oCAEtC,EAAA,CACF;AAAA,kCAAA;AAAA,gCAAA,EAEJ,CACF;AAAA,8BAAA,GACF;AAAA,8BACA,gBAAAL,EAACC,GAAA,EAAK,MAAM,GAAG,IAAI,IACjB,UAAA;AAAA,gCAAA,gBAAAD;AAAA,kCAACK;AAAA,kCAAA;AAAA,oCACC,SAAQ;AAAA,oCACR,IAAI,EAAE,YAAY,KAAK,IAAI,IAAA;AAAA,oCAC5B,UAAA;AAAA,sCAAA;AAAA,sCACiB;AAAA,wDACf,QAAA,EAAK,OAAO,EAAE,OAAO,UAAA,GAAa,UAAA,IAAA,CAAC;AAAA,oCAAA;AAAA,kCAAA;AAAA,gCAAA;AAAA,kDAErCa,GAAA,EACC,UAAA,gBAAAhB;AAAA,kCAACa;AAAA,kCAAA;AAAA,oCACC,MAAK;AAAA,oCACL,IAAG;AAAA,oCACH,SAASnF,EAAS;AAAA,oCAClB,OAAO,EAAE,UAAU,kBAAA;AAAA,oCACnB,UAAU,CAAChE,KAAc,CAACI;AAAA,oCAC1B,cACEN,EAAU,kBAAkB,UAC5BA,EAAU,kBAAkB,OACxB,OAAOA,EAAU,aAAa,IAC9B;AAAA,oCAEN,QAAQ,CAAC,EAAE,OAAAsJ,EAAA,MACT,gBAAAhB,EAACmB,IAAA,EAAW,KAAG,IAAE,GAAGH,GAAO,OAAOA,EAAM,OACtC,UAAA;AAAA,sCAAA,gBAAAd;AAAA,wCAACkB;AAAA,wCAAA;AAAA,0CACC,OAAM;AAAA,0CACN,SACE,gBAAAlB;AAAA,4CAACmB;AAAA,4CAAA;AAAA,8CACC,UAAU,CAACzJ,KAAc,CAACI;AAAA,8CAC1B,MAAK;AAAA,4CAAA;AAAA,0CAAA;AAAA,0CAGT,OACE,gBAAAkI,EAACG,GAAA,EAAW,SAAQ,SAAQ,UAAA,MAAA,CAAG;AAAA,wCAAA;AAAA,sCAAA;AAAA,sCAGnC,gBAAAH;AAAA,wCAACkB;AAAA,wCAAA;AAAA,0CACC,OAAM;AAAA,0CACN,SACE,gBAAAlB;AAAA,4CAACmB;AAAA,4CAAA;AAAA,8CACC,UAAU,CAACzJ,KAAc,CAACI;AAAA,8CAC1B,MAAK;AAAA,4CAAA;AAAA,0CAAA;AAAA,0CAGT,OACE,gBAAAkI,EAACG,GAAA,EAAW,SAAQ,SAAQ,UAAA,KAAA,CAAE;AAAA,wCAAA;AAAA,sCAAA;AAAA,oCAElC,EAAA,CACF;AAAA,kCAAA;AAAA,gCAAA,EAEJ,CACF;AAAA,8BAAA,GACF;AAAA,8BACA,gBAAAL,EAACC,GAAA,EAAK,MAAM,GAAG,IAAI,IACjB,UAAA;AAAA,gCAAA,gBAAAD;AAAA,kCAACK;AAAA,kCAAA;AAAA,oCACC,SAAQ;AAAA,oCACR,IAAI,EAAE,YAAY,KAAK,IAAI,IAAA;AAAA,oCAC5B,UAAA;AAAA,sCAAA;AAAA,wDACY,QAAA,EAAK,OAAO,EAAE,OAAO,UAAA,GAAa,UAAA,IAAA,CAAC;AAAA,oCAAA;AAAA,kCAAA;AAAA,gCAAA;AAAA,kDAE/Ca,GAAA,EACC,UAAA,gBAAAhB;AAAA,kCAACa;AAAA,kCAAA;AAAA,oCACC,MAAK;AAAA,oCACL,IAAG;AAAA,oCACH,SAASnF,EAAS;AAAA,oCAClB,OAAO,EAAE,UAAU,kBAAA;AAAA,oCACnB,UAAU,CAAChE,KAAc,CAACI;AAAA,oCAC1B,cACEN,EAAU,aAAa,UACvBA,EAAU,aAAa,OACnB,OAAOA,EAAU,QAAQ,IACzB;AAAA,oCAEN,QAAQ,CAAC,EAAE,OAAAsJ,EAAA,MACT,gBAAAhB,EAACmB,IAAA,EAAW,KAAG,IAAE,GAAGH,GAAO,OAAOA,EAAM,OACtC,UAAA;AAAA,sCAAA,gBAAAd;AAAA,wCAACkB;AAAA,wCAAA;AAAA,0CACC,OAAM;AAAA,0CACN,SACE,gBAAAlB;AAAA,4CAACmB;AAAA,4CAAA;AAAA,8CACC,UAAU,CAACzJ,KAAc,CAACI;AAAA,8CAC1B,MAAK;AAAA,4CAAA;AAAA,0CAAA;AAAA,0CAGT,OACE,gBAAAkI,EAACG,GAAA,EAAW,SAAQ,SAAQ,UAAA,MAAA,CAAG;AAAA,wCAAA;AAAA,sCAAA;AAAA,sCAGnC,gBAAAH;AAAA,wCAACkB;AAAA,wCAAA;AAAA,0CACC,OAAM;AAAA,0CACN,SACE,gBAAAlB;AAAA,4CAACmB;AAAA,4CAAA;AAAA,8CACC,UAAU,CAACzJ,KAAc,CAACI;AAAA,8CAC1B,MAAK;AAAA,4CAAA;AAAA,0CAAA;AAAA,0CAGT,OACE,gBAAAkI,EAACG,GAAA,EAAW,SAAQ,SAAQ,UAAA,KAAA,CAAE;AAAA,wCAAA;AAAA,sCAAA;AAAA,oCAElC,EAAA,CACF;AAAA,kCAAA;AAAA,gCAAA,EAEJ,CACF;AAAA,8BAAA,EAAA,CACF;AAAA,4BAAA,EAAA,CACF;AAAA,0BAAA;AAAA,wBAAA;AAAA,sBAAA;AAAA,sBAEDtE,MAAgB,UACf,gBAAAiE,EAAAO,GAAA,EACE,UAAA;AAAA,wBAAA,gBAAAL;AAAA,0BAACG;AAAA,0BAAA;AAAA,4BACC,SAAQ;AAAA,4BACR,WAAU;AAAA,4BACV,IAAI,EAAE,YAAY,KAAK,OAAO,UAAA;AAAA,4BAC/B,UAAA;AAAA,0BAAA;AAAA,wBAAA;AAAA,0CAGAJ,GAAA,EAAK,WAAS,IAAC,SAAS,GAAG,WAAU,QACpC,UAAA;AAAA,0BAAA,gBAAAD,EAACC,GAAA,EAAK,MAAM,GAAG,IAAI,IACjB,UAAA;AAAA,4BAAA,gBAAAD;AAAA,8BAACK;AAAA,8BAAA;AAAA,gCACC,SAAQ;AAAA,gCACR,IAAI,EAAE,IAAI,KAAK,YAAY,IAAA;AAAA,gCAC5B,UAAA;AAAA,kCAAA;AAAA,oDACe,QAAA,EAAK,OAAO,EAAE,OAAO,MAAA,GAAS,UAAA,KAAC;AAAA,kCAAO;AAAA,gCAAA;AAAA,8BAAA;AAAA,4BAAA;AAAA,4BAEtD,gBAAAH;AAAA,8BAACa;AAAA,8BAAA;AAAA,gCACC,MAAK;AAAA,gCACL,SAASnF,EAAS;AAAA,gCAClB,OAAO;AAAA,kCACL,UAAU,CAACM,MACTH,MAAgB,UAChB,CAAC,CAACG,KACF;AAAA,gCAAA;AAAA,gCAEJ,QAAQ,CAAC;AAAA,kCACP,OAAO,EAAE,UAAAoF,GAAU,OAAApF,EAAA;AAAA,kCACnB,YAAY,EAAE,OAAAiB,EAAA;AAAA,gCAAM,MAEpB,gBAAA+C;AAAA,kCAACqB;AAAA,kCAAA;AAAA,oCACC,SAASjJ;AAAA,oCACT,OAAO4D,KAAS;AAAA,oCAChB,UAAU,CAACtE,KAAc,CAACI;AAAA,oCAC1B,UAAU,CAACwJ,GAAGC,MAAaH,EAASG,CAAQ;AAAA,oCAC5C,aAAa,CAACC,MACZ,gBAAAxB;AAAA,sCAACyB;AAAA,sCAAA;AAAA,wCACE,GAAGD;AAAA,wCACJ,MAAK;AAAA,wCACL,aAAY;AAAA,wCACZ,OAAO,CAAC,CAACvE;AAAA,wCACT,YAAYA,KAAA,gBAAAA,EAAO;AAAA,sCAAA;AAAA,oCAAA;AAAA,kCACrB;AAAA,gCAAA;AAAA,8BAEJ;AAAA,4BAAA;AAAA,0BAEJ,GACF;AAAA,0BAEA,gBAAA+C,EAACD,GAAA,EAAK,MAAM,IACV,UAAA,gBAAAD;AAAA,4BAACI;AAAA,4BAAA;AAAA,8BACC,IAAI;AAAA,gCACF,QAAQ;AAAA,gCACR,cAAc;AAAA,gCACd,GAAG;AAAA,gCACH,iBAAiB;AAAA,8BAAA;AAAA,8BAGnB,UAAA;AAAA,gCAAA,gBAAAF;AAAA,kCAACG;AAAA,kCAAA;AAAA,oCACC,SAAQ;AAAA,oCACR,IAAI,EAAE,YAAY,KAAK,IAAI,KAAK,OAAO,UAAA;AAAA,oCACxC,UAAA;AAAA,kCAAA;AAAA,gCAAA;AAAA,gCAID,gBAAAL;AAAA,kCAACK;AAAA,kCAAA;AAAA,oCACC,SAAQ;AAAA,oCACR,IAAI,EAAE,IAAI,KAAK,YAAY,IAAA;AAAA,oCAC5B,UAAA;AAAA,sCAAA;AAAA,wDACc,QAAA,EAAK,OAAO,EAAE,OAAO,MAAA,GAAS,UAAA,KAAC;AAAA,sCAAO;AAAA,oCAAA;AAAA,kCAAA;AAAA,gCAAA;AAAA,gCAErD,gBAAAH;AAAA,kCAACa;AAAA,kCAAA;AAAA,oCACC,MAAK;AAAA,oCACL,SAASnF,EAAS;AAAA,oCAClB,OAAO;AAAA,sCACL,UAAU,CAACM,MACTH,MAAgB,UAChB,CAAC,EAACG,KAAA,QAAAA,EAAO,WACT;AAAA,oCAAA;AAAA,oCAEJ,QAAQ,CAAC,EAAE,OAAA8E,GAAO,YAAY,EAAE,OAAA7D,EAAA,QAC9B,gBAAA+C;AAAA,sCAACyB;AAAA,sCAAA;AAAA,wCACE,GAAGX;AAAA,wCACJ,OAAOA,EAAM,SAAS;AAAA,wCACtB,MAAK;AAAA,wCACL,SAAQ;AAAA,wCACR,WAAS;AAAA,wCACT,aAAY;AAAA,wCACZ,OAAO,CAAC,CAAC7D;AAAA,wCACT,YAAYA,KAAA,gBAAAA,EAAO;AAAA,wCACnB,WAAW;AAAA,0CACT,OAAO;AAAA,4CACL,UAAU,CAACvF,KAAc,CAACI;AAAA,0CAAA;AAAA,wCAC5B;AAAA,wCAEF,IAAI,EAAE,IAAI,EAAA;AAAA,sCAAE;AAAA,oCAAA;AAAA,kCACd;AAAA,gCAAA;AAAA,gCAIJ,gBAAAgI;AAAA,kCAACI;AAAA,kCAAA;AAAA,oCACC,IAAI,EAAE,SAAS,QAAQ,YAAY,UAAU,IAAI,EAAA;AAAA,oCAEjD,UAAA;AAAA,sCAAA,gBAAAJ;AAAA,wCAACK;AAAA,wCAAA;AAAA,0CACC,SAAQ;AAAA,0CACR,IAAI,EAAE,YAAY,KAAK,OAAO,WAAW,MAAM,EAAA;AAAA,0CAChD,UAAA;AAAA,4CAAA;AAAA,8DAEE,QAAA,EAAK,OAAO,EAAE,OAAO,MAAA,GAAS,UAAA,KAAC;AAAA,4CAAO;AAAA,0CAAA;AAAA,wCAAA;AAAA,sCAAA;AAAA,uCAEvCzI,KAAcI,MACd,gBAAAkI,EAACQ,KAAQ,OAAM,iBAAgB,OAAK,IAClC,UAAA,gBAAAR;AAAA,wCAAC0B;AAAA,wCAAA;AAAA,0CACC,MAAK;AAAA,0CACL,SAAS,MAAM;AACb,kDAAMC,IAAY;AAAA,8CAChB,GAAGjH;AAAA,8CACH,EAAE,KAAK,IAAI,OAAO,GAAA;AAAA,4CAAG;AAEvB,4CAAAC,EAAiBgH,CAAS,GAC1BjG,EAAS;AAAA,8CACP;AAAA,8CACAiG;AAAA,8CACA;AAAA,gDACE,aAAa;AAAA,gDACb,gBAAgB;AAAA,8CAAA;AAAA,4CAClB;AAAA,0CAEJ;AAAA,0CACA,IAAI;AAAA,4CACF,iBAAiB;AAAA,4CACjB,OAAO;AAAA,4CACP,WAAW,EAAE,iBAAiB,UAAA;AAAA,4CAC9B,cAAc;AAAA,4CACd,OAAO;AAAA,4CACP,QAAQ;AAAA,0CAAA;AAAA,0CAGV,UAAA,gBAAA3B;AAAA,4CAACU;AAAA,4CAAA;AAAA,8CACC,UAAS;AAAA,8CACT,WAAU;AAAA,4CAAA;AAAA,0CAAA;AAAA,wCACZ;AAAA,sCAAA,EACF,CACF;AAAA,oCAAA;AAAA,kCAAA;AAAA,gCAAA;AAAA,gCAIHhG,EAAc,WAAW,KACxB,gBAAAsF;AAAA,kCAACG;AAAA,kCAAA;AAAA,oCACC,SAAQ;AAAA,oCACR,IAAI,EAAE,OAAO,WAAW,WAAW,SAAA;AAAA,oCACpC,UAAA;AAAA,kCAAA;AAAA,gCAAA;AAAA,gCAKFzF,EAAc,IAAI,CAACkH,GAAOC,MACzB,gBAAA/B;AAAA,kCAACI;AAAA,kCAAA;AAAA,oCAEC,IAAI;AAAA,sCACF,SAAS;AAAA,sCACT,KAAK;AAAA,sCACL,YAAY;AAAA,sCACZ,IAAI;AAAA,sCACJ,GAAG;AAAA,sCACH,cAAc;AAAA,sCACd,iBAAiB;AAAA,sCACjB,QAAQ;AAAA,oCAAA;AAAA,oCAGV,UAAA;AAAA,sCAAA,gBAAAF;AAAA,wCAACyB;AAAA,wCAAA;AAAA,0CACC,MAAK;AAAA,0CACL,OAAM;AAAA,0CACN,OAAOG,EAAM;AAAA,0CACb,aAAY;AAAA,0CACZ,UAAU,CAAClK,KAAc,CAACI;AAAA,0CAC1B,UAAU,CAACgK,MAAM;AACf,kDAAMC,IAAUrH,EAAc;AAAA,8CAAI,CAACuB,GAAG+F,MACpCA,MAAMH,IACF,EAAE,GAAG5F,GAAG,KAAK6F,EAAE,OAAO,MAAA,IACtB7F;AAAA,4CAAA;AAEN,4CAAAtB,EAAiBoH,CAAO,GACxBrG,EAAS;AAAA,8CACP;AAAA,8CACAqG;AAAA,8CACA;AAAA,gDACE,aAAa;AAAA,gDACb,gBAAgB;AAAA,8CAAA;AAAA,4CAClB;AAAA,0CAEJ;AAAA,0CACA,IAAI,EAAE,MAAM,EAAA;AAAA,wCAAE;AAAA,sCAAA;AAAA,sCAGhB,gBAAA/B;AAAA,wCAACqB;AAAA,wCAAA;AAAA,0CACC,MAAK;AAAA,0CACL,SAASzH,EAAmB;AAAA,4CAC1B,CAACgD,MAAQA,EAAI;AAAA,0CAAA;AAAA,0CAEf,OAAOgF,EAAM,SAAS;AAAA,0CACtB,UAAU,CAAClK,KAAc,CAACI;AAAA,0CAC1B,eACE8B,EAAmB,WAAW,IAC1B,0BACA;AAAA,0CAEN,UAAU,CAAC0H,GAAGC,MAAa;AACzB,kDAAMQ,IAAUrH,EAAc;AAAA,8CAAI,CAACuB,GAAG+F,MACpCA,MAAMH,IACF,EAAE,GAAG5F,GAAG,OAAOsF,KAAY,OAC3BtF;AAAA,4CAAA;AAEN,4CAAAtB,EAAiBoH,CAAO,GACxBrG,EAAS;AAAA,8CACP;AAAA,8CACAqG;AAAA,8CACA;AAAA,gDACE,aAAa;AAAA,gDACb,gBAAgB;AAAA,8CAAA;AAAA,4CAClB;AAAA,0CAEJ;AAAA,0CACA,aAAa,CAACP,MACZ,gBAAAxB;AAAA,4CAACyB;AAAA,4CAAA;AAAA,8CACE,GAAGD;AAAA,8CACJ,OAAM;AAAA,8CACN,aAAY;AAAA,4CAAA;AAAA,0CAAA;AAAA,0CAGhB,IAAI,EAAE,MAAM,EAAA;AAAA,wCAAE;AAAA,sCAAA;AAAA,uCAGd9J,KAAcI,MACd,gBAAAkI,EAACQ,KAAQ,OAAM,oBAAmB,OAAK,IACrC,UAAA,gBAAAR;AAAA,wCAAC0B;AAAA,wCAAA;AAAA,0CACC,MAAK;AAAA,0CACL,SAAS,MAAM;AACb,kDAAMK,IAAUrH,EAAc;AAAA,8CAC5B,CAAC4G,GAAGU,MAAMA,MAAMH;AAAA,4CAAA;AAElB,4CAAAlH,EAAiBoH,CAAO,GACxBrG,EAAS;AAAA,8CACP;AAAA,8CACAqG;AAAA,8CACA;AAAA,gDACE,aAAa;AAAA,gDACb,gBAAgB;AAAA,8CAAA;AAAA,4CAClB;AAAA,0CAEJ;AAAA,0CACA,IAAI,EAAE,OAAO,WAAW,WAAW,SAAA;AAAA,0CAEnC,UAAA,gBAAA/B;AAAA,4CAACU;AAAA,4CAAA;AAAA,8CACC,UAAS;AAAA,8CACT,WAAU;AAAA,4CAAA;AAAA,0CAAA;AAAA,wCACZ;AAAA,sCAAA,EACF,CACF;AAAA,oCAAA;AAAA,kCAAA;AAAA,kCApGGmB;AAAA,gCAAA,CAuGR;AAAA,gCAEAnG,EAAS,UAAU,OAAO,qBACzB,gBAAAsE;AAAA,kCAACG;AAAA,kCAAA;AAAA,oCACC,SAAQ;AAAA,oCACR,IAAI,EAAE,OAAO,WAAW,IAAI,KAAK,SAAS,QAAA;AAAA,oCAGxC,UAAAzE,EAAS,UAAU,OAAO,kBACvB;AAAA,kCAAA;AAAA,gCAAA;AAAA,8BAEP;AAAA,4BAAA;AAAA,0BAAA,GAGN;AAAA,0BAEA,gBAAAoE,EAACC,GAAA,EAAK,MAAM,GAAG,IAAI,IACjB,UAAA;AAAA,4BAAA,gBAAAD;AAAA,8BAACK;AAAA,8BAAA;AAAA,gCACC,SAAQ;AAAA,gCACR,IAAI,EAAE,IAAI,KAAK,YAAY,IAAA;AAAA,gCAC5B,UAAA;AAAA,kCAAA;AAAA,oDACgB,QAAA,EAAK,OAAO,EAAE,OAAO,MAAA,GAAS,UAAA,KAAC;AAAA,kCAAO;AAAA,gCAAA;AAAA,8BAAA;AAAA,4BAAA;AAAA,4BAEvD,gBAAAH;AAAA,8BAACa;AAAA,8BAAA;AAAA,gCACC,MAAK;AAAA,gCACL,SAASnF,EAAS;AAAA,gCAClB,cAAa;AAAA,gCACb,OAAO;AAAA,kCACL,UAAU,CAACM,MACTH,MAAgB,UACf,CAAC,EAACG,KAAA,QAAAA,EAAO,WAAUA,EAAM,OAAO,SAAS,KAC1C;AAAA,gCAAA;AAAA,gCAEJ,QAAQ,CAAC,EAAE,OAAA8E,GAAO,YAAY,EAAE,OAAA7D,EAAA,QAC9B,gBAAA+C;AAAA,kCAACyB;AAAA,kCAAA;AAAA,oCACE,GAAGX;AAAA,oCACJ,MAAK;AAAA,oCACL,SAAQ;AAAA,oCACR,WAAS;AAAA,oCACT,OAAO,CAAC,CAAC7D;AAAA,oCACT,YAAYA,KAAA,gBAAAA,EAAO;AAAA,oCACnB,WAAW;AAAA,sCACT,OAAO;AAAA,wCACL,UAAU,CAACvF,KAAc,CAACI;AAAA,wCAC1B,gBACE,gBAAAkI,EAACiC,IAAA,EAAe,UAAS,SAAQ,UAAA,oBAEjC;AAAA,wCAEF,cACE,gBAAAjC,EAACiC,IAAA,EAAe,UAAS,OAAM,UAAA,IAAA,CAE/B;AAAA,sCAAA;AAAA,oCAEJ;AAAA,kCACF;AAAA,gCAAA;AAAA,8BACF;AAAA,4BAAA;AAAA,0BAEJ,EAAA,CACF;AAAA,wBAAA,EAAA,CACF;AAAA,sBAAA,EAAA,CACF;AAAA,oBAAA,GAEJ;AAAA,oBACA,gBAAAjC,EAACD,GAAA,EAAK,MAAM,GACV,UAAA,gBAAAD;AAAA,sBAACG;AAAA,sBAAA;AAAA,wBACC,SAAQ;AAAA,wBACR,IAAI,EAAE,IAAI,GAAG,cAAc,KAAK,QAAQ,QAAQ,IAAI,EAAA;AAAA,wBAEpD,UAAA;AAAA,0BAAA,gBAAAH;AAAA,4BAACI;AAAA,4BAAA;AAAA,8BACC,IAAI;AAAA,gCACF,SAAS;AAAA,gCACT,gBAAgB;AAAA,gCAChB,YAAY;AAAA,gCACZ,UAAU;AAAA,gCACV,KAAK;AAAA,gCACL,IAAI;AAAA,8BAAA;AAAA,8BAIN,UAAA;AAAA,gCAAA,gBAAAJ;AAAA,kCAACI;AAAA,kCAAA;AAAA,oCACC,IAAI;AAAA,sCACF,SAAS;AAAA,sCACT,KAAK;AAAA,sCACL,GAAG;AAAA,sCACH,iBAAiB;AAAA,sCACjB,cAAc;AAAA,sCACd,QAAQ;AAAA,sCACR,aAAa;AAAA,sCACb,IAAI;AAAA,oCAAA;AAAA,oCAGL,UAAA;AAAA,sCAAA,CAACpI,KACA,gBAAAkI;AAAA,wCAACS;AAAA,wCAAA;AAAA,0CACC,MAAK;AAAA,0CACL,SAAS,MAAM;AACb,4CAAAxG,GAAe,CAAC,GAChBN,EAAgB,EAAE;AAAA,0CACpB;AAAA,0CACA,IAAI;AAAA,4CACF,IAAI;AAAA,4CACJ,IAAI;AAAA,4CACJ,cAAc;AAAA,4CACd,eAAe;AAAA,4CACf,UAAU;AAAA,4CACV,YAAYK,MAAgB,IAAI,MAAM;AAAA,4CACtC,OACEA,MAAgB,IACZ,iBACA;AAAA,4CACN,iBACEA,MAAgB,IACZ,qBACA;AAAA,4CACN,WACEA,MAAgB,IACZ,iCACA;AAAA,4CACN,QAAQ;AAAA,4CACR,aACEA,MAAgB,IAAI,YAAY;AAAA,4CAClC,WAAW;AAAA,8CACT,iBACEA,MAAgB,IACZ,qBACA;AAAA,4CAAA;AAAA,0CACR;AAAA,0CAEH,UAAA;AAAA,wCAAA;AAAA,sCAAA;AAAA,sCAIFpC,MAAsB,UACrB,gBAAAoI;AAAA,wCAACS;AAAA,wCAAA;AAAA,0CACC,MAAK;AAAA,0CACL,SAAS,MAAM;AACb,4CAAAxG,GAAe,CAAC,GAChBN,EAAgB,EAAE;AAAA,0CACpB;AAAA,0CACA,IAAI;AAAA,4CACF,IAAI;AAAA,4CACJ,IAAI;AAAA,4CACJ,cAAc;AAAA,4CACd,eAAe;AAAA,4CACf,UAAU;AAAA,4CACV,YAAYK,MAAgB,IAAI,MAAM;AAAA,4CACtC,OACEA,MAAgB,IACZ,iBACA;AAAA,4CACN,iBACEA,MAAgB,IACZ,qBACA;AAAA,4CACN,WACEA,MAAgB,IACZ,iCACA;AAAA,4CACN,QAAQ;AAAA,4CACR,aACEA,MAAgB,IAAI,YAAY;AAAA,4CAClC,WAAW;AAAA,8CACT,iBACEA,MAAgB,IACZ,qBACA;AAAA,4CAAA;AAAA,0CACR;AAAA,0CAGD,UAAClC,IAAmC,YAAf;AAAA,wCAAe;AAAA,sCAAA;AAAA,oCACvC;AAAA,kCAAA;AAAA,gCAAA;AAAA,gCAGHkC,MAAgB,KACfJ,EAAmB,SAAS,KAC5B7B,KACE,gBAAAiI,EAACE,GAAA,EAAI,IAAI,EAAE,UAAU,KAAK,YAAY,KACpC,UAAA,gBAAAF;AAAA,kCAACqB;AAAA,kCAAA;AAAA,oCACC,MAAK;AAAA,oCACL,SAASzH,EAAmB,IAAI,CAACgD,MAAQA,EAAI,IAAI;AAAA,oCACjD,OAAOlB,EAAS,UAAU,YAAY,KAAK;AAAA,oCAC3C,UAAU,CAAChE,KAAc,CAACI;AAAA,oCAC1B,UAAU,CAACwJ,GAAGC,MAAa;AACzB,4CAAMW,IAActI,EAAmB;AAAA,wCACrC,CAACgD,OAAS;AAAA,0CACR,GAAGA;AAAA,0CACH,cAAcA,EAAI,SAAS2E;AAAA,wCAAA;AAAA,sCAC7B;AAEF,sCAAA1H,EAAsBqI,CAAW,GACjCxG,EAAS,SAAS,mBAAmBwG,GAAa;AAAA,wCAChD,aAAa;AAAA,sCAAA,CACd,GACDxG,EAAS,SAAS,cAAc6F,CAAQ;AAAA,oCAC1C;AAAA,oCACA,aAAa,CAACC,MACZ,gBAAAxB;AAAA,sCAACyB;AAAA,sCAAA;AAAA,wCACE,GAAGD;AAAA,wCACJ,OAAM;AAAA,wCACN,aAAY;AAAA,sCAAA;AAAA,oCAAA;AAAA,oCAGhB,cAAc,CAACW,GAAOC,wBACnB,MAAA,EAAI,GAAGD,GACN,UAAA,gBAAAnC,EAACQ,GAAA,EAAQ,OAAO4B,GAAQ,WAAU,QAAO,OAAK,IAC5C,UAAA,gBAAApC,EAAC,UAAK,WAAU,0BACb,UAAAoC,EAAA,CACH,EAAA,CACF,EAAA,CACF;AAAA,kCAAA;AAAA,gCAAA,GAGN;AAAA,iCAGFtK,KAAqBJ,MACrB,gBAAAsI;AAAA,kCAACS;AAAA,kCAAA;AAAA,oCACC,IAAG;AAAA,oCACH,MAAK;AAAA,oCACL,SAAQ;AAAA,oCACR,IAAI;AAAA,sCACF,cAAc;AAAA,sCACd,YAAY;AAAA,sCACZ,eAAe;AAAA,sCACf,WAAW;AAAA,sCACX,IAAI;AAAA,sCACJ,IAAI;AAAA,oCAAA;AAAA,oCAEN,UAAU,CAAC,CAAC/E,EAAS,UAAU,OAAO;AAAA,oCACtC,SAAS,OAAO,MAAM;AACpB,4CAAM2G,IAAS,EAAE;AAEjB,sCADgB,MAAM3G,EAAS,QAAQ,WAAW,MAElDnB,GAAmB,IAAI,GACvBF,GAAYgI,CAAM;AAAA,oCACpB;AAAA,oCACA,WAAW,gBAAArC,EAACU,GAAA,EAAiB,UAAU,SAAA,CAAU;AAAA,oCAClD,UAAA;AAAA,kCAAA;AAAA,gCAAA;AAAA,iCAID5I,KAAqBJ,MACrB,gBAAAsI;AAAA,kCAACsC;AAAA,kCAAA;AAAA,oCACC,IAAAzH;AAAA,oCACA,MAAMD;AAAA,oCACN,UAAAR;AAAA,oCACA,SAAS,YAAY;AACnB,sCAAAC,GAAY,IAAI,GAChBqB,EAAS,SAAS,iBAAiB,EAAE,GACrCA,EAAS,SAAS,iBAAiB,IAAI,GACvCA,EAAS,SAAS,gBAAgB,EAAK,GACvCA,EAAS,YAAY;AAAA,wCACnB;AAAA,wCACA;AAAA,sCAAA,CACD,GACDnB,GAAmB,IAAI;AAAA,oCACzB;AAAA,oCACA,cAAc;AAAA,sCACZ,UAAU;AAAA,sCACV,YAAY;AAAA,oCAAA;AAAA,oCAGd,UAAA,gBAAAuF;AAAA,sCAACC;AAAA,sCAAA;AAAA,wCACC,WAAS;AAAA,wCACT,SAAS;AAAA,wCACT,IAAI;AAAA,0CACF,GAAG;AAAA,0CACH,OAAO;AAAA,0CACP,SAASwC,KAAA7G,EACN,UAAU,iBAAiB,MADrB,QAAA6G,GAEL,KAAK,CAAC3F,MAAQA,EAAI,gBAElB,UADA;AAAA,wCACA;AAAA,wCAGN,UAAA;AAAA,0CAAA,gBAAAoD,EAACD,GAAA,EAAK,MAAM,IAAI,WAAU,SACxB,UAAA,gBAAAC,EAACgB,GAAA,EAAY,WAAS,IACpB,UAAA,gBAAAhB;AAAA,4CAACa;AAAA,4CAAA;AAAA,8CACC,MAAK;AAAA,8CACL,IAAG;AAAA,8CACH,SAASnF,EAAS;AAAA,8CAClB,QAAQ,CAAC;AAAA,gDACP,OAAO,EAAE,UAAA0F,GAAU,OAAApF,GAAO,GAAG8E,EAAA;AAAA,gDAC7B,YAAY,EAAE,OAAA7D,EAAA;AAAA,8CAAM,MAEpB,gBAAA+C;AAAA,gDAACyB;AAAA,gDAAA;AAAA,kDACE,GAAGX;AAAA,kDACJ,QAAO9E,KAAA,gBAAAA,EAAO,WAAU;AAAA,kDACxB,SAAQ;AAAA,kDACR,WAAS;AAAA,kDACT,MAAK;AAAA,kDACL,OAAO,CAAC,CAACiB;AAAA,kDACT,YAAYA,KAAA,gBAAAA,EAAO;AAAA,kDACnB,OAAM;AAAA,kDACN,IAAI;AAAA,oDACF,yBAAyB;AAAA,sDACvB,UAAU;AAAA,oDAAA;AAAA,oDAEZ,QAAQ;AAAA,kDAAA;AAAA,kDAEV,UAAU,CAAC6E,MAAM;AACf,oDAAAV,EAASU,EAAE,OAAO,KAAK,GACvBtC,GAA2BsC,EAAE,OAAO,KAAK;AAAA,kDAC3C;AAAA,gDAAA;AAAA,8CAAA;AAAA,4CACF;AAAA,0CAAA,GAGN,EAAA,CACF;AAAA,0CACA,gBAAA9B,EAACD,KAAK,MAAM,IAAI,WAAU,SACxB,UAAA,gBAAAC,EAACgB,GAAA,EAAY,WAAS,IACpB,UAAA,gBAAAhB;AAAA,4CAACa;AAAA,4CAAA;AAAA,8CACC,MAAK;AAAA,8CACL,IAAG;AAAA,8CACH,SAASnF,EAAS;AAAA,8CAClB,QAAQ,CAAC;AAAA,gDACP,OAAO,EAAE,UAAA0F,GAAU,OAAApF,EAAA;AAAA,gDACnB,YAAY,EAAE,OAAAiB,EAAA;AAAA,8CAAM,MAEpB,gBAAA+C;AAAA,gDAACqB;AAAA,gDAAA;AAAA,kDACC,SAASvG,MAAqB,CAAA;AAAA,kDAC9B,QAAOkB,KAAA,gBAAAA,EAAO,WAAU;AAAA,kDACxB,gBAAgB,CAACoG,MAAWA;AAAA,kDAC5B,UAAU,CAACI,GAAOjB,MAAa;AAC7B,oDAAAH,EAASG,CAAQ;AAAA,kDACnB;AAAA,kDACA,aAAa,CAACC,MACZ,gBAAAxB;AAAA,oDAACyB;AAAA,oDAAA;AAAA,sDACE,GAAGD;AAAA,sDACJ,MAAK;AAAA,sDACL,OAAO,CAAC,CAACvE;AAAA,sDACT,YAAYA,KAAA,gBAAAA,EAAO;AAAA,sDACnB,IAAI;AAAA,wDACF,yBAAyB;AAAA,0DACvB,UAAU;AAAA,wDAAA;AAAA,wDAEZ,GAAG;AAAA,sDAAA;AAAA,sDAEL,OAAM;AAAA,sDACN,UAAU,CAAC6E,MAAM;AACf,wDAAAV,EAASU,EAAE,OAAO,KAAK,GACvBpG,EAAS;AAAA,0DACP;AAAA,0DACAoG,EAAE,OAAO;AAAA,0DACT;AAAA,4DACE,aAAa;AAAA,0DAAA;AAAA,wDACf;AAAA,sDAEJ;AAAA,oDAAA;AAAA,kDAAA;AAAA,gDACF;AAAA,8CAAA;AAAA,4CAEJ;AAAA,0CAAA,GAGN,EAAA,CACF;AAAA,0CACCxH,MAAoB,QACnB,CAACoB,EACE,UAAU,iBAAiB,EAC3B,KAAK,CAACkB,MAAQA,EAAI,YAAY,KAC/B,gBAAAoD,EAACD,KAAK,MAAM,IAAI,WAAU,SACxB,UAAA,gBAAAC;AAAA,4CAACkB;AAAA,4CAAA;AAAA,8CACC,SACE,gBAAAlB;AAAA,gDAACa;AAAA,gDAAA;AAAA,kDACC,MAAK;AAAA,kDACL,SAASnF,EAAS;AAAA,kDAClB,QAAQ,CAAC;AAAA,oDACP,OAAO,EAAE,UAAA0F,GAAU,OAAApF,EAAA;AAAA,kDAAM,MAEzB,gBAAAgE;AAAA,oDAACyC;AAAA,oDAAA;AAAA,sDACC,SAASzG,KAAS;AAAA,sDAClB,UAAU,CAAC8F,MACTV,EAASU,EAAE,OAAO,OAAO;AAAA,sDAE3B,IAAI;AAAA,wDACF,QAAQ;AAAA,sDAAA;AAAA,oDACV;AAAA,kDAAA;AAAA,gDACF;AAAA,8CAAA;AAAA,8CAIN,OAAM;AAAA,4CAAA;AAAA,0CAAA,GAEV;AAAA,4DAEH/B,GAAA,EACC,UAAA,gBAAAC;AAAA,4CAACS;AAAA,4CAAA;AAAA,8CACC,MAAK;AAAA,8CACL,SAAQ;AAAA,8CACR,UACE,CAAC3E,MACD,CAACC,MACDD,GAAiB,WAAW,MAC5B,CAAChB,GAAkB;AAAA,gDACjBiB,GAAiB,KAAA;AAAA,8CAAK;AAAA,8CAG1B,SAAS,YAAY;AACnB,sDAAM2G,IACJhH,EAAS,UAAU,cAAc,GAC7BiH,IACJjH,EAAS,UAAU,eAAe,GAC9BkH,IACJlH,EAAS,UAAU,eAAe,GAE9BmH,IAAwBnH,EAC3B,UAAU,iBAAiB,EAC3B,KAAK,CAACkB,MAAQA,EAAI,YAAY;AAEjC,oDAAIsF,IAAc;AAAA,kDAChB,GAAGxG,EAAS,UAAU,iBAAiB;AAAA,gDAAA;AAGzC,oDAAIpB,MAAoB;AACtB,kDAAA4H,EAAY5H,CAAe,IAAI;AAAA,oDAC7B,GAAG4H,EAAY5H,CAAe;AAAA,oDAC9B,MAAMqI;AAAA,oDACN,MAAMC;AAAA,kDAAA;AAAA,qDAEH;AACL,sDACEV,EAAY;AAAA,oDACV,CAACtF,MAAQA,EAAI,SAAS+F;AAAA,kDAAA,GAExB;AACA,oDAAA3F,EAAU;AAAA,sDACR,SAAS;AAAA,sDACT,MAAM;AAAA,oDAAA,CACP;AACD;AAAA,kDACF;AAEA,wDAAM8F,IAAY;AAAA,oDAChB,MAAMH;AAAA,oDACN,MAAMC;AAAA,kDAAA;AAER,kDAAI,CAACC,KAAyBH,MAC5BhH,EAAS,SAAS,cAAciH,CAAW,GAC3CG,EAAU,eAAe,KAG3BZ,EAAY,KAAKY,CAAS;AAAA,gDAC5B;AAEA,gDAAApH,EAAS;AAAA,kDACP;AAAA,kDACAwG;AAAA,kDACA;AAAA,oDACE,aAAa;AAAA,kDAAA;AAAA,gDACf;AAGF,sDAAMa,IAAS,CAAC,GAAGb,CAAW,EAAE,KAAK,CAACrD,GAAGF,MACnCE,EAAE,eAAqB,KACvBF,EAAE,eAAqB,IACpBE,EAAE,KAAK,cAAcF,EAAE,IAAI,CACnC;AAED,gDAAA9E,EAAsBkJ,CAAM,GAC5BjL,KACG,MAAMqH,GAAwB+C,CAAW,GAE5C3H,GAAmB,IAAI,GACvBF,GAAY,IAAI,GAChBL,MAAgB,KAAKC,GAAe,CAAC,GACrCyB,EAAS,SAAS,iBAAiB,GAAG,GACtCA,EAAS,SAAS,iBAAiB,GAAG,GACtCA,EAAS,SAAS,gBAAgB,IAAI;AAAA,8CACxC;AAAA,8CAEC,UAAApB,MAAoB,OAAO,WAAW;AAAA,4CAAA;AAAA,0CAAA,EACzC,CACF;AAAA,wCAAA;AAAA,sCAAA;AAAA,oCAAA;AAAA,kCACF;AAAA,gCAAA;AAAA,8BACF;AAAA,4BAAA;AAAA,0BAAA;AAAA,0BAGJ,gBAAA0F;AAAA,4BAACgD;AAAA,4BAAA;AAAA,8BACC,IAAI;AAAA,gCACF,WAAWnH,MAAgB,SAAS,UAAU;AAAA,gCAC9C,QAAQ;AAAA,gCACR,aAAa;AAAA,gCACb,cAAc;AAAA,8BAAA;AAAA,8BAGhB,UAAA,gBAAAiE,EAACmD,IAAA,EAAM,cAAY,IACjB,UAAA;AAAA,gCAAA,gBAAAjD,EAACkD,IAAA,EACC,4BAACC,IAAA,EACC,UAAA,gBAAArD;AAAA,kCAACsD;AAAA,kCAAA;AAAA,oCACC,WAAU;AAAA,oCACV,IAAI,EAAE,iBAAiB,QAAA;AAAA,oCAEvB,UAAA;AAAA,sCAAA,gBAAApD;AAAA,wCAACyB;AAAA,wCAAA;AAAA,0CACC,MAAK;AAAA,0CACL,aAAY;AAAA,0CACZ,SAAQ;AAAA,0CACR,OAAO/H;AAAA,0CACP,UAAU,CAAC,MAAM;AACf,4CAAAC,EAAgB,EAAE,OAAO,KAAK;AAAA,0CAChC;AAAA,0CACA,WAAU;AAAA,0CACV,YAAY;AAAA,4CACV,gBACE,gBAAAqG,EAACiC,IAAA,EAAe,UAAS,SACvB,4BAACP,GAAA,EACC,UAAA,gBAAA1B;AAAA,8CAACU;AAAA,8CAAA;AAAA,gDACC,UAAU;AAAA,gDACV,WAAU;AAAA,8CAAA;AAAA,4CAAA,GAEd,EAAA,CACF;AAAA,0CAAA;AAAA,wCAEJ;AAAA,sCAAA;AAAA,sCAED,CAACd,MACA,gBAAAE;AAAA,wCAACK;AAAA,wCAAA;AAAA,0CACC,SAAQ;AAAA,0CACR,OAAM;AAAA,0CACN,WAAU;AAAA,0CAEV,UAAA;AAAA,4CAAA,gBAAAH,EAAC,UAAK,OAAO,EAAE,OAAO,MAAA,GAAS,UAAA,KAAC;AAAA,4CAAO;AAAA,0CAAA;AAAA,wCAAA;AAAA,sCAAA;AAAA,oCAEzC;AAAA,kCAAA;AAAA,gCAAA,GAGN,EAAA,CACF;AAAA,gCACChG,MAAgB,KACf,gBAAAgG,EAACqD,IAAA,EACE,UAAAzJ,EAAmB,SAClBA,EAAmB,IAAI,CAACgD,GAAKiF,MAC3B,gBAAA7B;AAAA,kCAACmD;AAAA,kCAAA;AAAA,oCAEC,WAAW,YAAYtB,MAAUjI,EAAmB,SAAS,IAAI,gBAAgB,eAAe;AAAA,oCAChG,IAAI;AAAA,sCACF,iBAAiBgD,EAAI,eACjB,YACAA,EAAI,gBACF,yBACA;AAAA,sCACN,WAAW;AAAA,wCACT,iBAAiBA,EAAI,eACjB,YACAA,EAAI,gBACF,YACA;AAAA,sCAAA;AAAA,oCACR;AAAA,oCAGF,UAAA,gBAAAkD,EAACsD,IAAA,EAAU,WAAU,iCACnB,UAAA;AAAA,sCAAA,gBAAApD;AAAA,wCAACQ;AAAA,wCAAA;AAAA,0CACC,OACE5D,EAAI,eACA,2CACAA,EAAI,gBACF,iBACA;AAAA,0CAER,WAAU;AAAA,0CACV,OAAK;AAAA,0CACL,sBACE,EAAEA,EAAI,gBAAgBA,EAAI;AAAA,0CAG5B,UAAA,gBAAAkD;AAAA,4CAACK;AAAA,4CAAA;AAAA,8CACC,SAAQ;AAAA,8CACR,WAAU;AAAA,8CAET,UAAA;AAAA,gDAAAvD,EAAI;AAAA,gDAAK;AAAA,gDAAGA,EAAI;AAAA,gDAAK;AAAA,8CAAA;AAAA,4CAAA;AAAA,0CAAA;AAAA,wCACxB;AAAA,sCAAA;AAAA,sCAEF,gBAAAkD,EAACI,GAAA,EAAI,SAAQ,QAAO,YAAW,UAC5B,UAAA;AAAA,wCAAAtD,EAAI,gBACH,gBAAAoD;AAAA,0CAAC0B;AAAA,0CAAA;AAAA,4CACC,IAAI;AAAA,8CACF,QAAQ;AAAA,8CACR,aAAa;AAAA,8CACb,cAAc;AAAA,4CAAA;AAAA,4CAGhB,UAAA,gBAAA1B;AAAA,8CAACU;AAAA,8CAAA;AAAA,gDACC,UAAU;AAAA,gDACV,WAAU;AAAA,8CAAA;AAAA,4CAAA;AAAA,0CACZ;AAAA,wCAAA;AAAA,yCAIF5I,KAAqBJ,MACrB,gBAAAoI,EAAAO,GAAA,EACE,UAAA;AAAA,0CAAA,gBAAAP;AAAA,4CAACU;AAAA,4CAAA;AAAA,8CACC,OACE,CAAC1I,KACD8E,EAAI,gBACJ,CAAC7E,IACG,4CACA;AAAA,8CAEN,OAAK;AAAA,8CACL,WAAU;AAAA,8CAET,UAAA;AAAA,gDAAA;AAAA,kEACA,QAAA,EACC,UAAA,gBAAAiI;AAAA,kDAAC0B;AAAA,kDAAA;AAAA,oDACC,IAAI;AAAA,sDACF,QAAQ;AAAA,sDACR,aAAa;AAAA,oDAAA;AAAA,oDAEf,UACE,CAAC5J,KACD8E,EAAI,gBACJ,CAAC7E;AAAA,oDAEH,SAAS,YAAY;AACnB,4DAAMuL,IACJ5H,EAAS;AAAA,wDACP;AAAA,sDAAA;AAEJ,sDAAA/B,EAAgB,EAAE;AAClB,4DAAMuI,IACJoB,EAAW;AAAA,wDACT,CAAC,MAAM,EAAE,SAAS1G,EAAI;AAAA,sDAAA;AAG1B,sDAAAlB,EAAS;AAAA,wDACP;AAAA,wDACAwG;AAAA,wDACA,EAAE,aAAa,GAAA;AAAA,sDAAK;AAGtB,4DAAMqB,IAAY7J,GACf,KAAA,EACA,YAAA,GACG8J,IAAcD,IAChBrB,EAAY;AAAA,wDAAO,CAAC,MAClB,EAAE,KACC,YAAA,EACA,SAASqB,CAAS;AAAA,sDAAA,IAEvBrB;AAEJ,sDAAArI;AAAA,wDACE2J;AAAA,sDAAA,GAGFzJ;AAAA,wDAAgB,CAACmD,MACfA,EAAK,IAAI,CAAC2C,MACJA,EAAE,SAASjD,EAAI,OACV;AAAA,0DACL,GAAGiD;AAAA,0DACH,UAAU;AAAA,wDAAA,IAGPA,CACR;AAAA,sDAAA,GAGCjD,EAAI,gBACNlB,EAAS;AAAA,wDACP;AAAA,wDACA;AAAA,sDAAA,GAIA5D,KACF,MAAMqH;AAAA,wDACJ+C;AAAA,sDAAA;AAAA,oDAGN;AAAA,oDAEA,UAAA,gBAAAlC;AAAA,sDAACU;AAAA,sDAAA;AAAA,wDACC,UAAU;AAAA,wDACV,WAAU;AAAA,sDAAA;AAAA,oDAAA;AAAA,kDACZ;AAAA,gDAAA,EACF,CACF;AAAA,8CAAA;AAAA,4CAAA;AAAA,0CAAA;AAAA,0CAED5I,KACC,gBAAAkI;AAAA,4CAAC0B;AAAA,4CAAA;AAAA,8CACC,IAAI;AAAA,gDACF,QAAQ;AAAA,gDACR,aAAa;AAAA,gDACb,OAAO;AAAA,8CAAA;AAAA,8CAET,SAAS,MAAM;AAKb,sDAAM+B,IAHJ/H,EAAS;AAAA,kDACP;AAAA,gDAAA,EAGc;AAAA,kDACd,CAACmE,MAAMA,EAAE,SAASjD,EAAI;AAAA,gDAAA;AAE1B,gDAAArC,GAAmBkJ,CAAW,GAC9B/H,EAAS;AAAA,kDACP;AAAA,kDACAkB,EAAI;AAAA,gDAAA,GAENlB,EAAS;AAAA,kDACP;AAAA,kDACAkB,EAAI;AAAA,gDAAA,GAENvC;AAAA,kDACE,SAAS;AAAA,oDACP;AAAA,kDAAA,KACG;AAAA,gDAAA;AAAA,8CAET;AAAA,8CAEA,UAAA,gBAAA2F;AAAA,gDAACU;AAAA,gDAAA;AAAA,kDACC,UAAU;AAAA,kDACV,WAAU;AAAA,gDAAA;AAAA,8CAAA;AAAA,4CACZ;AAAA,0CAAA;AAAA,wCACF,EAAA,CAEJ;AAAA,sCAAA,EAAA,CAEJ;AAAA,oCAAA,EAAA,CACF;AAAA,kCAAA;AAAA,kCA1LKmB,IAAQ;AAAA,gCAAA,CA4LhB,IAED,gBAAA7B,EAACmD,IAAA,EACC,UAAA,gBAAAnD,EAACoD,IAAA,EAAU,SAAS,GAAG,WAAU,OAC/B,UAAA,gBAAAtD,EAACK,GAAA,EAAW,SAAQ,SACjB,UAAA;AAAA,kCAAA;AAAA,kCACAzE,EAAS,UAAU,iBAAiB,EAClC,WAAW,IACV,qCACA9B,EAAmB,WAAW,IAC5B,iCACA;AAAA,gCAAA,GACR,EAAA,CACF,GACF,GAEJ;AAAA,gCAEDI,MAAgB,KACf,gBAAAgG,EAACqD,IAAA,EACE,UAAAvJ,EAAa,SACZA,EAAa,IAAI,CAAC8C,GAAKiF,MAAU;AAC/B,wCAAMa,IACJ9F,EAAI,SAASpF,EAAU,YACnBkM,IAAW9G,EAAI,YAAY,IAE3B+G,IACJ,gBAAA3D;AAAA,oCAAC4D;AAAA,oCAAA;AAAA,sCACC,MACE,gBAAA5D;AAAA,wCAACE;AAAA,wCAAA;AAAA,0CACC,IAAI;AAAA,4CACF,iBAAiB;AAAA,4CACjB,cAAc;AAAA,4CACd,OAAO;AAAA,4CACP,QAAQ;AAAA,4CACR,SAAS;AAAA,4CACT,YAAY;AAAA,4CACZ,gBAAgB;AAAA,0CAAA;AAAA,0CAGlB,UAAA,gBAAAF;AAAA,4CAACU;AAAA,4CAAA;AAAA,8CACC,UAAU;AAAA,8CACV,MAAK;AAAA,8CACL,WAAU;AAAA,4CAAA;AAAA,0CAAA;AAAA,wCACZ;AAAA,sCAAA;AAAA,sCAGJ,aACE,gBAAAV;AAAA,wCAACE;AAAA,wCAAA;AAAA,0CACC,IAAI;AAAA,4CACF,iBAAiB;AAAA,4CACjB,cAAc;AAAA,4CACd,OAAO;AAAA,4CACP,QAAQ;AAAA,4CACR,SAAS;AAAA,4CACT,YAAY;AAAA,4CACZ,gBAAgB;AAAA,0CAAA;AAAA,0CAGlB,UAAA,gBAAAF;AAAA,4CAACU;AAAA,4CAAA;AAAA,8CACC,UAAU;AAAA,8CACV,WAAU;AAAA,4CAAA;AAAA,0CAAA;AAAA,wCACZ;AAAA,sCAAA;AAAA,sCAGJ,SAASgD;AAAA,sCACT,UAAU,CAAChM;AAAA,sCACX,UAAU,CAACoK,MAAM;AACf,8CAAM+B,IAAY/B,EAAE,OAAO;AAC3B,4CACE,CAAC+B,KACDnM,KACA,CAACK,KACD,CAACD,KACD8E,EAAI,SAASpF,EAAU;AAEvB;AAEF,8CAAMsM,IAAU,CAAC,GAAGhK,CAAY,GAC1BiK,IAAa;AAAA,0CACjB,GAAGD,EAAQjC,CAAK;AAAA,0CAChB,UAAUC,EAAE,OAAO;AAAA,wCAAA;AAErB,wCAAAgC,EAAQjC,CAAK,IAAIkC,GACjBhK,EAAgB+J,CAAO;AAEvB,8CAAME,IAAO,CAAC,GAAGpK,CAAkB;AACnC,4CAAIiK,GAAW;AACb,gDAAMI,IACJrK,EAAmB;AAAA,4CACjB,CAACiG,MAAMA,EAAE;AAAA,0CAAA;AAEb,0CACEjD,EAAI,SAASpF,EAAU,cACvB,CAACyM,KAEDD,EAAK,KAAK;AAAA,4CACR,GAAGD;AAAA,4CACH,cAAc;AAAA,0CAAA,CACf,GACDrI,EAAS,SAAS,cAAckB,EAAI,IAAI,KAExCoH,EAAK,KAAKD,CAAU;AAAA,wCAExB,OAAO;AACL,gDAAMG,IAAWF,EAAK;AAAA,4CACpB,CAACnE,MAAMA,EAAE,SAASiE,EAAQjC,CAAK,EAAE;AAAA,0CAAA;AAEnC,8CAAIqC,IAAW,IAAI;AACjB,kDAAMC,IACJH,EAAKE,CAAQ,EAAE;AACjB,4CAAAF,EAAK,OAAOE,GAAU,CAAC,GACnBC,KACFzI,EAAS,SAAS,cAAc,EAAE;AAAA,0CAEtC;AAAA,wCACF;AACA,wCAAA7B,EAAsBmK,CAAI,GAC1BtI,EAAS,SAAS,mBAAmBsI,GAAM;AAAA,0CACzC,aAAa;AAAA,wCAAA,CACd;AAAA,sCACH;AAAA,oCAAA;AAAA,kCAAA,GAIEI,IACJ,gBAAApE;AAAA,oCAAC0B;AAAA,oCAAA;AAAA,sCACC,IAAI;AAAA,wCACF,QAAQ;AAAA,wCACR,aAAchK,IAAiB,IAAJ;AAAA,wCAC3B,cAAeA,IAAiB,IAAJ;AAAA,sCAAI;AAAA,sCAGlC,UAAA,gBAAAsI;AAAA,wCAACU;AAAA,wCAAA;AAAA,0CACC,UAAU;AAAA,0CACV,WAAU;AAAA,wCAAA;AAAA,sCAAA;AAAA,oCACZ;AAAA,kCAAA;AAIJ,yCACE,gBAAAV;AAAA,oCAACmD;AAAA,oCAAA;AAAA,sCAEC,WAAW,YAAYtB,MAAU/H,EAAa,SAAS,IAAI,gBAAgB,eAAe;AAAA,sCAC1F,IAAI;AAAA,wCACF,WAAW,EAAE,iBAAiB,UAAA;AAAA,sCAAU;AAAA,sCAG1C,UAAA,gBAAAgG;AAAA,wCAACsD;AAAA,wCAAA;AAAA,0CACC,IAAI;AAAA,4CACF,GAAG;AAAA,4CACH,IAAI;AAAA,4CACJ,SAAS;AAAA,4CACT,gBAAgB;AAAA,4CAChB,YAAY;AAAA,0CAAA;AAAA,0CAGd,UAAA;AAAA,4CAAA,gBAAAtD;AAAA,8CAACK;AAAA,8CAAA;AAAA,gDACC,SAAQ;AAAA,gDACR,WAAU;AAAA,gDAET,UAAA;AAAA,kDAAAvD,EAAI;AAAA,kDAAK;AAAA,kDAAGA,EAAI;AAAA,kDAAK;AAAA,gDAAA;AAAA,8CAAA;AAAA,4CAAA;AAAA,4CAGvBlF,IACCgL,IACE5K,IACEsM,IAEA,gBAAAtE;AAAA,8CAACI;AAAA,8CAAA;AAAA,gDACC,IAAI;AAAA,kDACF,SAAS;AAAA,kDACT,YAAY;AAAA,gDAAA;AAAA,gDAGb,UAAA;AAAA,kDAAAkE;AAAA,kDACD,gBAAApE;AAAA,oDAACQ;AAAA,oDAAA;AAAA,sDACC,OACE9I,KACA,CAACK,KACD6E,EAAI,SAASpF,EAAU,aACnB,iDACA;AAAA,sDAEN,OAAK;AAAA,sDACL,WAAU;AAAA,sDAEV,UAAA,gBAAAwI,EAAC,UAAM,UAAA2D,EAAA,CAAa;AAAA,oDAAA;AAAA,kDAAA;AAAA,gDACtB;AAAA,8CAAA;AAAA,4CAAA,IAIJA,IAEAD,IACF,gBAAA1D;AAAA,8CAACE;AAAA,8CAAA;AAAA,gDACC,IAAI;AAAA,kDACF,iBAAiB;AAAA,kDACjB,cAAc;AAAA,kDACd,OAAO;AAAA,kDACP,QAAQ;AAAA,kDACR,SAAS;AAAA,kDACT,YAAY;AAAA,kDACZ,gBAAgB;AAAA,kDAChB,QAAQ;AAAA,gDAAA;AAAA,gDAGV,UAAA,gBAAAF;AAAA,kDAACU;AAAA,kDAAA;AAAA,oDACC,UAAU;AAAA,oDACV,WAAU;AAAA,kDAAA;AAAA,gDAAA;AAAA,8CACZ;AAAA,4CAAA,IAEAgC,IACF0B,IAEA,gBAAApE;AAAA,8CAACE;AAAA,8CAAA;AAAA,gDACC,IAAI;AAAA,kDACF,iBAAiB;AAAA,kDACjB,cAAc;AAAA,kDACd,OAAO;AAAA,kDACP,QAAQ;AAAA,kDACR,SAAS;AAAA,kDACT,YAAY;AAAA,kDACZ,gBAAgB;AAAA,kDAChB,QAAQ;AAAA,gDAAA;AAAA,gDAGV,UAAA,gBAAAF;AAAA,kDAACU;AAAA,kDAAA;AAAA,oDACC,UAAU;AAAA,oDACV,WAAU;AAAA,kDAAA;AAAA,gDAAA;AAAA,8CACZ;AAAA,4CAAA;AAAA,0CACF;AAAA,wCAAA;AAAA,sCAAA;AAAA,oCAEJ;AAAA,oCA3FKmB,IAAQ;AAAA,kCAAA;AAAA,gCA8FnB,CAAC,IAED,gBAAA7B,EAACmD,IAAA,EACC,UAAA,gBAAAnD,EAACoD,MAAU,SAAS,GAAG,WAAU,OAC/B,4BAACjD,GAAA,EAAW,SAAQ,SAAQ,UAAA,+BAAA,CAE5B,GACF,GACF,EAAA,CAEJ;AAAA,8BAAA,EAAA,CAEJ;AAAA,4BAAA;AAAA,0BAAA;AAAA,wBACF;AAAA,sBAAA;AAAA,oBAAA,EACF,CACF;AAAA,kBAAA,EAAA,CACF;AAAA,gBAAA;AAAA,cAAA;AAAA,YAAA;AAAA,UACF;AAAA,QAAA;AAAA,QAGD/G,MACC,gBAAA4G,EAACqE,IAAA,EAAM,MAAMjL,IAAW,SAAS+D,IAC/B,UAAA,gBAAA2C,EAACI,GAAA,EAAI,IAAI,EAAE,GAAGoE,MACZ,UAAA;AAAA,UAAA,gBAAAxE;AAAA,YAACI;AAAA,YAAA;AAAA,cACC,IAAI;AAAA,gBACF,SAAS;AAAA,gBACT,gBAAgB;AAAA,gBAChB,YAAY;AAAA,gBACZ,IAAI;AAAA,cAAA;AAAA,cAGN,UAAA;AAAA,gBAAA,gBAAAF,EAACG,GAAA,EAAW,SAAQ,MAAK,UAAA,8BAA0B;AAAA,gBACnD,gBAAAL,EAACK,GAAA,EAAW,SAAQ,SAAQ,UAAA;AAAA,kBAAA;AAAA,oCAClB,UAAA,EAAO,UAAA;AAAA,oBAAA;AAAA,qBAAE3F,KAAA,gBAAAA,EAAmB,gBAAe;AAAA,kBAAA,GAAE;AAAA,kBAAU;AAAA,kBAC/D,gBAAAwF;AAAA,oBAACU;AAAA,oBAAA;AAAA,sBACC,UAAS;AAAA,sBACT,MAAK;AAAA,sBACL,WAAU;AAAA,oBAAA;AAAA,kBAAA;AAAA,kBACT;AAAA,kBAAI;AAAA,oCACD,UAAA,EAAO,UAAA;AAAA,oBAAA;AAAA,qBAAElG,KAAA,gBAAAA,EAAmB,cAAa;AAAA,kBAAA,EAAA,CAAE;AAAA,gBAAA,EAAA,CACnD;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAEF,gBAAAwF;AAAA,YAACe;AAAA,YAAA;AAAA,cACC,QAAO;AAAA,cACP,iBAAgB;AAAA,cAChB,OAAM;AAAA,cACN,SAAS;AAAA,gBACP,UAAU;AAAA,gBACV,SAAS,EAAE,SAAS,GAAA;AAAA,gBACpB,iBAAiB;AAAA,gBACjB,sBAAsB;AAAA,gBACtB,UAAU;AAAA,gBACV,sBAAsB;AAAA,gBACtB,oBAAoB;AAAA,cAAA;AAAA,cAEtB,OAAOzH,KAAmB;AAAA,cAC1B,cAAcA,KAAmB;AAAA,cACjC,UAAU8F;AAAA,cACV,aAAa,EAAE,iBAAiB,GAAA;AAAA,YAAK;AAAA,UAAA;AAAA,UAEvC,gBAAAY;AAAA,YAACS;AAAA,YAAA;AAAA,cACC,SAAQ;AAAA,cACR,OAAM;AAAA,cACN,WAAU;AAAA,cACV,SAAS,MAAMlE,GAAS,MAAM,EAAI;AAAA,cACnC,UAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QAED,EAAA,CACF,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIR;AAEA,MAAM+H,KAAa;AAAA,EACjB,UAAU;AAAA,EACV,KAAK;AAAA,EACL,MAAM;AAAA,EACN,WAAW;AAAA,EACX,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,WAAW;AAAA,EACX,SAAS;AAAA,EACT,cAAc;AAChB;AAEA/M,GAAa,YAAY;AAAA,EACvB,WAAWgN,EAAU;AAAA,EACrB,OAAOA,EAAU;AAAA,EACjB,YAAYA,EAAU;AAAA,EACtB,gBAAgBA,EAAU;AAAA,EAC1B,mBAAmBA,EAAU;AAAA,EAC7B,kBAAkBA,EAAU;AAAA,EAC5B,mBAAmBA,EAAU;AAAA,EAC7B,iBAAiBA,EAAU;AAAA,EAC3B,uBAAuBA,EAAU;AAAA,EACjC,iBAAiBA,EAAU;AAAA,EAC3B,oBAAoBA,EAAU;AAChC;"}