elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


Tema destacado: Trabajando con las ramas de git (tercera parte)


  Mostrar Mensajes
Páginas: 1 2 3 4 [5] 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ... 436
41  Programación / Programación General / Re: ¿Cómo promediar 2 colores? en: 8 Mayo 2024, 23:48 pm
¿Por qué "0x"+ convierte a hexadecimal tan fácil? ¿es como una función (Number, toString, etc)?
0x es el prefijo para indicar que el número debe interpretarse como un valor hexadecimal.

Citar
¿Qué es esto
(decimal1 >> 16) & 0xFF;
(decimal1 >> 8) & 0xFF;
decimal1 & 0xFF;
los signos: << y >> son operadores de desplazamiento de bits.
>> Equivale a dividir entre 2 por cada valor indicado.
<< Equivale a multiplicar por 2 por cada valor indicado.

Por ejemplo, supongamos que tengo la variable 'valor' que vale 1234
entonces: 'valor << 3' significa que se añaden 3 bits con valor 0 en la posición de menor peso, lo que equivaldría a haberlo multiplicado por 8, es decir equivale a esto:
valor = (valor * 2^³)
con lo que el valor finalmente sería:
En decimal:
antes: 1234, luego: 9872
En binario:
10011010010, luego 10011010010000

Ahora deberías entender que la operación: valor >> 3, lo que hace es eliminar los 3 bits más bajos que es equivalente a dividir entre 8.
Al ser operaciones de bit, son operaciones mucho más rápidas que multiplicar o dividir, pues requieren un solo ciclo de reloj (técnicamente).

El símbolo: '&' es el operador booleano AND y '0xFF' es el valor 255 expresado en hexadecimal, básicamene cuando haces un valor and 255, todos los bits por encima del 8º se ponen a cero.
toma la calculadora escribe (en decimal) 123456 (luego pulsa el botón de opción 'bin' para ver el valor en binario, luego devuélvelo a decimal pulsando el botón de opción 'dec') pulsa la tecla AND y luego escribe 255, el resultado será: 64, es decir 0100.0000 dicho de otro modo, hace que el valor esté en el rango 0-255. En definitiva tratándose del valor del canal de un píxel se asegura que el resultado no esté fuera de rango.


Citar
¿Qué hace esto?
Código
  1. function decimalToHex(decimal:Number):String {
  2.    var hex:String = decimal.toString(16);
  3.    while (hex.length < 6) {
  4.        hex = "0" + hex;
  5.    }
  6.    return hex.toUpperCase();
  7. }
¿Convierte decimal en string?
Sí. Es una función que convierte un número decimal en una string formateado en hexadecimal y lo devuelve en mayúsculas .

Citar
Según recuerdo lo que se convierte es lo que va entre paréntesis.
Estás más verde de lo que pensaba en el lenguaje del que estás 'enamorado'...  :silbar: :silbar:
Convierte en hexadecimal el valor que contiene el parámetro de tipo numérico llamado 'decimal'.

Citar
¿Qué significaría 16? ¿convierte un número a hexadecimal así nomás?
Luego entiendo que agrega 0s si la longitud del hex generado es <6.
El 16, indica a la clase string, que lo cambie en la base numérica hexadecimal, si pones '8' lo convierte a octal, si pones '2' lo convierte a binario... creo que admite hasta la base 32 o así... (también 3, 5, 21,22... etc...)

Citar
¿Y esto qué es?
var colorPromedio:String = decimalToHex((rPromedio << 16) | (gPromedio << 8) | bPromedio);
Se define a una variable llamando a una función... ¿pero qué es << 16, << 8 y los | ?
Se define un variable sí, que recibe como valor el retorno de la función.
La función recibe un valor numérico, en este caso es una expresión numérica (una operación).
Sería equivalente a definir una variable numerica y asignarle el resultado de esa expresión... y que luego fuere esa variable la que pasaras a la función, pero así como está escrito, te ahorras código (igualmente el compilador debe crear una variable temporal para calcular el resultado de la expresión).

(rPromedio << 16) significa: multiplica 'rPromedio * 65536' (es una operación entera, como ya te indiqué más arriba no multiplica, solo añade bits, de la parte baja exactamente 16 bits '0', en realidad desplaza todos los bits (a la vez), 16 posiciones arriba, rellenando con 0 las posiciones más bajas que antes estaban ocupadas).
Después de calcular esos 2 valores 'r' y 'g' los unifica en un solo valor mediante el operador OR (el símbolo '|')
Un ejemplo de desplzamiento a la izquierda, sea el valor 5, en bnario 101, lo desplazaremos primero 1, luego 2, luego 3 y luego 8.
5 en binario: 101
5 << 1, que da: 1010, en decimal 10
5 << 2, que da: 10100, en decimal: 20
5 << 3, que da: 101000, en decimal: 40
5 << 8, que da: 10100000000, en decimal 1280


Esta expresión: (rPromedio << 16) | (gPromedio << 8) | bPromedio
lo que en realidad está haciendo es colocar cada valor (byte) que representa el canal de color del pixel, en la posición que deben ocupar... sería equivalente a:

Código:
color = (rojo * 65536) + (verde * 256) + azul
colorPromedio = decimalToHex(color)
Nota que usar la suma  en bytes perfectamente acotados en sus rangos, es
equivalente a usar el operador OR, que es más rápido que la suma.
RR000    \RR posición del byte rojo, tras multiplicarlo por 65536
00VV00  \ GG posición del byte verde, tras multplicarlo por 256
0000AA  \ posición del byte azul...
--------------
RRVVAA



Para calcular el promedio de 2 valores en efecto...
1 debes descomponer el color en sus canales:
Código:
azul1 = (color1 and 255)
verde1 = ((color1 \ 256) and 255)
rojo1 = (color1 \ 65536)
Lo mismo para color2... (rojo2, verde2 y azul2)
2 luego sumar los canales individuales y promediarlos:
Código:
tmpRojo = ((rojo1 + rojo2) \2)
tmpVerde = ((verde1 + verde2) \2)
tmpAzul = ((azul1 + azul2) \2)
3 Finalmente montar el resultado de los canales al color deseado...
Código:
color =  (tmpRojo * 65536) + (tmpVerde * 256) + tmpAzul

La forma seguida en el código es más óptima en cuanto al rendimiento, pues utiliza operaciones binarias... las multiplicaciones y divisiones son muy costosas comparativamente.

Todo esto en realidad son cosas elementales de programación, te suena a chino, no solo por ser autodidacta (que no es en sí el problema), es debido quizás a ser demasiado cabezón en no haber querido aprender las cosas elementales que además son comunes e indistintas a cualquier lenguaje. El escaso tiempo que ahorraste en no aprender (3-6 mses) lo pierdes ahora (con creces) en detalles insignificantes porque para tí son galimatías incomprensibles.
42  Seguridad Informática / Hacking / Re: Desaparecer en forosactivos cuándo no se ofrece la opción de eliminar la cuenta. en: 4 Mayo 2024, 17:36 pm
Forosactivos es una plataforma que permite crear un foro, con el tiempo hay algunos que han quedado inactivos. En algunos casos, la persona ya no usa la cuenta y ...

... desde la misma plataforma han habilitado un formulario que permite la eliminación de la cuenta., ... Requisito necesario, tener acceso al correo electrónico de creacción de la cuenta en uno de los foros.
Ahora queda más clara tu exposición. Es meramente informativo.
La primera parecía algo más a caballo entre spam y una duda.
43  Foros Generales / Foro Libre / Re: ¿Cómo se pueden mezclar estas series numéricas? en: 4 Mayo 2024, 17:21 pm
Ainsss...

Para qué necesitas esas series?. Sería más fácil indicar que para qué necesitas una serie de números (qué vas a hacer con ellas?) e indicarte como generarla, que avanzar por tí mismo complicando cosas innecesariamente y luego pedir que te ayuden a terminar donde te atascaste.

Y por qué lo primero ha de ser preferible a lo segundo?.
Porque desde el primer punto, puede ser más eficiente.
Ser eficiente en lo segundo, cuando en lo primero es deficiente, no ayuda mucho.

Si buscas cómo generar determinadas series, puedes recurrir a la página OEIS, https://oeis.org/ que es un sitio que recoge más de 1/3 millón de series.

Todo lo que tienes que hacer es poner en la cajita de texto, los primeros números de la serie a buscar separado por comas. Nota que las páginas que describen una serie, suele tener un enlace en la forma: A00numero, por ejemplo A008619 (que es una serie que genera los números enteros repetido 2 veces); https://oeis.org/A008619
Una vez, en la página de la serie que quieres revisar, al menos debes bajar hasta el apartado: 'Formula'. Que es donde se descibe una o más funciones generadores para reproducir la serie.
Es fácil que en la documentación de la secuencia entrada haya una descripción que lleve a series (incluso) distintas, pero de alguna forma relacionada, sea por la propia serie, sea por un autor, etc... es decir tendrás que leer un poquito sí o sí.

Nota sin embargo que a veces más de una serie comparten x números de la serie, así que de ser el caso, hay que poner más números, o bien revisar las diferentes series hasta que localices la que opere como exactamente quieres tú (si existe).

...y como algunas de las 'series' que señalas, parecen simplemente antojosas, es decir no hay una formulación matemática referente (como esa de números decimales), eso implica que posiblemente no aparezca porque es una 'serie particular tuya', y difícilmente nadie más vaya nunca a necesitar usar una serie así, razón por la que nadie antes la haya buscado y documentado (en realidad más bien esto último).

La primera de las series (yo la conozco como la 'serie Euler', pero esto es muy relativo), se genera de varias maneras una de ellas es:
Código:
bucle para n desde 1 a x
  imprimir (Int(n / 2) + (n And 1)) * (((n And 1) * 2) - 1)
siguiente
También puedes hacerla con un código más fácil de comprender.
Código:
bucle para n desde 1 a x
    Si (n es par)
        imprimir (-n \ 2)   // (n * -1) \ 2)
    si no
        imprimir ((n +1) \ 2)
    fin si
siguiente
Nota la división entera '\'

Respecto de unificar valores de varias listas en una sola, lo mejor es ponerlas una a continuación de las otras, y al final barajar la lista final. Sean estas 3 supuestas series: (11, 28, 42), (123, 965, 87, 44), (20, 60, 200)... pues las pones de corrido en una sola lista:
(11, 28, 42, 123, 965, 87, 44, 20, 60, 200)
Y finalmente las barajas :
Código:
bucle para k desde cantidad-1 hasta 1 regresivamente
   tmp = random(entre k y 0)
   valor = lista(k)
   lista(k) = lista(tmp)
   lista(tmp)= valor
siguiente

Y ya los tienes desordenados...
Ése es el 'Algoritmo de Fisher-Yates' y Durstenfeld.
https://es.wikipedia.org/wiki/Algoritmo_de_Fisher-Yates

44  Seguridad Informática / Seguridad / Re: Me aparece como una persona en el equipo en: 3 Mayo 2024, 23:12 pm
Desde el modo seguro aún podría ejecutar un chequeo de disco, siendo el caso que el virus se oculte en un sector 'dañado', podrías reventarlo con:

chkdsk c: /f/v/r
Siendo 'c' la letra de la unidad de arranque de tu equipo.

Retira la unidad de tu equipo y conéctala de modo externo a otro equipo (si tienes), o al de un amigo, para pasarle el antivirus...
...siendo así, en otro equipo estará en modo esclavo, por lo que el S.O. en tu unidad no puede tomar el control del que la intrusión se apodera.

Sí a pesar de todo no se elimina, considera que estará oculto en el arranque, en ese caso habría que localizar alguna herramienta que sobrescriba el sector de arranque, considerando el S.O. de tu equipo...

Si todo falla, tocará formatear... (primero desde el modo seguro, al menos rescata todo lo que no puedes volver a instalar).
45  Seguridad Informática / Hacking / Re: Desaparecer en forosactivos cuándo no se ofrece la opción de eliminar la cuenta. en: 3 Mayo 2024, 23:01 pm
Si un foro no deja borrar tu cuenta, al menos siempre podrás cambiar la contraseña y el correo electrónico. Para la ocasión te creas un correo nuevo (solo para eso), cambias los datos y ya... dejas de entrar al foro y no tendrás más problemas, si el foro cae víctima de un ataque y se hacen con los correos electrónicos de los usuarios, no te afecta, porque ya pusiste un correo que no es el tuyo (estándar). Y si ya ni siquiera existe el sitio de correo, entonces qué importa que se hagan con ese dato.

El problema que quizás algún usuario pudiera tener como más grave, es cuando en el foro en vez de usar un alias para el registor pone su nombre y apellidos reales, ahí si es problemático, porque muchos sitios no dejan cambiar el nombre del usuario, y si tampoco te dejan eliminar tu cuenta, entonces cualquier ataque fructífero, tu nombre estaría ahí.

A las malas, siempre podrás interponer una denuncia gracias a la ley de protección de datos, si tu país tiene alguna ley relativa al asunto... para eliminar tu cuenta (no tus mensajes).
El derecho a rectificar o eliminar tus datos, no se te puede negar.

El caso más grave es cuando el administrador de un foro 'desaparece'... es de suponer que al paso del tiempo no pagando las cuotas de alojamiento, se suspenda el servicio y se elimine los datos (pero quién puede asegurar que el hospedador antes de eso, no venda los datos?)...
46  Foros Generales / Foro Libre / Re: ¿En serio "Día de la contraseña"? en: 3 Mayo 2024, 22:53 pm
Cada día es "el día de 50 cosas"...

Lo mejor es ignorarlo. No tendríamos tiempo para nada más si tuviéramos que estar pendientes de las 50 cosas cada día.
47  Media / Diseño Gráfico / Re: ¿Qué es esencial en un dibujo para que tenga sentido, para que parezca algo? en: 27 Abril 2024, 17:14 pm
Esto solo puede saberse por comparativa de algo previamente conocido.
A ciencia cierta, no hay algoritmo que describa que si los píxeles de una imagen corresponde a algo existente o no, principamente porque para ello se debería tener catalogado todas las imágenes de cosas de cosas posibles, algo que es inabarcable, ya que ralla el infinito.

Ahora bien, desde un punto matemático, puede seguirse una heurística...
Verás al analizar una imagen puedes determinar su nivel de entropía, para cuantificar si es una imagen con ruido o no.
Básicamente lo que se hace para esto es tratar la estadística como si uno fuera a comprimirla, digamos que si la compresión intentada no logra comprimir nada (o peor la expande), estaríamos ante una imagen de entropía máxima y casi que fijo que se trata de ruido. Por supuesto se escaparían muchos falsos positivos y negativos, pero quizás en una cantidad aceptable (no por cuanto a los errores se refiere, si no por cuanto a los aciertos que consigue).



Por su parte, una imagen solo puede mostrar tantas imágenes distintas como su tamaño y variación por píxel permitan.
Supongamos que un píxel solo puede adoptar 256 colores... entonces, la cantidad de imágenes posibles será:
 ancho * alto * 256
Y si fueran 24 bits por píxel (16.777216 colores), entonces:
 ancho * alto * 16777216

Cuando el producto ancho  * alto supera cierto umbral, es impracticable exhibir todas las posibilidades.

Considera que si, que absolutamente todo el universo, todos los seres (animales, plantas, etc...) hubieran sido fotografiados a razon de una 1 vez por cada segundo de su existencia y desde cualquier posición 3D respecto a la del objeto a fotografiar, en un tamaño pongamos de 1280 x 960 (por poner unos valores de ejemplo), pues en efecto, con un programa podríamos recrear todas esas fotos (sí también de toda la gente del planeta desnudo en diferentes posiciones incluso haciendo cosas que nunca hizo) y de toda la historia del planeta... pero sacarlas al azar, no resulta, y no hay algoritmo evidente que seguir para tratar de recrearlo salvo la 'fuerza bruta'...
entonces calcula: 1280 * 960 * 16777216 = 20.615.843.020.800
Algo más de 20'6billones de imágenes... curiosamente la mayoría serían puro ruido... y no, no tendríamos todas las imágenes posibles del universo, ya que el tamaño lo limita.
Para tener mayor resolución y que no suceda que una imagen dada venga a concordar con 100 millones de personas, podríamos aumentar el tamaño de la foto, que tal si se hicieran a un tamaño de 12800 * 9600 (así hemos multiplicado por 100 el tamaño al aumentar x10 cada lado), ahora tendríamos: 2.061.584.302.080.000 imágenes distintas. (2'06 trillones, 100 veces más que antes), Ahora podríamos diistinguir muy bien caras, y podríamos tene runa foto, donde perfectamente apareciera un partido de fútbol jugado íntegramente por 22 foreros que jamás nos hemos visto las caras...
Sería todo un reto clasificar tales imágenes para además de descartar las que tengan ruido clasificar el resto en temáticas de diversa índole.
Pero habría que empezar por dónde se podría almacenar todas esas imágenes y cuánto tiempo llevaría la combnatoria de todas ellas?. (recuerda que para el caso la siguiente imagen es la mayor parte de las veces, la misma que la previa, donde solo cambia el mismo píxel 1 unida de valor, es decir habría 16777216  imágenes idénticas donde solo cambia el valor de 1 único píxel.... pero incluso con toda esa ventaja, date cuenta crear 16 millones de imágenes 122.880.000 píxeles. dónde las guardas?. Cuánto tiempo te llevaría generar todas las versiones de una sola imagen negra completamente donde solo cambia el primer píxel de la misma pasando por todos los colores hasta que ese píxel llegue al blanco?.
48  Programación / Programación General / Re: Los programadores y los matemáticos ¿no se entienden bien? en: 27 Abril 2024, 16:16 pm
Las matemáticas tiene siglos de historia, y hasta hace poco más de un siglo, se ha operado manualmente, entonces usar variables del tipo: 'PrecioPorKiloDePatatas', no es muy acertado, sobretodo porque la mayor parte de las veces, lo que se hace (hacía) con ellas, era a título privado.

También porque suelen ser solo un pequeño puñado (de variables), por ello es muy manejable, también porque a fuerza de usarlo se han acostumbrado a usar las mismas variables (invariablemente), para las mismas cosas (incóginita: X, ejes: x,y (que aún seguimos usando)), una y otra vez... amén de las propias definiciones: Fuerza f, Velocidad v, Gravedad g... donde al no intervenir muchas otras variables con la que se presten a confusión se crean (crearon y sigue) fórmulas. Ejemplo donde 2 variables podrían chocar y como lo resuleven: Potencia = Trabajo * Tiempo:  W = T * t (al tiempo se le pone en minúsculas prácticamente siempre).

Ahora bien en informática, por breve que sea un programa podrías tener perfectamente entre unas decenas y unos cientos de variables... de entrada no hay letras suficientes, y si recurres a numerarlas (B1, B2...), puedes acabar perfectamente con: B47, B48... que ¿puede alguien decir como diferenciar B23 de B17 de B36 de ...?, una locura.
Entonces un informático va a preferir escribir código con: Potencia = Trabajo * Tiempo
Porque da igual que pase 1 día, 1 mes 1 año o 1 década, cuando lo lees lo entiendes sin ambigüedades, hoy ya no hay escasez de memoria como sucedía hasta primeros de los 90, y cuando compilas, el compilador puede obviar los nombres al estar operando con direcciones de memoria...

...caso aparte son las librerías que han de ser invocadas por sus nombres, entonces para facilitar tareas al humano, las direcciones son ofrecidas como nombres, para que nos sea fácil y útil recordar qué es y a qué se refiere. Imagina funciones del tipo:
Funcion F(p1, p2, p3, p4)
Funcion K(p1, p2, p3)
Funcion X(p1)
Funcion T(p1, p2)

Como se ve, esta forma no aportan nada de información útil, básicamente te exige aprender de memoria qué hace cada una y qué son cada parámetro...

Luego sí, poner nombres significativos, es un beneficio lo mires por donde lo mires...
¿...excepto en que tardas un poco más en teclearlo?, no necesariamente. Los IDE, ofrecen atajos de teclado, de modo que al pulsar ciertas teclas en un contexto dado, puede ofrecerte una lista de posibilidades, que se acota mucho tan solo tras escribir 2-4 letras... entonces aunque tuviera 15 letras, te ha bastado escribir 3 y 2 pulsaciones más de teclado o ratón...
Ciertamente esto no está tan disponible, en IDEs más viejos, estas características están más limitadas, aunque seguro que todavía tendrán algunas opciones.

En cualquier caso, los IDEs modernos ofrecen la posibilidad de incrementar sus capacidades mediante 'Add-ins', con lo que uno mismo puede ampliar tales características (si se sumerge en el mundillo de programar add-ins, claro)...

p.d: Por cierto, aplaudo tu decisión de abordar ese cambio.
Lo habitual es que la gente sea reacia a cambiar su forma de hacer las cosas, incluso aunque entienda que es más beneficioso hacerlo de otra manera.
49  Programación / Programación General / Re: Ver si una imagen es horizontalmente simétrica o no. en: 22 Abril 2024, 14:37 pm
Si es como ejercicio... aunque entiende que como problema, en sí mismo no es un problema, quiero decir, no tiene complejidad alguna.

Si quieres hacer ejercicio, un problema (también estéril pero) que al menos si requiere pensar y ejercitar la mente y la programación operando con una imagen, es recorrer los píxeles de la imagen en espiral (cuadrada), empezando por el centro de la imagen, hacia afuera.

Un número capicúa no se suele pedir (nunca lo he visto), lo que si se suele pedir es demostrar si una cadena dada (un string) es palíndromo... en sí mismo no es útil, pero como ejercico es excelente para ejercitar el uso de pilas y colas (que es el ámbito en que se suele solicitar), o también en teoría de compiladores (automátas y lenguajes de contexto finito).

A eso me refiero... a que si te planteas algo como ejercicio, que sea por ejercitar algo específico de la programación, algo que aprendas nuevo, que profundices o que mejore tu dominio del tema... porque calcular sumas, restas multiplicación... asumo que es algo que ya tienes dominado desde hace muchos años, no?.

2 colores arrojan 2^n combinaciones, siendo 'n' la cantidad de píxeles que estimes. Es decir es binario, aún no dominas el binario?. Si es que no, verlo en colores no te ayudará mucho más, en ese caso es mejor operar en el corpus matemático... Tomar un número decimal, pasarlo a binario y 'encender o apagar bits específicos (sueltos o en grupos) en tal o cual posición y con cada cambio mostrar siempre el resultado en decimal y en binario.

No quiero ser impertinente, pero es que considero que pierdes mucho tiempo en problemas irrelevantes y entiendo que si lo emplearas en 'problemas útiles', adquirirías más conocimientos verdaderamente útiles.

p.d.: Mira, hay una operación que se llama 'transpose', y que consiste en tomar las filas y disponerlas como columnas, o al revés...
Técnicamente eso es rotar la imagen 90º... también requiere calcular (sumas, restas, multiplicaciones), pero es algo útil y tangible en la vida real.
De hecho hace muchos años edité el artículo de wikipedia 'Escítala', que es un sistema arcaico de cifrado, y que usa dicha técnica de transpose, aunque en ese caso puede alterarse a discreción el número de filas y columnas, pues se opera con letras en cada 'pixel' (casilla), apuntada por las cordenadas X,Y.
https://es.wikipedia.org/wiki/Esc%C3%ADtala
50  Foros Generales / Dudas Generales / Re: (Problema Instagram) Introduce el código de inicio de sesión de 6 dígitos que ha generado la aplicación de autentica en: 22 Abril 2024, 14:20 pm
Créeme Victtor77, que aunque eres tú quien tiene el problema, el problema te lo ha creado Instagram.

Cualquier sitio, siempre debe proveer un sistema alternativo de autenticación cuando todo (sus sistema infalible) falla, es decir algo más complejo y laborioso, que requiera señalar más datos personales, para demostrar que tú eres quien dice ser.

Por ejemplo: Solo tú sabes cuando te creaste la cuenta (año y mes), solo tú sabes otras contraseñas previas que hayas tenido en tu cuenta, solo tú sabes si alguna vez trataste un tema con ellos y te dieron un código de algo (que por casualidad aún tuvieras). Solo tu sabes ... varias cosas que nadie más puede saber y que en definitiva concurriendo dos o 3 de ellas, deberían ser válidas para que te enviaran una nueva contraseña (sin más requisitos). ...o bien personarte ante un representante con tu documentación (esto es harto difícil, porque no querrán pagar personal en cada ciudad (importante del mundo), para estos menesteres, al final estarían saturados y no les reporta ningún beneficio económico, si no un desembolso...

...pero aún así, la culpa es de ellos, por no proveer otras alternativas. No diferencian convenientemente el tratamiento de: loguin de: 'no recuerdo ni login' (pero si muchas otras cosas de mi cuenta).
Páginas: 1 2 3 4 [5] 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ... 436
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines