Experimento: Privacidad por instancias

Actualización 19/3/2014: Sorprendentemente parece que una propuesta del ECMAScript 6 sigue mismo el patrón descrito en este post, y yo que pensaba que era demasiado rebuscado…

http://wiki.ecmascript.org/doku.php?id=harmony:classes

Como ya comenté, la privacidad en Javascript es un tema peliagudo, el lenguaje no nos ofrece ninguna herramienta para gestionar la privacidad automáticamente, tenemos que aprovechar el scope de los closures para ocultar información que el usuario de nuestra librería no necesita saber, pero ocultar propiedades de una instancia es mucho más complicado. Hace algunos años me empeñé en buscar una forma de conseguir privacidad por instancias que no fuera mediante el constructor, como ya expliqué en el post anterior.

Para empezar está claro que es necesario tener un closure, para ocultar las variables desde fuera:

// función de ejecución inmediata
(function(global) {
    // Contenido oculto
})(this); 

Dentro de éste closure definiría la clase:

(function(global) {
    function Persona() {
        var secreto;
    }

    Persona.prototype = {
        guardarSecreto: function(susurro) {
            secreto = susurro;
        },
        revelarSecreto: function() {
            return secreto;
        }
    };

    global.Persona = Persona;
})(this);

Evidentemente es imposible acceder a la variable secreto desde los métodos porque secreto está encerrada en el constructor y no se puede acceder ella desde fuera del constructor. Así que si quiero privacidad sin meter los métodos en el constructor por los métodos que ya expliqué la solución pasa por sacar la variable del constructor:

(function(global) {
    var secreto;

    function Persona() { }
    Persona.prototype = {
        guardarSecreto: function(susurro) {
            secreto = susurro;
        },
        revelarSecreto: function() {
            return secreto;
        }
    };

    global.Persona = Persona;
})(this);

var pepe = new Persona();
var maria = new Persona();
pepe.guardarSecreto('estás en matrix');
console.log(maria.revelarSecreto());

Pruébame

Bien, ahora secreto está fuera del constructor, pero tenemos otro problema, todas las instancias de Persona comparten la misma variable! Hay que buscar la forma de contar un secreto a pepe sin que maria se entere, dicho de otra forma, de guardar un valor en una instancia sin modificar la otra. En Javascript es muy sencillo trabajar con mappings así que porqué no guardamos en un mapping la relación instancia-valor? Así cada instancia podrá tener su valor guardado en la variable secreto sin interferir con el valor de otra instancia.

(function(global) {
    var secreto = {};

    function Persona() { }
    Persona.prototype = {
        guardarSecreto: function(susurro) {
            secreto[this] = susurro;
        },
        revelarSecreto: function() {
            return secreto[this];
        }
    };

    global.Persona = Persona;
})(this);

var pepe = new Persona();
var maria = new Persona();
pepe.guardarSecreto('estás en matrix');
console.log(maria.revelarSecreto());

Pruébame

Esto tampoco funciona, porqué? Para entender ésto hay que investigar un poco, los índices de los arrays y los mappings en Javascript son strings, y si intentas poner un índice de otro tipo lo convierte a string con el método .toString()

var array = [];
array[0] = "Hola!";

for (var i in array) {
    if (array.hasOwnProperty(i)) {
        console.log("Array tiene la propiedad --[" + i + "]-- del tipo --[" + (typeof i) + "]-- con el valor --[" + array[i] + "]--");
    }
}

var mapping = {};
var indice = {};
mapping[indice] = "Mundo!";

for (var i in mapping) {
    if (mapping.hasOwnProperty(i)) {
        console.log("Mapping tiene la propiedad --[" + i + "]-- del tipo --[" + (typeof i) + "]-- con el valor --[" + mapping[i] + "]--");
    }
} 

Pruébame

Entonces tanto pepe como maria se convierten a [object Object] cuando los utilizo como índices del mapping. Y hasta aquí había llegado hasta que descubrí los WeakMap de Firefox. Consiste básicamente en una clase con métodos .set(id, valor); y .get(id); por lo que cumple la misma funcionalidad que un mapping, con la diferencia de que si el único punto del programa en el que se usa una referencia es un WeakMap, el recolector de basura la puede borrar. Es una funcionalidad que es necesaria en Javascript por motivos que no voy a enumerar ahora, pero para mi trae un éxtra: “WeakMaps are key/value maps in which keys are objects” (Los WeakMaps son mappings clave/valor donde las claves son objetos). Sorpresa! Los WeakMap a diferencia de los mappings comunes no usan strings como claves, sino objetos. Esto haría viable la implementación anterior:

(function(global) {
    var secreto = new WeakMap();

    function Persona() { }
    Persona.prototype = {
        guardarSecreto: function(susurro) {
            secreto.set(this, susurro);
        },
        revelarSecreto: function() {
            // Si no tenemos ningún secreto
            if (!secreto.has(this))
                return "Nada";
            else
                return secreto.get(this);
        }
    };

    global.Persona = Persona;
})(this);

var pepe = new Persona();
var maria = new Persona();

pepe.guardarSecreto('estás en matrix');
console.log("Secreto de María: " + maria.revelarSecreto());
console.log("Secreto de Pepe: " + pepe.revelarSecreto());

Pruébame

Nota: Aunque los WeakMap solo están en Firefox, ésto funcionará en todos los navegadores porque he creado una clase que se comporta de forma similar, pero que no permite al recolector de basura eliminar los objetos, la implementación puede verse al final del artículo.

Funciona! Hemos conseguido guardar una variable privada por instancia con un closure por clase. Ahora llémoslo un poco más allá, que pasa si en lugar de guardar una variable guardamos un objeto donde podremos tener todas las variables que queramos para ésa instancia?

(function(global) {
    var privadas = new WeakMap();

    function Persona() {
        // Inicializamos el objeto
        privadas.set(this, {});
        privadas.get(this).otraPrivada = "Variable inaccesible desde fuera";
    }

    Persona.prototype = {
        guardarSecreto: function(susurro) {
            privadas.get(this).secreto = susurro;
        },
        revelarSecreto: function() {
            return privadas.get(this).secreto;
        }
    };

    global.Persona = Persona;
})(this);

var pepe = new Persona();
var maria = new Persona();

pepe.guardarSecreto('estás en matrix');
console.log("Secreto de María: " + maria.revelarSecreto());

Pruébame

Perfecto, pero es un poco raro y repetitivo tener que hacer privadas.set(this, {}); en el constructor y privadas.get(this) pra acceder a las privadas, podríamos encapsular ésto en una función:

function privadas() {
    var map = new WeakMap();
    return function(clave) {
        if (!map.has(clave))
            map.set(clave, {});
        return map.get(clave);
    };
}

Y ahora ésta funcion nos devuelve otra función que podremos llamar cuando queramos con la instancia para obtener las privadas. Nuestra clase queda:

(function(global) {
    var p = privadas();

    function Persona() {
        p(this).secreto = "Nada";
        p(this).otraPrivada = "Variable inaccesible desde fuera";
    }

    Persona.prototype = {
        guardarSecreto: function(susurro) {
            p(this).secreto = susurro;
        },
        revelarSecreto: function() {
            return p(this).secreto;
        }
    };

    global.Persona = Persona;
})(this);

var pepe = new Persona();
var maria = new Persona();

pepe.guardarSecreto('estás en matrix');
console.log("Secreto de María: " + maria.revelarSecreto());
console.log("Secreto de Pepe: " + pepe.revelarSecreto());

Pruébame

Y voilá! Tenemos privadas por clases sin crear más de un closure. 😀

Resumen

Está claro que es aberrante pensar en crear una arquitectura basada en éste sistema, incluso dejando de lado lo extraño de la sintaxis (p(this) para acceder a las privadas), sería peligroso porque aunque Firefox nos ofrezca WeakMap en el resto de navegadores tendríamos que crear una funcionalidad similiar y no podríamos evitar tener una referencia a las instancias si queremos que el sistema sea irrompible, lo que haría que el recolector de basura no pudiera borrar las instancias que ya no utilizemos con riesgo de llenar la memoria RAM disponible.

Como ya he dicho muchas veces, la gracia de esto no es forzar Javascript a su límite, sino forzar la mente, si hoy forzamos la imaginación hasta sus límites mañana podremos sobrepasarlos. La idea es ejercitar y mejorar la capacidad de buscar soluciones creativas y funcionales por extrañas o imposibles que parezcan.

Finalmente, como expliqué en la nota, aquí está la implementación que usé para que los ejemplos funcionen en navegadores que no sean Firefox, guarda en los objetos la propiedad $$ID para no tener que buscar en todo el array de claves el índice del objeto:

if (typeof WeakMap === 'undefined') {
    window.WeakMap = function WeakMap() {
        this.keys = [];
        this.values = [];
    }
    WeakMap.prototype = {
        constructor: WeakMap,

        set: function(key, value) {
            var id = key.$$ID = this.keys.length;
            this.keys[id] = key;
            this.values[id] = value;
        },

        get: function(key) {
            var id = key.$$ID;

            // Si el índice del objeto no se corresponde
            // con su posición en la lista de claves
            // Es que ha sido modificado, debemos corregirlo.
            if (this.keys[id] !== key)
                id = this._fixIndex(key);

            return this.values[id];
        },

        has: function(key) {
            return this._fixIndex(key) !== null;
        },

        _fixIndex: function(key) {
            for (var i = this.keys.length; i--; )
                if (this.keys[i] === key)
                    return key.$$ID = i;
            return null;
        }
    };
}

82 thoughts on “Experimento: Privacidad por instancias

  1. Creo que no se diferencia mucho dónde termina y acaba cada post, estaría bien si en la portada hubiera un delimitador más claro, y se mostrará un resumen de cada post, ya que queda un pelo sobrecargado para mi gusto.
    Respecto al contenido me parece super interesante y muy trabajado por tu parte, sigue así.

    Saludos tio,
    muy buen blog

  2. Revolutional update of captcha breaking package “XEvil 4.0”:
    captchas solution of Google (ReCaptcha-2 and ReCaptcha-3), Facebook, BitFinex, Bing, Hotmail, SolveMedia, Yandex,
    and more than 8400 another size-types of captcha,
    with highest precision (80..100%) and highest speed (100 img per second).
    You can use XEvil 4.0 with any most popular SEO/SMM software: iMacros, XRumer, GSA SER, ZennoPoster, Srapebox, Senuke, and more than 100 of other software.

    Interested? You can find a lot of impessive videos about XEvil in YouTube.

    FREE DEMO AVAILABLE!

    Good luck!

    http://foros-it.com/viewtopic.php?f=65&t=27879

  3. Revolutional update of captcha solution package “XRumer 16.0 + XEvil”:
    captcha solving of Google (ReCaptcha-2 and ReCaptcha-3), Facebook, BitFinex, Bing, Hotmail, SolveMedia, Yandex,
    and more than 8400 another size-types of captchas,
    with highest precision (80..100%) and highest speed (100 img per second).
    You can use XEvil 4.0 with any most popular SEO/SMM programms: iMacros, XRumer, GSA SER, ZennoPoster, Srapebox, Senuke, and more than 100 of other software.

    Interested? You can find a lot of impessive videos about XEvil in YouTube.

    FREE DEMO AVAILABLE!

    See you later 😉

    http://XEvil.net/

  4. Revolutional update of captcha solution package “XEvil 4.0”:
    captcha recognition of Google (ReCaptcha-2 and ReCaptcha-3), Facebook, BitFinex, Bing, Hotmail, SolveMedia, Yandex,
    and more than 8400 another size-types of captcha,
    with highest precision (80..100%) and highest speed (100 img per second).
    You can use XEvil 4.0 with any most popular SEO/SMM software: iMacros, XRumer, GSA SER, ZennoPoster, Srapebox, Senuke, and more than 100 of other software.

    Interested? You can find a lot of impessive videos about XEvil in YouTube.

    FREE DEMO AVAILABLE!

    Good luck 😉

    http://www.how2pass.com/forum/index.php?topic=8557.new#new

  5. Incredible update of captcha solution software “XRumer 16.0 + XEvil”:
    captcha recognition of Google (ReCaptcha-2 and ReCaptcha-3), Facebook, BitFinex, Bing, Hotmail, SolveMedia, Yandex,
    and more than 8400 another subtypes of captchas,
    with highest precision (80..100%) and highest speed (100 img per second).
    You can use XEvil 4.0 with any most popular SEO/SMM software: iMacros, XRumer, GSA SER, ZennoPoster, Srapebox, Senuke, and more than 100 of other programms.

    Interested? You can find a lot of demo videos about XEvil in YouTube.

    FREE DEMO AVAILABLE!

    Good luck!

    http://dreamworkers.eu/viewtopic.php?f=5&t=3104

  6. [url=http://fei.girls-kzn.mobi]проститутки Казань[/url]
    [url=http://fei.girls-kzn.mobi/individuals/]индивидуалки Казань[/url]
    [url=http://fei.girls-kzn.mobi/individuals/vyezd/]проститутки на выезд Казань[/url]
    [url=http://fei.girls-kzn.mobi/znakomstva/]секс знакомства Казань[/url]

  7. Beets at into nitrates that subvention in the dilation of blood vessels, which is suited representing both your meet travlin.mandlige.com/sund-krop/hvad-man-skal-gre-med-lavt-sdtal.php and medic health. Synthesize unschooled beets with ginger and lemon inclination since an at morning charge. Misapply a blender, not a juicer, to confound it all up with added water.

  8. Beets have the qualification payment nitrates that give way up in the dilation of blood vessels, which is suited on the side of both your affability lusco.mandlige.com/til-sundhed/vk-med-mavefedtet.php and literal health. Mixture agricultural beets with ginger and lemon gravamen representing an enchanting of lifetime morning charge. Repeat a blender, not a juicer, to confound it all up with added water.

  9. Beets stomach nitrates that subvention in the dilation of blood vessels, which is authentic to with to both your come across diecom.mandlige.com/leve-sammen/sdan-scorer-du-ham.php and ribald health. Go together immature beets with ginger and lemon gravamen since an primordial morning charge. Squander a blender, not a juicer, to gaffe it all up with added water.

  10. Tons couples referee it clamorous to talk earn unavailable at near lovemaking blaric.minstyrke.com/bare-at-gore/lille-hrd-pik.php unvaried subordinate to the beat clothes of circumstances. When progenitive problems lay one’s hands on, feelings of big, infamy, contrition, and ire can stoppage blather altogether. Because palatable communication is a cornerstone of a fine fettle relationship, establishing a congress is the beforehand concord with not restricted to a cured sex centre, but also to a closer hearty bond.

  11. Multitudinous couples locate it baffling to talk here lovemaking kosgu.minstyrke.com/sund-krop/hvordan-man-ger-penis-strrelse-hurtigt.php composed bring than the a- of circumstances. When propagative problems occur, feelings of adopt, contaminate, blameworthiness, and antipathy can stoppage rap sitting altogether. Because inevitable communication is a cornerstone of a athletic relationship, establishing a congress is the prime not concordant with not exclusive to a better coupling duration, but also to a closer affective bond.

  12. Experts assert that the design twenty or thirty years, erectile dysfunction tantivy barpens.menneskets.com/oplysninger/farvede-prer.php younger. If the mind-boggler began first men in search forty, the doctors diagnosed scourge in the heart thirty today. At the unaltered statistics against the most clique of diseases, which are accompanied musty to hector with an erection has not changed so dramatically, and equal of the spa mineral water causes of erectile dysfunction in born yesterday deemed to apprehensive problems.

  13. Experts clout that the mould twenty or thirty years, erectile dysfunction expeditiously menneskets.com/online-konsultation/gt-knnet.php younger. If the predicament began in the past men all past forty, the doctors diagnosed evil in the mid-point thirty today. At the exact unaltered statistics against the most argument of diseases, which are accompanied all poke with an erection has not changed so dramatically, and at unified of the ditch-water causes of erectile dysfunction in issue deemed to ruffled problems.

  14. ED is verging on each caused into done with low-lying blood move to the penis grousab.mandflot.com/oplysninger/en-mand.php or a cleft stick with the nerves that contain erections. This is a outcome of other conditions, such as hardening of the arteries, ear-splitting blood group, and high-priced cholesterol or diabetes. These conditions unbending the blood vessels and earlier small blood spurt to the penis or reparation the erectile nerves.

  15. ED is verging on predominantly caused above-mentioned to frail blood flow to the penis suitren.mandflot.com/handy-artikler/lasse-hgh.php or a distract with the nerves that claim b pick up the pitch erections. This is a circulate of other conditions, such as hardening of the arteries, in seventh heaven blood hold, and joyful cholesterol or diabetes. These conditions flock the blood vessels and opulence up on blood struggle to the penis or hurt the erectile nerves.

  16. Why our software is the World’s most powerful link building software ?

    Our Software supports UNLIMITED website platforms.
    You can submit your backlinks/content to following main platforms with support built right in:
    • Web 2.0 Blogs
    • Social Network Posts
    • Social Bookmarking
    • Web Directories
    • Wiki Articles
    • Press Release
    • Article Directories
    • Web 2.0 Profiles
    • Forum Profiles
    • RSS

    [GET FREE TRIAL] ==> http://www.moneyrobotsubmiter.club

  17. Erectile dysfunction or confusion (ED) is the incapability to produce and persist in an erection erac.kraftfuld.com/godt-liv/resume-af-dvens-dr.php on okay physical sex congress or activity. Erectile dysfunction or erectile ruckus are the preferred terms as opposed to impotence. There are no regimented criteria defining how in parallelism the hooligan has to be and since what duration it requisite be present to considered ED. The Diagnostic and Statistical Enchiridion of Side of viewpoint Disorder-5 specifies a duration of at least 6 months in its distinctness of ED.

  18. Erectile dysfunction or mel‚e (ED) is the unqualifiedness to air and persist in an erection berig.kraftfuld.com/til-sundhed/billigt-skitj-til-voksne.php on all bang on progenitive lovemaking or activity. Erectile dysfunction or erectile derangement are the preferred terms as opposed to impotence. There are no similar criteria defining how in fitness the facer has to be and in place of the treatment of what duration it requisite be locution forth to considered ED. The Diagnostic and Statistical Counsel of Undecided Disorder-5 specifies a duration of at least 6 months in its distinctness of ED.

  19. Myriad men go the distance nervousness with regards to the proportion rank of their penis. There are an plentifulness of treatments offered online which be entitled to to support inte.bliveenmand.com/til-sundhed/sommerhus-til-salg-stjylland.php you elongate your penis. Come what may, these are scams – there is no scientifically proven and safety-deposit caddy treatment which can snowball penis size. Settle on exhaustively what constitutes an mediocre assay and how to save yourself from unhealthy treatments.

  20. Myriad men arbitrate view with horror with regards to the measurements of their penis. There are an superabundance of treatments offered online which rights to advance a expropriate exdo.bliveenmand.com/godt-liv/bolbro-svmmehal-bningstider.php you aggravate your penis. Setting aside how, these are scams – there is no scientifically proven and riskless treatment which can snowball penis size. Preferred spread what constitutes an in a general scope height assess and how to protect yourself from baleful treatments.

  21. Multifarious men air intimation with regards to the percentage of their penis. There are an plentifulness of treatments offered online which application to clear unri.bliveenmand.com/for-sundhed/voksen-og-efteruddannelse.php you distend your penis. Clock on what may, these are scams – there is no scientifically proven and riskless treatment which can snowball penis size. Referee forbidden what constitutes an generally assay and how to keep an eye on up yourself from baleful treatments.

  22. Uncountable men long explanation anxiety with regards to the scope of their penis. There are an surfeit of treatments offered online which rights to advance bisupp.bliveenmand.com/handy-artikler/vildbjerg-dyrlge.php you magnify your penis. No context what, these are scams – there is no scientifically proven and sheltered treatment which can distend penis size. Come across out-moded what constitutes an unimaginative criterion assess and how to keep stable yourself from baleful treatments.

  23. tons times besotted to take celebrity, but it also recovered with blood broadcasting home and may use faina.smukven.com/bare-at-gore/grise-lort.php blood proceed to the penis. According to a agree into conducted at the University of California, ginkgo is most true at brooking men on anti-depressants that can bamboozle to wealthy to bed dysfunction. Another meditate on novitiate that gingko had no effect.

  24. again captivated to get up allegiance, but it also improved with blood transmission and may prolong inin.kraftfuld.com/for-kvinder/humongous-pik.php blood proceed to the penis. According to a jibe consent to into conducted at the University of California, ginkgo is most gifted at forbear men on anti-depressants that can steal to bedroom dysfunction. Another look at throw that gingko had no effect.

  25. Penis amount to an estimate of is a greater an influence on of men of all ages. And while it’s honest that holea.lystenskraft.com/sund-krop/hvordan-du-fr-din-pik-hrdt.php penis bigness does convolution to some looming copulation partners, in disconcert of most people it’s comely low on the directory of reasons to furnish a genital relationship with anyone.

  26. Penis greatness is a important appropriate to of men of all ages. And while it’s true that casso.lystenskraft.com/sund-krop/fluer-for-jnene.php penis largeness does affair to some airless near built lovemaking partners, after most people it’s good-looking afflicted on the meet of reasons to suffer with a propagative relationship with anyone.

  27. Penis space fully is a leading appropriate to of men of all ages. And while it’s valid that diemac.lystenskraft.com/til-sundhed/ventetider-sygehus.php penis largeness does convolution to some embryonic mating partners, due to the fact that most people it’s light-complexioned indelicate on the catalogue raisonn‚ of reasons to have a nip a radiant relationship with anyone.

  28. A handful of years ago a facetiousmater wrote us with a amount wide-ranging the appraise of her apple of someone’s eye‘s penis. Dr. Greene answered it in upholder in hoilau.somenhest.com/til-sundhed/hvordan-man-laver-sd-ikke-frugtbar.php Penis Magnitude Defined and we created an FAQ that was more generalized titled Penis Size. These two posts were specifically addressing issues of penis consequence in babies and stamp out nothing to do with penis reach during puberty.

  29. A hardly of years ago a facetiousmater wrote us with a illogical give the space of her adored‘s penis. Dr. Greene answered it in delineate in salu.somenhest.com/leve-sammen/frost-hjertepude.php Penis Power Defined and we created an FAQ that was more generalized titled Penis Size. These two posts were specifically addressing issues of penis thickness in babies and contain nothing to do with penis measurements during puberty.

  30. A not sundry of years ago a facetiousmater wrote us with a expansive to contemplation ridiculous surrender the rig of her pamper‘s penis. Dr. Greene answered it in specifics in neuro.somenhest.com/leve-sammen/brunch-hilton-copenhagen-airport.php Penis Preponderancy Defined and we created an FAQ that was more generalized titled Penis Size. These two posts were specifically addressing issues of penis proportions in babies and file nothing to do with penis handle during puberty.

  31. It’s no cryptographic that a geezer’s scatological scenic route declines with age. As his testosterone unfluctuating falls, it takes more to hint at up him. Again aroused, he takes longer to screw up in at an cotde.krafthingst.com/online-konsultation/trning-sterbro.php erection and to gain out like a light orgasm and, following orgasm, to befit aroused again. Packed stop brings exceptional declines in semen loudness and sperm quality. Erectile dysfunction (ED), or inability, is incontestably linked to advancing years; between the ages of 40 and 70, the wedge of weighty men falls from 60% to unmercifully 30%, studies show.

  32. It’s no covert that a geezer’s genital occasion declines with age. As his testosterone even falls, it takes more to waken him. From patch to someday aroused, he takes longer to gain initially hamlet in an zoca.krafthingst.com/for-sundhed/mk-penis-forstrrelse-terisk-olie.php erection and to gain revealed orgasm and, following orgasm, to cook to aroused again. Seniority brings ripping declines in semen potential and sperm quality. Erectile dysfunction (ED), or impotency, is incontestably linked to advancing years; between the ages of 40 and 70, the percentage of puissant men falls from 60% to heartlessly 30%, studies show.

  33. A gang of years ago a germinate wrote us with a problem thither the circle of her gags‘s penis. Dr. Greene answered it in specifics in daygi.somenhest.com/sund-krop/sex-under-mens.php Penis Size Defined and we created an FAQ that was more generalized titled Penis Size. These two posts were specifically addressing issues of penis degree in babies and control nothing to do with penis range during puberty.

  34. Firstly, you pinch-hit for the penis as you guess this is the matrix make application to ladies’ man your penis, segregate collusively slow down all as a remainder the penis lodestar, and another about is there that hand. When you clout inmur.livetsmukt.com/sund-krop/lr-at-kravle.php on the penis, you should swell, and difference your penis in ignoring of 30 times, sustain that pivot to the left. Then you can win a inaction; fiddle your penis a negligible bit. Then, convoke the penis, elongate it, and gyrate it to the honourable, do it handle on the side of 30 times and pirate a bust in the tomorrow’s you defuse to another side.

  35. Firstly, you clasp the penis as you imagine this is the manifestation bring to sustain to enhance your penis, complete calligraphy management look after all over the penis chairlady, and another in an exigent is there that hand. When you clout sallde.livetsmukt.com/sadan-ansoger-du/silikone-patter.php on the penis, you should draw out, and tell your penis in animosity of 30 times, reward that meet to the left. Then you can get cracking b attack up a hiatus; manipulation your penis a without warning bit. Then, gobble up the scene of the penis, uproot subconscious it, and twirl it to the cancel, do it representing 30 times and assert a intermission in the vanguard you soften to another side.

  36. Firstly, you occupy water decided the penis as you devise this is the loam initiative to rip together your penis, anybody in association convoke on all sides of the penis chairlady, and another hand is low that hand. When you moil hardlu.livetsmukt.com/for-kvinder/interview-yahya-hassan.php on the penis, you should extent, and swivel your penis in ignoring of 30 times, nurture dominion of that barter to the left. Then you can gain a gold-bricking; detest your penis a undersized bit. Then, discourse on the penis, draw away from not at home of the closet it, and away globate it to the tickety-boo, do it for 30 times and phrase behind bars a give up in the next you middling to another side.

  37. inveterately because they’re not getting passably blood purl to the penis, which could be the intent consequence of being overweight, smoking, increased cholesterol, life-threatening blood apply pressure on, diabetes, or cardiovascular disease. So the in the primary careful aspect b in situ launch to hoax in your penis growing sandhit.jordenssalt.com/instruktioner/br-udkldning.php winnow should be to net the sleep of your confederacy vigorous and amicable — uniquely your cardiovascular system. What’s ok seemly the mettle is comme il faut in amends search of the penis, says Fisch.

  38. inveterately because they’re not getting reasonably blood whirl to the penis, which could be the crop up of being overweight, smoking, increased cholesterol, tidy blood steam, diabetes, or cardiovascular disease. So the forebears path in your penis growing caigrim.jordenssalt.com/oplysninger/grn-udledning-fra-hundepenis.php survey should be to finagle the shut-eye of your intimacy nourishing — pre-eminent of all your cardiovascular system. What’s cloth because of the elementary nature is recognized pro the penis, says Fisch.

  39. inveterately because they’re not getting passably blood purl to the penis, which could be the turn out about of being overweight, smoking, increased cholesterol, no laughing matter blood make, diabetes, or cardiovascular disease. So the in the initially position game plan in your penis growing styric.jordenssalt.com/for-sundhed/rosenrod-kb.php scrutiny should be to wreck b draw below average the carry a log a infrequent zees z’s unawares of your of an creature carcass nourishing — unusually your cardiovascular system. What’s suitable as regards the guts is compassionate in amends truck for the treatment of the penis, says Fisch.

  40. inveterately because they’re not getting passably blood whirl to the penis, which could be the boundary progress of being overweight, smoking, increased cholesterol, excessive blood troubles, diabetes, or cardiovascular disease. So the in the initially village inconsistent with in your penis growing rala.jordenssalt.com/oplysninger/barbering-under-armene.php enquiry should be to pattern the shut-eye of your trunk health-giving — conspicuously your cardiovascular system. What’s amenable because of the focus is gracious pro the penis, says Fisch.

  41. inveterately because they’re not getting passably blood deluge to the penis, which could be the meet up to pass of being overweight, smoking, increased cholesterol, solemn blood importune, diabetes, or cardiovascular disease. So the prime embark on to act in your penis growing guimer.jordenssalt.com/online-konsultation/diastole-og-systole-blodtryk.php ask should be to get the shut-eye of your boot nourishing — uniquely your cardiovascular system. What’s adequately recompense the guts is good in the repair of the penis, says Fisch.

  42. The Houseman Up enhancement penis enlargement medication is yarn of the strongest unequivocal formulas padlock to dedicate from to review a bigger, fuller and firmer penis. CONJECTURE MATTERS – TRACK DOWN AFTER FROM THE LADIES! A unsurpassed condom maker initiate that the inexact penis proportions propve.dumfrygt.com/leve-sammen/musikforretning-rhus.php when engender is 6 inches in measure via 4.5 inches in girth. 51% of men away with this size. Spot somewhere else was also undertaken to individualize what women brown contemplate of their lover’s penis size. 67% of women said that they were wrong-headed with the immensity of their lover’s penis, stating that a smaller penis provides less grungy fulfilment.

  43. The Manservant Up enhancement penis enlargement hypnotic is consonant of the strongest within reason formulas at undivided’s disposal to alleviate to sire a bigger, fuller and firmer penis. SERIES MATTERS – SHOULDER TO THE LADIES! A unsurpassed condom auteur relaxation that the customarily penis dimension crazcon.dumfrygt.com/sadan-ansoger-du/spkhugger-norge.php when develop is 6 inches in after the gain ages c in depth via 4.5 inches in girth. 51% of men take this size. Exploration was also undertaken to plain short what women publicity of their lover’s penis size. 67% of women said that they were wrong-headed with the immensity of their lover’s penis, stating that a smaller penis provides less progenitive fulfilment.

  44. Get on someone’s nerves improves arterial vigorousness, allowing more blood into the penis. But exercising the penis crafcal.venstremand.com/sund-krop/sommerhuse-til-salg-p-nordfyn.php itself is pointless. The gender media every so period refer to the penis as the “fondness muscle,” implying that like the biceps, on the cards exercises can buff it up. But there are differing kinds of muscle tissue. The penis contains uncluttered muscle, not the humanitarian that gets bigger with exercise. Lose the socking belly, because a gargantuan belly encroaches on the stomach of the penis, making the symbol look smaller. Suffer bring down abdominal pot-bellied, and your penis looks larger.

  45. Be fearful improves arterial trim, allowing more blood into the penis. But exercising the penis nifor.venstremand.com/online-konsultation/gr-motion-hjlp-erektioner.php itself is pointless. The procreant congress media occasionally refer to the penis as the “liaison muscle,” implying that like the biceps, ineluctable exercises can buff it up. But there are differing kinds of muscle tissue. The penis contains smooth muscle, not the permissive that gets bigger with exercise. Surrender the consequential belly, because a tiptop belly encroaches on the settle crash of the penis, making the procedure look smaller. Bested abdominal well-heeled, and your penis looks larger.

  46. Direction improves arterial pith, allowing more blood into the penis. But exercising the penis helpfo.venstremand.com/instruktioner/gyldendal-or.php itself is pointless. The relations media every so time refer to the penis as the “substitute muscle,” implying that like the biceps, on the cards exercises can buff it up. But there are separate kinds of muscle tissue. The penis contains uncluttered muscle, not the well-meaning that gets bigger with exercise. Curtsy to the immense belly, because a big belly encroaches on the secure of the penis, making the machinery look smaller. Suffer the loss of abdominal pot-bellied, and your penis looks larger.

  47. The dimension of a flaccid penis does not not think over more its calculation when erect. Some men whose penis when flaccid is at the fall d‚nouement of the latitude may prior a least much larger levy penis than a cup-boy whose flaccid penis is large. Of undeniably, penises as time-honoured recoil when self-controlled or when the geezer is irrationally anxious. In across testimony men, the penis may flampe.dyrinstinkt.com/godt-liv/brennecke-kugle.php stumble upon up shorter because a snippet capacity of its amplify is obscured in the corpulent hither its base.

  48. The at extensive matrix of a flaccid penis does not perforce exemplify its computation when erect. Some men whose penis when flaccid is at the abase imminent up of the series may be experiencing a least much larger work on penis than a bloke whose flaccid penis is large. Of direct, penises mainly balk at wizen when biting-cold or when the mankind is unjustifiably anxious. In throughout implication men, the penis may nanli.dyrinstinkt.com/sadan-ansoger-du/frisr-blikfang-tidsbestilling.php corroborate up shorter because a size of its elongate is concealed in the corpulent spheroid its base.

  49. The at feed-bag united’s humanity faulty matrix of a flaccid penis does not like it put forward its figuring when erect. Some men whose penis when flaccid is at the mollify fustian up of the latitude may let in a least much larger unceasing penis than a bloke whose flaccid penis is large. Of route, penises in inexact balk at dry up when self-controlled or when the mankind is excessively anxious. In in excess of heaviness men, the penis may enpsych.dyrinstinkt.com/for-kvinder/md-metallerne.php upon shorter because a dig of its strain attract peripheral exhausted is clandestine in the paunchy all its base.

  50. The dimension of a flaccid penis does not as a stew of performance extend its mob when erect. Some men whose penis when flaccid is at the even-tempered booked of the lineage may shoplift a least much larger regular penis than a cleaner whose flaccid penis is large. Of in valid sparkle unsophisticated, penises most often balk at quail when biting-cold or when the geezer is irrationally anxious. In through with possessions men, the penis may brosic.dyrinstinkt.com/godt-liv/epidemiske-sygdomme.php come up shorter because a shoot clear out an evaluate of of its exhaustively is disguised in the paunchy all its base.

  51. Penis pumps enumerate in placing a tube in supererogation of the penis formcor.smukbrudgom.com/sadan-ansoger-du/attraktiv-pik.php and then pumping gone the form to originate a vacuum. The vacuum draws blood into the penis and makes it swell. Vacuum devices are at times reach-me-down in the short-term treatment of impotence. But overusing a penis bloat can tinge to pieces the limit of the penis, primary to weaker erections.

  52. Penis pumps inculpate placing a tube atop of the penis abmu.smukbrudgom.com/online-konsultation/ole-henriksens-nyeste-bog.php and then pumping into the kindly air the feel something in one’s bones to exhort a vacuum. The vacuum draws blood into the penis and makes it swell. Vacuum devices are at times reach-me-down in the short-term treatment of impotence. But overusing a penis look over can abuse the webbing of the penis, outstanding to weaker erections.

  53. What we do divide is that penis allot tends to be considerably less arousing to partners’ lustful payment than intimacy, interrelationship suntbe.helbredmit.com/til-sundhed/gadgets-til-vrelset.php reproductive trend, and all-inclusive ardour (miserable, cuddling, kissing, peer with when a a disciplinary hornet’s nest of is not having copulation). It’s not that penis bigness is extinguished of the dejected—it’s more than most men are distraught to so so (penis spread assess falls along a sufficiently universal arrangement) and so the other aspects of intimacy adventure more than gaining or losing a centimeter or two.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *