@archbase/security-ui 4.0.40 → 4.0.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../node_modules/.pnpm/react@19.2.3/node_modules/react/cjs/react-jsx-runtime.production.js","../../../node_modules/.pnpm/react@19.2.3/node_modules/react/jsx-runtime.js","../src/ProfileModal.tsx","../src/ArchbaseDualListSelector.tsx","../src/RenderProfileUserItem.tsx","../src/UserModal.tsx","../src/GroupModal.tsx","../src/ApiTokenModal.tsx","../src/PermissionsSelectorModal.tsx","../src/ArchbaseSecurityView.tsx","../src/ArchbaseApiTokenView.tsx"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n var key = null;\n void 0 !== maybeKey && (key = \"\" + maybeKey);\n void 0 !== config.key && (key = \"\" + config.key);\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n config = maybeKey.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== config ? config : null,\n props: maybeKey\n };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * ProfileModal — modal com dados da conta do usuário.\n * @status stable\n */\nimport React from 'react'\nimport { Grid, ScrollArea, Stack, Modal, Button, Group } from '@mantine/core'\nimport { IArchbaseDataSourceBase } from '@archbase/data'\nimport { getI18nextInstance } from '@archbase/core';\nimport { ProfileDto } from '@archbase/security'\nimport { ArchbaseEdit } from '@archbase/components'\n\nexport interface ProfileModalOptions {\n customContentBefore?: (profile: ProfileDto) => React.ReactNode;\n customContentAfter?: (profile: ProfileDto) => React.ReactNode;\n}\n\nexport interface ProfileModalProps {\n dataSource: IArchbaseDataSourceBase<ProfileDto>\n opened: boolean\n onClickOk: (record?: ProfileDto, result?: any) => void\n onClickCancel: (record?: ProfileDto) => void\n onCustomSave?: (record?: ProfileDto, callback?: Function) => void\n onAfterSave?: (record?: ProfileDto) => void\n options?: ProfileModalOptions\n}\n\nexport const ProfileModal = (props: ProfileModalProps) => {\n const options = {...(props.options ?? {}) }\n \n const handleSave = () => {\n if (props.onCustomSave) {\n props.onCustomSave(props.dataSource.getCurrentRecord()!, (success: boolean) => {\n if (success && props.onAfterSave) {\n props.onAfterSave(props.dataSource.getCurrentRecord()!);\n }\n props.onClickOk(props.dataSource.getCurrentRecord()!, success);\n });\n } else {\n props.onClickOk(props.dataSource.getCurrentRecord()!, true);\n }\n };\n\n const handleCancel = () => {\n props.onClickCancel(props.dataSource.getCurrentRecord()!);\n };\n \n return (\n <Modal\n opened={props.opened}\n onClose={handleCancel}\n title={getI18nextInstance().t('archbase:Perfil')}\n size=\"60%\"\n styles={{content: {maxWidth: 1000}}}\n >\n <ScrollArea style={{ height: '460px' }}>\n <Stack w={\"98%\"}>\n {options?.customContentBefore && options.customContentBefore(props.dataSource.getCurrentRecord()!)}\n <Grid>\n <Grid.Col span={{ base: 12, md: 12, lg: 12 }}>\n <ArchbaseEdit\n label={`${getI18nextInstance().t('archbase:Nome do perfil')}`}\n placeholder={`${getI18nextInstance().t('archbase:Informe o nome do perfil')}`}\n dataSource={props.dataSource}\n dataField=\"name\"\n />\n </Grid.Col>\n <Grid.Col span={{ base: 12, md: 12, lg: 12 }}>\n <ArchbaseEdit\n label={`${getI18nextInstance().t('archbase:Descrição do perfil')}`}\n placeholder={`${getI18nextInstance().t('archbase:Informe a descrição do perfil')}`}\n dataSource={props.dataSource}\n dataField=\"description\"\n />\n </Grid.Col>\n </Grid>\n {options?.customContentAfter && options.customContentAfter(props.dataSource.getCurrentRecord()!)}\n \n <Group justify=\"flex-end\" mt=\"md\">\n <Button variant=\"default\" onClick={handleCancel}>\n {getI18nextInstance().t('archbase:Cancelar')}\n </Button>\n <Button onClick={handleSave}>\n {getI18nextInstance().t('archbase:Salvar')}\n </Button>\n </Group>\n </Stack>\n </ScrollArea>\n </Modal>\n )\n}\n","/**\n * ArchbaseDualListSelector — duplo painel para mover itens entre permissões/roles.\n * @status stable\n */\nimport React, { useState, useEffect, useCallback } from 'react'\nimport {\n Button,\n Group,\n Box,\n Text,\n List,\n Checkbox,\n Stack,\n ActionIcon,\n ScrollArea,\n Paper,\n Tooltip\n} from '@mantine/core'\nimport { IconArrowLeft, IconArrowRight } from '@tabler/icons-react'\nimport { ArchbaseDataSource } from '@archbase/data'\nimport { useArchbaseV1V2Compatibility } from '@archbase/data'\nimport { useArchbaseDataSourceListener } from '@archbase/data'\n\n// Definindo props com genéricos para os tipos de item das duas listas\nexport interface ArchbaseDualListSelectorProps<T, U> {\n availableItemsDS: ArchbaseDataSource<T, any>\n assignedItemsDS: ArchbaseDataSource<U, any>\n idFieldAvailable: string | ((item: T) => string)\n labelFieldAvailable: string | ((item: T) => string)\n idFieldAssigned: string | ((item: U) => string)\n labelFieldAssigned: string | ((item: U) => string)\n handleCreateAssociationObject: (item: T) => U\n width?: string\n height?: string\n titleAvailable?: string\n titleAssigned?: string\n}\n\nexport function ArchbaseDualListSelector<T, U>({\n availableItemsDS,\n assignedItemsDS,\n idFieldAvailable,\n labelFieldAvailable,\n idFieldAssigned,\n labelFieldAssigned,\n handleCreateAssociationObject,\n width = '400px',\n height = '200px',\n titleAvailable = 'Disponíveis',\n titleAssigned = 'Selecionados'\n}: ArchbaseDualListSelectorProps<T, U>) {\n // 🔄 MIGRAÇÃO V1/V2: Hooks de compatibilidade para ambos DataSources\n const availableV1V2 = useArchbaseV1V2Compatibility<T[]>(\n 'ArchbaseDualListSelector-Available',\n availableItemsDS,\n undefined,\n []\n );\n\n const assignedV1V2 = useArchbaseV1V2Compatibility<U[]>(\n 'ArchbaseDualListSelector-Assigned', \n assignedItemsDS,\n undefined,\n []\n );\n\n const [availableItems, setAvailableItems] = useState<T[]>([])\n const [assignedItems, setAssignedItems] = useState<U[]>([])\n const [selectedAvailable, setSelectedAvailable] = useState<string[]>([])\n const [selectedAssigned, setSelectedAssigned] = useState<string[]>([])\n\n // 🔄 MIGRAÇÃO V1/V2: Função para carregar dados condicionalmente\n const loadItemsData = useCallback(() => {\n if (availableItemsDS) {\n setAvailableItems(availableItemsDS.browseRecords())\n }\n if (assignedItemsDS) {\n setAssignedItems(assignedItemsDS.browseRecords())\n }\n }, [availableItemsDS, assignedItemsDS]);\n\n // 🔄 MIGRAÇÃO V1/V2: Listeners para ambos DataSources\n useArchbaseDataSourceListener<T, any>({\n dataSource: availableItemsDS,\n listener: () => loadItemsData()\n });\n\n useArchbaseDataSourceListener<U, any>({\n dataSource: assignedItemsDS,\n listener: () => loadItemsData()\n });\n\n useEffect(() => {\n loadItemsData();\n }, [loadItemsData])\n\n const getItemId = (item: any, field: string | ((item: any) => string)): string =>\n typeof field === 'function' ? field(item) : item[field]\n\n const getItemLabel = (item: any, field: string | ((item: any) => string)): string =>\n typeof field === 'function' ? field(item) : item[field]\n\n const handleSelect = (setId: React.Dispatch<React.SetStateAction<string[]>>, id: string) => {\n setId((prev) => (prev.includes(id) ? prev.filter((item) => item !== id) : [...prev, id]))\n }\n\n const handleAdd = () => {\n selectedAvailable.forEach((id) => {\n const originalItem = availableItems.find((item) => getItemId(item, idFieldAvailable) === id)\n if (originalItem) {\n const newItem = handleCreateAssociationObject(originalItem)\n \n // 🔄 MIGRAÇÃO V1/V2: Usar operações condicionais baseadas na versão\n if (assignedV1V2.isDataSourceV2) {\n // Para DataSource V2: usar métodos otimizados\n assignedItemsDS.insert(newItem)\n assignedItemsDS.save()\n } else {\n // Para DataSource V1: comportamento original + forceUpdate\n assignedItemsDS.insert(newItem)\n assignedItemsDS.save()\n assignedV1V2.v1State.forceUpdate()\n }\n }\n })\n setSelectedAvailable([])\n }\n\n const handleRemove = () => {\n selectedAssigned.forEach((id) => {\n const record = assignedItems.find((item) => getItemId(item, idFieldAssigned) === id)\n if (record) {\n // Preparando o objeto de critério dinâmico\n const criteria =\n typeof idFieldAssigned === 'function'\n ? { customId: idFieldAssigned(record) }\n : { [idFieldAssigned]: id }\n \n // 🔄 MIGRAÇÃO V1/V2: Usar operações condicionais baseadas na versão\n if (assignedV1V2.isDataSourceV2) {\n // Para DataSource V2: usar métodos otimizados\n assignedItemsDS.remove(() => assignedItemsDS.locate(criteria))\n } else {\n // Para DataSource V1: comportamento original + forceUpdate\n assignedItemsDS.remove(() => assignedItemsDS.locate(criteria))\n assignedV1V2.v1State.forceUpdate()\n }\n }\n })\n setSelectedAssigned([])\n }\n\n return (\n <Paper withBorder style={{ display: 'flex', width, height }}>\n <Box style={{ minWidth: '44%', minHeight: height }}>\n <Text>{titleAvailable}</Text>\n <List\n spacing=\"xs\"\n size=\"sm\"\n center\n listStyleType=\"none\"\n style={{\n margin: '6px',\n overflowY: 'auto',\n overflowX: 'hidden',\n height: 'calc(100% - 32px)'\n }}\n >\n {availableItems.map((item) => (\n <List.Item key={getItemId(item, idFieldAvailable)}>\n <Checkbox\n label={getItemLabel(item, labelFieldAvailable)}\n checked={selectedAvailable.includes(getItemId(item, idFieldAvailable))}\n onChange={() =>\n handleSelect(setSelectedAvailable, getItemId(item, idFieldAvailable))\n }\n disabled={assignedItems.some(\n (g) => getItemId(g, idFieldAssigned) === getItemId(item, idFieldAvailable)\n )}\n />\n </List.Item>\n ))}\n </List>\n </Box>\n <Stack gap={5} style={{ minWidth: '10%' }} justify=\"center\" align=\"center\">\n <Tooltip label=\"Adicionar\">\n <ActionIcon onClick={handleAdd} disabled={!selectedAvailable.length}>\n <IconArrowRight />\n </ActionIcon>\n </Tooltip>\n <Tooltip label=\"Remover\">\n <ActionIcon onClick={handleRemove} disabled={!selectedAssigned.length}>\n <IconArrowLeft />\n </ActionIcon>\n </Tooltip>\n </Stack>\n <Box style={{ minWidth: '44%', minHeight: height }}>\n <Text>{titleAssigned}</Text>\n <List\n spacing=\"xs\"\n size=\"sm\"\n center\n listStyleType=\"none\"\n style={{\n margin: '6px',\n overflowY: 'auto',\n overflowX: 'hidden',\n height: 'calc(100% - 32px)'\n }}\n >\n {assignedItems.map((item) => (\n <List.Item key={getItemId(item, idFieldAssigned)}>\n <Checkbox\n label={getItemLabel(item, labelFieldAssigned)}\n checked={selectedAssigned.includes(getItemId(item, idFieldAssigned))}\n onChange={() => handleSelect(setSelectedAssigned, getItemId(item, idFieldAssigned))}\n />\n </List.Item>\n ))}\n </List>\n </Box>\n </Paper>\n )\n}\n","/**\n * RenderProfileUserItem — item de lista para usuário (usado em modais/profile).\n * @status stable\n */\nimport React from 'react'\nimport { Flex, Space, Text } from '@mantine/core'\nimport { forwardRef } from 'react'\nimport { ProfileDto } from '@archbase/security'\n\nexport interface RenderProfileUserItemProps extends React.ComponentPropsWithoutRef<'div'> {\n image: string\n label: string\n description: string\n origin: ProfileDto\n}\n\nexport const RenderProfileUserItem = forwardRef<HTMLDivElement, RenderProfileUserItemProps>(\n ({ image, label, description, origin, ...others }: RenderProfileUserItemProps, ref) => (\n <div ref={ref} {...others}>\n <Flex>\n <Text size=\"sm\" fw={600}>\n {origin ? origin.name:''}\n </Text>\n <Space w=\"lg\" />\n </Flex>\n </div>\n )\n)\n","/**\n * UserModal — modal de cadastro/edição de usuários com roles e ações.\n * @status stable\n */\nimport { ARCHBASE_IOC_API_TYPE, getI18nextInstance, builder, emit } from '@archbase/core'\nimport { IArchbaseDataSourceBase, ArchbaseDataSource } from '@archbase/data'\nimport { ArchbaseCheckbox, ArchbaseEdit, ArchbaseSelect, ArchbasePasswordEdit, ArchbaseAvatarEdit } from '@archbase/components'\nimport { useArchbaseRemoteDataSource, useArchbaseRemoteServiceApi } from '@archbase/data'\nimport { ArchbaseNotifications } from '@archbase/components'\nimport { Grid, Group, Input, ScrollArea, Space, Stack, Text, Modal, Button } from '@mantine/core'\nimport { useArchbaseTranslation } from '@archbase/core';\nimport React, { useEffect, useState } from 'react'\nimport { ArchbaseDualListSelector } from './ArchbaseDualListSelector'\nimport { ArchbaseGroupService } from '@archbase/security'\nimport { ArchbaseProfileService } from '@archbase/security'\nimport { RenderProfileUserItem } from './RenderProfileUserItem'\nimport { GroupDto, ProfileDto, UserDto, UserGroupDto } from '@archbase/security'\n\nexport interface UserModalOptions {\n // Campos de identificação\n showNickname?: boolean; // nickname - Apelido\n\n // Campos de perfil e grupos\n showProfile?: boolean; // profile - Perfil do usuário\n showGroups?: boolean; // groups - Grupos (DualListSelector)\n\n // Campos de configuração de senha\n showChangePasswordOnNextLogin?: boolean; // changePasswordOnNextLogin\n showAllowPasswordChange?: boolean; // allowPasswordChange\n showPasswordNeverExpires?: boolean; // passwordNeverExpires\n\n // Campos de status da conta\n showAccountConfigLabel?: boolean;\n showAccountDeactivated?: boolean; // accountDeactivated\n showAccountLocked?: boolean; // accountLocked\n showIsAdministrator?: boolean;\n\n // Configurações de campos obrigatórios\n requiredNickname?: boolean;\n\n /** Tamanho máximo da imagem do avatar em kilobytes */\n avatarMaxSizeKB?: number;\n /** Qualidade da compressão da imagem do avatar (0 a 1), sendo 1 melhor qualidade */\n avatarImageQuality?: number;\n /** Maior dimensão (px) do avatar final — a imagem é redimensionada automaticamente. 0 mantém a resolução original */\n avatarMaxOutputSizePx?: number;\n\n /** Configuração de permissão de edição de campos */\n allowEditEmail?: boolean;\n\n customContentBefore?: (user: UserDto) => React.ReactNode;\n\n customContentAfter?: (user: UserDto) => React.ReactNode;\n\n /** Nome do perfil padrão que um novo usuário já virá pré-preenchido */\n userDefaultProfile?: string;\n /** Nome dos grupos padrões que um novo usuário já virá pré-preenchido */\n userDefaultGroups?: string[];\n}\n\nexport const defaultUserModalOptions: UserModalOptions = {\n // Campos de identificação\n showNickname: true,\n\n // Campos de perfil e grupos\n showProfile: true,\n showGroups: true,\n\n // Campos de configuração de senha\n showChangePasswordOnNextLogin: true,\n showAllowPasswordChange: true,\n showPasswordNeverExpires: true,\n\n // Campos de status da conta\n showAccountConfigLabel: true,\n showAccountDeactivated: true,\n showAccountLocked: true,\n showIsAdministrator: true,\n\n // Configurações de campos obrigatórios\n requiredNickname: true,\n\n avatarMaxSizeKB: 2000,\n avatarImageQuality: 1,\n avatarMaxOutputSizePx: 512,\n\n allowEditEmail: true,\n}\n\nexport interface UserModalProps {\n dataSource: IArchbaseDataSourceBase<UserDto>\n opened: boolean\n onClickOk: (record?: UserDto, result?: any) => void\n onClickCancel: (record?: UserDto) => void\n onCustomSave?: (record?: UserDto, callback?: Function) => void\n onAfterSave?: (record?: UserDto) => void\n options?: UserModalOptions\n}\n\nexport const UserModal = (props: UserModalProps) => {\n const [passwordError, setPasswordError] = useState(\"\")\n const options = { ...defaultUserModalOptions, ...(props.options ?? {}) }\n\n const groupApi = useArchbaseRemoteServiceApi<ArchbaseGroupService>(ARCHBASE_IOC_API_TYPE.Group)\n const { dataSource: dsGroups } = useArchbaseRemoteDataSource<GroupDto, string>({\n name: `dsGroups`,\n service: groupApi,\n pageSize: 9999,\n loadOnStart: true,\n sort: ['name:asc'],\n onError: (error, origin) => {\n ArchbaseNotifications.showError(getI18nextInstance().t('archbase:WARNING'), error, origin)\n }\n })\n console.log(\"versão 12/05/2026\")\n\n const profileApi = useArchbaseRemoteServiceApi<ArchbaseProfileService>(ARCHBASE_IOC_API_TYPE.Profile)\n const { dataSource: dsProfiles } = useArchbaseRemoteDataSource<ProfileDto, string>({\n name: `dsProfiles`,\n service: profileApi,\n pageSize: 9999,\n loadOnStart: true,\n sort: ['name:asc'],\n onError: (error, origin) => {\n ArchbaseNotifications.showError(getI18nextInstance().t('archbase:WARNING'), error, origin)\n }\n })\n\n useEffect(() => {\n setPasswordError(\"\")\n }, [props.dataSource.getFieldValue(\"password\")])\n\n const setDefaultValues = async () => {\n if (!props.dataSource.isInserting()) return;\n\n if (options.userDefaultProfile) {\n const filter = emit(builder.eq(\"name\", options.userDefaultProfile))\n const result = await profileApi.findAllWithFilter(filter, 0, 1)\n if (result && result.content.length > 0) {\n props.dataSource.setFieldValue(\"profile\", result.content[0])\n }\n }\n if (options.userDefaultGroups) {\n const filter = emit(builder.in(\"name\", options.userDefaultGroups))\n const result = await groupApi.findAllWithFilter(filter, 0, 500)\n if (result && result.content.length > 0) {\n props.dataSource.setFieldValue(\"groups\", result.content.map(group => UserGroupDto.newInstance(group)))\n }\n }\n }\n\n useEffect(() => {\n if (props.opened) {\n setDefaultValues()\n }\n }, [props.opened])\n\n const handleSave = () => {\n const currentRecord = props.dataSource.getCurrentRecord()!;\n if (!currentRecord.password && props.dataSource.isInserting()) {\n setPasswordError(getI18nextInstance().t('archbase:Informe a senha'))\n return;\n }\n \n if (props.onCustomSave) {\n props.onCustomSave(currentRecord, (success: boolean) => {\n if (success && props.onAfterSave) {\n props.onAfterSave(currentRecord);\n }\n props.onClickOk(currentRecord, success);\n });\n } else {\n props.onClickOk(currentRecord, true);\n }\n };\n\n const handleCancel = () => {\n props.onClickCancel(props.dataSource.getCurrentRecord()!);\n };\n\n return (\n <Modal\n opened={props.opened}\n onClose={handleCancel}\n title={getI18nextInstance().t('archbase:Usuário')}\n size=\"80%\"\n styles={{ content: { maxWidth: 1000 } }}\n >\n <ScrollArea style={{ height: '500px' }}>\n <Stack w={\"98%\"}>\n {options?.customContentBefore && (\n <>\n {options.customContentBefore(props.dataSource.getCurrentRecord()!)}\n </>\n )}\n <Grid>\n <Grid.Col span={{ base: 12, md: 6, lg: 6 }}>\n <Group>\n <ArchbaseEdit\n label={`${getI18nextInstance().t('archbase:Nome completo')}`}\n placeholder={`${getI18nextInstance().t('archbase:Informe o nome completo do usuário')}`}\n dataSource={props.dataSource}\n dataField=\"name\"\n required\n width={'calc(100% - 208px)'}\n />\n {options.showNickname && (\n <ArchbaseEdit\n label={`${getI18nextInstance().t('archbase:Apelido')}`}\n placeholder={`${getI18nextInstance().t('archbase:Apelido')}`}\n dataSource={props.dataSource}\n dataField=\"nickname\"\n required={options.requiredNickname}\n />\n )}\n </Group>\n </Grid.Col>\n <Grid.Col span={{ base: 12, md: 6, lg: 6 }}>\n <ArchbaseEdit\n label={`${getI18nextInstance().t('archbase:Descrição do usuário')}`}\n placeholder={`${getI18nextInstance().t('archbase:Informe a descrição do usuário')}`}\n dataSource={props.dataSource}\n dataField=\"description\"\n required\n />\n </Grid.Col>\n </Grid>\n <Grid>\n <Grid.Col span={{ base: 12, md: 6, lg: 6 }}>\n <ArchbaseEdit\n label={`${getI18nextInstance().t('archbase:E-mail')}`}\n placeholder={`${getI18nextInstance().t('archbase:Informe o e-mail do usuário')}`}\n dataSource={props.dataSource}\n onChangeValue={(value) => props.dataSource.setFieldValue(\"userName\", value)}\n dataField=\"email\"\n readOnly={props.dataSource.isEditing() ? !options.allowEditEmail : false}\n required\n />\n </Grid.Col>\n <Grid.Col span={{ base: 12, md: 6, lg: 6 }}>\n <ArchbasePasswordEdit\n label={`${getI18nextInstance().t('archbase:Senha usuário')}`}\n dataSource={props.dataSource}\n dataField=\"password\"\n error={passwordError}\n required={props.dataSource.getFieldValue(\"isNewUser\")}\n />\n </Grid.Col>\n </Grid>\n <Grid>\n {options.showProfile && (\n <Grid.Col span={{ base: 12, md: 6, lg: 6 }}>\n <ArchbaseSelect<UserDto, string, ProfileDto>\n label={`${getI18nextInstance().t('archbase:Perfil do usuário')}`}\n dataSource={props.dataSource}\n dataField=\"profile\"\n options={dsProfiles}\n allowDeselect={true}\n optionsLabelField=\"nome\"\n itemComponent={RenderProfileUserItem}\n getOptionLabel={(option: ProfileDto) => option.name}\n getOptionValue={(option: ProfileDto) => option.id}\n />\n </Grid.Col>\n )}\n </Grid>\n\n <Grid>\n <Grid.Col span={{ base: 12 }}>\n {options.showAccountConfigLabel && (<Text fz={14} fw={500}>Informe</Text>)}\n </Grid.Col>\n <Grid.Col span={{ base: 12, md: 4, lg: 4 }}>\n <Stack gap={'lg'}>\n {options.showChangePasswordOnNextLogin && (\n <Input.Wrapper label=\"\">\n <ArchbaseCheckbox\n dataSource={props.dataSource}\n dataField=\"changePasswordOnNextLogin\"\n label={`${getI18nextInstance().t('archbase:Deve alterar senha próximo login ?')}`}\n />\n </Input.Wrapper>\n )}\n {options.showAllowPasswordChange && (\n <Input.Wrapper label=\"\">\n <ArchbaseCheckbox\n dataSource={props.dataSource}\n dataField=\"allowPasswordChange\"\n label={`${getI18nextInstance().t('archbase:Pode alterar a senha ?')}`}\n />\n </Input.Wrapper>\n )}\n {options.showPasswordNeverExpires && (\n <Input.Wrapper label=\"\">\n <ArchbaseCheckbox\n dataSource={props.dataSource}\n dataField=\"passwordNeverExpires\"\n label={`${getI18nextInstance().t('archbase:Senha nunca expira ?')}`}\n />\n </Input.Wrapper>\n )}\n </Stack>\n </Grid.Col>\n <Grid.Col span={{ base: 12, md: 4, lg: 4 }}>\n <Stack gap=\"lg\">\n {options.showAccountDeactivated && (\n <Input.Wrapper label=\"\">\n <ArchbaseCheckbox\n dataSource={props.dataSource}\n dataField=\"accountDeactivated\"\n label={`${getI18nextInstance().t('archbase:Conta desativada ?')}`}\n />\n </Input.Wrapper>\n )}\n {options.showAccountLocked && (\n <Input.Wrapper label=\"\">\n <ArchbaseCheckbox\n dataSource={props.dataSource}\n dataField=\"accountLocked\"\n label={`${getI18nextInstance().t('archbase:Conta bloqueada ?')}`}\n />\n </Input.Wrapper>\n )}\n {options.showIsAdministrator && (\n <Input.Wrapper label=\"\">\n <ArchbaseCheckbox\n dataSource={props.dataSource}\n dataField=\"isAdministrator\"\n label={`${getI18nextInstance().t('archbase:Administrador ?')}`}\n />\n </Input.Wrapper>\n )}\n </Stack>\n </Grid.Col>\n <Grid.Col span={{ base: 12, md: 4, lg: 4 }}>\n <Stack gap=\"lg\">\n <ArchbaseAvatarEdit\n label={getI18nextInstance().t('archbase:Foto do usuário')}\n dataSource={props.dataSource}\n dataField=\"avatar\"\n width={120}\n height={120}\n maxSizeKB={options.avatarMaxSizeKB}\n imageQuality={options.avatarImageQuality}\n maxOutputSizePx={options.avatarMaxOutputSizePx}\n />\n </Stack>\n </Grid.Col>\n </Grid>\n\n {options.showGroups && (\n <Grid>\n <Grid.Col span={{ base: 12 }}>\n <Text fz={14} fw={500}>Grupos</Text>\n </Grid.Col>\n <Grid.Col span={{ base: 12 }}>\n <ArchbaseDualListSelector<GroupDto, UserGroupDto>\n titleAvailable={getI18nextInstance().t('archbase:Disponíveis')}\n titleAssigned={getI18nextInstance().t('archbase:Selecionados')}\n assignedItemsDS={\n new ArchbaseDataSource('dsDualList', {\n records: props.dataSource.getFieldValue('groups'),\n grandTotalRecords: props.dataSource.getFieldValue('groups').length,\n currentPage: 0,\n totalPages: 0,\n pageSize: 999999\n })\n }\n width=\"100%\"\n height=\"200px\"\n availableItemsDS={dsGroups}\n handleCreateAssociationObject={(group: GroupDto) => {\n return UserGroupDto.newInstance(group)\n }}\n idFieldAssigned={(item: UserGroupDto) => (item && item.group ? item.group.id : '')}\n idFieldAvailable={'id'}\n labelFieldAssigned={(item: UserGroupDto) => (item && item.group ? item.group.name : '')}\n labelFieldAvailable={'name'}\n />\n </Grid.Col>\n </Grid>\n )}\n {options?.customContentAfter && (\n <>\n {options.customContentAfter(props.dataSource.getCurrentRecord()!)}\n </>\n )}\n <Space h={'12px'} />\n </Stack>\n </ScrollArea>\n \n <Group justify=\"flex-end\" mt=\"md\">\n <Button variant=\"default\" onClick={handleCancel}>\n {getI18nextInstance().t('archbase:Cancelar')}\n </Button>\n <Button onClick={handleSave}>\n {getI18nextInstance().t('archbase:Salvar')}\n </Button>\n </Group>\n </Modal>\n )\n}\n","/**\n * GroupModal — modal para gerenciar grupos/roles de usuários.\n * @status stable\n */\nimport React from 'react'\nimport { Grid, ScrollArea, Stack, Modal, Button, Group } from '@mantine/core'\nimport { getI18nextInstance } from '@archbase/core';\nimport { GroupDto } from '@archbase/security'\nimport { IArchbaseDataSourceBase } from '@archbase/data'\nimport { ArchbaseEdit } from '@archbase/components'\n\nexport interface GroupModalOptions {\n customContentBefore?: (group: GroupDto) => React.ReactNode;\n customContentAfter?: (group: GroupDto) => React.ReactNode;\n}\n\nexport interface GroupModalProps {\n dataSource: IArchbaseDataSourceBase<GroupDto>\n opened: boolean\n onClickOk: (record?: GroupDto, result?: any) => void\n onClickCancel: (record?: GroupDto) => void\n onCustomSave?: (record?: GroupDto, callback?: Function) => void\n onAfterSave?: (record?: GroupDto) => void\n options?: GroupModalOptions\n}\n\nexport const GroupModal = (props: GroupModalProps) => {\n const options = {...(props.options ?? {}) }\n \n const handleSave = () => {\n if (props.onCustomSave) {\n props.onCustomSave(props.dataSource.getCurrentRecord()!, (success: boolean) => {\n if (success && props.onAfterSave) {\n props.onAfterSave(props.dataSource.getCurrentRecord()!);\n }\n props.onClickOk(props.dataSource.getCurrentRecord()!, success);\n });\n } else {\n props.onClickOk(props.dataSource.getCurrentRecord()!, true);\n }\n };\n\n const handleCancel = () => {\n props.onClickCancel(props.dataSource.getCurrentRecord()!);\n };\n \n return (\n <Modal\n opened={props.opened}\n onClose={handleCancel}\n title={getI18nextInstance().t('archbase:Grupo')}\n size=\"60%\"\n styles={{content: {maxWidth: 1000}}}\n >\n <ScrollArea style={{ height: '460px' }}>\n <Stack w={\"98%\"}>\n {options?.customContentBefore && options.customContentBefore(props.dataSource.getCurrentRecord()!)}\n <Grid>\n <Grid.Col span={{ base: 12 }}>\n <ArchbaseEdit\n label={`${getI18nextInstance().t('archbase:Nome do grupo')}`}\n placeholder={`${getI18nextInstance().t('archbase:Informe o nome do grupo')}`}\n dataSource={props.dataSource}\n dataField=\"name\"\n />\n </Grid.Col>\n <Grid.Col span={{ base: 12 }}>\n <ArchbaseEdit\n label={`${getI18nextInstance().t('archbase:Descrição do grupo')}`}\n placeholder={`${getI18nextInstance().t('archbase:Informe a descrição do grupo')}`}\n dataSource={props.dataSource}\n dataField=\"description\"\n />\n </Grid.Col>\n </Grid>\n {options?.customContentAfter && options.customContentAfter(props.dataSource.getCurrentRecord()!)}\n \n <Group justify=\"flex-end\" mt=\"md\">\n <Button variant=\"default\" onClick={handleCancel}>\n {getI18nextInstance().t('archbase:Cancelar')}\n </Button>\n <Button onClick={handleSave}>\n {getI18nextInstance().t('archbase:Salvar')}\n </Button>\n </Group>\n </Stack>\n </ScrollArea>\n </Modal>\n )\n}\n","/**\n * ApiTokenModal — modal para criação/edição de tokens de API.\n * @status stable\n */\nimport { ArchbaseDataSource } from '@archbase/data';\nimport { ArchbaseAsyncSelect, ArchbaseEdit, OptionsResult } from '@archbase/components';\nimport { useArchbaseRemoteServiceApi } from '@archbase/data';\nimport { Page } from '@archbase/data';\nimport { Modal } from '@mantine/core';\nimport { Grid, Group, Image, ScrollArea, Text, Button } from '@mantine/core';\nimport { DateTimePicker, DateValue } from '@mantine/dates';\nimport { useFocusTrap } from '@mantine/hooks';\nimport { ARCHBASE_IOC_API_TYPE, builder, convertDateToISOString, emit, processErrorMessage, isBase64Validate, getI18nextInstance } from '@archbase/core';\nimport { useArchbaseV1V2Compatibility } from '@archbase/data';\nimport { useArchbaseTranslation } from '@archbase/core';\nimport React, { useState } from 'react';\nimport { NO_USER } from './ArchbaseSecurityView';\nimport { ArchbaseUserService } from '@archbase/security';\nimport { ApiTokenDto, GroupDto, UserDto } from '@archbase/security';\n\nexport const UserSelectItem = ({ image, label, description, ...others }) => (\n\t<div {...others}>\n\t\t<Group grow>\n\t\t\t<img style={{maxWidth:'32px'}} src={image} />\n\t\t\t<div>\n\t\t\t\t<Text size=\"sm\">{label}</Text>\n\t\t\t\t<Text size=\"xs\" opacity={0.65}>\n\t\t\t\t\t{description}\n\t\t\t\t</Text>\n\t\t\t</div>\n\t\t</Group>\n\t</div>\n);\n\nexport interface ApiTokenModalProps {\n\tdataSource: ArchbaseDataSource<ApiTokenDto, string>;\n\topened: boolean;\n\tonClickOk: (record?: ApiTokenDto, result?: any) => void;\n\tonClickCancel: (record?: ApiTokenDto) => void;\n\tonCustomSave?: (record?: ApiTokenDto, callback?: Function) => void;\n\tonAfterSave?: (record?: ApiTokenDto) => void;\n}\n\nexport const ApiTokenModal = (props: ApiTokenModalProps) => {\n\tconst focusTrapRef = useFocusTrap();\n\tconst [value, setValue] = useState<DateValue | undefined>();\n\tconst userApi = useArchbaseRemoteServiceApi<ArchbaseUserService>(ARCHBASE_IOC_API_TYPE.User);\n\n\t// 🔄 MIGRAÇÃO V1/V2: Hook de compatibilidade para ApiTokenModal\n\tconst v1v2Compatibility = useArchbaseV1V2Compatibility<string>(\n\t\t'ApiTokenModal',\n\t\tprops.dataSource,\n\t\t'expirationDate',\n\t\t''\n\t);\n\n\t// 🔄 MIGRAÇÃO V1/V2: Debug info para desenvolvimento\n\tif (process.env.NODE_ENV === 'development' && props.dataSource) {\n\t\tconsole.log(`[ApiTokenModal] DataSource version: ${v1v2Compatibility.dataSourceVersion}`);\n\t}\n\n\tconst handleChange = (value: DateValue) => {\n\t\tif (!value) {\n\t\t\t// 🔄 MIGRAÇÃO V1/V2: Usar handleValueChange do padrão de compatibilidade\n\t\t\tv1v2Compatibility.handleValueChange(undefined);\n\t\t} else {\n\t\t\t// Convert string to Date if needed before calling convertDateToISOString\n\t\t\tconst dateValue = typeof value === 'string' ? new Date(value) : value;\n\t\t\tconst isoString = convertDateToISOString(dateValue);\n\t\t\t// 🔄 MIGRAÇÃO V1/V2: Usar handleValueChange do padrão de compatibilidade\n\t\t\tv1v2Compatibility.handleValueChange(isoString);\n\t\t}\n\t\tsetValue(value);\n\t};\n\n\tconst loadRemoteUsers = async (page: number, value: string): Promise<OptionsResult<UserDto>> => {\n\t\treturn new Promise<OptionsResult<UserDto>>(async (resolve, reject) => {\n\t\t\ttry {\n\t\t\t\tconst filter = emit(builder.or(builder.eq('name', `^*${value.trim()}*`)));\n\t\t\t\tconst result: Page<UserDto> = await userApi.findAllWithFilter(filter, page, 20);\n\t\t\t\tresolve({\n\t\t\t\t\toptions: result.content,\n\t\t\t\t\tpage: result.pageable!.pageNumber,\n\t\t\t\t\ttotalPages: result.totalPages,\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\treject(processErrorMessage(error));\n\t\t\t}\n\t\t});\n\t};\n\n\tconst handleSave = () => {\n\t\tif (props.onCustomSave) {\n\t\t\tprops.onCustomSave(props.dataSource.current, (success: boolean) => {\n\t\t\t\tif (success && props.onAfterSave) {\n\t\t\t\t\tprops.onAfterSave(props.dataSource.current);\n\t\t\t\t}\n\t\t\t\tprops.onClickOk(props.dataSource.current, success);\n\t\t\t});\n\t\t} else {\n\t\t\tprops.onClickOk(props.dataSource.current, true);\n\t\t}\n\t};\n\n\tconst handleCancel = () => {\n\t\tprops.onClickCancel(props.dataSource.current);\n\t};\n\n\treturn (\n\t\t<Modal\n\t\t\topened={props.opened}\n\t\t\tonClose={handleCancel}\n\t\t\ttitle={getI18nextInstance().t('archbase:Token de API')}\n\t\t\tsize=\"50%\"\n\t\t>\n\t\t\t<ScrollArea style={{ height: '300px' }}>\n\t\t\t\t<ArchbaseEdit\n\t\t\t\t\tlabel={`${getI18nextInstance().t('archbase:Nome do token')}`}\n\t\t\t\t\tplaceholder={`${getI18nextInstance().t('archbase:Informe o nome do token')}`}\n\t\t\t\t\tdataSource={props.dataSource}\n\t\t\t\t\tdataField=\"name\"\n\t\t\t\t/>\n\t\t\t\t<ArchbaseEdit\n\t\t\t\t\tlabel={`${getI18nextInstance().t('archbase:Descrição do token')}`}\n\t\t\t\t\tplaceholder={`${getI18nextInstance().t('archbase:Informe a descrição do token')}`}\n\t\t\t\t\tdataSource={props.dataSource}\n\t\t\t\t\tdataField=\"description\"\n\t\t\t\t/>\n\t\t\t\t<DateTimePicker\n\t\t\t\t\twithSeconds={true}\n\t\t\t\t\tvalue={value}\n\t\t\t\t\tonChange={handleChange}\n\t\t\t\t\tlabel=\"Data/hora expiração\"\n\t\t\t\t\tplaceholder={'Selecione a data de expiração'}\n\t\t\t\t/>\n\t\t\t\t<ArchbaseAsyncSelect<any, string, UserDto>\n\t\t\t\t\tlabel={`${getI18nextInstance().t('archbase:Usuário')}`}\n\t\t\t\t\tdataSource={props.dataSource}\n\t\t\t\t\tdataField=\"user\"\n\t\t\t\t\tplaceholder={`${getI18nextInstance().t('archbase:Digite aqui o nome do usuário')}`}\n\t\t\t\t\tgetOptionLabel={(option: UserDto) => option && option.email ? option.email : ''}\n\t\t\t\t\tgetOptionValue={(option: UserDto) => option && option.id ? option.id.toString() : ''}\n\t\t\t\t\tgetOptions={loadRemoteUsers}\n\t\t\t\t\tdebounceTime={500}\n\t\t\t\t\tminCharsToSearch={1}\n\t\t\t\t\titemComponent={UserSelectItem}\n\t\t\t\t/>\n\t\t\t</ScrollArea>\n\t\t\t\n\t\t\t<Group justify=\"flex-end\" mt=\"md\">\n\t\t\t\t<Button variant=\"default\" onClick={handleCancel}>\n\t\t\t\t\t{getI18nextInstance().t('archbase:Cancelar')}\n\t\t\t\t</Button>\n\t\t\t\t<Button onClick={handleSave}>\n\t\t\t\t\t{getI18nextInstance().t('archbase:Salvar')}\n\t\t\t\t</Button>\n\t\t\t</Group>\n\t\t</Modal>\n\t);\n};\n","/**\n * PermissionsSelectorModal — modal para selecionar permissões/roles.\n * @status stable\n */\nimport React, { useCallback, useEffect, useState, useMemo } from \"react\";\nimport { ARCHBASE_IOC_API_TYPE, getKeyByEnumValue, getI18nextInstance } from \"@archbase/core\";\nimport { ActionIcon, Badge, Button, Group, Modal, Paper, ScrollArea, Stack, Text, TextInput, Tooltip, Tree, TreeNodeData, useMantineColorScheme, useTree } from \"@mantine/core\";\nimport { IconArrowLeft, IconArrowRight, IconBorderCornerSquare, IconChevronDown } from \"@tabler/icons-react\";\nimport { SecurityType } from \"@archbase/security\";\nimport { useArchbaseRemoteServiceApi, IArchbaseDataSourceBase } from \"@archbase/data\";\nimport { ResouceActionPermissionDto, ResoucePermissionsWithTypeDto } from \"@archbase/security\";\nimport { ArchbaseResourceService } from \"@archbase/security\";\nimport { useDebouncedValue } from \"@mantine/hooks\";\nimport { ArchbaseSpaceBottom, ArchbaseSpaceFill, ArchbaseSpaceFixed } from \"@archbase/layout\";\n\nconst translateDelimitedString = (inputString) => {\n const delimiter = \"->\"\n if (inputString.includes(delimiter)) {\n const parts = inputString.split(delimiter).map(part => part.trim());\n\n const translatedParts = parts.map(part => getI18nextInstance().t(part));\n\n return translatedParts.join(` ${delimiter} `);\n }\n\n return getI18nextInstance().t(inputString);\n};\n\nexport interface PermissionsSelectorProps {\n dataSource: IArchbaseDataSourceBase<any> | null\n opened: boolean\n close: () => void\n}\n\nexport function PermissionsSelectorModal({ dataSource, opened, close }: PermissionsSelectorProps) {\n // Memoiza os valores do dataSource para evitar recálculos\n const name = useMemo(() => dataSource?.getFieldValue(\"name\") || '', [dataSource]);\n const securityId = useMemo(() => dataSource?.getFieldValue(\"id\") || '', [dataSource]);\n const type = useMemo(() => dataSource?.getFieldValue(\"type\") || '', [dataSource]);\n\n const availablePermissionsTree = useTree()\n const grantedPermissionsTree = useTree()\n const [availablePermissions, setAvailablePermissions] = useState<ResoucePermissionsWithTypeDto[]>([])\n const [grantedPermissions, setGrantedPermissions] = useState<ResoucePermissionsWithTypeDto[]>([])\n const [selectedAvailablePermission, setSelectedAvailablePermission] = useState<TreeNodeData>()\n const [selectedGrantedPermission, setSelectedGrantedPermission] = useState<TreeNodeData>()\n const [availablePermissionsFilter, setAvailablePermissionsFilter] = useState(\"\")\n const [debouncedAvailablePermissionsFilter] = useDebouncedValue(availablePermissionsFilter, 200);\n const [grantedPermissionsFilter, setGrantedPermissionsFilter] = useState(\"\")\n const [debouncedGrantedPermissionsFilter] = useDebouncedValue(grantedPermissionsFilter, 200);\n\n\n const resourceApi = useArchbaseRemoteServiceApi<ArchbaseResourceService>(ARCHBASE_IOC_API_TYPE.Resource)\n\n const { colorScheme } = useMantineColorScheme();\n const selectedColor = colorScheme === \"dark\" ? \"var(--mantine-primary-color-7)\" : \"var(--mantine-primary-color-4)\"\n\n const permissionsGrantedData = useMemo(() => grantedPermissions\n .sort((a, b) => a.resourceDescription.localeCompare(b.resourceDescription))\n .map(resourcePermissions => {\n return (\n {\n value: resourcePermissions.resourceId,\n label: resourcePermissions.resourceDescription,\n children: resourcePermissions.permissions\n .filter(permission => permission.actionDescription.toLowerCase().includes(debouncedGrantedPermissionsFilter.toLowerCase()))\n .sort((a, b) => a.actionDescription.localeCompare(b.actionDescription))\n .map(permission => {\n return {\n value: permission.actionId,\n label: permission.actionDescription,\n nodeProps: {\n permissionId: permission.permissionId,\n types: permission.types ?? [],\n owner: resourcePermissions\n }\n }\n })\n }\n )\n }), [grantedPermissions, debouncedGrantedPermissionsFilter])\n\n const grantedPermissionsActionIds = useMemo(() => grantedPermissions\n .map(resourcePermissions => resourcePermissions.permissions.map(permission => permission.actionId))\n .flat(), [grantedPermissions])\n\n const allPermissionsData = useMemo(() => availablePermissions\n .sort((a, b) => a.resourceDescription.localeCompare(b.resourceDescription))\n .map(resourcePermissions => {\n return (\n {\n value: resourcePermissions.resourceId,\n label: resourcePermissions.resourceDescription,\n children: resourcePermissions.permissions\n .filter(permission => permission.actionDescription.toLowerCase().includes(debouncedAvailablePermissionsFilter.toLowerCase()))\n .sort((a, b) => a.actionDescription.localeCompare(b.actionDescription))\n .map(permission => {\n const permissionGranted = grantedPermissions\n .find(resourcePermissionsGranted => resourcePermissionsGranted.resourceId === resourcePermissions.resourceId)?.permissions\n .find(permissionGranted => permissionGranted.actionId === permission.actionId)\n return (\n {\n value: permission.actionId,\n label: permission.actionDescription,\n nodeProps: {\n granted: grantedPermissionsActionIds.includes(permission.actionId) && permissionGranted?.types?.includes(getKeyByEnumValue(SecurityType, type)!),\n owner: resourcePermissions\n }\n }\n )\n })\n }\n )\n }), [availablePermissions, grantedPermissions, grantedPermissionsActionIds, type, debouncedAvailablePermissionsFilter])\n\n const loadPermissions = useCallback(async () => {\n if (securityId) {\n const permissionsGranted = await resourceApi.getPermissionsBySecurityId(securityId, type)\n const allPermissions = await resourceApi.getAllPermissionsAvailable()\n setAvailablePermissions(allPermissions)\n setGrantedPermissions(permissionsGranted)\n }\n }, [securityId, type])\n\n const handleAdd = useCallback(() => {\n if (selectedAvailablePermission?.value && securityId) {\n resourceApi.createPermission(securityId, selectedAvailablePermission.value, type)\n .then((resouceActionPermissionDto: ResouceActionPermissionDto) => {\n if (resouceActionPermissionDto) {\n setGrantedPermissions(permissionsGranted => {\n let updatedPermissionsGranted;\n if (permissionsGranted.map(resourcePermissions => resourcePermissions.resourceId).includes(resouceActionPermissionDto.resourceId)) {\n updatedPermissionsGranted = permissionsGranted.map(resourcePermissions => {\n if (resourcePermissions.resourceId === resouceActionPermissionDto.resourceId) {\n if (resourcePermissions.permissions.map(permission => permission.actionId).includes(selectedAvailablePermission.value)) {\n return (\n {\n ...resourcePermissions,\n permissions: resourcePermissions.permissions.map(permission =>\n permission.actionId === selectedAvailablePermission.value ? {\n ...permission,\n permissionId: resouceActionPermissionDto.permissionId,\n types: [...(permission.types ?? []), getKeyByEnumValue(SecurityType, type)!],\n } : permission\n )\n }\n )\n }\n return (\n {\n ...resourcePermissions,\n permissions: [...(resourcePermissions.permissions ?? []),\n {\n actionId: resouceActionPermissionDto.actionId,\n actionDescription: resouceActionPermissionDto.actionDescription,\n permissionId: resouceActionPermissionDto.permissionId,\n types: [getKeyByEnumValue(SecurityType, type)!]\n }]\n }\n )\n }\n return resourcePermissions\n });\n } else {\n updatedPermissionsGranted = [\n ...permissionsGranted,\n {\n resourceId: resouceActionPermissionDto.resourceId,\n resourceDescription: resouceActionPermissionDto.resourceDescription,\n permissions: [\n {\n actionId: resouceActionPermissionDto.actionId,\n actionDescription: resouceActionPermissionDto.actionDescription,\n permissionId: resouceActionPermissionDto.permissionId,\n types: [getKeyByEnumValue(SecurityType, type)!]\n }\n ]\n }\n ]\n }\n\n return updatedPermissionsGranted\n })\n\n const resourceAvailablePermissions = allPermissionsData\n .filter((resourcePermissionsNode: any) => resourcePermissionsNode.value === selectedAvailablePermission?.nodeProps?.owner?.resourceId)\n .map((resourcePermissionsNode: any) => resourcePermissionsNode.children).flat()\n\n const previousSelectedPermissionIndex = resourceAvailablePermissions.map((permission: any) => permission.value).indexOf(selectedAvailablePermission.value)\n const nextSelectedAvailablePermission = resourceAvailablePermissions\n .find((permissionNode: any, index: any) => !permissionNode?.nodeProps?.granted\n && permissionNode?.value !== selectedAvailablePermission.value\n && (resourceAvailablePermissions.length > previousSelectedPermissionIndex + 1\n ? index > previousSelectedPermissionIndex\n : true))\n if (nextSelectedAvailablePermission?.value) {\n availablePermissionsTree.select(nextSelectedAvailablePermission.value)\n }\n grantedPermissionsTree.expand(resouceActionPermissionDto.resourceId)\n setSelectedAvailablePermission(nextSelectedAvailablePermission)\n }\n })\n }\n }, [selectedAvailablePermission, securityId, type, resourceApi, allPermissionsData, availablePermissions, grantedPermissions, availablePermissionsTree, grantedPermissionsTree])\n\n const handleRemove = useCallback(() => {\n if (selectedGrantedPermission?.nodeProps?.permissionId) {\n resourceApi.deletePermission(selectedGrantedPermission.nodeProps.permissionId)\n .then(() => {\n setGrantedPermissions(permissionsGranted => {\n const updatedPermissionsGranted = [...permissionsGranted]\n .filter(resourcePermissions => {\n let hasOnePermissionOnResource = true\n resourcePermissions.permissions?.forEach(permission => {\n if (permission.permissionId !== undefined\n && permission.permissionId === selectedGrantedPermission?.nodeProps?.permissionId\n && resourcePermissions.permissions.length === 1\n && permission?.types?.length === 1\n && permission.types[0] === getKeyByEnumValue(SecurityType, type)) {\n hasOnePermissionOnResource = false;\n }\n })\n return hasOnePermissionOnResource;\n })\n .map(resourcePermissions => {\n const resource: ResoucePermissionsWithTypeDto = selectedGrantedPermission?.nodeProps?.owner\n if (resourcePermissions.resourceId === resource.resourceId) {\n if (selectedGrantedPermission?.nodeProps?.types?.length === 1) {\n return ({\n ...resourcePermissions,\n permissions: [...(resourcePermissions.permissions ?? [])\n .filter(permission => permission.permissionId !== selectedGrantedPermission?.nodeProps?.permissionId)]\n })\n }\n return (\n {\n ...resourcePermissions,\n permissions: (resourcePermissions.permissions ?? [])\n .map(permission => permission.actionId === selectedGrantedPermission.value\n ? ({\n actionId: permission.actionId,\n actionDescription: permission.actionDescription,\n types: [...(permission.types?.filter(currentType => currentType && (currentType !== getKeyByEnumValue(SecurityType, type))) ?? [])]\n }) : permission)\n }\n )\n }\n return resourcePermissions\n })\n return updatedPermissionsGranted\n })\n\n const resourceGrantedPermissions = permissionsGrantedData\n .filter((resourcePermissionsNode: any) => resourcePermissionsNode.value === selectedGrantedPermission?.nodeProps?.owner?.resourceId)\n .map((resourcePermissionsNode: any) => resourcePermissionsNode.children).flat()\n\n const previousSelectedPermissionIndex = resourceGrantedPermissions.map((permission: any) => permission.value).indexOf(selectedGrantedPermission.value)\n\n const nextSelectedGrantedPermission = resourceGrantedPermissions\n .find((permissionNode: any, index: any) => permissionNode?.nodeProps?.types.includes(getKeyByEnumValue(SecurityType, type))\n && permissionNode?.value !== selectedGrantedPermission.value\n && (resourceGrantedPermissions.length > previousSelectedPermissionIndex + 1 ? index > previousSelectedPermissionIndex : true))\n if (nextSelectedGrantedPermission?.value) {\n grantedPermissionsTree.select(nextSelectedGrantedPermission.value)\n }\n setSelectedGrantedPermission(nextSelectedGrantedPermission)\n })\n }\n }, [selectedGrantedPermission, resourceApi, type, permissionsGrantedData, grantedPermissions, grantedPermissionsTree])\n\n useEffect(() => {\n if (opened && dataSource) {\n setSelectedAvailablePermission(undefined)\n setSelectedGrantedPermission(undefined)\n setAvailablePermissionsFilter(\"\")\n setGrantedPermissionsFilter(\"\")\n grantedPermissionsTree.collapseAllNodes()\n availablePermissionsTree.collapseAllNodes()\n loadPermissions()\n }\n }, [opened, type, securityId, loadPermissions])\n\n // Não exibir o modal se não houver dataSource\n if (!dataSource) {\n return null;\n }\n\n return (\n <Modal opened={opened} onClose={close} title={`${getI18nextInstance().t(`archbase:${type}`)}: ${name}`} size={\"80%\"} styles={{ root: { overflow: \"hidden\" } }}>\n <ArchbaseSpaceFixed height={\"540px\"}>\n <ArchbaseSpaceFill>\n <Paper withBorder my={20} p={20} style={{ height: 'calc(100% - 40px)', overflow: 'hidden', display: 'flex', flexDirection: 'column' }}>\n <div style={{ flex: 1, display: 'flex', flexDirection: 'row', overflow: 'hidden', minHeight: 0, gap: '8px' }}>\n <div style={{ flex: 9, display: 'flex', flexDirection: 'column', overflow: 'hidden', minHeight: 0 }}>\n <Group mb={20}>\n <Text>{getI18nextInstance().t('archbase:Available')}</Text>\n <TextInput\n size=\"xs\"\n value={availablePermissionsFilter}\n onChange={(event) => setAvailablePermissionsFilter(event.target.value)}\n placeholder={getI18nextInstance().t('archbase:Filter available permissions')}\n />\n </Group>\n <ScrollArea style={{ flex: 1, minHeight: 0 }}>\n <Tree\n data={allPermissionsData}\n selectOnClick={true}\n allowRangeSelection={false}\n tree={availablePermissionsTree}\n renderNode={({ level, node, expanded, hasChildren, selected, elementProps }) => {\n const isGranted = node?.nodeProps?.granted;\n const textColor = isGranted ? \"dimmed\" : undefined;\n const textDecoration = isGranted ? \"line-through\" : undefined;\n\n const handleClick = useCallback((event: any) => {\n setSelectedAvailablePermission(node)\n elementProps.onClick(event)\n }, [node, elementProps.onClick])\n\n return (\n <Group ml={hasChildren ? 0 : 5} gap={5} {...elementProps}\n bg={selected && level === 2 ? selectedColor : \"\"}\n onClick={handleClick}\n >\n {hasChildren && (\n <IconChevronDown\n size={18}\n style={{ transform: expanded ? 'rotate(0deg)' : 'rotate(-90deg)' }}\n />\n )}\n {!hasChildren && (\n <IconBorderCornerSquare\n size={12}\n style={{ transform: 'rotate(-90deg)', marginTop: \"-5px\" }}\n />\n )}\n <Text\n c={textColor}\n td={textDecoration}\n >\n {translateDelimitedString(node.label as string)}\n </Text>\n </Group>\n )\n }\n }\n />\n </ScrollArea>\n </div>\n <div style={{ flex: 2, display: 'flex', alignItems: 'center', justifyContent: 'center' }}>\n <Stack gap={5} align=\"center\">\n <Tooltip label={getI18nextInstance().t('archbase:Add')}>\n <ActionIcon onClick={handleAdd} disabled={!selectedAvailablePermission || selectedAvailablePermission?.nodeProps?.granted || !selectedAvailablePermission.nodeProps}>\n <IconArrowRight />\n </ActionIcon>\n </Tooltip>\n <Tooltip label={getI18nextInstance().t('archbase:Remove')}>\n <ActionIcon onClick={handleRemove} disabled={!selectedGrantedPermission || !selectedGrantedPermission?.nodeProps?.permissionId || !selectedGrantedPermission.nodeProps}>\n <IconArrowLeft />\n </ActionIcon>\n </Tooltip>\n </Stack>\n </div>\n <div style={{ flex: 9, display: 'flex', flexDirection: 'column', overflow: 'hidden', minHeight: 0 }}>\n <Group mb={20}>\n <Text>{getI18nextInstance().t('archbase:Granted')}</Text>\n <TextInput\n size=\"xs\"\n value={grantedPermissionsFilter}\n onChange={(event) => setGrantedPermissionsFilter(event.target.value)}\n placeholder={getI18nextInstance().t('archbase:Filter granted permissions')}\n />\n </Group>\n <ScrollArea style={{ flex: 1, minHeight: 0 }}>\n <Tree\n data={permissionsGrantedData}\n selectOnClick={true}\n allowRangeSelection={false}\n tree={grantedPermissionsTree}\n renderNode={({ level, node, expanded, hasChildren, selected, elementProps }) => {\n const handleClick = useCallback((event: any) => {\n setSelectedGrantedPermission(node)\n elementProps.onClick(event)\n }, [node, elementProps.onClick])\n\n return (\n <Group ml={hasChildren ? 0 : 5} gap={5} {...elementProps} bg={selected && level === 2 ? selectedColor : \"\"}\n onClick={handleClick}\n >\n {hasChildren && (\n <IconChevronDown\n size={18}\n style={{ transform: expanded ? 'rotate(0deg)' : 'rotate(-90deg)' }}\n />\n )}\n {!hasChildren && (\n <IconBorderCornerSquare\n size={12}\n style={{ transform: 'rotate(-90deg)', marginTop: \"-5px\" }}\n />\n )}\n <Text>{translateDelimitedString(node.label as string)}</Text>\n {node?.nodeProps?.types?.includes(\"USER\") && <Badge color=\"blue\">{getI18nextInstance().t('archbase:user')}</Badge>}\n {node?.nodeProps?.types?.includes(\"GROUP\") && <Badge color=\"orange\">{getI18nextInstance().t('archbase:group')}</Badge>}\n {node?.nodeProps?.types?.includes(\"PROFILE\") && <Badge color=\"pink\">{getI18nextInstance().t('archbase:profile')}</Badge>}\n </Group>\n )\n }}\n />\n </ScrollArea>\n </div>\n </div>\n </Paper>\n </ArchbaseSpaceFill>\n <ArchbaseSpaceBottom size=\"40px\">\n <Group justify=\"flex-end\">\n <Button onClick={close}>{getI18nextInstance().t(\"archbase:Close\")}</Button>\n </Group>\n </ArchbaseSpaceBottom>\n </ArchbaseSpaceFixed>\n </Modal>\n )\n}\n","/**\n * ArchbaseSecurityView — visão completa de usuários/grupos/permissões.\n * @status stable\n */\nimport { ARCHBASE_IOC_API_TYPE, builder, emit, processDetailErrorMessage, processErrorMessage, useValidationErrors } from '@archbase/core';\nimport { ArchbaseDataSource } from '@archbase/data';\n// import { ArchbaseCountdownProgress } from '@archbase/components'; // Temporarily disabled\nimport {\n\tuseArchbaseRemoteDataSourceV2,\n\tuseArchbaseRemoteServiceApi,\n\tuseArchbaseStore,\n} from '@archbase/data';\nimport { useArchbaseTheme, isBase64Validate, useArchbaseValidator } from '@archbase/core';\nimport { useArchbaseListContext } from '@archbase/components';\nimport { ArchbaseListCustomItemProps } from '@archbase/components';\nimport { ArchbaseDialog, ArchbaseNotifications } from '@archbase/components';\nimport {\n\tActionIcon,\n\tBadge,\n\tButton,\n\tFlex,\n\tGroup,\n\tPaper,\n\tTabs,\n\tText,\n\tTooltip,\n\tuseMantineColorScheme,\n} from '@mantine/core';\nimport { IconEdit, IconPlus, IconShieldCheckered, IconTrashX } from '@tabler/icons-react';\n// Importações da DataGrid\nimport { ArchbaseDataGridColumn } from '@archbase/components';\nimport { ArchbaseDataGrid, ArchbaseDataGridRef, Columns } from '@archbase/components';\nimport { useArchbaseTranslation } from '@archbase/core';\nimport React, { ReactNode, useEffect, useRef, useState } from 'react';\nimport { ArchbaseAccessTokenService } from '@archbase/security';\nimport { ArchbaseGroupService } from '@archbase/security';\nimport { ArchbaseProfileService } from '@archbase/security';\nimport { ArchbaseResourceService } from '@archbase/security';\nimport { ArchbaseUserService } from '@archbase/security';\nimport { GroupModal, GroupModalOptions } from './GroupModal';\nimport { PermissionsSelectorModal } from './PermissionsSelectorModal';\nimport { ProfileModal, ProfileModalOptions } from './ProfileModal';\nimport { AccessTokenDto, GroupDto, ProfileDto, ResourceDto, UserDto } from '@archbase/security';\nimport { SecurityType } from '@archbase/security';\nimport { UserModal, UserModalOptions } from './UserModal';\nimport { IconEye } from '@tabler/icons-react';\n\nexport interface ArchbaseSecurityProps {\n\tbeforeDefaultUserActions?: (row: UserDto) => ReactNode;\n\tafterDefaultUserActions?: (row: UserDto) => ReactNode;\n\tbeforeDefaultProfileActions?: (row: ProfileDto) => ReactNode;\n\tafterDefaultProfileActions?: (row: ProfileDto) => ReactNode;\n\tbeforeDefaultGroupActions?: (row: GroupDto) => ReactNode;\n\tafterDefaultGroupActions?: (row: GroupDto) => ReactNode;\n\tuserActionsColumnWidth?: number;\n\tprofileActionsColumnWidth?: number;\n\tgroupActionsColumnWidth?: number;\n}\n\ninterface ArchbaseSecurityManagerProps {\n\theight?: any;\n\twidth?: any;\n\tdataSourceUsers?: ArchbaseDataSource<UserDto, string>;\n\tcreateEntitiesWithId?: boolean;\n\tuserModalOptions?: UserModalOptions;\n\tgroupModalOptions?: GroupModalOptions;\n\tprofileModalOptions?: ProfileModalOptions;\n\toptions?: ArchbaseSecurityProps;\n}\n\nexport const NO_USER =\n\t'data:image/png;base64,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';\n\nconst renderGroups = (user: UserDto) => {\n\tif (!user.groups) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<div style={{ display: 'flex' }}>\n\t\t\t{user.groups\n\t\t\t\t.slice()\n\t\t\t\t.sort((a, b) => (a.group?.name ?? '').localeCompare(b.group?.name ?? ''))\n\t\t\t\t.map((item, index) => (\n\t\t\t\t\t<div key={index} style={{ paddingRight: '2px' }}>\n\t\t\t\t\t\t<Badge color=\"blue\">{item.group?.name}</Badge>\n\t\t\t\t\t</div>\n\t\t\t\t))}\n\t\t</div>\n\t);\n};\n\nconst renderProfile = (user: UserDto) => {\n\tif (!user.profile) {\n\t\treturn null;\n\t}\n\treturn <Badge color=\"green\">{user.profile?.name}</Badge>;\n};\n\nexport interface UserItemProps extends ArchbaseListCustomItemProps<UserDto, string> {}\n\nexport const UserItem = (props: UserItemProps) => {\n\tconst theme = useArchbaseTheme();\n\tconst listContextValue = useArchbaseListContext<UserDto, string>();\n\tconst itemRef = useRef<any>(null);\n\n\tconst handleClick = (event) => {\n\t\tevent.preventDefault();\n\t\tif (!props.disabled) {\n\t\t\tif (listContextValue.handleSelectItem) {\n\t\t\t\tlistContextValue.handleSelectItem(props.index, props.recordData!);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst avatar =\n\t\tprops.recordData && props.recordData.avatar && isBase64Validate(props.recordData.avatar)\n\t\t\t? atob(props.recordData.avatar)\n\t\t\t: NO_USER;\n\tconst backgroundColor = props.active ? listContextValue.activeBackgroundColor : '';\n\tconst color = props.active ? listContextValue.activeColor : '';\n\n\treturn (\n\t\t<div\n\t\t\tonClick={handleClick}\n\t\t\tstyle={{\n\t\t\t\tpadding: '8px',\n\t\t\t\tbackgroundColor,\n\t\t\t\tcolor,\n\t\t\t\tcursor: props.disabled ? 'not-allowed' : 'pointer',\n\t\t\t}}\n\t\t\tref={itemRef}\n\t\t\ttabIndex={-1}\n\t\t>\n\t\t\t<Group wrap=\"nowrap\">\n\t\t\t\t<img\n\t\t\t\t\tstyle={{ width: '48px', borderRadius: 50 }}\n\t\t\t\t\tsrc={avatar}\n\t\t\t\t\talt={props.recordData ? props.recordData.userName : ''}\n\t\t\t\t/>\n\t\t\t\t<div>\n\t\t\t\t\t<Text size=\"sm\">{props.recordData.name}</Text>\n\t\t\t\t\t<Text size=\"xs\" opacity={0.65}>\n\t\t\t\t\t\t{props.recordData.email}\n\t\t\t\t\t</Text>\n\t\t\t\t</div>\n\t\t\t</Group>\n\t\t</div>\n\t);\n};\n\nexport function ArchbaseSecurityView({\n\theight = '400px',\n\twidth = '100%',\n\tcreateEntitiesWithId = true,\n\tuserModalOptions,\n\tprofileModalOptions,\n\tgroupModalOptions,\n\toptions,\n}: ArchbaseSecurityManagerProps) {\n\tconst theme = useArchbaseTheme();\n\tconst templateStore = useArchbaseStore('securityStore');\n\tconst validator = useArchbaseValidator();\n\tconst { colorScheme } = useMantineColorScheme();\n\tconst [error, setError] = useState<string | undefined>(undefined);\n\tconst [activeTab, setActiveTab] = useState<string | null>('users');\n\tconst userApi = useArchbaseRemoteServiceApi<ArchbaseUserService>(ARCHBASE_IOC_API_TYPE.User);\n\tconst groupApi = useArchbaseRemoteServiceApi<ArchbaseGroupService>(ARCHBASE_IOC_API_TYPE.Group);\n\tconst resourceApi = useArchbaseRemoteServiceApi<ArchbaseResourceService>(ARCHBASE_IOC_API_TYPE.Resource);\n\tconst profileApi = useArchbaseRemoteServiceApi<ArchbaseProfileService>(ARCHBASE_IOC_API_TYPE.Profile);\n\tconst [openedModal, setOpenedModal] = useState<string>('');\n\tconst [openedPermissionsModal, setOpenedPermissionsModal] = useState<string>('');\n\tconst accessTokenApi = useArchbaseRemoteServiceApi<ArchbaseAccessTokenService>(ARCHBASE_IOC_API_TYPE.AccessToken);\n\tconst {t} = useArchbaseTranslation();\n\n\t// Referências para os grids\n\tconst usersGridRef = useRef<ArchbaseDataGridRef | null>(null);\n\tconst groupsGridRef = useRef<ArchbaseDataGridRef | null>(null);\n\tconst profilesGridRef = useRef<ArchbaseDataGridRef | null>(null);\n\tconst resourcesGridRef = useRef<ArchbaseDataGridRef | null>(null);\n\tconst accessTokensGridRef = useRef<ArchbaseDataGridRef | null>(null);\n\n\t// Função para obter o ID da linha\n\tconst getUserRowId = (row: UserDto): string => {\n\t\treturn row.id;\n\t};\n\n\tconst getGroupRowId = (row: GroupDto): string => {\n\t\treturn row.id;\n\t};\n\n\tconst getProfileRowId = (row: ProfileDto): string => {\n\t\treturn row.id;\n\t};\n\n\tconst getResourceRowId = (row: ResourceDto): string => {\n\t\treturn row.id;\n\t};\n\n\tconst getAccessTokenRowId = (row: AccessTokenDto): string => {\n\t\treturn row.id;\n\t};\n\n\tconst {\n\t\tdataSource: dsAccessTokens,\n\t\tisLoading: isLoadingAccessTokens,\n\t\trefreshData: refreshAccessTokens\n\t} = useArchbaseRemoteDataSourceV2<AccessTokenDto>({\n\t\tname: 'accessTokenApi',\n\t\tservice: accessTokenApi,\n\t\tvalidator,\n\t\tpageSize: 25,\n\t\tdefaultSortFields: ['user.email', 'expirationTime:desc'],\n\t\tonError: (error, origin) => {\n\t\t\tsetError(error);\n\t\t\tArchbaseNotifications.showError(`${t('archbase:WARNING')}`, error, origin);\n\t\t},\n\t});\n\n\tconst {\n\t\tdataSource: dsUsers,\n\t\tisLoading: isLoadingUsers,\n\t\trefreshData: refreshUsers\n\t} = useArchbaseRemoteDataSourceV2<UserDto>({\n\t\tname: 'dsUsers',\n\t\tservice: userApi,\n\t\tvalidator,\n\t\tpageSize: 25,\n\t\tonError: (error, origin) => {\n\t\t\tsetError(error);\n\t\t\tArchbaseNotifications.showError(`${t('archbase:WARNING')}`, error, origin);\n\t\t},\n\t});\n\n\tconst {\n\t\tdataSource: dsGroups,\n\t\tisLoading: isLoadingGroups,\n\t\trefreshData: refreshGroups\n\t} = useArchbaseRemoteDataSourceV2<GroupDto>({\n\t\tname: 'dsGroups',\n\t\tservice: groupApi,\n\t\tvalidator,\n\t\tpageSize: 25,\n\t\tonError: (error, origin) => {\n\t\t\tsetError(error);\n\t\t\tArchbaseNotifications.showError(`${t('archbase:WARNING')}`, error, origin);\n\t\t},\n\t});\n\n\tconst {\n\t\tdataSource: dsProfiles,\n\t\tisLoading: isLoadingProfiles,\n\t\trefreshData: refreshProfiles\n\t} = useArchbaseRemoteDataSourceV2<ProfileDto>({\n\t\tname: 'dsProfile',\n\t\tservice: profileApi,\n\t\tvalidator,\n\t\tpageSize: 25,\n\t\tonError: (error, origin) => {\n\t\t\tsetError(error);\n\t\t\tArchbaseNotifications.showError(`${t('archbase:WARNING')}`, error, origin);\n\t\t},\n\t});\n\n\tconst {\n\t\tdataSource: dsResources,\n\t\tisLoading: isLoadingResources,\n\t\trefreshData: refreshResources\n\t} = useArchbaseRemoteDataSourceV2<ResourceDto>({\n\t\tname: 'dsResources',\n\t\tservice: resourceApi,\n\t\tvalidator,\n\t\tpageSize: 25,\n\t\tonError: (error, origin) => {\n\t\t\tsetError(error);\n\t\t\tArchbaseNotifications.showError(`${t('archbase:WARNING')}`, error, origin);\n\t\t},\n\t});\n\n\t// Carregar dados iniciais\n\tuseEffect(() => {\n\t\t// AccessTokens with filter\n\t\trefreshAccessTokens({ filter: emit(builder.eq('revoked', 'false')) });\n\t\t// Other data sources\n\t\trefreshUsers();\n\t\trefreshGroups();\n\t\trefreshProfiles();\n\t\trefreshResources();\n\t}, []);\n\n\tconst accessTokenColumns = (\n\t\t<Columns>\n\t\t\t<ArchbaseDataGridColumn<AccessTokenDto>\n\t\t\t\tdataField=\"user.avatar\"\n\t\t\t\tdataType=\"image\"\n\t\t\t\tsize={80}\n\t\t\t\theader={`${t('archbase:Foto')}`}\n\t\t\t\trender={(data) => (\n\t\t\t\t\t<img\n\t\t\t\t\t\tstyle={{ borderRadius: 50, height: '32px', maxHeight: '32px' }}\n\t\t\t\t\t\tsrc={data.row.user && data.row.user.avatar ? atob(data.row.user.avatar) : NO_USER}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\tinputFilterType=\"text\"\n\t\t\t\talign=\"center\"\n\t\t\t\texportable={false}\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<AccessTokenDto>\n\t\t\t\tdataField=\"user.userName\"\n\t\t\t\tdataType=\"text\"\n\t\t\t\tsize={300}\n\t\t\t\theader={`${t('archbase:Nome de Usuário')}`}\n\t\t\t\tinputFilterType=\"text\"\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<AccessTokenDto>\n\t\t\t\tdataField=\"user.email\"\n\t\t\t\tdataType=\"text\"\n\t\t\t\theader={`${t('archbase:Email')}`}\n\t\t\t\tsize={300}\n\t\t\t\tinputFilterType=\"text\"\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<AccessTokenDto>\n\t\t\t\tdataField=\"expirationDate\"\n\t\t\t\tdataType=\"text\"\n\t\t\t\tsize={300}\n\t\t\t\theader={`${t('archbase:Expira em')}`}\n\t\t\t\trender={(data) => <Text size=\"sm\">{data.row.expirationDate}</Text>}\n\t\t\t\tinputFilterType=\"text\"\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<AccessTokenDto>\n\t\t\t\tdataField=\"revoked\"\n\t\t\t\tdataType=\"boolean\"\n\t\t\t\theader={`${t('archbase:Revogado ?')}`}\n\t\t\t\tinputFilterType=\"checkbox\"\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<AccessTokenDto>\n\t\t\t\tdataField=\"expired\"\n\t\t\t\tdataType=\"boolean\"\n\t\t\t\theader={`${t('archbase:Expirado ?')}`}\n\t\t\t\tinputFilterType=\"checkbox\"\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<AccessTokenDto>\n\t\t\t\tdataField=\"token\"\n\t\t\t\tdataType=\"text\"\n\t\t\t\theader={`${t('archbase:Token Acesso')}`}\n\t\t\t\tsize={300}\n\t\t\t\tinputFilterType=\"text\"\n\t\t\t/>\n\t\t</Columns>\n\t);\n\n\tconst userColumns = (\n\t\t<Columns>\n\t\t\t<ArchbaseDataGridColumn<UserDto>\n\t\t\t\tdataField=\"avatar\"\n\t\t\t\tdataType=\"image\"\n\t\t\t\tsize={80}\n\t\t\t\theader={`${t('archbase:Foto')}`}\n\t\t\t\trender={(data) => (\n\t\t\t\t\t<img\n\t\t\t\t\t\tstyle={{ borderRadius: 50, height: '32px', maxHeight: '32px' }}\n\t\t\t\t\t\tsrc={data.row.avatar ? atob(data.row.avatar) : NO_USER}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\tenableSorting={false}\n\t\t\t\tenableColumnFilter={false}\n\t\t\t\tenableGlobalFilter={false}\n\t\t\t\talign=\"center\"\n\t\t\t\texportable={false}\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<UserDto>\n\t\t\t\tdataField=\"name\"\n\t\t\t\tdataType=\"text\"\n\t\t\t\tsize={300}\n\t\t\t\theader={`${t('archbase:Nome')}`}\n\t\t\t\tinputFilterType=\"text\"\n\t\t\t\ttruncate={true}\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<UserDto>\n\t\t\t\tdataField=\"nickname\"\n\t\t\t\tdataType=\"text\"\n\t\t\t\tsize={120}\n\t\t\t\theader={`${t('archbase:Apelido')}`}\n\t\t\t\tinputFilterType=\"text\"\n\t\t\t\ttruncate={true}\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<UserDto>\n\t\t\t\tdataField=\"email\"\n\t\t\t\tdataType=\"text\"\n\t\t\t\theader={`${t('archbase:Email')}`}\n\t\t\t\tsize={300}\n\t\t\t\tinputFilterType=\"text\"\n\t\t\t\ttruncate={true}\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<UserDto>\n\t\t\t\tdataField=\"accountDeactivated\"\n\t\t\t\tdataType=\"boolean\"\n\t\t\t\theader={`${t('archbase:Desativado?')}`}\n\t\t\t\tinputFilterType=\"checkbox\"\n\t\t\t\tsize={120}\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<UserDto>\n\t\t\t\tdataField=\"profile.name\"\n\t\t\t\tdataType=\"text\"\n\t\t\t\theader={`${t('archbase:Perfil')}`}\n\t\t\t\tsize={200}\n\t\t\t\trender={(data) => renderProfile(data.row)}\n\t\t\t\tinputFilterType=\"text\"\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<UserDto>\n\t\t\t\tdataField=\"groups\"\n\t\t\t\tdataType=\"text\"\n\t\t\t\tsize={300}\n\t\t\t\theader={`${t('archbase:Grupos')}`}\n\t\t\t\trender={(data) => renderGroups(data.row)}\n\t\t\t\texportValue={(row) =>\n\t\t\t\t\trow.groups\n\t\t\t\t\t\t?.slice()\n\t\t\t\t\t\t.sort((a, b) => (a.group?.name ?? '').localeCompare(b.group?.name ?? ''))\n\t\t\t\t\t\t.map((g) => g.group?.name)\n\t\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t\t.join(', ') || ''\n\t\t\t\t}\n\t\t\t\tenableSorting={false}\n\t\t\t\tenableColumnFilter={false}\n\t\t\t\tenableGlobalFilter={false}\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<UserDto>\n\t\t\t\tdataField=\"isAdministrator\"\n\t\t\t\tdataType=\"boolean\"\n\t\t\t\theader={`${t('archbase:Admin ?')}`}\n\t\t\t\tinputFilterType=\"checkbox\"\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<UserDto>\n\t\t\t\tdataField=\"changePasswordOnNextLogin\"\n\t\t\t\tdataType=\"boolean\"\n\t\t\t\theader={`${t('archbase:Alt.senha próximo login?')}`}\n\t\t\t\tinputFilterType=\"checkbox\"\n\t\t\t\tsize={120}\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<UserDto>\n\t\t\t\tdataField=\"allowPasswordChange\"\n\t\t\t\tdataType=\"boolean\"\n\t\t\t\theader={`${t('archbase:Pode alterar senha?')}`}\n\t\t\t\tinputFilterType=\"checkbox\"\n\t\t\t\tsize={120}\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<UserDto>\n\t\t\t\tdataField=\"allowMultipleLogins\"\n\t\t\t\tdataType=\"boolean\"\n\t\t\t\theader={`${t('archbase:Permite multiplos logins?')}`}\n\t\t\t\tinputFilterType=\"checkbox\"\n\t\t\t\tsize={120}\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<UserDto>\n\t\t\t\tdataField=\"passwordNeverExpires\"\n\t\t\t\tdataType=\"boolean\"\n\t\t\t\theader={`${t('archbase:Senha nunca expira?')}`}\n\t\t\t\tinputFilterType=\"checkbox\"\n\t\t\t\tsize={120}\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<UserDto>\n\t\t\t\tdataField=\"accountLocked\"\n\t\t\t\tdataType=\"boolean\"\n\t\t\t\theader={`${t('archbase:Bloqueado?')}`}\n\t\t\t\tinputFilterType=\"checkbox\"\n\t\t\t\tsize={120}\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<UserDto>\n\t\t\t\tdataField=\"unlimitedAccessHours\"\n\t\t\t\tdataType=\"boolean\"\n\t\t\t\theader={`${t('archbase:Horário acesso ilimitado?')}`}\n\t\t\t\tinputFilterType=\"checkbox\"\n\t\t\t\tsize={140}\n\t\t\t/>\n\t\t</Columns>\n\t);\n\n\tconst groupColumns = (\n\t\t<Columns>\n\t\t\t<ArchbaseDataGridColumn<GroupDto>\n\t\t\t\tdataField=\"name\"\n\t\t\t\tdataType=\"text\"\n\t\t\t\tsize={300}\n\t\t\t\theader={`${t('archbase:Nome do grupo')}`}\n\t\t\t\tinputFilterType=\"text\"\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<GroupDto>\n\t\t\t\tdataField=\"description\"\n\t\t\t\tdataType=\"text\"\n\t\t\t\theader={`${t('archbase:Descrição')}`}\n\t\t\t\tsize={800}\n\t\t\t\tinputFilterType=\"text\"\n\t\t\t/>\n\t\t</Columns>\n\t);\n\n\tconst profileColumns = (\n\t\t<Columns>\n\t\t\t<ArchbaseDataGridColumn<ProfileDto>\n\t\t\t\tdataField=\"name\"\n\t\t\t\tdataType=\"text\"\n\t\t\t\tsize={300}\n\t\t\t\theader={`${t('archbase:Nome do perfil')}`}\n\t\t\t\tinputFilterType=\"text\"\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<ProfileDto>\n\t\t\t\tdataField=\"description\"\n\t\t\t\tdataType=\"text\"\n\t\t\t\theader={`${t('archbase:Descrição')}`}\n\t\t\t\tsize={800}\n\t\t\t\tinputFilterType=\"text\"\n\t\t\t/>\n\t\t</Columns>\n\t);\n\n\tconst resourceColumns = (\n\t\t<Columns>\n\t\t\t<ArchbaseDataGridColumn<ResourceDto>\n\t\t\t\tdataField=\"name\"\n\t\t\t\tdataType=\"text\"\n\t\t\t\tsize={300}\n\t\t\t\theader={`${t('archbase:Nome do recurso')}`}\n\t\t\t\tinputFilterType=\"text\"\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<ResourceDto>\n\t\t\t\tdataField=\"description\"\n\t\t\t\tdataType=\"text\"\n\t\t\t\theader={`${t('archbase:Descrição')}`}\n\t\t\t\tsize={800}\n\t\t\t\tinputFilterType=\"text\"\n\t\t\t/>\n\t\t</Columns>\n\t);\n\n\tconst handleAddUserExecute = () => {\n\t\tconst user = UserDto.newInstance();\n\t\tif (!createEntitiesWithId) {\n\t\t\t(user as any).id = undefined;\n\t\t}\n\t\tdsUsers.insert(user);\n\t\tsetOpenedModal(SecurityType.USER);\n\t};\n\n\tconst handleUserEditRow = (row: any) => {\n\t\tif (!dsUsers.isEmpty()) {\n\t\t\tconst currentUser = dsUsers.gotoRecordByData(row);\n\t\t\tif (currentUser) {\n\t\t\t\tdsUsers.edit();\n\t\t\t\tsetOpenedModal(SecurityType.USER);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst handleUserRemoveRow = (row: any) => {\n\t\tif (!dsUsers.isEmpty()) {\n\t\t\tconst currentUser = dsUsers.gotoRecordByData(row);\n\t\t\tif (currentUser) {\n\t\t\t\tArchbaseDialog.showConfirmDialogYesNo(\n\t\t\t\t\t`${t('archbase:Confirme')}`,\n\t\t\t\t\t`${t('archbase:Deseja remover o usuário ')}${row.name} ?`,\n\t\t\t\t\t() => {\n\t\t\t\t\t\tdsUsers.remove();\n\t\t\t\t\t},\n\t\t\t\t\t() => {},\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst handleUserViewRow = (row: any) => {\n\t\tif (!dsUsers.isEmpty()) {\n\t\t\tconst currentUser = dsUsers.gotoRecordByData(row);\n\t\t\tif (currentUser) {\n\t\t\t\tsetOpenedModal(SecurityType.USER);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst buildUserRowActions = (row: UserDto): ReactNode => {\n\t\treturn (\n\t\t\t<Group gap={1} wrap=\"nowrap\">\n\t\t\t\t{options?.beforeDefaultUserActions?.(row)}\n\t\t\t\t<ActionIcon variant=\"transparent\" onClick={() => handleUserViewRow(row)}>\n\t\t\t\t\t<IconEye size={20} color={colorScheme === 'dark' ? theme.colors.blue[8] : theme.colors.blue[4]} />\n\t\t\t\t</ActionIcon>\n\t\t\t\t<ActionIcon variant=\"transparent\" onClick={() => handleUserEditRow(row)}>\n\t\t\t\t\t<IconEdit size={20} color={colorScheme === 'dark' ? theme.colors.yellow[8] : theme.colors.yellow[4]} />\n\t\t\t\t</ActionIcon>\n\t\t\t\t<ActionIcon variant=\"transparent\" onClick={() => handleUserRemoveRow(row)}>\n\t\t\t\t\t<IconTrashX size={20} color={colorScheme === 'dark' ? theme.colors.red[8] : theme.colors.red[4]} />\n\t\t\t\t</ActionIcon>\n\t\t\t\t<Tooltip withinPortal withArrow position=\"left\" label={`${t('archbase:Edit permissions')}`}>\n\t\t\t\t\t<ActionIcon variant=\"transparent\" onClick={handleOpenUserPermissionsModal}>\n\t\t\t\t\t\t<IconShieldCheckered size={20} color={colorScheme === 'dark' ? theme.colors.green[8] : theme.colors.green[4]} />\n\t\t\t\t\t</ActionIcon>\n\t\t\t\t</Tooltip>\n\t\t\t\t{options?.afterDefaultUserActions?.(row)}\n\t\t\t</Group>\n\t\t);\n\t};\n\n\tconst handleAddGroupExecute = () => {\n\t\tconst group = GroupDto.newInstance();\n\t\tif (!createEntitiesWithId) {\n\t\t\t(group as any).id = undefined;\n\t\t}\n\t\tdsGroups.insert(group);\n\t\tsetOpenedModal(SecurityType.GROUP);\n\t};\n\n\tconst handleGroupEditRow = (row: any) => {\n\t\tif (!dsGroups.isEmpty()) {\n\t\t\tconst currentGroup = dsGroups.gotoRecordByData(row);\n\t\t\tif (currentGroup) {\n\t\t\t\tif (!dsGroups.isEditing()) {\n\t\t\t\t\tdsGroups.edit();\n\t\t\t\t}\n\t\t\t\tsetOpenedModal(SecurityType.GROUP);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst handleGroupRemoveRow = (row: any) => {\n\t\tif (!dsGroups.isEmpty()) {\n\t\t\tconst currentGroup = dsGroups.gotoRecordByData(row);\n\t\t\tif (currentGroup) {\n\t\t\t\tArchbaseDialog.showConfirmDialogYesNo(\n\t\t\t\t\t`${t('archbase:Confirme')}`,\n\t\t\t\t\t`${t('archbase:Deseja remover o grupo ')}${row.name} ?`,\n\t\t\t\t\t() => {\n\t\t\t\t\t\tdsGroups.remove();\n\t\t\t\t\t},\n\t\t\t\t\t() => {},\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst handleGroupViewRow = (row: any) => {\n\t\tif (!dsGroups.isEmpty()) {\n\t\t\tconst currentGroup = dsGroups.gotoRecordByData(row);\n\t\t\tif (currentGroup) {\n\t\t\t\tsetOpenedModal(SecurityType.GROUP);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst buildGroupRowActions = (row: GroupDto): ReactNode => {\n\t\treturn (\n\t\t\t<Group gap={1} wrap=\"nowrap\">\n\t\t\t\t{options?.beforeDefaultGroupActions?.(row)}\n\t\t\t\t<ActionIcon variant=\"transparent\" onClick={() => handleGroupViewRow(row)}>\n\t\t\t\t\t<IconEye size={20} color={colorScheme === 'dark' ? theme.colors.blue[8] : theme.colors.blue[4]} />\n\t\t\t\t</ActionIcon>\n\t\t\t\t<ActionIcon variant=\"transparent\" onClick={() => handleGroupEditRow(row)}>\n\t\t\t\t\t<IconEdit size={20} color={colorScheme === 'dark' ? theme.colors.yellow[8] : theme.colors.yellow[4]} />\n\t\t\t\t</ActionIcon>\n\t\t\t\t<ActionIcon variant=\"transparent\" onClick={() => handleGroupRemoveRow(row)}>\n\t\t\t\t\t<IconTrashX size={20} color={colorScheme === 'dark' ? theme.colors.red[8] : theme.colors.red[4]} />\n\t\t\t\t</ActionIcon>\n\t\t\t\t<Tooltip withinPortal withArrow position=\"left\" label={`${t('archbase:Edit permissions')}`}>\n\t\t\t\t\t<ActionIcon variant=\"transparent\" onClick={handleOpenGroupPermissionsModal}>\n\t\t\t\t\t\t<IconShieldCheckered size={20} color={colorScheme === 'dark' ? theme.colors.green[8] : theme.colors.green[4]} />\n\t\t\t\t\t</ActionIcon>\n\t\t\t\t</Tooltip>\n\t\t\t\t{options?.afterDefaultGroupActions?.(row)}\n\t\t\t</Group>\n\t\t);\n\t};\n\n\tconst validationContext = useValidationErrors();\n\n\tconst handleSaveUserModal = async () => {\n\t\ttry {\n\t\t\tawait dsUsers.save();\n\t\t} catch (_error) {\n\t\t\treturn;\n\t\t}\n\t\tsetOpenedModal('');\n\t\tvalidationContext?.clearAll();\n\t};\n\n\tconst handleCancelUserModal = () => {\n\t\tsetOpenedModal('');\n\t\tif (!dsUsers.isBrowsing()) {\n\t\t\tdsUsers.cancel();\n\t\t}\n\t\tvalidationContext?.clearAll();\n\t};\n\n\tconst handleSaveGroupModal = async () => {\n\t\ttry {\n\t\t\tawait dsGroups.save();\n\t\t} catch (_error) {\n\t\t\treturn;\n\t\t}\n\t\tsetOpenedModal('');\n\t\tvalidationContext?.clearAll();\n\t};\n\n\tconst handleCancelGroupModal = () => {\n\t\tsetOpenedModal('');\n\t\tif (!dsGroups.isBrowsing()) {\n\t\t\tdsGroups.cancel();\n\t\t}\n\t\tvalidationContext?.clearAll();\n\t};\n\n\tconst handleSaveProfileModal = async () => {\n\t\ttry {\n\t\t\tawait dsProfiles.save();\n\t\t} catch (_error) {\n\t\t\treturn;\n\t\t}\n\t\tsetOpenedModal('');\n\t\tvalidationContext?.clearAll();\n\t};\n\n\tconst handleCancelProfileModal = () => {\n\t\tsetOpenedModal('');\n\t\tif (!dsProfiles.isBrowsing()) {\n\t\t\tdsProfiles.cancel();\n\t\t}\n\t\tvalidationContext?.clearAll();\n\t};\n\n\tconst handleAddProfileExecute = () => {\n\t\tconst profile = ProfileDto.newInstance();\n\t\tif (!createEntitiesWithId) {\n\t\t\t(profile as any).id = undefined;\n\t\t}\n\t\tdsProfiles.insert(profile);\n\t\tsetOpenedModal(SecurityType.PROFILE);\n\t};\n\n\tconst handleProfileEditRow = (row: any) => {\n\t\tif (!dsProfiles.isEmpty()) {\n\t\t\tconst currentProfile = dsProfiles.gotoRecordByData(row);\n\t\t\tif (currentProfile) {\n\t\t\t\tif (!dsProfiles.isEditing()) {\n\t\t\t\t\tdsProfiles.edit();\n\t\t\t\t}\n\t\t\t\tsetOpenedModal(SecurityType.PROFILE);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst handleProfileRemoveRow = (row: any) => {\n\t\tif (!dsProfiles.isEmpty()) {\n\t\t\tconst currentProfile = dsProfiles.gotoRecordByData(row);\n\t\t\tif (currentProfile) {\n\t\t\t\tArchbaseDialog.showConfirmDialogYesNo(\n\t\t\t\t\t`${t('archbase:Confirme')}`,\n\t\t\t\t\t`${t('archbase:Deseja remover o perfil ')}${row.name} ?`,\n\t\t\t\t\t() => {\n\t\t\t\t\t\tdsProfiles.remove();\n\t\t\t\t\t},\n\t\t\t\t\t() => {},\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst handleProfileViewRow = (row: any) => {\n\t\tif (!dsProfiles.isEmpty()) {\n\t\t\tconst currentProfile = dsProfiles.gotoRecordByData(row);\n\t\t\tif (currentProfile) {\n\t\t\t\tsetOpenedModal(SecurityType.PROFILE);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst buildProfileRowActions = (row: ProfileDto): ReactNode => {\n\t\treturn (\n\t\t\t<Group gap={1} wrap=\"nowrap\">\n\t\t\t\t{options?.beforeDefaultProfileActions?.(row)}\n\t\t\t\t<ActionIcon variant=\"transparent\" onClick={() => handleProfileViewRow(row)}>\n\t\t\t\t\t<IconEye size={20} color={colorScheme === 'dark' ? theme.colors.blue[8] : theme.colors.blue[4]} />\n\t\t\t\t</ActionIcon>\n\t\t\t\t<ActionIcon variant=\"transparent\" onClick={() => handleProfileEditRow(row)}>\n\t\t\t\t\t<IconEdit size={20} color={colorScheme === 'dark' ? theme.colors.yellow[8] : theme.colors.yellow[4]} />\n\t\t\t\t</ActionIcon>\n\t\t\t\t<ActionIcon variant=\"transparent\" onClick={() => handleProfileRemoveRow(row)}>\n\t\t\t\t\t<IconTrashX size={20} color={colorScheme === 'dark' ? theme.colors.red[8] : theme.colors.red[4]} />\n\t\t\t\t</ActionIcon>\n\t\t\t\t<Tooltip withinPortal withArrow position=\"left\" label={`${t('archbase:Edit permissions')}`}>\n\t\t\t\t\t<ActionIcon variant=\"transparent\" onClick={handleOpenProfilePermissionsModal}>\n\t\t\t\t\t\t<IconShieldCheckered size={20} color={colorScheme === 'dark' ? theme.colors.green[8] : theme.colors.green[4]} />\n\t\t\t\t\t</ActionIcon>\n\t\t\t\t</Tooltip>\n\t\t\t\t{options?.afterDefaultProfileActions?.(row)}\n\t\t\t</Group>\n\t\t);\n\t};\n\n\tconst handleAccessTokenRevokeRow = () => {\n\t\tconst currentAccessToken = dsAccessTokens.getCurrentRecord();\n\t\tif (currentAccessToken) {\n\t\t\tArchbaseDialog.showConfirmDialogYesNo(\n\t\t\t\t`${t('archbase:Confirme')}`,\n\t\t\t\t`${t('archbase:Deseja revogar o token de Acesso do usuário ')}${currentAccessToken.user.name} ?`,\n\t\t\t\tasync () => {\n\t\t\t\t\tawait accessTokenApi\n\t\t\t\t\t\t.revoke(currentAccessToken.token)\n\t\t\t\t\t\t.then(async () => {\n\t\t\t\t\t\t\tArchbaseNotifications.showSuccess(\n\t\t\t\t\t\t\t\t`${t('mentors:Informação')}`,\n\t\t\t\t\t\t\t\t`${t('mentors:Token de Acesso revogado com sucesso!')}`,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tdsAccessTokens.refreshData();\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch((error) => {\n\t\t\t\t\t\t\tArchbaseDialog.showErrorWithDetails(\n\t\t\t\t\t\t\t\t`${t('mentors:Atenção')}`,\n\t\t\t\t\t\t\t\tprocessErrorMessage(error),\n\t\t\t\t\t\t\t\tprocessDetailErrorMessage(error),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\t() => {},\n\t\t\t);\n\t\t}\n\t};\n\n\tconst handleOpenUserPermissionsModal = () => {\n\t\tsetOpenedPermissionsModal(SecurityType.USER);\n\t};\n\n\tconst handleOpenGroupPermissionsModal = () => {\n\t\tsetOpenedPermissionsModal(SecurityType.GROUP);\n\t};\n\n\tconst handleOpenProfilePermissionsModal = () => {\n\t\tsetOpenedPermissionsModal(SecurityType.PROFILE);\n\t};\n\n\tconst handleClosePermissionsModal = () => {\n\t\tsetOpenedPermissionsModal('');\n\t};\n\n\t// Componentes de ações da barra de ferramentas para cada grid\n\tconst renderUsersToolbarActions = () : ReactNode => {\n\t\treturn (\n\t\t\t<Flex justify={'space-between'} style={{ width: '50%' }}>\n\t\t\t\t<Group align=\"end\" gap={'4px'} wrap=\"nowrap\">\n\t\t\t\t\t<Button color={'green'} leftSection={<IconPlus />} onClick={handleAddUserExecute}>\n\t\t\t\t\t\t{`${t('archbase:New')}`}\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button color={'blue'} leftSection={<IconEdit />} onClick={handleOpenUserPermissionsModal}>\n\t\t\t\t\t\t{`${t('archbase:Edit permissions')}`}\n\t\t\t\t\t</Button>\n\t\t\t\t</Group>\n\t\t\t\t<Flex align={'flex-start'} justify={'flex-end'} style={{ width: '200px' }}></Flex>\n\t\t\t</Flex>\n\t\t);\n\t};\n\n\tconst renderGroupsToolbarActions = () : ReactNode => {\n\t\treturn (\n\t\t\t<Flex justify={'space-between'} style={{ width: '50%' }}>\n\t\t\t\t<Group align=\"end\" gap={'4px'} wrap=\"nowrap\">\n\t\t\t\t\t<Button color={'green'} leftSection={<IconPlus />} onClick={handleAddGroupExecute}>\n\t\t\t\t\t\t{`${t('archbase:New')}`}\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button color={'blue'} leftSection={<IconEdit />} onClick={handleOpenGroupPermissionsModal}>\n\t\t\t\t\t\t{`${t('archbase:Edit permissions')}`}\n\t\t\t\t\t</Button>\n\t\t\t\t</Group>\n\t\t\t\t<Flex align={'flex-start'} justify={'flex-end'} style={{ width: '200px' }}></Flex>\n\t\t\t</Flex>\n\t\t);\n\t};\n\n\tconst renderProfilesToolbarActions = () : ReactNode => {\n\t\treturn (\n\t\t\t<Flex justify={'space-between'} style={{ width: '50%' }}>\n\t\t\t\t<Group align=\"end\" gap={'4px'} wrap='nowrap'>\n\t\t\t\t\t<Button color={'green'} leftSection={<IconPlus />} onClick={handleAddProfileExecute}>\n\t\t\t\t\t\t{`${t('archbase:New')}`}\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button color={'blue'} leftSection={<IconEdit />} onClick={handleOpenProfilePermissionsModal}>\n\t\t\t\t\t\t{`${t('archbase:Edit permissions')}`}\n\t\t\t\t\t</Button>\n\t\t\t\t</Group>\n\t\t\t\t<Flex align={'flex-start'} justify={'flex-end'} style={{ width: '200px' }}></Flex>\n\t\t\t</Flex>\n\t\t);\n\t};\n\n\tconst renderAccessTokensToolbarActions = () : ReactNode => {\n\t\treturn (\n\t\t\t<Flex justify={'space-between'} style={{ width: '50%' }}>\n\t\t\t\t<Group align=\"start\" gap={'4px'} wrap='nowrap'>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tdisabled={!dsAccessTokens.getCurrentRecord()}\n\t\t\t\t\t\tcolor={'red'}\n\t\t\t\t\t\tleftSection={<IconTrashX />}\n\t\t\t\t\t\tonClick={handleAccessTokenRevokeRow}\n\t\t\t\t\t>\n\t\t\t\t\t\t{`${t('archbase:Revoke')}`}\n\t\t\t\t\t</Button>\n\t\t\t\t</Group>\n\t\t\t</Flex>\n\t\t);\n\t};\n\n\treturn (\n\t\t<Paper p=\"md\" style={{ height: height, display: 'flex', flexDirection: 'column' }}>\n\t\t\t<Tabs variant='pills' value={activeTab} onChange={setActiveTab}>\n\t\t\t\t<Tabs.List>\n\t\t\t\t\t<Tabs.Tab value=\"users\">{`${t('Usuários')}`}</Tabs.Tab>\n\t\t\t\t\t<Tabs.Tab value=\"groups\">{`${t('Grupos')}`}</Tabs.Tab>\n\t\t\t\t\t<Tabs.Tab value=\"profiles\">{`${t('Perfis')}`}</Tabs.Tab>\n\t\t\t\t\t<Tabs.Tab value=\"resources\">{`${t('Recursos')}`}</Tabs.Tab>\n\t\t\t\t\t<Tabs.Tab value=\"accessTokens\">{`${t('Tokens Acesso')}`}</Tabs.Tab>\n\t\t\t\t</Tabs.List>\n\t\t\t</Tabs>\n\t\t\t<Paper\n\t\t\t\twithBorder\n\t\t\t\tmt=\"md\"\n\t\t\t\tstyle={{\n\t\t\t\t\tdisplay: activeTab === 'users' ? 'flex' : 'none',\n\t\t\t\t\twidth: '100%',\n\t\t\t\t\tflex: 1,\n\t\t\t\t\tminHeight: 0,\n\t\t\t\t\toverflow: 'auto'\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<ArchbaseDataGrid<UserDto, string>\n\t\t\t\t\tgridRef={usersGridRef}\n\t\t\t\t\tprintTitle={'Usuários'}\n\t\t\t\t\twidth={'100%'}\n\t\t\t\t\theight={'100%'}\n\t\t\t\t\twithBorder={false}\n\t\t\t\t\tdataSource={dsUsers}\n\t\t\t\t\twithColumnBorders={true}\n\t\t\t\t\tstriped={true}\n\t\t\t\t\tenableTopToolbar={true}\n\t\t\t\t\tenableRowActions={true}\n\t\t\t\t\tpageSize={50}\n\t\t\t\t\tisLoading={isLoadingUsers}\n\t\t\t\t\tisError={!!error}\n\t\t\t\t\terror={error}\n\t\t\t\t\tenableGlobalFilter={true}\n\t\t\t\t\tgetRowId={getUserRowId}\n\t\t\t\t\ttoolbarLeftContent={renderUsersToolbarActions()}\n\t\t\t\t\trenderRowActions={buildUserRowActions}\n\t\t\t\t\tactionsColumnWidth={options?.userActionsColumnWidth}\n\t\t\t\t\tchildren={userColumns}\n\t\t\t\t/>\n\t\t\t</Paper>\n\t\t\t<Paper\n\t\t\t\twithBorder\n\t\t\t\tmt=\"md\"\n\t\t\t\tstyle={{\n\t\t\t\t\tdisplay: activeTab === 'groups' ? 'flex' : 'none',\n\t\t\t\t\tflex: 1,\n\t\t\t\t\tminHeight: 0,\n\t\t\t\t\toverflow: 'auto'\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<ArchbaseDataGrid<GroupDto, string>\n\t\t\t\t\tgridRef={groupsGridRef}\n\t\t\t\t\tprintTitle={'Grupos'}\n\t\t\t\t\twidth={'100%'}\n\t\t\t\t\theight={'100%'}\n\t\t\t\t\twithBorder={false}\n\t\t\t\t\tdataSource={dsGroups}\n\t\t\t\t\twithColumnBorders={true}\n\t\t\t\t\tstriped={false}\n\t\t\t\t\tenableTopToolbar={true}\n\t\t\t\t\tenableRowActions={true}\n\t\t\t\t\tpageSize={50}\n\t\t\t\t\tisLoading={isLoadingGroups}\n\t\t\t\t\tisError={!!error}\n\t\t\t\t\terror={error}\n\t\t\t\t\tenableGlobalFilter={true}\n\t\t\t\t\tgetRowId={getGroupRowId}\n\t\t\t\t\trenderRowActions={buildGroupRowActions}\n\t\t\t\t\tactionsColumnWidth={options?.groupActionsColumnWidth}\n\t\t\t\t\tchildren={groupColumns}\n\t\t\t\t\ttoolbarLeftContent={renderGroupsToolbarActions()}\n\t\t\t\t/>\n\t\t\t</Paper>\n\t\t\t<Paper\n\t\t\t\twithBorder\n\t\t\t\tmt=\"md\"\n\t\t\t\tstyle={{\n\t\t\t\t\tdisplay: activeTab === 'profiles' ? 'flex' : 'none',\n\t\t\t\t\tflex: 1,\n\t\t\t\t\tminHeight: 0,\n\t\t\t\t\toverflow: 'auto'\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<ArchbaseDataGrid<ProfileDto, string>\n\t\t\t\t\tgridRef={profilesGridRef}\n\t\t\t\t\tprintTitle={'Perfis'}\n\t\t\t\t\twidth={'100%'}\n\t\t\t\t\theight={'100%'}\n\t\t\t\t\twithBorder={false}\n\t\t\t\t\tdataSource={dsProfiles}\n\t\t\t\t\twithColumnBorders={true}\n\t\t\t\t\tstriped={false}\n\t\t\t\t\tenableTopToolbar={true}\n\t\t\t\t\tenableRowActions={true}\n\t\t\t\t\tpageSize={50}\n\t\t\t\t\tisLoading={isLoadingProfiles}\n\t\t\t\t\tisError={!!error}\n\t\t\t\t\terror={error}\n\t\t\t\t\tenableGlobalFilter={true}\n\t\t\t\t\tgetRowId={getProfileRowId}\n\t\t\t\t\ttoolbarLeftContent={renderProfilesToolbarActions()}\n\t\t\t\t\trenderRowActions={buildProfileRowActions}\n\t\t\t\t\tactionsColumnWidth={options?.profileActionsColumnWidth}\n\t\t\t\t\tchildren={profileColumns}\n\t\t\t\t/>\n\t\t\t</Paper>\n\t\t\t<Paper\n\t\t\t\twithBorder\n\t\t\t\tmt=\"md\"\n\t\t\t\tstyle={{\n\t\t\t\t\tdisplay: activeTab === 'resources' ? 'flex' : 'none',\n\t\t\t\t\tflex: 1,\n\t\t\t\t\tminHeight: 0,\n\t\t\t\t\toverflow: 'auto'\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<ArchbaseDataGrid<ResourceDto, string>\n\t\t\t\t\tgridRef={resourcesGridRef}\n\t\t\t\t\tprintTitle={'Recursos'}\n\t\t\t\t\twidth={'100%'}\n\t\t\t\t\theight={'100%'}\n\t\t\t\t\twithBorder={false}\n\t\t\t\t\tdataSource={dsResources}\n\t\t\t\t\twithColumnBorders={true}\n\t\t\t\t\tstriped={false}\n\t\t\t\t\tenableTopToolbar={true}\n\t\t\t\t\tenableRowActions={false}\n\t\t\t\t\tpageSize={50}\n\t\t\t\t\tisLoading={isLoadingResources}\n\t\t\t\t\tisError={!!error}\n\t\t\t\t\terror={error}\n\t\t\t\t\tenableGlobalFilter={true}\n\t\t\t\t\tgetRowId={getResourceRowId}\n\t\t\t\t\tchildren={resourceColumns}\n\t\t\t\t/>\n\t\t\t</Paper>\n\t\t\t<Paper\n\t\t\t\twithBorder\n\t\t\t\tmt=\"md\"\n\t\t\t\tstyle={{\n\t\t\t\t\tdisplay: activeTab === 'accessTokens' ? 'flex' : 'none',\n\t\t\t\t\twidth: '100%',\n\t\t\t\t\tflex: 1,\n\t\t\t\t\tminHeight: 0,\n\t\t\t\t\toverflow: 'auto'\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<ArchbaseDataGrid<AccessTokenDto, string>\n\t\t\t\t\tgridRef={accessTokensGridRef}\n\t\t\t\t\tprintTitle={'Tokens de API'}\n\t\t\t\t\twidth={'100%'}\n\t\t\t\t\theight={'100%'}\n\t\t\t\t\twithBorder={false}\n\t\t\t\t\tdataSource={dsAccessTokens}\n\t\t\t\t\twithColumnBorders={true}\n\t\t\t\t\tstriped={true}\n\t\t\t\t\tenableTopToolbar={true}\n\t\t\t\t\tenableRowActions={false}\n\t\t\t\t\tpageSize={50}\n\t\t\t\t\tisLoading={isLoadingAccessTokens}\n\t\t\t\t\tisError={!!error}\n\t\t\t\t\terror={error}\n\t\t\t\t\tenableGlobalFilter={true}\n\t\t\t\t\tgetRowId={getAccessTokenRowId}\n\t\t\t\t\ttoolbarLeftContent={renderAccessTokensToolbarActions()}\n\t\t\t\t\tchildren={accessTokenColumns}\n\t\t\t\t/>\n\t\t\t</Paper>\n\t\t\t{openedModal === SecurityType.USER ? (\n\t\t\t\t<UserModal\n\t\t\t\t\tonClickOk={handleSaveUserModal}\n\t\t\t\t\topened={true}\n\t\t\t\t\tdataSource={dsUsers}\n\t\t\t\t\tonClickCancel={handleCancelUserModal}\n\t\t\t\t\toptions={userModalOptions}\n\t\t\t\t/>\n\t\t\t) : null}\n\t\t\t{openedModal === SecurityType.GROUP ? (\n\t\t\t\t<GroupModal\n\t\t\t\t\tonClickOk={handleSaveGroupModal}\n\t\t\t\t\topened={true}\n\t\t\t\t\tdataSource={dsGroups}\n\t\t\t\t\tonClickCancel={handleCancelGroupModal}\n\t\t\t\t\toptions={groupModalOptions}\n\t\t\t\t/>\n\t\t\t) : null}\n\t\t\t{openedModal === SecurityType.PROFILE ? (\n\t\t\t\t<ProfileModal\n\t\t\t\t\tonClickOk={handleSaveProfileModal}\n\t\t\t\t\topened={true}\n\t\t\t\t\tdataSource={dsProfiles}\n\t\t\t\t\tonClickCancel={handleCancelProfileModal}\n\t\t\t\t\toptions={profileModalOptions}\n\t\t\t\t/>\n\t\t\t) : null}\n\t\t\t{openedPermissionsModal === SecurityType.USER?\n\t\t\t<PermissionsSelectorModal\n\t\t\t\tdataSource={dsUsers}\n\t\t\t\topened={!!openedPermissionsModal}\n\t\t\t\tclose={handleClosePermissionsModal}\n\t\t\t/>:null}\n\t\t\t{openedPermissionsModal === SecurityType.GROUP?\n\t\t\t<PermissionsSelectorModal\n\t\t\t\tdataSource={dsGroups}\n\t\t\t\topened={!!openedPermissionsModal}\n\t\t\t\tclose={handleClosePermissionsModal}\n\t\t\t/>:null}\n\t\t\t{openedPermissionsModal === SecurityType.PROFILE?\n\t\t\t<PermissionsSelectorModal\n\t\t\t\tdataSource={dsProfiles}\n\t\t\t\topened={!!openedPermissionsModal}\n\t\t\t\tclose={handleClosePermissionsModal}\n\t\t\t/>:null}\n\n\t\t</Paper>\n\t);\n}\n","/**\n * ArchbaseApiTokenView — listagem e gestão de tokens de API.\n * @status stable\n */\nimport { ARCHBASE_IOC_API_TYPE, getI18nextInstance, getNestedObjectValue, processDetailErrorMessage, processErrorMessage } from '@archbase/core';\nimport {\n\tuseArchbaseDataSource,\n\tuseArchbaseRemoteDataSource,\n\tuseArchbaseRemoteServiceApi,\n\tuseArchbaseStore,\n} from '@archbase/data';\nimport { useArchbaseTheme } from '@archbase/core';\nimport { useArchbaseV1V2Compatibility } from '@archbase/data';\nimport { ArchbaseDialog, ArchbaseNotifications } from '@archbase/components';\nimport {\n\tButton,\n\tText,\n\tFlex,\n\tGroup,\n\tPaper,\n\tuseMantineColorScheme,\n\tRingProgress,\n\tTooltip,\n\tBadge,\n} from '@mantine/core';\nimport {\n\tIconPlus,\n\tIconTrashX,\n} from '@tabler/icons-react';\nimport { useArchbaseTranslation } from '@archbase/core';\nimport { useRef, useState } from 'react';\nimport { ApiTokenModal } from './ApiTokenModal';\nimport { ArchbaseApiTokenService } from '@archbase/security';\nimport { NO_USER } from './ArchbaseSecurityView';\nimport { ApiTokenDto } from '@archbase/security';\nimport { ArchbaseDataGridColumn } from '@archbase/components';\nimport { ArchbaseDataGrid, ArchbaseDataGridRef, Columns } from '@archbase/components';\n// import { ArchbaseGridTemplateRef } from '@archbase/template'; // Removed to break circular dependency\n\n\ninterface ArchbaseApiTokenViewProps {\n\theight?: any;\n\twidth?: any;\n}\n\nexport function ArchbaseApiTokenView({ height = '400px', width = '100%' }: ArchbaseApiTokenViewProps) {\n\tconst theme = useArchbaseTheme();\n\tconst templateStore = useArchbaseStore('apiTokenStore');\n\tconst validator = { validateEntity: () => [] }; // Mock validator returning empty error array\n\tconst { colorScheme } = useMantineColorScheme();\n\tconst [error, setError] = useState<string | undefined>(undefined);\n\tconst apiTokenApi = useArchbaseRemoteServiceApi<ArchbaseApiTokenService>(ARCHBASE_IOC_API_TYPE.ApiToken);\n\tconst [openedModal, setOpenedModal] = useState<string>('');\n\tconst gridRef = useRef<ArchbaseDataGridRef | null>(null)\n \n\t// Função para obter o ID da linha\n\tconst getRowId = (row: ApiTokenDto): string => {\n\t\treturn row.id;\n\t};\n\n\tconst { dataSource } = useArchbaseDataSource<ApiTokenDto, string>({\n\t\tinitialData: [],\n\t\tname: 'dataSource',\n\t});\n\n\t// 🔄 MIGRAÇÃO V1/V2: Hooks de compatibilidade para DataSources\n\tconst localDataSourceV1V2 = useArchbaseV1V2Compatibility<ApiTokenDto>(\n\t\t'ArchbaseApiTokenView-LocalDataSource',\n\t\tdataSource,\n\t\tundefined,\n\t\tundefined\n\t);\n\n\tconst { dataSource: dsApiTokens, isLoading } = useArchbaseRemoteDataSource<ApiTokenDto, string>({\n\t\tname: 'dsApiToken',\n\t\tservice: apiTokenApi,\n\t\tstore: templateStore,\n\t\tvalidator,\n\t\tpageSize: 25,\n\t\tloadOnStart: true,\n\t\tonLoadComplete: (dataSource) => {\n\t\t\t//\n\t\t},\n\t\tonDestroy: (dataSource) => {\n\t\t\t//\n\t\t},\n\t\tonError: (error, origin) => {\n\t\t\tsetError(error);\n\t\t\tArchbaseNotifications.showError(getI18nextInstance().t('archbase:WARNING'), error, origin);\n\t\t},\n\t});\n\n\t// 🔄 MIGRAÇÃO V1/V2: Hook de compatibilidade para DataSource remoto\n\tconst remoteDataSourceV1V2 = useArchbaseV1V2Compatibility<ApiTokenDto>(\n\t\t'ArchbaseApiTokenView-RemoteDataSource',\n\t\tdsApiTokens,\n\t\tundefined,\n\t\tundefined\n\t);\n\n\tconst heightTab = `calc(${height} - 40px)`;\n\n\tconst columns = (\n\t\t<Columns>\n\t\t\t<ArchbaseDataGridColumn<ApiTokenDto>\n\t\t\t\tdataField=\"user.avatar\"\n\t\t\t\tdataType=\"image\"\n\t\t\t\tsize={80}\n\t\t\t\theader=\"Foto\"\n\t\t\t\trender={(data) => (\n\t\t\t\t\t<img\n\t\t\t\t\t\tstyle={{ borderRadius: 50, height: '32px', maxHeight: '32px' }}\n\t\t\t\t\t\tsrc={\n\t\t\t\t\t\t\tdata.row.user && data.row.user.avatar ? atob(data.row.user.avatar) : NO_USER\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\tinputFilterType=\"text\"\n\t\t\t\talign=\"center\"\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<ApiTokenDto>\n\t\t\t\tdataField=\"user.userName\"\n\t\t\t\tdataType=\"text\"\n\t\t\t\tsize={300}\n\t\t\t\theader=\"Nome de Usuário\"\n\t\t\t\tinputFilterType=\"text\"\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<ApiTokenDto>\n\t\t\t\tdataField=\"user.email\"\n\t\t\t\tdataType=\"text\"\n\t\t\t\theader=\"Email\"\n\t\t\t\tsize={240}\n\t\t\t\tinputFilterType=\"text\"\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<ApiTokenDto>\n\t\t\t\tdataField=\"name\"\n\t\t\t\tdataType=\"text\"\n\t\t\t\theader=\"Nome\"\n\t\t\t\tsize={240}\n\t\t\t\tinputFilterType=\"text\"\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<ApiTokenDto>\n\t\t\t\tdataField=\"description\"\n\t\t\t\tdataType=\"text\"\n\t\t\t\theader=\"Descrição\"\n\t\t\t\tsize={300}\n\t\t\t\tinputFilterType=\"text\"\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<ApiTokenDto>\n\t\t\t\tdataField=\"token\"\n\t\t\t\tdataType=\"text\"\n\t\t\t\theader=\"Token API\"\n\t\t\t\tsize={300}\n\t\t\t\tinputFilterType=\"text\"\n\t\t\t\tenableClickToCopy={true}\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<ApiTokenDto>\n\t\t\t\tdataField=\"tenantId\"\n\t\t\t\tdataType=\"text\"\n\t\t\t\theader=\"Tenant ID\"\n\t\t\t\tsize={300}\n\t\t\t\tinputFilterType=\"text\"\n\t\t\t\tenableClickToCopy={true}\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<ApiTokenDto>\n\t\t\t\tdataField=\"expirationDate\"\n\t\t\t\tdataType=\"text\"\n\t\t\t\tsize={240}\n\t\t\t\theader=\"Validade\"\n\t\t\t\trender={(data) => {\n\t\t\t\t\tif (!data.row.expirationDate) {\n\t\t\t\t\t\treturn <Text c=\"dimmed\">Sem expiração</Text>;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst today = new Date();\n\t\t\t\t\ttoday.setHours(0, 0, 0, 0);\n\t\t\t\t\tconst expDate = new Date(data.row.expirationDate);\n\t\t\t\t\texpDate.setHours(0, 0, 0, 0);\n\n\t\t\t\t\tconst diffTime = expDate.getTime() - today.getTime();\n\t\t\t\t\tconst diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));\n\n\t\t\t\t\t// Calcular porcentagem para o gauge (baseado em 365 dias)\n\t\t\t\t\tconst maxDays = 365;\n\t\t\t\t\tlet percentage = Math.max(0, Math.min(100, (diffDays / maxDays) * 100));\n\n\t\t\t\t\t// Determinar cor baseado nos dias restantes\n\t\t\t\t\tlet color = 'green';\n\t\t\t\t\tlet label = '';\n\n\t\t\t\t\tif (diffDays < 0) {\n\t\t\t\t\t\t// Token vencido\n\t\t\t\t\t\tcolor = 'red';\n\t\t\t\t\t\tpercentage = 100;\n\t\t\t\t\t\tlabel = `Vencido há ${Math.abs(diffDays)} dia${Math.abs(diffDays) !== 1 ? 's' : ''}`;\n\t\t\t\t\t} else if (diffDays === 0) {\n\t\t\t\t\t\tcolor = 'red';\n\t\t\t\t\t\tpercentage = 5;\n\t\t\t\t\t\tlabel = 'Vence hoje';\n\t\t\t\t\t} else if (diffDays <= 7) {\n\t\t\t\t\t\tcolor = 'red';\n\t\t\t\t\t\tlabel = `${diffDays} dia${diffDays !== 1 ? 's' : ''}`;\n\t\t\t\t\t} else if (diffDays <= 30) {\n\t\t\t\t\t\tcolor = 'orange';\n\t\t\t\t\t\tlabel = `${diffDays} dias`;\n\t\t\t\t\t} else if (diffDays <= 90) {\n\t\t\t\t\t\tcolor = 'yellow';\n\t\t\t\t\t\tlabel = `${diffDays} dias`;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcolor = 'green';\n\t\t\t\t\t\tlabel = `${diffDays} dias`;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst tooltipText = diffDays < 0\n\t\t\t\t\t\t? `Vencido em ${expDate.toLocaleDateString()}`\n\t\t\t\t\t\t: `Expira em ${expDate.toLocaleDateString()}`;\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Tooltip label={tooltipText} withArrow>\n\t\t\t\t\t\t\t<Group gap=\"xs\" wrap=\"nowrap\">\n\t\t\t\t\t\t\t\t<RingProgress\n\t\t\t\t\t\t\t\t\tsize={36}\n\t\t\t\t\t\t\t\t\tthickness={4}\n\t\t\t\t\t\t\t\t\troundCaps\n\t\t\t\t\t\t\t\t\tsections={[{ value: diffDays < 0 ? 100 : percentage, color }]}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<Text size=\"sm\" c={diffDays < 0 ? 'red' : undefined} fw={diffDays <= 7 ? 600 : undefined}>\n\t\t\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t</Group>\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t);\n\t\t\t\t}}\n\t\t\t\tinputFilterType=\"text\"\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<ApiTokenDto>\n\t\t\t\tdataField=\"activated\"\n\t\t\t\tdataType=\"boolean\"\n\t\t\t\theader=\"Ativado ?\"\n\t\t\t\tinputFilterType=\"checkbox\"\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<ApiTokenDto>\n\t\t\t\tdataField=\"revoked\"\n\t\t\t\tdataType=\"boolean\"\n\t\t\t\theader=\"Revogado ?\"\n\t\t\t\tinputFilterType=\"checkbox\"\n\t\t\t/>\n\t\t</Columns>\n\t);\n\n\tconst handleCreateApiTokenExecute = () => {\n\t\t// 🔄 MIGRAÇÃO V1/V2: Inserção com compatibilidade\n\t\tdataSource.insert(ApiTokenDto.newInstance());\n\t\t\n\t\t// Se for V1, forçar atualização\n\t\tif (dataSource && !localDataSourceV1V2.isDataSourceV2) {\n\t\t\tlocalDataSourceV1V2.v1State.forceUpdate();\n\t\t}\n\t\t\n\t\tsetOpenedModal('apiToken');\n\t};\n\n\tconst handleApiTokenRevokeRow = () => {\n\t\tif (dsApiTokens.getCurrentRecord()) {\n\t\t\tArchbaseDialog.showConfirmDialogYesNo(\n\t\t\t\t`${getI18nextInstance().t('archbase:Confirme')}`,\n\t\t\t\t`${getI18nextInstance().t('archbase:Deseja revogar o token de API do usuário ')}${dsApiTokens.getCurrentRecord().user.name} ?`,\n\t\t\t\tasync () => {\n\t\t\t\t\tawait apiTokenApi\n\t\t\t\t\t\t.revoke(dsApiTokens.getCurrentRecord().token)\n\t\t\t\t\t\t.then(async () => {\n\t\t\t\t\t\t\tArchbaseNotifications.showSuccess(\n\t\t\t\t\t\t\t\t`${getI18nextInstance().t('mentors:Informação')}`,\n\t\t\t\t\t\t\t\t`${getI18nextInstance().t('mentors:Token de API revogado com sucesso!')}`,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// 🔄 MIGRAÇÃO V1/V2: Refresh com compatibilidade\n\t\t\t\t\t\t\tdsApiTokens.refreshData();\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// Se for V1, forçar atualização\n\t\t\t\t\t\t\tif (dsApiTokens && !remoteDataSourceV1V2.isDataSourceV2) {\n\t\t\t\t\t\t\t\tremoteDataSourceV1V2.v1State.forceUpdate();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch((error) => {\n\t\t\t\t\t\t\tArchbaseDialog.showErrorWithDetails(\n\t\t\t\t\t\t\t\t`${getI18nextInstance().t('mentors:Atenção')}`,\n\t\t\t\t\t\t\t\tprocessErrorMessage(error),\n\t\t\t\t\t\t\t\tprocessDetailErrorMessage(error),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\t() => { },\n\t\t\t);\n\t\t}\n\t};\n\n\tconst handleCloseApiTokenModal = () => {\n\t\tsetOpenedModal('');\n\t};\n\n\tconst handleSaveApiToken = async (record?: ApiTokenDto, callback?: Function) => {\n\t\tconst apiToken: ApiTokenDto | undefined = dataSource.getCurrentRecord();\n\t\tif (apiToken) {\n\t\t\ttry {\n\t\t\t\tdataSource.validate();\n\t\t\t\tif (!apiToken.user || !apiToken.user.email) {\n\t\t\t\t\tArchbaseDialog.showErrorWithDetails(\n\t\t\t\t\t\t`${getI18nextInstance().t('archbase:WARNING')}`,\n\t\t\t\t\t\t`${getI18nextInstance().t('archbase:Selecione um usuário para o token de API')}`,\n\t\t\t\t\t\t'',\n\t\t\t\t\t);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tawait apiTokenApi\n\t\t\t\t\t.create(apiToken.user.email, apiToken.expirationDate, apiToken.name, apiToken.description)\n\t\t\t\t\t.then(async (response: ApiTokenDto) => {\n\t\t\t\t\t\t// 🔄 MIGRAÇÃO V1/V2: Cancelar e adicionar com compatibilidade\n\t\t\t\t\t\tdataSource.cancel();\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Se for V1, forçar atualização no local DataSource\n\t\t\t\t\t\tif (dataSource && !localDataSourceV1V2.isDataSourceV2) {\n\t\t\t\t\t\t\tlocalDataSourceV1V2.v1State.forceUpdate();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tdsApiTokens.append(response);\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Se for V1, forçar atualização no remote DataSource\n\t\t\t\t\t\tif (dsApiTokens && !remoteDataSourceV1V2.isDataSourceV2) {\n\t\t\t\t\t\t\tremoteDataSourceV1V2.v1State.forceUpdate();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tArchbaseNotifications.showSuccess(\n\t\t\t\t\t\t\t`${getI18nextInstance().t('mentors:Informação')}`,\n\t\t\t\t\t\t\t`${getI18nextInstance().t('mentors:Token de API gerado com sucesso!')}`,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (callback) {\n\t\t\t\t\t\t\tcallback(true);\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t.catch((error) => {\n\t\t\t\t\t\tArchbaseDialog.showErrorWithDetails(\n\t\t\t\t\t\t\t`${getI18nextInstance().t('mentors:Atenção')}`,\n\t\t\t\t\t\t\tprocessErrorMessage(error),\n\t\t\t\t\t\t\tprocessDetailErrorMessage(error),\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\t\t\t} catch (ex) {\n\t\t\t\tArchbaseDialog.showErrorWithDetails(\n\t\t\t\t\t`${getI18nextInstance().t('mentors:Atenção')}`,\n\t\t\t\t\tprocessErrorMessage(ex),\n\t\t\t\t\tprocessDetailErrorMessage(ex),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t};\n\n\t// Componente de ações da barra de ferramentas\n\tconst renderToolbarActions = () => {\n\t\treturn (\n\t\t\t<Flex justify={'space-between'} style={{ width: '50%' }}>\n\t\t\t\t<Group align=\"start\" gap={'2px'} wrap=\"nowrap\">\n\t\t\t\t\t<Button color={'green'} leftSection={<IconPlus />} onClick={handleCreateApiTokenExecute}>\n\t\t\t\t\t\t{getI18nextInstance().t('archbase:New')}\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button disabled={!dsApiTokens.getCurrentRecord()} color={'red'} leftSection={<IconTrashX />} onClick={handleApiTokenRevokeRow}>\n\t\t\t\t\t\t{getI18nextInstance().t('archbase:Revoke')}\n\t\t\t\t\t</Button>\n\t\t\t\t</Group>\n\t\t\t</Flex>\n\t\t);\n\t};\n\n\treturn (\n\t\t<Paper p=\"md\" style={{ height: height, display: 'flex', flexDirection: 'column' }}>\n\t\t\t<Paper\n\t\t\t\twithBorder\n\t\t\t\tstyle={{\n\t\t\t\t\theight: heightTab,\n\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\twidth: '100%',\n\t\t\t\t\tflex: 1,\n\t\t\t\t\tminHeight: 0,\n\t\t\t\t\toverflow: 'auto'\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<ArchbaseDataGrid<ApiTokenDto, string>\n\t\t\t\t\tgridRef={gridRef}\n\t\t\t\t\tprintTitle={'Tokens de API'}\n\t\t\t\t\twidth={'100%'}\n\t\t\t\t\theight={'100%'}\n\t\t\t\t\twithBorder={false}\n\t\t\t\t\tdataSource={dsApiTokens}\n\t\t\t\t\twithColumnBorders={true}\n\t\t\t\t\tstriped={true}\n\t\t\t\t\tenableTopToolbar={true}\n\t\t\t\t\tenableRowActions={false}\n\t\t\t\t\tpageSize={50}\n\t\t\t\t\tisLoading={isLoading}\n\t\t\t\t\tisError={!!error}\n\t\t\t\t\terror={error}\n\t\t\t\t\tenableGlobalFilter={true}\n\t\t\t\t\tgetRowId={getRowId}\n\t\t\t\t\ttoolbarLeftContent={renderToolbarActions()}\n\t\t\t\t\tchildren={columns}\n\t\t\t\t/>\n\t\t\t</Paper>\n\t\t\t{openedModal === 'apiToken' ? (\n\t\t\t\t<ApiTokenModal\n\t\t\t\t\tonClickOk={handleCloseApiTokenModal}\n\t\t\t\t\topened={true}\n\t\t\t\t\tdataSource={dataSource}\n\t\t\t\t\tonCustomSave={handleSaveApiToken}\n\t\t\t\t\tonClickCancel={handleCloseApiTokenModal}\n\t\t\t\t/>\n\t\t\t) : null}\n\t\t</Paper>\n\t);\n}\n"],"names":["REACT_ELEMENT_TYPE","REACT_FRAGMENT_TYPE","jsxProd","type","config","maybeKey","key","propName","reactJsxRuntime_production","jsxRuntimeModule","require$$0","ProfileModal","props","options","handleSave","success","handleCancel","jsx","Modal","getI18nextInstance","ScrollArea","jsxs","Stack","Grid","ArchbaseEdit","Group","Button","ArchbaseDualListSelector","availableItemsDS","assignedItemsDS","idFieldAvailable","labelFieldAvailable","idFieldAssigned","labelFieldAssigned","handleCreateAssociationObject","width","height","titleAvailable","titleAssigned","useArchbaseV1V2Compatibility","assignedV1V2","availableItems","setAvailableItems","useState","assignedItems","setAssignedItems","selectedAvailable","setSelectedAvailable","selectedAssigned","setSelectedAssigned","loadItemsData","useCallback","useArchbaseDataSourceListener","useEffect","getItemId","item","field","getItemLabel","handleSelect","setId","id","prev","handleAdd","originalItem","newItem","handleRemove","record","criteria","Paper","Box","Text","List","Checkbox","g","Tooltip","ActionIcon","IconArrowRight","IconArrowLeft","RenderProfileUserItem","forwardRef","image","label","description","origin","others","ref","Flex","Space","defaultUserModalOptions","UserModal","passwordError","setPasswordError","groupApi","useArchbaseRemoteServiceApi","ARCHBASE_IOC_API_TYPE","dsGroups","useArchbaseRemoteDataSource","error","ArchbaseNotifications","profileApi","dsProfiles","setDefaultValues","filter","emit","builder","result","group","UserGroupDto","currentRecord","value","ArchbasePasswordEdit","ArchbaseSelect","option","Input","ArchbaseCheckbox","ArchbaseAvatarEdit","ArchbaseDataSource","Fragment","GroupModal","UserSelectItem","ApiTokenModal","useFocusTrap","setValue","userApi","v1v2Compatibility","handleChange","dateValue","isoString","convertDateToISOString","loadRemoteUsers","page","resolve","reject","processErrorMessage","DateTimePicker","ArchbaseAsyncSelect","translateDelimitedString","inputString","delimiter","part","PermissionsSelectorModal","dataSource","opened","close","name","useMemo","securityId","availablePermissionsTree","useTree","grantedPermissionsTree","availablePermissions","setAvailablePermissions","grantedPermissions","setGrantedPermissions","selectedAvailablePermission","setSelectedAvailablePermission","selectedGrantedPermission","setSelectedGrantedPermission","availablePermissionsFilter","setAvailablePermissionsFilter","debouncedAvailablePermissionsFilter","useDebouncedValue","grantedPermissionsFilter","setGrantedPermissionsFilter","debouncedGrantedPermissionsFilter","resourceApi","colorScheme","useMantineColorScheme","selectedColor","permissionsGrantedData","a","b","resourcePermissions","permission","grantedPermissionsActionIds","allPermissionsData","permissionGranted","resourcePermissionsGranted","getKeyByEnumValue","SecurityType","loadPermissions","permissionsGranted","allPermissions","resouceActionPermissionDto","updatedPermissionsGranted","resourceAvailablePermissions","resourcePermissionsNode","previousSelectedPermissionIndex","nextSelectedAvailablePermission","permissionNode","index","hasOnePermissionOnResource","resource","currentType","resourceGrantedPermissions","nextSelectedGrantedPermission","ArchbaseSpaceFixed","ArchbaseSpaceFill","TextInput","event","Tree","level","node","expanded","hasChildren","selected","elementProps","isGranted","textColor","textDecoration","handleClick","IconChevronDown","IconBorderCornerSquare","Badge","ArchbaseSpaceBottom","NO_USER","renderGroups","user","renderProfile","ArchbaseSecurityView","createEntitiesWithId","userModalOptions","profileModalOptions","groupModalOptions","theme","useArchbaseTheme","useArchbaseStore","validator","useArchbaseValidator","setError","activeTab","setActiveTab","openedModal","setOpenedModal","openedPermissionsModal","setOpenedPermissionsModal","accessTokenApi","t","useArchbaseTranslation","usersGridRef","useRef","groupsGridRef","profilesGridRef","resourcesGridRef","accessTokensGridRef","getUserRowId","row","getGroupRowId","getProfileRowId","getResourceRowId","getAccessTokenRowId","dsAccessTokens","isLoadingAccessTokens","refreshAccessTokens","useArchbaseRemoteDataSourceV2","dsUsers","isLoadingUsers","refreshUsers","isLoadingGroups","refreshGroups","isLoadingProfiles","refreshProfiles","dsResources","isLoadingResources","refreshResources","accessTokenColumns","Columns","ArchbaseDataGridColumn","data","userColumns","groupColumns","profileColumns","resourceColumns","handleAddUserExecute","UserDto","handleUserEditRow","handleUserRemoveRow","ArchbaseDialog","handleUserViewRow","buildUserRowActions","IconEye","IconEdit","IconTrashX","handleOpenUserPermissionsModal","IconShieldCheckered","handleAddGroupExecute","GroupDto","handleGroupEditRow","handleGroupRemoveRow","handleGroupViewRow","buildGroupRowActions","handleOpenGroupPermissionsModal","validationContext","useValidationErrors","handleSaveUserModal","handleCancelUserModal","handleSaveGroupModal","handleCancelGroupModal","handleSaveProfileModal","handleCancelProfileModal","handleAddProfileExecute","profile","ProfileDto","handleProfileEditRow","handleProfileRemoveRow","handleProfileViewRow","buildProfileRowActions","handleOpenProfilePermissionsModal","handleAccessTokenRevokeRow","currentAccessToken","processDetailErrorMessage","handleClosePermissionsModal","renderUsersToolbarActions","IconPlus","renderGroupsToolbarActions","renderProfilesToolbarActions","renderAccessTokensToolbarActions","Tabs","ArchbaseDataGrid","ArchbaseApiTokenView","templateStore","apiTokenApi","gridRef","getRowId","useArchbaseDataSource","localDataSourceV1V2","dsApiTokens","isLoading","remoteDataSourceV1V2","heightTab","columns","today","expDate","diffTime","diffDays","percentage","color","tooltipText","RingProgress","handleCreateApiTokenExecute","ApiTokenDto","handleApiTokenRevokeRow","handleCloseApiTokenModal","handleSaveApiToken","callback","apiToken","response","ex","renderToolbarActions"],"mappings":"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","x_google_ignoreList":[0,1]}
1
+ {"version":3,"file":"index.js","sources":["../../../node_modules/.pnpm/react@19.2.3/node_modules/react/cjs/react-jsx-runtime.production.js","../../../node_modules/.pnpm/react@19.2.3/node_modules/react/jsx-runtime.js","../src/ProfileModal.tsx","../src/ArchbaseDualListSelector.tsx","../src/RenderProfileUserItem.tsx","../src/UserModal.tsx","../src/GroupModal.tsx","../src/ApiTokenModal.tsx","../src/PermissionsSelectorModal.tsx","../src/ArchbaseSecurityView.tsx","../src/ArchbaseApiTokenView.tsx"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n var key = null;\n void 0 !== maybeKey && (key = \"\" + maybeKey);\n void 0 !== config.key && (key = \"\" + config.key);\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n config = maybeKey.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== config ? config : null,\n props: maybeKey\n };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * ProfileModal — modal com dados da conta do usuário.\n * @status stable\n */\nimport React from 'react'\nimport { Grid, ScrollArea, Stack, Modal, Button, Group } from '@mantine/core'\nimport { IArchbaseDataSourceBase } from '@archbase/data'\nimport { getI18nextInstance } from '@archbase/core';\nimport { ProfileDto } from '@archbase/security'\nimport { ArchbaseEdit } from '@archbase/components'\n\nexport interface ProfileModalOptions {\n customContentBefore?: (profile: ProfileDto) => React.ReactNode;\n customContentAfter?: (profile: ProfileDto) => React.ReactNode;\n}\n\nexport interface ProfileModalProps {\n dataSource: IArchbaseDataSourceBase<ProfileDto>\n opened: boolean\n onClickOk: (record?: ProfileDto, result?: any) => void\n onClickCancel: (record?: ProfileDto) => void\n onCustomSave?: (record?: ProfileDto, callback?: Function) => void\n onAfterSave?: (record?: ProfileDto) => void\n options?: ProfileModalOptions\n}\n\nexport const ProfileModal = (props: ProfileModalProps) => {\n const options = {...(props.options ?? {}) }\n \n const handleSave = () => {\n if (props.onCustomSave) {\n props.onCustomSave(props.dataSource.getCurrentRecord()!, (success: boolean) => {\n if (success && props.onAfterSave) {\n props.onAfterSave(props.dataSource.getCurrentRecord()!);\n }\n props.onClickOk(props.dataSource.getCurrentRecord()!, success);\n });\n } else {\n props.onClickOk(props.dataSource.getCurrentRecord()!, true);\n }\n };\n\n const handleCancel = () => {\n props.onClickCancel(props.dataSource.getCurrentRecord()!);\n };\n \n return (\n <Modal\n opened={props.opened}\n onClose={handleCancel}\n title={getI18nextInstance().t('archbase:Perfil')}\n size=\"60%\"\n styles={{content: {maxWidth: 1000}}}\n >\n <ScrollArea style={{ height: '460px' }}>\n <Stack w={\"98%\"}>\n {options?.customContentBefore && options.customContentBefore(props.dataSource.getCurrentRecord()!)}\n <Grid>\n <Grid.Col span={{ base: 12, md: 12, lg: 12 }}>\n <ArchbaseEdit\n label={`${getI18nextInstance().t('archbase:Nome do perfil')}`}\n placeholder={`${getI18nextInstance().t('archbase:Informe o nome do perfil')}`}\n dataSource={props.dataSource}\n dataField=\"name\"\n />\n </Grid.Col>\n <Grid.Col span={{ base: 12, md: 12, lg: 12 }}>\n <ArchbaseEdit\n label={`${getI18nextInstance().t('archbase:Descrição do perfil')}`}\n placeholder={`${getI18nextInstance().t('archbase:Informe a descrição do perfil')}`}\n dataSource={props.dataSource}\n dataField=\"description\"\n />\n </Grid.Col>\n </Grid>\n {options?.customContentAfter && options.customContentAfter(props.dataSource.getCurrentRecord()!)}\n \n <Group justify=\"flex-end\" mt=\"md\">\n <Button variant=\"default\" onClick={handleCancel}>\n {getI18nextInstance().t('archbase:Cancelar')}\n </Button>\n <Button onClick={handleSave}>\n {getI18nextInstance().t('archbase:Salvar')}\n </Button>\n </Group>\n </Stack>\n </ScrollArea>\n </Modal>\n )\n}\n","/**\n * ArchbaseDualListSelector — duplo painel para mover itens entre permissões/roles.\n * @status stable\n */\nimport React, { useState, useEffect, useCallback } from 'react'\nimport {\n Button,\n Group,\n Box,\n Text,\n List,\n Checkbox,\n Stack,\n ActionIcon,\n ScrollArea,\n Paper,\n Tooltip\n} from '@mantine/core'\nimport { IconArrowLeft, IconArrowRight } from '@tabler/icons-react'\nimport { ArchbaseDataSource } from '@archbase/data'\nimport { useArchbaseV1V2Compatibility } from '@archbase/data'\nimport { useArchbaseDataSourceListener } from '@archbase/data'\n\n// Definindo props com genéricos para os tipos de item das duas listas\nexport interface ArchbaseDualListSelectorProps<T, U> {\n availableItemsDS: ArchbaseDataSource<T, any>\n assignedItemsDS: ArchbaseDataSource<U, any>\n idFieldAvailable: string | ((item: T) => string)\n labelFieldAvailable: string | ((item: T) => string)\n idFieldAssigned: string | ((item: U) => string)\n labelFieldAssigned: string | ((item: U) => string)\n handleCreateAssociationObject: (item: T) => U\n width?: string\n height?: string\n titleAvailable?: string\n titleAssigned?: string\n}\n\nexport function ArchbaseDualListSelector<T, U>({\n availableItemsDS,\n assignedItemsDS,\n idFieldAvailable,\n labelFieldAvailable,\n idFieldAssigned,\n labelFieldAssigned,\n handleCreateAssociationObject,\n width = '400px',\n height = '200px',\n titleAvailable = 'Disponíveis',\n titleAssigned = 'Selecionados'\n}: ArchbaseDualListSelectorProps<T, U>) {\n // 🔄 MIGRAÇÃO V1/V2: Hooks de compatibilidade para ambos DataSources\n const availableV1V2 = useArchbaseV1V2Compatibility<T[]>(\n 'ArchbaseDualListSelector-Available',\n availableItemsDS,\n undefined,\n []\n );\n\n const assignedV1V2 = useArchbaseV1V2Compatibility<U[]>(\n 'ArchbaseDualListSelector-Assigned', \n assignedItemsDS,\n undefined,\n []\n );\n\n const [availableItems, setAvailableItems] = useState<T[]>([])\n const [assignedItems, setAssignedItems] = useState<U[]>([])\n const [selectedAvailable, setSelectedAvailable] = useState<string[]>([])\n const [selectedAssigned, setSelectedAssigned] = useState<string[]>([])\n\n // 🔄 MIGRAÇÃO V1/V2: Função para carregar dados condicionalmente\n const loadItemsData = useCallback(() => {\n if (availableItemsDS) {\n setAvailableItems(availableItemsDS.browseRecords())\n }\n if (assignedItemsDS) {\n setAssignedItems(assignedItemsDS.browseRecords())\n }\n }, [availableItemsDS, assignedItemsDS]);\n\n // 🔄 MIGRAÇÃO V1/V2: Listeners para ambos DataSources\n useArchbaseDataSourceListener<T, any>({\n dataSource: availableItemsDS,\n listener: () => loadItemsData()\n });\n\n useArchbaseDataSourceListener<U, any>({\n dataSource: assignedItemsDS,\n listener: () => loadItemsData()\n });\n\n useEffect(() => {\n loadItemsData();\n }, [loadItemsData])\n\n const getItemId = (item: any, field: string | ((item: any) => string)): string =>\n typeof field === 'function' ? field(item) : item[field]\n\n const getItemLabel = (item: any, field: string | ((item: any) => string)): string =>\n typeof field === 'function' ? field(item) : item[field]\n\n const handleSelect = (setId: React.Dispatch<React.SetStateAction<string[]>>, id: string) => {\n setId((prev) => (prev.includes(id) ? prev.filter((item) => item !== id) : [...prev, id]))\n }\n\n const handleAdd = () => {\n selectedAvailable.forEach((id) => {\n const originalItem = availableItems.find((item) => getItemId(item, idFieldAvailable) === id)\n if (originalItem) {\n const newItem = handleCreateAssociationObject(originalItem)\n \n // 🔄 MIGRAÇÃO V1/V2: Usar operações condicionais baseadas na versão\n if (assignedV1V2.isDataSourceV2) {\n // Para DataSource V2: usar métodos otimizados\n assignedItemsDS.insert(newItem)\n assignedItemsDS.save()\n } else {\n // Para DataSource V1: comportamento original + forceUpdate\n assignedItemsDS.insert(newItem)\n assignedItemsDS.save()\n assignedV1V2.v1State.forceUpdate()\n }\n }\n })\n setSelectedAvailable([])\n }\n\n const handleRemove = () => {\n selectedAssigned.forEach((id) => {\n const record = assignedItems.find((item) => getItemId(item, idFieldAssigned) === id)\n if (record) {\n // Preparando o objeto de critério dinâmico\n const criteria =\n typeof idFieldAssigned === 'function'\n ? { customId: idFieldAssigned(record) }\n : { [idFieldAssigned]: id }\n \n // 🔄 MIGRAÇÃO V1/V2: Usar operações condicionais baseadas na versão\n if (assignedV1V2.isDataSourceV2) {\n // Para DataSource V2: usar métodos otimizados\n assignedItemsDS.remove(() => assignedItemsDS.locate(criteria))\n } else {\n // Para DataSource V1: comportamento original + forceUpdate\n assignedItemsDS.remove(() => assignedItemsDS.locate(criteria))\n assignedV1V2.v1State.forceUpdate()\n }\n }\n })\n setSelectedAssigned([])\n }\n\n return (\n <Paper withBorder style={{ display: 'flex', width, height }}>\n <Box style={{ minWidth: '44%', minHeight: height }}>\n <Text>{titleAvailable}</Text>\n <List\n spacing=\"xs\"\n size=\"sm\"\n center\n listStyleType=\"none\"\n style={{\n margin: '6px',\n overflowY: 'auto',\n overflowX: 'hidden',\n height: 'calc(100% - 32px)'\n }}\n >\n {availableItems.map((item) => (\n <List.Item key={getItemId(item, idFieldAvailable)}>\n <Checkbox\n label={getItemLabel(item, labelFieldAvailable)}\n checked={selectedAvailable.includes(getItemId(item, idFieldAvailable))}\n onChange={() =>\n handleSelect(setSelectedAvailable, getItemId(item, idFieldAvailable))\n }\n disabled={assignedItems.some(\n (g) => getItemId(g, idFieldAssigned) === getItemId(item, idFieldAvailable)\n )}\n />\n </List.Item>\n ))}\n </List>\n </Box>\n <Stack gap={5} style={{ minWidth: '10%' }} justify=\"center\" align=\"center\">\n <Tooltip label=\"Adicionar\">\n <ActionIcon onClick={handleAdd} disabled={!selectedAvailable.length}>\n <IconArrowRight />\n </ActionIcon>\n </Tooltip>\n <Tooltip label=\"Remover\">\n <ActionIcon onClick={handleRemove} disabled={!selectedAssigned.length}>\n <IconArrowLeft />\n </ActionIcon>\n </Tooltip>\n </Stack>\n <Box style={{ minWidth: '44%', minHeight: height }}>\n <Text>{titleAssigned}</Text>\n <List\n spacing=\"xs\"\n size=\"sm\"\n center\n listStyleType=\"none\"\n style={{\n margin: '6px',\n overflowY: 'auto',\n overflowX: 'hidden',\n height: 'calc(100% - 32px)'\n }}\n >\n {assignedItems.map((item) => (\n <List.Item key={getItemId(item, idFieldAssigned)}>\n <Checkbox\n label={getItemLabel(item, labelFieldAssigned)}\n checked={selectedAssigned.includes(getItemId(item, idFieldAssigned))}\n onChange={() => handleSelect(setSelectedAssigned, getItemId(item, idFieldAssigned))}\n />\n </List.Item>\n ))}\n </List>\n </Box>\n </Paper>\n )\n}\n","/**\n * RenderProfileUserItem — item de lista para usuário (usado em modais/profile).\n * @status stable\n */\nimport React from 'react'\nimport { Flex, Space, Text } from '@mantine/core'\nimport { forwardRef } from 'react'\nimport { ProfileDto } from '@archbase/security'\n\nexport interface RenderProfileUserItemProps extends React.ComponentPropsWithoutRef<'div'> {\n image: string\n label: string\n description: string\n origin: ProfileDto\n}\n\nexport const RenderProfileUserItem = forwardRef<HTMLDivElement, RenderProfileUserItemProps>(\n ({ image, label, description, origin, ...others }: RenderProfileUserItemProps, ref) => (\n <div ref={ref} {...others}>\n <Flex>\n <Text size=\"sm\" fw={600}>\n {origin ? origin.name:''}\n </Text>\n <Space w=\"lg\" />\n </Flex>\n </div>\n )\n)\n","/**\n * UserModal — modal de cadastro/edição de usuários com roles e ações.\n * @status stable\n */\nimport { ARCHBASE_IOC_API_TYPE, getI18nextInstance, builder, emit } from '@archbase/core'\nimport { IArchbaseDataSourceBase, ArchbaseDataSource } from '@archbase/data'\nimport { ArchbaseCheckbox, ArchbaseEdit, ArchbaseSelect, ArchbasePasswordEdit, ArchbaseAvatarEdit } from '@archbase/components'\nimport { useArchbaseRemoteDataSource, useArchbaseRemoteServiceApi } from '@archbase/data'\nimport { ArchbaseNotifications } from '@archbase/components'\nimport { Grid, Group, Input, ScrollArea, Space, Stack, Text, Modal, Button } from '@mantine/core'\nimport { useArchbaseTranslation } from '@archbase/core';\nimport React, { useEffect, useState } from 'react'\nimport { ArchbaseDualListSelector } from './ArchbaseDualListSelector'\nimport { ArchbaseGroupService } from '@archbase/security'\nimport { ArchbaseProfileService } from '@archbase/security'\nimport { RenderProfileUserItem } from './RenderProfileUserItem'\nimport { GroupDto, ProfileDto, UserDto, UserGroupDto } from '@archbase/security'\n\nexport interface UserModalOptions {\n // Campos de identificação\n showNickname?: boolean; // nickname - Apelido\n\n // Campos de perfil e grupos\n showProfile?: boolean; // profile - Perfil do usuário\n showGroups?: boolean; // groups - Grupos (DualListSelector)\n\n // Campos de configuração de senha\n showChangePasswordOnNextLogin?: boolean; // changePasswordOnNextLogin\n showAllowPasswordChange?: boolean; // allowPasswordChange\n showPasswordNeverExpires?: boolean; // passwordNeverExpires\n /** Exibe, somente leitura, a data da última troca de senha (passwordChangedAt) */\n showPasswordChangedAt?: boolean;\n\n // Campos de status da conta\n showAccountConfigLabel?: boolean;\n showAccountDeactivated?: boolean; // accountDeactivated\n showAccountLocked?: boolean; // accountLocked\n showIsAdministrator?: boolean;\n\n // Configurações de campos obrigatórios\n requiredNickname?: boolean;\n\n /** Tamanho máximo da imagem do avatar em kilobytes */\n avatarMaxSizeKB?: number;\n /** Qualidade da compressão da imagem do avatar (0 a 1), sendo 1 melhor qualidade */\n avatarImageQuality?: number;\n /** Maior dimensão (px) do avatar final — a imagem é redimensionada automaticamente. 0 mantém a resolução original */\n avatarMaxOutputSizePx?: number;\n\n /** Configuração de permissão de edição de campos */\n allowEditEmail?: boolean;\n\n customContentBefore?: (user: UserDto) => React.ReactNode;\n\n customContentAfter?: (user: UserDto) => React.ReactNode;\n\n /** Nome do perfil padrão que um novo usuário já virá pré-preenchido */\n userDefaultProfile?: string;\n /** Nome dos grupos padrões que um novo usuário já virá pré-preenchido */\n userDefaultGroups?: string[];\n}\n\nexport const defaultUserModalOptions: UserModalOptions = {\n // Campos de identificação\n showNickname: true,\n\n // Campos de perfil e grupos\n showProfile: true,\n showGroups: true,\n\n // Campos de configuração de senha\n showChangePasswordOnNextLogin: true,\n showAllowPasswordChange: true,\n showPasswordNeverExpires: true,\n showPasswordChangedAt: true,\n\n // Campos de status da conta\n showAccountConfigLabel: true,\n showAccountDeactivated: true,\n showAccountLocked: true,\n showIsAdministrator: true,\n\n // Configurações de campos obrigatórios\n requiredNickname: true,\n\n avatarMaxSizeKB: 2000,\n avatarImageQuality: 1,\n avatarMaxOutputSizePx: 512,\n\n allowEditEmail: true,\n}\n\nexport interface UserModalProps {\n dataSource: IArchbaseDataSourceBase<UserDto>\n opened: boolean\n onClickOk: (record?: UserDto, result?: any) => void\n onClickCancel: (record?: UserDto) => void\n onCustomSave?: (record?: UserDto, callback?: Function) => void\n onAfterSave?: (record?: UserDto) => void\n options?: UserModalOptions\n}\n\nexport const UserModal = (props: UserModalProps) => {\n const [passwordError, setPasswordError] = useState(\"\")\n const options = { ...defaultUserModalOptions, ...(props.options ?? {}) }\n\n // Somente leitura: o backend atualiza passwordChangedAt a cada troca de senha.\n const rawPasswordChangedAt = props.dataSource.getFieldValue('passwordChangedAt') as string | undefined\n const parsedPasswordChangedAt = rawPasswordChangedAt ? new Date(rawPasswordChangedAt) : undefined\n const passwordChangedAt =\n parsedPasswordChangedAt && !Number.isNaN(parsedPasswordChangedAt.getTime())\n ? parsedPasswordChangedAt.toLocaleString()\n : undefined\n\n const groupApi = useArchbaseRemoteServiceApi<ArchbaseGroupService>(ARCHBASE_IOC_API_TYPE.Group)\n const { dataSource: dsGroups } = useArchbaseRemoteDataSource<GroupDto, string>({\n name: `dsGroups`,\n service: groupApi,\n pageSize: 9999,\n loadOnStart: true,\n sort: ['name:asc'],\n onError: (error, origin) => {\n ArchbaseNotifications.showError(getI18nextInstance().t('archbase:WARNING'), error, origin)\n }\n })\n console.log(\"versão 12/05/2026\")\n\n const profileApi = useArchbaseRemoteServiceApi<ArchbaseProfileService>(ARCHBASE_IOC_API_TYPE.Profile)\n const { dataSource: dsProfiles } = useArchbaseRemoteDataSource<ProfileDto, string>({\n name: `dsProfiles`,\n service: profileApi,\n pageSize: 9999,\n loadOnStart: true,\n sort: ['name:asc'],\n onError: (error, origin) => {\n ArchbaseNotifications.showError(getI18nextInstance().t('archbase:WARNING'), error, origin)\n }\n })\n\n useEffect(() => {\n setPasswordError(\"\")\n }, [props.dataSource.getFieldValue(\"password\")])\n\n const setDefaultValues = async () => {\n if (!props.dataSource.isInserting()) return;\n\n if (options.userDefaultProfile) {\n const filter = emit(builder.eq(\"name\", options.userDefaultProfile))\n const result = await profileApi.findAllWithFilter(filter, 0, 1)\n if (result && result.content.length > 0) {\n props.dataSource.setFieldValue(\"profile\", result.content[0])\n }\n }\n if (options.userDefaultGroups) {\n const filter = emit(builder.in(\"name\", options.userDefaultGroups))\n const result = await groupApi.findAllWithFilter(filter, 0, 500)\n if (result && result.content.length > 0) {\n props.dataSource.setFieldValue(\"groups\", result.content.map(group => UserGroupDto.newInstance(group)))\n }\n }\n }\n\n useEffect(() => {\n if (props.opened) {\n setDefaultValues()\n }\n }, [props.opened])\n\n const handleSave = () => {\n const currentRecord = props.dataSource.getCurrentRecord()!;\n if (!currentRecord.password && props.dataSource.isInserting()) {\n setPasswordError(getI18nextInstance().t('archbase:Informe a senha'))\n return;\n }\n \n if (props.onCustomSave) {\n props.onCustomSave(currentRecord, (success: boolean) => {\n if (success && props.onAfterSave) {\n props.onAfterSave(currentRecord);\n }\n props.onClickOk(currentRecord, success);\n });\n } else {\n props.onClickOk(currentRecord, true);\n }\n };\n\n const handleCancel = () => {\n props.onClickCancel(props.dataSource.getCurrentRecord()!);\n };\n\n return (\n <Modal\n opened={props.opened}\n onClose={handleCancel}\n title={getI18nextInstance().t('archbase:Usuário')}\n size=\"80%\"\n styles={{ content: { maxWidth: 1000 } }}\n >\n <ScrollArea style={{ height: '500px' }}>\n <Stack w={\"98%\"}>\n {options?.customContentBefore && (\n <>\n {options.customContentBefore(props.dataSource.getCurrentRecord()!)}\n </>\n )}\n <Grid>\n <Grid.Col span={{ base: 12, md: 6, lg: 6 }}>\n <Group>\n <ArchbaseEdit\n label={`${getI18nextInstance().t('archbase:Nome completo')}`}\n placeholder={`${getI18nextInstance().t('archbase:Informe o nome completo do usuário')}`}\n dataSource={props.dataSource}\n dataField=\"name\"\n required\n width={'calc(100% - 208px)'}\n />\n {options.showNickname && (\n <ArchbaseEdit\n label={`${getI18nextInstance().t('archbase:Apelido')}`}\n placeholder={`${getI18nextInstance().t('archbase:Apelido')}`}\n dataSource={props.dataSource}\n dataField=\"nickname\"\n required={options.requiredNickname}\n />\n )}\n </Group>\n </Grid.Col>\n <Grid.Col span={{ base: 12, md: 6, lg: 6 }}>\n <ArchbaseEdit\n label={`${getI18nextInstance().t('archbase:Descrição do usuário')}`}\n placeholder={`${getI18nextInstance().t('archbase:Informe a descrição do usuário')}`}\n dataSource={props.dataSource}\n dataField=\"description\"\n required\n />\n </Grid.Col>\n </Grid>\n <Grid>\n <Grid.Col span={{ base: 12, md: 6, lg: 6 }}>\n <ArchbaseEdit\n label={`${getI18nextInstance().t('archbase:E-mail')}`}\n placeholder={`${getI18nextInstance().t('archbase:Informe o e-mail do usuário')}`}\n dataSource={props.dataSource}\n onChangeValue={(value) => props.dataSource.setFieldValue(\"userName\", value)}\n dataField=\"email\"\n readOnly={props.dataSource.isEditing() ? !options.allowEditEmail : false}\n required\n />\n </Grid.Col>\n <Grid.Col span={{ base: 12, md: 6, lg: 6 }}>\n <ArchbasePasswordEdit\n label={`${getI18nextInstance().t('archbase:Senha usuário')}`}\n dataSource={props.dataSource}\n dataField=\"password\"\n error={passwordError}\n required={props.dataSource.getFieldValue(\"isNewUser\")}\n />\n </Grid.Col>\n </Grid>\n <Grid>\n {options.showProfile && (\n <Grid.Col span={{ base: 12, md: 6, lg: 6 }}>\n <ArchbaseSelect<UserDto, string, ProfileDto>\n label={`${getI18nextInstance().t('archbase:Perfil do usuário')}`}\n dataSource={props.dataSource}\n dataField=\"profile\"\n options={dsProfiles}\n allowDeselect={true}\n optionsLabelField=\"nome\"\n itemComponent={RenderProfileUserItem}\n getOptionLabel={(option: ProfileDto) => option.name}\n getOptionValue={(option: ProfileDto) => option.id}\n />\n </Grid.Col>\n )}\n </Grid>\n\n <Grid>\n <Grid.Col span={{ base: 12 }}>\n {options.showAccountConfigLabel && (<Text fz={14} fw={500}>Informe</Text>)}\n </Grid.Col>\n <Grid.Col span={{ base: 12, md: 4, lg: 4 }}>\n <Stack gap={'lg'}>\n {options.showChangePasswordOnNextLogin && (\n <Input.Wrapper label=\"\">\n <ArchbaseCheckbox\n dataSource={props.dataSource}\n dataField=\"changePasswordOnNextLogin\"\n label={`${getI18nextInstance().t('archbase:Deve alterar senha próximo login ?')}`}\n />\n </Input.Wrapper>\n )}\n {options.showAllowPasswordChange && (\n <Input.Wrapper label=\"\">\n <ArchbaseCheckbox\n dataSource={props.dataSource}\n dataField=\"allowPasswordChange\"\n label={`${getI18nextInstance().t('archbase:Pode alterar a senha ?')}`}\n />\n </Input.Wrapper>\n )}\n {options.showPasswordNeverExpires && (\n <Input.Wrapper label=\"\">\n <ArchbaseCheckbox\n dataSource={props.dataSource}\n dataField=\"passwordNeverExpires\"\n label={`${getI18nextInstance().t('archbase:Senha nunca expira ?')}`}\n />\n <Text fz={12} c=\"dimmed\">\n {getI18nextInstance().t(\n 'archbase:Desmarcado, a senha expira conforme a política de validade do servidor. Para exigir a troca agora, use \"Deve alterar senha próximo login\".'\n )}\n </Text>\n </Input.Wrapper>\n )}\n {options.showPasswordChangedAt && passwordChangedAt && (\n <Text fz={12} c=\"dimmed\">\n {`${getI18nextInstance().t('archbase:Última troca de senha')}: ${passwordChangedAt}`}\n </Text>\n )}\n </Stack>\n </Grid.Col>\n <Grid.Col span={{ base: 12, md: 4, lg: 4 }}>\n <Stack gap=\"lg\">\n {options.showAccountDeactivated && (\n <Input.Wrapper label=\"\">\n <ArchbaseCheckbox\n dataSource={props.dataSource}\n dataField=\"accountDeactivated\"\n label={`${getI18nextInstance().t('archbase:Conta desativada ?')}`}\n />\n </Input.Wrapper>\n )}\n {options.showAccountLocked && (\n <Input.Wrapper label=\"\">\n <ArchbaseCheckbox\n dataSource={props.dataSource}\n dataField=\"accountLocked\"\n label={`${getI18nextInstance().t('archbase:Conta bloqueada ?')}`}\n />\n </Input.Wrapper>\n )}\n {options.showIsAdministrator && (\n <Input.Wrapper label=\"\">\n <ArchbaseCheckbox\n dataSource={props.dataSource}\n dataField=\"isAdministrator\"\n label={`${getI18nextInstance().t('archbase:Administrador ?')}`}\n />\n </Input.Wrapper>\n )}\n </Stack>\n </Grid.Col>\n <Grid.Col span={{ base: 12, md: 4, lg: 4 }}>\n <Stack gap=\"lg\">\n <ArchbaseAvatarEdit\n label={getI18nextInstance().t('archbase:Foto do usuário')}\n dataSource={props.dataSource}\n dataField=\"avatar\"\n width={120}\n height={120}\n maxSizeKB={options.avatarMaxSizeKB}\n imageQuality={options.avatarImageQuality}\n maxOutputSizePx={options.avatarMaxOutputSizePx}\n />\n </Stack>\n </Grid.Col>\n </Grid>\n\n {options.showGroups && (\n <Grid>\n <Grid.Col span={{ base: 12 }}>\n <Text fz={14} fw={500}>Grupos</Text>\n </Grid.Col>\n <Grid.Col span={{ base: 12 }}>\n <ArchbaseDualListSelector<GroupDto, UserGroupDto>\n titleAvailable={getI18nextInstance().t('archbase:Disponíveis')}\n titleAssigned={getI18nextInstance().t('archbase:Selecionados')}\n assignedItemsDS={\n new ArchbaseDataSource('dsDualList', {\n records: props.dataSource.getFieldValue('groups'),\n grandTotalRecords: props.dataSource.getFieldValue('groups').length,\n currentPage: 0,\n totalPages: 0,\n pageSize: 999999\n })\n }\n width=\"100%\"\n height=\"200px\"\n availableItemsDS={dsGroups}\n handleCreateAssociationObject={(group: GroupDto) => {\n return UserGroupDto.newInstance(group)\n }}\n idFieldAssigned={(item: UserGroupDto) => (item && item.group ? item.group.id : '')}\n idFieldAvailable={'id'}\n labelFieldAssigned={(item: UserGroupDto) => (item && item.group ? item.group.name : '')}\n labelFieldAvailable={'name'}\n />\n </Grid.Col>\n </Grid>\n )}\n {options?.customContentAfter && (\n <>\n {options.customContentAfter(props.dataSource.getCurrentRecord()!)}\n </>\n )}\n <Space h={'12px'} />\n </Stack>\n </ScrollArea>\n \n <Group justify=\"flex-end\" mt=\"md\">\n <Button variant=\"default\" onClick={handleCancel}>\n {getI18nextInstance().t('archbase:Cancelar')}\n </Button>\n <Button onClick={handleSave}>\n {getI18nextInstance().t('archbase:Salvar')}\n </Button>\n </Group>\n </Modal>\n )\n}\n","/**\n * GroupModal — modal para gerenciar grupos/roles de usuários.\n * @status stable\n */\nimport React from 'react'\nimport { Grid, ScrollArea, Stack, Modal, Button, Group } from '@mantine/core'\nimport { getI18nextInstance } from '@archbase/core';\nimport { GroupDto } from '@archbase/security'\nimport { IArchbaseDataSourceBase } from '@archbase/data'\nimport { ArchbaseEdit } from '@archbase/components'\n\nexport interface GroupModalOptions {\n customContentBefore?: (group: GroupDto) => React.ReactNode;\n customContentAfter?: (group: GroupDto) => React.ReactNode;\n}\n\nexport interface GroupModalProps {\n dataSource: IArchbaseDataSourceBase<GroupDto>\n opened: boolean\n onClickOk: (record?: GroupDto, result?: any) => void\n onClickCancel: (record?: GroupDto) => void\n onCustomSave?: (record?: GroupDto, callback?: Function) => void\n onAfterSave?: (record?: GroupDto) => void\n options?: GroupModalOptions\n}\n\nexport const GroupModal = (props: GroupModalProps) => {\n const options = {...(props.options ?? {}) }\n \n const handleSave = () => {\n if (props.onCustomSave) {\n props.onCustomSave(props.dataSource.getCurrentRecord()!, (success: boolean) => {\n if (success && props.onAfterSave) {\n props.onAfterSave(props.dataSource.getCurrentRecord()!);\n }\n props.onClickOk(props.dataSource.getCurrentRecord()!, success);\n });\n } else {\n props.onClickOk(props.dataSource.getCurrentRecord()!, true);\n }\n };\n\n const handleCancel = () => {\n props.onClickCancel(props.dataSource.getCurrentRecord()!);\n };\n \n return (\n <Modal\n opened={props.opened}\n onClose={handleCancel}\n title={getI18nextInstance().t('archbase:Grupo')}\n size=\"60%\"\n styles={{content: {maxWidth: 1000}}}\n >\n <ScrollArea style={{ height: '460px' }}>\n <Stack w={\"98%\"}>\n {options?.customContentBefore && options.customContentBefore(props.dataSource.getCurrentRecord()!)}\n <Grid>\n <Grid.Col span={{ base: 12 }}>\n <ArchbaseEdit\n label={`${getI18nextInstance().t('archbase:Nome do grupo')}`}\n placeholder={`${getI18nextInstance().t('archbase:Informe o nome do grupo')}`}\n dataSource={props.dataSource}\n dataField=\"name\"\n />\n </Grid.Col>\n <Grid.Col span={{ base: 12 }}>\n <ArchbaseEdit\n label={`${getI18nextInstance().t('archbase:Descrição do grupo')}`}\n placeholder={`${getI18nextInstance().t('archbase:Informe a descrição do grupo')}`}\n dataSource={props.dataSource}\n dataField=\"description\"\n />\n </Grid.Col>\n </Grid>\n {options?.customContentAfter && options.customContentAfter(props.dataSource.getCurrentRecord()!)}\n \n <Group justify=\"flex-end\" mt=\"md\">\n <Button variant=\"default\" onClick={handleCancel}>\n {getI18nextInstance().t('archbase:Cancelar')}\n </Button>\n <Button onClick={handleSave}>\n {getI18nextInstance().t('archbase:Salvar')}\n </Button>\n </Group>\n </Stack>\n </ScrollArea>\n </Modal>\n )\n}\n","/**\n * ApiTokenModal — modal para criação/edição de tokens de API.\n * @status stable\n */\nimport { ArchbaseDataSource } from '@archbase/data';\nimport { ArchbaseAsyncSelect, ArchbaseEdit, OptionsResult } from '@archbase/components';\nimport { useArchbaseRemoteServiceApi } from '@archbase/data';\nimport { Page } from '@archbase/data';\nimport { Modal } from '@mantine/core';\nimport { Grid, Group, Image, ScrollArea, Text, Button } from '@mantine/core';\nimport { DateTimePicker, DateValue } from '@mantine/dates';\nimport { useFocusTrap } from '@mantine/hooks';\nimport { ARCHBASE_IOC_API_TYPE, builder, convertDateToISOString, emit, processErrorMessage, isBase64Validate, getI18nextInstance } from '@archbase/core';\nimport { useArchbaseV1V2Compatibility } from '@archbase/data';\nimport { useArchbaseTranslation } from '@archbase/core';\nimport React, { useState } from 'react';\nimport { NO_USER } from './ArchbaseSecurityView';\nimport { ArchbaseUserService } from '@archbase/security';\nimport { ApiTokenDto, GroupDto, UserDto } from '@archbase/security';\n\nexport const UserSelectItem = ({ image, label, description, ...others }) => (\n\t<div {...others}>\n\t\t<Group grow>\n\t\t\t<img style={{maxWidth:'32px'}} src={image} />\n\t\t\t<div>\n\t\t\t\t<Text size=\"sm\">{label}</Text>\n\t\t\t\t<Text size=\"xs\" opacity={0.65}>\n\t\t\t\t\t{description}\n\t\t\t\t</Text>\n\t\t\t</div>\n\t\t</Group>\n\t</div>\n);\n\nexport interface ApiTokenModalProps {\n\tdataSource: ArchbaseDataSource<ApiTokenDto, string>;\n\topened: boolean;\n\tonClickOk: (record?: ApiTokenDto, result?: any) => void;\n\tonClickCancel: (record?: ApiTokenDto) => void;\n\tonCustomSave?: (record?: ApiTokenDto, callback?: Function) => void;\n\tonAfterSave?: (record?: ApiTokenDto) => void;\n}\n\nexport const ApiTokenModal = (props: ApiTokenModalProps) => {\n\tconst focusTrapRef = useFocusTrap();\n\tconst [value, setValue] = useState<DateValue | undefined>();\n\tconst userApi = useArchbaseRemoteServiceApi<ArchbaseUserService>(ARCHBASE_IOC_API_TYPE.User);\n\n\t// 🔄 MIGRAÇÃO V1/V2: Hook de compatibilidade para ApiTokenModal\n\tconst v1v2Compatibility = useArchbaseV1V2Compatibility<string>(\n\t\t'ApiTokenModal',\n\t\tprops.dataSource,\n\t\t'expirationDate',\n\t\t''\n\t);\n\n\t// 🔄 MIGRAÇÃO V1/V2: Debug info para desenvolvimento\n\tif (process.env.NODE_ENV === 'development' && props.dataSource) {\n\t\tconsole.log(`[ApiTokenModal] DataSource version: ${v1v2Compatibility.dataSourceVersion}`);\n\t}\n\n\tconst handleChange = (value: DateValue) => {\n\t\tif (!value) {\n\t\t\t// 🔄 MIGRAÇÃO V1/V2: Usar handleValueChange do padrão de compatibilidade\n\t\t\tv1v2Compatibility.handleValueChange(undefined);\n\t\t} else {\n\t\t\t// Convert string to Date if needed before calling convertDateToISOString\n\t\t\tconst dateValue = typeof value === 'string' ? new Date(value) : value;\n\t\t\tconst isoString = convertDateToISOString(dateValue);\n\t\t\t// 🔄 MIGRAÇÃO V1/V2: Usar handleValueChange do padrão de compatibilidade\n\t\t\tv1v2Compatibility.handleValueChange(isoString);\n\t\t}\n\t\tsetValue(value);\n\t};\n\n\tconst loadRemoteUsers = async (page: number, value: string): Promise<OptionsResult<UserDto>> => {\n\t\treturn new Promise<OptionsResult<UserDto>>(async (resolve, reject) => {\n\t\t\ttry {\n\t\t\t\tconst filter = emit(builder.or(builder.eq('name', `^*${value.trim()}*`)));\n\t\t\t\tconst result: Page<UserDto> = await userApi.findAllWithFilter(filter, page, 20);\n\t\t\t\tresolve({\n\t\t\t\t\toptions: result.content,\n\t\t\t\t\tpage: result.pageable!.pageNumber,\n\t\t\t\t\ttotalPages: result.totalPages,\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\treject(processErrorMessage(error));\n\t\t\t}\n\t\t});\n\t};\n\n\tconst handleSave = () => {\n\t\tif (props.onCustomSave) {\n\t\t\tprops.onCustomSave(props.dataSource.current, (success: boolean) => {\n\t\t\t\tif (success && props.onAfterSave) {\n\t\t\t\t\tprops.onAfterSave(props.dataSource.current);\n\t\t\t\t}\n\t\t\t\tprops.onClickOk(props.dataSource.current, success);\n\t\t\t});\n\t\t} else {\n\t\t\tprops.onClickOk(props.dataSource.current, true);\n\t\t}\n\t};\n\n\tconst handleCancel = () => {\n\t\tprops.onClickCancel(props.dataSource.current);\n\t};\n\n\treturn (\n\t\t<Modal\n\t\t\topened={props.opened}\n\t\t\tonClose={handleCancel}\n\t\t\ttitle={getI18nextInstance().t('archbase:Token de API')}\n\t\t\tsize=\"50%\"\n\t\t>\n\t\t\t<ScrollArea style={{ height: '300px' }}>\n\t\t\t\t<ArchbaseEdit\n\t\t\t\t\tlabel={`${getI18nextInstance().t('archbase:Nome do token')}`}\n\t\t\t\t\tplaceholder={`${getI18nextInstance().t('archbase:Informe o nome do token')}`}\n\t\t\t\t\tdataSource={props.dataSource}\n\t\t\t\t\tdataField=\"name\"\n\t\t\t\t/>\n\t\t\t\t<ArchbaseEdit\n\t\t\t\t\tlabel={`${getI18nextInstance().t('archbase:Descrição do token')}`}\n\t\t\t\t\tplaceholder={`${getI18nextInstance().t('archbase:Informe a descrição do token')}`}\n\t\t\t\t\tdataSource={props.dataSource}\n\t\t\t\t\tdataField=\"description\"\n\t\t\t\t/>\n\t\t\t\t<DateTimePicker\n\t\t\t\t\twithSeconds={true}\n\t\t\t\t\tvalue={value}\n\t\t\t\t\tonChange={handleChange}\n\t\t\t\t\tlabel=\"Data/hora expiração\"\n\t\t\t\t\tplaceholder={'Selecione a data de expiração'}\n\t\t\t\t/>\n\t\t\t\t<ArchbaseAsyncSelect<any, string, UserDto>\n\t\t\t\t\tlabel={`${getI18nextInstance().t('archbase:Usuário')}`}\n\t\t\t\t\tdataSource={props.dataSource}\n\t\t\t\t\tdataField=\"user\"\n\t\t\t\t\tplaceholder={`${getI18nextInstance().t('archbase:Digite aqui o nome do usuário')}`}\n\t\t\t\t\tgetOptionLabel={(option: UserDto) => option && option.email ? option.email : ''}\n\t\t\t\t\tgetOptionValue={(option: UserDto) => option && option.id ? option.id.toString() : ''}\n\t\t\t\t\tgetOptions={loadRemoteUsers}\n\t\t\t\t\tdebounceTime={500}\n\t\t\t\t\tminCharsToSearch={1}\n\t\t\t\t\titemComponent={UserSelectItem}\n\t\t\t\t/>\n\t\t\t</ScrollArea>\n\t\t\t\n\t\t\t<Group justify=\"flex-end\" mt=\"md\">\n\t\t\t\t<Button variant=\"default\" onClick={handleCancel}>\n\t\t\t\t\t{getI18nextInstance().t('archbase:Cancelar')}\n\t\t\t\t</Button>\n\t\t\t\t<Button onClick={handleSave}>\n\t\t\t\t\t{getI18nextInstance().t('archbase:Salvar')}\n\t\t\t\t</Button>\n\t\t\t</Group>\n\t\t</Modal>\n\t);\n};\n","/**\n * PermissionsSelectorModal — modal para selecionar permissões/roles.\n * @status stable\n */\nimport React, { useCallback, useEffect, useState, useMemo } from \"react\";\nimport { ARCHBASE_IOC_API_TYPE, getKeyByEnumValue, getI18nextInstance } from \"@archbase/core\";\nimport { ActionIcon, Badge, Button, Group, Modal, Paper, ScrollArea, Stack, Text, TextInput, Tooltip, Tree, TreeNodeData, useMantineColorScheme, useTree } from \"@mantine/core\";\nimport { IconArrowLeft, IconArrowRight, IconBorderCornerSquare, IconChevronDown } from \"@tabler/icons-react\";\nimport { SecurityType } from \"@archbase/security\";\nimport { useArchbaseRemoteServiceApi, IArchbaseDataSourceBase } from \"@archbase/data\";\nimport { ResouceActionPermissionDto, ResoucePermissionsWithTypeDto } from \"@archbase/security\";\nimport { ArchbaseResourceService } from \"@archbase/security\";\nimport { useDebouncedValue } from \"@mantine/hooks\";\nimport { ArchbaseSpaceBottom, ArchbaseSpaceFill, ArchbaseSpaceFixed } from \"@archbase/layout\";\n\nconst translateDelimitedString = (inputString) => {\n const delimiter = \"->\"\n if (inputString.includes(delimiter)) {\n const parts = inputString.split(delimiter).map(part => part.trim());\n\n const translatedParts = parts.map(part => getI18nextInstance().t(part));\n\n return translatedParts.join(` ${delimiter} `);\n }\n\n return getI18nextInstance().t(inputString);\n};\n\nexport interface PermissionsSelectorProps {\n dataSource: IArchbaseDataSourceBase<any> | null\n opened: boolean\n close: () => void\n}\n\nexport function PermissionsSelectorModal({ dataSource, opened, close }: PermissionsSelectorProps) {\n // Memoiza os valores do dataSource para evitar recálculos\n const name = useMemo(() => dataSource?.getFieldValue(\"name\") || '', [dataSource]);\n const securityId = useMemo(() => dataSource?.getFieldValue(\"id\") || '', [dataSource]);\n const type = useMemo(() => dataSource?.getFieldValue(\"type\") || '', [dataSource]);\n\n const availablePermissionsTree = useTree()\n const grantedPermissionsTree = useTree()\n const [availablePermissions, setAvailablePermissions] = useState<ResoucePermissionsWithTypeDto[]>([])\n const [grantedPermissions, setGrantedPermissions] = useState<ResoucePermissionsWithTypeDto[]>([])\n const [selectedAvailablePermission, setSelectedAvailablePermission] = useState<TreeNodeData>()\n const [selectedGrantedPermission, setSelectedGrantedPermission] = useState<TreeNodeData>()\n const [availablePermissionsFilter, setAvailablePermissionsFilter] = useState(\"\")\n const [debouncedAvailablePermissionsFilter] = useDebouncedValue(availablePermissionsFilter, 200);\n const [grantedPermissionsFilter, setGrantedPermissionsFilter] = useState(\"\")\n const [debouncedGrantedPermissionsFilter] = useDebouncedValue(grantedPermissionsFilter, 200);\n\n\n const resourceApi = useArchbaseRemoteServiceApi<ArchbaseResourceService>(ARCHBASE_IOC_API_TYPE.Resource)\n\n const { colorScheme } = useMantineColorScheme();\n const selectedColor = colorScheme === \"dark\" ? \"var(--mantine-primary-color-7)\" : \"var(--mantine-primary-color-4)\"\n\n const permissionsGrantedData = useMemo(() => grantedPermissions\n .sort((a, b) => a.resourceDescription.localeCompare(b.resourceDescription))\n .map(resourcePermissions => {\n return (\n {\n value: resourcePermissions.resourceId,\n label: resourcePermissions.resourceDescription,\n children: resourcePermissions.permissions\n .filter(permission => permission.actionDescription.toLowerCase().includes(debouncedGrantedPermissionsFilter.toLowerCase()))\n .sort((a, b) => a.actionDescription.localeCompare(b.actionDescription))\n .map(permission => {\n return {\n value: permission.actionId,\n label: permission.actionDescription,\n nodeProps: {\n permissionId: permission.permissionId,\n types: permission.types ?? [],\n owner: resourcePermissions\n }\n }\n })\n }\n )\n }), [grantedPermissions, debouncedGrantedPermissionsFilter])\n\n const grantedPermissionsActionIds = useMemo(() => grantedPermissions\n .map(resourcePermissions => resourcePermissions.permissions.map(permission => permission.actionId))\n .flat(), [grantedPermissions])\n\n const allPermissionsData = useMemo(() => availablePermissions\n .sort((a, b) => a.resourceDescription.localeCompare(b.resourceDescription))\n .map(resourcePermissions => {\n return (\n {\n value: resourcePermissions.resourceId,\n label: resourcePermissions.resourceDescription,\n children: resourcePermissions.permissions\n .filter(permission => permission.actionDescription.toLowerCase().includes(debouncedAvailablePermissionsFilter.toLowerCase()))\n .sort((a, b) => a.actionDescription.localeCompare(b.actionDescription))\n .map(permission => {\n const permissionGranted = grantedPermissions\n .find(resourcePermissionsGranted => resourcePermissionsGranted.resourceId === resourcePermissions.resourceId)?.permissions\n .find(permissionGranted => permissionGranted.actionId === permission.actionId)\n return (\n {\n value: permission.actionId,\n label: permission.actionDescription,\n nodeProps: {\n granted: grantedPermissionsActionIds.includes(permission.actionId) && permissionGranted?.types?.includes(getKeyByEnumValue(SecurityType, type)!),\n owner: resourcePermissions\n }\n }\n )\n })\n }\n )\n }), [availablePermissions, grantedPermissions, grantedPermissionsActionIds, type, debouncedAvailablePermissionsFilter])\n\n const loadPermissions = useCallback(async () => {\n if (securityId) {\n const permissionsGranted = await resourceApi.getPermissionsBySecurityId(securityId, type)\n const allPermissions = await resourceApi.getAllPermissionsAvailable()\n setAvailablePermissions(allPermissions)\n setGrantedPermissions(permissionsGranted)\n }\n }, [securityId, type])\n\n const handleAdd = useCallback(() => {\n if (selectedAvailablePermission?.value && securityId) {\n resourceApi.createPermission(securityId, selectedAvailablePermission.value, type)\n .then((resouceActionPermissionDto: ResouceActionPermissionDto) => {\n if (resouceActionPermissionDto) {\n setGrantedPermissions(permissionsGranted => {\n let updatedPermissionsGranted;\n if (permissionsGranted.map(resourcePermissions => resourcePermissions.resourceId).includes(resouceActionPermissionDto.resourceId)) {\n updatedPermissionsGranted = permissionsGranted.map(resourcePermissions => {\n if (resourcePermissions.resourceId === resouceActionPermissionDto.resourceId) {\n if (resourcePermissions.permissions.map(permission => permission.actionId).includes(selectedAvailablePermission.value)) {\n return (\n {\n ...resourcePermissions,\n permissions: resourcePermissions.permissions.map(permission =>\n permission.actionId === selectedAvailablePermission.value ? {\n ...permission,\n permissionId: resouceActionPermissionDto.permissionId,\n types: [...(permission.types ?? []), getKeyByEnumValue(SecurityType, type)!],\n } : permission\n )\n }\n )\n }\n return (\n {\n ...resourcePermissions,\n permissions: [...(resourcePermissions.permissions ?? []),\n {\n actionId: resouceActionPermissionDto.actionId,\n actionDescription: resouceActionPermissionDto.actionDescription,\n permissionId: resouceActionPermissionDto.permissionId,\n types: [getKeyByEnumValue(SecurityType, type)!]\n }]\n }\n )\n }\n return resourcePermissions\n });\n } else {\n updatedPermissionsGranted = [\n ...permissionsGranted,\n {\n resourceId: resouceActionPermissionDto.resourceId,\n resourceDescription: resouceActionPermissionDto.resourceDescription,\n permissions: [\n {\n actionId: resouceActionPermissionDto.actionId,\n actionDescription: resouceActionPermissionDto.actionDescription,\n permissionId: resouceActionPermissionDto.permissionId,\n types: [getKeyByEnumValue(SecurityType, type)!]\n }\n ]\n }\n ]\n }\n\n return updatedPermissionsGranted\n })\n\n const resourceAvailablePermissions = allPermissionsData\n .filter((resourcePermissionsNode: any) => resourcePermissionsNode.value === selectedAvailablePermission?.nodeProps?.owner?.resourceId)\n .map((resourcePermissionsNode: any) => resourcePermissionsNode.children).flat()\n\n const previousSelectedPermissionIndex = resourceAvailablePermissions.map((permission: any) => permission.value).indexOf(selectedAvailablePermission.value)\n const nextSelectedAvailablePermission = resourceAvailablePermissions\n .find((permissionNode: any, index: any) => !permissionNode?.nodeProps?.granted\n && permissionNode?.value !== selectedAvailablePermission.value\n && (resourceAvailablePermissions.length > previousSelectedPermissionIndex + 1\n ? index > previousSelectedPermissionIndex\n : true))\n if (nextSelectedAvailablePermission?.value) {\n availablePermissionsTree.select(nextSelectedAvailablePermission.value)\n }\n grantedPermissionsTree.expand(resouceActionPermissionDto.resourceId)\n setSelectedAvailablePermission(nextSelectedAvailablePermission)\n }\n })\n }\n }, [selectedAvailablePermission, securityId, type, resourceApi, allPermissionsData, availablePermissions, grantedPermissions, availablePermissionsTree, grantedPermissionsTree])\n\n const handleRemove = useCallback(() => {\n if (selectedGrantedPermission?.nodeProps?.permissionId) {\n resourceApi.deletePermission(selectedGrantedPermission.nodeProps.permissionId)\n .then(() => {\n setGrantedPermissions(permissionsGranted => {\n const updatedPermissionsGranted = [...permissionsGranted]\n .filter(resourcePermissions => {\n let hasOnePermissionOnResource = true\n resourcePermissions.permissions?.forEach(permission => {\n if (permission.permissionId !== undefined\n && permission.permissionId === selectedGrantedPermission?.nodeProps?.permissionId\n && resourcePermissions.permissions.length === 1\n && permission?.types?.length === 1\n && permission.types[0] === getKeyByEnumValue(SecurityType, type)) {\n hasOnePermissionOnResource = false;\n }\n })\n return hasOnePermissionOnResource;\n })\n .map(resourcePermissions => {\n const resource: ResoucePermissionsWithTypeDto = selectedGrantedPermission?.nodeProps?.owner\n if (resourcePermissions.resourceId === resource.resourceId) {\n if (selectedGrantedPermission?.nodeProps?.types?.length === 1) {\n return ({\n ...resourcePermissions,\n permissions: [...(resourcePermissions.permissions ?? [])\n .filter(permission => permission.permissionId !== selectedGrantedPermission?.nodeProps?.permissionId)]\n })\n }\n return (\n {\n ...resourcePermissions,\n permissions: (resourcePermissions.permissions ?? [])\n .map(permission => permission.actionId === selectedGrantedPermission.value\n ? ({\n actionId: permission.actionId,\n actionDescription: permission.actionDescription,\n types: [...(permission.types?.filter(currentType => currentType && (currentType !== getKeyByEnumValue(SecurityType, type))) ?? [])]\n }) : permission)\n }\n )\n }\n return resourcePermissions\n })\n return updatedPermissionsGranted\n })\n\n const resourceGrantedPermissions = permissionsGrantedData\n .filter((resourcePermissionsNode: any) => resourcePermissionsNode.value === selectedGrantedPermission?.nodeProps?.owner?.resourceId)\n .map((resourcePermissionsNode: any) => resourcePermissionsNode.children).flat()\n\n const previousSelectedPermissionIndex = resourceGrantedPermissions.map((permission: any) => permission.value).indexOf(selectedGrantedPermission.value)\n\n const nextSelectedGrantedPermission = resourceGrantedPermissions\n .find((permissionNode: any, index: any) => permissionNode?.nodeProps?.types.includes(getKeyByEnumValue(SecurityType, type))\n && permissionNode?.value !== selectedGrantedPermission.value\n && (resourceGrantedPermissions.length > previousSelectedPermissionIndex + 1 ? index > previousSelectedPermissionIndex : true))\n if (nextSelectedGrantedPermission?.value) {\n grantedPermissionsTree.select(nextSelectedGrantedPermission.value)\n }\n setSelectedGrantedPermission(nextSelectedGrantedPermission)\n })\n }\n }, [selectedGrantedPermission, resourceApi, type, permissionsGrantedData, grantedPermissions, grantedPermissionsTree])\n\n useEffect(() => {\n if (opened && dataSource) {\n setSelectedAvailablePermission(undefined)\n setSelectedGrantedPermission(undefined)\n setAvailablePermissionsFilter(\"\")\n setGrantedPermissionsFilter(\"\")\n grantedPermissionsTree.collapseAllNodes()\n availablePermissionsTree.collapseAllNodes()\n loadPermissions()\n }\n }, [opened, type, securityId, loadPermissions])\n\n // Não exibir o modal se não houver dataSource\n if (!dataSource) {\n return null;\n }\n\n return (\n <Modal opened={opened} onClose={close} title={`${getI18nextInstance().t(`archbase:${type}`)}: ${name}`} size={\"80%\"} styles={{ root: { overflow: \"hidden\" } }}>\n <ArchbaseSpaceFixed height={\"540px\"}>\n <ArchbaseSpaceFill>\n <Paper withBorder my={20} p={20} style={{ height: 'calc(100% - 40px)', overflow: 'hidden', display: 'flex', flexDirection: 'column' }}>\n <div style={{ flex: 1, display: 'flex', flexDirection: 'row', overflow: 'hidden', minHeight: 0, gap: '8px' }}>\n <div style={{ flex: 9, display: 'flex', flexDirection: 'column', overflow: 'hidden', minHeight: 0 }}>\n <Group mb={20}>\n <Text>{getI18nextInstance().t('archbase:Available')}</Text>\n <TextInput\n size=\"xs\"\n value={availablePermissionsFilter}\n onChange={(event) => setAvailablePermissionsFilter(event.target.value)}\n placeholder={getI18nextInstance().t('archbase:Filter available permissions')}\n />\n </Group>\n <ScrollArea style={{ flex: 1, minHeight: 0 }}>\n <Tree\n data={allPermissionsData}\n selectOnClick={true}\n allowRangeSelection={false}\n tree={availablePermissionsTree}\n renderNode={({ level, node, expanded, hasChildren, selected, elementProps }) => {\n const isGranted = node?.nodeProps?.granted;\n const textColor = isGranted ? \"dimmed\" : undefined;\n const textDecoration = isGranted ? \"line-through\" : undefined;\n\n const handleClick = useCallback((event: any) => {\n setSelectedAvailablePermission(node)\n elementProps.onClick(event)\n }, [node, elementProps.onClick])\n\n return (\n <Group ml={hasChildren ? 0 : 5} gap={5} {...elementProps}\n bg={selected && level === 2 ? selectedColor : \"\"}\n onClick={handleClick}\n >\n {hasChildren && (\n <IconChevronDown\n size={18}\n style={{ transform: expanded ? 'rotate(0deg)' : 'rotate(-90deg)' }}\n />\n )}\n {!hasChildren && (\n <IconBorderCornerSquare\n size={12}\n style={{ transform: 'rotate(-90deg)', marginTop: \"-5px\" }}\n />\n )}\n <Text\n c={textColor}\n td={textDecoration}\n >\n {translateDelimitedString(node.label as string)}\n </Text>\n </Group>\n )\n }\n }\n />\n </ScrollArea>\n </div>\n <div style={{ flex: 2, display: 'flex', alignItems: 'center', justifyContent: 'center' }}>\n <Stack gap={5} align=\"center\">\n <Tooltip label={getI18nextInstance().t('archbase:Add')}>\n <ActionIcon onClick={handleAdd} disabled={!selectedAvailablePermission || selectedAvailablePermission?.nodeProps?.granted || !selectedAvailablePermission.nodeProps}>\n <IconArrowRight />\n </ActionIcon>\n </Tooltip>\n <Tooltip label={getI18nextInstance().t('archbase:Remove')}>\n <ActionIcon onClick={handleRemove} disabled={!selectedGrantedPermission || !selectedGrantedPermission?.nodeProps?.permissionId || !selectedGrantedPermission.nodeProps}>\n <IconArrowLeft />\n </ActionIcon>\n </Tooltip>\n </Stack>\n </div>\n <div style={{ flex: 9, display: 'flex', flexDirection: 'column', overflow: 'hidden', minHeight: 0 }}>\n <Group mb={20}>\n <Text>{getI18nextInstance().t('archbase:Granted')}</Text>\n <TextInput\n size=\"xs\"\n value={grantedPermissionsFilter}\n onChange={(event) => setGrantedPermissionsFilter(event.target.value)}\n placeholder={getI18nextInstance().t('archbase:Filter granted permissions')}\n />\n </Group>\n <ScrollArea style={{ flex: 1, minHeight: 0 }}>\n <Tree\n data={permissionsGrantedData}\n selectOnClick={true}\n allowRangeSelection={false}\n tree={grantedPermissionsTree}\n renderNode={({ level, node, expanded, hasChildren, selected, elementProps }) => {\n const handleClick = useCallback((event: any) => {\n setSelectedGrantedPermission(node)\n elementProps.onClick(event)\n }, [node, elementProps.onClick])\n\n return (\n <Group ml={hasChildren ? 0 : 5} gap={5} {...elementProps} bg={selected && level === 2 ? selectedColor : \"\"}\n onClick={handleClick}\n >\n {hasChildren && (\n <IconChevronDown\n size={18}\n style={{ transform: expanded ? 'rotate(0deg)' : 'rotate(-90deg)' }}\n />\n )}\n {!hasChildren && (\n <IconBorderCornerSquare\n size={12}\n style={{ transform: 'rotate(-90deg)', marginTop: \"-5px\" }}\n />\n )}\n <Text>{translateDelimitedString(node.label as string)}</Text>\n {node?.nodeProps?.types?.includes(\"USER\") && <Badge color=\"blue\">{getI18nextInstance().t('archbase:user')}</Badge>}\n {node?.nodeProps?.types?.includes(\"GROUP\") && <Badge color=\"orange\">{getI18nextInstance().t('archbase:group')}</Badge>}\n {node?.nodeProps?.types?.includes(\"PROFILE\") && <Badge color=\"pink\">{getI18nextInstance().t('archbase:profile')}</Badge>}\n </Group>\n )\n }}\n />\n </ScrollArea>\n </div>\n </div>\n </Paper>\n </ArchbaseSpaceFill>\n <ArchbaseSpaceBottom size=\"40px\">\n <Group justify=\"flex-end\">\n <Button onClick={close}>{getI18nextInstance().t(\"archbase:Close\")}</Button>\n </Group>\n </ArchbaseSpaceBottom>\n </ArchbaseSpaceFixed>\n </Modal>\n )\n}\n","/**\n * ArchbaseSecurityView — visão completa de usuários/grupos/permissões.\n * @status stable\n */\nimport { ARCHBASE_IOC_API_TYPE, builder, emit, processDetailErrorMessage, processErrorMessage, useValidationErrors } from '@archbase/core';\nimport { ArchbaseDataSource } from '@archbase/data';\n// import { ArchbaseCountdownProgress } from '@archbase/components'; // Temporarily disabled\nimport {\n\tuseArchbaseRemoteDataSourceV2,\n\tuseArchbaseRemoteServiceApi,\n\tuseArchbaseStore,\n} from '@archbase/data';\nimport { useArchbaseTheme, isBase64Validate, useArchbaseValidator } from '@archbase/core';\nimport { useArchbaseListContext } from '@archbase/components';\nimport { ArchbaseListCustomItemProps } from '@archbase/components';\nimport { ArchbaseDialog, ArchbaseNotifications } from '@archbase/components';\nimport {\n\tActionIcon,\n\tBadge,\n\tButton,\n\tFlex,\n\tGroup,\n\tPaper,\n\tTabs,\n\tText,\n\tTooltip,\n\tuseMantineColorScheme,\n} from '@mantine/core';\nimport { IconEdit, IconPlus, IconShieldCheckered, IconTrashX } from '@tabler/icons-react';\n// Importações da DataGrid\nimport { ArchbaseDataGridColumn } from '@archbase/components';\nimport { ArchbaseDataGrid, ArchbaseDataGridRef, Columns } from '@archbase/components';\nimport { useArchbaseTranslation } from '@archbase/core';\nimport React, { ReactNode, useEffect, useRef, useState } from 'react';\nimport { ArchbaseAccessTokenService } from '@archbase/security';\nimport { ArchbaseGroupService } from '@archbase/security';\nimport { ArchbaseProfileService } from '@archbase/security';\nimport { ArchbaseResourceService } from '@archbase/security';\nimport { ArchbaseUserService } from '@archbase/security';\nimport { GroupModal, GroupModalOptions } from './GroupModal';\nimport { PermissionsSelectorModal } from './PermissionsSelectorModal';\nimport { ProfileModal, ProfileModalOptions } from './ProfileModal';\nimport { AccessTokenDto, GroupDto, ProfileDto, ResourceDto, UserDto } from '@archbase/security';\nimport { SecurityType } from '@archbase/security';\nimport { UserModal, UserModalOptions } from './UserModal';\nimport { IconEye } from '@tabler/icons-react';\n\nexport interface ArchbaseSecurityProps {\n\tbeforeDefaultUserActions?: (row: UserDto) => ReactNode;\n\tafterDefaultUserActions?: (row: UserDto) => ReactNode;\n\tbeforeDefaultProfileActions?: (row: ProfileDto) => ReactNode;\n\tafterDefaultProfileActions?: (row: ProfileDto) => ReactNode;\n\tbeforeDefaultGroupActions?: (row: GroupDto) => ReactNode;\n\tafterDefaultGroupActions?: (row: GroupDto) => ReactNode;\n\tuserActionsColumnWidth?: number;\n\tprofileActionsColumnWidth?: number;\n\tgroupActionsColumnWidth?: number;\n}\n\ninterface ArchbaseSecurityManagerProps {\n\theight?: any;\n\twidth?: any;\n\tdataSourceUsers?: ArchbaseDataSource<UserDto, string>;\n\tcreateEntitiesWithId?: boolean;\n\tuserModalOptions?: UserModalOptions;\n\tgroupModalOptions?: GroupModalOptions;\n\tprofileModalOptions?: ProfileModalOptions;\n\toptions?: ArchbaseSecurityProps;\n}\n\nexport const NO_USER =\n\t'data:image/png;base64,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';\n\nconst renderGroups = (user: UserDto) => {\n\tif (!user.groups) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<div style={{ display: 'flex' }}>\n\t\t\t{user.groups\n\t\t\t\t.slice()\n\t\t\t\t.sort((a, b) => (a.group?.name ?? '').localeCompare(b.group?.name ?? ''))\n\t\t\t\t.map((item, index) => (\n\t\t\t\t\t<div key={index} style={{ paddingRight: '2px' }}>\n\t\t\t\t\t\t<Badge color=\"blue\">{item.group?.name}</Badge>\n\t\t\t\t\t</div>\n\t\t\t\t))}\n\t\t</div>\n\t);\n};\n\nconst renderProfile = (user: UserDto) => {\n\tif (!user.profile) {\n\t\treturn null;\n\t}\n\treturn <Badge color=\"green\">{user.profile?.name}</Badge>;\n};\n\nexport interface UserItemProps extends ArchbaseListCustomItemProps<UserDto, string> {}\n\nexport const UserItem = (props: UserItemProps) => {\n\tconst theme = useArchbaseTheme();\n\tconst listContextValue = useArchbaseListContext<UserDto, string>();\n\tconst itemRef = useRef<any>(null);\n\n\tconst handleClick = (event) => {\n\t\tevent.preventDefault();\n\t\tif (!props.disabled) {\n\t\t\tif (listContextValue.handleSelectItem) {\n\t\t\t\tlistContextValue.handleSelectItem(props.index, props.recordData!);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst avatar =\n\t\tprops.recordData && props.recordData.avatar && isBase64Validate(props.recordData.avatar)\n\t\t\t? atob(props.recordData.avatar)\n\t\t\t: NO_USER;\n\tconst backgroundColor = props.active ? listContextValue.activeBackgroundColor : '';\n\tconst color = props.active ? listContextValue.activeColor : '';\n\n\treturn (\n\t\t<div\n\t\t\tonClick={handleClick}\n\t\t\tstyle={{\n\t\t\t\tpadding: '8px',\n\t\t\t\tbackgroundColor,\n\t\t\t\tcolor,\n\t\t\t\tcursor: props.disabled ? 'not-allowed' : 'pointer',\n\t\t\t}}\n\t\t\tref={itemRef}\n\t\t\ttabIndex={-1}\n\t\t>\n\t\t\t<Group wrap=\"nowrap\">\n\t\t\t\t<img\n\t\t\t\t\tstyle={{ width: '48px', borderRadius: 50 }}\n\t\t\t\t\tsrc={avatar}\n\t\t\t\t\talt={props.recordData ? props.recordData.userName : ''}\n\t\t\t\t/>\n\t\t\t\t<div>\n\t\t\t\t\t<Text size=\"sm\">{props.recordData.name}</Text>\n\t\t\t\t\t<Text size=\"xs\" opacity={0.65}>\n\t\t\t\t\t\t{props.recordData.email}\n\t\t\t\t\t</Text>\n\t\t\t\t</div>\n\t\t\t</Group>\n\t\t</div>\n\t);\n};\n\nexport function ArchbaseSecurityView({\n\theight = '400px',\n\twidth = '100%',\n\tcreateEntitiesWithId = true,\n\tuserModalOptions,\n\tprofileModalOptions,\n\tgroupModalOptions,\n\toptions,\n}: ArchbaseSecurityManagerProps) {\n\tconst theme = useArchbaseTheme();\n\tconst templateStore = useArchbaseStore('securityStore');\n\tconst validator = useArchbaseValidator();\n\tconst { colorScheme } = useMantineColorScheme();\n\tconst [error, setError] = useState<string | undefined>(undefined);\n\tconst [activeTab, setActiveTab] = useState<string | null>('users');\n\tconst userApi = useArchbaseRemoteServiceApi<ArchbaseUserService>(ARCHBASE_IOC_API_TYPE.User);\n\tconst groupApi = useArchbaseRemoteServiceApi<ArchbaseGroupService>(ARCHBASE_IOC_API_TYPE.Group);\n\tconst resourceApi = useArchbaseRemoteServiceApi<ArchbaseResourceService>(ARCHBASE_IOC_API_TYPE.Resource);\n\tconst profileApi = useArchbaseRemoteServiceApi<ArchbaseProfileService>(ARCHBASE_IOC_API_TYPE.Profile);\n\tconst [openedModal, setOpenedModal] = useState<string>('');\n\tconst [openedPermissionsModal, setOpenedPermissionsModal] = useState<string>('');\n\tconst accessTokenApi = useArchbaseRemoteServiceApi<ArchbaseAccessTokenService>(ARCHBASE_IOC_API_TYPE.AccessToken);\n\tconst {t} = useArchbaseTranslation();\n\n\t// Referências para os grids\n\tconst usersGridRef = useRef<ArchbaseDataGridRef | null>(null);\n\tconst groupsGridRef = useRef<ArchbaseDataGridRef | null>(null);\n\tconst profilesGridRef = useRef<ArchbaseDataGridRef | null>(null);\n\tconst resourcesGridRef = useRef<ArchbaseDataGridRef | null>(null);\n\tconst accessTokensGridRef = useRef<ArchbaseDataGridRef | null>(null);\n\n\t// Função para obter o ID da linha\n\tconst getUserRowId = (row: UserDto): string => {\n\t\treturn row.id;\n\t};\n\n\tconst getGroupRowId = (row: GroupDto): string => {\n\t\treturn row.id;\n\t};\n\n\tconst getProfileRowId = (row: ProfileDto): string => {\n\t\treturn row.id;\n\t};\n\n\tconst getResourceRowId = (row: ResourceDto): string => {\n\t\treturn row.id;\n\t};\n\n\tconst getAccessTokenRowId = (row: AccessTokenDto): string => {\n\t\treturn row.id;\n\t};\n\n\tconst {\n\t\tdataSource: dsAccessTokens,\n\t\tisLoading: isLoadingAccessTokens,\n\t\trefreshData: refreshAccessTokens\n\t} = useArchbaseRemoteDataSourceV2<AccessTokenDto>({\n\t\tname: 'accessTokenApi',\n\t\tservice: accessTokenApi,\n\t\tvalidator,\n\t\tpageSize: 25,\n\t\tdefaultSortFields: ['user.email', 'expirationTime:desc'],\n\t\tonError: (error, origin) => {\n\t\t\tsetError(error);\n\t\t\tArchbaseNotifications.showError(`${t('archbase:WARNING')}`, error, origin);\n\t\t},\n\t});\n\n\tconst {\n\t\tdataSource: dsUsers,\n\t\tisLoading: isLoadingUsers,\n\t\trefreshData: refreshUsers\n\t} = useArchbaseRemoteDataSourceV2<UserDto>({\n\t\tname: 'dsUsers',\n\t\tservice: userApi,\n\t\tvalidator,\n\t\tpageSize: 25,\n\t\tonError: (error, origin) => {\n\t\t\tsetError(error);\n\t\t\tArchbaseNotifications.showError(`${t('archbase:WARNING')}`, error, origin);\n\t\t},\n\t});\n\n\tconst {\n\t\tdataSource: dsGroups,\n\t\tisLoading: isLoadingGroups,\n\t\trefreshData: refreshGroups\n\t} = useArchbaseRemoteDataSourceV2<GroupDto>({\n\t\tname: 'dsGroups',\n\t\tservice: groupApi,\n\t\tvalidator,\n\t\tpageSize: 25,\n\t\tonError: (error, origin) => {\n\t\t\tsetError(error);\n\t\t\tArchbaseNotifications.showError(`${t('archbase:WARNING')}`, error, origin);\n\t\t},\n\t});\n\n\tconst {\n\t\tdataSource: dsProfiles,\n\t\tisLoading: isLoadingProfiles,\n\t\trefreshData: refreshProfiles\n\t} = useArchbaseRemoteDataSourceV2<ProfileDto>({\n\t\tname: 'dsProfile',\n\t\tservice: profileApi,\n\t\tvalidator,\n\t\tpageSize: 25,\n\t\tonError: (error, origin) => {\n\t\t\tsetError(error);\n\t\t\tArchbaseNotifications.showError(`${t('archbase:WARNING')}`, error, origin);\n\t\t},\n\t});\n\n\tconst {\n\t\tdataSource: dsResources,\n\t\tisLoading: isLoadingResources,\n\t\trefreshData: refreshResources\n\t} = useArchbaseRemoteDataSourceV2<ResourceDto>({\n\t\tname: 'dsResources',\n\t\tservice: resourceApi,\n\t\tvalidator,\n\t\tpageSize: 25,\n\t\tonError: (error, origin) => {\n\t\t\tsetError(error);\n\t\t\tArchbaseNotifications.showError(`${t('archbase:WARNING')}`, error, origin);\n\t\t},\n\t});\n\n\t// Carregar dados iniciais\n\tuseEffect(() => {\n\t\t// AccessTokens with filter\n\t\trefreshAccessTokens({ filter: emit(builder.eq('revoked', 'false')) });\n\t\t// Other data sources\n\t\trefreshUsers();\n\t\trefreshGroups();\n\t\trefreshProfiles();\n\t\trefreshResources();\n\t}, []);\n\n\tconst accessTokenColumns = (\n\t\t<Columns>\n\t\t\t<ArchbaseDataGridColumn<AccessTokenDto>\n\t\t\t\tdataField=\"user.avatar\"\n\t\t\t\tdataType=\"image\"\n\t\t\t\tsize={80}\n\t\t\t\theader={`${t('archbase:Foto')}`}\n\t\t\t\trender={(data) => (\n\t\t\t\t\t<img\n\t\t\t\t\t\tstyle={{ borderRadius: 50, height: '32px', maxHeight: '32px' }}\n\t\t\t\t\t\tsrc={data.row.user && data.row.user.avatar ? atob(data.row.user.avatar) : NO_USER}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\tinputFilterType=\"text\"\n\t\t\t\talign=\"center\"\n\t\t\t\texportable={false}\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<AccessTokenDto>\n\t\t\t\tdataField=\"user.userName\"\n\t\t\t\tdataType=\"text\"\n\t\t\t\tsize={300}\n\t\t\t\theader={`${t('archbase:Nome de Usuário')}`}\n\t\t\t\tinputFilterType=\"text\"\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<AccessTokenDto>\n\t\t\t\tdataField=\"user.email\"\n\t\t\t\tdataType=\"text\"\n\t\t\t\theader={`${t('archbase:Email')}`}\n\t\t\t\tsize={300}\n\t\t\t\tinputFilterType=\"text\"\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<AccessTokenDto>\n\t\t\t\tdataField=\"expirationDate\"\n\t\t\t\tdataType=\"text\"\n\t\t\t\tsize={300}\n\t\t\t\theader={`${t('archbase:Expira em')}`}\n\t\t\t\trender={(data) => <Text size=\"sm\">{data.row.expirationDate}</Text>}\n\t\t\t\tinputFilterType=\"text\"\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<AccessTokenDto>\n\t\t\t\tdataField=\"revoked\"\n\t\t\t\tdataType=\"boolean\"\n\t\t\t\theader={`${t('archbase:Revogado ?')}`}\n\t\t\t\tinputFilterType=\"checkbox\"\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<AccessTokenDto>\n\t\t\t\tdataField=\"expired\"\n\t\t\t\tdataType=\"boolean\"\n\t\t\t\theader={`${t('archbase:Expirado ?')}`}\n\t\t\t\tinputFilterType=\"checkbox\"\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<AccessTokenDto>\n\t\t\t\tdataField=\"token\"\n\t\t\t\tdataType=\"text\"\n\t\t\t\theader={`${t('archbase:Token Acesso')}`}\n\t\t\t\tsize={300}\n\t\t\t\tinputFilterType=\"text\"\n\t\t\t/>\n\t\t</Columns>\n\t);\n\n\tconst userColumns = (\n\t\t<Columns>\n\t\t\t<ArchbaseDataGridColumn<UserDto>\n\t\t\t\tdataField=\"avatar\"\n\t\t\t\tdataType=\"image\"\n\t\t\t\tsize={80}\n\t\t\t\theader={`${t('archbase:Foto')}`}\n\t\t\t\trender={(data) => (\n\t\t\t\t\t<img\n\t\t\t\t\t\tstyle={{ borderRadius: 50, height: '32px', maxHeight: '32px' }}\n\t\t\t\t\t\tsrc={data.row.avatar ? atob(data.row.avatar) : NO_USER}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\tenableSorting={false}\n\t\t\t\tenableColumnFilter={false}\n\t\t\t\tenableGlobalFilter={false}\n\t\t\t\talign=\"center\"\n\t\t\t\texportable={false}\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<UserDto>\n\t\t\t\tdataField=\"name\"\n\t\t\t\tdataType=\"text\"\n\t\t\t\tsize={300}\n\t\t\t\theader={`${t('archbase:Nome')}`}\n\t\t\t\tinputFilterType=\"text\"\n\t\t\t\ttruncate={true}\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<UserDto>\n\t\t\t\tdataField=\"nickname\"\n\t\t\t\tdataType=\"text\"\n\t\t\t\tsize={120}\n\t\t\t\theader={`${t('archbase:Apelido')}`}\n\t\t\t\tinputFilterType=\"text\"\n\t\t\t\ttruncate={true}\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<UserDto>\n\t\t\t\tdataField=\"email\"\n\t\t\t\tdataType=\"text\"\n\t\t\t\theader={`${t('archbase:Email')}`}\n\t\t\t\tsize={300}\n\t\t\t\tinputFilterType=\"text\"\n\t\t\t\ttruncate={true}\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<UserDto>\n\t\t\t\tdataField=\"accountDeactivated\"\n\t\t\t\tdataType=\"boolean\"\n\t\t\t\theader={`${t('archbase:Desativado?')}`}\n\t\t\t\tinputFilterType=\"checkbox\"\n\t\t\t\tsize={120}\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<UserDto>\n\t\t\t\tdataField=\"profile.name\"\n\t\t\t\tdataType=\"text\"\n\t\t\t\theader={`${t('archbase:Perfil')}`}\n\t\t\t\tsize={200}\n\t\t\t\trender={(data) => renderProfile(data.row)}\n\t\t\t\tinputFilterType=\"text\"\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<UserDto>\n\t\t\t\tdataField=\"groups\"\n\t\t\t\tdataType=\"text\"\n\t\t\t\tsize={300}\n\t\t\t\theader={`${t('archbase:Grupos')}`}\n\t\t\t\trender={(data) => renderGroups(data.row)}\n\t\t\t\texportValue={(row) =>\n\t\t\t\t\trow.groups\n\t\t\t\t\t\t?.slice()\n\t\t\t\t\t\t.sort((a, b) => (a.group?.name ?? '').localeCompare(b.group?.name ?? ''))\n\t\t\t\t\t\t.map((g) => g.group?.name)\n\t\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t\t.join(', ') || ''\n\t\t\t\t}\n\t\t\t\tenableSorting={false}\n\t\t\t\tenableColumnFilter={false}\n\t\t\t\tenableGlobalFilter={false}\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<UserDto>\n\t\t\t\tdataField=\"isAdministrator\"\n\t\t\t\tdataType=\"boolean\"\n\t\t\t\theader={`${t('archbase:Admin ?')}`}\n\t\t\t\tinputFilterType=\"checkbox\"\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<UserDto>\n\t\t\t\tdataField=\"changePasswordOnNextLogin\"\n\t\t\t\tdataType=\"boolean\"\n\t\t\t\theader={`${t('archbase:Alt.senha próximo login?')}`}\n\t\t\t\tinputFilterType=\"checkbox\"\n\t\t\t\tsize={120}\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<UserDto>\n\t\t\t\tdataField=\"allowPasswordChange\"\n\t\t\t\tdataType=\"boolean\"\n\t\t\t\theader={`${t('archbase:Pode alterar senha?')}`}\n\t\t\t\tinputFilterType=\"checkbox\"\n\t\t\t\tsize={120}\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<UserDto>\n\t\t\t\tdataField=\"allowMultipleLogins\"\n\t\t\t\tdataType=\"boolean\"\n\t\t\t\theader={`${t('archbase:Permite multiplos logins?')}`}\n\t\t\t\tinputFilterType=\"checkbox\"\n\t\t\t\tsize={120}\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<UserDto>\n\t\t\t\tdataField=\"passwordNeverExpires\"\n\t\t\t\tdataType=\"boolean\"\n\t\t\t\theader={`${t('archbase:Senha nunca expira?')}`}\n\t\t\t\tinputFilterType=\"checkbox\"\n\t\t\t\tsize={120}\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<UserDto>\n\t\t\t\tdataField=\"passwordChangedAt\"\n\t\t\t\tdataType=\"datetime\"\n\t\t\t\theader={`${t('archbase:Última troca de senha')}`}\n\t\t\t\tinputFilterType=\"date-range\"\n\t\t\t\tsize={160}\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<UserDto>\n\t\t\t\tdataField=\"accountLocked\"\n\t\t\t\tdataType=\"boolean\"\n\t\t\t\theader={`${t('archbase:Bloqueado?')}`}\n\t\t\t\tinputFilterType=\"checkbox\"\n\t\t\t\tsize={120}\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<UserDto>\n\t\t\t\tdataField=\"unlimitedAccessHours\"\n\t\t\t\tdataType=\"boolean\"\n\t\t\t\theader={`${t('archbase:Horário acesso ilimitado?')}`}\n\t\t\t\tinputFilterType=\"checkbox\"\n\t\t\t\tsize={140}\n\t\t\t/>\n\t\t</Columns>\n\t);\n\n\tconst groupColumns = (\n\t\t<Columns>\n\t\t\t<ArchbaseDataGridColumn<GroupDto>\n\t\t\t\tdataField=\"name\"\n\t\t\t\tdataType=\"text\"\n\t\t\t\tsize={300}\n\t\t\t\theader={`${t('archbase:Nome do grupo')}`}\n\t\t\t\tinputFilterType=\"text\"\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<GroupDto>\n\t\t\t\tdataField=\"description\"\n\t\t\t\tdataType=\"text\"\n\t\t\t\theader={`${t('archbase:Descrição')}`}\n\t\t\t\tsize={800}\n\t\t\t\tinputFilterType=\"text\"\n\t\t\t/>\n\t\t</Columns>\n\t);\n\n\tconst profileColumns = (\n\t\t<Columns>\n\t\t\t<ArchbaseDataGridColumn<ProfileDto>\n\t\t\t\tdataField=\"name\"\n\t\t\t\tdataType=\"text\"\n\t\t\t\tsize={300}\n\t\t\t\theader={`${t('archbase:Nome do perfil')}`}\n\t\t\t\tinputFilterType=\"text\"\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<ProfileDto>\n\t\t\t\tdataField=\"description\"\n\t\t\t\tdataType=\"text\"\n\t\t\t\theader={`${t('archbase:Descrição')}`}\n\t\t\t\tsize={800}\n\t\t\t\tinputFilterType=\"text\"\n\t\t\t/>\n\t\t</Columns>\n\t);\n\n\tconst resourceColumns = (\n\t\t<Columns>\n\t\t\t<ArchbaseDataGridColumn<ResourceDto>\n\t\t\t\tdataField=\"name\"\n\t\t\t\tdataType=\"text\"\n\t\t\t\tsize={300}\n\t\t\t\theader={`${t('archbase:Nome do recurso')}`}\n\t\t\t\tinputFilterType=\"text\"\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<ResourceDto>\n\t\t\t\tdataField=\"description\"\n\t\t\t\tdataType=\"text\"\n\t\t\t\theader={`${t('archbase:Descrição')}`}\n\t\t\t\tsize={800}\n\t\t\t\tinputFilterType=\"text\"\n\t\t\t/>\n\t\t</Columns>\n\t);\n\n\tconst handleAddUserExecute = () => {\n\t\tconst user = UserDto.newInstance();\n\t\tif (!createEntitiesWithId) {\n\t\t\t(user as any).id = undefined;\n\t\t}\n\t\tdsUsers.insert(user);\n\t\tsetOpenedModal(SecurityType.USER);\n\t};\n\n\tconst handleUserEditRow = (row: any) => {\n\t\tif (!dsUsers.isEmpty()) {\n\t\t\tconst currentUser = dsUsers.gotoRecordByData(row);\n\t\t\tif (currentUser) {\n\t\t\t\tdsUsers.edit();\n\t\t\t\tsetOpenedModal(SecurityType.USER);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst handleUserRemoveRow = (row: any) => {\n\t\tif (!dsUsers.isEmpty()) {\n\t\t\tconst currentUser = dsUsers.gotoRecordByData(row);\n\t\t\tif (currentUser) {\n\t\t\t\tArchbaseDialog.showConfirmDialogYesNo(\n\t\t\t\t\t`${t('archbase:Confirme')}`,\n\t\t\t\t\t`${t('archbase:Deseja remover o usuário ')}${row.name} ?`,\n\t\t\t\t\t() => {\n\t\t\t\t\t\tdsUsers.remove();\n\t\t\t\t\t},\n\t\t\t\t\t() => {},\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst handleUserViewRow = (row: any) => {\n\t\tif (!dsUsers.isEmpty()) {\n\t\t\tconst currentUser = dsUsers.gotoRecordByData(row);\n\t\t\tif (currentUser) {\n\t\t\t\tsetOpenedModal(SecurityType.USER);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst buildUserRowActions = (row: UserDto): ReactNode => {\n\t\treturn (\n\t\t\t<Group gap={1} wrap=\"nowrap\">\n\t\t\t\t{options?.beforeDefaultUserActions?.(row)}\n\t\t\t\t<ActionIcon variant=\"transparent\" onClick={() => handleUserViewRow(row)}>\n\t\t\t\t\t<IconEye size={20} color={colorScheme === 'dark' ? theme.colors.blue[8] : theme.colors.blue[4]} />\n\t\t\t\t</ActionIcon>\n\t\t\t\t<ActionIcon variant=\"transparent\" onClick={() => handleUserEditRow(row)}>\n\t\t\t\t\t<IconEdit size={20} color={colorScheme === 'dark' ? theme.colors.yellow[8] : theme.colors.yellow[4]} />\n\t\t\t\t</ActionIcon>\n\t\t\t\t<ActionIcon variant=\"transparent\" onClick={() => handleUserRemoveRow(row)}>\n\t\t\t\t\t<IconTrashX size={20} color={colorScheme === 'dark' ? theme.colors.red[8] : theme.colors.red[4]} />\n\t\t\t\t</ActionIcon>\n\t\t\t\t<Tooltip withinPortal withArrow position=\"left\" label={`${t('archbase:Edit permissions')}`}>\n\t\t\t\t\t<ActionIcon variant=\"transparent\" onClick={handleOpenUserPermissionsModal}>\n\t\t\t\t\t\t<IconShieldCheckered size={20} color={colorScheme === 'dark' ? theme.colors.green[8] : theme.colors.green[4]} />\n\t\t\t\t\t</ActionIcon>\n\t\t\t\t</Tooltip>\n\t\t\t\t{options?.afterDefaultUserActions?.(row)}\n\t\t\t</Group>\n\t\t);\n\t};\n\n\tconst handleAddGroupExecute = () => {\n\t\tconst group = GroupDto.newInstance();\n\t\tif (!createEntitiesWithId) {\n\t\t\t(group as any).id = undefined;\n\t\t}\n\t\tdsGroups.insert(group);\n\t\tsetOpenedModal(SecurityType.GROUP);\n\t};\n\n\tconst handleGroupEditRow = (row: any) => {\n\t\tif (!dsGroups.isEmpty()) {\n\t\t\tconst currentGroup = dsGroups.gotoRecordByData(row);\n\t\t\tif (currentGroup) {\n\t\t\t\tif (!dsGroups.isEditing()) {\n\t\t\t\t\tdsGroups.edit();\n\t\t\t\t}\n\t\t\t\tsetOpenedModal(SecurityType.GROUP);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst handleGroupRemoveRow = (row: any) => {\n\t\tif (!dsGroups.isEmpty()) {\n\t\t\tconst currentGroup = dsGroups.gotoRecordByData(row);\n\t\t\tif (currentGroup) {\n\t\t\t\tArchbaseDialog.showConfirmDialogYesNo(\n\t\t\t\t\t`${t('archbase:Confirme')}`,\n\t\t\t\t\t`${t('archbase:Deseja remover o grupo ')}${row.name} ?`,\n\t\t\t\t\t() => {\n\t\t\t\t\t\tdsGroups.remove();\n\t\t\t\t\t},\n\t\t\t\t\t() => {},\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst handleGroupViewRow = (row: any) => {\n\t\tif (!dsGroups.isEmpty()) {\n\t\t\tconst currentGroup = dsGroups.gotoRecordByData(row);\n\t\t\tif (currentGroup) {\n\t\t\t\tsetOpenedModal(SecurityType.GROUP);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst buildGroupRowActions = (row: GroupDto): ReactNode => {\n\t\treturn (\n\t\t\t<Group gap={1} wrap=\"nowrap\">\n\t\t\t\t{options?.beforeDefaultGroupActions?.(row)}\n\t\t\t\t<ActionIcon variant=\"transparent\" onClick={() => handleGroupViewRow(row)}>\n\t\t\t\t\t<IconEye size={20} color={colorScheme === 'dark' ? theme.colors.blue[8] : theme.colors.blue[4]} />\n\t\t\t\t</ActionIcon>\n\t\t\t\t<ActionIcon variant=\"transparent\" onClick={() => handleGroupEditRow(row)}>\n\t\t\t\t\t<IconEdit size={20} color={colorScheme === 'dark' ? theme.colors.yellow[8] : theme.colors.yellow[4]} />\n\t\t\t\t</ActionIcon>\n\t\t\t\t<ActionIcon variant=\"transparent\" onClick={() => handleGroupRemoveRow(row)}>\n\t\t\t\t\t<IconTrashX size={20} color={colorScheme === 'dark' ? theme.colors.red[8] : theme.colors.red[4]} />\n\t\t\t\t</ActionIcon>\n\t\t\t\t<Tooltip withinPortal withArrow position=\"left\" label={`${t('archbase:Edit permissions')}`}>\n\t\t\t\t\t<ActionIcon variant=\"transparent\" onClick={handleOpenGroupPermissionsModal}>\n\t\t\t\t\t\t<IconShieldCheckered size={20} color={colorScheme === 'dark' ? theme.colors.green[8] : theme.colors.green[4]} />\n\t\t\t\t\t</ActionIcon>\n\t\t\t\t</Tooltip>\n\t\t\t\t{options?.afterDefaultGroupActions?.(row)}\n\t\t\t</Group>\n\t\t);\n\t};\n\n\tconst validationContext = useValidationErrors();\n\n\tconst handleSaveUserModal = async () => {\n\t\ttry {\n\t\t\tawait dsUsers.save();\n\t\t} catch (_error) {\n\t\t\treturn;\n\t\t}\n\t\tsetOpenedModal('');\n\t\tvalidationContext?.clearAll();\n\t};\n\n\tconst handleCancelUserModal = () => {\n\t\tsetOpenedModal('');\n\t\tif (!dsUsers.isBrowsing()) {\n\t\t\tdsUsers.cancel();\n\t\t}\n\t\tvalidationContext?.clearAll();\n\t};\n\n\tconst handleSaveGroupModal = async () => {\n\t\ttry {\n\t\t\tawait dsGroups.save();\n\t\t} catch (_error) {\n\t\t\treturn;\n\t\t}\n\t\tsetOpenedModal('');\n\t\tvalidationContext?.clearAll();\n\t};\n\n\tconst handleCancelGroupModal = () => {\n\t\tsetOpenedModal('');\n\t\tif (!dsGroups.isBrowsing()) {\n\t\t\tdsGroups.cancel();\n\t\t}\n\t\tvalidationContext?.clearAll();\n\t};\n\n\tconst handleSaveProfileModal = async () => {\n\t\ttry {\n\t\t\tawait dsProfiles.save();\n\t\t} catch (_error) {\n\t\t\treturn;\n\t\t}\n\t\tsetOpenedModal('');\n\t\tvalidationContext?.clearAll();\n\t};\n\n\tconst handleCancelProfileModal = () => {\n\t\tsetOpenedModal('');\n\t\tif (!dsProfiles.isBrowsing()) {\n\t\t\tdsProfiles.cancel();\n\t\t}\n\t\tvalidationContext?.clearAll();\n\t};\n\n\tconst handleAddProfileExecute = () => {\n\t\tconst profile = ProfileDto.newInstance();\n\t\tif (!createEntitiesWithId) {\n\t\t\t(profile as any).id = undefined;\n\t\t}\n\t\tdsProfiles.insert(profile);\n\t\tsetOpenedModal(SecurityType.PROFILE);\n\t};\n\n\tconst handleProfileEditRow = (row: any) => {\n\t\tif (!dsProfiles.isEmpty()) {\n\t\t\tconst currentProfile = dsProfiles.gotoRecordByData(row);\n\t\t\tif (currentProfile) {\n\t\t\t\tif (!dsProfiles.isEditing()) {\n\t\t\t\t\tdsProfiles.edit();\n\t\t\t\t}\n\t\t\t\tsetOpenedModal(SecurityType.PROFILE);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst handleProfileRemoveRow = (row: any) => {\n\t\tif (!dsProfiles.isEmpty()) {\n\t\t\tconst currentProfile = dsProfiles.gotoRecordByData(row);\n\t\t\tif (currentProfile) {\n\t\t\t\tArchbaseDialog.showConfirmDialogYesNo(\n\t\t\t\t\t`${t('archbase:Confirme')}`,\n\t\t\t\t\t`${t('archbase:Deseja remover o perfil ')}${row.name} ?`,\n\t\t\t\t\t() => {\n\t\t\t\t\t\tdsProfiles.remove();\n\t\t\t\t\t},\n\t\t\t\t\t() => {},\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst handleProfileViewRow = (row: any) => {\n\t\tif (!dsProfiles.isEmpty()) {\n\t\t\tconst currentProfile = dsProfiles.gotoRecordByData(row);\n\t\t\tif (currentProfile) {\n\t\t\t\tsetOpenedModal(SecurityType.PROFILE);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst buildProfileRowActions = (row: ProfileDto): ReactNode => {\n\t\treturn (\n\t\t\t<Group gap={1} wrap=\"nowrap\">\n\t\t\t\t{options?.beforeDefaultProfileActions?.(row)}\n\t\t\t\t<ActionIcon variant=\"transparent\" onClick={() => handleProfileViewRow(row)}>\n\t\t\t\t\t<IconEye size={20} color={colorScheme === 'dark' ? theme.colors.blue[8] : theme.colors.blue[4]} />\n\t\t\t\t</ActionIcon>\n\t\t\t\t<ActionIcon variant=\"transparent\" onClick={() => handleProfileEditRow(row)}>\n\t\t\t\t\t<IconEdit size={20} color={colorScheme === 'dark' ? theme.colors.yellow[8] : theme.colors.yellow[4]} />\n\t\t\t\t</ActionIcon>\n\t\t\t\t<ActionIcon variant=\"transparent\" onClick={() => handleProfileRemoveRow(row)}>\n\t\t\t\t\t<IconTrashX size={20} color={colorScheme === 'dark' ? theme.colors.red[8] : theme.colors.red[4]} />\n\t\t\t\t</ActionIcon>\n\t\t\t\t<Tooltip withinPortal withArrow position=\"left\" label={`${t('archbase:Edit permissions')}`}>\n\t\t\t\t\t<ActionIcon variant=\"transparent\" onClick={handleOpenProfilePermissionsModal}>\n\t\t\t\t\t\t<IconShieldCheckered size={20} color={colorScheme === 'dark' ? theme.colors.green[8] : theme.colors.green[4]} />\n\t\t\t\t\t</ActionIcon>\n\t\t\t\t</Tooltip>\n\t\t\t\t{options?.afterDefaultProfileActions?.(row)}\n\t\t\t</Group>\n\t\t);\n\t};\n\n\tconst handleAccessTokenRevokeRow = () => {\n\t\tconst currentAccessToken = dsAccessTokens.getCurrentRecord();\n\t\tif (currentAccessToken) {\n\t\t\tArchbaseDialog.showConfirmDialogYesNo(\n\t\t\t\t`${t('archbase:Confirme')}`,\n\t\t\t\t`${t('archbase:Deseja revogar o token de Acesso do usuário ')}${currentAccessToken.user.name} ?`,\n\t\t\t\tasync () => {\n\t\t\t\t\tawait accessTokenApi\n\t\t\t\t\t\t.revoke(currentAccessToken.token)\n\t\t\t\t\t\t.then(async () => {\n\t\t\t\t\t\t\tArchbaseNotifications.showSuccess(\n\t\t\t\t\t\t\t\t`${t('mentors:Informação')}`,\n\t\t\t\t\t\t\t\t`${t('mentors:Token de Acesso revogado com sucesso!')}`,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tdsAccessTokens.refreshData();\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch((error) => {\n\t\t\t\t\t\t\tArchbaseDialog.showErrorWithDetails(\n\t\t\t\t\t\t\t\t`${t('mentors:Atenção')}`,\n\t\t\t\t\t\t\t\tprocessErrorMessage(error),\n\t\t\t\t\t\t\t\tprocessDetailErrorMessage(error),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\t() => {},\n\t\t\t);\n\t\t}\n\t};\n\n\tconst handleOpenUserPermissionsModal = () => {\n\t\tsetOpenedPermissionsModal(SecurityType.USER);\n\t};\n\n\tconst handleOpenGroupPermissionsModal = () => {\n\t\tsetOpenedPermissionsModal(SecurityType.GROUP);\n\t};\n\n\tconst handleOpenProfilePermissionsModal = () => {\n\t\tsetOpenedPermissionsModal(SecurityType.PROFILE);\n\t};\n\n\tconst handleClosePermissionsModal = () => {\n\t\tsetOpenedPermissionsModal('');\n\t};\n\n\t// Componentes de ações da barra de ferramentas para cada grid\n\tconst renderUsersToolbarActions = () : ReactNode => {\n\t\treturn (\n\t\t\t<Flex justify={'space-between'} style={{ width: '50%' }}>\n\t\t\t\t<Group align=\"end\" gap={'4px'} wrap=\"nowrap\">\n\t\t\t\t\t<Button color={'green'} leftSection={<IconPlus />} onClick={handleAddUserExecute}>\n\t\t\t\t\t\t{`${t('archbase:New')}`}\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button color={'blue'} leftSection={<IconEdit />} onClick={handleOpenUserPermissionsModal}>\n\t\t\t\t\t\t{`${t('archbase:Edit permissions')}`}\n\t\t\t\t\t</Button>\n\t\t\t\t</Group>\n\t\t\t\t<Flex align={'flex-start'} justify={'flex-end'} style={{ width: '200px' }}></Flex>\n\t\t\t</Flex>\n\t\t);\n\t};\n\n\tconst renderGroupsToolbarActions = () : ReactNode => {\n\t\treturn (\n\t\t\t<Flex justify={'space-between'} style={{ width: '50%' }}>\n\t\t\t\t<Group align=\"end\" gap={'4px'} wrap=\"nowrap\">\n\t\t\t\t\t<Button color={'green'} leftSection={<IconPlus />} onClick={handleAddGroupExecute}>\n\t\t\t\t\t\t{`${t('archbase:New')}`}\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button color={'blue'} leftSection={<IconEdit />} onClick={handleOpenGroupPermissionsModal}>\n\t\t\t\t\t\t{`${t('archbase:Edit permissions')}`}\n\t\t\t\t\t</Button>\n\t\t\t\t</Group>\n\t\t\t\t<Flex align={'flex-start'} justify={'flex-end'} style={{ width: '200px' }}></Flex>\n\t\t\t</Flex>\n\t\t);\n\t};\n\n\tconst renderProfilesToolbarActions = () : ReactNode => {\n\t\treturn (\n\t\t\t<Flex justify={'space-between'} style={{ width: '50%' }}>\n\t\t\t\t<Group align=\"end\" gap={'4px'} wrap='nowrap'>\n\t\t\t\t\t<Button color={'green'} leftSection={<IconPlus />} onClick={handleAddProfileExecute}>\n\t\t\t\t\t\t{`${t('archbase:New')}`}\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button color={'blue'} leftSection={<IconEdit />} onClick={handleOpenProfilePermissionsModal}>\n\t\t\t\t\t\t{`${t('archbase:Edit permissions')}`}\n\t\t\t\t\t</Button>\n\t\t\t\t</Group>\n\t\t\t\t<Flex align={'flex-start'} justify={'flex-end'} style={{ width: '200px' }}></Flex>\n\t\t\t</Flex>\n\t\t);\n\t};\n\n\tconst renderAccessTokensToolbarActions = () : ReactNode => {\n\t\treturn (\n\t\t\t<Flex justify={'space-between'} style={{ width: '50%' }}>\n\t\t\t\t<Group align=\"start\" gap={'4px'} wrap='nowrap'>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tdisabled={!dsAccessTokens.getCurrentRecord()}\n\t\t\t\t\t\tcolor={'red'}\n\t\t\t\t\t\tleftSection={<IconTrashX />}\n\t\t\t\t\t\tonClick={handleAccessTokenRevokeRow}\n\t\t\t\t\t>\n\t\t\t\t\t\t{`${t('archbase:Revoke')}`}\n\t\t\t\t\t</Button>\n\t\t\t\t</Group>\n\t\t\t</Flex>\n\t\t);\n\t};\n\n\treturn (\n\t\t<Paper p=\"md\" style={{ height: height, display: 'flex', flexDirection: 'column' }}>\n\t\t\t<Tabs variant='pills' value={activeTab} onChange={setActiveTab}>\n\t\t\t\t<Tabs.List>\n\t\t\t\t\t<Tabs.Tab value=\"users\">{`${t('Usuários')}`}</Tabs.Tab>\n\t\t\t\t\t<Tabs.Tab value=\"groups\">{`${t('Grupos')}`}</Tabs.Tab>\n\t\t\t\t\t<Tabs.Tab value=\"profiles\">{`${t('Perfis')}`}</Tabs.Tab>\n\t\t\t\t\t<Tabs.Tab value=\"resources\">{`${t('Recursos')}`}</Tabs.Tab>\n\t\t\t\t\t<Tabs.Tab value=\"accessTokens\">{`${t('Tokens Acesso')}`}</Tabs.Tab>\n\t\t\t\t</Tabs.List>\n\t\t\t</Tabs>\n\t\t\t<Paper\n\t\t\t\twithBorder\n\t\t\t\tmt=\"md\"\n\t\t\t\tstyle={{\n\t\t\t\t\tdisplay: activeTab === 'users' ? 'flex' : 'none',\n\t\t\t\t\twidth: '100%',\n\t\t\t\t\tflex: 1,\n\t\t\t\t\tminHeight: 0,\n\t\t\t\t\toverflow: 'auto'\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<ArchbaseDataGrid<UserDto, string>\n\t\t\t\t\tgridRef={usersGridRef}\n\t\t\t\t\tprintTitle={'Usuários'}\n\t\t\t\t\twidth={'100%'}\n\t\t\t\t\theight={'100%'}\n\t\t\t\t\twithBorder={false}\n\t\t\t\t\tdataSource={dsUsers}\n\t\t\t\t\twithColumnBorders={true}\n\t\t\t\t\tstriped={true}\n\t\t\t\t\tenableTopToolbar={true}\n\t\t\t\t\tenableRowActions={true}\n\t\t\t\t\tpageSize={50}\n\t\t\t\t\tisLoading={isLoadingUsers}\n\t\t\t\t\tisError={!!error}\n\t\t\t\t\terror={error}\n\t\t\t\t\tenableGlobalFilter={true}\n\t\t\t\t\tgetRowId={getUserRowId}\n\t\t\t\t\ttoolbarLeftContent={renderUsersToolbarActions()}\n\t\t\t\t\trenderRowActions={buildUserRowActions}\n\t\t\t\t\tactionsColumnWidth={options?.userActionsColumnWidth}\n\t\t\t\t\tchildren={userColumns}\n\t\t\t\t/>\n\t\t\t</Paper>\n\t\t\t<Paper\n\t\t\t\twithBorder\n\t\t\t\tmt=\"md\"\n\t\t\t\tstyle={{\n\t\t\t\t\tdisplay: activeTab === 'groups' ? 'flex' : 'none',\n\t\t\t\t\tflex: 1,\n\t\t\t\t\tminHeight: 0,\n\t\t\t\t\toverflow: 'auto'\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<ArchbaseDataGrid<GroupDto, string>\n\t\t\t\t\tgridRef={groupsGridRef}\n\t\t\t\t\tprintTitle={'Grupos'}\n\t\t\t\t\twidth={'100%'}\n\t\t\t\t\theight={'100%'}\n\t\t\t\t\twithBorder={false}\n\t\t\t\t\tdataSource={dsGroups}\n\t\t\t\t\twithColumnBorders={true}\n\t\t\t\t\tstriped={false}\n\t\t\t\t\tenableTopToolbar={true}\n\t\t\t\t\tenableRowActions={true}\n\t\t\t\t\tpageSize={50}\n\t\t\t\t\tisLoading={isLoadingGroups}\n\t\t\t\t\tisError={!!error}\n\t\t\t\t\terror={error}\n\t\t\t\t\tenableGlobalFilter={true}\n\t\t\t\t\tgetRowId={getGroupRowId}\n\t\t\t\t\trenderRowActions={buildGroupRowActions}\n\t\t\t\t\tactionsColumnWidth={options?.groupActionsColumnWidth}\n\t\t\t\t\tchildren={groupColumns}\n\t\t\t\t\ttoolbarLeftContent={renderGroupsToolbarActions()}\n\t\t\t\t/>\n\t\t\t</Paper>\n\t\t\t<Paper\n\t\t\t\twithBorder\n\t\t\t\tmt=\"md\"\n\t\t\t\tstyle={{\n\t\t\t\t\tdisplay: activeTab === 'profiles' ? 'flex' : 'none',\n\t\t\t\t\tflex: 1,\n\t\t\t\t\tminHeight: 0,\n\t\t\t\t\toverflow: 'auto'\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<ArchbaseDataGrid<ProfileDto, string>\n\t\t\t\t\tgridRef={profilesGridRef}\n\t\t\t\t\tprintTitle={'Perfis'}\n\t\t\t\t\twidth={'100%'}\n\t\t\t\t\theight={'100%'}\n\t\t\t\t\twithBorder={false}\n\t\t\t\t\tdataSource={dsProfiles}\n\t\t\t\t\twithColumnBorders={true}\n\t\t\t\t\tstriped={false}\n\t\t\t\t\tenableTopToolbar={true}\n\t\t\t\t\tenableRowActions={true}\n\t\t\t\t\tpageSize={50}\n\t\t\t\t\tisLoading={isLoadingProfiles}\n\t\t\t\t\tisError={!!error}\n\t\t\t\t\terror={error}\n\t\t\t\t\tenableGlobalFilter={true}\n\t\t\t\t\tgetRowId={getProfileRowId}\n\t\t\t\t\ttoolbarLeftContent={renderProfilesToolbarActions()}\n\t\t\t\t\trenderRowActions={buildProfileRowActions}\n\t\t\t\t\tactionsColumnWidth={options?.profileActionsColumnWidth}\n\t\t\t\t\tchildren={profileColumns}\n\t\t\t\t/>\n\t\t\t</Paper>\n\t\t\t<Paper\n\t\t\t\twithBorder\n\t\t\t\tmt=\"md\"\n\t\t\t\tstyle={{\n\t\t\t\t\tdisplay: activeTab === 'resources' ? 'flex' : 'none',\n\t\t\t\t\tflex: 1,\n\t\t\t\t\tminHeight: 0,\n\t\t\t\t\toverflow: 'auto'\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<ArchbaseDataGrid<ResourceDto, string>\n\t\t\t\t\tgridRef={resourcesGridRef}\n\t\t\t\t\tprintTitle={'Recursos'}\n\t\t\t\t\twidth={'100%'}\n\t\t\t\t\theight={'100%'}\n\t\t\t\t\twithBorder={false}\n\t\t\t\t\tdataSource={dsResources}\n\t\t\t\t\twithColumnBorders={true}\n\t\t\t\t\tstriped={false}\n\t\t\t\t\tenableTopToolbar={true}\n\t\t\t\t\tenableRowActions={false}\n\t\t\t\t\tpageSize={50}\n\t\t\t\t\tisLoading={isLoadingResources}\n\t\t\t\t\tisError={!!error}\n\t\t\t\t\terror={error}\n\t\t\t\t\tenableGlobalFilter={true}\n\t\t\t\t\tgetRowId={getResourceRowId}\n\t\t\t\t\tchildren={resourceColumns}\n\t\t\t\t/>\n\t\t\t</Paper>\n\t\t\t<Paper\n\t\t\t\twithBorder\n\t\t\t\tmt=\"md\"\n\t\t\t\tstyle={{\n\t\t\t\t\tdisplay: activeTab === 'accessTokens' ? 'flex' : 'none',\n\t\t\t\t\twidth: '100%',\n\t\t\t\t\tflex: 1,\n\t\t\t\t\tminHeight: 0,\n\t\t\t\t\toverflow: 'auto'\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<ArchbaseDataGrid<AccessTokenDto, string>\n\t\t\t\t\tgridRef={accessTokensGridRef}\n\t\t\t\t\tprintTitle={'Tokens de API'}\n\t\t\t\t\twidth={'100%'}\n\t\t\t\t\theight={'100%'}\n\t\t\t\t\twithBorder={false}\n\t\t\t\t\tdataSource={dsAccessTokens}\n\t\t\t\t\twithColumnBorders={true}\n\t\t\t\t\tstriped={true}\n\t\t\t\t\tenableTopToolbar={true}\n\t\t\t\t\tenableRowActions={false}\n\t\t\t\t\tpageSize={50}\n\t\t\t\t\tisLoading={isLoadingAccessTokens}\n\t\t\t\t\tisError={!!error}\n\t\t\t\t\terror={error}\n\t\t\t\t\tenableGlobalFilter={true}\n\t\t\t\t\tgetRowId={getAccessTokenRowId}\n\t\t\t\t\ttoolbarLeftContent={renderAccessTokensToolbarActions()}\n\t\t\t\t\tchildren={accessTokenColumns}\n\t\t\t\t/>\n\t\t\t</Paper>\n\t\t\t{openedModal === SecurityType.USER ? (\n\t\t\t\t<UserModal\n\t\t\t\t\tonClickOk={handleSaveUserModal}\n\t\t\t\t\topened={true}\n\t\t\t\t\tdataSource={dsUsers}\n\t\t\t\t\tonClickCancel={handleCancelUserModal}\n\t\t\t\t\toptions={userModalOptions}\n\t\t\t\t/>\n\t\t\t) : null}\n\t\t\t{openedModal === SecurityType.GROUP ? (\n\t\t\t\t<GroupModal\n\t\t\t\t\tonClickOk={handleSaveGroupModal}\n\t\t\t\t\topened={true}\n\t\t\t\t\tdataSource={dsGroups}\n\t\t\t\t\tonClickCancel={handleCancelGroupModal}\n\t\t\t\t\toptions={groupModalOptions}\n\t\t\t\t/>\n\t\t\t) : null}\n\t\t\t{openedModal === SecurityType.PROFILE ? (\n\t\t\t\t<ProfileModal\n\t\t\t\t\tonClickOk={handleSaveProfileModal}\n\t\t\t\t\topened={true}\n\t\t\t\t\tdataSource={dsProfiles}\n\t\t\t\t\tonClickCancel={handleCancelProfileModal}\n\t\t\t\t\toptions={profileModalOptions}\n\t\t\t\t/>\n\t\t\t) : null}\n\t\t\t{openedPermissionsModal === SecurityType.USER?\n\t\t\t<PermissionsSelectorModal\n\t\t\t\tdataSource={dsUsers}\n\t\t\t\topened={!!openedPermissionsModal}\n\t\t\t\tclose={handleClosePermissionsModal}\n\t\t\t/>:null}\n\t\t\t{openedPermissionsModal === SecurityType.GROUP?\n\t\t\t<PermissionsSelectorModal\n\t\t\t\tdataSource={dsGroups}\n\t\t\t\topened={!!openedPermissionsModal}\n\t\t\t\tclose={handleClosePermissionsModal}\n\t\t\t/>:null}\n\t\t\t{openedPermissionsModal === SecurityType.PROFILE?\n\t\t\t<PermissionsSelectorModal\n\t\t\t\tdataSource={dsProfiles}\n\t\t\t\topened={!!openedPermissionsModal}\n\t\t\t\tclose={handleClosePermissionsModal}\n\t\t\t/>:null}\n\n\t\t</Paper>\n\t);\n}\n","/**\n * ArchbaseApiTokenView — listagem e gestão de tokens de API.\n * @status stable\n */\nimport { ARCHBASE_IOC_API_TYPE, getI18nextInstance, getNestedObjectValue, processDetailErrorMessage, processErrorMessage } from '@archbase/core';\nimport {\n\tuseArchbaseDataSource,\n\tuseArchbaseRemoteDataSource,\n\tuseArchbaseRemoteServiceApi,\n\tuseArchbaseStore,\n} from '@archbase/data';\nimport { useArchbaseTheme } from '@archbase/core';\nimport { useArchbaseV1V2Compatibility } from '@archbase/data';\nimport { ArchbaseDialog, ArchbaseNotifications } from '@archbase/components';\nimport {\n\tButton,\n\tText,\n\tFlex,\n\tGroup,\n\tPaper,\n\tuseMantineColorScheme,\n\tRingProgress,\n\tTooltip,\n\tBadge,\n} from '@mantine/core';\nimport {\n\tIconPlus,\n\tIconTrashX,\n} from '@tabler/icons-react';\nimport { useArchbaseTranslation } from '@archbase/core';\nimport { useRef, useState } from 'react';\nimport { ApiTokenModal } from './ApiTokenModal';\nimport { ArchbaseApiTokenService } from '@archbase/security';\nimport { NO_USER } from './ArchbaseSecurityView';\nimport { ApiTokenDto } from '@archbase/security';\nimport { ArchbaseDataGridColumn } from '@archbase/components';\nimport { ArchbaseDataGrid, ArchbaseDataGridRef, Columns } from '@archbase/components';\n// import { ArchbaseGridTemplateRef } from '@archbase/template'; // Removed to break circular dependency\n\n\ninterface ArchbaseApiTokenViewProps {\n\theight?: any;\n\twidth?: any;\n}\n\nexport function ArchbaseApiTokenView({ height = '400px', width = '100%' }: ArchbaseApiTokenViewProps) {\n\tconst theme = useArchbaseTheme();\n\tconst templateStore = useArchbaseStore('apiTokenStore');\n\tconst validator = { validateEntity: () => [] }; // Mock validator returning empty error array\n\tconst { colorScheme } = useMantineColorScheme();\n\tconst [error, setError] = useState<string | undefined>(undefined);\n\tconst apiTokenApi = useArchbaseRemoteServiceApi<ArchbaseApiTokenService>(ARCHBASE_IOC_API_TYPE.ApiToken);\n\tconst [openedModal, setOpenedModal] = useState<string>('');\n\tconst gridRef = useRef<ArchbaseDataGridRef | null>(null)\n \n\t// Função para obter o ID da linha\n\tconst getRowId = (row: ApiTokenDto): string => {\n\t\treturn row.id;\n\t};\n\n\tconst { dataSource } = useArchbaseDataSource<ApiTokenDto, string>({\n\t\tinitialData: [],\n\t\tname: 'dataSource',\n\t});\n\n\t// 🔄 MIGRAÇÃO V1/V2: Hooks de compatibilidade para DataSources\n\tconst localDataSourceV1V2 = useArchbaseV1V2Compatibility<ApiTokenDto>(\n\t\t'ArchbaseApiTokenView-LocalDataSource',\n\t\tdataSource,\n\t\tundefined,\n\t\tundefined\n\t);\n\n\tconst { dataSource: dsApiTokens, isLoading } = useArchbaseRemoteDataSource<ApiTokenDto, string>({\n\t\tname: 'dsApiToken',\n\t\tservice: apiTokenApi,\n\t\tstore: templateStore,\n\t\tvalidator,\n\t\tpageSize: 25,\n\t\tloadOnStart: true,\n\t\tonLoadComplete: (dataSource) => {\n\t\t\t//\n\t\t},\n\t\tonDestroy: (dataSource) => {\n\t\t\t//\n\t\t},\n\t\tonError: (error, origin) => {\n\t\t\tsetError(error);\n\t\t\tArchbaseNotifications.showError(getI18nextInstance().t('archbase:WARNING'), error, origin);\n\t\t},\n\t});\n\n\t// 🔄 MIGRAÇÃO V1/V2: Hook de compatibilidade para DataSource remoto\n\tconst remoteDataSourceV1V2 = useArchbaseV1V2Compatibility<ApiTokenDto>(\n\t\t'ArchbaseApiTokenView-RemoteDataSource',\n\t\tdsApiTokens,\n\t\tundefined,\n\t\tundefined\n\t);\n\n\tconst heightTab = `calc(${height} - 40px)`;\n\n\tconst columns = (\n\t\t<Columns>\n\t\t\t<ArchbaseDataGridColumn<ApiTokenDto>\n\t\t\t\tdataField=\"user.avatar\"\n\t\t\t\tdataType=\"image\"\n\t\t\t\tsize={80}\n\t\t\t\theader=\"Foto\"\n\t\t\t\trender={(data) => (\n\t\t\t\t\t<img\n\t\t\t\t\t\tstyle={{ borderRadius: 50, height: '32px', maxHeight: '32px' }}\n\t\t\t\t\t\tsrc={\n\t\t\t\t\t\t\tdata.row.user && data.row.user.avatar ? atob(data.row.user.avatar) : NO_USER\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\tinputFilterType=\"text\"\n\t\t\t\talign=\"center\"\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<ApiTokenDto>\n\t\t\t\tdataField=\"user.userName\"\n\t\t\t\tdataType=\"text\"\n\t\t\t\tsize={300}\n\t\t\t\theader=\"Nome de Usuário\"\n\t\t\t\tinputFilterType=\"text\"\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<ApiTokenDto>\n\t\t\t\tdataField=\"user.email\"\n\t\t\t\tdataType=\"text\"\n\t\t\t\theader=\"Email\"\n\t\t\t\tsize={240}\n\t\t\t\tinputFilterType=\"text\"\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<ApiTokenDto>\n\t\t\t\tdataField=\"name\"\n\t\t\t\tdataType=\"text\"\n\t\t\t\theader=\"Nome\"\n\t\t\t\tsize={240}\n\t\t\t\tinputFilterType=\"text\"\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<ApiTokenDto>\n\t\t\t\tdataField=\"description\"\n\t\t\t\tdataType=\"text\"\n\t\t\t\theader=\"Descrição\"\n\t\t\t\tsize={300}\n\t\t\t\tinputFilterType=\"text\"\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<ApiTokenDto>\n\t\t\t\tdataField=\"token\"\n\t\t\t\tdataType=\"text\"\n\t\t\t\theader=\"Token API\"\n\t\t\t\tsize={300}\n\t\t\t\tinputFilterType=\"text\"\n\t\t\t\tenableClickToCopy={true}\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<ApiTokenDto>\n\t\t\t\tdataField=\"tenantId\"\n\t\t\t\tdataType=\"text\"\n\t\t\t\theader=\"Tenant ID\"\n\t\t\t\tsize={300}\n\t\t\t\tinputFilterType=\"text\"\n\t\t\t\tenableClickToCopy={true}\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<ApiTokenDto>\n\t\t\t\tdataField=\"expirationDate\"\n\t\t\t\tdataType=\"text\"\n\t\t\t\tsize={240}\n\t\t\t\theader=\"Validade\"\n\t\t\t\trender={(data) => {\n\t\t\t\t\tif (!data.row.expirationDate) {\n\t\t\t\t\t\treturn <Text c=\"dimmed\">Sem expiração</Text>;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst today = new Date();\n\t\t\t\t\ttoday.setHours(0, 0, 0, 0);\n\t\t\t\t\tconst expDate = new Date(data.row.expirationDate);\n\t\t\t\t\texpDate.setHours(0, 0, 0, 0);\n\n\t\t\t\t\tconst diffTime = expDate.getTime() - today.getTime();\n\t\t\t\t\tconst diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));\n\n\t\t\t\t\t// Calcular porcentagem para o gauge (baseado em 365 dias)\n\t\t\t\t\tconst maxDays = 365;\n\t\t\t\t\tlet percentage = Math.max(0, Math.min(100, (diffDays / maxDays) * 100));\n\n\t\t\t\t\t// Determinar cor baseado nos dias restantes\n\t\t\t\t\tlet color = 'green';\n\t\t\t\t\tlet label = '';\n\n\t\t\t\t\tif (diffDays < 0) {\n\t\t\t\t\t\t// Token vencido\n\t\t\t\t\t\tcolor = 'red';\n\t\t\t\t\t\tpercentage = 100;\n\t\t\t\t\t\tlabel = `Vencido há ${Math.abs(diffDays)} dia${Math.abs(diffDays) !== 1 ? 's' : ''}`;\n\t\t\t\t\t} else if (diffDays === 0) {\n\t\t\t\t\t\tcolor = 'red';\n\t\t\t\t\t\tpercentage = 5;\n\t\t\t\t\t\tlabel = 'Vence hoje';\n\t\t\t\t\t} else if (diffDays <= 7) {\n\t\t\t\t\t\tcolor = 'red';\n\t\t\t\t\t\tlabel = `${diffDays} dia${diffDays !== 1 ? 's' : ''}`;\n\t\t\t\t\t} else if (diffDays <= 30) {\n\t\t\t\t\t\tcolor = 'orange';\n\t\t\t\t\t\tlabel = `${diffDays} dias`;\n\t\t\t\t\t} else if (diffDays <= 90) {\n\t\t\t\t\t\tcolor = 'yellow';\n\t\t\t\t\t\tlabel = `${diffDays} dias`;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcolor = 'green';\n\t\t\t\t\t\tlabel = `${diffDays} dias`;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst tooltipText = diffDays < 0\n\t\t\t\t\t\t? `Vencido em ${expDate.toLocaleDateString()}`\n\t\t\t\t\t\t: `Expira em ${expDate.toLocaleDateString()}`;\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Tooltip label={tooltipText} withArrow>\n\t\t\t\t\t\t\t<Group gap=\"xs\" wrap=\"nowrap\">\n\t\t\t\t\t\t\t\t<RingProgress\n\t\t\t\t\t\t\t\t\tsize={36}\n\t\t\t\t\t\t\t\t\tthickness={4}\n\t\t\t\t\t\t\t\t\troundCaps\n\t\t\t\t\t\t\t\t\tsections={[{ value: diffDays < 0 ? 100 : percentage, color }]}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<Text size=\"sm\" c={diffDays < 0 ? 'red' : undefined} fw={diffDays <= 7 ? 600 : undefined}>\n\t\t\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t</Group>\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t);\n\t\t\t\t}}\n\t\t\t\tinputFilterType=\"text\"\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<ApiTokenDto>\n\t\t\t\tdataField=\"activated\"\n\t\t\t\tdataType=\"boolean\"\n\t\t\t\theader=\"Ativado ?\"\n\t\t\t\tinputFilterType=\"checkbox\"\n\t\t\t/>\n\t\t\t<ArchbaseDataGridColumn<ApiTokenDto>\n\t\t\t\tdataField=\"revoked\"\n\t\t\t\tdataType=\"boolean\"\n\t\t\t\theader=\"Revogado ?\"\n\t\t\t\tinputFilterType=\"checkbox\"\n\t\t\t/>\n\t\t</Columns>\n\t);\n\n\tconst handleCreateApiTokenExecute = () => {\n\t\t// 🔄 MIGRAÇÃO V1/V2: Inserção com compatibilidade\n\t\tdataSource.insert(ApiTokenDto.newInstance());\n\t\t\n\t\t// Se for V1, forçar atualização\n\t\tif (dataSource && !localDataSourceV1V2.isDataSourceV2) {\n\t\t\tlocalDataSourceV1V2.v1State.forceUpdate();\n\t\t}\n\t\t\n\t\tsetOpenedModal('apiToken');\n\t};\n\n\tconst handleApiTokenRevokeRow = () => {\n\t\tif (dsApiTokens.getCurrentRecord()) {\n\t\t\tArchbaseDialog.showConfirmDialogYesNo(\n\t\t\t\t`${getI18nextInstance().t('archbase:Confirme')}`,\n\t\t\t\t`${getI18nextInstance().t('archbase:Deseja revogar o token de API do usuário ')}${dsApiTokens.getCurrentRecord().user.name} ?`,\n\t\t\t\tasync () => {\n\t\t\t\t\tawait apiTokenApi\n\t\t\t\t\t\t.revoke(dsApiTokens.getCurrentRecord().token)\n\t\t\t\t\t\t.then(async () => {\n\t\t\t\t\t\t\tArchbaseNotifications.showSuccess(\n\t\t\t\t\t\t\t\t`${getI18nextInstance().t('mentors:Informação')}`,\n\t\t\t\t\t\t\t\t`${getI18nextInstance().t('mentors:Token de API revogado com sucesso!')}`,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// 🔄 MIGRAÇÃO V1/V2: Refresh com compatibilidade\n\t\t\t\t\t\t\tdsApiTokens.refreshData();\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// Se for V1, forçar atualização\n\t\t\t\t\t\t\tif (dsApiTokens && !remoteDataSourceV1V2.isDataSourceV2) {\n\t\t\t\t\t\t\t\tremoteDataSourceV1V2.v1State.forceUpdate();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch((error) => {\n\t\t\t\t\t\t\tArchbaseDialog.showErrorWithDetails(\n\t\t\t\t\t\t\t\t`${getI18nextInstance().t('mentors:Atenção')}`,\n\t\t\t\t\t\t\t\tprocessErrorMessage(error),\n\t\t\t\t\t\t\t\tprocessDetailErrorMessage(error),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\t() => { },\n\t\t\t);\n\t\t}\n\t};\n\n\tconst handleCloseApiTokenModal = () => {\n\t\tsetOpenedModal('');\n\t};\n\n\tconst handleSaveApiToken = async (record?: ApiTokenDto, callback?: Function) => {\n\t\tconst apiToken: ApiTokenDto | undefined = dataSource.getCurrentRecord();\n\t\tif (apiToken) {\n\t\t\ttry {\n\t\t\t\tdataSource.validate();\n\t\t\t\tif (!apiToken.user || !apiToken.user.email) {\n\t\t\t\t\tArchbaseDialog.showErrorWithDetails(\n\t\t\t\t\t\t`${getI18nextInstance().t('archbase:WARNING')}`,\n\t\t\t\t\t\t`${getI18nextInstance().t('archbase:Selecione um usuário para o token de API')}`,\n\t\t\t\t\t\t'',\n\t\t\t\t\t);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tawait apiTokenApi\n\t\t\t\t\t.create(apiToken.user.email, apiToken.expirationDate, apiToken.name, apiToken.description)\n\t\t\t\t\t.then(async (response: ApiTokenDto) => {\n\t\t\t\t\t\t// 🔄 MIGRAÇÃO V1/V2: Cancelar e adicionar com compatibilidade\n\t\t\t\t\t\tdataSource.cancel();\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Se for V1, forçar atualização no local DataSource\n\t\t\t\t\t\tif (dataSource && !localDataSourceV1V2.isDataSourceV2) {\n\t\t\t\t\t\t\tlocalDataSourceV1V2.v1State.forceUpdate();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tdsApiTokens.append(response);\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Se for V1, forçar atualização no remote DataSource\n\t\t\t\t\t\tif (dsApiTokens && !remoteDataSourceV1V2.isDataSourceV2) {\n\t\t\t\t\t\t\tremoteDataSourceV1V2.v1State.forceUpdate();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tArchbaseNotifications.showSuccess(\n\t\t\t\t\t\t\t`${getI18nextInstance().t('mentors:Informação')}`,\n\t\t\t\t\t\t\t`${getI18nextInstance().t('mentors:Token de API gerado com sucesso!')}`,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (callback) {\n\t\t\t\t\t\t\tcallback(true);\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t.catch((error) => {\n\t\t\t\t\t\tArchbaseDialog.showErrorWithDetails(\n\t\t\t\t\t\t\t`${getI18nextInstance().t('mentors:Atenção')}`,\n\t\t\t\t\t\t\tprocessErrorMessage(error),\n\t\t\t\t\t\t\tprocessDetailErrorMessage(error),\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\t\t\t} catch (ex) {\n\t\t\t\tArchbaseDialog.showErrorWithDetails(\n\t\t\t\t\t`${getI18nextInstance().t('mentors:Atenção')}`,\n\t\t\t\t\tprocessErrorMessage(ex),\n\t\t\t\t\tprocessDetailErrorMessage(ex),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t};\n\n\t// Componente de ações da barra de ferramentas\n\tconst renderToolbarActions = () => {\n\t\treturn (\n\t\t\t<Flex justify={'space-between'} style={{ width: '50%' }}>\n\t\t\t\t<Group align=\"start\" gap={'2px'} wrap=\"nowrap\">\n\t\t\t\t\t<Button color={'green'} leftSection={<IconPlus />} onClick={handleCreateApiTokenExecute}>\n\t\t\t\t\t\t{getI18nextInstance().t('archbase:New')}\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button disabled={!dsApiTokens.getCurrentRecord()} color={'red'} leftSection={<IconTrashX />} onClick={handleApiTokenRevokeRow}>\n\t\t\t\t\t\t{getI18nextInstance().t('archbase:Revoke')}\n\t\t\t\t\t</Button>\n\t\t\t\t</Group>\n\t\t\t</Flex>\n\t\t);\n\t};\n\n\treturn (\n\t\t<Paper p=\"md\" style={{ height: height, display: 'flex', flexDirection: 'column' }}>\n\t\t\t<Paper\n\t\t\t\twithBorder\n\t\t\t\tstyle={{\n\t\t\t\t\theight: heightTab,\n\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\twidth: '100%',\n\t\t\t\t\tflex: 1,\n\t\t\t\t\tminHeight: 0,\n\t\t\t\t\toverflow: 'auto'\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<ArchbaseDataGrid<ApiTokenDto, string>\n\t\t\t\t\tgridRef={gridRef}\n\t\t\t\t\tprintTitle={'Tokens de API'}\n\t\t\t\t\twidth={'100%'}\n\t\t\t\t\theight={'100%'}\n\t\t\t\t\twithBorder={false}\n\t\t\t\t\tdataSource={dsApiTokens}\n\t\t\t\t\twithColumnBorders={true}\n\t\t\t\t\tstriped={true}\n\t\t\t\t\tenableTopToolbar={true}\n\t\t\t\t\tenableRowActions={false}\n\t\t\t\t\tpageSize={50}\n\t\t\t\t\tisLoading={isLoading}\n\t\t\t\t\tisError={!!error}\n\t\t\t\t\terror={error}\n\t\t\t\t\tenableGlobalFilter={true}\n\t\t\t\t\tgetRowId={getRowId}\n\t\t\t\t\ttoolbarLeftContent={renderToolbarActions()}\n\t\t\t\t\tchildren={columns}\n\t\t\t\t/>\n\t\t\t</Paper>\n\t\t\t{openedModal === 'apiToken' ? (\n\t\t\t\t<ApiTokenModal\n\t\t\t\t\tonClickOk={handleCloseApiTokenModal}\n\t\t\t\t\topened={true}\n\t\t\t\t\tdataSource={dataSource}\n\t\t\t\t\tonCustomSave={handleSaveApiToken}\n\t\t\t\t\tonClickCancel={handleCloseApiTokenModal}\n\t\t\t\t/>\n\t\t\t) : null}\n\t\t</Paper>\n\t);\n}\n"],"names":["REACT_ELEMENT_TYPE","REACT_FRAGMENT_TYPE","jsxProd","type","config","maybeKey","key","propName","reactJsxRuntime_production","jsxRuntimeModule","require$$0","ProfileModal","props","options","handleSave","success","handleCancel","jsx","Modal","getI18nextInstance","ScrollArea","jsxs","Stack","Grid","ArchbaseEdit","Group","Button","ArchbaseDualListSelector","availableItemsDS","assignedItemsDS","idFieldAvailable","labelFieldAvailable","idFieldAssigned","labelFieldAssigned","handleCreateAssociationObject","width","height","titleAvailable","titleAssigned","useArchbaseV1V2Compatibility","assignedV1V2","availableItems","setAvailableItems","useState","assignedItems","setAssignedItems","selectedAvailable","setSelectedAvailable","selectedAssigned","setSelectedAssigned","loadItemsData","useCallback","useArchbaseDataSourceListener","useEffect","getItemId","item","field","getItemLabel","handleSelect","setId","id","prev","handleAdd","originalItem","newItem","handleRemove","record","criteria","Paper","Box","Text","List","Checkbox","g","Tooltip","ActionIcon","IconArrowRight","IconArrowLeft","RenderProfileUserItem","forwardRef","image","label","description","origin","others","ref","Flex","Space","defaultUserModalOptions","UserModal","passwordError","setPasswordError","rawPasswordChangedAt","parsedPasswordChangedAt","passwordChangedAt","groupApi","useArchbaseRemoteServiceApi","ARCHBASE_IOC_API_TYPE","dsGroups","useArchbaseRemoteDataSource","error","ArchbaseNotifications","profileApi","dsProfiles","setDefaultValues","filter","emit","builder","result","group","UserGroupDto","currentRecord","value","ArchbasePasswordEdit","ArchbaseSelect","option","Input","ArchbaseCheckbox","ArchbaseAvatarEdit","ArchbaseDataSource","Fragment","GroupModal","UserSelectItem","ApiTokenModal","useFocusTrap","setValue","userApi","v1v2Compatibility","handleChange","dateValue","isoString","convertDateToISOString","loadRemoteUsers","page","resolve","reject","processErrorMessage","DateTimePicker","ArchbaseAsyncSelect","translateDelimitedString","inputString","delimiter","part","PermissionsSelectorModal","dataSource","opened","close","name","useMemo","securityId","availablePermissionsTree","useTree","grantedPermissionsTree","availablePermissions","setAvailablePermissions","grantedPermissions","setGrantedPermissions","selectedAvailablePermission","setSelectedAvailablePermission","selectedGrantedPermission","setSelectedGrantedPermission","availablePermissionsFilter","setAvailablePermissionsFilter","debouncedAvailablePermissionsFilter","useDebouncedValue","grantedPermissionsFilter","setGrantedPermissionsFilter","debouncedGrantedPermissionsFilter","resourceApi","colorScheme","useMantineColorScheme","selectedColor","permissionsGrantedData","a","b","resourcePermissions","permission","grantedPermissionsActionIds","allPermissionsData","permissionGranted","resourcePermissionsGranted","getKeyByEnumValue","SecurityType","loadPermissions","permissionsGranted","allPermissions","resouceActionPermissionDto","updatedPermissionsGranted","resourceAvailablePermissions","resourcePermissionsNode","previousSelectedPermissionIndex","nextSelectedAvailablePermission","permissionNode","index","hasOnePermissionOnResource","resource","currentType","resourceGrantedPermissions","nextSelectedGrantedPermission","ArchbaseSpaceFixed","ArchbaseSpaceFill","TextInput","event","Tree","level","node","expanded","hasChildren","selected","elementProps","isGranted","textColor","textDecoration","handleClick","IconChevronDown","IconBorderCornerSquare","Badge","ArchbaseSpaceBottom","NO_USER","renderGroups","user","renderProfile","ArchbaseSecurityView","createEntitiesWithId","userModalOptions","profileModalOptions","groupModalOptions","theme","useArchbaseTheme","useArchbaseStore","validator","useArchbaseValidator","setError","activeTab","setActiveTab","openedModal","setOpenedModal","openedPermissionsModal","setOpenedPermissionsModal","accessTokenApi","t","useArchbaseTranslation","usersGridRef","useRef","groupsGridRef","profilesGridRef","resourcesGridRef","accessTokensGridRef","getUserRowId","row","getGroupRowId","getProfileRowId","getResourceRowId","getAccessTokenRowId","dsAccessTokens","isLoadingAccessTokens","refreshAccessTokens","useArchbaseRemoteDataSourceV2","dsUsers","isLoadingUsers","refreshUsers","isLoadingGroups","refreshGroups","isLoadingProfiles","refreshProfiles","dsResources","isLoadingResources","refreshResources","accessTokenColumns","Columns","ArchbaseDataGridColumn","data","userColumns","groupColumns","profileColumns","resourceColumns","handleAddUserExecute","UserDto","handleUserEditRow","handleUserRemoveRow","ArchbaseDialog","handleUserViewRow","buildUserRowActions","IconEye","IconEdit","IconTrashX","handleOpenUserPermissionsModal","IconShieldCheckered","handleAddGroupExecute","GroupDto","handleGroupEditRow","handleGroupRemoveRow","handleGroupViewRow","buildGroupRowActions","handleOpenGroupPermissionsModal","validationContext","useValidationErrors","handleSaveUserModal","handleCancelUserModal","handleSaveGroupModal","handleCancelGroupModal","handleSaveProfileModal","handleCancelProfileModal","handleAddProfileExecute","profile","ProfileDto","handleProfileEditRow","handleProfileRemoveRow","handleProfileViewRow","buildProfileRowActions","handleOpenProfilePermissionsModal","handleAccessTokenRevokeRow","currentAccessToken","processDetailErrorMessage","handleClosePermissionsModal","renderUsersToolbarActions","IconPlus","renderGroupsToolbarActions","renderProfilesToolbarActions","renderAccessTokensToolbarActions","Tabs","ArchbaseDataGrid","ArchbaseApiTokenView","templateStore","apiTokenApi","gridRef","getRowId","useArchbaseDataSource","localDataSourceV1V2","dsApiTokens","isLoading","remoteDataSourceV1V2","heightTab","columns","today","expDate","diffTime","diffDays","percentage","color","tooltipText","RingProgress","handleCreateApiTokenExecute","ApiTokenDto","handleApiTokenRevokeRow","handleCloseApiTokenModal","handleSaveApiToken","callback","apiToken","response","ex","renderToolbarActions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAWA,MAAIA,IAAqB,OAAO,IAAI,4BAA4B,GAC9DC,IAAsB,OAAO,IAAI,gBAAgB;AACnD,WAASC,EAAQC,GAAMC,GAAQC,GAAU;AACvC,QAAIC,IAAM;AAGV,QAFWD,MAAX,WAAwBC,IAAM,KAAKD,IACxBD,EAAO,QAAlB,WAA0BE,IAAM,KAAKF,EAAO,MACxC,SAASA,GAAQ;AACnB,MAAAC,IAAW,CAAA;AACX,eAASE,KAAYH;AACnB,QAAUG,MAAV,UAAuBF,EAASE,CAAQ,IAAIH,EAAOG,CAAQ;AAAA,IACjE;AAAS,MAAAF,IAAWD;AAClB,WAAAA,IAASC,EAAS,KACX;AAAA,MACL,UAAUL;AAAA,MACV,MAAMG;AAAA,MACN,KAAKG;AAAA,MACL,KAAgBF,MAAX,SAAoBA,IAAS;AAAA,MAClC,OAAOC;AAAA;EAEX;AACA,SAAAG,GAAA,WAAmBP,GACnBO,GAAA,MAAcN,GACdM,GAAA,OAAeN;;;;wBC9BbO,GAAA,UAAiBC,GAAA;;;ACuBZ,MAAMC,KAAe,CAACC,MAA6B;AACxD,QAAMC,IAAU,EAAC,GAAID,EAAM,WAAW,CAAA,EAAC,GAEjCE,IAAa,MAAM;AACvB,IAAIF,EAAM,eACRA,EAAM,aAAaA,EAAM,WAAW,iBAAA,GAAqB,CAACG,MAAqB;AAC7E,MAAIA,KAAWH,EAAM,eACnBA,EAAM,YAAYA,EAAM,WAAW,iBAAA,CAAmB,GAExDA,EAAM,UAAUA,EAAM,WAAW,iBAAA,GAAqBG,CAAO;AAAA,IAC/D,CAAC,IAEDH,EAAM,UAAUA,EAAM,WAAW,iBAAA,GAAqB,EAAI;AAAA,EAE9D,GAEMI,IAAe,MAAM;AACzB,IAAAJ,EAAM,cAAcA,EAAM,WAAW,iBAAA,CAAmB;AAAA,EAC1D;AAEA,SACEK,gBAAAA,EAAAA;AAAAA,IAACC;AAAA,IAAA;AAAA,MACC,QAAQN,EAAM;AAAA,MACd,SAASI;AAAA,MACT,OAAOG,EAAA,EAAqB,EAAE,iBAAiB;AAAA,MAC/C,MAAK;AAAA,MACL,QAAQ,EAAC,SAAS,EAAC,UAAU,MAAI;AAAA,MAEjC,UAAAF,gBAAAA,EAAAA,IAACG,IAAA,EAAW,OAAO,EAAE,QAAQ,WAC3B,UAAAC,gBAAAA,EAAAA,KAACC,IAAA,EAAM,GAAG,OACP,UAAA;AAAA,QAAAT,GAAS,uBAAuBA,EAAQ,oBAAoBD,EAAM,WAAW,kBAAmB;AAAA,+BAChGW,GAAA,EACC,UAAA;AAAA,UAAAN,gBAAAA,EAAAA,IAACM,EAAK,KAAL,EAAS,MAAM,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAA,GACtC,UAAAN,gBAAAA,EAAAA;AAAAA,YAACO;AAAA,YAAA;AAAA,cACC,OAAO,GAAGL,EAAA,EAAqB,EAAE,yBAAyB,CAAC;AAAA,cAC3D,aAAa,GAAGA,EAAA,EAAqB,EAAE,mCAAmC,CAAC;AAAA,cAC3E,YAAYP,EAAM;AAAA,cAClB,WAAU;AAAA,YAAA;AAAA,UAAA,GAEd;AAAA,UACAK,gBAAAA,EAAAA,IAACM,EAAK,KAAL,EAAS,MAAM,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAA,GACtC,UAAAN,gBAAAA,EAAAA;AAAAA,YAACO;AAAA,YAAA;AAAA,cACC,OAAO,GAAGL,EAAA,EAAqB,EAAE,8BAA8B,CAAC;AAAA,cAChE,aAAa,GAAGA,EAAA,EAAqB,EAAE,wCAAwC,CAAC;AAAA,cAChF,YAAYP,EAAM;AAAA,cAClB,WAAU;AAAA,YAAA;AAAA,UAAA,EACZ,CACF;AAAA,QAAA,GACF;AAAA,QACCC,GAAS,sBAAsBA,EAAQ,mBAAmBD,EAAM,WAAW,kBAAmB;AAAA,QAE/FS,gBAAAA,EAAAA,KAACI,GAAA,EAAM,SAAQ,YAAW,IAAG,MAC3B,UAAA;AAAA,UAAAR,gBAAAA,EAAAA,IAACS,GAAA,EAAO,SAAQ,WAAU,SAASV,GAChC,UAAAG,EAAA,EAAqB,EAAE,mBAAmB,EAAA,CAC7C;AAAA,UACAF,gBAAAA,MAACS,KAAO,SAASZ,GACd,cAAqB,EAAE,iBAAiB,EAAA,CAC3C;AAAA,QAAA,EAAA,CACF;AAAA,MAAA,EAAA,CACF,EAAA,CACF;AAAA,IAAA;AAAA,EAAA;AAGN;ACnDO,SAASa,GAA+B;AAAA,EAC7C,kBAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,qBAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,+BAAAC;AAAA,EACA,OAAAC,IAAQ;AAAA,EACR,QAAAC,IAAS;AAAA,EACT,gBAAAC,IAAiB;AAAA,EACjB,eAAAC,IAAgB;AAClB,GAAwC;AAEhB,EAAAC;AAAA,IACpB;AAAA,IACAX;AAAA,IACA;AAAA,IACA,CAAA;AAAA,EAAC;AAGH,QAAMY,IAAeD;AAAA,IACnB;AAAA,IACAV;AAAA,IACA;AAAA,IACA,CAAA;AAAA,EAAC,GAGG,CAACY,GAAgBC,CAAiB,IAAIC,EAAc,CAAA,CAAE,GACtD,CAACC,GAAeC,CAAgB,IAAIF,EAAc,CAAA,CAAE,GACpD,CAACG,GAAmBC,EAAoB,IAAIJ,EAAmB,CAAA,CAAE,GACjE,CAACK,GAAkBC,CAAmB,IAAIN,EAAmB,CAAA,CAAE,GAG/DO,IAAgBC,GAAY,MAAM;AACtC,IAAIvB,KACFc,EAAkBd,EAAiB,eAAe,GAEhDC,KACFgB,EAAiBhB,EAAgB,eAAe;AAAA,EAEpD,GAAG,CAACD,GAAkBC,CAAe,CAAC;AAGtC,EAAAuB,GAAsC;AAAA,IACpC,YAAYxB;AAAA,IACZ,UAAU,MAAMsB,EAAA;AAAA,EAAc,CAC/B,GAEDE,GAAsC;AAAA,IACpC,YAAYvB;AAAA,IACZ,UAAU,MAAMqB,EAAA;AAAA,EAAc,CAC/B,GAEDG,GAAU,MAAM;AACd,IAAAH,EAAA;AAAA,EACF,GAAG,CAACA,CAAa,CAAC;AAElB,QAAMI,IAAY,CAACC,GAAWC,MAC5B,OAAOA,KAAU,aAAaA,EAAMD,CAAI,IAAIA,EAAKC,CAAK,GAElDC,IAAe,CAACF,GAAWC,MAC/B,OAAOA,KAAU,aAAaA,EAAMD,CAAI,IAAIA,EAAKC,CAAK,GAElDE,IAAe,CAACC,GAAuDC,MAAe;AAC1F,IAAAD,EAAM,CAACE,MAAUA,EAAK,SAASD,CAAE,IAAIC,EAAK,OAAO,CAACN,OAASA,OAASK,CAAE,IAAI,CAAC,GAAGC,GAAMD,CAAE,CAAE;AAAA,EAC1F,GAEME,IAAY,MAAM;AACtB,IAAAhB,EAAkB,QAAQ,CAACc,MAAO;AAChC,YAAMG,IAAetB,EAAe,KAAK,CAACc,MAASD,EAAUC,GAAMzB,CAAgB,MAAM8B,CAAE;AAC3F,UAAIG,GAAc;AAChB,cAAMC,IAAU9B,EAA8B6B,CAAY;AAG1D,QAAIvB,EAAa,kBAEfX,EAAgB,OAAOmC,CAAO,GAC9BnC,EAAgB,KAAA,MAGhBA,EAAgB,OAAOmC,CAAO,GAC9BnC,EAAgB,KAAA,GAChBW,EAAa,QAAQ,YAAA;AAAA,MAEzB;AAAA,IACF,CAAC,GACDO,GAAqB,CAAA,CAAE;AAAA,EACzB,GAEMkB,IAAe,MAAM;AACzB,IAAAjB,EAAiB,QAAQ,CAACY,MAAO;AAC/B,YAAMM,IAAStB,EAAc,KAAK,CAACW,MAASD,EAAUC,GAAMvB,CAAe,MAAM4B,CAAE;AACnF,UAAIM,GAAQ;AAEV,cAAMC,IACJ,OAAOnC,KAAoB,aACvB,EAAE,UAAUA,EAAgBkC,CAAM,EAAA,IAClC,EAAE,CAAClC,CAAe,GAAG4B,EAAA;AAG3B,QAAIpB,EAAa,iBAEfX,EAAgB,OAAO,MAAMA,EAAgB,OAAOsC,CAAQ,CAAC,KAG7DtC,EAAgB,OAAO,MAAMA,EAAgB,OAAOsC,CAAQ,CAAC,GAC7D3B,EAAa,QAAQ,YAAA;AAAA,MAEzB;AAAA,IACF,CAAC,GACDS,EAAoB,CAAA,CAAE;AAAA,EACxB;AAEA,SACE5B,gBAAAA,OAAC+C,GAAA,EAAM,YAAU,IAAC,OAAO,EAAE,SAAS,QAAQ,OAAAjC,GAAO,QAAAC,EAAA,GACjD,UAAA;AAAA,IAAAf,gBAAAA,OAACgD,MAAI,OAAO,EAAE,UAAU,OAAO,WAAWjC,KACxC,UAAA;AAAA,MAAAnB,gBAAAA,EAAAA,IAACqD,KAAM,UAAAjC,EAAA,CAAe;AAAA,MACtBpB,gBAAAA,EAAAA;AAAAA,QAACsD;AAAA,QAAA;AAAA,UACC,SAAQ;AAAA,UACR,MAAK;AAAA,UACL,QAAM;AAAA,UACN,eAAc;AAAA,UACd,OAAO;AAAA,YACL,QAAQ;AAAA,YACR,WAAW;AAAA,YACX,WAAW;AAAA,YACX,QAAQ;AAAA,UAAA;AAAA,UAGT,YAAe,IAAI,CAAChB,MACnBtC,gBAAAA,EAAAA,IAACsD,GAAK,MAAL,EACC,UAAAtD,gBAAAA,EAAAA;AAAAA,YAACuD;AAAA,YAAA;AAAA,cACC,OAAOf,EAAaF,GAAMxB,CAAmB;AAAA,cAC7C,SAASe,EAAkB,SAASQ,EAAUC,GAAMzB,CAAgB,CAAC;AAAA,cACrE,UAAU,MACR4B,EAAaX,IAAsBO,EAAUC,GAAMzB,CAAgB,CAAC;AAAA,cAEtE,UAAUc,EAAc;AAAA,gBACtB,CAAC6B,MAAMnB,EAAUmB,GAAGzC,CAAe,MAAMsB,EAAUC,GAAMzB,CAAgB;AAAA,cAAA;AAAA,YAC3E;AAAA,UAAA,EACF,GAVcwB,EAAUC,GAAMzB,CAAgB,CAWhD,CACD;AAAA,QAAA;AAAA,MAAA;AAAA,IACH,GACF;AAAA,IACAT,gBAAAA,EAAAA,KAACC,IAAA,EAAM,KAAK,GAAG,OAAO,EAAE,UAAU,MAAA,GAAS,SAAQ,UAAS,OAAM,UAChE,UAAA;AAAA,MAAAL,gBAAAA,MAACyD,IAAA,EAAQ,OAAM,aACb,UAAAzD,gBAAAA,EAAAA,IAAC0D,KAAW,SAASb,GAAW,UAAU,CAAChB,EAAkB,QAC3D,UAAA7B,gBAAAA,EAAAA,IAAC2D,IAAA,CAAA,CAAe,GAClB,GACF;AAAA,MACA3D,gBAAAA,MAACyD,IAAA,EAAQ,OAAM,WACb,gCAACC,GAAA,EAAW,SAASV,GAAc,UAAU,CAACjB,EAAiB,QAC7D,UAAA/B,gBAAAA,EAAAA,IAAC4D,IAAA,EAAc,GACjB,EAAA,CACF;AAAA,IAAA,GACF;AAAA,IACAxD,gBAAAA,OAACgD,MAAI,OAAO,EAAE,UAAU,OAAO,WAAWjC,KACxC,UAAA;AAAA,MAAAnB,gBAAAA,EAAAA,IAACqD,KAAM,UAAAhC,EAAA,CAAc;AAAA,MACrBrB,gBAAAA,EAAAA;AAAAA,QAACsD;AAAA,QAAA;AAAA,UACC,SAAQ;AAAA,UACR,MAAK;AAAA,UACL,QAAM;AAAA,UACN,eAAc;AAAA,UACd,OAAO;AAAA,YACL,QAAQ;AAAA,YACR,WAAW;AAAA,YACX,WAAW;AAAA,YACX,QAAQ;AAAA,UAAA;AAAA,UAGT,YAAc,IAAI,CAAChB,MAClBtC,gBAAAA,EAAAA,IAACsD,GAAK,MAAL,EACC,UAAAtD,gBAAAA,EAAAA;AAAAA,YAACuD;AAAA,YAAA;AAAA,cACC,OAAOf,EAAaF,GAAMtB,CAAkB;AAAA,cAC5C,SAASe,EAAiB,SAASM,EAAUC,GAAMvB,CAAe,CAAC;AAAA,cACnE,UAAU,MAAM0B,EAAaT,GAAqBK,EAAUC,GAAMvB,CAAe,CAAC;AAAA,YAAA;AAAA,UAAA,EACpF,GALcsB,EAAUC,GAAMvB,CAAe,CAM/C,CACD;AAAA,QAAA;AAAA,MAAA;AAAA,IACH,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;AC/MO,MAAM8C,KAAwBC;AAAA,EACnC,CAAC,EAAE,OAAAC,GAAO,OAAAC,GAAO,aAAAC,GAAa,QAAAC,GAAQ,GAAGC,EAAA,GAAsCC,4BAC5E,OAAA,EAAI,KAAAA,GAAW,GAAGD,GACjB,iCAACE,IAAA,EACC,UAAA;AAAA,IAAArE,gBAAAA,EAAAA,IAACqD,GAAA,EAAK,MAAK,MAAK,IAAI,KACjB,UAAAa,IAASA,EAAO,OAAK,GAAA,CACxB;AAAA,IACAlE,gBAAAA,EAAAA,IAACsE,IAAA,EAAM,GAAE,KAAA,CAAK;AAAA,EAAA,EAAA,CAChB,EAAA,CACF;AAEJ,GCmCaC,KAA4C;AAAA;AAAA,EAEvD,cAAc;AAAA;AAAA,EAGd,aAAa;AAAA,EACb,YAAY;AAAA;AAAA,EAGZ,+BAA+B;AAAA,EAC/B,yBAAyB;AAAA,EACzB,0BAA0B;AAAA,EAC1B,uBAAuB;AAAA;AAAA,EAGvB,wBAAwB;AAAA,EACxB,wBAAwB;AAAA,EACxB,mBAAmB;AAAA,EACnB,qBAAqB;AAAA;AAAA,EAGrB,kBAAkB;AAAA,EAElB,iBAAiB;AAAA,EACjB,oBAAoB;AAAA,EACpB,uBAAuB;AAAA,EAEvB,gBAAgB;AAClB,GAYaC,KAAY,CAAC7E,MAA0B;AAClD,QAAM,CAAC8E,GAAeC,CAAgB,IAAIhD,EAAS,EAAE,GAC/C9B,IAAU,EAAE,GAAG2E,IAAyB,GAAI5E,EAAM,WAAW,GAAC,GAG9DgF,IAAuBhF,EAAM,WAAW,cAAc,mBAAmB,GACzEiF,IAA0BD,IAAuB,IAAI,KAAKA,CAAoB,IAAI,QAClFE,IACJD,KAA2B,CAAC,OAAO,MAAMA,EAAwB,SAAS,IACtEA,EAAwB,eAAA,IACxB,QAEAE,IAAWC,GAAkDC,EAAsB,KAAK,GACxF,EAAE,YAAYC,EAAA,IAAaC,GAA8C;AAAA,IAC7E,MAAM;AAAA,IACN,SAASJ;AAAA,IACT,UAAU;AAAA,IACV,aAAa;AAAA,IACb,MAAM,CAAC,UAAU;AAAA,IACjB,SAAS,CAACK,GAAOjB,MAAW;AAC1B,MAAAkB,EAAsB,UAAUlF,EAAA,EAAqB,EAAE,kBAAkB,GAAGiF,GAAOjB,CAAM;AAAA,IAC3F;AAAA,EAAA,CACD;AACD,UAAQ,IAAI,mBAAmB;AAE/B,QAAMmB,IAAaN,GAAoDC,EAAsB,OAAO,GAC9F,EAAE,YAAYM,EAAA,IAAeJ,GAAgD;AAAA,IACjF,MAAM;AAAA,IACN,SAASG;AAAA,IACT,UAAU;AAAA,IACV,aAAa;AAAA,IACb,MAAM,CAAC,UAAU;AAAA,IACjB,SAAS,CAACF,GAAOjB,MAAW;AAC1B,MAAAkB,EAAsB,UAAUlF,EAAA,EAAqB,EAAE,kBAAkB,GAAGiF,GAAOjB,CAAM;AAAA,IAC3F;AAAA,EAAA,CACD;AAED,EAAA9B,GAAU,MAAM;AACd,IAAAsC,EAAiB,EAAE;AAAA,EACrB,GAAG,CAAC/E,EAAM,WAAW,cAAc,UAAU,CAAC,CAAC;AAE/C,QAAM4F,IAAmB,YAAY;AACnC,QAAK5F,EAAM,WAAW,YAAA,GAEtB;AAAA,UAAIC,EAAQ,oBAAoB;AAC9B,cAAM4F,IAASC,GAAKC,GAAQ,GAAG,QAAQ9F,EAAQ,kBAAkB,CAAC,GAC5D+F,IAAS,MAAMN,EAAW,kBAAkBG,GAAQ,GAAG,CAAC;AAC9D,QAAIG,KAAUA,EAAO,QAAQ,SAAS,KACpChG,EAAM,WAAW,cAAc,WAAWgG,EAAO,QAAQ,CAAC,CAAC;AAAA,MAE/D;AACA,UAAI/F,EAAQ,mBAAmB;AAC7B,cAAM4F,IAASC,GAAKC,GAAQ,GAAG,QAAQ9F,EAAQ,iBAAiB,CAAC,GAC3D+F,IAAS,MAAMb,EAAS,kBAAkBU,GAAQ,GAAG,GAAG;AAC9D,QAAIG,KAAUA,EAAO,QAAQ,SAAS,KACpChG,EAAM,WAAW,cAAc,UAAUgG,EAAO,QAAQ,IAAI,CAAAC,MAASC,GAAa,YAAYD,CAAK,CAAC,CAAC;AAAA,MAEzG;AAAA;AAAA,EACF;AAEA,EAAAxD,GAAU,MAAM;AACd,IAAIzC,EAAM,UACR4F,EAAA;AAAA,EAEJ,GAAG,CAAC5F,EAAM,MAAM,CAAC;AAEjB,QAAME,IAAa,MAAM;AACvB,UAAMiG,IAAgBnG,EAAM,WAAW,iBAAA;AACvC,QAAI,CAACmG,EAAc,YAAYnG,EAAM,WAAW,eAAe;AAC7D,MAAA+E,EAAiBxE,EAAA,EAAqB,EAAE,0BAA0B,CAAC;AACnE;AAAA,IACF;AAEA,IAAIP,EAAM,eACRA,EAAM,aAAamG,GAAe,CAAChG,MAAqB;AACtD,MAAIA,KAAWH,EAAM,eACnBA,EAAM,YAAYmG,CAAa,GAEjCnG,EAAM,UAAUmG,GAAehG,CAAO;AAAA,IACxC,CAAC,IAEDH,EAAM,UAAUmG,GAAe,EAAI;AAAA,EAEvC,GAEM/F,IAAe,MAAM;AACzB,IAAAJ,EAAM,cAAcA,EAAM,WAAW,iBAAA,CAAmB;AAAA,EAC1D;AAEA,SACES,gBAAAA,EAAAA;AAAAA,IAACH;AAAA,IAAA;AAAA,MACC,QAAQN,EAAM;AAAA,MACd,SAASI;AAAA,MACT,OAAOG,EAAA,EAAqB,EAAE,kBAAkB;AAAA,MAChD,MAAK;AAAA,MACL,QAAQ,EAAE,SAAS,EAAE,UAAU,MAAK;AAAA,MAEpC,UAAA;AAAA,QAAAF,gBAAAA,EAAAA,IAACG,IAAA,EAAW,OAAO,EAAE,QAAQ,WAC3B,UAAAC,gBAAAA,EAAAA,KAACC,IAAA,EAAM,GAAG,OACP,UAAA;AAAA,UAAAT,GAAS,2DAEL,UAAAA,EAAQ,oBAAoBD,EAAM,WAAW,iBAAA,CAAmB,EAAA,CACnE;AAAA,iCAEDW,GAAA,EACC,UAAA;AAAA,YAAAN,gBAAAA,EAAAA,IAACM,EAAK,KAAL,EAAS,MAAM,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,KACrC,iCAACE,GAAA,EACC,UAAA;AAAA,cAAAR,gBAAAA,EAAAA;AAAAA,gBAACO;AAAA,gBAAA;AAAA,kBACC,OAAO,GAAGL,EAAA,EAAqB,EAAE,wBAAwB,CAAC;AAAA,kBAC1D,aAAa,GAAGA,EAAA,EAAqB,EAAE,6CAA6C,CAAC;AAAA,kBACrF,YAAYP,EAAM;AAAA,kBAClB,WAAU;AAAA,kBACV,UAAQ;AAAA,kBACR,OAAO;AAAA,gBAAA;AAAA,cAAA;AAAA,cAERC,EAAQ,gBACPI,gBAAAA,EAAAA;AAAAA,gBAACO;AAAA,gBAAA;AAAA,kBACC,OAAO,GAAGL,EAAA,EAAqB,EAAE,kBAAkB,CAAC;AAAA,kBACpD,aAAa,GAAGA,EAAA,EAAqB,EAAE,kBAAkB,CAAC;AAAA,kBAC1D,YAAYP,EAAM;AAAA,kBAClB,WAAU;AAAA,kBACV,UAAUC,EAAQ;AAAA,gBAAA;AAAA,cAAA;AAAA,YACpB,EAAA,CAEJ,EAAA,CACF;AAAA,YACAI,gBAAAA,EAAAA,IAACM,EAAK,KAAL,EAAS,MAAM,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,EAAA,GACrC,UAAAN,gBAAAA,EAAAA;AAAAA,cAACO;AAAA,cAAA;AAAA,gBACC,OAAO,GAAGL,EAAA,EAAqB,EAAE,+BAA+B,CAAC;AAAA,gBACjE,aAAa,GAAGA,EAAA,EAAqB,EAAE,yCAAyC,CAAC;AAAA,gBACjF,YAAYP,EAAM;AAAA,gBAClB,WAAU;AAAA,gBACV,UAAQ;AAAA,cAAA;AAAA,YAAA,EACV,CACF;AAAA,UAAA,GACF;AAAA,iCACCW,GAAA,EACC,UAAA;AAAA,YAAAN,gBAAAA,EAAAA,IAACM,EAAK,KAAL,EAAS,MAAM,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,EAAA,GACrC,UAAAN,gBAAAA,EAAAA;AAAAA,cAACO;AAAA,cAAA;AAAA,gBACC,OAAO,GAAGL,EAAA,EAAqB,EAAE,iBAAiB,CAAC;AAAA,gBACnD,aAAa,GAAGA,EAAA,EAAqB,EAAE,sCAAsC,CAAC;AAAA,gBAC9E,YAAYP,EAAM;AAAA,gBAClB,eAAe,CAACoG,MAAUpG,EAAM,WAAW,cAAc,YAAYoG,CAAK;AAAA,gBAC1E,WAAU;AAAA,gBACV,UAAUpG,EAAM,WAAW,cAAc,CAACC,EAAQ,iBAAiB;AAAA,gBACnE,UAAQ;AAAA,cAAA;AAAA,YAAA,GAEZ;AAAA,YACAI,gBAAAA,EAAAA,IAACM,EAAK,KAAL,EAAS,MAAM,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,EAAA,GACrC,UAAAN,gBAAAA,EAAAA;AAAAA,cAACgG;AAAA,cAAA;AAAA,gBACC,OAAO,GAAG9F,EAAA,EAAqB,EAAE,wBAAwB,CAAC;AAAA,gBAC1D,YAAYP,EAAM;AAAA,gBAClB,WAAU;AAAA,gBACV,OAAO8E;AAAA,gBACP,UAAU9E,EAAM,WAAW,cAAc,WAAW;AAAA,cAAA;AAAA,YAAA,EACtD,CACF;AAAA,UAAA,GACF;AAAA,gCACCW,GAAA,EACE,UAAAV,EAAQ,eACPI,gBAAAA,EAAAA,IAACM,EAAK,KAAL,EAAS,MAAM,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,KACrC,UAAAN,gBAAAA,EAAAA;AAAAA,YAACiG;AAAA,YAAA;AAAA,cACC,OAAO,GAAG/F,EAAA,EAAqB,EAAE,4BAA4B,CAAC;AAAA,cAC9D,YAAYP,EAAM;AAAA,cAClB,WAAU;AAAA,cACV,SAAS2F;AAAA,cACT,eAAe;AAAA,cACf,mBAAkB;AAAA,cAClB,eAAezB;AAAA,cACf,gBAAgB,CAACqC,MAAuBA,EAAO;AAAA,cAC/C,gBAAgB,CAACA,MAAuBA,EAAO;AAAA,YAAA;AAAA,UAAA,GAEnD,EAAA,CAEJ;AAAA,iCAEC5F,GAAA,EACC,UAAA;AAAA,YAAAN,gBAAAA,MAACM,EAAK,KAAL,EAAS,MAAM,EAAE,MAAM,GAAA,GACrB,UAAAV,EAAQ,gDAA4ByD,GAAA,EAAK,IAAI,IAAI,IAAI,KAAK,qBAAO,GACpE;AAAA,kCACC/C,EAAK,KAAL,EAAS,MAAM,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,EAAA,GACrC,UAAAF,gBAAAA,EAAAA,KAACC,IAAA,EAAM,KAAK,MACT,UAAA;AAAA,cAAAT,EAAQ,iCACPI,gBAAAA,EAAAA,IAACmG,GAAM,SAAN,EAAc,OAAM,IACnB,UAAAnG,gBAAAA,EAAAA;AAAAA,gBAACoG;AAAA,gBAAA;AAAA,kBACC,YAAYzG,EAAM;AAAA,kBAClB,WAAU;AAAA,kBACV,OAAO,GAAGO,EAAA,EAAqB,EAAE,6CAA6C,CAAC;AAAA,gBAAA;AAAA,cAAA,GAEnF;AAAA,cAEDN,EAAQ,2BACPI,gBAAAA,EAAAA,IAACmG,GAAM,SAAN,EAAc,OAAM,IACnB,UAAAnG,gBAAAA,EAAAA;AAAAA,gBAACoG;AAAA,gBAAA;AAAA,kBACC,YAAYzG,EAAM;AAAA,kBAClB,WAAU;AAAA,kBACV,OAAO,GAAGO,EAAA,EAAqB,EAAE,iCAAiC,CAAC;AAAA,gBAAA;AAAA,cAAA,GAEvE;AAAA,cAEDN,EAAQ,4BACPQ,gBAAAA,EAAAA,KAAC+F,GAAM,SAAN,EAAc,OAAM,IACnB,UAAA;AAAA,gBAAAnG,gBAAAA,EAAAA;AAAAA,kBAACoG;AAAA,kBAAA;AAAA,oBACC,YAAYzG,EAAM;AAAA,oBAClB,WAAU;AAAA,oBACV,OAAO,GAAGO,EAAA,EAAqB,EAAE,+BAA+B,CAAC;AAAA,kBAAA;AAAA,gBAAA;AAAA,sCAElEmD,GAAA,EAAK,IAAI,IAAI,GAAE,UACb,cAAqB;AAAA,kBACpB;AAAA,gBAAA,EACF,CACF;AAAA,cAAA,GACF;AAAA,cAEDzD,EAAQ,yBAAyBiF,KAChC7E,gBAAAA,EAAAA,IAACqD,GAAA,EAAK,IAAI,IAAI,GAAE,UACb,UAAA,GAAGnD,IAAqB,EAAE,gCAAgC,CAAC,KAAK2E,CAAiB,GAAA,CACpF;AAAA,YAAA,EAAA,CAEJ,EAAA,CACF;AAAA,kCACCvE,EAAK,KAAL,EAAS,MAAM,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,EAAA,GACrC,UAAAF,gBAAAA,EAAAA,KAACC,IAAA,EAAM,KAAI,MACR,UAAA;AAAA,cAAAT,EAAQ,0BACPI,gBAAAA,EAAAA,IAACmG,GAAM,SAAN,EAAc,OAAM,IACnB,UAAAnG,gBAAAA,EAAAA;AAAAA,gBAACoG;AAAA,gBAAA;AAAA,kBACC,YAAYzG,EAAM;AAAA,kBAClB,WAAU;AAAA,kBACV,OAAO,GAAGO,EAAA,EAAqB,EAAE,6BAA6B,CAAC;AAAA,gBAAA;AAAA,cAAA,GAEnE;AAAA,cAEDN,EAAQ,qBACPI,gBAAAA,EAAAA,IAACmG,GAAM,SAAN,EAAc,OAAM,IACnB,UAAAnG,gBAAAA,EAAAA;AAAAA,gBAACoG;AAAA,gBAAA;AAAA,kBACC,YAAYzG,EAAM;AAAA,kBAClB,WAAU;AAAA,kBACV,OAAO,GAAGO,EAAA,EAAqB,EAAE,4BAA4B,CAAC;AAAA,gBAAA;AAAA,cAAA,GAElE;AAAA,cAEDN,EAAQ,uBACPI,gBAAAA,EAAAA,IAACmG,GAAM,SAAN,EAAc,OAAM,IACnB,UAAAnG,gBAAAA,EAAAA;AAAAA,gBAACoG;AAAA,gBAAA;AAAA,kBACC,YAAYzG,EAAM;AAAA,kBAClB,WAAU;AAAA,kBACV,OAAO,GAAGO,EAAA,EAAqB,EAAE,0BAA0B,CAAC;AAAA,gBAAA;AAAA,cAAA,EAC9D,CACF;AAAA,YAAA,EAAA,CAEJ,EAAA,CACF;AAAA,kCACCI,EAAK,KAAL,EAAS,MAAM,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,EAAA,GACrC,UAAAN,gBAAAA,MAACK,IAAA,EAAM,KAAI,MACT,UAAAL,gBAAAA,EAAAA;AAAAA,cAACqG;AAAA,cAAA;AAAA,gBACC,OAAOnG,EAAA,EAAqB,EAAE,0BAA0B;AAAA,gBACxD,YAAYP,EAAM;AAAA,gBAClB,WAAU;AAAA,gBACV,OAAO;AAAA,gBACP,QAAQ;AAAA,gBACR,WAAWC,EAAQ;AAAA,gBACnB,cAAcA,EAAQ;AAAA,gBACtB,iBAAiBA,EAAQ;AAAA,cAAA;AAAA,YAAA,GAE7B,EAAA,CACF;AAAA,UAAA,GACF;AAAA,UAECA,EAAQ,cACPQ,gBAAAA,EAAAA,KAACE,GAAA,EACC,UAAA;AAAA,YAAAN,gBAAAA,MAACM,EAAK,KAAL,EAAS,MAAM,EAAE,MAAM,GAAA,GACtB,UAAAN,gBAAAA,EAAAA,IAACqD,KAAK,IAAI,IAAI,IAAI,KAAK,oBAAM,GAC/B;AAAA,YACArD,gBAAAA,MAACM,EAAK,KAAL,EAAS,MAAM,EAAE,MAAM,MACtB,UAAAN,gBAAAA,EAAAA;AAAAA,cAACU;AAAA,cAAA;AAAA,gBACC,gBAAgBR,EAAA,EAAqB,EAAE,sBAAsB;AAAA,gBAC7D,eAAeA,EAAA,EAAqB,EAAE,uBAAuB;AAAA,gBAC7D,iBACE,IAAIoG,GAAmB,cAAc;AAAA,kBACnC,SAAS3G,EAAM,WAAW,cAAc,QAAQ;AAAA,kBAChD,mBAAmBA,EAAM,WAAW,cAAc,QAAQ,EAAE;AAAA,kBAC5D,aAAa;AAAA,kBACb,YAAY;AAAA,kBACZ,UAAU;AAAA,gBAAA,CACX;AAAA,gBAEH,OAAM;AAAA,gBACN,QAAO;AAAA,gBACP,kBAAkBsF;AAAA,gBAClB,+BAA+B,CAACW,MACvBC,GAAa,YAAYD,CAAK;AAAA,gBAEvC,iBAAiB,CAACtD,MAAwBA,KAAQA,EAAK,QAAQA,EAAK,MAAM,KAAK;AAAA,gBAC/E,kBAAkB;AAAA,gBAClB,oBAAoB,CAACA,MAAwBA,KAAQA,EAAK,QAAQA,EAAK,MAAM,OAAO;AAAA,gBACpF,qBAAqB;AAAA,cAAA;AAAA,YAAA,EACvB,CACF;AAAA,UAAA,GACF;AAAA,UAED1C,GAAS,sBACRI,gBAAAA,MAAAuG,EAAAA,UAAA,EACG,UAAA3G,EAAQ,mBAAmBD,EAAM,WAAW,iBAAA,CAAmB,EAAA,CAClE;AAAA,UAEFK,gBAAAA,EAAAA,IAACsE,IAAA,EAAM,GAAG,OAAA,CAAQ;AAAA,QAAA,EAAA,CACpB,EAAA,CACF;AAAA,QAEAlE,gBAAAA,EAAAA,KAACI,GAAA,EAAM,SAAQ,YAAW,IAAG,MAC3B,UAAA;AAAA,UAAAR,gBAAAA,EAAAA,IAACS,GAAA,EAAO,SAAQ,WAAU,SAASV,GAChC,UAAAG,EAAA,EAAqB,EAAE,mBAAmB,EAAA,CAC7C;AAAA,UACAF,gBAAAA,MAACS,KAAO,SAASZ,GACd,cAAqB,EAAE,iBAAiB,EAAA,CAC3C;AAAA,QAAA,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN,GC3Ya2G,KAAa,CAAC7G,MAA2B;AACpD,QAAMC,IAAU,EAAC,GAAID,EAAM,WAAW,CAAA,EAAC,GAEjCE,IAAa,MAAM;AACvB,IAAIF,EAAM,eACRA,EAAM,aAAaA,EAAM,WAAW,iBAAA,GAAqB,CAACG,MAAqB;AAC7E,MAAIA,KAAWH,EAAM,eACnBA,EAAM,YAAYA,EAAM,WAAW,iBAAA,CAAmB,GAExDA,EAAM,UAAUA,EAAM,WAAW,iBAAA,GAAqBG,CAAO;AAAA,IAC/D,CAAC,IAEDH,EAAM,UAAUA,EAAM,WAAW,iBAAA,GAAqB,EAAI;AAAA,EAE9D,GAEMI,IAAe,MAAM;AACzB,IAAAJ,EAAM,cAAcA,EAAM,WAAW,iBAAA,CAAmB;AAAA,EAC1D;AAEA,SACEK,gBAAAA,EAAAA;AAAAA,IAACC;AAAA,IAAA;AAAA,MACC,QAAQN,EAAM;AAAA,MACd,SAASI;AAAA,MACT,OAAOG,EAAA,EAAqB,EAAE,gBAAgB;AAAA,MAC9C,MAAK;AAAA,MACL,QAAQ,EAAC,SAAS,EAAC,UAAU,MAAI;AAAA,MAEjC,UAAAF,gBAAAA,EAAAA,IAACG,IAAA,EAAW,OAAO,EAAE,QAAQ,WAC3B,UAAAC,gBAAAA,EAAAA,KAACC,IAAA,EAAM,GAAG,OACP,UAAA;AAAA,QAAAT,GAAS,uBAAuBA,EAAQ,oBAAoBD,EAAM,WAAW,kBAAmB;AAAA,+BAChGW,GAAA,EACC,UAAA;AAAA,UAAAN,gBAAAA,MAACM,EAAK,KAAL,EAAS,MAAM,EAAE,MAAM,MACtB,UAAAN,gBAAAA,EAAAA;AAAAA,YAACO;AAAA,YAAA;AAAA,cACC,OAAO,GAAGL,EAAA,EAAqB,EAAE,wBAAwB,CAAC;AAAA,cAC1D,aAAa,GAAGA,EAAA,EAAqB,EAAE,kCAAkC,CAAC;AAAA,cAC1E,YAAYP,EAAM;AAAA,cAClB,WAAU;AAAA,YAAA;AAAA,UAAA,GAEd;AAAA,UACAK,gBAAAA,MAACM,EAAK,KAAL,EAAS,MAAM,EAAE,MAAM,MACtB,UAAAN,gBAAAA,EAAAA;AAAAA,YAACO;AAAA,YAAA;AAAA,cACC,OAAO,GAAGL,EAAA,EAAqB,EAAE,6BAA6B,CAAC;AAAA,cAC/D,aAAa,GAAGA,EAAA,EAAqB,EAAE,uCAAuC,CAAC;AAAA,cAC/E,YAAYP,EAAM;AAAA,cAClB,WAAU;AAAA,YAAA;AAAA,UAAA,EACZ,CACF;AAAA,QAAA,GACF;AAAA,QACCC,GAAS,sBAAsBA,EAAQ,mBAAmBD,EAAM,WAAW,kBAAmB;AAAA,QAE/FS,gBAAAA,EAAAA,KAACI,GAAA,EAAM,SAAQ,YAAW,IAAG,MAC3B,UAAA;AAAA,UAAAR,gBAAAA,EAAAA,IAACS,GAAA,EAAO,SAAQ,WAAU,SAASV,GAChC,UAAAG,EAAA,EAAqB,EAAE,mBAAmB,EAAA,CAC7C;AAAA,UACAF,gBAAAA,MAACS,KAAO,SAASZ,GACd,cAAqB,EAAE,iBAAiB,EAAA,CAC3C;AAAA,QAAA,EAAA,CACF;AAAA,MAAA,EAAA,CACF,EAAA,CACF;AAAA,IAAA;AAAA,EAAA;AAGN,GCrEa4G,KAAiB,CAAC,EAAE,OAAA1C,GAAO,OAAAC,GAAO,aAAAC,GAAa,GAAGE,QAC9DnE,gBAAAA,MAAC,SAAK,GAAGmE,GACR,UAAA/D,gBAAAA,EAAAA,KAACI,GAAA,EAAM,MAAI,IACV,UAAA;AAAA,EAAAR,gBAAAA,MAAC,SAAI,OAAO,EAAC,UAAS,OAAA,GAAS,KAAK+D,GAAO;AAAA,yBAC1C,OAAA,EACA,UAAA;AAAA,0BAACV,GAAA,EAAK,MAAK,MAAM,UAAAW,GAAM;AAAA,0BACtBX,GAAA,EAAK,MAAK,MAAK,SAAS,MACvB,UAAAY,EAAA,CACF;AAAA,EAAA,GACD;AAAA,EAAA,CACD,GACD,GAYYyC,KAAgB,CAAC/G,MAA8B;AACtC,EAAAgH,GAAA;AACrB,QAAM,CAACZ,GAAOa,CAAQ,IAAIlF,EAAA,GACpBmF,IAAU9B,GAAiDC,EAAsB,IAAI,GAGrF8B,IAAoBxF;AAAA,IACzB;AAAA,IACA3B,EAAM;AAAA,IACN;AAAA,IACA;AAAA,EAAA,GAQKoH,IAAe,CAAChB,MAAqB;AAC1C,QAAI,CAACA;AAEJ,MAAAe,EAAkB,kBAAkB,MAAS;AAAA,SACvC;AAEN,YAAME,IAAY,OAAOjB,KAAU,WAAW,IAAI,KAAKA,CAAK,IAAIA,GAC1DkB,IAAYC,GAAuBF,CAAS;AAElD,MAAAF,EAAkB,kBAAkBG,CAAS;AAAA,IAC9C;AACA,IAAAL,EAASb,CAAK;AAAA,EACf,GAEMoB,IAAkB,OAAOC,GAAcrB,MACrC,IAAI,QAAgC,OAAOsB,GAASC,MAAW;AACrE,QAAI;AACH,YAAM9B,IAASC,GAAKC,GAAQ,GAAGA,GAAQ,GAAG,QAAQ,KAAKK,EAAM,KAAA,CAAM,GAAG,CAAC,CAAC,GAClEJ,IAAwB,MAAMkB,EAAQ,kBAAkBrB,GAAQ4B,GAAM,EAAE;AAC9E,MAAAC,EAAQ;AAAA,QACP,SAAS1B,EAAO;AAAA,QAChB,MAAMA,EAAO,SAAU;AAAA,QACvB,YAAYA,EAAO;AAAA,MAAA,CACnB;AAAA,IACF,SAASR,GAAO;AACf,MAAAmC,EAAOC,GAAoBpC,CAAK,CAAC;AAAA,IAClC;AAAA,EACD,CAAC,GAGItF,IAAa,MAAM;AACxB,IAAIF,EAAM,eACTA,EAAM,aAAaA,EAAM,WAAW,SAAS,CAACG,MAAqB;AAClE,MAAIA,KAAWH,EAAM,eACpBA,EAAM,YAAYA,EAAM,WAAW,OAAO,GAE3CA,EAAM,UAAUA,EAAM,WAAW,SAASG,CAAO;AAAA,IAClD,CAAC,IAEDH,EAAM,UAAUA,EAAM,WAAW,SAAS,EAAI;AAAA,EAEhD,GAEMI,IAAe,MAAM;AAC1B,IAAAJ,EAAM,cAAcA,EAAM,WAAW,OAAO;AAAA,EAC7C;AAEA,SACCS,gBAAAA,EAAAA;AAAAA,IAACH;AAAA,IAAA;AAAA,MACA,QAAQN,EAAM;AAAA,MACd,SAASI;AAAA,MACT,OAAOG,EAAA,EAAqB,EAAE,uBAAuB;AAAA,MACrD,MAAK;AAAA,MAEL,UAAA;AAAA,QAAAE,gBAAAA,EAAAA,KAACD,IAAA,EAAW,OAAO,EAAE,QAAQ,QAAA,GAC5B,UAAA;AAAA,UAAAH,gBAAAA,EAAAA;AAAAA,YAACO;AAAA,YAAA;AAAA,cACA,OAAO,GAAGL,EAAA,EAAqB,EAAE,wBAAwB,CAAC;AAAA,cAC1D,aAAa,GAAGA,EAAA,EAAqB,EAAE,kCAAkC,CAAC;AAAA,cAC1E,YAAYP,EAAM;AAAA,cAClB,WAAU;AAAA,YAAA;AAAA,UAAA;AAAA,UAEXK,gBAAAA,EAAAA;AAAAA,YAACO;AAAA,YAAA;AAAA,cACA,OAAO,GAAGL,EAAA,EAAqB,EAAE,6BAA6B,CAAC;AAAA,cAC/D,aAAa,GAAGA,EAAA,EAAqB,EAAE,uCAAuC,CAAC;AAAA,cAC/E,YAAYP,EAAM;AAAA,cAClB,WAAU;AAAA,YAAA;AAAA,UAAA;AAAA,UAEXK,gBAAAA,EAAAA;AAAAA,YAACwH;AAAA,YAAA;AAAA,cACA,aAAa;AAAA,cACb,OAAAzB;AAAA,cACA,UAAUgB;AAAA,cACV,OAAM;AAAA,cACN,aAAa;AAAA,YAAA;AAAA,UAAA;AAAA,UAEd/G,gBAAAA,EAAAA;AAAAA,YAACyH;AAAA,YAAA;AAAA,cACA,OAAO,GAAGvH,EAAA,EAAqB,EAAE,kBAAkB,CAAC;AAAA,cACpD,YAAYP,EAAM;AAAA,cAClB,WAAU;AAAA,cACV,aAAa,GAAGO,EAAA,EAAqB,EAAE,wCAAwC,CAAC;AAAA,cAChF,gBAAgB,CAACgG,MAAoBA,KAAUA,EAAO,QAAQA,EAAO,QAAQ;AAAA,cAC7E,gBAAgB,CAACA,MAAoBA,KAAUA,EAAO,KAAKA,EAAO,GAAG,SAAA,IAAa;AAAA,cAClF,YAAYiB;AAAA,cACZ,cAAc;AAAA,cACd,kBAAkB;AAAA,cAClB,eAAeV;AAAA,YAAA;AAAA,UAAA;AAAA,QAChB,GACD;AAAA,+BAECjG,GAAA,EAAM,SAAQ,YAAW,IAAG,MAC5B,UAAA;AAAA,UAAAR,gBAAAA,EAAAA,IAACS,GAAA,EAAO,SAAQ,WAAU,SAASV,GACjC,UAAAG,EAAA,EAAqB,EAAE,mBAAmB,GAC5C;AAAA,UACAF,gBAAAA,MAACS,KAAO,SAASZ,GACf,cAAqB,EAAE,iBAAiB,EAAA,CAC1C;AAAA,QAAA,GACD;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGH,GChJM6H,KAA2B,CAACC,MAAgB;AAC9C,QAAMC,IAAY;AAClB,SAAID,EAAY,SAASC,CAAS,IAChBD,EAAY,MAAMC,CAAS,EAAE,IAAI,CAAAC,MAAQA,EAAK,MAAM,EAEpC,IAAI,CAAAA,MAAQ3H,IAAqB,EAAE2H,CAAI,CAAC,EAE/C,KAAK,IAAID,CAAS,GAAG,IAGzC1H,EAAA,EAAqB,EAAEyH,CAAW;AAC7C;AAQO,SAASG,GAAyB,EAAE,YAAAC,GAAY,QAAAC,GAAQ,OAAAC,KAAmC;AAE9F,QAAMC,IAAOC,GAAQ,MAAMJ,GAAY,cAAc,MAAM,KAAK,IAAI,CAACA,CAAU,CAAC,GAC1EK,IAAaD,GAAQ,MAAMJ,GAAY,cAAc,IAAI,KAAK,IAAI,CAACA,CAAU,CAAC,GAC9E7I,IAAOiJ,GAAQ,MAAMJ,GAAY,cAAc,MAAM,KAAK,IAAI,CAACA,CAAU,CAAC,GAE1EM,IAA2BC,GAAA,GAC3BC,IAAyBD,GAAA,GACzB,CAACE,GAAsBC,CAAuB,IAAI/G,EAA0C,CAAA,CAAE,GAC9F,CAACgH,GAAoBC,CAAqB,IAAIjH,EAA0C,CAAA,CAAE,GAC1F,CAACkH,GAA6BC,CAA8B,IAAInH,EAAA,GAChE,CAACoH,GAA2BC,CAA4B,IAAIrH,EAAA,GAC5D,CAACsH,GAA4BC,EAA6B,IAAIvH,EAAS,EAAE,GACzE,CAACwH,CAAmC,IAAIC,GAAkBH,GAA4B,GAAG,GACzF,CAACI,GAA0BC,CAA2B,IAAI3H,EAAS,EAAE,GACrE,CAAC4H,CAAiC,IAAIH,GAAkBC,GAA0B,GAAG,GAGrFG,IAAcxE,GAAqDC,EAAsB,QAAQ,GAEjG,EAAE,aAAAwE,EAAA,IAAgBC,GAAA,GAClBC,IAAgBF,MAAgB,SAAS,mCAAmC,kCAE5EG,IAAyBxB,GAAQ,MAAMO,EACxC,KAAK,CAACkB,GAAGC,MAAMD,EAAE,oBAAoB,cAAcC,EAAE,mBAAmB,CAAC,EACzE,IAAI,CAAAC,OAEG;AAAA,IACI,OAAOA,EAAoB;AAAA,IAC3B,OAAOA,EAAoB;AAAA,IAC3B,UAAUA,EAAoB,YACzB,OAAO,CAAAC,MAAcA,EAAW,kBAAkB,YAAA,EAAc,SAAST,EAAkC,YAAA,CAAa,CAAC,EACzH,KAAK,CAACM,GAAGC,MAAMD,EAAE,kBAAkB,cAAcC,EAAE,iBAAiB,CAAC,EACrE,IAAI,CAAAE,OACM;AAAA,MACH,OAAOA,EAAW;AAAA,MAClB,OAAOA,EAAW;AAAA,MAClB,WAAW;AAAA,QACP,cAAcA,EAAW;AAAA,QACzB,OAAOA,EAAW,SAAS,CAAA;AAAA,QAC3B,OAAOD;AAAA,MAAA;AAAA,IACX,EAEP;AAAA,EAAA,EAGhB,GAAG,CAACpB,GAAoBY,CAAiC,CAAC,GAEzDU,IAA8B7B,GAAQ,MAAMO,EAC7C,IAAI,CAAAoB,MAAuBA,EAAoB,YAAY,IAAI,CAAAC,MAAcA,EAAW,QAAQ,CAAC,EACjG,QAAQ,CAACrB,CAAkB,CAAC,GAE3BuB,IAAqB9B,GAAQ,MAAMK,EACpC,KAAK,CAACoB,GAAGC,MAAMD,EAAE,oBAAoB,cAAcC,EAAE,mBAAmB,CAAC,EACzE,IAAI,CAAAC,OAEG;AAAA,IACI,OAAOA,EAAoB;AAAA,IAC3B,OAAOA,EAAoB;AAAA,IAC3B,UAAUA,EAAoB,YACzB,OAAO,CAAAC,MAAcA,EAAW,kBAAkB,YAAA,EAAc,SAASb,EAAoC,YAAA,CAAa,CAAC,EAC3H,KAAK,CAACU,GAAGC,MAAMD,EAAE,kBAAkB,cAAcC,EAAE,iBAAiB,CAAC,EACrE,IAAI,CAAAE,MAAc;AACf,YAAMG,IAAoBxB,EACrB,KAAK,CAAAyB,MAA8BA,EAA2B,eAAeL,EAAoB,UAAU,GAAG,YAC9G,KAAK,CAAAI,MAAqBA,EAAkB,aAAaH,EAAW,QAAQ;AACjF,aACI;AAAA,QACI,OAAOA,EAAW;AAAA,QAClB,OAAOA,EAAW;AAAA,QAClB,WAAW;AAAA,UACP,SAASC,EAA4B,SAASD,EAAW,QAAQ,KAAKG,GAAmB,OAAO,SAASE,GAAkBC,GAAcnL,CAAI,CAAE;AAAA,UAC/I,OAAO4K;AAAA,QAAA;AAAA,MACX;AAAA,IAGZ,CAAC;AAAA,EAAA,EAGhB,GAAG,CAACtB,GAAsBE,GAAoBsB,GAA6B9K,GAAMgK,CAAmC,CAAC,GAEpHoB,IAAkBpI,GAAY,YAAY;AAC5C,QAAIkG,GAAY;AACZ,YAAMmC,IAAqB,MAAMhB,EAAY,2BAA2BnB,GAAYlJ,CAAI,GAClFsL,IAAiB,MAAMjB,EAAY,2BAAA;AACzC,MAAAd,EAAwB+B,CAAc,GACtC7B,EAAsB4B,CAAkB;AAAA,IAC5C;AAAA,EACJ,GAAG,CAACnC,GAAYlJ,CAAI,CAAC,GAEf2D,KAAYX,GAAY,MAAM;AAChC,IAAI0G,GAA6B,SAASR,KACtCmB,EAAY,iBAAiBnB,GAAYQ,EAA4B,OAAO1J,CAAI,EAC3E,KAAK,CAACuL,MAA2D;AAC9D,UAAIA,GAA4B;AAC5B,QAAA9B,EAAsB,CAAA4B,MAAsB;AACxC,cAAIG;AACJ,iBAAIH,EAAmB,IAAI,CAAAT,MAAuBA,EAAoB,UAAU,EAAE,SAASW,EAA2B,UAAU,IAC5HC,IAA4BH,EAAmB,IAAI,CAAAT,MAC3CA,EAAoB,eAAeW,EAA2B,aAC1DX,EAAoB,YAAY,IAAI,CAAAC,MAAcA,EAAW,QAAQ,EAAE,SAASnB,EAA4B,KAAK,IAE7G;AAAA,YACI,GAAGkB;AAAA,YACH,aAAaA,EAAoB,YAAY;AAAA,cAAI,CAAAC,MAC7CA,EAAW,aAAanB,EAA4B,QAAQ;AAAA,gBACxD,GAAGmB;AAAA,gBACH,cAAcU,EAA2B;AAAA,gBACzC,OAAO,CAAC,GAAIV,EAAW,SAAS,CAAA,GAAKK,GAAkBC,GAAcnL,CAAI,CAAE;AAAA,cAAA,IAC3E6K;AAAA,YAAA;AAAA,UACR,IAKR;AAAA,YACI,GAAGD;AAAA,YACH,aAAa;AAAA,cAAC,GAAIA,EAAoB,eAAe,CAAA;AAAA,cACrD;AAAA,gBACI,UAAUW,EAA2B;AAAA,gBACrC,mBAAmBA,EAA2B;AAAA,gBAC9C,cAAcA,EAA2B;AAAA,gBACzC,OAAO,CAACL,GAAkBC,GAAcnL,CAAI,CAAE;AAAA,cAAA;AAAA,YAClD;AAAA,UAAC,IAIN4K,CACV,IAEDY,IAA4B;AAAA,YACxB,GAAGH;AAAA,YACH;AAAA,cACI,YAAYE,EAA2B;AAAA,cACvC,qBAAqBA,EAA2B;AAAA,cAChD,aAAa;AAAA,gBACT;AAAA,kBACI,UAAUA,EAA2B;AAAA,kBACrC,mBAAmBA,EAA2B;AAAA,kBAC9C,cAAcA,EAA2B;AAAA,kBACzC,OAAO,CAACL,GAAkBC,GAAcnL,CAAI,CAAE;AAAA,gBAAA;AAAA,cAClD;AAAA,YACJ;AAAA,UACJ,GAIDwL;AAAA,QACX,CAAC;AAED,cAAMC,IAA+BV,EAChC,OAAO,CAACW,MAAiCA,EAAwB,UAAUhC,GAA6B,WAAW,OAAO,UAAU,EACpI,IAAI,CAACgC,MAAiCA,EAAwB,QAAQ,EAAE,KAAA,GAEvEC,IAAkCF,EAA6B,IAAI,CAACZ,MAAoBA,EAAW,KAAK,EAAE,QAAQnB,EAA4B,KAAK,GACnJkC,IAAkCH,EACnC,KAAK,CAACI,GAAqBC,MAAe,CAACD,GAAgB,WAAW,WAChEA,GAAgB,UAAUnC,EAA4B,UACrD+B,EAA6B,SAASE,IAAkC,IACtEG,IAAQH,IACR,GAAK;AACnB,QAAIC,GAAiC,SACjCzC,EAAyB,OAAOyC,EAAgC,KAAK,GAEzEvC,EAAuB,OAAOkC,EAA2B,UAAU,GACnE5B,EAA+BiC,CAA+B;AAAA,MAClE;AAAA,IACJ,CAAC;AAAA,EAEb,GAAG,CAAClC,GAA6BR,GAAYlJ,GAAMqK,GAAaU,GAAoBzB,GAAsBE,GAAoBL,GAA0BE,CAAsB,CAAC,GAEzKvF,KAAed,GAAY,MAAM;AACnC,IAAI4G,GAA2B,WAAW,gBACtCS,EAAY,iBAAiBT,EAA0B,UAAU,YAAY,EACxE,KAAK,MAAM;AACR,MAAAH,EAAsB,CAAA4B,MACgB,CAAC,GAAGA,CAAkB,EACnD,OAAO,CAAAT,MAAuB;AAC3B,YAAImB,IAA6B;AACjC,eAAAnB,EAAoB,aAAa,QAAQ,CAAAC,MAAc;AACnD,UAAIA,EAAW,iBAAiB,UACzBA,EAAW,iBAAiBjB,GAA2B,WAAW,gBAClEgB,EAAoB,YAAY,WAAW,KAC3CC,GAAY,OAAO,WAAW,KAC9BA,EAAW,MAAM,CAAC,MAAMK,GAAkBC,GAAcnL,CAAI,MAC/D+L,IAA6B;AAAA,QAErC,CAAC,GACMA;AAAA,MACX,CAAC,EACA,IAAI,CAAAnB,MAAuB;AACxB,cAAMoB,IAA0CpC,GAA2B,WAAW;AACtF,eAAIgB,EAAoB,eAAeoB,EAAS,aACxCpC,GAA2B,WAAW,OAAO,WAAW,IAChD;AAAA,UACJ,GAAGgB;AAAA,UACH,aAAa,CAAC,IAAIA,EAAoB,eAAe,CAAA,GAChD,OAAO,CAAAC,MAAcA,EAAW,iBAAiBjB,GAA2B,WAAW,YAAY,CAAC;AAAA,QAAA,IAI7G;AAAA,UACI,GAAGgB;AAAA,UACH,cAAcA,EAAoB,eAAe,IAC5C,IAAI,CAAAC,MAAcA,EAAW,aAAajB,EAA0B,QAC9D;AAAA,YACC,UAAUiB,EAAW;AAAA,YACrB,mBAAmBA,EAAW;AAAA,YAC9B,OAAO,CAAC,GAAIA,EAAW,OAAO,OAAO,CAAAoB,OAAeA,MAAgBA,OAAgBf,GAAkBC,GAAcnL,CAAI,CAAE,KAAK,CAAA,CAAG;AAAA,UAAA,IACjI6K,CAAU;AAAA,QAAA,IAI5BD;AAAA,MACX,CAAC,CAER;AAED,YAAMsB,IAA6BzB,EAC9B,OAAO,CAACiB,MAAiCA,EAAwB,UAAU9B,GAA2B,WAAW,OAAO,UAAU,EAClI,IAAI,CAAC8B,MAAiCA,EAAwB,QAAQ,EAAE,KAAA,GAEvEC,IAAkCO,EAA2B,IAAI,CAACrB,MAAoBA,EAAW,KAAK,EAAE,QAAQjB,EAA0B,KAAK,GAE/IuC,IAAgCD,EACjC,KAAK,CAACL,GAAqBC,MAAeD,GAAgB,WAAW,MAAM,SAASX,GAAkBC,GAAcnL,CAAI,CAAC,KACnH6L,GAAgB,UAAUjC,EAA0B,UACnDsC,EAA2B,SAASP,IAAkC,IAAIG,IAAQH,IAAkC,GAAK;AACrI,MAAIQ,GAA+B,SAC/B9C,EAAuB,OAAO8C,EAA8B,KAAK,GAErEtC,EAA6BsC,CAA6B;AAAA,IAC9D,CAAC;AAAA,EAEb,GAAG,CAACvC,GAA2BS,GAAarK,GAAMyK,GAAwBjB,GAAoBH,CAAsB,CAAC;AAerH,SAbAnG,GAAU,MAAM;AACZ,IAAI4F,KAAUD,MACVc,EAA+B,MAAS,GACxCE,EAA6B,MAAS,GACtCE,GAA8B,EAAE,GAChCI,EAA4B,EAAE,GAC9Bd,EAAuB,iBAAA,GACvBF,EAAyB,iBAAA,GACzBiC,EAAA;AAAA,EAER,GAAG,CAACtC,GAAQ9I,GAAMkJ,GAAYkC,CAAe,CAAC,GAGzCvC,IAKD/H,gBAAAA,EAAAA,IAACC,IAAA,EAAM,QAAA+H,GAAgB,SAASC,GAAO,OAAO,GAAG/H,EAAA,EAAqB,EAAE,YAAYhB,CAAI,EAAE,CAAC,KAAKgJ,CAAI,IAAI,MAAM,OAAO,QAAQ,EAAE,MAAM,EAAE,UAAU,SAAA,EAAS,GACtJ,UAAA9H,gBAAAA,EAAAA,KAACkL,IAAA,EAAmB,QAAQ,SACxB,UAAA;AAAA,IAAAtL,gBAAAA,MAACuL,MACG,UAAAvL,gBAAAA,EAAAA,IAACmD,GAAA,EAAM,YAAU,IAAC,IAAI,IAAI,GAAG,IAAI,OAAO,EAAE,QAAQ,qBAAqB,UAAU,UAAU,SAAS,QAAQ,eAAe,YACnH,iCAAC,OAAA,EAAI,OAAO,EAAE,MAAM,GAAG,SAAS,QAAQ,eAAe,OAAO,UAAU,UAAU,WAAW,GAAG,KAAK,SACjG,UAAA;AAAA,MAAA/C,gBAAAA,EAAAA,KAAC,OAAA,EAAI,OAAO,EAAE,MAAM,GAAG,SAAS,QAAQ,eAAe,UAAU,UAAU,UAAU,WAAW,KAC5F,UAAA;AAAA,QAAAA,gBAAAA,EAAAA,KAACI,GAAA,EAAM,IAAI,IACP,UAAA;AAAA,UAAAR,gBAAAA,EAAAA,IAACqD,GAAA,EAAM,UAAAnD,EAAA,EAAqB,EAAE,oBAAoB,GAAE;AAAA,UACpDF,gBAAAA,EAAAA;AAAAA,YAACwL;AAAA,YAAA;AAAA,cACG,MAAK;AAAA,cACL,OAAOxC;AAAA,cACP,UAAU,CAACyC,MAAUxC,GAA8BwC,EAAM,OAAO,KAAK;AAAA,cACrE,aAAavL,IAAqB,EAAE,uCAAuC;AAAA,YAAA;AAAA,UAAA;AAAA,QAC/E,GACJ;AAAA,QACAF,gBAAAA,MAACG,MAAW,OAAO,EAAE,MAAM,GAAG,WAAW,KACrC,UAAAH,gBAAAA,EAAAA;AAAAA,UAAC0L;AAAA,UAAA;AAAA,YACG,MAAMzB;AAAA,YACN,eAAe;AAAA,YACf,qBAAqB;AAAA,YACrB,MAAM5B;AAAA,YACN,YAAY,CAAC,EAAE,OAAAsD,GAAO,MAAAC,GAAM,UAAAC,GAAU,aAAAC,GAAa,UAAAC,GAAU,cAAAC,QAAmB;AAC5E,oBAAMC,IAAYL,GAAM,WAAW,SAC7BM,IAAYD,IAAY,WAAW,QACnCE,KAAiBF,IAAY,iBAAiB,QAE9CG,IAAclK,GAAY,CAACuJ,OAAe;AAC5C,gBAAA5C,EAA+B+C,CAAI,GACnCI,EAAa,QAAQP,EAAK;AAAA,cAC9B,GAAG,CAACG,GAAMI,EAAa,OAAO,CAAC;AAE/B,qBACI5L,gBAAAA,EAAAA;AAAAA,gBAACI;AAAA,gBAAA;AAAA,kBAAM,IAAIsL,IAAc,IAAI;AAAA,kBAAG,KAAK;AAAA,kBAAI,GAAGE;AAAA,kBACxC,IAAID,KAAYJ,MAAU,IAAIjC,IAAgB;AAAA,kBAC9C,SAAS0C;AAAA,kBAER,UAAA;AAAA,oBAAAN,KACG9L,gBAAAA,EAAAA;AAAAA,sBAACqM;AAAA,sBAAA;AAAA,wBACG,MAAM;AAAA,wBACN,OAAO,EAAE,WAAWR,IAAW,iBAAiB,iBAAA;AAAA,sBAAiB;AAAA,oBAAA;AAAA,oBAGxE,CAACC,KACE9L,gBAAAA,EAAAA;AAAAA,sBAACsM;AAAA,sBAAA;AAAA,wBACG,MAAM;AAAA,wBACN,OAAO,EAAE,WAAW,kBAAkB,WAAW,OAAA;AAAA,sBAAO;AAAA,oBAAA;AAAA,oBAGhEtM,gBAAAA,EAAAA;AAAAA,sBAACqD;AAAA,sBAAA;AAAA,wBACG,GAAG6I;AAAA,wBACH,IAAIC;AAAA,wBAEH,UAAAzE,GAAyBkE,EAAK,KAAe;AAAA,sBAAA;AAAA,oBAAA;AAAA,kBAClD;AAAA,gBAAA;AAAA,cAAA;AAAA,YAGZ;AAAA,UAAA;AAAA,QAAA,EAEJ,CACJ;AAAA,MAAA,GACJ;AAAA,4BACC,OAAA,EAAI,OAAO,EAAE,MAAM,GAAG,SAAS,QAAQ,YAAY,UAAU,gBAAgB,YAC1E,UAAAxL,gBAAAA,EAAAA,KAACC,MAAM,KAAK,GAAG,OAAM,UACjB,UAAA;AAAA,QAAAL,gBAAAA,EAAAA,IAACyD,IAAA,EAAQ,OAAOvD,EAAA,EAAqB,EAAE,cAAc,GACjD,UAAAF,gBAAAA,EAAAA,IAAC0D,GAAA,EAAW,SAASb,IAAW,UAAU,CAAC+F,KAA+BA,GAA6B,WAAW,WAAW,CAACA,EAA4B,WACtJ,UAAA5I,gBAAAA,EAAAA,IAAC2D,IAAA,CAAA,CAAe,EAAA,CACpB,EAAA,CACJ;AAAA,QACA3D,gBAAAA,EAAAA,IAACyD,IAAA,EAAQ,OAAOvD,EAAA,EAAqB,EAAE,iBAAiB,GACpD,UAAAF,gBAAAA,EAAAA,IAAC0D,GAAA,EAAW,SAASV,IAAc,UAAU,CAAC8F,KAA6B,CAACA,GAA2B,WAAW,gBAAgB,CAACA,EAA0B,WACzJ,UAAA9I,gBAAAA,EAAAA,IAAC4D,IAAA,CAAA,CAAc,EAAA,CACnB,EAAA,CACJ;AAAA,MAAA,EAAA,CACJ,EAAA,CACJ;AAAA,MACAxD,gBAAAA,EAAAA,KAAC,OAAA,EAAI,OAAO,EAAE,MAAM,GAAG,SAAS,QAAQ,eAAe,UAAU,UAAU,UAAU,WAAW,KAC5F,UAAA;AAAA,QAAAA,gBAAAA,EAAAA,KAACI,GAAA,EAAM,IAAI,IACP,UAAA;AAAA,UAAAR,gBAAAA,EAAAA,IAACqD,GAAA,EAAM,UAAAnD,EAAA,EAAqB,EAAE,kBAAkB,GAAE;AAAA,UAClDF,gBAAAA,EAAAA;AAAAA,YAACwL;AAAA,YAAA;AAAA,cACG,MAAK;AAAA,cACL,OAAOpC;AAAA,cACP,UAAU,CAACqC,MAAUpC,EAA4BoC,EAAM,OAAO,KAAK;AAAA,cACnE,aAAavL,IAAqB,EAAE,qCAAqC;AAAA,YAAA;AAAA,UAAA;AAAA,QAC7E,GACJ;AAAA,QACAF,gBAAAA,MAACG,MAAW,OAAO,EAAE,MAAM,GAAG,WAAW,KACrC,UAAAH,gBAAAA,EAAAA;AAAAA,UAAC0L;AAAA,UAAA;AAAA,YACG,MAAM/B;AAAA,YACN,eAAe;AAAA,YACf,qBAAqB;AAAA,YACrB,MAAMpB;AAAA,YACN,YAAY,CAAC,EAAE,OAAAoD,GAAO,MAAAC,GAAM,UAAAC,GAAU,aAAAC,GAAa,UAAAC,GAAU,cAAAC,QAAmB;AAC5E,oBAAMI,IAAclK,GAAY,CAACuJ,MAAe;AAC5C,gBAAA1C,EAA6B6C,CAAI,GACjCI,EAAa,QAAQP,CAAK;AAAA,cAC9B,GAAG,CAACG,GAAMI,EAAa,OAAO,CAAC;AAE/B,qBACI5L,gBAAAA,EAAAA;AAAAA,gBAACI;AAAA,gBAAA;AAAA,kBAAM,IAAIsL,IAAc,IAAI;AAAA,kBAAG,KAAK;AAAA,kBAAI,GAAGE;AAAA,kBAAc,IAAID,KAAYJ,MAAU,IAAIjC,IAAgB;AAAA,kBACpG,SAAS0C;AAAA,kBAER,UAAA;AAAA,oBAAAN,KACG9L,gBAAAA,EAAAA;AAAAA,sBAACqM;AAAA,sBAAA;AAAA,wBACG,MAAM;AAAA,wBACN,OAAO,EAAE,WAAWR,IAAW,iBAAiB,iBAAA;AAAA,sBAAiB;AAAA,oBAAA;AAAA,oBAGxE,CAACC,KACE9L,gBAAAA,EAAAA;AAAAA,sBAACsM;AAAA,sBAAA;AAAA,wBACG,MAAM;AAAA,wBACN,OAAO,EAAE,WAAW,kBAAkB,WAAW,OAAA;AAAA,sBAAO;AAAA,oBAAA;AAAA,oBAGhEtM,gBAAAA,EAAAA,IAACqD,GAAA,EAAM,UAAAqE,GAAyBkE,EAAK,KAAe,GAAE;AAAA,oBACrDA,GAAM,WAAW,OAAO,SAAS,MAAM,KAAK5L,gBAAAA,EAAAA,IAACuM,IAAA,EAAM,OAAM,QAAQ,UAAArM,EAAA,EAAqB,EAAE,eAAe,GAAE;AAAA,oBACzG0L,GAAM,WAAW,OAAO,SAAS,OAAO,KAAK5L,gBAAAA,EAAAA,IAACuM,IAAA,EAAM,OAAM,UAAU,UAAArM,EAAA,EAAqB,EAAE,gBAAgB,GAAE;AAAA,oBAC7G0L,GAAM,WAAW,OAAO,SAAS,SAAS,KAAK5L,gBAAAA,EAAAA,IAACuM,IAAA,EAAM,OAAM,QAAQ,UAAArM,EAAA,EAAqB,EAAE,kBAAkB,EAAA,CAAE;AAAA,kBAAA;AAAA,gBAAA;AAAA,cAAA;AAAA,YAG5H;AAAA,UAAA;AAAA,QAAA,EACJ,CACJ;AAAA,MAAA,EAAA,CACJ;AAAA,IAAA,EAAA,CACJ,GACJ,GACR;AAAA,0BACCsM,IAAA,EAAoB,MAAK,QACtB,UAAAxM,gBAAAA,EAAAA,IAACQ,GAAA,EAAM,SAAQ,YACX,UAAAR,gBAAAA,MAACS,GAAA,EAAO,SAASwH,GAAQ,UAAA/H,IAAqB,EAAE,gBAAgB,GAAE,GACtE,EAAA,CACJ;AAAA,EAAA,EAAA,CACJ,EAAA,CACJ,IAxIO;AA0If;AChWO,MAAMuM,KACZ,8iEAEKC,KAAe,CAACC,MAChBA,EAAK,SAIT3M,gBAAAA,MAAC,SAAI,OAAO,EAAE,SAAS,OAAA,GACrB,YAAK,OACJ,MAAA,EACA,KAAK,CAAC4J,GAAGC,OAAOD,EAAE,OAAO,QAAQ,IAAI,cAAcC,EAAE,OAAO,QAAQ,EAAE,CAAC,EACvE,IAAI,CAACvH,GAAM0I,MACXhL,gBAAAA,EAAAA,IAAC,OAAA,EAAgB,OAAO,EAAE,cAAc,MAAA,GACvC,UAAAA,gBAAAA,MAACuM,IAAA,EAAM,OAAM,QAAQ,UAAAjK,EAAK,OAAO,MAAK,EAAA,GAD7B0I,CAEV,CACA,EAAA,CACH,IAZO,MAgBH4B,KAAgB,CAACD,MACjBA,EAAK,gCAGFJ,IAAA,EAAM,OAAM,SAAS,UAAAI,EAAK,SAAS,MAAK,IAFxC;AAyDF,SAASE,GAAqB;AAAA,EACpC,QAAA1L,IAAS;AAAA,EACT,OAAAD,IAAQ;AAAA,EACR,sBAAA4L,IAAuB;AAAA,EACvB,kBAAAC;AAAA,EACA,qBAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,SAAArN;AACD,GAAiC;AAChC,QAAMsN,IAAQC,GAAA;AACQ,EAAAC,GAAiB,eAAe;AACtD,QAAMC,IAAYC,GAAA,GACZ,EAAE,aAAA9D,EAAA,IAAgBC,GAAA,GAClB,CAACtE,GAAOoI,CAAQ,IAAI7L,EAA6B,MAAS,GAC1D,CAAC8L,GAAWC,CAAY,IAAI/L,EAAwB,OAAO,GAC3DmF,IAAU9B,GAAiDC,EAAsB,IAAI,GACrFF,IAAWC,GAAkDC,EAAsB,KAAK,GACxFuE,IAAcxE,GAAqDC,EAAsB,QAAQ,GACjGK,KAAaN,GAAoDC,EAAsB,OAAO,GAC9F,CAAC0I,GAAaC,CAAc,IAAIjM,EAAiB,EAAE,GACnD,CAACkM,GAAwBC,CAAyB,IAAInM,EAAiB,EAAE,GACzEoM,IAAiB/I,GAAwDC,EAAsB,WAAW,GAC1G,EAAC,GAAA+I,EAAA,IAAKC,GAAA,GAGNC,IAAeC,GAAmC,IAAI,GACtDC,IAAgBD,GAAmC,IAAI,GACvDE,IAAkBF,GAAmC,IAAI,GACzDG,IAAmBH,GAAmC,IAAI,GAC1DI,IAAsBJ,GAAmC,IAAI,GAG7DK,KAAe,CAACC,MACdA,EAAI,IAGNC,KAAgB,CAACD,MACfA,EAAI,IAGNE,IAAkB,CAACF,MACjBA,EAAI,IAGNG,IAAmB,CAACH,MAClBA,EAAI,IAGNI,IAAsB,CAACJ,MACrBA,EAAI,IAGN;AAAA,IACL,YAAYK;AAAA,IACZ,WAAWC;AAAA,IACX,aAAaC;AAAA,EAAA,IACVC,GAA8C;AAAA,IACjD,MAAM;AAAA,IACN,SAASlB;AAAA,IACT,WAAAT;AAAA,IACA,UAAU;AAAA,IACV,mBAAmB,CAAC,cAAc,qBAAqB;AAAA,IACvD,SAAS,CAAClI,GAAOjB,MAAW;AAC3B,MAAAqJ,EAASpI,CAAK,GACdC,EAAsB,UAAU,GAAG2I,EAAE,kBAAkB,CAAC,IAAI5I,GAAOjB,CAAM;AAAA,IAC1E;AAAA,EAAA,CACA,GAEK;AAAA,IACL,YAAY+K;AAAA,IACZ,WAAWC;AAAA,IACX,aAAaC;AAAA,EAAA,IACVH,GAAuC;AAAA,IAC1C,MAAM;AAAA,IACN,SAASnI;AAAA,IACT,WAAAwG;AAAA,IACA,UAAU;AAAA,IACV,SAAS,CAAClI,GAAOjB,MAAW;AAC3B,MAAAqJ,EAASpI,CAAK,GACdC,EAAsB,UAAU,GAAG2I,EAAE,kBAAkB,CAAC,IAAI5I,GAAOjB,CAAM;AAAA,IAC1E;AAAA,EAAA,CACA,GAEK;AAAA,IACL,YAAYe;AAAA,IACZ,WAAWmK;AAAA,IACX,aAAaC;AAAA,EAAA,IACVL,GAAwC;AAAA,IAC3C,MAAM;AAAA,IACN,SAASlK;AAAA,IACT,WAAAuI;AAAA,IACA,UAAU;AAAA,IACV,SAAS,CAAClI,GAAOjB,MAAW;AAC3B,MAAAqJ,EAASpI,CAAK,GACdC,EAAsB,UAAU,GAAG2I,EAAE,kBAAkB,CAAC,IAAI5I,GAAOjB,CAAM;AAAA,IAC1E;AAAA,EAAA,CACA,GAEK;AAAA,IACL,YAAYoB;AAAA,IACZ,WAAWgK;AAAA,IACX,aAAaC;AAAA,EAAA,IACVP,GAA0C;AAAA,IAC7C,MAAM;AAAA,IACN,SAAS3J;AAAA,IACT,WAAAgI;AAAA,IACA,UAAU;AAAA,IACV,SAAS,CAAClI,GAAOjB,MAAW;AAC3B,MAAAqJ,EAASpI,CAAK,GACdC,EAAsB,UAAU,GAAG2I,EAAE,kBAAkB,CAAC,IAAI5I,GAAOjB,CAAM;AAAA,IAC1E;AAAA,EAAA,CACA,GAEK;AAAA,IACL,YAAYsL;AAAA,IACZ,WAAWC;AAAA,IACX,aAAaC;AAAA,EAAA,IACVV,GAA2C;AAAA,IAC9C,MAAM;AAAA,IACN,SAASzF;AAAA,IACT,WAAA8D;AAAA,IACA,UAAU;AAAA,IACV,SAAS,CAAClI,GAAOjB,MAAW;AAC3B,MAAAqJ,EAASpI,CAAK,GACdC,EAAsB,UAAU,GAAG2I,EAAE,kBAAkB,CAAC,IAAI5I,GAAOjB,CAAM;AAAA,IAC1E;AAAA,EAAA,CACA;AAGD,EAAA9B,GAAU,MAAM;AAEf,IAAA2M,EAAoB,EAAE,QAAQtJ,GAAKC,GAAQ,GAAG,WAAW,OAAO,CAAC,GAAG,GAEpEyJ,GAAA,GACAE,GAAA,GACAE,GAAA,GACAG,GAAA;AAAA,EACD,GAAG,CAAA,CAAE;AAEL,QAAMC,4BACJC,IAAA,EACA,UAAA;AAAA,IAAA5P,gBAAAA,EAAAA;AAAAA,MAAC6P;AAAA,MAAA;AAAA,QACA,WAAU;AAAA,QACV,UAAS;AAAA,QACT,MAAM;AAAA,QACN,QAAQ,GAAG9B,EAAE,eAAe,CAAC;AAAA,QAC7B,QAAQ,CAAC+B,MACR9P,gBAAAA,EAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACA,OAAO,EAAE,cAAc,IAAI,QAAQ,QAAQ,WAAW,OAAA;AAAA,YACtD,KAAK8P,EAAK,IAAI,QAAQA,EAAK,IAAI,KAAK,SAAS,KAAKA,EAAK,IAAI,KAAK,MAAM,IAAIrD;AAAA,UAAA;AAAA,QAAA;AAAA,QAG5E,iBAAgB;AAAA,QAChB,OAAM;AAAA,QACN,YAAY;AAAA,MAAA;AAAA,IAAA;AAAA,IAEbzM,gBAAAA,EAAAA;AAAAA,MAAC6P;AAAA,MAAA;AAAA,QACA,WAAU;AAAA,QACV,UAAS;AAAA,QACT,MAAM;AAAA,QACN,QAAQ,GAAG9B,EAAE,0BAA0B,CAAC;AAAA,QACxC,iBAAgB;AAAA,MAAA;AAAA,IAAA;AAAA,IAEjB/N,gBAAAA,EAAAA;AAAAA,MAAC6P;AAAA,MAAA;AAAA,QACA,WAAU;AAAA,QACV,UAAS;AAAA,QACT,QAAQ,GAAG9B,EAAE,gBAAgB,CAAC;AAAA,QAC9B,MAAM;AAAA,QACN,iBAAgB;AAAA,MAAA;AAAA,IAAA;AAAA,IAEjB/N,gBAAAA,EAAAA;AAAAA,MAAC6P;AAAA,MAAA;AAAA,QACA,WAAU;AAAA,QACV,UAAS;AAAA,QACT,MAAM;AAAA,QACN,QAAQ,GAAG9B,EAAE,oBAAoB,CAAC;AAAA,QAClC,QAAQ,CAAC+B,MAAS9P,gBAAAA,EAAAA,IAACqD,KAAK,MAAK,MAAM,UAAAyM,EAAK,IAAI,eAAA,CAAe;AAAA,QAC3D,iBAAgB;AAAA,MAAA;AAAA,IAAA;AAAA,IAEjB9P,gBAAAA,EAAAA;AAAAA,MAAC6P;AAAA,MAAA;AAAA,QACA,WAAU;AAAA,QACV,UAAS;AAAA,QACT,QAAQ,GAAG9B,EAAE,qBAAqB,CAAC;AAAA,QACnC,iBAAgB;AAAA,MAAA;AAAA,IAAA;AAAA,IAEjB/N,gBAAAA,EAAAA;AAAAA,MAAC6P;AAAA,MAAA;AAAA,QACA,WAAU;AAAA,QACV,UAAS;AAAA,QACT,QAAQ,GAAG9B,EAAE,qBAAqB,CAAC;AAAA,QACnC,iBAAgB;AAAA,MAAA;AAAA,IAAA;AAAA,IAEjB/N,gBAAAA,EAAAA;AAAAA,MAAC6P;AAAA,MAAA;AAAA,QACA,WAAU;AAAA,QACV,UAAS;AAAA,QACT,QAAQ,GAAG9B,EAAE,uBAAuB,CAAC;AAAA,QACrC,MAAM;AAAA,QACN,iBAAgB;AAAA,MAAA;AAAA,IAAA;AAAA,EACjB,GACD,GAGKgC,4BACJH,IAAA,EACA,UAAA;AAAA,IAAA5P,gBAAAA,EAAAA;AAAAA,MAAC6P;AAAA,MAAA;AAAA,QACA,WAAU;AAAA,QACV,UAAS;AAAA,QACT,MAAM;AAAA,QACN,QAAQ,GAAG9B,EAAE,eAAe,CAAC;AAAA,QAC7B,QAAQ,CAAC+B,MACR9P,gBAAAA,EAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACA,OAAO,EAAE,cAAc,IAAI,QAAQ,QAAQ,WAAW,OAAA;AAAA,YACtD,KAAK8P,EAAK,IAAI,SAAS,KAAKA,EAAK,IAAI,MAAM,IAAIrD;AAAA,UAAA;AAAA,QAAA;AAAA,QAGjD,eAAe;AAAA,QACf,oBAAoB;AAAA,QACpB,oBAAoB;AAAA,QACpB,OAAM;AAAA,QACN,YAAY;AAAA,MAAA;AAAA,IAAA;AAAA,IAEbzM,gBAAAA,EAAAA;AAAAA,MAAC6P;AAAA,MAAA;AAAA,QACA,WAAU;AAAA,QACV,UAAS;AAAA,QACT,MAAM;AAAA,QACN,QAAQ,GAAG9B,EAAE,eAAe,CAAC;AAAA,QAC7B,iBAAgB;AAAA,QAChB,UAAU;AAAA,MAAA;AAAA,IAAA;AAAA,IAEX/N,gBAAAA,EAAAA;AAAAA,MAAC6P;AAAA,MAAA;AAAA,QACA,WAAU;AAAA,QACV,UAAS;AAAA,QACT,MAAM;AAAA,QACN,QAAQ,GAAG9B,EAAE,kBAAkB,CAAC;AAAA,QAChC,iBAAgB;AAAA,QAChB,UAAU;AAAA,MAAA;AAAA,IAAA;AAAA,IAEX/N,gBAAAA,EAAAA;AAAAA,MAAC6P;AAAA,MAAA;AAAA,QACA,WAAU;AAAA,QACV,UAAS;AAAA,QACT,QAAQ,GAAG9B,EAAE,gBAAgB,CAAC;AAAA,QAC9B,MAAM;AAAA,QACN,iBAAgB;AAAA,QAChB,UAAU;AAAA,MAAA;AAAA,IAAA;AAAA,IAEX/N,gBAAAA,EAAAA;AAAAA,MAAC6P;AAAA,MAAA;AAAA,QACA,WAAU;AAAA,QACV,UAAS;AAAA,QACT,QAAQ,GAAG9B,EAAE,sBAAsB,CAAC;AAAA,QACpC,iBAAgB;AAAA,QAChB,MAAM;AAAA,MAAA;AAAA,IAAA;AAAA,IAEP/N,gBAAAA,EAAAA;AAAAA,MAAC6P;AAAA,MAAA;AAAA,QACA,WAAU;AAAA,QACV,UAAS;AAAA,QACT,QAAQ,GAAG9B,EAAE,iBAAiB,CAAC;AAAA,QAC/B,MAAM;AAAA,QACN,QAAQ,CAAC+B,MAASlD,GAAckD,EAAK,GAAG;AAAA,QACxC,iBAAgB;AAAA,MAAA;AAAA,IAAA;AAAA,IAEjB9P,gBAAAA,EAAAA;AAAAA,MAAC6P;AAAA,MAAA;AAAA,QACA,WAAU;AAAA,QACV,UAAS;AAAA,QACT,MAAM;AAAA,QACN,QAAQ,GAAG9B,EAAE,iBAAiB,CAAC;AAAA,QAC/B,QAAQ,CAAC+B,MAASpD,GAAaoD,EAAK,GAAG;AAAA,QACvC,aAAa,CAACtB,MACbA,EAAI,QACD,MAAA,EACD,KAAK,CAAC5E,GAAGC,QAAOD,EAAE,OAAO,QAAQ,IAAI,cAAcC,GAAE,OAAO,QAAQ,EAAE,CAAC,EACvE,IAAI,CAACrG,MAAMA,EAAE,OAAO,IAAI,EACxB,OAAO,OAAO,EACd,KAAK,IAAI,KAAK;AAAA,QAEjB,eAAe;AAAA,QACf,oBAAoB;AAAA,QACpB,oBAAoB;AAAA,MAAA;AAAA,IAAA;AAAA,IAErBxD,gBAAAA,EAAAA;AAAAA,MAAC6P;AAAA,MAAA;AAAA,QACA,WAAU;AAAA,QACV,UAAS;AAAA,QACT,QAAQ,GAAG9B,EAAE,kBAAkB,CAAC;AAAA,QAChC,iBAAgB;AAAA,MAAA;AAAA,IAAA;AAAA,IAEjB/N,gBAAAA,EAAAA;AAAAA,MAAC6P;AAAA,MAAA;AAAA,QACA,WAAU;AAAA,QACV,UAAS;AAAA,QACT,QAAQ,GAAG9B,EAAE,mCAAmC,CAAC;AAAA,QACjD,iBAAgB;AAAA,QAChB,MAAM;AAAA,MAAA;AAAA,IAAA;AAAA,IAEP/N,gBAAAA,EAAAA;AAAAA,MAAC6P;AAAA,MAAA;AAAA,QACA,WAAU;AAAA,QACV,UAAS;AAAA,QACT,QAAQ,GAAG9B,EAAE,8BAA8B,CAAC;AAAA,QAC5C,iBAAgB;AAAA,QAChB,MAAM;AAAA,MAAA;AAAA,IAAA;AAAA,IAEP/N,gBAAAA,EAAAA;AAAAA,MAAC6P;AAAA,MAAA;AAAA,QACA,WAAU;AAAA,QACV,UAAS;AAAA,QACT,QAAQ,GAAG9B,EAAE,oCAAoC,CAAC;AAAA,QAClD,iBAAgB;AAAA,QAChB,MAAM;AAAA,MAAA;AAAA,IAAA;AAAA,IAEP/N,gBAAAA,EAAAA;AAAAA,MAAC6P;AAAA,MAAA;AAAA,QACA,WAAU;AAAA,QACV,UAAS;AAAA,QACT,QAAQ,GAAG9B,EAAE,8BAA8B,CAAC;AAAA,QAC5C,iBAAgB;AAAA,QAChB,MAAM;AAAA,MAAA;AAAA,IAAA;AAAA,IAEP/N,gBAAAA,EAAAA;AAAAA,MAAC6P;AAAA,MAAA;AAAA,QACA,WAAU;AAAA,QACV,UAAS;AAAA,QACT,QAAQ,GAAG9B,EAAE,gCAAgC,CAAC;AAAA,QAC9C,iBAAgB;AAAA,QAChB,MAAM;AAAA,MAAA;AAAA,IAAA;AAAA,IAEP/N,gBAAAA,EAAAA;AAAAA,MAAC6P;AAAA,MAAA;AAAA,QACA,WAAU;AAAA,QACV,UAAS;AAAA,QACT,QAAQ,GAAG9B,EAAE,qBAAqB,CAAC;AAAA,QACnC,iBAAgB;AAAA,QAChB,MAAM;AAAA,MAAA;AAAA,IAAA;AAAA,IAEP/N,gBAAAA,EAAAA;AAAAA,MAAC6P;AAAA,MAAA;AAAA,QACA,WAAU;AAAA,QACV,UAAS;AAAA,QACT,QAAQ,GAAG9B,EAAE,oCAAoC,CAAC;AAAA,QAClD,iBAAgB;AAAA,QAChB,MAAM;AAAA,MAAA;AAAA,IAAA;AAAA,EACP,GACD,GAGKiC,4BACJJ,IAAA,EACA,UAAA;AAAA,IAAA5P,gBAAAA,EAAAA;AAAAA,MAAC6P;AAAA,MAAA;AAAA,QACA,WAAU;AAAA,QACV,UAAS;AAAA,QACT,MAAM;AAAA,QACN,QAAQ,GAAG9B,EAAE,wBAAwB,CAAC;AAAA,QACtC,iBAAgB;AAAA,MAAA;AAAA,IAAA;AAAA,IAEjB/N,gBAAAA,EAAAA;AAAAA,MAAC6P;AAAA,MAAA;AAAA,QACA,WAAU;AAAA,QACV,UAAS;AAAA,QACT,QAAQ,GAAG9B,EAAE,oBAAoB,CAAC;AAAA,QAClC,MAAM;AAAA,QACN,iBAAgB;AAAA,MAAA;AAAA,IAAA;AAAA,EACjB,GACD,GAGKkC,4BACJL,IAAA,EACA,UAAA;AAAA,IAAA5P,gBAAAA,EAAAA;AAAAA,MAAC6P;AAAA,MAAA;AAAA,QACA,WAAU;AAAA,QACV,UAAS;AAAA,QACT,MAAM;AAAA,QACN,QAAQ,GAAG9B,EAAE,yBAAyB,CAAC;AAAA,QACvC,iBAAgB;AAAA,MAAA;AAAA,IAAA;AAAA,IAEjB/N,gBAAAA,EAAAA;AAAAA,MAAC6P;AAAA,MAAA;AAAA,QACA,WAAU;AAAA,QACV,UAAS;AAAA,QACT,QAAQ,GAAG9B,EAAE,oBAAoB,CAAC;AAAA,QAClC,MAAM;AAAA,QACN,iBAAgB;AAAA,MAAA;AAAA,IAAA;AAAA,EACjB,GACD,GAGKmC,4BACJN,IAAA,EACA,UAAA;AAAA,IAAA5P,gBAAAA,EAAAA;AAAAA,MAAC6P;AAAA,MAAA;AAAA,QACA,WAAU;AAAA,QACV,UAAS;AAAA,QACT,MAAM;AAAA,QACN,QAAQ,GAAG9B,EAAE,0BAA0B,CAAC;AAAA,QACxC,iBAAgB;AAAA,MAAA;AAAA,IAAA;AAAA,IAEjB/N,gBAAAA,EAAAA;AAAAA,MAAC6P;AAAA,MAAA;AAAA,QACA,WAAU;AAAA,QACV,UAAS;AAAA,QACT,QAAQ,GAAG9B,EAAE,oBAAoB,CAAC;AAAA,QAClC,MAAM;AAAA,QACN,iBAAgB;AAAA,MAAA;AAAA,IAAA;AAAA,EACjB,GACD,GAGKoC,KAAuB,MAAM;AAClC,UAAMxD,IAAOyD,GAAQ,YAAA;AACrB,IAAKtD,MACHH,EAAa,KAAK,SAEpBsC,EAAQ,OAAOtC,CAAI,GACnBgB,EAAetD,EAAa,IAAI;AAAA,EACjC,GAEMgG,KAAoB,CAAC7B,MAAa;AACvC,IAAKS,EAAQ,aACQA,EAAQ,iBAAiBT,CAAG,MAE/CS,EAAQ,KAAA,GACRtB,EAAetD,EAAa,IAAI;AAAA,EAGnC,GAEMiG,KAAsB,CAAC9B,MAAa;AACzC,IAAKS,EAAQ,aACQA,EAAQ,iBAAiBT,CAAG,KAE/C+B,EAAe;AAAA,MACd,GAAGxC,EAAE,mBAAmB,CAAC;AAAA,MACzB,GAAGA,EAAE,oCAAoC,CAAC,GAAGS,EAAI,IAAI;AAAA,MACrD,MAAM;AACL,QAAAS,EAAQ,OAAA;AAAA,MACT;AAAA,MACA,MAAM;AAAA,MAAC;AAAA,IAAA;AAAA,EAIX,GAEMuB,KAAoB,CAAChC,MAAa;AACvC,IAAKS,EAAQ,aACQA,EAAQ,iBAAiBT,CAAG,KAE/Cb,EAAetD,EAAa,IAAI;AAAA,EAGnC,GAEMoG,KAAsB,CAACjC,MAE3BpO,gBAAAA,EAAAA,KAACI,GAAA,EAAM,KAAK,GAAG,MAAK,UAClB,UAAA;AAAA,IAAAZ,GAAS,2BAA2B4O,CAAG;AAAA,IACxCxO,gBAAAA,EAAAA,IAAC0D,GAAA,EAAW,SAAQ,eAAc,SAAS,MAAM8M,GAAkBhC,CAAG,GACrE,UAAAxO,gBAAAA,EAAAA,IAAC0Q,IAAA,EAAQ,MAAM,IAAI,OAAOlH,MAAgB,SAAS0D,EAAM,OAAO,KAAK,CAAC,IAAIA,EAAM,OAAO,KAAK,CAAC,EAAA,CAAG,EAAA,CACjG;AAAA,IACAlN,gBAAAA,EAAAA,IAAC0D,GAAA,EAAW,SAAQ,eAAc,SAAS,MAAM2M,GAAkB7B,CAAG,GACrE,UAAAxO,gBAAAA,EAAAA,IAAC2Q,IAAA,EAAS,MAAM,IAAI,OAAOnH,MAAgB,SAAS0D,EAAM,OAAO,OAAO,CAAC,IAAIA,EAAM,OAAO,OAAO,CAAC,EAAA,CAAG,EAAA,CACtG;AAAA,IACAlN,gBAAAA,EAAAA,IAAC0D,GAAA,EAAW,SAAQ,eAAc,SAAS,MAAM4M,GAAoB9B,CAAG,GACvE,UAAAxO,gBAAAA,EAAAA,IAAC4Q,IAAA,EAAW,MAAM,IAAI,OAAOpH,MAAgB,SAAS0D,EAAM,OAAO,IAAI,CAAC,IAAIA,EAAM,OAAO,IAAI,CAAC,EAAA,CAAG,EAAA,CAClG;AAAA,0BACCzJ,IAAA,EAAQ,cAAY,IAAC,WAAS,IAAC,UAAS,QAAO,OAAO,GAAGsK,EAAE,2BAA2B,CAAC,IACvF,UAAA/N,gBAAAA,EAAAA,IAAC0D,GAAA,EAAW,SAAQ,eAAc,SAASmN,IAC1C,UAAA7Q,gBAAAA,EAAAA,IAAC8Q,MAAoB,MAAM,IAAI,OAAOtH,MAAgB,SAAS0D,EAAM,OAAO,MAAM,CAAC,IAAIA,EAAM,OAAO,MAAM,CAAC,EAAA,CAAG,GAC/G,GACD;AAAA,IACCtN,GAAS,0BAA0B4O,CAAG;AAAA,EAAA,GACxC,GAIIuC,KAAwB,MAAM;AACnC,UAAMnL,IAAQoL,GAAS,YAAA;AACvB,IAAKlE,MACHlH,EAAc,KAAK,SAErBX,EAAS,OAAOW,CAAK,GACrB+H,EAAetD,EAAa,KAAK;AAAA,EAClC,GAEM4G,KAAqB,CAACzC,MAAa;AACxC,IAAKvJ,EAAS,aACQA,EAAS,iBAAiBuJ,CAAG,MAE5CvJ,EAAS,eACbA,EAAS,KAAA,GAEV0I,EAAetD,EAAa,KAAK;AAAA,EAGpC,GAEM6G,KAAuB,CAAC1C,MAAa;AAC1C,IAAKvJ,EAAS,aACQA,EAAS,iBAAiBuJ,CAAG,KAEjD+B,EAAe;AAAA,MACd,GAAGxC,EAAE,mBAAmB,CAAC;AAAA,MACzB,GAAGA,EAAE,kCAAkC,CAAC,GAAGS,EAAI,IAAI;AAAA,MACnD,MAAM;AACL,QAAAvJ,EAAS,OAAA;AAAA,MACV;AAAA,MACA,MAAM;AAAA,MAAC;AAAA,IAAA;AAAA,EAIX,GAEMkM,KAAqB,CAAC3C,MAAa;AACxC,IAAKvJ,EAAS,aACQA,EAAS,iBAAiBuJ,CAAG,KAEjDb,EAAetD,EAAa,KAAK;AAAA,EAGpC,GAEM+G,KAAuB,CAAC5C,MAE5BpO,gBAAAA,EAAAA,KAACI,GAAA,EAAM,KAAK,GAAG,MAAK,UAClB,UAAA;AAAA,IAAAZ,GAAS,4BAA4B4O,CAAG;AAAA,IACzCxO,gBAAAA,EAAAA,IAAC0D,GAAA,EAAW,SAAQ,eAAc,SAAS,MAAMyN,GAAmB3C,CAAG,GACtE,UAAAxO,gBAAAA,EAAAA,IAAC0Q,IAAA,EAAQ,MAAM,IAAI,OAAOlH,MAAgB,SAAS0D,EAAM,OAAO,KAAK,CAAC,IAAIA,EAAM,OAAO,KAAK,CAAC,EAAA,CAAG,EAAA,CACjG;AAAA,IACAlN,gBAAAA,EAAAA,IAAC0D,GAAA,EAAW,SAAQ,eAAc,SAAS,MAAMuN,GAAmBzC,CAAG,GACtE,UAAAxO,gBAAAA,EAAAA,IAAC2Q,IAAA,EAAS,MAAM,IAAI,OAAOnH,MAAgB,SAAS0D,EAAM,OAAO,OAAO,CAAC,IAAIA,EAAM,OAAO,OAAO,CAAC,EAAA,CAAG,EAAA,CACtG;AAAA,IACAlN,gBAAAA,EAAAA,IAAC0D,GAAA,EAAW,SAAQ,eAAc,SAAS,MAAMwN,GAAqB1C,CAAG,GACxE,UAAAxO,gBAAAA,EAAAA,IAAC4Q,IAAA,EAAW,MAAM,IAAI,OAAOpH,MAAgB,SAAS0D,EAAM,OAAO,IAAI,CAAC,IAAIA,EAAM,OAAO,IAAI,CAAC,EAAA,CAAG,EAAA,CAClG;AAAA,0BACCzJ,IAAA,EAAQ,cAAY,IAAC,WAAS,IAAC,UAAS,QAAO,OAAO,GAAGsK,EAAE,2BAA2B,CAAC,IACvF,UAAA/N,gBAAAA,EAAAA,IAAC0D,GAAA,EAAW,SAAQ,eAAc,SAAS2N,IAC1C,UAAArR,gBAAAA,EAAAA,IAAC8Q,MAAoB,MAAM,IAAI,OAAOtH,MAAgB,SAAS0D,EAAM,OAAO,MAAM,CAAC,IAAIA,EAAM,OAAO,MAAM,CAAC,EAAA,CAAG,GAC/G,GACD;AAAA,IACCtN,GAAS,2BAA2B4O,CAAG;AAAA,EAAA,GACzC,GAII8C,KAAoBC,GAAA,GAEpBC,KAAsB,YAAY;AACvC,QAAI;AACH,YAAMvC,EAAQ,KAAA;AAAA,IACf,QAAiB;AAChB;AAAA,IACD;AACA,IAAAtB,EAAe,EAAE,GACjB2D,IAAmB,SAAA;AAAA,EACpB,GAEMG,KAAwB,MAAM;AACnC,IAAA9D,EAAe,EAAE,GACZsB,EAAQ,gBACZA,EAAQ,OAAA,GAETqC,IAAmB,SAAA;AAAA,EACpB,GAEMI,KAAuB,YAAY;AACxC,QAAI;AACH,YAAMzM,EAAS,KAAA;AAAA,IAChB,QAAiB;AAChB;AAAA,IACD;AACA,IAAA0I,EAAe,EAAE,GACjB2D,IAAmB,SAAA;AAAA,EACpB,GAEMK,KAAyB,MAAM;AACpC,IAAAhE,EAAe,EAAE,GACZ1I,EAAS,gBACbA,EAAS,OAAA,GAEVqM,IAAmB,SAAA;AAAA,EACpB,GAEMM,KAAyB,YAAY;AAC1C,QAAI;AACH,YAAMtM,EAAW,KAAA;AAAA,IAClB,QAAiB;AAChB;AAAA,IACD;AACA,IAAAqI,EAAe,EAAE,GACjB2D,IAAmB,SAAA;AAAA,EACpB,GAEMO,KAA2B,MAAM;AACtC,IAAAlE,EAAe,EAAE,GACZrI,EAAW,gBACfA,EAAW,OAAA,GAEZgM,IAAmB,SAAA;AAAA,EACpB,GAEMQ,KAA0B,MAAM;AACrC,UAAMC,IAAUC,GAAW,YAAA;AAC3B,IAAKlF,MACHiF,EAAgB,KAAK,SAEvBzM,EAAW,OAAOyM,CAAO,GACzBpE,EAAetD,EAAa,OAAO;AAAA,EACpC,GAEM4H,KAAuB,CAACzD,MAAa;AAC1C,IAAKlJ,EAAW,aACQA,EAAW,iBAAiBkJ,CAAG,MAEhDlJ,EAAW,eACfA,EAAW,KAAA,GAEZqI,EAAetD,EAAa,OAAO;AAAA,EAGtC,GAEM6H,KAAyB,CAAC1D,MAAa;AAC5C,IAAKlJ,EAAW,aACQA,EAAW,iBAAiBkJ,CAAG,KAErD+B,EAAe;AAAA,MACd,GAAGxC,EAAE,mBAAmB,CAAC;AAAA,MACzB,GAAGA,EAAE,mCAAmC,CAAC,GAAGS,EAAI,IAAI;AAAA,MACpD,MAAM;AACL,QAAAlJ,EAAW,OAAA;AAAA,MACZ;AAAA,MACA,MAAM;AAAA,MAAC;AAAA,IAAA;AAAA,EAIX,GAEM6M,KAAuB,CAAC3D,MAAa;AAC1C,IAAKlJ,EAAW,aACQA,EAAW,iBAAiBkJ,CAAG,KAErDb,EAAetD,EAAa,OAAO;AAAA,EAGtC,GAEM+H,KAAyB,CAAC5D,MAE9BpO,gBAAAA,EAAAA,KAACI,GAAA,EAAM,KAAK,GAAG,MAAK,UAClB,UAAA;AAAA,IAAAZ,GAAS,8BAA8B4O,CAAG;AAAA,IAC3CxO,gBAAAA,EAAAA,IAAC0D,GAAA,EAAW,SAAQ,eAAc,SAAS,MAAMyO,GAAqB3D,CAAG,GACxE,UAAAxO,gBAAAA,EAAAA,IAAC0Q,IAAA,EAAQ,MAAM,IAAI,OAAOlH,MAAgB,SAAS0D,EAAM,OAAO,KAAK,CAAC,IAAIA,EAAM,OAAO,KAAK,CAAC,EAAA,CAAG,EAAA,CACjG;AAAA,IACAlN,gBAAAA,EAAAA,IAAC0D,GAAA,EAAW,SAAQ,eAAc,SAAS,MAAMuO,GAAqBzD,CAAG,GACxE,UAAAxO,gBAAAA,EAAAA,IAAC2Q,IAAA,EAAS,MAAM,IAAI,OAAOnH,MAAgB,SAAS0D,EAAM,OAAO,OAAO,CAAC,IAAIA,EAAM,OAAO,OAAO,CAAC,EAAA,CAAG,EAAA,CACtG;AAAA,IACAlN,gBAAAA,EAAAA,IAAC0D,GAAA,EAAW,SAAQ,eAAc,SAAS,MAAMwO,GAAuB1D,CAAG,GAC1E,UAAAxO,gBAAAA,EAAAA,IAAC4Q,IAAA,EAAW,MAAM,IAAI,OAAOpH,MAAgB,SAAS0D,EAAM,OAAO,IAAI,CAAC,IAAIA,EAAM,OAAO,IAAI,CAAC,EAAA,CAAG,EAAA,CAClG;AAAA,0BACCzJ,IAAA,EAAQ,cAAY,IAAC,WAAS,IAAC,UAAS,QAAO,OAAO,GAAGsK,EAAE,2BAA2B,CAAC,IACvF,UAAA/N,gBAAAA,EAAAA,IAAC0D,GAAA,EAAW,SAAQ,eAAc,SAAS2O,IAC1C,UAAArS,gBAAAA,EAAAA,IAAC8Q,MAAoB,MAAM,IAAI,OAAOtH,MAAgB,SAAS0D,EAAM,OAAO,MAAM,CAAC,IAAIA,EAAM,OAAO,MAAM,CAAC,EAAA,CAAG,GAC/G,GACD;AAAA,IACCtN,GAAS,6BAA6B4O,CAAG;AAAA,EAAA,GAC3C,GAII8D,KAA6B,MAAM;AACxC,UAAMC,IAAqB1D,EAAe,iBAAA;AAC1C,IAAI0D,KACHhC,EAAe;AAAA,MACd,GAAGxC,EAAE,mBAAmB,CAAC;AAAA,MACzB,GAAGA,EAAE,uDAAuD,CAAC,GAAGwE,EAAmB,KAAK,IAAI;AAAA,MAC5F,YAAY;AACX,cAAMzE,EACJ,OAAOyE,EAAmB,KAAK,EAC/B,KAAK,YAAY;AACjB,UAAAnN,EAAsB;AAAA,YACrB,GAAG2I,EAAE,oBAAoB,CAAC;AAAA,YAC1B,GAAGA,EAAE,+CAA+C,CAAC;AAAA,UAAA,GAEtDc,EAAe,YAAA;AAAA,QAChB,CAAC,EACA,MAAM,CAAC1J,MAAU;AACjB,UAAAoL,EAAe;AAAA,YACd,GAAGxC,EAAE,iBAAiB,CAAC;AAAA,YACvBxG,GAAoBpC,CAAK;AAAA,YACzBqN,GAA0BrN,CAAK;AAAA,UAAA;AAAA,QAEjC,CAAC;AAAA,MACH;AAAA,MACA,MAAM;AAAA,MAAC;AAAA,IAAA;AAAA,EAGV,GAEM0L,KAAiC,MAAM;AAC5C,IAAAhD,EAA0BxD,EAAa,IAAI;AAAA,EAC5C,GAEMgH,KAAkC,MAAM;AAC7C,IAAAxD,EAA0BxD,EAAa,KAAK;AAAA,EAC7C,GAEMgI,KAAoC,MAAM;AAC/C,IAAAxE,EAA0BxD,EAAa,OAAO;AAAA,EAC/C,GAEMoI,KAA8B,MAAM;AACzC,IAAA5E,EAA0B,EAAE;AAAA,EAC7B,GAGM6E,KAA4B,MAEhCtS,gBAAAA,EAAAA,KAACiE,MAAK,SAAS,iBAAiB,OAAO,EAAE,OAAO,SAC/C,UAAA;AAAA,IAAAjE,gBAAAA,OAACI,KAAM,OAAM,OAAM,KAAK,OAAO,MAAK,UACnC,UAAA;AAAA,MAAAR,gBAAAA,EAAAA,IAACS,GAAA,EAAO,OAAO,SAAS,aAAaT,gBAAAA,EAAAA,IAAC2S,IAAA,CAAA,CAAS,GAAI,SAASxC,IAC1D,UAAA,GAAGpC,EAAE,cAAc,CAAC,IACtB;AAAA,MACA/N,gBAAAA,EAAAA,IAACS,GAAA,EAAO,OAAO,QAAQ,aAAaT,gBAAAA,EAAAA,IAAC2Q,IAAA,CAAA,CAAS,GAAI,SAASE,IACzD,UAAA,GAAG9C,EAAE,2BAA2B,CAAC,GAAA,CACnC;AAAA,IAAA,GACD;AAAA,IACA/N,gBAAAA,EAAAA,IAACqE,IAAA,EAAK,OAAO,cAAc,SAAS,YAAY,OAAO,EAAE,OAAO,UAAQ,CAAG;AAAA,EAAA,GAC5E,GAIIuO,KAA6B,MAEjCxS,gBAAAA,EAAAA,KAACiE,MAAK,SAAS,iBAAiB,OAAO,EAAE,OAAO,SAC/C,UAAA;AAAA,IAAAjE,gBAAAA,OAACI,KAAM,OAAM,OAAM,KAAK,OAAO,MAAK,UACnC,UAAA;AAAA,MAAAR,gBAAAA,EAAAA,IAACS,GAAA,EAAO,OAAO,SAAS,aAAaT,gBAAAA,EAAAA,IAAC2S,IAAA,CAAA,CAAS,GAAI,SAAS5B,IAC1D,UAAA,GAAGhD,EAAE,cAAc,CAAC,IACtB;AAAA,MACA/N,gBAAAA,EAAAA,IAACS,GAAA,EAAO,OAAO,QAAQ,aAAaT,gBAAAA,EAAAA,IAAC2Q,IAAA,CAAA,CAAS,GAAI,SAASU,IACzD,UAAA,GAAGtD,EAAE,2BAA2B,CAAC,GAAA,CACnC;AAAA,IAAA,GACD;AAAA,IACA/N,gBAAAA,EAAAA,IAACqE,IAAA,EAAK,OAAO,cAAc,SAAS,YAAY,OAAO,EAAE,OAAO,UAAQ,CAAG;AAAA,EAAA,GAC5E,GAIIwO,KAA+B,MAEnCzS,gBAAAA,EAAAA,KAACiE,MAAK,SAAS,iBAAiB,OAAO,EAAE,OAAO,SAC/C,UAAA;AAAA,IAAAjE,gBAAAA,OAACI,KAAM,OAAM,OAAM,KAAK,OAAO,MAAK,UACnC,UAAA;AAAA,MAAAR,gBAAAA,EAAAA,IAACS,GAAA,EAAO,OAAO,SAAS,aAAaT,gBAAAA,EAAAA,IAAC2S,IAAA,CAAA,CAAS,GAAI,SAASb,IAC1D,UAAA,GAAG/D,EAAE,cAAc,CAAC,IACtB;AAAA,MACA/N,gBAAAA,EAAAA,IAACS,GAAA,EAAO,OAAO,QAAQ,aAAaT,gBAAAA,EAAAA,IAAC2Q,IAAA,CAAA,CAAS,GAAI,SAAS0B,IACzD,UAAA,GAAGtE,EAAE,2BAA2B,CAAC,GAAA,CACnC;AAAA,IAAA,GACD;AAAA,IACA/N,gBAAAA,EAAAA,IAACqE,IAAA,EAAK,OAAO,cAAc,SAAS,YAAY,OAAO,EAAE,OAAO,UAAQ,CAAG;AAAA,EAAA,GAC5E,GAIIyO,KAAmC,4BAEtCzO,IAAA,EAAK,SAAS,iBAAiB,OAAO,EAAE,OAAO,SAC/C,UAAArE,gBAAAA,EAAAA,IAACQ,KAAM,OAAM,SAAQ,KAAK,OAAO,MAAK,UACrC,UAAAR,gBAAAA,EAAAA;AAAAA,IAACS;AAAA,IAAA;AAAA,MACA,UAAU,CAACoO,EAAe,iBAAA;AAAA,MAC1B,OAAO;AAAA,MACP,mCAAc+B,IAAA,EAAW;AAAA,MACzB,SAAS0B;AAAA,MAER,UAAA,GAAGvE,EAAE,iBAAiB,CAAC;AAAA,IAAA;AAAA,EAAA,GAE1B,EAAA,CACD;AAIF,SACC3N,gBAAAA,EAAAA,KAAC+C,GAAA,EAAM,GAAE,MAAK,OAAO,EAAE,QAAAhC,GAAgB,SAAS,QAAQ,eAAe,SAAA,GACtE,UAAA;AAAA,IAAAnB,gBAAAA,EAAAA,IAAC+S,IAAA,EAAK,SAAQ,SAAQ,OAAOvF,GAAW,UAAUC,GACjD,UAAArN,gBAAAA,EAAAA,KAAC2S,GAAK,MAAL,EACA,UAAA;AAAA,MAAA/S,gBAAAA,EAAAA,IAAC+S,GAAK,KAAL,EAAS,OAAM,SAAS,UAAA,GAAGhF,EAAE,UAAU,CAAC,GAAA,CAAG;AAAA,MAC5C/N,gBAAAA,EAAAA,IAAC+S,GAAK,KAAL,EAAS,OAAM,UAAU,UAAA,GAAGhF,EAAE,QAAQ,CAAC,GAAA,CAAG;AAAA,MAC3C/N,gBAAAA,EAAAA,IAAC+S,GAAK,KAAL,EAAS,OAAM,YAAY,UAAA,GAAGhF,EAAE,QAAQ,CAAC,GAAA,CAAG;AAAA,MAC7C/N,gBAAAA,EAAAA,IAAC+S,GAAK,KAAL,EAAS,OAAM,aAAa,UAAA,GAAGhF,EAAE,UAAU,CAAC,GAAA,CAAG;AAAA,MAChD/N,gBAAAA,EAAAA,IAAC+S,GAAK,KAAL,EAAS,OAAM,gBAAgB,UAAA,GAAGhF,EAAE,eAAe,CAAC,GAAA,CAAG;AAAA,IAAA,EAAA,CACzD,EAAA,CACD;AAAA,IACA/N,gBAAAA,EAAAA;AAAAA,MAACmD;AAAA,MAAA;AAAA,QACA,YAAU;AAAA,QACV,IAAG;AAAA,QACH,OAAO;AAAA,UACN,SAASqK,MAAc,UAAU,SAAS;AAAA,UAC1C,OAAO;AAAA,UACP,MAAM;AAAA,UACN,WAAW;AAAA,UACX,UAAU;AAAA,QAAA;AAAA,QAGX,UAAAxN,gBAAAA,EAAAA;AAAAA,UAACgT;AAAA,UAAA;AAAA,YACA,SAAS/E;AAAA,YACT,YAAY;AAAA,YACZ,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,YAAY;AAAA,YACZ,YAAYgB;AAAA,YACZ,mBAAmB;AAAA,YACnB,SAAS;AAAA,YACT,kBAAkB;AAAA,YAClB,kBAAkB;AAAA,YAClB,UAAU;AAAA,YACV,WAAWC;AAAA,YACX,SAAS,CAAC,CAAC/J;AAAA,YACX,OAAAA;AAAA,YACA,oBAAoB;AAAA,YACpB,UAAUoJ;AAAA,YACV,oBAAoBmE,GAAA;AAAA,YACpB,kBAAkBjC;AAAA,YAClB,oBAAoB7Q,GAAS;AAAA,YAC7B,UAAUmQ;AAAA,UAAA;AAAA,QAAA;AAAA,MACX;AAAA,IAAA;AAAA,IAED/P,gBAAAA,EAAAA;AAAAA,MAACmD;AAAA,MAAA;AAAA,QACA,YAAU;AAAA,QACV,IAAG;AAAA,QACH,OAAO;AAAA,UACN,SAASqK,MAAc,WAAW,SAAS;AAAA,UAC3C,MAAM;AAAA,UACN,WAAW;AAAA,UACX,UAAU;AAAA,QAAA;AAAA,QAGX,UAAAxN,gBAAAA,EAAAA;AAAAA,UAACgT;AAAA,UAAA;AAAA,YACA,SAAS7E;AAAA,YACT,YAAY;AAAA,YACZ,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,YAAY;AAAA,YACZ,YAAYlJ;AAAA,YACZ,mBAAmB;AAAA,YACnB,SAAS;AAAA,YACT,kBAAkB;AAAA,YAClB,kBAAkB;AAAA,YAClB,UAAU;AAAA,YACV,WAAWmK;AAAA,YACX,SAAS,CAAC,CAACjK;AAAA,YACX,OAAAA;AAAA,YACA,oBAAoB;AAAA,YACpB,UAAUsJ;AAAA,YACV,kBAAkB2C;AAAA,YAClB,oBAAoBxR,GAAS;AAAA,YAC7B,UAAUoQ;AAAA,YACV,oBAAoB4C,GAAA;AAAA,UAA2B;AAAA,QAAA;AAAA,MAChD;AAAA,IAAA;AAAA,IAED5S,gBAAAA,EAAAA;AAAAA,MAACmD;AAAA,MAAA;AAAA,QACA,YAAU;AAAA,QACV,IAAG;AAAA,QACH,OAAO;AAAA,UACN,SAASqK,MAAc,aAAa,SAAS;AAAA,UAC7C,MAAM;AAAA,UACN,WAAW;AAAA,UACX,UAAU;AAAA,QAAA;AAAA,QAGX,UAAAxN,gBAAAA,EAAAA;AAAAA,UAACgT;AAAA,UAAA;AAAA,YACA,SAAS5E;AAAA,YACT,YAAY;AAAA,YACZ,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,YAAY;AAAA,YACZ,YAAY9I;AAAA,YACZ,mBAAmB;AAAA,YACnB,SAAS;AAAA,YACT,kBAAkB;AAAA,YAClB,kBAAkB;AAAA,YAClB,UAAU;AAAA,YACV,WAAWgK;AAAA,YACX,SAAS,CAAC,CAACnK;AAAA,YACX,OAAAA;AAAA,YACA,oBAAoB;AAAA,YACpB,UAAUuJ;AAAA,YACV,oBAAoBmE,GAAA;AAAA,YACpB,kBAAkBT;AAAA,YAClB,oBAAoBxS,GAAS;AAAA,YAC7B,UAAUqQ;AAAA,UAAA;AAAA,QAAA;AAAA,MACX;AAAA,IAAA;AAAA,IAEDjQ,gBAAAA,EAAAA;AAAAA,MAACmD;AAAA,MAAA;AAAA,QACA,YAAU;AAAA,QACV,IAAG;AAAA,QACH,OAAO;AAAA,UACN,SAASqK,MAAc,cAAc,SAAS;AAAA,UAC9C,MAAM;AAAA,UACN,WAAW;AAAA,UACX,UAAU;AAAA,QAAA;AAAA,QAGX,UAAAxN,gBAAAA,EAAAA;AAAAA,UAACgT;AAAA,UAAA;AAAA,YACA,SAAS3E;AAAA,YACT,YAAY;AAAA,YACZ,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,YAAY;AAAA,YACZ,YAAYmB;AAAA,YACZ,mBAAmB;AAAA,YACnB,SAAS;AAAA,YACT,kBAAkB;AAAA,YAClB,kBAAkB;AAAA,YAClB,UAAU;AAAA,YACV,WAAWC;AAAA,YACX,SAAS,CAAC,CAACtK;AAAA,YACX,OAAAA;AAAA,YACA,oBAAoB;AAAA,YACpB,UAAUwJ;AAAA,YACV,UAAUuB;AAAA,UAAA;AAAA,QAAA;AAAA,MACX;AAAA,IAAA;AAAA,IAEDlQ,gBAAAA,EAAAA;AAAAA,MAACmD;AAAA,MAAA;AAAA,QACA,YAAU;AAAA,QACV,IAAG;AAAA,QACH,OAAO;AAAA,UACN,SAASqK,MAAc,iBAAiB,SAAS;AAAA,UACjD,OAAO;AAAA,UACP,MAAM;AAAA,UACN,WAAW;AAAA,UACX,UAAU;AAAA,QAAA;AAAA,QAGX,UAAAxN,gBAAAA,EAAAA;AAAAA,UAACgT;AAAA,UAAA;AAAA,YACA,SAAS1E;AAAA,YACT,YAAY;AAAA,YACZ,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,YAAY;AAAA,YACZ,YAAYO;AAAA,YACZ,mBAAmB;AAAA,YACnB,SAAS;AAAA,YACT,kBAAkB;AAAA,YAClB,kBAAkB;AAAA,YAClB,UAAU;AAAA,YACV,WAAWC;AAAA,YACX,SAAS,CAAC,CAAC3J;AAAA,YACX,OAAAA;AAAA,YACA,oBAAoB;AAAA,YACpB,UAAUyJ;AAAA,YACV,oBAAoBkE,GAAA;AAAA,YACpB,UAAUnD;AAAA,UAAA;AAAA,QAAA;AAAA,MACX;AAAA,IAAA;AAAA,IAEAjC,MAAgBrD,EAAa,OAC7BrK,gBAAAA,EAAAA;AAAAA,MAACwE;AAAA,MAAA;AAAA,QACA,WAAWgN;AAAA,QACX,QAAQ;AAAA,QACR,YAAYvC;AAAA,QACZ,eAAewC;AAAA,QACf,SAAS1E;AAAA,MAAA;AAAA,IAAA,IAEP;AAAA,IACHW,MAAgBrD,EAAa,QAC7BrK,gBAAAA,EAAAA;AAAAA,MAACwG;AAAA,MAAA;AAAA,QACA,WAAWkL;AAAA,QACX,QAAQ;AAAA,QACR,YAAYzM;AAAA,QACZ,eAAe0M;AAAA,QACf,SAAS1E;AAAA,MAAA;AAAA,IAAA,IAEP;AAAA,IACHS,MAAgBrD,EAAa,UAC7BrK,gBAAAA,EAAAA;AAAAA,MAACN;AAAA,MAAA;AAAA,QACA,WAAWkS;AAAA,QACX,QAAQ;AAAA,QACR,YAAYtM;AAAA,QACZ,eAAeuM;AAAA,QACf,SAAS7E;AAAA,MAAA;AAAA,IAAA,IAEP;AAAA,IACHY,MAA2BvD,EAAa,OACzCrK,gBAAAA,EAAAA;AAAAA,MAAC8H;AAAA,MAAA;AAAA,QACA,YAAYmH;AAAA,QACZ,QAAQ,CAAC,CAACrB;AAAA,QACV,OAAO6E;AAAA,MAAA;AAAA,IAAA,IACL;AAAA,IACF7E,MAA2BvD,EAAa,QACzCrK,gBAAAA,EAAAA;AAAAA,MAAC8H;AAAA,MAAA;AAAA,QACA,YAAY7C;AAAA,QACZ,QAAQ,CAAC,CAAC2I;AAAA,QACV,OAAO6E;AAAA,MAAA;AAAA,IAAA,IACL;AAAA,IACF7E,MAA2BvD,EAAa,UACzCrK,gBAAAA,EAAAA;AAAAA,MAAC8H;AAAA,MAAA;AAAA,QACA,YAAYxC;AAAA,QACZ,QAAQ,CAAC,CAACsI;AAAA,QACV,OAAO6E;AAAA,MAAA;AAAA,IAAA,IACL;AAAA,EAAA,GAEJ;AAEF;ACjkCO,SAASQ,GAAqB,EAAE,QAAA9R,IAAS,SAAS,OAAAD,IAAQ,UAAqC;AACvF,EAAAiM,GAAA;AACd,QAAM+F,IAAgB9F,GAAiB,eAAe,GAChDC,IAAY,EAAE,gBAAgB,MAAM,GAAC,GACrC,EAAE,aAAA7D,EAAA,IAAgBC,GAAA,GAClB,CAACtE,GAAOoI,CAAQ,IAAI7L,EAA6B,MAAS,GAC1DyR,IAAcpO,GAAqDC,EAAsB,QAAQ,GACjG,CAAC0I,GAAaC,CAAc,IAAIjM,EAAiB,EAAE,GACnD0R,IAAUlF,GAAmC,IAAI,GAGjDmF,IAAW,CAAC7E,MACVA,EAAI,IAGN,EAAE,YAAAzG,EAAA,IAAeuL,GAA2C;AAAA,IACjE,aAAa,CAAA;AAAA,IACb,MAAM;AAAA,EAAA,CACN,GAGKC,IAAsBjS;AAAA,IAC3B;AAAA,IACAyG;AAAA,IACA;AAAA,IACA;AAAA,EAAA,GAGK,EAAE,YAAYyL,GAAa,WAAAC,EAAA,IAAcvO,GAAiD;AAAA,IAC/F,MAAM;AAAA,IACN,SAASiO;AAAA,IACT,OAAOD;AAAA,IACP,WAAA7F;AAAA,IACA,UAAU;AAAA,IACV,aAAa;AAAA,IACb,gBAAgB,CAACtF,MAAe;AAAA,IAEhC;AAAA,IACA,WAAW,CAACA,MAAe;AAAA,IAE3B;AAAA,IACA,SAAS,CAAC5C,GAAOjB,MAAW;AAC3B,MAAAqJ,EAASpI,CAAK,GACdC,EAAsB,UAAUlF,EAAA,EAAqB,EAAE,kBAAkB,GAAGiF,GAAOjB,CAAM;AAAA,IAC1F;AAAA,EAAA,CACA,GAGKwP,IAAuBpS;AAAA,IAC5B;AAAA,IACAkS;AAAA,IACA;AAAA,IACA;AAAA,EAAA,GAGKG,KAAY,QAAQxS,CAAM,YAE1ByS,2BACJhE,IAAA,EACA,UAAA;AAAA,IAAA5P,gBAAAA,EAAAA;AAAAA,MAAC6P;AAAA,MAAA;AAAA,QACA,WAAU;AAAA,QACV,UAAS;AAAA,QACT,MAAM;AAAA,QACN,QAAO;AAAA,QACP,QAAQ,CAACC,MACR9P,gBAAAA,EAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACA,OAAO,EAAE,cAAc,IAAI,QAAQ,QAAQ,WAAW,OAAA;AAAA,YACtD,KACC8P,EAAK,IAAI,QAAQA,EAAK,IAAI,KAAK,SAAS,KAAKA,EAAK,IAAI,KAAK,MAAM,IAAIrD;AAAA,UAAA;AAAA,QAAA;AAAA,QAIxE,iBAAgB;AAAA,QAChB,OAAM;AAAA,MAAA;AAAA,IAAA;AAAA,IAEPzM,gBAAAA,EAAAA;AAAAA,MAAC6P;AAAA,MAAA;AAAA,QACA,WAAU;AAAA,QACV,UAAS;AAAA,QACT,MAAM;AAAA,QACN,QAAO;AAAA,QACP,iBAAgB;AAAA,MAAA;AAAA,IAAA;AAAA,IAEjB7P,gBAAAA,EAAAA;AAAAA,MAAC6P;AAAA,MAAA;AAAA,QACA,WAAU;AAAA,QACV,UAAS;AAAA,QACT,QAAO;AAAA,QACP,MAAM;AAAA,QACN,iBAAgB;AAAA,MAAA;AAAA,IAAA;AAAA,IAEjB7P,gBAAAA,EAAAA;AAAAA,MAAC6P;AAAA,MAAA;AAAA,QACA,WAAU;AAAA,QACV,UAAS;AAAA,QACT,QAAO;AAAA,QACP,MAAM;AAAA,QACN,iBAAgB;AAAA,MAAA;AAAA,IAAA;AAAA,IAEjB7P,gBAAAA,EAAAA;AAAAA,MAAC6P;AAAA,MAAA;AAAA,QACA,WAAU;AAAA,QACV,UAAS;AAAA,QACT,QAAO;AAAA,QACP,MAAM;AAAA,QACN,iBAAgB;AAAA,MAAA;AAAA,IAAA;AAAA,IAEjB7P,gBAAAA,EAAAA;AAAAA,MAAC6P;AAAA,MAAA;AAAA,QACA,WAAU;AAAA,QACV,UAAS;AAAA,QACT,QAAO;AAAA,QACP,MAAM;AAAA,QACN,iBAAgB;AAAA,QAChB,mBAAmB;AAAA,MAAA;AAAA,IAAA;AAAA,IAEpB7P,gBAAAA,EAAAA;AAAAA,MAAC6P;AAAA,MAAA;AAAA,QACA,WAAU;AAAA,QACV,UAAS;AAAA,QACT,QAAO;AAAA,QACP,MAAM;AAAA,QACN,iBAAgB;AAAA,QAChB,mBAAmB;AAAA,MAAA;AAAA,IAAA;AAAA,IAEpB7P,gBAAAA,EAAAA;AAAAA,MAAC6P;AAAA,MAAA;AAAA,QACA,WAAU;AAAA,QACV,UAAS;AAAA,QACT,MAAM;AAAA,QACN,QAAO;AAAA,QACP,QAAQ,CAACC,MAAS;AACjB,cAAI,CAACA,EAAK,IAAI;AACb,mBAAO9P,gBAAAA,EAAAA,IAACqD,GAAA,EAAK,GAAE,UAAS,UAAA,iBAAa;AAGtC,gBAAMwQ,wBAAY,KAAA;AAClB,UAAAA,EAAM,SAAS,GAAG,GAAG,GAAG,CAAC;AACzB,gBAAMC,IAAU,IAAI,KAAKhE,EAAK,IAAI,cAAc;AAChD,UAAAgE,EAAQ,SAAS,GAAG,GAAG,GAAG,CAAC;AAE3B,gBAAMC,IAAWD,EAAQ,QAAA,IAAYD,EAAM,QAAA,GACrCG,IAAW,KAAK,KAAKD,KAAY,MAAO,KAAK,KAAK,GAAG;AAI3D,cAAIE,KAAa,KAAK,IAAI,GAAG,KAAK,IAAI,KAAMD,IAD5B,MACkD,GAAG,CAAC,GAGlEE,IAAQ,SACRlQ,IAAQ;AAEZ,UAAIgQ,IAAW,KAEdE,IAAQ,OACRD,KAAa,KACbjQ,IAAQ,cAAc,KAAK,IAAIgQ,CAAQ,CAAC,OAAO,KAAK,IAAIA,CAAQ,MAAM,IAAI,MAAM,EAAE,MACxEA,MAAa,KACvBE,IAAQ,OACRD,KAAa,GACbjQ,IAAQ,gBACEgQ,KAAY,KACtBE,IAAQ,OACRlQ,IAAQ,GAAGgQ,CAAQ,OAAOA,MAAa,IAAI,MAAM,EAAE,MACzCA,KAAY,MACtBE,IAAQ,UACRlQ,IAAQ,GAAGgQ,CAAQ,WACTA,KAAY,MACtBE,IAAQ,UACRlQ,IAAQ,GAAGgQ,CAAQ,YAEnBE,IAAQ,SACRlQ,IAAQ,GAAGgQ,CAAQ;AAGpB,gBAAMG,IAAcH,IAAW,IAC5B,cAAcF,EAAQ,mBAAA,CAAoB,KAC1C,aAAaA,EAAQ,mBAAA,CAAoB;AAE5C,iBACC9T,gBAAAA,EAAAA,IAACyD,IAAA,EAAQ,OAAO0Q,GAAa,WAAS,IACrC,UAAA/T,gBAAAA,EAAAA,KAACI,GAAA,EAAM,KAAI,MAAK,MAAK,UACpB,UAAA;AAAA,YAAAR,gBAAAA,EAAAA;AAAAA,cAACoU;AAAA,cAAA;AAAA,gBACA,MAAM;AAAA,gBACN,WAAW;AAAA,gBACX,WAAS;AAAA,gBACT,UAAU,CAAC,EAAE,OAAOJ,IAAW,IAAI,MAAMC,IAAY,OAAAC,EAAA,CAAO;AAAA,cAAA;AAAA,YAAA;AAAA,YAE7DlU,gBAAAA,EAAAA,IAACqD,GAAA,EAAK,MAAK,MAAK,GAAG2Q,IAAW,IAAI,QAAQ,QAAW,IAAIA,KAAY,IAAI,MAAM,QAC7E,UAAAhQ,EAAA,CACF;AAAA,UAAA,EAAA,CACD,EAAA,CACD;AAAA,QAEF;AAAA,QACA,iBAAgB;AAAA,MAAA;AAAA,IAAA;AAAA,IAEjBhE,gBAAAA,EAAAA;AAAAA,MAAC6P;AAAA,MAAA;AAAA,QACA,WAAU;AAAA,QACV,UAAS;AAAA,QACT,QAAO;AAAA,QACP,iBAAgB;AAAA,MAAA;AAAA,IAAA;AAAA,IAEjB7P,gBAAAA,EAAAA;AAAAA,MAAC6P;AAAA,MAAA;AAAA,QACA,WAAU;AAAA,QACV,UAAS;AAAA,QACT,QAAO;AAAA,QACP,iBAAgB;AAAA,MAAA;AAAA,IAAA;AAAA,EACjB,GACD,GAGKwE,IAA8B,MAAM;AAEzC,IAAAtM,EAAW,OAAOuM,GAAY,aAAa,GAGvCvM,KAAc,CAACwL,EAAoB,kBACtCA,EAAoB,QAAQ,YAAA,GAG7B5F,EAAe,UAAU;AAAA,EAC1B,GAEM4G,IAA0B,MAAM;AACrC,IAAIf,EAAY,sBACfjD,EAAe;AAAA,MACd,GAAGrQ,EAAA,EAAqB,EAAE,mBAAmB,CAAC;AAAA,MAC9C,GAAGA,EAAA,EAAqB,EAAE,oDAAoD,CAAC,GAAGsT,EAAY,iBAAA,EAAmB,KAAK,IAAI;AAAA,MAC1H,YAAY;AACX,cAAML,EACJ,OAAOK,EAAY,iBAAA,EAAmB,KAAK,EAC3C,KAAK,YAAY;AACjB,UAAApO,EAAsB;AAAA,YACrB,GAAGlF,EAAA,EAAqB,EAAE,oBAAoB,CAAC;AAAA,YAC/C,GAAGA,EAAA,EAAqB,EAAE,4CAA4C,CAAC;AAAA,UAAA,GAIxEsT,EAAY,YAAA,GAGRA,KAAe,CAACE,EAAqB,kBACxCA,EAAqB,QAAQ,YAAA;AAAA,QAE/B,CAAC,EACA,MAAM,CAACvO,MAAU;AACjB,UAAAoL,EAAe;AAAA,YACd,GAAGrQ,EAAA,EAAqB,EAAE,iBAAiB,CAAC;AAAA,YAC5CqH,GAAoBpC,CAAK;AAAA,YACzBqN,GAA0BrN,CAAK;AAAA,UAAA;AAAA,QAEjC,CAAC;AAAA,MACH;AAAA,MACA,MAAM;AAAA,MAAE;AAAA,IAAA;AAAA,EAGX,GAEMqP,IAA2B,MAAM;AACtC,IAAA7G,EAAe,EAAE;AAAA,EAClB,GAEM8G,IAAqB,OAAOxR,GAAsByR,MAAwB;AAC/E,UAAMC,IAAoC5M,EAAW,iBAAA;AACrD,QAAI4M;AACH,UAAI;AAEH,YADA5M,EAAW,SAAA,GACP,CAAC4M,EAAS,QAAQ,CAACA,EAAS,KAAK,OAAO;AAC3C,UAAApE,EAAe;AAAA,YACd,GAAGrQ,EAAA,EAAqB,EAAE,kBAAkB,CAAC;AAAA,YAC7C,GAAGA,EAAA,EAAqB,EAAE,mDAAmD,CAAC;AAAA,YAC9E;AAAA,UAAA;AAED;AAAA,QACD;AACA,cAAMiT,EACJ,OAAOwB,EAAS,KAAK,OAAOA,EAAS,gBAAgBA,EAAS,MAAMA,EAAS,WAAW,EACxF,KAAK,OAAOC,MAA0B;AAEtC,UAAA7M,EAAW,OAAA,GAGPA,KAAc,CAACwL,EAAoB,kBACtCA,EAAoB,QAAQ,YAAA,GAG7BC,EAAY,OAAOoB,CAAQ,GAGvBpB,KAAe,CAACE,EAAqB,kBACxCA,EAAqB,QAAQ,YAAA,GAG9BtO,EAAsB;AAAA,YACrB,GAAGlF,EAAA,EAAqB,EAAE,oBAAoB,CAAC;AAAA,YAC/C,GAAGA,EAAA,EAAqB,EAAE,0CAA0C,CAAC;AAAA,UAAA,GAElEwU,KACHA,EAAS,EAAI;AAAA,QAEf,CAAC,EACA,MAAM,CAACvP,MAAU;AACjB,UAAAoL,EAAe;AAAA,YACd,GAAGrQ,EAAA,EAAqB,EAAE,iBAAiB,CAAC;AAAA,YAC5CqH,GAAoBpC,CAAK;AAAA,YACzBqN,GAA0BrN,CAAK;AAAA,UAAA;AAAA,QAEjC,CAAC;AAAA,MACH,SAAS0P,GAAI;AACZ,QAAAtE,EAAe;AAAA,UACd,GAAGrQ,EAAA,EAAqB,EAAE,iBAAiB,CAAC;AAAA,UAC5CqH,GAAoBsN,CAAE;AAAA,UACtBrC,GAA0BqC,CAAE;AAAA,QAAA;AAAA,MAE9B;AAAA,EAEF,GAGMC,IAAuB,4BAE1BzQ,IAAA,EAAK,SAAS,iBAAiB,OAAO,EAAE,OAAO,SAC/C,UAAAjE,gBAAAA,EAAAA,KAACI,KAAM,OAAM,SAAQ,KAAK,OAAO,MAAK,UACrC,UAAA;AAAA,IAAAR,gBAAAA,EAAAA,IAACS,GAAA,EAAO,OAAO,SAAS,aAAaT,gBAAAA,EAAAA,IAAC2S,IAAA,CAAA,CAAS,GAAI,SAAS0B,GAC1D,UAAAnU,EAAA,EAAqB,EAAE,cAAc,GACvC;AAAA,0BACCO,GAAA,EAAO,UAAU,CAAC+S,EAAY,iBAAA,GAAoB,OAAO,OAAO,aAAaxT,gBAAAA,EAAAA,IAAC4Q,IAAA,CAAA,CAAW,GAAI,SAAS2D,GACrG,cAAqB,EAAE,iBAAiB,EAAA,CAC1C;AAAA,EAAA,EAAA,CACD,EAAA,CACD;AAIF,SACCnU,gBAAAA,EAAAA,KAAC+C,GAAA,EAAM,GAAE,MAAK,OAAO,EAAE,QAAAhC,GAAgB,SAAS,QAAQ,eAAe,SAAA,GACtE,UAAA;AAAA,IAAAnB,gBAAAA,EAAAA;AAAAA,MAACmD;AAAA,MAAA;AAAA,QACA,YAAU;AAAA,QACV,OAAO;AAAA,UACN,QAAQwQ;AAAA,UACR,SAAS;AAAA,UACT,OAAO;AAAA,UACP,MAAM;AAAA,UACN,WAAW;AAAA,UACX,UAAU;AAAA,QAAA;AAAA,QAGX,UAAA3T,gBAAAA,EAAAA;AAAAA,UAACgT;AAAA,UAAA;AAAA,YACA,SAAAI;AAAA,YACA,YAAY;AAAA,YACZ,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,YAAY;AAAA,YACZ,YAAYI;AAAA,YACZ,mBAAmB;AAAA,YACnB,SAAS;AAAA,YACT,kBAAkB;AAAA,YAClB,kBAAkB;AAAA,YAClB,UAAU;AAAA,YACV,WAAAC;AAAA,YACA,SAAS,CAAC,CAACtO;AAAA,YACX,OAAAA;AAAA,YACA,oBAAoB;AAAA,YACpB,UAAAkO;AAAA,YACA,oBAAoByB,EAAA;AAAA,YACpB,UAAUlB;AAAA,UAAA;AAAA,QAAA;AAAA,MACX;AAAA,IAAA;AAAA,IAEAlG,MAAgB,aAChB1N,gBAAAA,EAAAA;AAAAA,MAAC0G;AAAA,MAAA;AAAA,QACA,WAAW8N;AAAA,QACX,QAAQ;AAAA,QACR,YAAAzM;AAAA,QACA,cAAc0M;AAAA,QACd,eAAeD;AAAA,MAAA;AAAA,IAAA,IAEb;AAAA,EAAA,GACL;AAEF;","x_google_ignoreList":[0,1]}