Mostrando postagens classificadas por relevância para a consulta oracle. Ordenar por data Mostrar todas as postagens
Mostrando postagens classificadas por relevância para a consulta oracle. Ordenar por data Mostrar todas as postagens

Oracle pretende migrar para arquitetura ARM

Oracle pretende migrar para arquitetura ARM

Oracle pretende migrar para arquitetura ARM

 Publicado no site Reuters no dia 28 de Junho de 2023 que tanto a base de dados da Oracle como seu serviço de nuvem (que tenta competir com a Amazon por exemplo) passará a utilizar processadores baseados na arquitetura ARM. O motivo apresentado por Larry Ellison, fundador da Oracle, é que os antigos processadores X86 da Intel está atingindo seu limite.

 As aplicações da Oracle são desenvolvidas sod a arquitetura X86 há várias décadas e o motivo de tal adoção da arquitetura ARM é que, devido a razões regulatórias, alguns data centers da Oracle não pode obter mais energia. Então o único meio para a empresa expandir seu serviço de nuvem é através de mais computação por watt que ela pode ter acesso já que os processadores ARM são famosos por sua eficiência energética e por gerar menos calor (por esse motivo adotado em smartphones e tablets. Leia meu artigo Diferentes arquiteturas de processadores CLICANDO AQUI).

"Temos mais espaço. Simplesmente não temos mais capacidade elétrica. Ao atualizar para Ampere, podemos ocupar esse espaço, dobrar a computação e permanecer dentro do mesmo envelope de energia." disse Ellison, eu particularmente diria mais do que dobrar. Mas quem sou eu na fila do pão?

 O fabricante de ARM escolhido pela Oracle foi a Ampere Computing, uma startup fundada por um ex-executivos da Intel.


 A Ampere produz famílias de processadores ARM; o Ampere Altra Max e o Ampere One. O Ampere Altra Max, família de processadores Cloud Native possui linhas de 32, 64, 80, 96 e 128 núcleos operando a frequência acima de 3.0 GHz e com núcleos compatíveis com o Armv8.2+, SBSA4; 1MB de cachê L2 por núcleo e recursos nativos para nuvem como Vector Units, Single Threaded Cores, Advanced Power Management, Dynamic Estimation, Voltage droop detection. O Altra Max possui suporte a 8 canais de memória DDR4 (3200 MHz) ECC de 72 bits (até 4TB de RAM).

 Já o Ampere One possuí linhas de 136, 144, 160, 176 e 192 núcleos também operando a frequência acima de 3.0 GHz também compatíveis com o Armv8.2+; 2MB de cachê L2 por núcleo; 8 canais de memória DDR5 ECC (até 8TB de RAM). Todas as especificações dos processadores Ampere podem ser conferidos clicando aqui.

 Outros valores agregados pelos processadores ARM que são enfatizados pela Oracle seriam preço (clientes pagarão somente $0.01 por hora/núcleomelhorias na parte de segurança, flexibilidade no uso de núcleos e de memória, escalabilidade linear scalability e desempenho previsível, ecossistema de desenvolvimento rico e muito mais.

Ampere A1 Compute
Ampere A1 Compute

 Este será o primeiro servidor com 160-core Arm no mercado com o preço tão acessível. Aproveitando, quero sugerir a leitura sobre o supercomputador Fugaku clicando aqui da Fujitsu que utiliza processadores ARM e que está na lista dos supercomputadores mais poderosos do mercado.


Liberty Linux: Um novo fork do CentOS

Open Enterprise Linux Association

Liberty Linux: Um novo fork do CentOS

 Forks do CentOS já não são nenhuma novidade desde que a Red Hat anunciou o fim do seu suporte  na versão 8, o que rendeu muito pano para manga. A Red Hat anunciou o inicio do CentOS Stream onde as atualizações passariam primeiro pelo CentOS Stream para depois chegar oo Red Hat Enterprise Linux.

 Com isso, surgiram dois forks do CentOS, o Rocky Linux e o Alma Linux que passaram a ser financiados por grandes empresas que dependiam do CentOS (que basicamente o que faziam era pegar as atualizações do Red Hat Enterprise Linux e empacotar para as suas respectivas distribuições).



 Só que no dia 21 de Junho o Vice Presidente, Core Platforms Mike McGrath anunicou que o CentOS Stream será o único repositório para os lançamentos públicos do código fonte do Red Hat Enterprise Linux e derivados. OU SEJA, os dois forks já não passariam  mais a ter acesso aos patches do RHEL. Os projetos se pronunciaram sobre a decisão da Red Hat e os prolanos para o futuro. A matéria pode ser lida clicando aqui.



 Não somente os dois projetos se pronunciaram. A Oracle postou sua frustração com a decisão da Red Hat uma vez que sua distribuição, a Oracle Linux, é uma derivada do RHEL. Mas a empresa não parou por aí, a Oracle anunciou que estaria trabalhando para remediar esse problema, deixou recado aos desenvolvedores de Linux que estava contratando e por ultimo, deu um recado a IBM:

"Finalmente, para a IBM, aqui está uma grande ideia para você. Você diz que não quer pagar todos aqueles desenvolvedores RHEL? Veja como você pode economizar dinheiro: basta retirar de nós. Torne-se um distribuidor downstream do Oracle Linux. Ficaremos felizes em assumir o fardo."

 A Oracle não está errada já que grande parte da arrecadação (tanto da IBM quando da Red Hat) vem da Oracle e de seus parceiros e não somente dos seus próprios serviços (honestamente? Eu já temia que a Red Hat poderia ter mudanças não muito boas após ser adquirira pela IBM).

E não parou por aí, no dia seguinte, a Suse anunciou o investimento de $10 milhões em um fork do RHEL. Algo que para mim soou um tanto quando estranho já que eu não entendi a estratégia da empresa, mas OK, uma boa atitude.


 Formou-se então a parceria entre a CIQ (empresa que desenvolve o Rocky Linux) a Suse e a Oracle que deram origem a distribuição Liberty Linux ou também conhecida como OpenELA (Open Enterprise Linux Association) que passa a dar suporte de compatibilidade com o RHEL 8 e 9 (e possivelmente o 7) e assim dando sobrevida ao CentOS.


 O processo de migração é feito removendo o apontamento dos repositórios da Red Hat e apontando para os repositórios da Suse não sendo necessário reiniciar seu sistema mas também sendo possível desta forma.

Liberty 9 after RHEL 9 upgrade
Liberty 9 após atualização do RHEL 9

 A Suse também entregará o Suse Manager (ferramenta similar ao Satellite) para facilitar a administração do OpenLA e que permite transformar o RHEL em Liberty Linux de forma muito simples (o Suse Manager permite administrar outras distribuições). Também é possível obter assinatura de suporte da Suse com quatro planos para escolher: O Suse Liberty Lite, Suse Liberty Basic, Suse Liberty Professional e o Suse Liberty Entreprise.


Suse Liberty Linux Subscription plans
Planos de assinatura do Suse Liberty Linux


 Já existem empresas no Brasil que realizaram a migração do CentOS para o Liberty Linux. Desejo sucesso ao projeto e que tanto as empresas envolvidas quanto nós (usuários) saiamos ganhando com essa iniciativa.

Site oficial do OpeneLA

Mais sobre a Suse

Mais sobre a Oracle


Virtualbox no Fedora

Virtualbox no Fedora
Virtualbox no Fedora

 Este artigo não tem nada de novidade; eu já devia ter feito isso mais ou menos quando fiz o vídeo defendendo os usuários novatos do Fedora que eram (ou ainda são) hostilizados por simplesmente perguntar como instalar VirtualBox na distribuição...
Se quiser saber mais sobre o que aconteceu, basta clicar aqui.
Há outros grupos que já ensinaram como fazer isso (sugeri publicar este artigo em um grupo, mas como eles já tinham publicado algo, resolvi publicar aqui no blog), mas resolvi também explicar por dois motivos.
  1. Ocorreu uma situação na empresas em que nesse período de quarentena, trabalhando home office, fui obrigado a utilizar o Windows para acessar certo sistema do cliente. Então, uma das soluções foi rodar Windows em uma máquina virtual. E foi aí que surgiu a ideia de  aproveitar a situação para explicar aos novos usuários como instalar o VirtualBox no Fedora; caso eles queiram, vão poder consultar aqui.
  2. O segundo é que como há espaço para todo mundo, porque não?

 O procedimento que realizei e que será utilizado aqui será todo em linha de comandos por questão de habito, mas se você souber outra forma de instralar, lhe encorajo e apoio a compartilhar conhecimento.

 Bom, o Virtualbox não está nos repositórios do Fedora nem no rpmfusion non-free e nem em flatpak (ou ao menos não encontrei. Vai saber), sendo disponibilizado pela própria Oracle em seu site oficial.  Para Linux, vemos versão para Oracle Linux, Red Hat Enterprise Linux e CentOS (versões 6, 7 e 8); Ubuntu (14.04, 14.10, 15.04, 16.04, 18.04, 18.10, 19.04 e 19.10); Debian (8 ao 10), OpenSuse (13.2, Leap 42 e 15.10) e Fedora (do 26 ao 31). Seria interessante se houvesse versão flatpak ou snap; como não há, Eu baixei de acordo com a versão do Fedora que estão utilizando, que no caso é a 31.

Versões do VirtualBox para as principais distribuições Linux no site oficial da Oracle.
Versões do VirtualBox para as principais distribuições Linux no site oficial da Oracle.
 Após baixar e executar o comando rpm -ivh, o virtualbox foi instalado com sucesso (pena eu não ter printado as telas para escrever este artigo, isso não veio a mente na hora) não apresentou os mesmos erros que já me ocorreram no Debian e também não foi necessário adicionar o usuário a nenhum grupo (como ocorreu no Debian 9). Porém ainda assim alguns outros pequenos erros ocorreram, mas nada do que a simples leitura das informações exibidas resolva.

Sempre adote a cultura do RTFM.
 O primeiro problema que o VirtualBox reportou foi que possívelmente faltavam os módulos do kernel ou que o AMD_VIRT foi desativado pelo BIOS. Ativei o suporte a virtualização no BIOS/UEFI e o VirtualBox já estava abrindo, porém ainda faltavam realmente os módulos do kernel e o VirtualBox reportou para executar (como administrador) o comando /sbin/vboxconfig.

Suporte a AMD-V no processador Ryzen
Suporte a AMD-V no processador Ryzen
 OK, executado o comando vboxconfig, o comando reportou que faltavam dependências como make e kernel-devel. Na verdade o comando vboxconfig lhe exibe uma lista do que instalar; se já houver, tudo bem, não vai dar nada de errado. Então eu digitei o comando:
#dnf install gcc make kernel-devel kernel-devel-debug-internal-5.5.13-200.fc31.x86_64
 Após instalação do que o VirtualBox solicitou, novamente executei o comando /sbin/vboxconfig que configurou tudo corretamente e pude trabalhar com o VirtualBox.
/sbin/vboxconfig
Rodando o comando /sbin/vboxconfig para configurar os módulos do VirtualBox
 Já que eu precisava de Windows, porque então não testar o ReactOS? E foi o que eu fiz; instalei o o ReactOS com o Btrfs.

ReactOS rodando dentro do VirtualBox do Fedora para acessar o sistema remotamente. Só ignorem o meu gato, ele sempre quer dormir na frente do monitor.
ReactOS rodando dentro do VirtualBox do Fedora para acessar o sistema remotamente. Só ignorem o meu gato, ele sempre quer dormir na frente do monitor.
 Um problema comum que pode ocorrer é que depois de uma atualização do Fedora (sendo uma delas o kernel),  o VirtualBox parar de funcionar e você receberá esta mensagem ao executar o VirtualBox.


 Nesse caso,execute novamente o comando /sbin/vboxconfig que o VirtualBox voltará ao normal (ou pode ser que não). Na segunda situação em que nem o comando /sbin/vboxconfig funcionará, esta mensagem no terminal será exibida:



 Já nesse caso você deve baixar uma nova versão do VirtualBox no site da oracle. Antes de instalar a nova versão, a anterior deve ser desinstalada como na imagem abaixo:
Removendo o VirtualBox
Removendo o VirtualBox
 Feito isso, basta repetir os mesmo processos (instalar o VirtualBox e executar o comando /sbin/vboxconfig) e pronto, sua máquina virtual está funcionando novamente.

VirtualBox funcionando novamente.
VirtualBox funcionando novamente.
 Então é isso galera; a intenção (mesmo que nada disso é novidade) é ajudar aos que pretendem utilizar o VirtualBox no Fedora. Bom estudo e trabalha a todos e tudo de bom.

SQL em 10 Minutos por Dia

SQL em 10 Minutos por Dia

    As lições cobrem o IBM DB2, o Microsoft SQL Server e o SQL Server Express, o MariaDB, o MySQL, o Oracle e o Oracle Express, o PostgreSQL e o SQLite. Dicas destacam os atalhos e soluções Os avisos de Cuidado ajudam a evitar as armadilhas comuns Notas explicam os conceitos adicionais e fornecem informações adicionais.

    SQL em 10 Minutos por Dia oferece respostas diretas e práticas quando você precisa de resultados rápidos. Ao trabalhar com as 22 lições de 10 minutos ou menos contidas neste livro, você aprenderá o que precisa saber para aproveitar as vantagens da linguagem SQL. As lições cobrem o IBM DB2, o Microsoft SQL Server e o SQL Server Express, o MariaDB, o MySQL, o Oracle e o Oracle Express, o PostgreSQL e o SQLite.

    Dicas destacam os atalhos e soluções Os avisos de Cuidado ajudam a evitar as armadilhas comuns
Notas explicam os conceitos adicionais e fornecem informações adicionais. 10 minutos são suficientes para você aprender como…
  • Usar as principais instruções SQL
  • Construir instruções SQL complexas usando várias cláusulas e operadores
  • Obter, classificar e formatar conteúdo de banco de dados
  • Identificar os dados necessários usando uma variedade de técnicas de filtragem
  • Usar funções de agregação para resumir dados
  • Juntar duas ou mais tabelas relacionadas
  • Inserir, atualizar e excluir dados
  • Criar e alterar tabelas de banco de dados
  • Trabalhar com visualizações, stored procedures e muito mais
    Ben Forta é Diretor Sênior de Iniciativas Educacionais da Adobe, educador, palestrante e autor de mais de 40 livros, incluindo títulos sobre SQL, Expressões Regulares e muito mais.

lançado MicroStream 5.0 e agora Open Source




 MicroStream é uma nova verão de java sendo desenvolvido pela MicroStream que iniciou em Abril 2019 tendo seu maior foco corrigir problemas de segurança e de desempenho do Java.
 O desempenho (de acordo com o site da MicroStream) é entre 10 a 1000 vezes mais. O MicroStream também oferece conectores para bases de dados como Postgres, MariaDB, SQLite e muito mais. O framework é todo construído diferente do tradicional Java da Oracle.

Diferença entre o tradicional Java da Oracle para o Java da MicroStream.
Diferença entre o tradicional Java da Oracle para o Java da MicroStream.

 No dia 20 de Setembro o site InfoQ anunciou que foi lançado o MicroStream 5.0 tendo o seu maior destaque é que agora é open source sob licença Eclipse Public License 2.0. No momento o MicroStream não pode ser utilizado completamente como um substituto devido algumas limitações como o sistema de gerenciamento de base de dados (database management system = DBMS), mas espero que venha a ser uma alternativa para o Android em um futuro próximo devido a todo o problema judicial que a Google teve com a Oracle. Esse é o real motivo pelo qual postei este artigo, pensando muito em alternativas para o próprio Android. Espero que a Google comece a focar sua atenção ao MicroStream para que seja compatível com o Dalvik.

Resumo do Tux 17/04/2016

Quase que eu esqueço de postar o resumo do Tux desta semana. Olha que viagem.

Resumo do Tux 17/04/2016

 Esse semana eu postei a quinta parte da Serie Assunto ZFS. Galera, acho esse assunto de extrema importância para o futuro do Linux e Filesystems. Como o ZFS funciona e as principais dificuldades para que ele venha estar funcionando 100% no Linux. Eu ainda espero vê-lo funcionando nativamente no Linux com a ajuda da Oracle através do SOL (não bastante o Btrfs, a Oracle ainda contribui com o ZFS).
 Confiram então o vídeo:


 uma das maiores dificuldades de se ter o ZFS nativo para o Linux está no conflito entre as licenças do Linux e do ZFS. Esse assunto foi abordado pelo Stallman, que apesar de ele não mencionar nomes, ele ataca a Oracle o Ubuntu.  Se bem que acho ilogico o que o Stallman diz sobre o assunto.

O Ayr fez tambem um vídeo sobero AppArmor e resolvi incluir aqui nessa história. O Ayr ainda irá analisar o SELinux e o GRSecurity. Confiram só:



Postei mais dois vídeos essa semana dentro do tema "Propagandas com Linux". Um no Sábado e outro hoje:



 Bom, e por ultimo, a noticia que quero publicar (além da do Stallman que foi meio sem noção) teve o cara que deu um rm -rf no servidor e mandou tudo para o espaço (até mesmo o backup). Olha que lindo isso. Se bem que o site NixCraft escreveu o seguinte:
"Se lembram daquele cara que excluiu toda a sua empresa ao executar rm -rf / ?Foi um trote. Isso foi algum tipo de esforço de marketing viral para tornar sua empresa popular"

 E deixaram a fonte do assunto para quem quiser conferir.


 É isso galera. Um abraço e até a próxima.

Maple Tree, um substituto ao RBtree desenvolvido pela Oracle



 Em Dezembro de 2020, Liam R. Howlett da Oracle enviou um patch apresentando o novo Mapple TreeBaseado no b-tree, o Mapple Tree soluciona o problema da memória virtual, das locks, das path forward, torna o cache em processadores modernos mais eficiente através de uma uma API mais simples e melhorar o desempenho do sistema. Há várias partes de Linux que poderão se beneficiar com o Mapple Tree 

    Devido ao número de núcleos dos processadores ter crescido levando os programas a serem multi-thread e aumentar a conexão com a estrutura de dados da memória virtual, o subsistema de gerenciamento de memória também precisava de uma nova estrutura para solucionar certos problemas internos (como do mmap_sem lock e dos arquivos do /proc).

    Há muito trabalho ainda a ser feito no Mapple Tree, mas muito progresso já foi concluído. Em breve talvez teremos um substituto ao rbtree (ou Red Black Tree. Em português, árvore Robre-Negra)

Ampere nas envolvidas com Steam

Ampere nas envolvidas com Steam

Ampere nas envolvidas com Steam


 Recentemente postei que a Oracle está migrando de X86 para ARM da empresa Ampere. Devido a sua eficiência energética esses processadores permitirão a Oracle expandir seu data center e poder concorre com outras empresas em vários outros serviços com a sua novem. Não somente a eficiência energética, mas os processadores da Ampere permitem também melhor desempenho.


 Mas hoje estamos aqui para falar da empresa Ampere que esta trabalhando para que Steam Linux seja compatível com seus processadores de 192 núcleos. Sim, há mais ou menos um mês a Ampere publicou em seu Github o repositório Steam-on-Ampere. Não se trata de código fonte e sim de um how to explicando como executar Steam em seus processadores através do Box86/Box64

 Bom, neste exato momento você deve estar pensando que então trata-se de emulação e eu vou ter que dizer que você está certo. O Box86 é um emulador que permite rodar aplicações x86 em processadores ARM. Nesse momento deve existir a critica na cabeça de todos, o que é natural, mas o problema está mais vinculado a ferramenta Steam do que aos processadores da Ampere. Ao longo do tempo a ferramenta Steam foi acumulando muito código legado para se manter funcionando; é necessário por exemplo instalar suporte a arquitetura i386 (32 bits) na sua distribuição mesmo ela sendo x86 de 64 bits. No caso dos processadores da Ampere ocorrem a problema similar, só que em arquitetura (o que pode ocorrer no steam sendo executado em qualquer ARM. Nesta documentação, a Ampere exibe prints que evidenciam que é necessário instalar as duas dependências mencionadas neste artigo.




 Basicamente é o mesmo processo utilizado pela Apple chamado carbonização que permitiu o MacOS X desenvolvido para X86 executar suas aplicações na arquitetura PowerPC e hoje de x86 para o Apple Silicon que pode ser conferido neste meu vídeo quando eu digito o comando file no kernel do MacOS X e é possível constar o suporte das arquiteturas X86 e PowerPC. Por este motivo que conseguir executar o MacOS Leopard na arquitetura PowerPC sendo que o Leopard foi projetado para Macs da arquitetura X86.


 Outra característica do processo de carbonização é utilizar a ferramenta Rosetta, que nada mais é do que simplesmente emulação. Então, fazer adoção da mesma estratégia que Apple é algo que pode levar a Valve a melhorar sua ferramenta ao longo do tempo (assim torcemos). Há um bom tempo um desenvolvedor do Clear Linux vem trabalhando para porte Steam para 64, mas já se passaram ao menos sete anos e ainda nada de steam 64 bits para nenhum sistema operacional.


 Os testes foram feitos no Ubuntu como pode ser vista nas imagens e é recomendado instalar o box86 dos repositórios de Itai Nelken. Para o Box64 devem ser instalados os repositórios de um cara chamado Ryan Fortner. Depois, é só executar o steam, selecionar o proton e vida que segue.
GitHub da AmpereComputing: Steam-on-Ampere

Marcadores

A pior história sobre Linux que já ouvi (6) A.I (2) ambiente gráfico (19) AMD (14) analise (10) Andriod (17) android (8) Apple (1) arm (5) artigo (5) aws (1) bc (23) benchmark (6) BetrFS (1) blackhat (1) BSDs (35) btrfs (32) bugs (2) Caixa de Ferramentas do UNIX (18) canonical (1) canto do Diego Lins (2) certificações Linux (7) Código Fonte (53) comandos (34) comp (1) compressores (9) consoles (1) container (8) CPU (20) cracker (1) criptografia (5) crowdfunding (9) cursos (24) daemons (14) Debian (31) desempenho (2) desenvolvimento (104) desktop (19) DevOps (3) DevSecOps (4) dic (1) Dica de leitura (91) dica DLins (2) dicas do Flávio (27) Dicas TechWarn (1) diet libc (4) diocast (1) dioliunx (3) distribuições Linux (14) Docker (13) DragonflyBSD (24) driver (2) dropbear (3) ead Diolinux (2) edição de vídeo (5) embarcados (1) EMMI Linux (4) emuladores (9) endless (5) English interview (3) Enless OS (2) entrevista (17) espaço aberto (82) evento (6) facebook (1) Fedora (11) filesystem (82) financiamento coletivo (2) fork (4) fox n forests (4) FreeBSD (22) Funtoo Linux (13) games (96) garbage collector (1) gerenciadores de pacotes (4) glaucus (8) GOG (3) google (9) gpu (4) hacker (2) hardware (104) hash (1) helenos (3) I.A (1) init system (13) Intel (16) inteligencia artificial (2) IoT (1) ispconfig (1) jogos (40) kde (1) kernel (143) lançamento (64) leis (1) LFCS (1) libs (2) licenças (10) Linus (16) linus torvalds (2) Linux (194) linux foundation (3) linux para leigos (1) live (4) lkgr (1) LPI (8) LTS (1) Mac (1) machine learning (1) matemática (9) mesa redonda (27) microcontroladores (1) microsoft (6) microst (1) muito além do GNU (182) musl (3) não viva de boatos (9) navegadores (5) NetBSD (7) newlib (1) nim (12) nimlang (4) nintendo (2) novatec (17) novidades (1) nuvem (1) o meu ambiente de trabalho (3) off-topic (12) ONLYOFFICE (5) open source (85) OpenBSD (8) OpenShift (1) oracle (1) os vários sabores de Linux (46) padrim (2) palestras e eventos (5) partições (6) pentest (8) performance (1) pipewire (1) plan9 (3) playstation (1) processadores (30) professor Augusto Manzano (11) Programação (72) promoção (1) propagandas com Linux (8) ps4 (1) real-time. (1) Red Hat (23) redes (4) resenha nerd (5) Resumo da Semana do Dlins (2) resumo do Tux (19) retrospectiva Linux (1) risc-V (14) RISCV (13) rtos (2) runlevel (2) rust (16) Sega (1) Sega Saturn (1) segurança digital (28) servidor web (2) servidores (3) shell (12) shell script (9) sistema operacional (25) skarnet (2) smartphones (3) Software livre e de código aberto (150) sorteio (3) Steam (11) Steam no Linux (9) supercomputadores (4) suse (7) systemd (9) terminal (90) terminal de comandos (21) toca do tux (1) toybox (31) tutorial (6) Tux (3) ubuntu (1) unboxing (7) UNIX (17) UNIX Toolbox (13) vartroy (1) vga (1) virtualização (3) vulnerabilidade (7) wayland (5) web (1) whatsapp (1) whitehat (1) Windows Subsystem for Linux (2) wine (14) WoT (1) yash (1) ZFS (16) zsh (3)