Engenharia Reversa do Mecanismo de Sincronização do Linear: Um Estudo Detalhado

2025-05-31
Engenharia Reversa do Mecanismo de Sincronização do Linear: Um Estudo Detalhado

Este estudo detalhado realiza engenharia reversa no mecanismo de sincronização do Linear (LSE), mostrando sua solução elegante para desafios como suporte a modelos de dados arbitrários, oferecendo recursos avançados (sincronização parcial, controle de permissões, desfazer/refazer, disponibilidade offline e histórico de edição) e proporcionando uma ótima experiência para desenvolvedores. O autor analisa profundamente o funcionamento do LSE, incluindo a definição de modelos, uso do MobX, processo de inicialização, construção do banco de dados local, hidratação de dados lazy, sincronização cliente-servidor e mecanismos de desfazer/refazer por meio de uma análise aprofundada do código frontend do Linear. O artigo explica como o LSE define modelos e metadados, realiza inicialização e carregamento lazy, e lida com transações, atualizações incrementais e resolução de conflitos. O objetivo do LSE é capacitar os desenvolvedores a construir aplicativos colaborativos sem que precisem ser especialistas em mecanismos de sincronização.

Leia mais
Desenvolvimento motor de sincronização

Icepi Zero: Placa de Desenvolvimento FPGA Portátil

2025-05-30
Icepi Zero: Placa de Desenvolvimento FPGA Portátil

Icepi Zero é uma placa de desenvolvimento FPGA econômica com o fator de forma Raspberry Pi Zero, apresentando um poderoso chip Lattice ECP5 25F. Seu tamanho compacto e porta HDMI a tornam ideal para várias aplicações. Diferentemente de alternativas caras e volumosas, Icepi Zero capacita estudantes, entusiastas de jogos e programadores. Possui um conversor USB para JTAG integrado, eliminando a necessidade de programadores externos, e é totalmente de código aberto.

Leia mais

Asdf Overlay: Biblioteca de sobreposição de janelas do Windows ultrarrápida

2025-05-30
Asdf Overlay: Biblioteca de sobreposição de janelas do Windows ultrarrápida

Asdf Overlay é uma biblioteca de sobreposição de janelas do Windows ultrarrápida e fácil de usar que desenha sobre o framebuffer da janela ao conectar backends de renderização. Ela usa texturas compartilhadas de GPU para evitar cópias de framebuffer da CPU, permitindo a renderização de sobreposições de qualquer tamanho sem perda de desempenho. Suporta várias APIs, incluindo OpenGL, DX9-DX12 e Vulkan, e oferece recursos como controle de captura de entrada. Já usada em projetos como sobreposições de letras no jogo e sobreposições no jogo, requer Node.js, pnpm, uma versão específica do compilador Rust e MSVC. Após instalar as dependências, compile com `pnpm build`. Vários exemplos e métodos de depuração são fornecidos.

Leia mais
Desenvolvimento

Sequor: Plataforma de fluxo de trabalho centrada em SQL para integrações de API confiáveis

2025-05-30
Sequor: Plataforma de fluxo de trabalho centrada em SQL para integrações de API confiáveis

Sequor é uma plataforma de fluxo de trabalho centrada em SQL de código aberto, projetada para construir integrações de API confiáveis em stacks de dados modernas. Ela oferece uma alternativa poderosa aos conectores SaaS de caixa preta, dando às equipes de dados controle total sobre seus pipelines de integração. Ao fundir a execução de API com seu banco de dados, o Sequor permite o fluxo de dados bidirecional, utilizando SQL para transformações, análises e lógica de negócios. Essa abordagem unificada elimina os limites tradicionais entre os processos iPaaS e ETL. Uma abordagem de código primeiro (YAML para fluxos, Jinja/Python para parâmetros, SQL para lógica) permite controle de versão, colaboração, CI/CD e desenvolvimento local. O Sequor permite que você possua, controle e dimensione suas integrações de forma transparente, usando tecnologias abertas familiares e evitando o travamento de SaaS.

Leia mais
Desenvolvimento Stack de Dados

vrs: Um tempo de execução concorrente baseado em Lisp para programação divertida

2025-05-30
vrs: Um tempo de execução concorrente baseado em Lisp para programação divertida

vrs é um ambicioso projeto de tempo de execução de software pessoal que visa oferecer uma experiência de programação divertida e eficiente, combinando as melhores ideias de sistemas como Emacs, Erlang e Unix. Ele usa um dialeto Lisp embutido chamado Lyric, suportando processos leves, passagem de mensagens, registro de serviços e a capacidade de executar milhões de processos sem bloquear o sistema. Os desenvolvedores podem usar a ferramenta de linha de comando vrsctl para programação interativa e depuração, juntamente com um modo Emacs chamado `lyric-mode` para desenvolvimento eficiente. O vrs está em desenvolvimento intenso, mas seu modelo de concorrência inovador e o dialeto Lisp fácil de usar mostram grande potencial.

Leia mais
Desenvolvimento

Microsandbox: Execução Segura de Código Não Confiável

2025-05-30
Microsandbox: Execução Segura de Código Não Confiável

O Microsandbox resolve as desvantagens dos métodos tradicionais (execução local, contêineres, VMs, soluções em nuvem) para executar código não confiável. Ele possui tempos de inicialização rápidos, suporta várias linguagens (Python, JavaScript, Rust) e oferece um SDK e ferramentas de gerenciamento de projetos para executar com segurança código gerado por IA, envios de usuários ou código experimental. Sua tecnologia exclusiva de microVM garante o isolamento do código, protegendo seu sistema mesmo de código malicioso. O Microsandbox fornece soluções seguras e eficientes para configuração de ambientes de desenvolvimento, análise de dados e criação de assistentes de IA.

Leia mais
Desenvolvimento

W++: Linguagem de Programação Experimental de Código Aberto

2025-05-30
W++: Linguagem de Programação Experimental de Código Aberto

W++ é uma linguagem de programação experimental e divertida, projetada para aprendizado, caos e memes. Após atingir mais de 33.000 downloads na VSCode Marketplace, foi misteriosamente removida. Agora, o código-fonte completo está disponível publicamente, incluindo um analisador léxico, analisador sintático e interpretador escritos em C#, além de uma extensão personalizada para o VSCode. Com suporte a lambdas assíncronas e um modelo OOPSIE (Object-Oriented Programming Sometimes Isn’t Excellent), W++ busca mostrar que até mesmo linguagens de programação criadas como piada podem ensinar habilidades valiosas.

Leia mais
Desenvolvimento

Git Add Interativo em Go: Funcionalidades Aprimoradas

2025-05-30
Git Add Interativo em Go: Funcionalidades Aprimoradas

Esta implementação em Go da funcionalidade de adição interativa do Git (`git add -i`, `git add -p`) oferece uma experiência de usuário superior. Além de replicar os recursos do script Perl original, ela introduz adições poderosas: filtragem global com regex, divisão automática de hunk e navegação e pesquisa aprimoradas. Pode ser instalado como um comando Git e inclui testes unitários abrangentes. Aproveite o controle aprimorado sobre a organização de suas alterações!

Leia mais
Desenvolvimento

O Espelho da IA: Como a Aprendizagem de Máquina Ilumina a Cognição Humana

2025-05-30
O Espelho da IA: Como a Aprendizagem de Máquina Ilumina a Cognição Humana

Um livro experimental, *O Algoritmo Humano*, escrito autonomamente por IA, explora os paralelos surpreendentes entre inteligência artificial e humana. Ao analisar os desafios dos Modelos de Linguagem Grandes (LLMs), como 'alucinações' e 'sobreajuste', o livro revela verdades negligenciadas sobre a cognição e a comunicação humanas. Ele destaca a discrepância entre nossas exigências rigorosas para a IA e nossa tolerância a nossos próprios vieses cognitivos. O livro não se trata de tornar a IA mais humana, mas de usar a IA como um espelho para ajudar os humanos a se entenderem melhor, melhorando as habilidades de comunicação e a autoconsciência.

Leia mais
IA

Curie: Automação de Experimentos Científicos com IA

2025-05-30
Curie: Automação de Experimentos Científicos com IA

Curie é uma estrutura inovadora de agente de IA projetada para experimentação científica automatizada e rigorosa. Ele automatiza todo o processo experimental, da formulação de hipóteses à interpretação de resultados, garantindo precisão, confiabilidade e reprodutibilidade. Suporta pesquisa em ML, análise de sistemas e descoberta científica, permitindo que os cientistas insiram perguntas e recebam relatórios de experimentos automatizados com resultados e logs totalmente reprodutíveis, acelerando drasticamente a pesquisa.

Leia mais

Controle seus brinquedos sexuais com LLMs: Uma primeira olhada no buttplug-mcp

2025-05-30
Controle seus brinquedos sexuais com LLMs: Uma primeira olhada no buttplug-mcp

buttplug-mcp é um servidor MCP que permite que programas LLM como o Claude Desktop consultem e controlem seus brinquedos sexuais. Criado como um projeto rápido, divertido e educacional no Dia da Mentira, ele é atualmente instável com problemas de tratamento de conexões, mas demonstra a capacidade de controlar a intensidade da vibração por meio de comandos LLM. O projeto é de código aberto, suporta várias plataformas e oferece instalação Homebrew. Embora imperfeito, é um projeto experimental fascinante que mostra o potencial da integração LLM com dispositivos IoT.

Leia mais

Servidor MCP em Bash: Leve e sem sobrecarga

2025-05-30
Servidor MCP em Bash: Leve e sem sobrecarga

Este projeto apresenta um servidor leve do Model Context Protocol (MCP) implementado totalmente em Bash, evitando a sobrecarga de runtimes mais pesados como Node.js ou Python. Ele oferece suporte completo para JSON-RPC 2.0 e protocolo MCP, descoberta dinâmica de ferramentas, configuração JSON e extensão fácil de ferramentas personalizadas. Uma interface simples de linha de comando facilita a execução, com exemplos mostrando como criar seu próprio servidor MCP (um servidor de previsão do tempo é demonstrado). Embora não tenha processamento concorrente, gerenciamento avançado de memória e respostas em streaming, é suficiente para assistentes de IA e execução de ferramentas locais.

Leia mais
Desenvolvimento

IRS torna o Direct File de código aberto: sistema gratuito de declaração de impostos

2025-05-30
IRS torna o Direct File de código aberto: sistema gratuito de declaração de impostos

O IRS tornou o Direct File de código aberto, um serviço gratuito de declaração de impostos online. Ele utiliza uma abordagem baseada em entrevistas, funciona em vários dispositivos (celular, desktop, etc.) e oferece suporte para inglês e espanhol. O Direct File traduz a legislação tributária em perguntas em linguagem simples, gerando formulários de impostos padrão que são enviados ao IRS. Seu núcleo é o Fact Graph, um grafo de conhecimento baseado em Scala que lida com informações incompletas. O Direct File também facilita a declaração de impostos estaduais e locais, permitindo que os usuários importem seus dados de declaração federal para ferramentas de terceiros. Desenvolvido internamente pelo IRS com o apoio do USDS, GSA e outros parceiros, parte do código foi excluída devido a preocupações de privacidade e segurança.

Leia mais
Desenvolvimento

Ferramenta OSINT Geolocaliza Usuários por meio de Vazamentos de Widgets de Tempo

2025-05-29
Ferramenta OSINT Geolocaliza Usuários por meio de Vazamentos de Widgets de Tempo

Weather2Geo é uma ferramenta OSINT que utiliza dados vazados do widget de tempo da barra de tarefas do Windows para identificar a localização de usuários. Combinando as condições climáticas, temperatura e hora exibidas em uma captura de tela com dados meteorológicos em tempo real, o Weather2Geo identifica locais potenciais. Ele leva em consideração o fuso horário, incorpora agrupamento para minimizar falsos positivos e permite parâmetros personalizáveis. Basta inserir os detalhes meteorológicos de uma captura de tela e o Weather2Geo retorna agrupamentos de locais prováveis.

Leia mais
Tecnologia Tempo

RsyncUI: Interface gráfica para rsync no macOS

2025-05-29
RsyncUI: Interface gráfica para rsync no macOS

O RsyncUI é um aplicativo macOS baseado em SwiftUI que fornece uma interface gráfica para a ferramenta de linha de comando rsync. Ele simplifica o uso do rsync, permitindo que os usuários organizem tarefas e definam parâmetros facilmente. Compatível com macOS Sonoma e posterior, pode ser instalado via Homebrew ou download direto. É importante notar que o RsyncUI é apenas uma interface gráfica; a sincronização real é feita pelo rsync. Os usuários podem interromper tarefas, mas devem permitir que a limpeza seja concluída antes de iniciar novas tarefas.

Leia mais
Desenvolvimento

EdaMagit: Magit para VSCode – Otimize seu fluxo de trabalho Git

2025-05-29
EdaMagit: Magit para VSCode – Otimize seu fluxo de trabalho Git

O EdaMagit traz a potência e eficiência do Magit para o VSCode. Essa interface Git baseada em teclado permite que você gerencie seus repositórios com facilidade, oferecendo acesso rápido a status, operações de arquivos, ramificações, commits, merges e muito mais. Ele também inclui suporte ao Forge para visualizar pull requests e issues. As vinculações de teclas altamente personalizáveis permitem que você adapte a experiência às suas preferências, incluindo a imitação de estilos Evil-Magit/Spacemacs. Embora alguns recursos ainda estejam em desenvolvimento, o EdaMagit oferece uma alternativa convincente para aumentar sua produtividade Git no VSCode.

Leia mais
Desenvolvimento

typed-ffmpeg: Uma Interface Pythonica Moderna para FFmpeg

2025-05-29
typed-ffmpeg: Uma Interface Pythonica Moderna para FFmpeg

typed-ffmpeg oferece uma interface moderna e Pythonica para o FFmpeg, fornecendo suporte extensivo para filtros complexos com tipagem e documentação detalhadas. Construído com a biblioteca padrão do Python, ele simplifica a construção de gráficos de filtros, possui autocompletar do IDE e inclui serialização JSON de gráficos de filtros, validação automática do FFmpeg e visualização de gráficos. Desenvolvimentos futuros incluem suporte a mais versões do FFmpeg e cobertura de filtros expandida. Este projeto, inicialmente inspirado pelo GPT-3, acabou usando métodos tradicionais de geração de código, auxiliados significativamente pelo GitHub Copilot.

Leia mais
Desenvolvimento

Tesseral: Infraestrutura de autenticação de código aberto para B2B SaaS

2025-05-28
Tesseral: Infraestrutura de autenticação de código aberto para B2B SaaS

Tesseral é uma infraestrutura de autenticação de código aberto para software de negócios (B2B SaaS). É um serviço em nuvem multilocatário, com API em primeiro lugar, compatível com qualquer pilha de tecnologia. Os desenvolvedores podem usar o serviço gerenciado em console.tesseral.com ou auto-hospedá-lo. Ele inclui tudo o que é necessário para a gestão de usuários: páginas de login personalizáveis, multilocatário B2B, personificação de usuário, configuração de autoatendimento, vários métodos de login (links mágicos, login social, SAML, SCIM), controle de acesso baseado em funções (RBAC), autenticação multifator (MFA), passkeys/WebAuthn, aplicativos autenticadores (TOTPs), gerenciamento de chaves de API, convites de usuários e webhooks. SDKs estão disponíveis para React, Flask e outros, simplificando a integração de front-end e back-end.

Leia mais
Desenvolvimento

Faça seu terminal florescer: Um jogo de jardim CLI

2025-05-28
Faça seu terminal florescer: Um jogo de jardim CLI

Transforme seu terminal em um jardim vibrante com o Flower Garden CLI! Cultive cinco tipos únicos de flores, cada uma florescendo em intrincados padrões matemáticos e fractais. Regue suas flores, assista-as crescerem e aprecie as belas exibições coloridas. Com um menu fácil de usar e salvamento automático, você pode cultivar seu jardim digital no seu próprio ritmo. Instale via pip e comece a cultivar!

Leia mais
Jogos jogo CLI

Implementação de referência do protocolo de consenso Alpenglow

2025-05-28
Implementação de referência do protocolo de consenso Alpenglow

A Anza Technology lançou uma implementação de referência do protocolo de consenso Alpenglow. Isso inclui um exemplo de cluster local executável com 6 nós se comunicando via UDP. Um binário de simulações fornece vários testes de resiliência e requisitos de largura de banda do Alpenglow; um conjunto de dados de ping público é necessário para algumas simulações. Microrreferências e um conjunto de testes também estão incluídos. Para problemas de segurança, entre em contato diretamente com quentin (at) anza (dot) xyz.

Leia mais
Desenvolvimento

OpenTPU: Uma reimplementação de código aberto da TPU do Google

2025-05-28
OpenTPU: Uma reimplementação de código aberto da TPU do Google

O ArchLab da UC Santa Barbara lançou o OpenTPU, uma reimplementação de código aberto da Tensor Processing Unit (TPU) do Google. Baseado em detalhes do artigo de pesquisa do Google, mas sem uma especificação formal, o OpenTPU difere em vários detalhes de implementação do design do Google. Atualmente, suporta multiplicação de matrizes e funções de ativação ReLU/sigmoid, mas faltam recursos como convolução e pooling. Implementado usando PyRTL, o projeto inclui simuladores de hardware e funcionais, juntamente com um verificador para validar os resultados. Embora não haja dados de síntese concretos para um OpenTPU completo de 256x256 nesta versão alfa, sua natureza de código aberto oferece valiosas oportunidades de aprendizado e melhoria para os pesquisadores.

Leia mais
Hardware

Contador de Primos Truncados à Direita em C

2025-05-27
Contador de Primos Truncados à Direita em C

Este programa em C calcula eficientemente o número de primos truncados à direita para um determinado número de dígitos. Ele usa uma tabela hash personalizada para verificações rápidas de primalidade e a biblioteca primesieve para geração otimizada de primos. Um primo truncado à direita permanece primo após a remoção sucessiva de seu dígito mais à direita. O programa lida com entradas de 1 a 19 dígitos, relatando a contagem de primos truncados à direita para cada comprimento de dígito e o tempo total de execução. Por exemplo, para números de 8 dígitos, ele encontra 5 primos e um total de 83 até 8 dígitos.

Leia mais
Desenvolvimento

Builds do Mesa 25.1.1 para Windows Lançados: Solução de Problemas Comuns

2025-05-27
Builds do Mesa 25.1.1 para Windows Lançados: Solução de Problemas Comuns

As builds do Mesa 25.1.1 para Windows (usando Visual Studio e MSYS2 Mingw-w64) agora estão disponíveis. Este lançamento foi patrocinado pela Petrosky, fornecendo uma máquina de build dedicada. O lançamento aborda inúmeros problemas comuns, como erros de libgallium_wgl.dll, libEGL.dll e libvulkan-1.dll ausentes, muitas vezes corrigíveis reimplantando aplicativos ou usando ferramentas de correção fornecidas. Uma documentação abrangente detalha as diferenças entre os pacotes MSVC e MinGW, o conteúdo do pacote, a configuração e o uso de vários drivers (llvmpipe, GLonD3D12, zink, etc.), compatibilidade com software antigo, substituições de configuração de contexto OpenGL e fornece soluções e configurações de variáveis de ambiente.

Leia mais
Desenvolvimento

Clojure MCP: Desenvolvimento Impulsionado por REPL com Assistência de IA

2025-05-27
Clojure MCP: Desenvolvimento Impulsionado por REPL com Assistência de IA

O Clojure MCP é um projeto em estágio alfa que fornece um conjunto abrangente de ferramentas para auxiliar no desenvolvimento de projetos Clojure, conectando modelos de IA ao Clojure nREPL. Ele inclui todos os recursos do Claude Code, integra ferramentas como clj-kondo e parinfer e se integra perfeitamente ao Claude Desktop. Os desenvolvedores podem aproveitar a IA para desenvolvimento incremental, validando o código no REPL e usando ferramentas como leitura inteligente de arquivos, edição com reconhecimento de estrutura e avaliação de código para maior eficiência. O projeto também possui um fluxo de trabalho para manter um resumo de projeto amigável à LLM, permitindo que o assistente de IA entenda rapidamente a estrutura do código. O projeto é licenciado sob a GNU Affero General Public License v3.0.

Leia mais
Desenvolvimento

yes-rs: Reescrevendo o comando Unix 'yes' em Rust, com velocidade e segurança de memória

2025-05-27
yes-rs: Reescrevendo o comando Unix 'yes' em Rust, com velocidade e segurança de memória

Cansado da versão em C do comando Unix 'yes', insegura em termos de memória e propensa a estouros de buffer? Apresentamos yes-rs, uma reescrita em Rust que não apenas é incrivelmente rápida, mas também garante segurança de memória com zero blocos de código inseguros. Com impressionantes 1302 linhas de código Rust (em comparação com as ~50 linhas do C original), yes-rs oferece tratamento de erros moderno, abstrações de custo zero e a capacidade de gerar strings personalizadas. Construído com Cargo, é fácil de instalar e usar. Para aqueles que exigem o máximo de desempenho e segurança, yes-rs é a solução!

Leia mais
Desenvolvimento

Sqawk: Ferramenta de linha de comando baseada em SQL para processamento de arquivos delimitados

2025-05-26
Sqawk: Ferramenta de linha de comando baseada em SQL para processamento de arquivos delimitados

Sqawk é uma ferramenta de linha de comando baseada em SQL inspirada no awk, projetada para o processamento eficiente de arquivos delimitados por separadores, como CSV e TSV. Ela carrega dados em tabelas na memória, permitindo consultas SQL poderosas (SELECT, INSERT, UPDATE, DELETE) com filtragem, classificação, agregação e junções de várias tabelas. O Sqawk possui recursos como inferência automática de tipo, suporte a valores nulos, delimitadores personalizados e um modo de operação seguro que evita a modificação acidental de arquivos. Sua sintaxe intuitiva e velocidade o tornam ideal para tarefas de manipulação de dados.

Leia mais
Desenvolvimento

CSMWrap: Simulando BIOS herdado em sistemas UEFI

2025-05-26
CSMWrap: Simulando BIOS herdado em sistemas UEFI

CSMWrap é um hack inteligente que emula um BIOS de PC herdado em sistemas somente UEFI. Usando o CSM (Módulo de Suporte de Compatibilidade) e VESA VBIOS do SeaBIOS, ele permite inicializar FreeDOS, Windows XP e Windows 7 no QEMU e em alguns hardwares reais. Isso é conseguido desbloqueando a região de memória do BIOS herdado, carregando o módulo SeaBIOS CSM, configurando o mapeamento de memória e muito mais. Observe que o Boot Seguro e a Decodificação acima de 4G devem ser desabilitados, e pode haver problemas de configuração de modos de vídeo do Windows.

Leia mais
Desenvolvimento

Mutmut: Ferramenta poderosa de teste de mutação para Python

2025-05-26
Mutmut: Ferramenta poderosa de teste de mutação para Python

Mutmut é um sistema de teste de mutação para Python fácil de usar. Ele ajuda os desenvolvedores a identificar lacunas em seus conjuntos de testes, levando a uma maior qualidade de código. Recursos principais incluem testes incrementais, execução paralela e uma interface de usuário de terminal interativa. Os usuários podem executar testes, navegar por mutantes, aplicar mutantes e configurar várias definições, como caminhos para mutar, diretórios de teste e arquivos a excluir com facilidade. Mutmut também oferece otimizações para grandes bases de código e opções de configuração extensas para diversas necessidades.

Leia mais
Desenvolvimento Teste de Mutação

Implementação de código aberto do protocolo WaveBird: revivendo um controlador clássico

2025-05-26
Implementação de código aberto do protocolo WaveBird: revivendo um controlador clássico

O controle sem fio Nintendo WaveBird é conhecido por seu agarre confortável e bateria excepcional, mas seu receptor foi descontinuado há anos. Um desenvolvedor criou uma implementação de código aberto do protocolo WaveBird usando SoCs Silicon Labs Wireless Gecko, projetando um receptor de baixo custo e fácil de construir. O projeto inclui firmware, arquivos de design de hardware e arquivos de caixa imprimíveis em 3D, resolvendo a escassez de receptores WaveBird e revivendo este controlador clássico.

Leia mais

PgDog: Um gerenciador de pool de transações e replicação lógica de alto desempenho para PostgreSQL

2025-05-26
PgDog: Um gerenciador de pool de transações e replicação lógica de alto desempenho para PostgreSQL

PgDog, escrito em Rust, é um pooler de transações e gerenciador de replicação lógica rápido, seguro e escalável para PostgreSQL, capaz de lidar com centenas de bancos de dados e centenas de milhares de conexões. Ele possui recursos de particionamento de banco de dados, balanceamento de carga com verificações de integridade e failover, pool de transações e pool de sessões para gerenciamento eficiente de conexões de clientes. O monitoramento é facilitado pelo OpenMetrics, e inclui um analisador CSV e suporte de replicação lógica para ingestão de dados simplificada e particionamento de banco de dados.

Leia mais
1 2 11 12 13 15 17 18 19 48 49