[LUG.ro Mix] mpeg, svcd y otras yerbas

Sebastián D. Criado lugro-mix@lugro.org.ar
Wed, 1 Jun 2005 14:29:15 -0300


--nextPart1289464.qLaND5Bndi
Content-Type: text/plain;
  charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

El Martes 31 Mayo 2005 21:29, Ulises Cervi=F1o escribi=F3:
> Buenas,
>
> Resulta que estoy tratando de pasar algunos avis (mpegs, riff, etc.) a
> SVCD para poder verlos en mi dvd-player (les ruego se abstengan de
> responder "el m=EDo los lee directamente" "el m=EDo le pongo una feta de
> paleta y me la lee" etc.).
Buscando encontr=E9 otra receta que tal vez te funcione.
http://64.233.187.104/search?q=3Dcache:RkUy_Pce92sJ:www.frikis.org/staticpa=
ges/index.php%3Fpage%3D20030115025215847+svcd+mplayer+ntsc&hl=3Des&client=
=3Dfirefox
=2D--------------------------
Pasando Divx a VCD, SVCD, CVCD etc.   	 =20
Pasando Divx a VCD, SVCD, CVCD etc. por paranouei (paranouei_AT_jazzfree.co=
m)

Esta tarea es posible hacerla bajo linux, incluso se puede automatizar para=
 no=20
tener m=E1s que teclear p.ej. divx2vcd <archivo.avi>, irte un rato por ah=
=ED, y=20
al volver tener los archivos .bin y .cue listos para tostar.

Bien, antes de nada unos conceptos b=E1sicos:

T=E9rminos b=E1sicos:

* VCD:Video CD. Se trata de un stream MPEG-1 a 352x288 y 25 fps (PAL) o=20
352x240 y 29.976 fps (NTSC). El bitrate es constante a 1150kbps y el audio =
es=20
MPEG layer 2 a 224 kbps. Caben tantos minutos de videos como indique el CD=
=20
(74 o 80).
* SVCD: Super Video CD. Se trata de un stream MPEG-2 a 480x576 y 25 fps (PA=
L)=20
o 480x480 y 29.976 fps (NTSC). El bitrate puede ser variable hasta 2600kbps=
 y=20
el audio tambi=E9 puede ir de 32 a 384 kbps. Los minutos de video que caben=
=20
dependen del bitrate escogido, aunque suelen estar entre 40 y 55 minutos po=
r=20
CD.
* XVCD, CVCD..:Son modificaciones del est=E1ndar con diferentes bitrates, e=
tc. y=20
que pueden no funcionar en todos los reproductores DVD. Aunque hoy en d=EDa=
 los=20
reproductores DVD pr=E1cticamente "se lo tragan todo".

Por ejemplo, el CVCD no es m=E1s que un VCD con bitrate variable, con lo qu=
e se=20
aprovechan las escenas "f=E1ciles" para usar un bitrate m=E1s bajo, con lo =
que se=20
aprovecha mejor el espacio. De esta forma podemos meter m=E1s de 90 minutos=
 en=20
un CD.


Herramientas:

* Mplayer. Nos servir=E1 como filtro de input para el transcode. De esta fo=
rma=20
el transcode podr=E1 "comerse" todo lo que puede comerse el mplayer (divx,=
=20
realmedia, subtitulos...).
* Transcode. Es la herramienta principal. Sirve para transformar entre todo=
s=20
los formatos imaginables..
* MJPEG Tools. Ser=E1 nuestro filtro de salida. Adem=E1s, incluye herramien=
tas=20
para multiplexar el mpg.
* VCDImager. Sirve para crear las imagenes .bin .cue a partir del mpg.

A parte los scripts que incluyo utilizan algunas utilizades b=E1sicas como =
bc=20
(calculadora) y perl.

Bueno, una vez que tenemos esto, vamos al turr=F3n. ;)

Divx2VCD:

Me he preparado el siguiente script divx2vcd, el cual se encarga de los=20
c=E1lculos para obtener una imagen con el mismo aspecto (a=F1adiendo bordes=
=20
negros si hace falta). Usa bitrate constante, de forma que es totalmente=20
est=E1ndar VCD. El tama=F1o m=E1ximo de cada archivo (para que entre en un =
CD, est=E1=20
en la variable CDSIZE. El script se encarga de crear el video y el audio co=
n=20
transcode, luego multiplexarlos con mplex, y finalmente crear las im=E1gene=
s.=20
Lo pod=E9is descargar aqu=ED. Lo pego tambi=E9n aqu=ED para que lo veais:

=2D- Inicio divx2vcd --

#!/bin/bash

# Este script pasa un Divx a VCD. Para los archivos temporales se
# necesita al menos 4.5 Gigas (m1v y mpa, los .mpg y los .bin)

DIR=3D`pwd`
TEMPFOLDER=3D/tmp/divx2vcd-$RANDOM
CDSIZE=3D795
VIDEORATE=3D1150
AUDIORATE=3D224

if [ $# -eq 0 ]; then
echo "Usage:"
echo " divx2vcd <divxfile>"
exit 1
fi

=46ILE=3D$1
if [ "$1" =3D=3D "`basename $1`" ]; then
=46ILE=3D"$DIR/$1"
fi

mkdir $TEMPFOLDER
cd $TEMPFOLDER

tcprobe -i "$FILE" > $TEMPFOLDER/info

WIDTH=3D`grep '\[avilib\] V:' $TEMPFOLDER/info | perl -e ' $line=3D<STDIN> =
; $line=20
=3D~ /width=3D(\d+)/ ; print $1' `
HEIGHT=3D`grep '\[avilib\] V:' $TEMPFOLDER/info | perl -e ' $line=3D<STDIN>=
 ;=20
$line =3D~ /height=3D(\d+)/ ; print $1' `
=46PS=3D`grep '\[avilib\] V:' $TEMPFOLDER/info | perl -e ' $line=3D<STDIN> =
; $line=20
=3D~ /V: (.+?) fps/ ; print $1' `
=46PS_1=3D`echo "scale=3D1 ; $FPS/1"| bc -l`
=46RAMES=3D`grep '\[avilib\] V:' $TEMPFOLDER/info | perl -e ' $line=3D<STDI=
N> ;=20
$line =3D~ /frames=3D(\d+)/ ; print $1' `
SEGUNDOS_TOTAL=3D`echo "scale=3D0 ; ($FRAMES / $FPS)"| bc -l`
HORAS=3D`echo "scale=3D0 ; ($SEGUNDOS_TOTAL / 3600)"| bc -l`
MINUTOS=3D`echo "scale=3D0 ; (($SEGUNDOS_TOTAL - 3600 * $HORAS)/60)"| bc -l`
SEGUNDOS=3D`echo "scale=3D0 ; ($SEGUNDOS_TOTAL % 60)"| bc -l`

echo "*************** FILE INFO ***************"
echo "Frame Size: ${WIDTH}x${HEIGHT} - FPS: $FPS"
echo "Length: $FRAMES - Seconds: $SEGUNDOS_TOTAL"
echo "$HORAS hours, $MINUTOS minutes, $SEGUNDOS seconds"

if [ $FPS_1 =3D=3D "29.9" -o $FPS_1 =3D=3D "30" -o $FPS_1 =3D=3D "23.9" ]; =
then
WIDTH_OUT=3D352
HEIGHT_OUT=3D240
else
WIDTH_OUT=3D352
HEIGHT_OUT=3D288
fi

echo "Video Output: ${WIDTH_OUT}x${HEIGHT_OUT}"

# Ahora calculamos los valores pa los bordes.

ANCHO_1_1_OUT=3D`echo "($HEIGHT_OUT * 4/3)"| bc -l`
ALTO_OUT=3D`echo "$HEIGHT / ($WIDTH / $ANCHO_1_1_OUT)" | bc -l`
# Redondeamos
ALTO_OUT=3D`echo "scale=3D0 ; $ALTO_OUT/1"| bc -l`
# Nos aseguramos de que sea par
ALTO_OUT=3D`echo "scale=3D0 ; $ALTO_OUT+$ALTO_OUT%2" | bc -l`

BORDE=3D`echo "scale=3D0 ; ($HEIGHT_OUT-$ALTO_OUT)/2"| bc -l`
echo "alto sin bordes: $ALTO_OUT, con borde: $BORDE"

# Borramos Pelicula.m1v y Pelicula.mpa
rm -f Pelicula.m1v Pelicula.mpa


cd $TEMPFOLDER

echo "transcode -i "$FILE" -V -x mplayer -y mpeg2enc,mp2enc -F 1 -Z=20
${WIDTH_OUT}x$ALTO_OUT -Y -$BORDE,0,-$BORDE,0 --export_asr 2 -E 44100 -b=20
$AUDIORATE -o $DIR/Pelicula -w $VIDEORATE"
transcode -i "$FILE" -V -x mplayer -y mpeg2enc,mp2enc -F 1 -Z=20
${WIDTH_OUT}x$ALTO_OUT -Y -$BORDE,0,-$BORDE,0 --export_asr 2 -E 44100 -b=20
$AUDIORATE -o $DIR/Pelicula -w $VIDEORATE

#transcode -i "$FILE" -V -x mplayer -y mpeg -F $MPEG_OPTIONS -Z=20
${WIDTH_OUT}x$ALTO_OUT -Y -$BORDE,0,-$BORDE,0 --export_asr 2 -E 44100 -b=20
$AUDIORATE -o $DIR/Pelicula

rm $TEMPFOLDER/*
rmdir $TEMPFOLDER

cd $DIR

# Si no hay Pelicula.m1v y Pelicula.mpa salir
[ -f Pelicula.m1v -a -f Pelicula.mpa ] || exit 1

rm -f Pelicula*.mpg

#Ahora multiplexamos el .mpg
mplex -f 1 -m 1 -S $CDSIZE Pelicula.m1v Pelicula.mpa -o Pelicula%d.mpg
#tcmplex -i Pelicula.m1v -p Pelicula.mpa -o Pelicula.mpg -m 1

# Y creamos las imagenes...
for i in `ls Pelicula*mpg` ; do
vcdimager -t vcd2 -c $i.cue -b $i.bin $i
done
=2D- Final divx2vcd --


Divx2CVCD:

Nuevo script Divx2CVCD (16/12/2002). Este script obtiene toda la informaci=
=F3n=20
posible de el .avi, y calcula el bitrate del video autom=E1ticamente para q=
ue=20
quepa en un CD en formato CVCD (VCD con bitrate variable). Se pueden probar=
=20
con distintos valores de la variable QUANTUM. El Quantum, que es la calidad=
=20
(como el CQ-Constant Quality del TMPGEnc), puede ir de 2 a 31, cuanto m=E1s=
=20
cercano a 2 m=E1s calidad. Con un valor menor de 8 se obtiene buena calidad=
=2E=20
AUDIORATE tambi=E9n se puede modificar. El script lo pod=E9is descargar de =
aqu=ED,=20
y lo pego a continuaci=F3n:

=2D- Inicio divx2cvcd --
!/bin/bash

# Este script pasa un Divx a CVCD. Para los archivos temporales se
# necesita al menos 4.5 Gigas (m1v y mpa, los .mpg y los .bin)

DIR=3D`pwd`
TEMPFOLDER=3D/tmp/divx2vcd-$RANDOM
TEMP_TEMPLATE=3D/tmp/tcmplex-template-$RANDOM
CDSIZE=3D795
QUANTUM=3D5
# Maxrate ahora es automatico
#MAXRATE=3D900
AUDIORATE=3D128

if [ $# -eq 0 ]; then
echo "Usage:"
echo " divx2cvcd <divxfile>"
exit 1
fi

=46ILE=3D$1
if [ "$1" =3D=3D "`basename $1`" ]; then
=46ILE=3D"$DIR/$1"
fi

mkdir $TEMPFOLDER
cd $TEMPFOLDER

tcprobe -i "$FILE" > $TEMPFOLDER/info

WIDTH=3D`grep '\[avilib\] V:' $TEMPFOLDER/info | perl -e ' $line=3D<STDIN> =
; $line=20
=3D~ /width=3D(\d+)/ ; print $1' `
HEIGHT=3D`grep '\[avilib\] V:' $TEMPFOLDER/info | perl -e ' $line=3D<STDIN>=
 ;=20
$line =3D~ /height=3D(\d+)/ ; print $1' `
=46PS=3D`grep '\[avilib\] V:' $TEMPFOLDER/info | perl -e ' $line=3D<STDIN> =
; $line=20
=3D~ /V: (.+?) fps/ ; print $1' `
=46PS_1=3D`echo "scale=3D1 ; $FPS/1"| bc -l`
=46RAMES=3D`grep '\[avilib\] V:' $TEMPFOLDER/info | perl -e ' $line=3D<STDI=
N> ;=20
$line =3D~ /frames=3D(\d+)/ ; print $1' `
SEGUNDOS_TOTAL=3D`echo "scale=3D0 ; ($FRAMES / $FPS)"| bc -l`
HORAS=3D`echo "scale=3D0 ; ($SEGUNDOS_TOTAL / 3600)"| bc -l`
MINUTOS=3D`echo "scale=3D0 ; (($SEGUNDOS_TOTAL - 3600 * $HORAS)/60)"| bc -l`
SEGUNDOS=3D`echo "scale=3D0 ; ($SEGUNDOS_TOTAL % 60)"| bc -l`

VIDEO_RATE=3D`echo "scale=3D0 ;(($CDSIZE * 1024 -=20
($AUDIORATE/8*$SEGUNDOS_TOTAL))*8 / $SEGUNDOS_TOTAL)"| bc -l`
# +5%
MAXRATE=3D`echo "scale=3D0 ; ($VIDEO_RATE * 105 / 100)" | bc -l`

echo "*************** FILE INFO ***************"
echo "Frame Size: ${WIDTH}x${HEIGHT} - FPS: $FPS"
echo "Length: $FRAMES - Seconds: $SEGUNDOS_TOTAL"
echo "$HORAS hours, $MINUTOS minutes, $SEGUNDOS seconds"
echo "Recommended averagge video bitrate: $VIDEO_RATE"
echo "Using max video bitrate: $MAXRATE"


if [ $FPS_1 =3D=3D "29.9" -o $FPS_1 =3D=3D "30" -o $FPS_1 =3D=3D "23.9" ]; =
then
WIDTH_OUT=3D352
HEIGHT_OUT=3D240
else
WIDTH_OUT=3D352
HEIGHT_OUT=3D288
fi

echo "Video Output: ${WIDTH_OUT}x${HEIGHT_OUT}"

# Ahora calculamos los valores pa los bordes.

ANCHO_1_1_OUT=3D`echo "($HEIGHT_OUT * 4/3)"| bc -l`
ALTO_OUT=3D`echo "$HEIGHT / ($WIDTH / $ANCHO_1_1_OUT)" | bc -l`
# Redondeamos
ALTO_OUT=3D`echo "scale=3D0 ; $ALTO_OUT/1"| bc -l`
# Nos aseguramos de que sea par
ALTO_OUT=3D`echo "scale=3D0 ; $ALTO_OUT+$ALTO_OUT%2" | bc -l`

BORDE=3D`echo "scale=3D0 ; ($HEIGHT_OUT-$ALTO_OUT)/2"| bc -l`

echo "alto sin bordes: $ALTO_OUT, con borde: $BORDE"

# Borramos Pelicula.m1v y Pelicula.mpa
rm -f Pelicula.m1v Pelicula.mpa


cd $TEMPFOLDER
#echo "transcode -i "$FILE" -V -x mplayer -y mpeg2enc,mp2enc -F 0,"-q 7" -Z=
=20
${WIDTH_OUT}x$ALTO_OUT -Y -$BORDE,0,-$BORDE,0 --export_asr 2 -E 44100 -b 16=
0=20
=2Do $DIR/Pelicula -w $MAXRATE"
transcode -i "$FILE" -V -x mplayer -y mpeg2enc,mp2enc -F 2,"-q $QUANTUM" -Z=
=20
${WIDTH_OUT}x$ALTO_OUT -Y -$BORDE,0,-$BORDE,0 --export_asr 2 -E 44100 -b=20
$AUDIORATE -o $DIR/Pelicula -w $MAXRATE

rm $TEMPFOLDER/*
rmdir $TEMPFOLDER

cd $DIR


# Si no hay Pelicula.m1v y Pelicula.mpa salir
[ -f Pelicula.m1v -a -f Pelicula.mpa ] || exit 1

rm -f Pelicula*.mpg

#Ahora multiplexamos el .mpg
#mplex -f 2 -m 1 -V -S $CDSIZE -r $MAXRATE Pelicula.m1v Pelicula.mpa -o=20
Pelicula%d.mpg

echo "maxFileSize =3D $CDSIZE" > $TEMP_TEMPLATE
tcmplex -i Pelicula.m1v -p Pelicula.mpa -o Pelicula.mpg -m 1 -F $TEMP_TEMPL=
ATE
rm $TEMP_TEMPLATE


# Y creamos las imagenes...
for i in `ls Pelicula*.mpg` ; do
vcdimager -t vcd2 -c $i.cue -b $i.bin $i
done



=2D- Final divx2cvcd --



Divx2SVCD:

Para pasar a SVCD es b=E1sicamente el mismo script s=F3lo que adaptado para=
 crear=20
un SVCD. Los valores que se puden modificar son CDSIZE, QUANTUM, MAXVIDEORA=
TE=20
y AUDIORATE. Ya no hace falta crear un template porque lo crea=20
autom=E1ticamente. Igual que antes, os pod=E9is descargar el script de aqu=
=ED, y=20
adem=E1s lo pego a continuaci=F3n:

=2D- Inicio divx2svcd --

#!/bin/bash

# Este script pasa un Divx a SVCD. Para los archivos temporales se
# necesita al menos 4.5 Gigas (m2v y mpa, los .mpg y los .bin)

DIR=3D`pwd`
TEMPFOLDER=3D/tmp/divx2svcd-$RANDOM
TEMPLATE=3D$TEMPFOLDER/template
CDSIZE=3D795
QUANTUM=3D7
MAXVIDEORATE=3D4000000
AUDIORATE=3D160

if [ $# -eq 0 ]; then
echo "Usage:"
echo " divx2svcd <divxfile>"
exit 1
fi


=46ILE=3D$1
if [ "$1" =3D=3D "`basename $1`" ]; then
=46ILE=3D"$DIR/$1"
fi


mkdir $TEMPFOLDER
cd $TEMPFOLDER

# Create a template for bbmpeg encoder
echo "quant_value =3D $QUANTUM" > $TEMPLATE
echo "max_bitrate =3D $MAXVIDEORATE" >> $TEMPLATE
echo "maxFileSize =3D $CDSIZE" >> $TEMPLATE

echo "Dir: $DIR"
echo "Temp: $TEMPFOLDER"
tcprobe -i "$FILE" > $TEMPFOLDER/info

WIDTH=3D`grep '\[avilib\] V:' $TEMPFOLDER/info | perl -e ' $line=3D<STDIN> =
; $line=20
=3D~ /width=3D(\d+)/ ; print $1' `
HEIGHT=3D`grep '\[avilib\] V:' $TEMPFOLDER/info | perl -e ' $line=3D<STDIN>=
 ;=20
$line =3D~ /height=3D(\d+)/ ; print $1' `
=46PS=3D`grep '\[avilib\] V:' $TEMPFOLDER/info | perl -e ' $line=3D<STDIN> =
; $line=20
=3D~ /V: (.+?) fps/ ; print $1' `
=46PS=3D`echo "scale=3D1 ; $FPS/1"| bc -l`
=46RAMES=3D`grep '\[avilib\] V:' $TEMPFOLDER/info | perl -e ' $line=3D<STDI=
N> ;=20
$line =3D~ /frames=3D(\d+)/ ; print $1' `
SEGUNDOS_TOTAL=3D`echo "scale=3D0 ; ($FRAMES / $FPS)"| bc -l`
HORAS=3D`echo "scale=3D0 ; ($SEGUNDOS_TOTAL / 3600)"| bc -l`
MINUTOS=3D`echo "scale=3D0 ; (($SEGUNDOS_TOTAL - 3600 * $HORAS)/60)"| bc -l`
SEGUNDOS=3D`echo "scale=3D0 ; ($SEGUNDOS_TOTAL % 60)"| bc -l`

echo "*************** FILE INFO ***************"
echo "Frame Size: ${WIDTH}x${HEIGHT} - FPS: $FPS"
echo "Length: $FRAMES - Seconds: $SEGUNDOS_TOTAL"
echo "$HORAS hours, $MINUTOS minutes, $SEGUNDOS seconds"

if [ $FPS =3D=3D "29.9" -o $FPS =3D=3D "30" -o $FPS =3D=3D "23.9" ]; then
WIDTH_OUT=3D480
HEIGHT_OUT=3D480
MPEG_OPTIONS=3Ds,2,$TEMPLATE
else
WIDTH_OUT=3D480
HEIGHT_OUT=3D576
MPEG_OPTIONS=3Ds,3,$TEMPLATE
fi

echo "Salida: $WIDTH_OUT x $HEIGHT_OUT"

# Ahora calculamos los valores pa los bordes.

ANCHO_1_1_OUT=3D`echo "($HEIGHT_OUT * 4/3)"| bc -l`
ALTO_OUT=3D`echo "$HEIGHT / ($WIDTH / $ANCHO_1_1_OUT)" | bc -l`
# Redondeamos
ALTO_OUT=3D`echo "scale=3D0 ; $ALTO_OUT/1"| bc -l`
# Nos aseguramos de que sea par
ALTO_OUT=3D`echo "scale=3D0 ; $ALTO_OUT+$ALTO_OUT%2" | bc -l`

BORDE=3D`echo "scale=3D0 ; ($HEIGHT_OUT-$ALTO_OUT)/2"| bc -l`
echo "alto sin bordes: $ALTO_OUT, con borde: $BORDE"

# Borramos Pelicula.m1v y Pelicula.mpa
rm -f Pelicula.m2v Pelicula.mpa


cd $TEMPFOLDER
echo "Ejecutando: transcode -i "$FILE" -V -x mplayer -y mpeg -F $MPEG_OPTIO=
NS=20
=2DZ ${WIDTH_OUT}x$ALTO_OUT -Y -$BORDE,0,-$BORDE,0 --export_asr 2 -E 44100 =
=2Db=20
$AUDIORATE -o $DIR/Pelicula"
transcode -i "$FILE" -V -x mplayer -y mpeg -F $MPEG_OPTIONS -Z=20
${WIDTH_OUT}x$ALTO_OUT -Y -$BORDE,0,-$BORDE,0 --export_asr 2 -E 44100 -b=20
$AUDIORATE -o $DIR/Pelicula
rm $TEMPFOLDER/*
rmdir $TEMPFOLDER

cd $DIR

[ -f Pelicula.m2v -a -f Pelicula.mpa ] || exit 1

rm -f Pelicula*.mpg

#Ahora multiplexamos el .mpg
tcmplex -i Pelicula.m2v -p Pelicula.mpa -o Pelicula.mpg -m s -F $TEMPLATE


# Y creamos las imagenes...
for i in `ls Pelicula*mpg` ; do
vcdimager -t svcd -c $i.cue -b $i.bin $i
done



=2D- Final divx2svcd --



Subt=EDtulos:

Si tenemos un divx en otro idioma, y a parte tenemos un archivo con=20
subt=EDtulos, tambi=E9n es posible meterlos al crear el *VCD. Los subt=EDtu=
los=20
quedar=E1n grabados encima de la pel=EDcula, formando parte de ella (es dec=
ir,=20
que no se pueden quitar).

Bien, el m=E9todo es muy sencillo, basta tener los subt=EDtulos en un forma=
to que=20
est=E9 soportado por mplayer (subrip, microdvd... soporta casi todos), y po=
ner=20
el archivo en el mismo directorio que el .avi, y renombrar el archivo de=20
subt=EDtulos de forma que tenga exactamente el mismo nombre que el .avi (sa=
lvo=20
la extensi=F3n, claro). De esta forma conseguimos que mplayer reproduzca=20
autom=E1ticamente los subt=EDtulos. Si quer=E9is podeis comprobar antes de=
=20
"transcodear" que al lanzar mplayer <archivo.avi> los subt=EDtulos son=20
cargados.

Bueno, espero que os haya servido de ayuda esta mini-gu=EDa y los scripts.
=2D---------------------------
Saludos.-
Saludos.-
=2D-=20

Sebasti=E1n D. Criado - scriado{en}ciudad.com.ar
L.U.G.R.o - http://www.lugro.org.ar
GNU/Linux Registered User # 146768
=2D------------------------------------------------------------------
"Si el Universo fuera un programa estar=EDa hecho en C, y correr=EDa sobre
un sistema UNIX"
                                                   An=F3nimo.

		=09

--nextPart1289464.qLaND5Bndi
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (GNU/Linux)

iD8DBQBCnfCX8hmHQ8ZCg0IRAtpwAJ4ufaSqfJgCysAom+Zb2ct3ppYGbQCeN2Sk
XRYV4WkMeSJnKu6qVEd+yQU=
=F0/A
-----END PGP SIGNATURE-----

--nextPart1289464.qLaND5Bndi--