Você está na página 1de 13

Compactadores

Tubarão / Santa Catarina / BRAZIL


E-Mail : osmarjr@unisul.rct-sc.br
http://tec1.unisul.rct-sc.br/osmarjr/

0
Ïndice

1. O QUE É COMPACTAÇÃO DE ARQUIVOS...........................................................

2. PKZIP E PKUNZIP...................................................................................................
2.1 Arquivo Auto Descompactável...................................................................................................................

3. ARJ..........................................................................................................................

4. LHA..........................................................................................................................

5. O QUE VOCÊ PODE ESPERAR EM TERMOS DE ECONOMIA DE ESPAÇO.....

1
1O que é compactação de Arquivos
Nos primórdios da era da microinformática, muito podia ser feito com pouca quantidade
de memória. Os programas eram simples, compactos e tinham uma apresentação bem
modesta. Gráficos não eram utilizados. Em caso de erro na execução, surgiam mensagens
como “ERROR 25”. O usuário deveria procurar no manual qual é o significado do ERRO 25,
para tentar saná-lo. HELP para programas era coisa que não existia. A memória era caríssima,
assim como os meios de armazenamento de dados. Nos últimos 20 anos os computadores
ficaram mais baratos e poderosos. Sua velocidade ficou 100 vezes maior. A memória ficou 200
vezes mais barata e mais compacta. Os winchesters aumentaram na capacidade e diminuíram
no preço, de modo que hoje o custo para armazenamento de 1 MB ficou 200 vezes menor do
que era em 1982. Com todos esses novos recursos, os programas ficaram mais sofisticados,
com apresentação melhor, usando gráficos e HELP ON LINE. Em conseqüência ficaram
também muito maiores. Os programas atuais possuem muita informação redundante,
instruções similares, trechos parecidos. A compactação consiste em armazenar os dados de
forma que a informação redundante ocupe menos espaço. Considere por exemplo uma linha
que faça parte de um arquivo de texto com uma seqüência de 40 caracteres:

****************************************
Para armazenar essa informação são usados 40 bytes, já que cada caracter ocupa 1 byte.
Essa mesma informação pode ser armazenada de outra forma:

40,”*”

Ë armazenado apenas o número 40 e o caracter “**”, o que ocupa apenas 2 bytes. A


informação ficou 20 vezes mais compacta. É claro que a coisa não é tão simples assim. O
exemplo apresentado está bem simplificado para dar um idéia de como os dados podem ser
compactados. Diversos programas utilizam as mais variadas técnicas para compactar dados.
Nesse capítulo não estudaremos quais essas técnicas. Mostraremos quais são os principais
programas compactadores e veremos como utilizá-los.
A figura 1 ilustra o processo de Compactação e da Descompactação de um arquivo .
Um arquivo original de nome ARQUIVO.ORI é lido pelo programa compactador e seus dados
são compactados. O Programa compactador grava esses dados compactados no arquivo de
nome ARQUIVO.PAK. Normalmente o arquivo original é mantido pelo programa compactador.
O usuário pode apagar o original e ficar só com a versão compactada. O índice de
compactação depende muito do tipo de dado existente no arquivo original. Arquivos de texto
podem ser tipicamente reduzidos a cerca de 1/3 do seu tamanho original

PROGRAMA
ARQUIVO.ORI COMPACTADOR ARQUIVO.PAK

54 KB 22 KB

Figura 1 - Processo de compactação

Com o uso de um programa descompactador o processo pode ser revertido, ou seja,


partindo do arquivo do arquivo compactado obter o arquivo original. Normalmente a
descompactação é necessária pois o arquivo compactado não pode ser manipulado de forma
convencional. Por exemplo, um arquivo texto, gerado por um editor qualquer uma vez

2
compactado não pode ser editado. Na figura 2, se o ARQUIVO.ORI é um texto, poderá ser
editado normalmente, mas o ARQUIVO.PAK não. É claro que se alguma alteração for feita no
arquivo original ARQUIVO.ORI sua versão compactada estará desatualizada. O Objetivo da
compactação é a economia de espaço. Quem compacta um arquivo em um winchester e o
mantém no mesmo, certamente terá interesse em apagar o original, guardando apenas a
versão compactada. Outra aplicação é o transporte de programas em disquetes. Um arquivo
Kb não cabe em um disquete de 360 Kb, mas se for compactado, provavelmente caberá. A
descompactação é sempre necessária quando alguém recebe um disquete com arquivos
compactados, certamente precisará descompactá-los para que os mesmos possam ser
utilizados. Quem compacta arquivos para economizar espaço em um winchester, apagando os
originais, certamente precisará descompactá-los quando os mesmos forem novamente
utilizados.

PROGRAMA
ARQUIVO.PAK DESCOMPACTADOR ARQUIVO.ORI

22 KB 54 KB

Figura 2 - Processo de Descompactação


Cada programa compactador possui seu descompactador correspondente. É claro que
ambos fazem parte do mesmo pacote. Muitas vezes um único programa faz as duas
operações, dependendo da forma como é chamado. Podem ser também compactados
conjuntos de programas, sendo gerado um único arquivo com todos eles compactados. O
descompactador nesse caso lê o arquivo compactado e recria todos os arquivos originais.
Muitas vezes é possível compactar diretórios inteiros, com todos os seus arquivos. Existem
também os compactadores de arquivos executáveis. Geram arquivos executáveis
compactados. Ao serem chamados, esses arquivos se descompactam automaticamente.
Existem também a compactação de um winchester inteiro, de forma transparente ao usuário,
que é feita pelo programa STACKER. Passemos agora a estudar alguns dos mais famosos
pacotes de compactadores.

2PKZIP E PKUNZIP
O PKZIP é um dos mais populares compactadores. Trata-se de um programa de
SHAREWARE. Sua operação é fácil e qualquer usuário pode, em poucos minutos, aprender a
utilizar seus principais recursos. Vejamos a seguir alguns exemplos da simplicidade do seu
uso. No exemplo, usamos o arquivo DICAS.002, que é o capítulo 2 do livro que estou
escrevendo. Seu tamanho atual é 100.096 bytes. Usa-se o PKZIP da seguinte forma:

PKZIP CAP2COMP DICAS.002
Nome do arquivo a ser compactado

Nome que terá o arquivo compactado

O primeiro parâmetro é o nome que o PKZIP dará ao arquivo, depois de compactado. A


extensão usada é “ZIP” (CAP2COMP.ZIP). O segundo parâmetro é o nome do arquivo original.
É importante lembrar que o original não será apagado. A figura 3 ilustra a operação do PKZIP

3
PKZIP (R)   FAST!  Create/Update Utility Version 1.1 03­15­90
Copr. 1990 PKWARE Inc. All Rights Reserved. PKZIP/h for help
PKZIP Reg. U.S. Pat. and Tm Off.

Creating ZIP: CAP2COMP.ZIP
Updating: DICAS.002 imploding (72%), done.

Figura 3 - Compactação de um arquivo com o PKZIP

O arquivo compactado ficou com 28.743 bytes, ou seja, 28% do seu tamanho original do seu
tamanho original, o que representa uma redução de 72%. Para descompactar usa-se o
PKUNZIP:

PKUNZIP CAP2COMP

O programa PKUNZIP lerá o arquivo CAP2COMP.ZIP e verificará que o mesmo contém a


forma compactada do arquivo DICAS.002. Não informamos ao PKUNZIP o nome do arquivo
original, pois ele mesmo descobre. Será mostrada a tela indicada na figura 4.
Ao descompactar, caso já exista um arquivo com o mesmo nome. o PKUNZIP colocará na tela
a seguinte mensagem:

PKUNZIP:Warning!file DICAS.002 already exists.Overwrite(y/n)?

Caso o usuário responda “Y”, o arquivo original será removido e substituído pelo que estava
compactado.

PKUNZIP (R)FAST! Extract Utility Version 1.1 03­15­90
Copr. 1990 PKWARE Inc. All Rights Reserved. PKUNZIP/h for help
PKUNZIP Reg. U.S. Pat. and Tm Off.

Searching ZIP: CAP2COMP.ZIP
Exploding: DICAS.002

Figura 4 - Descompactação com o PKUNZIP

O PKZIP pode também ser usado para compactar grupos de arquivos. Por exemplo, suponha
que desejamos compactar todos os capítulos deste livro. No momentos esses arquivos têm os
seguintes tamanhos:

4
DICAS 000 12032 06­30­97 12:03p
DICAS 001 41856 06­30­97 12:02p
DICAS 002  00096 06­30­97  8:28p
DICAS 003 59520 07­05­97 12:05a
DICAS 004 27520 07­05­97 12:06a
DICAS 005 21888 07­05­97 12:42p
DICAS 006 12288 07­05­97  2:22p
DICAS IND  6528 07­04­97  2:52p

Usamos o PKZIP da seguinte forma:

PKZIP DICAS DICAS.*
Serão compactados todos os arquivos acima

Será gerado o arquivo DICAS.ZIP

A operação do PKZIP na compactação desse grupo de arquivos pode ser vista na figura 5.
Observe que cada arquivo tem um índice de compactação diferente, o que é normal, pois esse
índice depende da quantidade de informação redundante no arquivo.
A figura 6 mostra o processo de descompactação do arquivo DICAS.ZIP com o
programa PKUNZIP, o que deve ser chamado da seguinte forma:

PKUNZIP DICAS

PKZIP (R) FAST! Create/Update Utility Version 2.04g 02-01-


93
Copr. 1989-1993 PKWARE Inc. All Rights Reserved. Shareware
Version
PKZIP Reg. U.S. Pat. and Tm. Off. Patent No. 5,051,745

_ 80486 CPU detected.


_ EMS version 4.00 detected.
_ XMS version 2.00 detected.
_ DPMI version 0.90 detected.
_ Using Normal Compression.

Creating ZIP: DICAS.ZIP


Adding: DICAS.002 imploding % (72%), done.
Adding: DICAS.000 imploding % (58%), done.
Adding: DICAS.001 imploding % (69%), done.
Adding: DICAS.IND imploding % (62%), done.
Adding: DICAS.006 imploding % (69%), done.
Adding: DICAS.003 imploding % (70%), done.
Adding: DICAS.005 imploding % (70%), done.
Adding: DICAS.004 imploding % (66%), done.
Figura 5 - Compactação de vários arquivos com o PKZIP

5
PKUNZIP (R) FAST! Extract Utility Version 2.04g 02-01-93
Copr. 1989-1993 PKWARE Inc. All Rights Reserved. Shareware Version
PKUNZIP Reg. U.S. Pat. and Tm. Off.

_ 80486 CPU detected.


_ EMS version 4.00 detected.
_ XMS version 2.00 detected.
_ DPMI version 0.90 detected.

Searching ZIP: DICAS.ZIP


Exploding: DICAS.002
Exploding: DICAS.000
Exploding: DICAS.001
Exploding: DICAS.IND
Exploding: DICAS.006
Exploding: DICAS.003
Exploding: DICAS.005
Exploding: DICAS.004

Figura 6 - Descompactação de vários arquivos com o PKUNZIP

Outras formas de usar o PKZIP e PKUNZIP

Os programas PKZIP e PKUNZIP são distribuídos pelo sistema SHAREWARE. No seu


pacote existem outros utilitários interessantes, assim como um excelente manual explicativo de
todos os seus comandos. Apresentaremos a seguir algumas “receitas” que mostram apenas
uma pequena parte do potencial desses programa. Mesmo com essas “receitas”,
aconselhamos a aquisição do pacote completo para que mais detalhes possam ser
observados no seu manual. Nessa discussão chamaremos de ZIPFILE, qualquer arquivo
compactado gerado pelo PKZIP. Usaremos como exemplo o arquivo DICAS.ZIP.

a) Como visualizar os arquivos armazenados em um ZIPFILE.


Use o PKZIP na forma
PKZIP DICAS ­v
Ao ser executado com o parâmetro -v, o PKZIP apresentará um relatório como o
indicado a seguir:

6
PKZIP (R) FAST! Create/Update Utility Version 2.04g 02-01-93
Copr. 1989-1993 PKWARE Inc. All Rights Reserved. Shareware Version
PKZIP Reg. U.S. Pat. and Tm. Off. Patent No. 5,051,745

_ 80486 CPU detected.


_ EMS version 4.00 detected.
_ XMS version 2.00 detected.
_ DPMI version 0.90 detected.

Searching ZIP: DICAS.ZIP

Length Method Size Ratio Date Time CRC-32 Attr Name


100096 DeflatN 28627 72% 06-30-92 20:28 4dc6b198 --w DICAS.002
12032 DeflatN 5124 58% 06-30-92 12:03 711204f4 --w DICAS.000
41856 DeflatN 13160 69% 06-30-92 12:02 afbd0086 --w DICAS.001
6528 DeflatN 2496 62% 07-04-92 14:52 947f7b70 --w DICAS.IND
12288 DeflatN 3844 69% 07-05-92 14:22 d657596f --w DICAS.006
59520 DeflatN 18363 70% 07-05-92 00:05 fa02e4ea --w DICAS.003
21888 DeflatN 6590 70% 07-05-92 12:42 17ceec18 --w DICAS.005
27520 DeflatN 9468 66% 07-05-92 00:06 bf2633fd --w DICAS.004
------ ----- --- ---------
281728 87672 69% 8

b) Como descompactar arquivos selecionados de um ZIPFILE.


Digamos que queremos extrair apenas o arquivo DICAS.006. Usamos o PKUNZIP na
forma:
PKUNZIP DICAS DICAS.006

c) Como adicionar comentários em arquivos compactados.


Para colocar comentários em arquivos compactados, usamos:
PKZIP DICAS ­c

Dessa forma, o PKZIP pedirá que você digite um comentário para cada um dos arquivos
compactados no arquivo DICAS.ZIP. Esses comentários podem ser vistos com o comando:

PKZIP DICAS ­vc

d) Como adicionar comentário a um ZIPFILE.


O comentário não é para os arquivos contidos no ZIPFILE, e sim para o próprio
ZIPFILE. Esse comentário pode ser apenas uma linha ou uma seqüência de linhas que é
mostrada na tela durante a descompactação ou com os comandos para visualizar os arquivos
descritos nos itens “A” e “C” acima. Para adicionar o comentário a um ZIPFILE já existente,
usa-se:
PKZIP DICAS ­z

Ao ser chamado dessa forma, PKZIP pedirá que você digite o comentário a ser adicionado. Ao
invés de digitar, você poderá preparar o comentário em um arquivo (EX.: COMENT.TXT) e usar
o PKZIP na forma:

7
PKZIP DICAS ­z < COMENT.TXT

Assim o PKZIP lerá o comentário, que pode ser composto de várias linhas, do arquivo
COMENT.TXT ao invés de ler do teclado.

e) Como proteger o ZIPFILE com uma senha.


Digamos que queremos colocar no ZIPFILE uma senha que faz com que apenas quem
a sabe possa descompactá-lo. Por exemplo, usemos como senha a palavra “PCAT686”. Usa-
se o PKZIP na forma:

PKZIP DICAS DICAS.* ­SPCAT686

Senha
Arquivos a serem compactados
Nome do arquivo gerado

Esse arquivo só poderá ser descompactado se usado na forma:


PKUNZIP DICAS ­SPCAT686

Cuidado: O PKUNZIP faz distinção entre letras maiúsculas e minúsculas nas senhas usadas.

f) Como compactar diretórios.


Muitas vezes é necessário compactar um diretório inteiro, com seus arquivos e
subdiretórios, que por sua vez também podem ter outros arquivos e outros subdiretórios, O
ZIPFILE gerado conterá não apenas arquivos, mas uma completa estrutura de diretórios. Ao
descompactar esse ZIPFILE, o programa PKUNZIP reconstituirá toda essa estrutura. Se você
acha complicado é porque ainda não precisou usar algo semelhante. Mas se você já passou
por esse problema, certamente achará muito útil essa capacidade do PKZIP e PKUNZIP.
Considere como exemplo a estrutura de diretórios abaixo, onde mantenho os meus livros:

C:\LIVRO  MONTAGEM  10


 20
 30
 MANUT
 ARQUIT
 DICAS
 DOS5
 EXPANSÃO

O diretório C:\LIVRO possui diversos arquivos e ainda 6 subdiretórios, cada um deles com
seus próprios arquivos. Por enquanto todos eles ainda cabem compactados em um disquete
de 1.44 MB. Para fazer um BACKUP de todos eles, uso o PKZIP da forma:

8
PKZIP ­rp B:BACKLIVR C:\LIVRO\*.*

Estrutura que será compactada


Arquivo BACKLIVR.ZIP será criado no drive “B”
Comando “-rp” indica para armazenar toda a estrutura do diretório \LIVRO gerado

Para descompactar basta usar:

PKUNZIP ­d B:BACKLIVR C:\LIVRO

2.1Arquivo Auto Descompactável


Junto com o pacote do PKZIP é também fornecido o utilitário ZIP2EXE. O que esse
programa faz é ler um ZIPFILE e gera um arquivo executável (.EXE). Quando esse arquivo for
executado, será realizada uma descompactação automática, sem a necessidade de uso do
PKUNZIP. Suponha o nosso DICAS.ZIP, cuja criação foi mostrada na figura 5. Usa-se o
ZIP2EXE da seguinte forma:

ZIP2EXE DICAS

O arquivo original DICAS.ZIP não será alterado. A partir deste será gerado o arquivo
DICAS.EXE. Quando esse arquivo for executado, ocorrerá uma descompactação automática,
análoga àquela feita pelo PKUNZIP.

3ARJ
Arj é um outro famoso programa compactador e descompactador. Trata-se de um
programa de SHAREWARE, distribuído juntamente como alguns utilitários, como o REARJ,
que faz a conversão entre diversos formatos de arquivos compactados. Cabe aqui uma
importante observação. Cada programa compactador utiliza um método próprio para
compactar arquivos, e em conseqüência, seus arquivos gerados não são compatíveis entre si.
O PKZIP gera arquivos do tipo .ZIP, que não podem ser descompactados com o ARJ. O ARJ
gera arquivos do tipo .ARJ, incompatível com o PKZIP. O mesmo ocorre com outros
compactadores.
ARJ é um compactador poderoso. Possui um extenso manual e uma série de
comandos. Pode até mesmo ser usado para fazer BACKUP compactado de winchester. A
princípio o ARJ assusta o usuário, pelo seu grande número de opções de funcionamento.
Realmente o PKZIP é de utilização mais fácil (e também um pouco mais restrita). Para o
usuário principiante, dificilmente serão aproveitadas todas as potencialidades do ARJ. Sugere-
se nesse caso a utilização do PKZIP. Entretanto, mesmo o iniciante encontrará situações em
que é necessário fazer a descompactação de arquivos gerados pelo ARJ, que são aqueles
que têm sufixo “.ARJ”. Vejamos através de exemplos, alguns comandos do ARJ. O mesmo
programa ARJ.EXE é usado para compactar, descompactar e para criar arquivos auto
descompactáveis. Considere ainda que estamos operando com os mesmo arquivos
DICAS.000, DICAS.001, etc. usados na figura 5.

A) ARJ A DICOMP DICAS.*

Arquivos a serem compactados


Nome do arquivo criado: DICOMP.ARJ
9
Comando para compactar
Os arquivos DICAS.000, DICAS.001, etc. serão compactados no arquivo DICOMP.ARJ

B) ARJ E DICOMP
Arquivo a ser descompactado: DICOMP.ARJ
Comando para descompactar

Os arquivos presentes em DICOMP.ARJ serão descompactados.

C) ARJ A B:DICOMP DICAS.*
Análogo ao exemplo “A”, exceto que o arquivo DICOMP.ARJ será criado no drive “B:”.

D) ARJ E B:DICOMP C:\BBS
Análogo ao exemplo “B”, exceto que o arquivo DICOMP.ARJ será lido do drive “B:” e os
arquivos descompactados serão colocados no diretório \BBS, do drive “C:”.

E) ARJ L DICOMP

Arquivo a ser lido: DICOMP.ARJ


Comando para listar o conteúdo

Não será realizada nenhuma compactação nem descompactação. Será apresentada


na tela uma lista dos arquivos compactados em DICOMP.ARJ. A lista terá o seguinte aspecto:

ARJ 2.50a SHAREWARE Copyright (c) 1990-95 ARJ Software. Dec 12 1995
*** This SHAREWARE program is NOT REGISTERED for use in a business, commercial,
*** government, or institutional environment except for evaluation purposes.

Processing archive: DICOMP.ARJ


Archive created: 1997-02-13 09:54:22, modified: 1997-02-13 09:54:22
Filename Original Compressed Ratio DateTime modified CRC-32 AttrBTPMGVX
------------ ---------- ---------- ----- ----------------- -------- -----------
DICAS.002 100096 26795 0.268 97-02-11 08:00:13 4DC6B198 A--W B 1
DICAS.000 12032 4962 0.412 97-02-12 09:01:23 711204F4 A--W B 1
DICAS.001 41856 12537 0.300 97-02-13 10:02:33 AFBD0086 A--W B 1
DICAS.IND 6528 2351 0.360 97-02-14 11:03:43 947F7B70 A--W B 1
DICAS.006 25088 7281 0.290 97-02-15 12:04:53 83146801 A--W B 1
DICAS.003 59520 17131 0.288 97-02-16 13:05:03 FA02E4EA A--W B 1
DICAS.005 21888 6308 0.288 97-02-17 14:06:31 17CEEC18 A--W B 1
DICAS.004 27520 8884 0.323 97-02-18 15:07:21 BF2633FD A--W B 1
------------ ---------- ---------- -----
8 files 294528 86249 0.293

Assim será possível fazer uma descompactação seletiva. Usar o Arj com a opção “L” é o
mesmo que usar o PKZIP com a opção “-v”, como explicado anteriormente

10
F) ARJ E DICOMP DICAS.002

Arquivo que será descompactados


Arquivo de onde será extraído o DICAS.002
Comando para Descompactação (ou extração)

Apenas o arquivo DICAS.002 será descompactado do DICOMP.ARJ.

G) ARJ A  ­JE  DICOMP DICAS.*
Arquivo a serem compactados
Arquivo que será criado: DICOMP.EXE
Comando para criar .EXE auto descompactável
Comando de Compactção

O comando “A -JE” é usado para criar um arquivo .EXE auto-descompactável. Ao invés


de ser criado um arquivo DICOMP.ARJ, será criado um arquivo DICOMP.EXE, que, se for
executado, gerará os arquivos originais DICAS.*, sem a necessidade do uso do ARJ. Esse
comando tem a mesma função que o ZIP2EXE, pertence ao pacote do PKZIP.

H) ARJ A  ­R  B:COPLIVRO C:\LIVRO\*.*
Arquivo a serem compactados
Será gerado o arquivo COPLIVRO.ARJ
Indica para usar também os subdiretórios de \LIVRO
Comando de Compactção

Quando usado na forma acima, ARJ criará no drive “B” um arquivo de nome
COPLIVRO.ARJ que contém compactados todos os arquivos do diretório \LIVROS, bem como
seus subdiretórios e os arquivos neles contidos. Ou seja, nesse processo de compactação a
estrutura de diretórios é mantida. Para descompactar esse arquivo, o ARJ deve ser usado da
forma:

ARJ X B:COPLIVRO C:\

Se o disquete com o arquivo COPLIVRO.ARJ for transportado para outro computador e


descompactado como indicado acima, o ARJ criará no drive “C” desse computador a mesma
estrutura de diretórios existente em \LIVROS do computador original. Se esse arquivo for
descompactado no drive “C” original, todos os arquivos serão recolocados exatamente onde
estavam. Essa é uma forma de fazer BACKUP compactado.

4LHA
Este é o compactador e descompactador de arquivos tipo .LHZ. Sua utilização é muito
parecida com a do ARJ. Na verdade. o programa ARJ foi inspirado no LHA original. Alguns
exemplos de sua utilização são mostrados a seguir.

A) LHA A DICOMP DICAS.*

11
Cria o arquivo DICOMP.LHZ, resultante da compactação dos arquivos DICAS.*
existentes no diretório corrente.

B) LHA E DICOMP C:\

Descompacta os arquivos existentes em DICOMP.LHZ, colocando-os no drive “B”.

C) LHA L DICOMP

Mostra a lista dos arquivos compactados em DICOMP.LHZ.

5O que você pode esperar em termos de economia de espaço


Dependendo do tipo de arquivo, o índice de compactação obtido pode ser muito
grande. Textos normalmente são reduzidos a cerca de 40% do seu tamanho original. Se
tiverem muitas linhas com caracteres repetidos o resultado pode ser ainda melhor. Programas
executáveis ficam em média com 70% do seu tamanho. Se um programa executável possuir
muitas mensagens embutidas, pode ficar com até 50% do tamanho original. Arquivos gráficos
normalmente não podem ser muito compactados. Alguém pode se considerar feliz se
conseguir reduzir um arquivo gráfico a 80% do tamanho original. Isso é por que os diversos
gráficos já utilizam normalmente suas próprias técnicas de compressão.

12

Você também pode gostar