Bonjour à tous !
Mon projet WEB va réjouir un grand nombre d'internautes.
L'idée d'YPUX est d'offrir une plateforme d'authentification comparable à Android (simple) et portable sur n'importe quel site internet.
Description
Au lieu de retenir un mot de passe. On retient une forme géométrique. En posant le curseur sur les jetons de couleurs, il génère un mot de passe de 8 caractères. Si on pose de nouveau le curseur sur un jeton bleue, le mot de passe mute - le jeton devient vert et une ligne relie les deux points. Le jeton rouge indique seulement la sélection en cours (configuré à 150 millisecondes). Pour afficher le panneau YPUX, il suffit de cliquer dans une zone de saisie (type 'password'). Pour fermer le panneau, cliquez dessus.
Ypux.png
BUGS
Actuellement je rencontre des conflits avec des sites internet. Comme hackademics. Si des gens pouvaient m'aider à debugger, ce serait très sympas.
Il faudrait m'indiquer les sites testés et éventuellement me donner des pistes pour résoudre le problème. Pour le moment, sur le site du zéro l'authentification fonctionne mais le slide de la page d'accueil plante au chargement. Sur Gmail, ça fonctionne nickel. Sur Mega, la zone est sécurisé. Et sur hackademics, une erreur survient au chargement.
TÉLÉCHARGEMENT
COMPATIBLE AVEC HTML5
Pack à télécharger sur Mega
UTILISER AVEC GREASE MONKEY
SOURCE
J'espère que l'idée vous plaira.
N'hésitez pas à critiquer (je veux la vérité ).
@++
Mon projet WEB va réjouir un grand nombre d'internautes.
L'idée d'YPUX est d'offrir une plateforme d'authentification comparable à Android (simple) et portable sur n'importe quel site internet.
Description
Au lieu de retenir un mot de passe. On retient une forme géométrique. En posant le curseur sur les jetons de couleurs, il génère un mot de passe de 8 caractères. Si on pose de nouveau le curseur sur un jeton bleue, le mot de passe mute - le jeton devient vert et une ligne relie les deux points. Le jeton rouge indique seulement la sélection en cours (configuré à 150 millisecondes). Pour afficher le panneau YPUX, il suffit de cliquer dans une zone de saisie (type 'password'). Pour fermer le panneau, cliquez dessus.
Ypux.png
BUGS
Actuellement je rencontre des conflits avec des sites internet. Comme hackademics. Si des gens pouvaient m'aider à debugger, ce serait très sympas.
Il faudrait m'indiquer les sites testés et éventuellement me donner des pistes pour résoudre le problème. Pour le moment, sur le site du zéro l'authentification fonctionne mais le slide de la page d'accueil plante au chargement. Sur Gmail, ça fonctionne nickel. Sur Mega, la zone est sécurisé. Et sur hackademics, une erreur survient au chargement.
TÉLÉCHARGEMENT
COMPATIBLE AVEC HTML5
Pack à télécharger sur Mega
UTILISER AVEC GREASE MONKEY
Code:
// ==UserScript== // @name YPUX v1.0 // @namespace YPUX auth // @include * // @version 1 // ==/UserScript== var ypuxjs=document.createElement('script'); ypuxjs.type='text/javascript'; ypuxjs.src='data:text/javascript;base64,eXB1eCA9IG5ldyBmdW5jdGlvbiAoKSB7DQogIC8qIFlQVVggdjEuMCBieSBZYXJmbGFtICovDQogIC8qKi ogQ09NUE9ORU5UUyAqKiovDQogIHRoaXMuc3ByaXRlPW5ldyBBcnJheSgpOw0KICB0aGlzLndvb21zPW5ldyBBcnJheSgpOw0KIC B0aGlzLnBvb2s9bmV3IEFycmF5KCk7DQogIHRoaXMuY2ZnID0gew0KICAgICdwdCc6MywNCiAgICAnc3Bfc2l6ZSc6NjQsDQogIC AgJ3NwX21hcmdpbic6MjAsDQogICAgJ2xvYyc6MTEsDQogICAgJ3RpbWVyJzoxNTAsDQogICAgJ2pvaW5fc2l6ZSc6MiwNCiAgIC Anc2VlZCc6MzcsDQogICAgJ2RlZmF1bHRfcGFzc3dkJzonNkRmbVE3ZGsnLA0KICAgICdhc2NpaSc6J2FiY2RlZmdoaWprbG1ub3 BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVowMTIzNDU2Nzg5Jw0KICB9Ow0KICB0aGlzLmNmZ1snc3F1YXJlJ1 09dGhpcy5jZmdbJ3B0J10qdGhpcy5jZmdbJ3NwX3NpemUnXSsodGhpcy5jZmdbJ3B0J10tMSkqdGhpcy5jZmdbJ3NwX21hcmdpbi ddOw0KICB0aGlzLm1vdGlvbiA9IHsgJ2ZvY3VYJzowLCdmb2N1WSc6MCwnYWN0aWYnOjAsJ2ZvY3VzJzowLCdjaGVjayc6WzAsLT FdLCdvbGQnOlswLDBdIH0NCg0KICAvKioqIExJQlJBUlkgKioqLw0KICB0aGlzLnRvY2hhaW4gPSBmdW5jdGlvbiAoZSkgeyB2YX Igcj0nJztmb3IodmFyIGk9MDsgaSA8IGUubGVuZ3RoOyBpKyspIHsgcis9ZVtpXTsgfSByZXR1cm4gcjsgfQ0KICB0aGlzLmFkZH Nwcml0ZSA9IGZ1bmN0aW9uIChlKSB7IGVbJ3NlbGYnXT1uZXcgSW1hZ2UoKTtlWydzZWxmJ10uc3JjPWVbJ3NyYyddOyB9DQogIH RoaXMuYWRkY3NzID0gZnVuY3Rpb24gKGUpIHsNCiAgICB2YXIgbmNzcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaW5rJyk7DQ ogICAgbmNzcy50eXBlPSd0ZXh0L2Nzcyc7bmNzcy5yZWw9J3N0eWxlc2hlZXQnO25jc3MuaHJlZj0iZGF0YTp0ZXh0L2NzcztVVE YtOCwiK2UucmVwbGFjZSgvIy9nLCclMjMnKTsNCiAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdLm FwcGVuZENoaWxkKG5jc3MpOw0KICB9DQoNCiAgLyoqKiBGVU5DVElPTiAqKiovDQogIHRoaXMuaW5pdCA9IGZ1bmN0aW9uICgpIH sNCiAgIC8vIEZSQU1FDQogICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2h0bWwnKVswXS5pbm5lckhUTUwgKz0gIj xkaXYgaWQ9J3lwdXhsb2dpbicgT25DbGljaz0neXB1eC5zaG93KCk7Jz48L2Rpdj4iOw0KICAgIHRoaXMuY2FudmFzPWRvY3VtZW 50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOw0KICAgIHRoaXMuY3R4PXRoaXMuY2FudmFzLmdldENvbnRleHQoJzJkJyk7DQogIC AgdGhpcy5jYW52YXMuaWQ9J3lwdXhib3gnO3RoaXMuY2FudmFzLndpZHRoPXRoaXMuY2ZnWydzcXVhcmUnXTt0aGlzLmNhbnZhcy 5oZWlnaHQ9dGhpcy5jZmdbJ3NxdWFyZSddOw0KICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd5cHV4bG9naW4nKS5hcHBlbm RDaGlsZCh0aGlzLmNhbnZhcyk7DQogICAvLyBMT0FESU5HIFBJQ1RVUkUNCiAgICB0aGlzLmFkZHNwcml0ZSh0aGlzLnNwcml0ZV swXSk7DQogICAvLyBQQUQgQ1VSU09SDQogICAgZXZhbCgiZG9jdW1lbnQub25tb3VzZW1vdmUgPSBmdW5jdGlvbiAoZSkgeyB5cH V4LmN1cnNvcihlKTsgfSIpOw0KICAgLy8gSU5QVVQNCiAgICB0aGlzLmlucHM9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbW UoJ2lucHV0Jyk7DQogICAgZm9yKHZhciBpPTA7IGkgPCB0aGlzLmlucHMubGVuZ3RoOyBpKyspIHsNCiAgICAgIGlmKHRoaXMuaW 5wc1tpXS50eXBlID09ICdwYXNzd29yZCcpIHsNCiAgICAgICAgZXZhbCgieXB1eC5pbnBzW2ldLm9uY2xpY2sgPSBmdW5jdGlvbi AoKSB7IHlwdXguc2hvdygxLCIraSsiKTsgfSIpOyB9DQogICAgfQ0KICAgLy8gSElERQ0KICAgIHRoaXMuc2hvdygpOw0KICB9DQ oNCiAgdGhpcy5zaG93ID0gZnVuY3Rpb24gKGUsaWQpIHsNCiAgIC8vIFNIT1cgT1IgSElERQ0KICAgIHRoaXMuV1BzZXQoKTsNCi AgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgneXB1eGxvZ2luJykuc3R5bGUuZGlzcGxheT0oZSA/ICdibG9jaycgOiAnbm9uZScpOw0KICAgIGlmKGlkKSB7DQogICAgICBpZih0aGlzLmNmZ1snaW5wdXQnXSkgew0KICAgICAgICBk b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVt0aGlzLmNmZ1snaW5wdXQnXV0uc3R5bGUuYm9yZGVyPScnOw0K ICAgICAgfQ0KICAgICAgdGhpcy5jZmdbJ2lucHV0J109aWQ7DQogICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgn aW5wdXQnKVtpZF0uc3R5bGUuYm9yZGVyPSc1cHggc29saWQgYmxhY2snOw0KICAgIH0NCiAgfQ0KDQogIHRoaXMuV1BzZXQgPSBm dW5jdGlvbiAoKSB7DQogICAvLyBSRVNFVCBZUFVYDQogICAgdGhpcy5wb29rPW5ldyBBcnJheSgpO3RoaXMubW90aW9uWydvbGQn XVswXT0wOw0KICAgIGZvcih2YXIgaT0wOyBpIDwgTWF0aC5wb3codGhpcy5jZmdbJ3B0J10sMik7IGkrKykgeyB0aGlzLndvb21z W2ldPTE7IH0NCiAgICB0aGlzLnBhc3N3ZD10aGlzLmNmZ1snZGVmYXVsdF9wYXNzd2QnXTsNCiAgICB0aGlzLmRyYXcoKTsNCiAg fQ0KDQogIHRoaXMuY2xlYXIgPSBmdW5jdGlvbiAoKSB7IHRoaXMuY3R4LmNsZWFyUmVjdCgwLDAsdGhpcy5jZmdbJ3NxdWFyZSdd LHRoaXMuY2ZnWydzcXVhcmUnXSk7IH0NCiAgdGhpcy5kcmF3ID0gZnVuY3Rpb24gKCkgew0KICAgLy8gQ0xFQVIgQ0FOVkFTDQog ICAgdGhpcy5jbGVhcigpOw0KICAgLy8gRFJBVyBTUFJJVEVTDQogICAgZm9yKHZhciBpPTA7IGkgPCBNYXRoLnBvdyh0aGlzLmNm Z1sncHQnXSwyKTsgaSsrKSB7DQogICAgICB2YXIgZGltPXsneCc6KGkldGhpcy5jZmdbJ3B0J10pLCd5JzooTWF0aC5mbG9vcihp L3RoaXMuY2ZnWydwdCddKSV0aGlzLmNmZ1sncHQnXSl9Ow0KICAgICAgdmFyIGxvY2FsPXsNCiAgICAgICAgJ3gnOmRpbVsneCdd KnRoaXMuY2ZnWydzcF9zaXplJ10rZGltWyd4J10qdGhpcy5jZmdbJ3NwX21hcmdpbiddLA0KICAgICAgICAneSc6ZGltWyd5J10q dGhpcy5jZmdbJ3NwX3NpemUnXStkaW1bJ3knXSp0aGlzLmNmZ1snc3BfbWFyZ2luJ10sDQogICAgICAgICdzeic6dGhpcy5jZmdb J3NwX3NpemUnXQ0KICAgICAgfTsNCiAgICAgIHRoaXMuY3R4LmRyYXdJbWFnZSh0aGlzLnNwcml0ZVswXVsnc2VsZiddLChsb2Nh bFsnc3onXSp0aGlzLndvb21zW2ldKSwwLGxvY2FsWydzeiddLGxvY2FsWydzeiddLA0KICAgICAgICAgICAgICAgICAgICAgICAg IGxvY2FsWyd4J10sbG9jYWxbJ3knXSxsb2NhbFsnc3onXSxsb2NhbFsnc3onXSk7DQogICAgfQ0KICAgLy8gRFJBVyBKT0lODQog ICAgZm9yKHZhciBpPTA7IGkgPCB0aGlzLnBvb2subGVuZ3RoOyBpKyspIHsNCiAgICAgIHZhciBkaW09ew0KICAgICAgICAnQXgn Oih0aGlzLnBvb2tbaV1bMF0ldGhpcy5jZmdbJ3B0J10pLA0KICAgICAgICAnQXknOihNYXRoLmZsb29yKHRoaXMucG9va1tpXVsw XS90aGlzLmNmZ1sncHQnXSkldGhpcy5jZmdbJ3B0J10pLA0KICAgICAgICAnQngnOih0aGlzLnBvb2tbaV1bMV0ldGhpcy5jZmdb J3B0J10pLA0KICAgICAgICAnQnknOihNYXRoLmZsb29yKHRoaXMucG9va1tpXVsxXS90aGlzLmNmZ1sncHQnXSkldGhpcy5jZmdb J3B0J10pDQogICAgICB9DQogICAgICB2YXIgbG9jYWw9ew0KICAgICAgICAnQXgnOmRpbVsnQXgnXSp0aGlzLmNmZ1snc3Bfc2l6 ZSddK2RpbVsnQXgnXSp0aGlzLmNmZ1snc3BfbWFyZ2luJ10rKHRoaXMuY2ZnWydzcF9zaXplJ10vMiksDQogICAgICAgICdBeSc6 ZGltWydBeSddKnRoaXMuY2ZnWydzcF9zaXplJ10rZGltWydBeSddKnRoaXMuY2ZnWydzcF9tYXJnaW4nXSsodGhpcy5jZmdbJ3Nw X3NpemUnXS8yKSwNCiAgICAgICAgJ0J4JzpkaW1bJ0J4J10qdGhpcy5jZmdbJ3NwX3NpemUnXStkaW1bJ0J4J10qdGhpcy5jZmdb J3NwX21hcmdpbiddKyh0aGlzLmNmZ1snc3Bfc2l6ZSddLzIpLA0KICAgICAgICAnQnknOmRpbVsnQnknXSp0aGlzLmNmZ1snc3Bf c2l6ZSddK2RpbVsnQnknXSp0aGlzLmNmZ1snc3BfbWFyZ2luJ10rKHRoaXMuY2ZnWydzcF9zaXplJ10vMikNCiAgICAgIH0NCiAg ICAgIHRoaXMuY3R4LmJlZ2luUGF0aCgpOw0KICAgICAgdGhpcy5jdHgubGluZVdpZHRoPXRoaXMuY2ZnWydqb2luX3NpemUnXTsN CiAgICAgIHRoaXMuY3R4Lm1vdmVUbyhsb2NhbFsnQXgnXSxsb2NhbFsnQXknXSk7DQogICAgICB0aGlzLmN0eC5saW5lVG8obG9j YWxbJ0J4J10sbG9jYWxbJ0J5J10pOw0KICAgICAgdGhpcy5jdHguc3Ryb2tlKCk7DQogICAgfQ0KICB9DQoNCiAgdGhpcy5hZGRw b2ludCA9IGZ1bmN0aW9uICgpIHsNCiAgIC8vIFNFTEVDVCBXT09NUw0KICAgIGlmKHRoaXMubW90aW9uWydjaGVjayddWzBdID09 IDEpIHsNCiAgICAgIHRoaXMud29vbXNbdGhpcy5tb3Rpb25bJ2NoZWNrJ11bMV1dPTI7DQogICAgICB0aGlzLmVuY29kaW5nKHRo aXMubW90aW9uWydjaGVjayddWzFdKTsNCiAgICAgIGlmKHRoaXMubW90aW9uWydvbGQnXVswXSA9PSAxKSB7DQogICAgICAgIHRo aXMucG9va1t0aGlzLnBvb2subGVuZ3RoXT1bdGhpcy5tb3Rpb25bJ29sZCddWzFdLHRoaXMubW90aW9uWydjaGVjayddWzFdXTsg fQ0KICAgICAgdGhpcy5tb3Rpb25bJ29sZCddPVsxLHRoaXMubW90aW9uWydjaGVjayddWzFdXTsNCiAgICB9DQogICAgdGhpcy5t b3Rpb25bJ2NoZWNrJ109WzAsLTFdOw0KICAgIHRoaXMuZHJhdygpOw0KICB9DQoNCiAgdGhpcy5jdXJzb3IgPSBmdW5jdGlvbiAo ZSkgew0KICAgIGlmKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd5cHV4bG9naW4nKS5zdHlsZS5kaXNwbGF5ICE9ICdub25lJykg ew0KICAgICAvLyBNT1VTRSBUUkFDS0lORw0KICAgICAgdGhpcy5tb3Rpb25bJ2ZvY3VYJ109KGUucGFnZVggPyBlLnBhZ2VYIDog ZXZlbnQueCtkb2N1bWVudC5ib2R5LnNjcm9sbExlZnQpOw0KICAgICAgdGhpcy5tb3Rpb25bJ2ZvY3VZJ109KGUucGFnZVkgPyBl LnBhZ2VZIDogZXZlbnQueStkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCk7DQogICAgIC8vIFRFU1QgRk9DVVMNCiAgICAgIGlmKCh0 aGlzLmZvY3VzKCkgPT0gMSkmJih0aGlzLm1vdGlvblsnYWN0aWYnXSA9PSAxKSkgew0KICAgICAgICBpZih0aGlzLndvb21zW3Ro aXMubW90aW9uWydmb2N1cyddXSAhPSAyKSB7DQogICAgICAgICAgaWYoKHRoaXMubW90aW9uWydjaGVjayddWzBdID09IDEpJiYo dGhpcy5tb3Rpb25bJ2NoZWNrJ11bMV0gIT0gdGhpcy5tb3Rpb25bJ2ZvY3VzJ10pKSB7DQogICAgICAgICAgICBjbGVhclRpbWVv dXQodGhpcy50aW1lcik7dGhpcy53b29tc1t0aGlzLm1vdGlvblsnY2hlY2snXVsxXV09MTsgfQ0KICAgICAgICAgIGRvY3VtZW50 LmJvZHkuc3R5bGUuY3Vyc29yPSdwb2ludGVyJzsNCiAgICAgICAgICB0aGlzLndvb21zW3RoaXMubW90aW9uWydmb2N1cyddXT0z Ow0KICAgICAgICAgIHRoaXMubW90aW9uWydjaGVjayddPVsxLHRoaXMubW90aW9uWydmb2N1cyddXTsNCiAgICAgICAgICB0aGlz LnRpbWVyPXdpbmRvdy5zZXRUaW1lb3V0KCd5cHV4LmFkZHBvaW50KCknLHRoaXMuY2ZnWyd0aW1lciddKTsNCiAgICAgICAgfQ0K ICAgICAgfSBlbHNlIHsNCiAgICAgICAgaWYodGhpcy5tb3Rpb25bJ2NoZWNrJ11bMF0gPT0gMSkgew0KICAgICAgICAgIGNsZWFy VGltZW91dCh0aGlzLnRpbWVyKTt0aGlzLm1vdGlvblsnY2hlY2snXVswXT0wOw0KICAgICAgICAgIHRoaXMud29vbXNbdGhpcy5t b3Rpb25bJ2NoZWNrJ11bMV1dPTE7IH0NCiAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5jdXJzb3I9J2RlZmF1bHQnOw0KICAg ICAgfQ0KICAgICAgdGhpcy5kcmF3KCk7DQogICAgfQ0KICB9DQoNCiAgdGhpcy5mb2N1cyA9IGZ1bmN0aW9uICgpIHsNCiAgIC8v IFJFQ09WRVIgRk9DVVMNCiAgICBpZigodGhpcy5tb3Rpb25bJ2ZvY3VYJ10gPiAxMSkmJih0aGlzLm1vdGlvblsnZm9jdVknXSA+ IDExKSkgew0KICAgICAgaWYoKHRoaXMubW90aW9uWydmb2N1WCddIDw9ICh0aGlzLmNmZ1snc3F1YXJlJ10rdGhpcy5jZmdbJ2xv YyddKSkmJih0aGlzLm1vdGlvblsnZm9jdVknXSA8PSAodGhpcy5jZmdbJ3NxdWFyZSddK3RoaXMuY2ZnWydsb2MnXSkpKSB7DQog ICAgICAgIHZhciBkaW09ew0KICAgICAgICAgICd4JzpNYXRoLmZsb29yKCh0aGlzLm1vdGlvblsnZm9jdVgnXS10aGlzLmNmZ1sn bG9jJ10pLyh0aGlzLmNmZ1snc3Bfc2l6ZSddK3RoaXMuY2ZnWydzcF9tYXJnaW4nXSkpLA0KICAgICAgICAgICd5JzpNYXRoLmZs b29yKCh0aGlzLm1vdGlvblsnZm9jdVknXS10aGlzLmNmZ1snbG9jJ10pLyh0aGlzLmNmZ1snc3Bfc2l6ZSddK3RoaXMuY2ZnWydz cF9tYXJnaW4nXSkpDQogICAgICAgIH07DQogICAgICAgIHZhciBsb2NhbD17DQogICAgICAgICAgJ3gxJzp0aGlzLmNmZ1snc3Bf c2l6ZSddKmRpbVsneCddK3RoaXMuY2ZnWydzcF9tYXJnaW4nXSpkaW1bJ3gnXSt0aGlzLmNmZ1snbG9jJ10sDQogICAgICAgICAg J3gyJzp0aGlzLmNmZ1snc3Bfc2l6ZSddKihkaW1bJ3gnXSsxKSt0aGlzLmNmZ1snc3BfbWFyZ2luJ10qZGltWyd4J10rdGhpcy5j ZmdbJ2xvYyddLA0KICAgICAgICAgICd5MSc6dGhpcy5jZmdbJ3NwX3NpemUnXSpkaW1bJ3knXSt0aGlzLmNmZ1snc3BfbWFyZ2lu J10qZGltWyd5J10rdGhpcy5jZmdbJ2xvYyddLA0KICAgICAgICAgICd5Mic6dGhpcy5jZmdbJ3NwX3NpemUnXSooZGltWyd5J10r MSkrdGhpcy5jZmdbJ3NwX21hcmdpbiddKmRpbVsneSddK3RoaXMuY2ZnWydsb2MnXSwNCiAgICAgICAgICAnb24nOjENCiAgICAg ICAgfTsNCiAgICAgICAgbG9jYWxbJ29uJ109KHRoaXMubW90aW9uWydmb2N1WCddID4gbG9jYWxbJ3gxJ10gPyBsb2NhbFsnb24n XSA6IDApOw0KICAgICAgICBsb2NhbFsnb24nXT0odGhpcy5tb3Rpb25bJ2ZvY3VYJ10gPCBsb2NhbFsneDInXSA/IGxvY2FsWydvbiddIDogMCk7DQogICAgICAgIGxvY2FsWydvbiddPSh0aGlzLm1vdGlvblsnZm9jdVknXSA+IGxvY2FsWyd5MSdd ID8gbG9jYWxbJ29uJ10gOiAwKTsNCiAgICAgICAgbG9jYWxbJ29uJ109KHRoaXMubW90aW9uWydmb2N1WSddIDwgbG9jYWxbJ3ky J10gPyBsb2NhbFsnb24nXSA6IDApOw0KICAgICAgICB0aGlzLm1vdGlvblsnZm9jdXMnXT0obG9jYWxbJ29uJ10gPT0gMSA/IGRpbVsneCddKyhkaW1bJ3knXSp0aGlzLmNmZ1sncHQnXSkgOiAwKTsNCiAgICAgICAgdGhpcy5tb3Rpb25bJ2FjdGlmJ109bG9j YWxbJ29uJ107DQogICAgICAgIHJldHVybiAxOw0KICAgICAgfQ0KICAgIH0NCiAgICB0aGlzLm1vdGlvblsnYWN0aWYnXT0wOw0K ICAgIHJldHVybiAwOw0KICB9DQoNCiAgdGhpcy5lbmNvZGluZyA9IGZ1bmN0aW9uIChlKSB7DQogICAvLyBDSEFOR0UgUEFTU1dP UkQNCiAgICB2YXIgdGVtcD17J3InOicnLCdjYWxjJzowLCdBJzo2LCdCJzo0fTsNCiAgICBmb3IodmFyIGk9MDsgaSA8IHRoaXMu cGFzc3dkLmxlbmd0aDsgaSsrKSB7DQogICAgICBpZih0aGlzLmNmZ1snYXNjaWknXS5pbmRleE9mKHRoaXMucGFzc3dkW2ldKSA+ PSAwKSB7DQogICAgICAgIHRlbXBbJ2NhbGMnXT1NYXRoLnBvdyh0aGlzLmNmZ1snYXNjaWknXS5pbmRleE9mKHRoaXMucGFzc3dk W2ldKSwodGhpcy5jZmdbJ3NlZWQnXSt0ZW1wWydBJ10pKTsNCiAgICAgICAgdGVtcFsnY2FsYyddPSgodGVtcFsnY2FsYyddKnRl bXBbJ0InXSkldGhpcy5jZmdbJ2FzY2lpJ10ubGVuZ3RoKTsNCiAgICAgICAgdGVtcFsnciddKz10aGlzLmNmZ1snYXNjaWknXVt0 ZW1wWydjYWxjJ11dOw0KICAgICAgICB0ZW1wWydBJ10rPWU7dGVtcFsnQiddKz0xOw0KICAgICAgfSBlbHNlIHsgYWxlcnQoJ0VS Uk9SIDogJyt0aGlzLnBhc3N3ZFtpXSk7cmV0dXJuIDA7IH0NCiAgICB9DQogICAgdGhpcy5wYXNzd2Q9dGVtcFsnciddOw0KICAg IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpW3RoaXMuY2ZnWydpbnB1dCddXS52YWx1ZT10aGlzLnBhc3N3 ZDsNCiAgfQ0KDQogIC8qKiogTEFVTkNIRVIgKioqLw0KICB3aW5kb3cuc2V0VGltZW91dCgneXB1eC5pbml0KCknLDEwMCk7DQoN CiAgLyoqKiBDU1MgKioqLw0KICB0aGlzLmFkZGNzcyh0aGlzLnRvY2hhaW4oWw0KICAgICIjeXB1eGxvZ2luIHsgcG9zaXRpb246 YWJzb2x1dGU7dG9wOjVweDtsZWZ0OjVweDtwYWRkaW5nOjVweDtib3JkZXI6MXB4IHNvbGlkIGJsYWNrO2JhY2tncm91bmQtY29s b3I6I0ZGRTlENjt6LWluZGV4OjUwMDA7IH0iLA0KICAgICIjeXB1eGJveCB7IHdpZHRoOiIrdGhpcy5jZmdbJ3NxdWFyZSddKyJw eDtoZWlnaHQ6Iit0aGlzLmNmZ1snc3F1YXJlJ10rInB4OyB9Ig0KICBdKSk7DQoNCiAgLyoqKiBQSUNUVVJFICoqKi8NCiAgdGhp cy5zcHJpdGVbMF0gPSB7ICdzcmMnOnRoaXMudG9jaGFpbihbDQogICAgImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwiLA0KICAgICJp VkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBUUFBQUFCQUNBWUFBQUQxWGFtK0FBQUFCSE5DU1ZRSUNBZ0lmQWhraUFBQUFBbHdTRmx6 QUFBRDBRQUFBOUVCbUlxSnRBQUFBQmwwIiwNCiAgICAiUlZoMFUyOW1kSGRoY21VQWQzZDNMbWx1YTNOallYQmxMbTl5WjV2dVBC b0FBQ0FBU1VSQlZIaWM3YjE1bkZYbG1lLzdmZGF3ZDFVeEJVRlNBNGxOVEt4MHQ5RkV0QnR0Z3RCZSIsDQogICAgIkd6U3hCRTgw T1BSdE05eUFPS1F6cU1UeU5uSStsRUZOVHA4NGdUa1p6T21vSk9SSUxBaER2QVpRSExvSkpocTdrekttelVCQmlZQUJnYXE5MS9E Y1A5YXcxMXA3N2FxQ3FzTGsiLA0KICAgICIwM2srbjVkM2JXcE52N1hXNy9jKzcvUzhvcXFNcE1sL25qOE8xNWlGU2l0b00wb0xT Z3ZRRERTRnUrMEdkaUYwSTNTRDdFSzBDOHZmck85Ni9NQ0kzdUFJbXl4ZVBRNnRud1hhIiwNCiAgICAiaWs4eitDMElMWGphaklU NGxkMllzZ3VsRzR4dURIYUJkQ0c5bTNYNXBYL2MrSGZJT0FyTUFrTDh0T0RYZVA4RzNVQ0lueTdLYk5hcCtrZU5uNU5sSEgzTXdx RFY5MmtXb2NXSCIsDQogICAgIkZoK2FKY1N2c051QVhRWjBxOUp0R096Q3A0czZOdk9ya2NVdkl5RUE4dk1QbllUbHR1SFJocys1 K0dxamdDcEJYdXZBS0VtUUcrSmdzQldUVGx5clUvLzhCNzhaOXBzZEFaUFAiLA0KICAgICJyejhKdzJ0RC9UWlV6MFY5R3cyQksv VDdBQ1RLQmNSd0VObUtHSjM0WnFkKzZjSS9Edncva1pNd2FFUEQ5Ni9ZK0tUZmZmWVJTQ0lYd0FDRTRQMExuZmgwNmdmMGp3SS96 WElTIiwNCiAgICAiSm0yZTB1WXI1eXJZU2ZoNUZKQk1DdURqR01KV1UrakVvNU5kdzQ5LzJBUkFYcHc5aW5wakVaNS9KWjZlamcv NFN2RGlFemtrbmtCMGJha2doK0RqTnhLNUVlYW12SUJwUEVTdiIsDQogICAgImY3K2V0dW53c056NE1KbmMrTU5SR09WRitQNlYr TjdwcUI4S1hwaWo5QzhDR2ZKWFJLQ1NHK1lMR01aRCtJWDc5YTYvKzhQQy82S01BaGJoY3lVK3ArTkJUUHFCdnY3NEpPU3kiLA0K ICAgICJJSGozZ01FTEdEd0UzSytuNlI4VWZocGxGQ2FMZk9GS1R6azlncCtpQVVjbkFORm5IOEUzaFJjTTVTRTg3cWRuZVBBUFdR Qmt5eXlMbHJwUDRQcTM0V2tqbmxZUSs1b1dnUmk5IiwNCiAgICAiMW5nQ0NTRklrVCt4YlFxWTBvTmwzRVozMzlkMTVtWjNTQUNH YUxKMGk4V2hOeitCK3JlaFhpTytINUxlcjVBL0pRUlFFWUhraWVKL01zU1B0c05rR0NCbUQ2YTVsSWJSWDlNbCIsDQogICAgIk05 OWEvRnZFWWp5ZnhHY0pIbzM0UU9ycnAvTGUvZkNnL2hnQUZlTEhUQ0FwQW1EU2c4RnR2TUhYZGFhK3BmZ1JzV2poazY2eXhJTkdq d0MrcCtsSDRPdFJDb0Jrb0Vzb0FrSHEiLA0KICAgICJzWVRiNk9icjZORHdEMGtBNU9YWmMvRllqcWV0ZUVxY2ZBMC9BcTBnajU5 QTR1TlBPQUJ4WG5IL0UwOGlSRjhSZ0NoMVliSllUOW4wL1dNR01RU1RtOWZOeGZPV28xNHJ2a2VLIiwNCiAgICAiL0g1U0FMSmVB TlQwZ1d1Vy9oa1JNRXdRc3d2VFhLeDNmUGl0d2Y4em1ZdkRjbnhhaWI3OFBBRVlpZ2VRTHdEUmRoYzJpL1Y5K3BiZ3AwWG11c0p5 VDJsMUNUOS9Fa2x6SGtHTiIsDQogICAgIlduQlY3WmVhNU1jVXNJSzh5MUlXMDMzcytJOUpBS1JyOWhTVUIvRjBCbTZDK0ZrUlNQ by9TUUdBZnVxQWtwSEFxdEkvblN3QlU1NUV1RnBiTjcxNmpNL2g2UERmdUhZSzZJUDQiLA0KICAgICIzb3lBK0I1b1FnRDY4d0ln UndTUzVHZUEwai8yQWdJUkNOS1RJRmZyWFJjZEgvd3Z5aFI4SHNSakJpN3ByNzQvQVlqeUpQVDRwSWs4NmZyM0p3QW1JUk40RW9P cjlUUTlMdmhwIiwNCiAgICAibENtZXlZTWV6SEFCVjRrZmc1c1FnYmdjSkZNVEdzQUJycXI1SkFUQWtncHNLeElDZU5MMHVKcWVv OGQvMUFJZ3Y3aGdKdXAvRDFjbjRQcjBLd0JaTHlCVkRjaDdBdGtuMFcvcCIsDQogICAgIlh4RUF5d0JMOWlIR1IvUzlHN1ljN1VN NEt2dzNycHVKdXQvRDl5YkU1STlGSUNKL2NydUdCNUI5N3BJVWdZd0hFSmYrWmtJRXpHemFoMWdmMGJzK1BMTDRmeW96VWI2SHk0 UVUiLA0KICAgICIrVjBxNUU4S1FmVGxaNzJBM0pNblVrUjZJYS9rajcvOENodl0FSZmI5dUdXYklhWHVIekhTVjc3bktCSWNLK1p NaWtQUUU0dktQOUNPQUt2blBkM3drWGZKbnlXOEoyRUcrIiwNCiAgICAienhJK3d1K09EdjlSQ1lDOGZNRWlITzhydUdvRmlCVzh oQWk0U2ZKWHRRT1VRTHZ3NlFidERycTh0RHM4YzlBMWhyUmcwQUxTaWtFeFZmODNwU0lDVmpJM3dxY2hZSW1MYlg1YSIsDQogICA gIlQ5bHcvOUU4aEVIanYzbnRJbHozSy9pZWhlK215UjhSMy9jcllwQ3VBb1Q0L2FDckM3cVJFTDlLQ3hBa3d3andpeFJUVllDWTl Ba2hTQW1BQllicFlsbWYxanN1R2huOEw4b2kiLA0KICAgICJYTDZDZ3hXVFB1c0IxUFlFU2tBWDBJMGZwdUE1RU9BT1UvQWN3dmR QN1pJL1RmNWcyOGJGNHRONm1vNElmbHBra1FOZmNjQnlGRklDUUtYMGovTDRFUVRsWHNrTDhmdlFyVUszIiwNCiAgICAiQnM4QU1 XZ1JwY1VJdndFVFdnV0tjZGxIcHZTWEN1eElBT3dnZDIzNE5OMkR4ejhvQVpBZFo5cU1ubmczanI4d1FCeVNQcm50SlVUQWozOGZ 4R005K0d2b0xXelFqMjk3YzFBMyIsDQogICAgIjlZM3BZNmd2WHdER1BFd3V4SlN4c1FCRTVFK1gvdWx0MjFqSm9iMDM2TlFmTzR OOUVQM2V6NEt2Mm94cnZCdlBYWWp2Z1pjbGY5SUxTRlVGRHFMK2VsVFhjRmcyNkdNM0RRNy8iLA0KICAgICJ4WGVPWVpSZWdNZzh 4TGdRd3hoYncvVlBKOU9LOHBVYzZMbEJIL2pVOE9EZklUWVdkK095TVBqcVNmaTg5Q2NDNGZ0bkRSNGI5T002eVBjdll6QzVBQWp ldjhIWUFja2ZiZHVBIiwNCiAgICAieFVwY2J0Q3BPaXo0T1ZOc3Y0ZTdYV1ZoR1hCQzBsZUpRTFVYY05DRjlUNnNNWlVOZi9QNjR QQS9mYUtNOFlRTExKaG53SVVtak8ydjlMZkQzN1pBSWZqL2xVWWpOL0RqZ2ZFUCIsDQogICAgIktBQWgrVHR4L0RrQmNwODRyKzB GN01EM2wySWQyYVNYdmxRZURPaWExMTk5YWdHM1lUYUdzUVJUcHRZdS9ZM3dTWVM1Yld6azBONjJvWXFBTFBpcXpkakdUbngzVGt 6OFdBRHkiLA0KICAgICJoTUFIOVFMOGJ0OG0vZTZTb2VHL2JHa0JxeTdBTCtiVTZwSS9MdjJUQWdDR3RaR0RQVzFERllHUS9K6QW 0rZWhKRkhta2hxQkIvQnk1TEdjVW12VlNIK1A2bHdHRm1ZN0VFIiwNCiAgICAiZzZtWnVuK2lLQ1FwQUdDekVaZTJJWXZBbVdMcm JqckxNTWNCeWlIcGsrVFBpb0FIT3p4bDZRbDcyZlFYT2pUOC95RlMyRCtSMmFhd3hJU3BPYTUvMGdPZ0VPV3dVWnBvRzBnRSIsDQ ogICAgIkJoYUFyamtyY1B5Rk9DSEpuUndCaUR3QlQxL0YwM1l1LzdkVldsWEpIWm9KSWp6eVYvTXhwUU5UcHFSTC9oVHhJeThBYk dPbHRtNjhaa2pYdmFsekJaNjdNQ0M5eXdBaThDcSsiLA0KICAgICIxODRqaTFlcDFxenBIdHQ5Q01MbHkrZGptQjBZNXBRQnlCL2 twclZTNzJ3Ykd2NFhaQVVPQzFQa3J5MENyK0xTenNjWW1mZi9UZVpqMFlIRmxBSElIK1VyOVhRZEVuNS9zcXh3IiwNCiAgICAiRW lWL1ZnQ1Mzb0FMcjNwSysvUzlyR0s0UjlpSnlMYUp6RGVGRGd1bUpFdjlLZ0VJUFFGYldHbnM3QjkvdndJZ0wxK3dpTEozWDZYa0 Q4bWZGSU5BQUVyNC9pMFloKzhkYW9rLyIsDQogICAgImtNbnFVd3Y0bzY3RE1HN0hrbUpNOXBqMDBlOXd1MkJlZTZ4dEFrR2QzN2 t2UmY0azhTdFZnUktlZXd0dTM3MURMZkVIdktmQUk3Z08wN29kd3l5bVNCOXRKMFhBc3E4OTFqWUIiLA0KICAgICJlVkVXNFhCZj hLVlRXd0FjU3ZqY1FqMzNEclhFSC9DZVZrdUJYcTdENEhac2lqVUZvSkt1UGVZMmdSWlpWSWI3eWdURUx5dEVRcER4QWtxdWNrdj NYdTY5ZElnbC9rQzJXcVRRIiwNCiAgICAiTXBIckxPRjJTeWdteVI4UnZ5QmhBZ3B3Ylg5dEFqVUZRSDV4d1V3ODczRWN0UUxpSj hpZnJncjA0REJQcjN6dXVSRkJYT3ZHSDVvMkRaczFXRVpqeHZWUDVBYlk0bUthNXg5dCIsDQogICAgIjc0RGN1RzRtdnZNNHZtc0 Z4SGVvNFFYMGdEOVB2MzNUOGNWLzFaM1R3RmlEWVRibWwvNTI5TnZGc004LzJ0NEIrYW5NeE9keHlsZ3A0aWVGSUVnOXVNelRxL1 g0NG45UXBtR3giLA0KICAgICJCb3ZHbEFCRUtmcGR3TVhnL0tQdUhYaUh6SFI4SGkrQmxTVi9VZ1RLU285dk1POXZlbzR2L3FjYl pacmhzNllnTkNiSm54V0JJcmkyd2ZtMWVnZHlCVUM2WmsvQlp6dGxmd0tPIiwNCiAgICAiSC9vOVdRL0FCMGVmeCtWaXZmSzVuU0 9LdG9iSlE5TW1ZL0VZdHB3UkNFQ0cvSVZ3dTJEc3crQ3N3WTRUa0J2WFRrRzk3WGp1aENyaWUwNjQ3WUh2UGc5NnNYNzdwa0hobD g4OCIsDQogICAgIjJvUnRUVWVsQlpFbThCdUR2eGc5cU81R3RCdkgzYWIvZk1udVFaM3ZxanNuZ3p5R1laMkJHVllIS3NSUENzRS t4RHhyc09NRTVFV1pnc2QyeWt4SWtiN2FDM2llRWhmckozVnciLA0KICAgICIrSGRJRXdXbWh4UENtaEFDL0VvUHdtNkVic3BzMD ZrNk9QeGZrOGtVZVF5TE0ycVUvcEVJN01Qa3JFR1BFMmlVS2E3RjlySXlvUlFTUGlrQ1pZMkY0UG15eDhVejl3ME9QMzhtIiwNCi AgICAiVGJoTUIxb1FtdEFRdjlDRHNodm94bUlidng0Yy9pMFRaSExCNUxFQ25HRW5TLzNFZGpIWTNtZTVuSlUzVGlCZkFINHhleX VPenFBY2tyNmM5UUI4Y1B5MUhQRG02NmQrZkdSUSIsDQogICAgIjRFZkk1S3RuTmpET1hJVnRYSlFvOVNQaUozSjVVdCs3NmR4Qm 5mUEd6cTE0em95WS9Dbml4Mmt0Yng2WnI1MUwrc1V2TjNjMkE1ZmpHNWVnM3Rtb0ovSEFvTlJjaUNpWmlwalAiLA0KICAgICJZdm lQQW8vb0hXMjcrajEvMjlJR3hqU3N3clF1U3J2L2RxVTZZTnBnMmsvcVhXMkR3LzlUMllyRGpLQ0lvMW9BQXZLdnBaZjUraW50SC 85UHBCbUR5NEZMOERrYkg0bTdCcE5XIiwNCiAgICAiNmZ4V0RKNEZIc1huRWYyQTlvLy9xOUpBUGF1d3VLZ0crYVB0Si9YOU9paj hYb3RzZFdCR1JQNVNodnhoTzhEYWdzMzhxZDM5NCtlZDBvd2Y0UGZnYkUrUmFIaEVjaHhBTk56QiIsDQogICAgIkZOUWt4Ry93Q0 wvdEgvK09GbWtvTzZ5eTRhSkNSZ1NLQ1JHdzRVbXp1eHAvbFFESXk3UG40dWdheW9tU1B5VUVDbzcvUEFmY0Q3N1Y1SThzRUFIck tXempqTUFITWpJQ0VQMmYiLA0KICAgICJ6QnRvMkxEY3ZHNHVyck1tSUw5RHl2MnZlQVBQYy9ESUIvc2p2M3grM1VSTWJjZjNyOE Z6aTZuQlFzblJnVkE5NnEvU3JWZkNNRmJnU1lkKzZjTjdhMTZyYldrRFl4dWVDanlCIiwNCiAgICAiSlBtVHVRMldQVytnWWNQeU 01bExtVFVwNGxlTHdQUDA4c0greUM4N1pDSTI3ZmhjZzBNeDAwdVF6NEJrWDM5UW1wY3dXSUZEaDA3VjJ2Z0RFWGdLTy9RRXFza2 ZWWWpuRFRocyIsDQogICAgInVFWG1sbUZOaVFyeFM2UTlnSkx5Zk5IbWcvMlN2MFVtSXJSN2NJMmpGS09lZ3VnUkpFY0RSbVBma3 FQOVFyZStaTUlLbEE2NmErUGYwU0lOSlllbmlzSVpHZmMvRm9KaThBam0iLA0KICAgICJaWWNOcHdSQXRzeXllSHZoSmNwK2E0cj BhU0hvd2VHc3Q4cnRyMlh5MExUSjJHekhOaHFyaVIrS1FjSG80clh5cWJVbUVNblNMUlp2SG5nSnoybXRGb0RZRytnQi82eiszSD Y1IiwNCiAgICAiYWUzMXFIYmdPV01xb3BFY0s2Q0FueGtLRm8zNnkvVHJCK1I5RTVGMnZmT2llMnBlODZvN0o0T3hIZE5xVEpFK3 RXMTNNV2JjcWJVbUVNa1dzUmpMU3ppMHBvaWZGb0FlK2ppciIsDQogICAgIlA3ZGZYcERyVVRwd0dGUFZaakFZQWFpdTA3K0owSz ZuYTIzOFg1UEoxTEVkbThZcUFhZ0lRUmNIT2JYbUJDSVJ5MjNocGJMU1d0SkFBQ0x5Sjd5Qm5wTEhXZjI2L2UrUTYzMmwiLA0KIC AgICJvNlNNU2JZZFJOMkV5VkdCRWZ6SUFZcTYrZXgwU2Y2bUliVHp1OXI0dDB5UXlVV1Q3VVdoTWVINlV3eTN3OTlkVmplbkppY1 FHYW16dE5SOUlqV3hKOXZQNzJvcGJQRDdneUkvIiwNCiAgICAiZ0Y3NTNFNGM1dUZxS1hQUHlTSEtyYlRVZmFMbVNZNGMrbVJsWW s5dUtvVU5mcm40NVlZTlJibHgzWU40N3QwNHZXTW85MEs1anlCUHBpTlFDdlBVZG5hLzhGaW5kd3llZTdmYyIsDQogICAgInVPNU J1V0ZETVJmL3QyL2FDZjQ4ZksvVXp5Q2xWZzY5V1J2L2VENlJtdGlUN04rUFd2dGQ1dFVpdjd3aVJYbFJIc1RsYm5vWnd4SGdjST EwS0pOcTdYY0U2R1VNTG5mTGkvS2ciLA0KICAgICJ2Q0w1K0QrcE8zR1pGOTVqOWRpRVFIaGFHYzhuYStKdjRST2UwcG9kM2VkVX RrdSt3YnlhNUgrUEZKa3NENVo5N2o2a2pEbWs4S2JDbTM2UUg0enljRHVWTkwxUGRNeWhJSTBwIiwNCiAgICAiKzl6TlpIbVE5K1 RqbjdsUGQvb0c4MXlsRkRmUlpIQjRTaXN0YWZ5eEJ5QXZ6aDZGelN1VS9jYWcxTTlKcnY4NS9laS8vbythRC9BUHdPUTdmLzFaTE 9QTFlZbWZsM3B3ZUhjMiIsDQogICAgIm5vRGMrTU5SYU84cmVPVkdQQWZjYk9udmdPdDhUaCsrT1JlLzNMTGhSRnkzRTdjOERiY0 1iam5yT1lEdmV2amVNNmkzRmRXZHFBVDFPOUZtUkNZajVya1k1amtZbHBtcHY0TlYiLA0KICAgICJpTkp6V0ZhYjNuN0I2N24zY2 NVZG44V3l2NXdvOWFQdXdIQzcwSVBVdnpzYlQwQmVsRkY0dkVLWnhxQ3lTNlgwcjNnQW45UC9XL1B4LzBST3hLU1RFdE1vRVJhZH BMMEhGdytQIiwNCiAgICAiWjFDMjRyTVRpT3EzelJoTVJqZ1hrM093TURPdWUxaVVBVVdldzZOTlA2RDUrUCszZkJhYkw2ZU9UVz RYNk1IazNWWHhCQnBsbEd2eVNna2FrNlYvdkIwMC9IM3VuTmZ6OGRNVSIsDQogICAgIjRPOVRwdlVxOUNuMGtXZy9DSVRFOCtBWj EyZXJKK3lVRUw5Q3M2bE10Z3pPTmVFY0c4ellqUmVvQStvRTZnWHFKTURQN256OHo1d29uN1dGTDBlbGZqSGpCUlNoeC9KNGR4Ul AiLA0KICAgICJ3SXFQckRNV1VQWWFVeE42MHFYbnF4aUg3ODBGLzRka3h1Rjc4VVpmaDZkVFlneG1Da2NqZGVZQ0lQTWl5d3ZpK2 Z6eGJMNVVDZm9xYmw4dWZybGhRNUc2a1B4T2lZb0FsRU1oIiwNCiAgICAiY2ZiZ3Vjc295OFA2NkJmMjlYZjdjc2tYSjFCd3JzQz Bic1cwSjJGRm93dGpuM2thMENrM2JKaXBkMTlRcWpxQjIzY3ZobkVkWWt5Smh3K3JFWnhEZkRDOFJxUmNqVjlaZ0VkaiIsDQogIC AgIjFWaitpaWZ3S3ZYazQzOUZpakg1K3dpL2ZDb2k0TEFIbDJYMDhyQmVxLzNqdjA4bVVNOFZPTnlLemFTcWFnTk1vMGludkNJej lkMWFqYitlZStuak9neW14UGR1cHJBMFlsQ04iLA0KICAgICIzMlNSQjQzUlJKNTRhRytsRkgyMWUyOCtmdDRUNE85VnBoMVJpQV NndHlJa2UwcXdUUHQ0K0x5RC9lTi9ZcXhNa0RxdUtDcTNGcFZKam9BbmxYbFZDdFBxVFRwNWo4emtsOVg0IiwNCiAgICAidS9keT crUVR1YzZFS2FhbXB3OTdDcDdRYUZrVi9KVXFnT2QvTkhkV1g4V05iaC9wUVQ3RFlYcnBTMlU4YmM5eC94UEovMmoxZ2Q1SHErYn pweWY0dE5jYzVGUDBIcWlRdndSdSIsDQogICAgIkh6aDlVTzd6Y0hzN2NIcFAxbFczM0RNUStRSDAwUy9zMDFXMzNJUFRlekp1Yn dmbFBnK25MenhuZFA3eU5JcmVBN25IZjNkSkdkOXJUOTk3QnBkNk9majVhR3JhV25aY3YwdDciLA0KICAgICJ6VUUrUjNnZ1JmNC tvQmZveGVNSUhSemlaUDI0M2pNUStRSDBXdDJuSDlkN09NVEpIS0dEWGp4NkUrY054R1VhUjhqSGY2bVdjV25Qblp4VXFYeFg0Zm VGSzJPb21vUWRmMGJ0IiwNCiAgICAiTlFmNTlQSkFYMGorS0IwT2tuZklwOE9Cay85Mmo5NHpFUGtCemp1bysvNTJqOTdqd01tSG ZEb09LOTdoeERsRGNabEdiejcrUzFYTG50S2VtcGVRd2VSUndTK3FpblQ5WFRNdSIsDQogICAgIk95bjdRdG1IVXNiMUwvazcrT2 kvbmpYY3d6dEh5Z1FSdnZQWDJ5a2FVMVB1ZnpIZVZpd21hK3NQZDBIWVZlZDZPL0VjcWJqL2Nla05uck9EaDI0OEsyOTRyOXpVZV EyZWR6OU8iLA0KICAgICJSTkF3ZDhvSGNFcno5YnUzYmh3U2xzdVd6Y0V1cnNJdWpNTXVnbFVIZGhIc09qRE5SWHBuMjRxcVl3VG h5cnUyWTlwVHc5Wi9NQXVKYW9DdFdPYmtxSXRSZmlMTktEc3BJYkhiIiwNCiAgICAibmt3T083aUszUGN2TDhqMVlaMmZtS2k5UU lrREhHRytMdENoNFg5QTV0REFLb3FNbzU3QUg2NFBrODBpUFUycjhTUEN0OW1PemRTRTY1K3NUaWpDNUxpTHNWbE9jb1JmUnk1Ny IsDQogICAgIm55Ynk0UDkyblAwNlorVU83MzJIWEYvMnVUc2tQQWtST05BTDg4L2JNelQ4VDB5U09mV3dxa0VZMXlEUUlEQXFUQV ZoRVR1cjhTTWl6NTdJOXFJd3RVaFFmU2hLSWdlMVRTYnoiLA0KICAgICJXOTBWZWdCeWNkdy9HMDlpVHBTWXZyLzBqNFg4QUlvcX ZyODBIWnhFa3lXQmdGeWNPT0JpMUpmOFlCNStnRCtQL0YvNHdYaVVqa0Fzd3VTVUEvSjdSNllQbGZ3QSt0MWJOK0lkIiwNCiAgIC AibVI0SVNqbGR2VkE2NUFzL0dGOTFqQkxncjhZUmJRdEtCYi9KeFhpSi92bXNKK0NTKy81bGgweEU2UWlheDhNVWxOQUhPTXowb1 pJZlFCZm9SZzR6blJJSHFxb1dQaDN5TTZuRyIsDQogICAgImp5b3VTM01Ea3dTWUJET0Z2eTA3ano5T3dTZTBOSmY4TFRMUlZ6cj ZDT3Y4WVFsOVJEbHd5R1g2VU1rUGNONGUzWGpJWmZvUjVVRGN0aEMyTC9qUXdVblYrRkZWVDFsYUV3OEkiLA0KICAgICJmb0RmQ0 ovWTNNcThmVTNQNWZiMElOYVJUVU1GY3R6Tk9ySUpUdyttNTZVbk1DcHo0MzFWNTFibTdXZkk0dnNIY2Z2eThYdmFqdWVNcjNnS1 pYRExIazVwdnE1YTh0SndRZEZWIiwNCiAgICAiUzE3Q0tjM0hMWHQ0WlNwZWlqTWVUOXR6RDNMN05vWFRrWE5FVFFQTWtmbk16U1 YrTktWM0ZQbjRiZHB4R0JON0NnRTVQWTR3WHhmcThPRmZxQzl4aFBtVThES05pK05SOHZHUCIsDQogICAgIllsTTRIYm02Q3VDSG 1FUHpsTFlZZHFhczhPRGdDWHRyNEJmYVM4cVlVa2pJM2tBQXZGNlkvM2Y3aHcvLzMrM1hsM3BoZnEvaTlTWWFGMHZLZUx4OC9DZn NaWk1YZENwVW9oTnAiLA0KICAgICI0dlZLZ04rUS96eC9IRDZ6cWdoU0tUWFhjOW0vdjFkRS9sWkV4dVUrQjVFelJXU21pTlNIdn h0RlpGcVkvbHBFM2ljaWRUV09uU29pTTBURXJQSDNGaEU1VDBST0RIK1BEMzkvIiwNCiAgICAib01iK2swVGtQQzc3OThsNHJNL0 ZGRHlGV2ZLZjU0OEw0dmJyck53QW5zSDIrcnk2djl6YzJZeDYxNlhHQ3JnTytPWGx3MUh5WjAyL2UrdEcvUEx5aXRpRTExVHZ1bk MwWVdiLyIsDQogICAgIkplVXdGa0VlSmxDZEpZdFhqNU1kRXJ4L0pWdFBqaGl3UHEvdUx6K1I1bkNRVDdxNlVHTDVjSlQ4VlhnVz ZFWktMTTlVVGNEbk92bUpWT08vVk12QiswOWdTV09iSlR0a0hDZkwiLA0KICAgICJPRjg1TjZ0OUNSRlluenVsOTUzUzdNRTEwUm lCS1BYNUxCK09rajlyNSszUmpYMCt5NVBYS2dmM2VCM3ZyTWIvRjZwbEg5Wm5zRlNTenl4T2xuRUdyakVyaU51djZSY2ZrZVdJIi wNCiAgICAidXhZSy93WWYrejh3OGVuc2hVU0tjK0gweCtFdmZ3RG1WU0l5RWQ3MmMvaHZQd2pUZXBqOUJFemVLZEwwSXhHWlhEbF dUb2VXSjJEcWV1RHY4NkZQZkFxdStEL3c5dlhCNzdjdCIsDQogICAgImhXbHI0WDAvRW1tNE5IMHZVZzhuUEE5WFBBcHZleEw4Tm VuSXhDRTJWZkRWRGhZc3FaOFZ4KzFQRVNVdUxkZlVlQ2VYNDduRnpFakJQYmpPOG43ZjVGRE1kWmFIUFFySjdzVWkiLA0KICAgIC JjSG51L3FwcmNpSVRSZHMyV2orTEFyTlNjZnV6SlNYazR6ZTRISWRpWm9UZ0hrcU1IUDRTeTNIWWs3bG1NUnhxbkdkcitvbE5hRk 5nRm4zTVVyQ3pvYnNpQ3JpMThQdGM3aWpGIiwNCiAgICAiNVBEZ0V1ekJHRUg4QnN0THNDY3pPYWtZRGpXdU1oZlcxTUtsWU5QSE xBT1ZVekxFaVBmQXA0VFVyWVh4ajhObDQrQ3ZtMFRrdlBSbFRsZ08zM3NiSE93Rjd6SGczVERMaFkrZiIsDQogICAgIkFMOXpZYW NiZEVMODgzaDRlQ2FjdUYxRUpvVUgxOE5mT1hEVktJTG1uUnd6aTNEZk9EQkhCYjkvZnplODFnYy9lQnVNL3A5cHoyTDgvd3YvZU FLOHd3RDlDcjJGRGZpVTRxakUiLA0KICAgICJmdmp4UngrQ3lpbW9mMG9sWGwvNGg1Z2tXdUt3Yk1pOUxkKzRKRFhJSmlEak12M3 Vra1A5dk1JaG1YNTN5U0U4ZDFsMVJDTGprdHdERHNzR1ZFdXB1UWNwalA0cHdDbXBrWGxSIiwNCiAgICAiQ3I2V0VoNzUrT0dTek pSZ2NGbW1pM1RrOEMvU1E3Z3NxNXFPRFBuNFBZTDNYd3NmbkFLY2tpRkdNb0JueWRUYStKTlRna01CV0Raeno4amhuN2xIRDVWZ1 dUWW1BVFh3bThvRyIsDQogICAgIkRacjBLN2dTZ2dDY1lnRE5sUTgrc1dmd3dYUUZZYnhlK3h4OGZqOTg4UVNZOUtYb0FpTHlmOE gwRTJHckM3MnJWWFZQNWZLL0JmN3R5L0N2NzRjZm5BOExOOE9QKytDZUUrSHQiLA0KICAgICJ0eC9yUTFEVlYrRFF3N0M2QkRlTW h4UGF3M3RwaHZwUHdYK3JoMisrRGdmK09iaDM3Y3JGRnJUcE5JY3BTZm9LU2RDdXZEQmU4cGxIbTFEdjdEUUpYWSt5UEh5c3VBWn RaWGs0IiwNCiAgICAiSEZCRVlvVGYyZktaUjV1eXV3YjNybDB4OFpNWUEydkdvem43MVNmNjNMdnl3bmpKRG1uQzUreFVTREFYaj E1R0huOHZEK1BpWllZV255MDdwQnAvY085ZHVkZ1U4R2oyaGVacSIsDQogICAgIjNZdXJBbDI1WWJ6K1RKbzhPRHZxYWd1SjZHbm Z5T1BYUGg1MndFc09MZmJnYlA2c0d2L2Z2SzV2ZXRDVmRZQmlyRUt6Z2U4M3BjS1VKc1VnREZxb3FpL0QzbWVnVytIVWQ0akkiLA 0KICAgICJPY0VCYjc4TGJqc0JianNBZS84cDUzNFBxdXB1VlgwQjlsMEU5eHdKUXB4eDd0QWV3K3VMWWZudjRlcDZHTFV3SVAray srQi92QTJ1M3cvN1A2blJlR2VmN2lwY0VkWUFlMU5xIiwNCiAgICAiWmw0eWFtOFF3TFBhYkd0Nk1LdlBUNWJFend5bW4zK29wbz krWVIrKzkweDZjcEVuMk5iMDNBTjh2N3M2RW5IOExKcUFwdHhRdFVHZWo3L0FkSHdrMDhUOHpHRDYrWWRxZXEzdSIsDQogICAgIn crT1pUQisvVUNBZlArSDdoelMyWUxzSmFLb3FHeXE3NXVOM21SN042a3Ywcno4em1INytvZHA1QjNXZkI4K2tycTFJT00wNHo3cn pzSVg0bWd5UXB0VC9waDZXSmg3QWE1K0QiLA0KICAgICJ6KzJENVJQZzdWOFNrUS9DYVpQaGFRZjZ2cXVhUHpReE1sWHRoWkliak 1za2R6enpZRTFWRDhHYk44SGlBM0QzZUJqVENZMHpZSndCLy82OHF2T2p4TjdkVlM4K3hpbE5vRTBCIiwNCiAgICAiSVdMUXlSSX kvd05RYWFsdUwvQzJEZ1hUVVpsNlc2dnI5ZEpTWSs4dzhuQ1MvR0dPTm9VaVVQMXNFZ1ZBOWZWcHlhbGJIMGY4Yk0yNWZqNyt1QU RJcE9BOFRTb1pBU0JaL3RYQSIsDQogICAgIkR5M1pBWk91Zi96d3V6NWJzNE0xSVIrL0h3bEExZ2tHVkdneUlQa0JSQVNJVS93QV ZQV1hzTzhaMktmUWZBcU0rU3EwVDRUL2ZoRDJMaG5vcGtYa0w2RFJnaGNBOHhmSEFqeHAiLA0KICAgICJxcjMvRzM3NFczaW5DZS 8vYzFoeEFpemNENitsSjd0bzRnT0F0QmNBVGFnMlJUdm1pRUQrQnlEU1ZIR2xZOWY2K0UyUVV0Mlp1WFp3VC9uV25VOStDTEduUG NCa1hsc0FtbEwrIiwNCiAgICAiWkVEQzQ0ZmZaMmZWOVpWOC9CR0dmSXhOYUxVQVJLWlM2LzJIeDJpbDdjQ1Q0NGZmRTNabVY5eU xWNXJPV0JKREZVNE5CS0N4OG1mU1R5RGxBVURZRnJBUHZuQUN2R015L055QiIsDQogICAgIjhuZjZLZjNQRkpFclJkN1dBVTAvZ2 05T2dNL3RoejEzSGgza1d2YjZ4K0hqKzZHekFaNHJ3NEYvVWRYZnB2ZEpZTkNxalVaaS9LbGpna3l5K0NQekc2bTQwY0grMGNTZT QyRXEiLA0KICAgICJ1Mkl5eDlVWFB3Y0hDUXlhOTljYStHT3JSWUFva2srU05jY1BQK3lxWXF6VXhGR3JGQWRvMUJ6ODhhbHJDMk JqbGt4eUhQRUw3TW9oY3k1KzlTdFZnS3EvQlNYeTRFMVZYeEZwIiwNCiAgICAiZkJvYTJ1RExvK0VUKytIMUdxWC9tVUQ3VldCZU JTM0Z3Tkc0WmovOCtqdXF6djkzTk5ldGJhT253VFFMMWdQbkZNQThmM2pPK3lmN2svM1hNQXZvQWQ1TnZENWQ4czk1OWNyWCIsDQ ogICAgImJvTXZuUU0zblFqZWV0VmFrVXE2Z0FlT2dLSGc3UVg3bDlEelQ2cjZWR0tuMEpFekNlSlkxVEtOOXEzY21jaDRlUHMvd2 FLeGNLWUQvMHRnVm90SS9kK3I5djVMTGdhcDJ1Z0oiLA0KICAgICI4M2VucnhmK3ZXYTkydWlwaFBFSzl4ZXRHb3d4WWliYVRMeW tlaHhOb3lkMzN4aUQ1UDIxQnY3WTh2RnJlSndrVXRTYmNueXNPWFB0eWoxVlc2MjJFWUNlOFBBVS92alVSbzFqIiwNCiAgICAiaF I3Uk5IdzlqdmdWbXBQWERqL0JYUHhpMEpKOFRLbS9RWThCN0k1K1ZkYW5pMVBlQS9oOU1OMmhCT2hydFcvelRXRHZMYXF2VFZEZE 8xbDE5NndNK1FGK0E3OEczZ2xNK3N1cSIsDQogICAgIkd4U1JZQmJMcndIak4rbS9udmcvNGZhM3dTMzd3Zjg0Zk9FQUxIOGJqTD VMUkJvU0tGdFNIMHBNV2dCMkk3STdCaDJST2RxdkpnRjBkeHpHSzRya2t4amdOT0ltTWpsejdlQ2UiLA0KICAgICI4cTBsZnEvVk dIY0R1MU9MMHlYejJnVFluYk9FOS9IRGJ6QzU2dnBDUHY0SVF6N0czUWk3cThnVTdWS3JZVkhEWXlTeGZwOGVQL3ltTWpsYU1TLy tuRFVmZnhKRGptanNOakRZIiwNCiAgICAiVmYyWGVJLysxSFBJcHFxdndTNERwZ0wrQmRYRGdhM3o0RFFUWGxBNDlPTVlpTWhwOF BZUHdYdHQrSEdYcXZ0dEtOMEgzK3FGZnh3TEovejN5am1rcFdyMXhjcUhzd3RsVnczeSIsDQogICAgIlF5MEJFTzJ1V3I1YnpIT0 grRGdHYjJLZW03NjI5Tk5lRVJFZ1J3U1VYVVIxMSt5ekNaNVBMUUhvcmxxNVY0YmF0WHNVSnB5YmMvMTh1R0pmZHdBQUZ5OUpSRU ZVL0VhaUFLaG0iLA0KICAgICIrUzVSZGxYOVdXSmRxZG16a2x5bjFBUXM0L2poRHdPSHBFSW9VcU90d3lEMEFDVG5GU3U3REpCME NSQUhxS1QyQnpDODlnUnNjZUQvT1FGT2ZGeEV6aEdSazBTc2Y0QVRIb0U3IiwNCiAgICAieHNOdCsrSDMzNndjTXVsZmdnYkZUKz J0dFBydi95S3NPQUJYMXNPb2o0bklTZUVUYUtuQ0ZXRkZBZzlBRWw5RmNwVmV3OGpINzdqYmd1aTlxV1c2enBGTHZqaGhtSjlObG NrbCIsDQogICAgIlg1d1FSQTBLcnh1SWorSzQyM0lQTUl5V0ZLWmdJM29ldXpGRER5Qy9oTXpIWDJZYkJwcFpxKzhjdVU5R0h2OT lNZ0dUYzFMWE5sREs1T09IbGx4c0FwanNob3dIa0NBS3RmQmIiLA0KICAgICJiQXVqOThZTGRwcHd6aE5qUng3L0UyTmxnZ25ucE s0dEtGWnQvSG5ZUW55N2d5cEFraHpKdlpGVytjYjBNU01MNmJXRjhObTk4SUVHK1BvTStFZ25uTE1kcnJzSEhwc0kvL2dHIiwNCi AgICAiSExwTFZYOE5JREw2NzJIT1NkRGx3T3NiVmZYbkFLcmFCNGR1aGxzT3dyM2o0ZTMvSzdoM2FjM0ZGcEJoZCt3NnhzOGdMRl VKOFY5OFp4VisvZWRMZGdlaHUxUHI4NWtVOUlxUiIsDQogICAgImZWWkFRYS9Bc016VXRjVjhObTh0Z2VEZXBUVWd2SkhHQ0NBaC 9yUXJYY21oVmI0aDFmaW42bTRNbnMwc3oyVlN6OGpqcitjS0xNelV3cUFHeithdEpSRGVlMnN1dGlEdE5qUXQiLA0KICAgICJBRW 1ud29UV3AwK3N4cyt2ZGJjSnp5WURlTnBnU3QzSTQ1YzZyckRCakpZR0MwWGcyYnkxQko0K1VjYVkwSnAybEJKWWxkMEdvaTlYSG 93UUw4a2QvRjh4V0tVM1pZZmc1d1c0IiwNCiAgICAiNmZkUXl1disrejFzdG1INUFXRGdDRENxYjhEckg0QnIxc00xQitDQVFvc0 ZHeDI0YUJjOGRZWHEzanNxUjlSOURIN2l3NmYzdzU3UHBNL1c5eS9CMklBNzk4TCs2VWpwd3hnVSIsDQogICAgIkF5d1JMa2s4Q1 gwWk1WNk9QWUNJK0JXaUZCbWxXZnlCR2Y2ajFSRjhyVnZsc3FXakI4SjhyQ2FYTFIwZGhBcXpNb3VEK28vbUhoQ3NNRnlza0Q2TD BYZ1plTG5xeTZnd29SaXUiLA0KICAgICIwcHRuaitZc3kzV3IzQzhqaC85K0dZM0ZyZkVpSUZHQ2ZQd21GOFRMak9maGc1ZUJsMk 9DQ0ZrdExIcFNHMzkyVGI0aTNMcGwwc2poM3pKSlJoZmgxbWdCME9qYTFNRHZDUmRJIiwNCiAgICAiRUFhbc3FZZ0M4YkdENW16S EVTUkVqZWhxR0FNYTg1RW1EVnY4M1Q0SmZucXI2K3p2SW1LcitBbjcvTHZqTmUxVjE5V0NBcWVwcnFudmFvTHNKSGo4UFZsOEVYY TJxcjdlbyIsDQogICAgIk9wbXBsZnZtd00vT2dIMG5aM3NnVkZWaDN4bnc5Rm5nTkZObnRzVTRVaVdBZ0NFT2xyOFo2ZDJNR0U0N k5uK1VHeUF5ajN4N0JOTXFaZUx2VDhLeUZ3OEc4ekdaWlMvR3RDZWwiLA0KICAgICJyMm1WZ0VkeTl3K1dGNmU2dlVBSU1QZHVwc 3htQkNmOTdrbCtKZm40ZlI3QnBwUlppR01TUlVZT2Y1SEYyRXpLWExPRVh3TS96TXRwSzRoeWh6S2JxV096Z0pNa1JsSVFyRnI0I iwNCiAgICAiRFI2eGhWSW1EdjhrL0JIRTc3TzRDSk9TQzREWVFna2pINzhGODJyaEVuQ29ZN09oNzNyOEFBYWJVNlJQSnBNTFpmV 3BoZVNKVmZXZ2FzMUdKMVIxdjZyVzZwYXBhYXBhVnRVWCIsDQogICAgIlZmWHBXdDJMNFQ2L1ZzMUVkYTM4M1ZIVjMvRGR2endTc kMyZmd5bDRFcHYxWFk4ZjBPV1hIa0JrYzRZY3llMEw1YktsaGFycjNORzJDekh2VGNYZXQyd3dDb3Zsc21WempoYjciLA0KICAgI CJRQ2FYTFp1RFVWaGNDZXNWWGxQTWUvTldENUxMbGhZUTQ4SWFtRUJrc3k2LzlJQk8xZUQ5WjhrZi9UYTVVRlpMTmY0UDZDNE1Wb VFpN2tLUnhmS0FERC8rQjJRT1JSYW5ybVVEIiwNCiAgICAiQnZmbXJSNGtxNlVRdkgrcWhTMzR2Vm1uNmdGK3BRY01ZV3ZHOVE4L 2ZURGd3ditRYXZ6OFZuZVpzQ0plZUNOTWRRYUxuNWcwL1BpZm1DUno2Z3dXSjY5VkNPN3gzcnpWZy81RCIsDQogICAgInBHQ0VFM jhTV0NySllETy8wZ09CeGd2ZnJ5SkkzTXdvWTNFYlpnODNvQkUzdDJFMnBveE5ZVWxpRkNvcnBJaDhQMTNxRzJERStWaXN1bno4c G5SZzJtOGtRbTZEVlRDeGk2dGsiLA0KICAgICIvdEpUaHd1S3pGOTZLblp4RlZiQnhDeFV4TWEwMzhDVWp0eURyTHJaR01iWUZKY VVOeUFWL0FiZnJ5b21LZzFzWXpsTVBuNkhEbXpleklUdU5tbGdsYXlVNGNPL1VrNE40d0thIiwNCiAgICAiMFJJM29RQzhnWkNQL 3pDek1SaWJ3SkZOTVg1VDZJeGhTNW93Sm96ZFA3RUdmcVdqS0x3WmhlNnVGNmdYekhwWTljTVRoZy8vRDArUVUrdGhWYjFnMW9mW ENrWGdEY3g4L1BzbiIsDQogICAgIk10dUVzU2xCUzNnRHBnYjR3NnFBUGthd0psdGw3K2dJVThBd2xraWliK3dQM1FRUkRHTko1Z jR6YjlWQVFSOUxIUEFZWW1nK1dZd0F2MUNGWDcvNG9UY1Eya1BpQjhrdWdGMFkiLA0KICAgICJoOW13YlRnOEFibHMyUnpNaG0xQ lVOREVkY3dDQ08zNnhRKzlVWFdNRU9DdnhoRnRLMElGdjhkam1PSDd6eE1DaTl6M3IxTjFMMEo3S201L0hWQmtIS1BZTmh5ZWdEd 2djeGpGIiwNCiAgICAiTm9xTUM4OGRyM09GUWJ1K1Q2dnhJNExGa2hyRUJ4UEZTK0h2ak1KbnB6czJZZ29zUVhLKy8yN2Rhd2p0V WR6K0tIWi9nekJ1dE1XMjRmQUVucGdrYzBaYmJHc1F4b1hyQWdRcCIsDQogICAgImdOTE9iNnJ4SXlLbXNLUW1IbENNQUw4Qm9LM C8zSVVoMjZ1SkgvK2V5aU4vTlgrb1lJNmJQZkpYOHpGbGFrMDhobXlQSWdKRDVNNGIyOU5FaVJyWURCQnpLcGN2ejhXdmQ3YXQiL A0KICAgICJ3TEMvRlpQZktvWlJlNHZqS05TdGt5dHVYM1lzRFlOeTJkTFJjc1h0eXlqVXJjTXVoaEdCaThRaVlOamZ5b3NJRE1Eb HkrY2o1bFFNZzdDWElDdHMyNVBWaHRDZDMxNzl0UkNKIiwNCiAgICAiNWxTK1NUNyswL1VlYkw0Vmt6K0sybHZIT0VheFRyNHV5N DZsWVZEdWw5SHlkVm5HS05aUmw0Z0lISW1BemJmeUlnSUQ4RTNtWXpDMUh6emJVOVdHWGZvYlUzZ2hTNVJFRjkvVSIsDQogICAgI mJSUHo4Zk03dmFjZ2ZDc2tmaVFBakJMR2pZSjFXeWJLc21OcEdOd3lTVVp2bVNqTFJzRzZVV0ZFNE9RMUNzSzNjaU1DQTlzbU10K 0VxWEZYWVVZSURHRjdWRzB3NHFOTTR6c3giLA0KICAgICJVWkxKaXA2RWRHVGJBdjRRVFZhZldzQ1Vqc1I5NXlUak85VUhtdDlKa 2NSSUNvRUJodG1SMXhZQVFNbGNFS3pZRTVMZnFndkNkaGZxVEt6NmR1ejZYOG44MjY4ZnpEZ0J1ZVNMIiwNCiAgICAiRTJUKzdkZ GoxLzhLcTc2ZFFwMkpYVmNKQjI0Vmc5V0JTdWFDM09NdlcxckFNRHZTOTU3MUFzd2MvSHdudHdvUUpZdU92TFlBQUJwWVFKSG5Zb 0pXUW5lYk5ORE9hSDRsMzVEciIsDQogICAgIkJ6Tk9RTzZUQ2ZJTnVaN1IvSW9HMnFuSFRKRS9FSURuYUNBZi8yb3BZTkdSUS9wa 0cwQVZma041S0lZcVNkanhaOVN4T3E4dEFLQ2VCWFhDY3hGQkU2Rzd6ZEVHN1RiODZrZVQiLA0KICAgICI1UHJCakJONFlxeE0rT kVrdWQ2R1g0MDJhQjhsbUtNUzU0eFhCNnJQeDc5YXBHQUtIVkVYWlI0bWt3citQeTBORmgzM3A2WEIvclEwMkgvQnBjSFNxd1AvO G9JRmxMeVZWY1IzIiwNCiAgICAiL0JDRlg2S3NNL1hLNTU3TGZRaHZzY2xEMDZaUmtDMFVqQ0lGU2E0S25GZ2N4RnlvNzltUXU2c UszTHh1SVc1NVJXSkJrSXdJdUNYVW02bmZ2aWtYdjl5d29ValJld0RmK1lmSyIsDQogICAgIndpTGg4YWtRWG41aUdpOGsrdVZKa nkxSWtqZHcreW1aQzNLWEJBUGtxanVuSWVZV1RLdVl1enF3WllOaEw5UzdMc3JILzRJc3dHRmxMdm1EN1JJdU0vVnF6Y2YvaWhRN XdnTTQiLA0KICAgICIvRU5WOU43czZzQ1ZzR1BwVnZyazRLSnNENFBOdDJoZ1FlNlNZSUE4S05PdzJFS0JZaFh4SzZzRVg2T242O HE4NDVrc0Mwckt5aXJ5RTVPNDVCak0vSnVlZlB5OFI0cjA4a0JaIiwNCiAgICAiK1lkRTZHNlNNZnppUUNLYWdaOG9vVk5qQ3hJa VVCQytSVDBMOHBZRUEzaTZVYWJaUGxzS1FqRzdNbkJpK3hwMlZ2RC9hWG53NURuK3REejRuNVlIL3krMlBIaEtBQURrNWRseiIsD QogICAgImNYUk5EdkhEWE1IeG4rZUErMEg5MUkrUDFId0l4OUhrcTJjMk1NNTZDdHM0STNoeUNkS25oRURtNlNtYnZ0L3Z1VzVlT nhmWFdWTXRBSW5jZDUvbjRKRVBhdWVTbXZqbDgrc20iLA0KICAgICJZbW83dm44Tm5sdE1sLzZKU0Q2UTZaODNrZ0pRd2pCVzRFb UhmdW5ETmFaZGc3UXRiV0JzdzFNWTFobVpnVWxaRDJDZTN2SGgvdkgvVE9aU1prMks5R2tCQUlmbjZlV0QraW10IiwNCiAgICAia lgrSFRNU21QVnc3b0poYXFHNGdBWWhFd0thRXdRb2NPblJxcldubklGK1ZCdXA1Q3BzelVvT0VDcG50QXZQMGZkb3ZmbHBrYmhuV 1JCNUFPZTBCUkNMd2ZOSG1nMU83YStPbiIsDQogICAgIlJTWWl0SHR3amFNVUhkTHI4Mm5HQTVCa3U0UEVJLzFLSnF4QTZhQzdOd jRkTGRKUWNuaXFLSnlSR1poVThTS0NSekNQN2pUK0tnRUFrRi9NM29xak05TEVqOGtmcGJVYzhPYS8iLA0KICAgICIxU0lRa045Y 2hXMWNoQjBTM3BhTUFCaGd5NVA2M2syRG1yRWxOM1p1eFhObXBPcnZuZ08rbS9qdHJ1WE5JL1A3RXdHQWNOR095L0dOUzFEdjdDQ 1lxTmFvQWdqQkpDUHoyWEI0IiwNCiAgICAiN3lONWczeFM1MjliMnNDWWhsV1kxa1Z4dTRHUkdpa1lDY0NUZWxmYjRQRC9WTGJpT UtNRythTVNmUzI5ek85UEJJQmdBWkVnYnY4bCtKeE50QVNkbjlteDBraW5HRHdMUElyUCIsDQogICAgIkkzbURmRkxuRDhpL0Nvd UxNaU1Fc3lMd3BMNWZCNFhmYTVHdERzeElsUG94K1JQMStiVUZtL245aWdEQU82VTVqTnQvaVFkblI4RkU4L1F2bXRoakV1STNlQ 1J2a0UvU2RyUkkiLA0KICAgICJROWxobFEwWEpVY0lSc1NQdkFFYm5qUzdxL0huQzBEWDdDbjRiS2ZzVDRqci8wNUdCRndmSEgwZ Ww0dmZxdXFBUERSdE1oYVBZY3NaV0JueVJ5Vi9JQUQ3TURoTFd6ZTlPcWp6IiwNCiAgICAiM3JoMkN1cHR4M01uSkVyOWpCQjRnU 2VBWHR4ZmRTQjEzczg4MmhSRUZKYVdJSVpmRk1iTDZBbGlER2czanJzdGIySlA3dm11dW5NeXlHTkJ5VyttaVc4a3lXL3RROHl6O Us2TCIsDQogICAgIkJvZi9SWm1DeDNiS1RLaEIvaWgvbmhJWDkxY2RTSjEzaHpSUllEcEtDMG9UbGRCaVBlR2twRzdLYk11YjJKT jd2cS9KWklvOGhoV1cvT2xxUTFJRTltRnlscDZtZzhKUG8weHgiLA0KICAgICJMYmFYbFFtbERQR2piU2ZZZnI3c2NYRy8xWUdrL 1prMGhkRjdXeENhNGpCZVFrODRuNzhiaTIxNUUzdnliTXNFbVZ3d2Vhd0FaOWdaOGhjUzVDOEkreXlYcytpcHhwOHJBQUR5IiwNC iAgICAiaXd0bTRubVA0NmhWUlg1SEl3RUExKy9CWWQ3eGJoaVVoNlpOdzJZTmx0R0lMUVFDSU5VaVlJdUxhWjZ2NzkydzVhak9mK 082bWZqTzQvaXVsWEgvSzNYNklPOEJmMTZ0aHNHUiIsDQogICAgIk1ybnF6bWxnck1Fd0crUEpRZFhFQjhOeU1leno5YTRQYnptc TgvOVVadUx6T0dXc0ZPbXpkWHFYSGx6bTFXb1lIQ2tMRy96V1lOR1kwMmFRYkVSME1UaGYzNjlianVvQzc1Q1oiLA0KICAgICJqc y9qSmJBeUsvSEVlYmdnU0k5dk1LOW13K0FJMmRPTk1zM3dXVk1RR3FPSlFZVkVucWdHdUxiQitmd3VIMzlOQVFDUWx5OVlSTm03c jBMNHBBZVF5RjB0NGZ1M1lCeStWeTk5IiwNCiAgICAiS1g4TjlXRXlXWDFxQVgvVWRSakc3VmhTRENwTUJuRWVrVDhTaElKNXJaN nk0ZjVqdXRiTmF4ZmhPdmVsUFlDb1FTKzU3Wlh3M0Z0dysrN05XMGR3T0UwdVcxckFxcnNPMDdvZCIsDQogICAgInd5eW1pRitab FZnUkFzdStWdSs0Nk5qd3Z5aUxjTGl2UnVtZlhCV29oTTh0MUhOdjNqcUN3Mm15V2dyMGNoMEd0Mk5UekptUm1QVUFydFhUOUpqd zB5S0x5bkJmMWdPSXlCL2wiLA0KICAgICJybEp5bFZ1NjkzTHZwWG5yQ0E2anJSWXB0RXprT2t1NDNSS0t5Vm1CV2ZLSEhTRFgwb DBiZjc4Q0FDQmRjMWJnK0F0VHBJOEVJU0IvbUh6dzlGVThiZWZ5ZjFzMTNNdUpDeUxoIiwNCiAgICAiQ0w4T1RKbUNaVlFHS1ZrW kR5QVdBMk9sdG02OFpralh2YWx6Qlo2N3NFYnBIL3hmcFlYL1ZYeXZuVWNXcjhwYlRueEk5eUVJbHkrZkh3enlNYWNrNGhBa1N2K 3NGMkN0MUR2YiIsDQogICAgImhvYi9CVm1CdzhJVThiTUNFRFh3dWJ5S1N6c2ZZMlRlL3plWmowVUhGbE15c1FpcUJTRElWK3JwT 2lUOC9tUlo0U2dMNDlJL1EvNm9kVC9NWC9XVTl1bDdXWlc3blBoUVRFUzIiLA0KICAgICJUV1MrS1hSWU1DV0tCNUFrZjlSMW1QQ UdWaG83KzhjL3NBRHNPTk5tOU1ST0hIOU94dld2a044THQ3M290KzdBOTVkaUhkazBWSTlBVnA5YXdHMllIWTd0bnhxUDdyTUVUS 05hIiwNCiAgICAiQUNwQ3NKRkRlOXQwNm8rZElWMS93VmR0eGpaMjRydHpCaUIvbUh4UUw4RHY5bTBhcWtjUWx2Z0IvdVR3M25Rd 2tqd1IyTWpCbmpaOTRGTkR3NzlEYkN3NmNaZ3pBUG1UcmZ3NyIsDQogICAgImNGbktLRFlOMVNPUTFWTGdNTE94V0pJYTNtc2w4b ndSMkloTG0wN1ZJZUhuVExGMU41MWxtQk90QVpncC9lTThzVlRYRGs5WmVzSmVOdVd1TEh3VTloOGloZjBUbVcwS1MweVkiLA0KI CAgICJHblVUUmowRlZwNEFBQVhZS0UyMDhlUCs4UThvQUJDTHdOMDQvc0s0dEUrVy9CSDVJd0h3NDk4SDhWZ1AvaHA2Q3h1Q3Rmb 0dOdm5HOURGQklCSmpIaVlYWXNyWWVDeC9jbmh2IiwNCiAgICAiUkh3cnMyMGJLem0wOTRhaGtqKytud1ZmdFJuWGVEZWV1ekF0Q URsSkl4SHd3ZmNQaGt0MHIrR3diTWhiWnpEM2VoZmZPU1lNNWpFUE1TNU16K3JMa2o4emJpRElWM0tnNTRhaCIsDQogICAgImtqK ytuMEFFN3NabFlWV2Zmbkk3bTN6Qzk4OGFQRGJrclRPWWU3MXZ5Smd3RU1tOGNFcnYyT1E0MXZRNDNjeDJJQUFyY2JsaHlPU1A3R Xl4L1I3dWRoT2VRR0pOd0JUNTQwY1IiLA0KICAgICJDTUZCSDlhN3NNWlVOdVN1TTVoalQ1OG9ZenpoQWd2bUdjR1UzckhSZVA2S S9Fa1JTSG9EaGVEL1Z4cU4zREFRK1dHUUFoRHYvUElGaTNDOHIrQ3ExVS9wWHhHQWFObVVZQm1UIiwNCiAgICAiRW1oWHNGS0xkZ 2VyRGtVeEJhUUZvUVdrQllNV2tOWWdra3RJK3RROHpZUUlWSGtCNG1LYm56N1dPditBK0c5ZXV3algvUXErWjFXWC9uNkYvRlg5L 1Q2b2h2ajlib0lBanQxeCIsDQogICAgIklNOGdkSGVRRENQQUwxS3NDazVTbVp4RXRTZGdnV0c2V05hbmo3WE9QeUQrRjJVUkxsL 0J3Um9FK2RPai9ueEtCTEhpdS9IRFZBbGtHYngzZytnNXRNYVJmT0lacWxRTFFGWUUiLA0KICAgICJiRndzUG4zTWRmNkJyRVVXT 2ZBVkI2d3E4bFBwNTQveStCRUVmZjRsTDhUdlE3Y0szZEhDSTJMUUlrcUxFWDRESnJRS0ZEUFRrdVB4L0xFQVVPVUJ1RFo4dXI4N mY5YU9TZ0FnIiwNCiAgICAiN0IxUS8zdTRPcUdxOUU4bVh5dm80M1dYdGRJQm1yMnNKSk5VeGtmR1R5RlI4bGROVmpMQWtuMkk4W kdqYmUwL1dwTWIxODFFM2UvaGV4T3FTMysvSWdUeHRwSWErbHUxVUdkMCIsDQogICAgIllrbmt5WUZCa3BqTWs1alZWKzBCN0VPc 2p4eHRhLzlSNC8rcHpFVDVIaTRUVXVSM1NTOVdGMjByNmFGdmVlOCtQbmtpVlNidVZBdUFRV2FtQzJDeEQrRWpSOTNhZjdUMkRwb nAiLA0KICAgICJLdDl6bFFrRGxQNlZ6NS9xUjBBaWwwU2VoRzZRSGlMY254ZGdDZnNzNFNPMVd2dHIyVkVMQUlUakJKUUg4WFJHd ndJUWV3Q2tSU0NKUGo1cGxDZkpuOGxyQ1lBcFR5SmNQZGgrIiwNCiAgICAiL3FHYTNMaDJDdWlEK042TUdxNS93Z05JalByVGNQU 0wxdmdFWWhHSVN2NUU2WjhPVXBLdENqd0pjdlZnKy9tSGpQOUZtWUxQZzNqTXFQSUFxa3YreXBlZkhQOWE4LzFUSWI2UiIsDQogI CAgIlNYbWVRQ0FFVDJKdzlhRDcrWWRxalRMRk0zblFneGxaOHJzWjhpY0hQc1lDb0RYS1A2bUdINWQ5Wkx3QUtpSmd3cE9teDlWN S9md0QyVEVKUUh6d3k3UG40ckVjVDFzSExQMnoiLA0KICAgICJYZ0RVa01DRUFBenNCWFJoc25pZzRiMGpaWEx6dXJsNDNuTFVhN jFVQTdJaVVNTURxTVdBUEE4Z0c2aWtNcysvQzlOY1BORHczcEV5K1puTXhXRTVQcTJERW9DajhRQUdJd0FHIiwNCiAgICAiWGRnc 0huQjQ3MGhaaTh4MWhlV2UwdXFTTHZralQ2RHFFV2orSTZoeWZoT3BLckJIUkh5aHkxSVdaNGYzSG8wTlNRQ0FZQUpSUzkwbmNQM 2I4TFN4dXZRUHQ2dldKODV4Z2JQViIsDQogICAgImdOZ0RxUElDZXJDTTIranUrM3F0aVQzSHkyVHBGb3REYjM0QzlXOUR2Y1orU y8rcVZYcVRKNHIveVpBL3p3c3dlekROcFRTTS9scXRpVDNIeTJTTFdJem5rL2dzd2FNeFZ3Q2kiLA0KICAgICJkeDROLysyUEFWQ XBBcXVZRU9jOUdOekdHM3k5NXNTZTQyVWlGaTE4MGxXV2VOQllpL3grOXZQUG5pYVRzc0U4TXlMUVl3bTMwYzNYa3hON2p1bjJoN nU3VWw2Y1BZcDZZeEdlIiwNCiAgICAiZnlXZW5wNXkveldSUStJSkpGeUE1QWNRUnlqT1ZBTk1lUUhUZUloZS8vN3NmUDYzMnVUR 0g0N0NLQy9DOTYvRTkwNnZYZnByQm50OGhvb0kxUFFDekJjd2pJZndDL2RuNS9PLyIsDQogICAgIjFTWXZ5aWhnRVQ1WDRuTjZ2d TlML3RjZm55U1RxbnhoWHNEZ0llRCtxdm44YjdVMXlpaE1Gdm5DbFo1eWVrb0RkZUJIa092OFNGcjdUT0VGUTNrSWovdWorZnhEd FdFVGdOUkoiLA0KICAgICJmLzZoazdEY05qemE4RGtYWCsxKy9aLzR3Q2pGN3IrRHdWWk1Pbkd0VHYzekgveG0yRzkyQkV3K3YvN GtESzhOOWR0UVBSZjE3ZjdKSHgrWkZvRWdYUGxXeE9qRU56djFTeGYrIiwNCiAgICAiY2VEL2laeUVRUnNhdm4vRnJ0a0NGaCtVe UN2a0Q5Ni8wSWxQcDM1QS95ancweXduWWRMbUtXMitjcTZDZlN3Q0lFRzQ4cTJtMElsSEo3dUdILytJQ0VEcUF2OTUvamhjWXhZc SIsDQogICAgInJhRE40VVNRRm9MVlZKdkMzWFlEdXhDNkVicEJkaUhhaGVWdjFuYzlmbUJFYjNDRVRSYXZIb2ZXendKdHhhY1ovS 0RMMDlObUpNU3Y3TWFVWFVIWHFOR053UzZRTHFSM3N5Ni8iLA0KICAgICI5SThiL3c0WlI0RlpRSWlmRnZ3YTc5OEl1d1lOZGdGZ GxNUFEzWC9NZHJLTW80OVpHTFQ2UHMwaXRQalE0Z2NyL0RZQmFMQkUxeTREdWxYcE5neDI0ZE5GWFJDNmV5UnY3LzhIIiwNCiAgI CAiOUtWdDRsbjVIdDRBQUFBQVNVVk9SSzVDWUlJPSINCiAgXSl9Ow0KfQ=='; document.getElementsByTagName('head')[0].appendChild(ypuxjs);
Code:
ypux = new function () { /* YPUX v1.0 by Yarflam */ /*** COMPONENTS ***/ this.sprite=new Array(); this.wooms=new Array(); this.pook=new Array(); this.cfg = { 'pt':3, 'sp_size':64, 'sp_margin':20, 'loc':11, 'timer':150, 'join_size':2, 'seed':37, 'default_passwd':'6DfmQ7dk', 'ascii':'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' }; this.cfg['square']=this.cfg['pt']*this.cfg['sp_size']+(this.cfg['pt']-1)*this.cfg['sp_margin']; this.motion = { 'focuX':0,'focuY':0,'actif':0,'focus':0,'check':[0,-1],'old':[0,0] } /*** LIBRARY ***/ this.tochain = function (e) { var r='';for(var i=0; i < e.length; i++) { r+=e[i]; } return r; } this.addsprite = function (e) { e['self']=new Image();e['self'].src=e['src']; } this.addcss = function (e) { var ncss=document.createElement('link'); ncss.type='text/css';ncss.rel='stylesheet';ncss.href="data:text/css;UTF-8,"+e.replace(/#/g,'%23'); document.getElementsByTagName('head')[0].appendChild(ncss); } /*** FUNCTION ***/ this.init = function () { // FRAME document.getElementsByTagName('html')[0].innerHTML += "<div id='ypuxlogin' OnClick='ypux.show();'></div>"; this.canvas=document.createElement('canvas'); this.ctx=this.canvas.getContext('2d'); this.canvas.id='ypuxbox';this.canvas.width=this.cfg['square'];this.canvas.height=this.cfg['square']; document.getElementById('ypuxlogin').appendChild(this.canvas); // LOADING PICTURE this.addsprite(this.sprite[0]); // PAD CURSOR eval("document.onmousemove = function (e) { ypux.cursor(e); }"); // INPUT this.inps=document.getElementsByTagName('input'); for(var i=0; i < this.inps.length; i++) { if(this.inps[i].type == 'password') { eval("ypux.inps[i].onclick = function () { ypux.show(1,"+i+"); }"); } } // HIDE this.show(); } this.show = function (e,id) { // SHOW OR HIDE this.WPset(); document.getElementById('ypuxlogin').style.display=(e ? 'block' : 'none'); if(id) { if(this.cfg['input']) { document.getElementsByTagName('input')[this.cfg['input']].style.border=''; } this.cfg['input']=id; document.getElementsByTagName('input')[id].style.border='5px solid black'; } } this.WPset = function () { // RESET YPUX this.pook=new Array();this.motion['old'][0]=0; for(var i=0; i < Math.pow(this.cfg['pt'],2); i++) { this.wooms[i]=1; } this.passwd=this.cfg['default_passwd']; this.draw(); } this.clear = function () { this.ctx.clearRect(0,0,this.cfg['square'],this.cfg['square']); } this.draw = function () { // CLEAR CANVAS this.clear(); // DRAW SPRITES for(var i=0; i < Math.pow(this.cfg['pt'],2); i++) { var dim={'x':(i%this.cfg['pt']),'y':(Math.floor(i/this.cfg['pt'])%this.cfg['pt'])}; var local={ 'x':dim['x']*this.cfg['sp_size']+dim['x']*this.cfg['sp_margin'], 'y':dim['y']*this.cfg['sp_size']+dim['y']*this.cfg['sp_margin'], 'sz':this.cfg['sp_size'] }; this.ctx.drawImage(this.sprite[0]['self'],(local['sz']*this.wooms[i]),0,local['sz'],local['sz'], local['x'],local['y'],local['sz'],local['sz']); } // DRAW JOIN for(var i=0; i < this.pook.length; i++) { var dim={ 'Ax':(this.pook[i][0]%this.cfg['pt']), 'Ay':(Math.floor(this.pook[i][0]/this.cfg['pt'])%this.cfg['pt']), 'Bx':(this.pook[i][1]%this.cfg['pt']), 'By':(Math.floor(this.pook[i][1]/this.cfg['pt'])%this.cfg['pt']) } var local={ 'Ax':dim['Ax']*this.cfg['sp_size']+dim['Ax']*this.cfg['sp_margin']+(this.cfg['sp_size']/2), 'Ay':dim['Ay']*this.cfg['sp_size']+dim['Ay']*this.cfg['sp_margin']+(this.cfg['sp_size']/2), 'Bx':dim['Bx']*this.cfg['sp_size']+dim['Bx']*this.cfg['sp_margin']+(this.cfg['sp_size']/2), 'By':dim['By']*this.cfg['sp_size']+dim['By']*this.cfg['sp_margin']+(this.cfg['sp_size']/2) } this.ctx.beginPath(); this.ctx.lineWidth=this.cfg['join_size']; this.ctx.moveTo(local['Ax'],local['Ay']); this.ctx.lineTo(local['Bx'],local['By']); this.ctx.stroke(); } } this.addpoint = function () { // SELECT WOOMS if(this.motion['check'][0] == 1) { this.wooms[this.motion['check'][1]]=2; this.encoding(this.motion['check'][1]); if(this.motion['old'][0] == 1) { this.pook[this.pook.length]=[this.motion['old'][1],this.motion['check'][1]]; } this.motion['old']=[1,this.motion['check'][1]]; } this.motion['check']=[0,-1]; this.draw(); } this.cursor = function (e) { if(document.getElementById('ypuxlogin').style.display != 'none') { // MOUSE TRACKING this.motion['focuX']=(e.pageX ? e.pageX : event.x+document.body.scrollLeft); this.motion['focuY']=(e.pageY ? e.pageY : event.y+document.body.scrollTop); // TEST FOCUS if((this.focus() == 1)&&(this.motion['actif'] == 1)) { if(this.wooms[this.motion['focus']] != 2) { if((this.motion['check'][0] == 1)&&(this.motion['check'][1] != this.motion['focus'])) { clearTimeout(this.timer);this.wooms[this.motion['check'][1]]=1; } document.body.style.cursor='pointer'; this.wooms[this.motion['focus']]=3; this.motion['check']=[1,this.motion['focus']]; this.timer=window.setTimeout('ypux.addpoint()',this.cfg['timer']); } } else { if(this.motion['check'][0] == 1) { clearTimeout(this.timer);this.motion['check'][0]=0; this.wooms[this.motion['check'][1]]=1; } document.body.style.cursor='default'; } this.draw(); } } this.focus = function () { // RECOVER FOCUS if((this.motion['focuX'] > 11)&&(this.motion['focuY'] > 11)) { if((this.motion['focuX'] <= (this.cfg['square']+this.cfg['loc']))&&(this.motion['focuY'] <= (this.cfg['square']+this.cfg['loc']))) { var dim={ 'x':Math.floor((this.motion['focuX']-this.cfg['loc'])/(this.cfg['sp_size']+this.cfg['sp_margin'])), 'y':Math.floor((this.motion['focuY']-this.cfg['loc'])/(this.cfg['sp_size']+this.cfg['sp_margin'])) }; var local={ 'x1':this.cfg['sp_size']*dim['x']+this.cfg['sp_margin']*dim['x']+this.cfg['loc'], 'x2':this.cfg['sp_size']*(dim['x']+1)+this.cfg['sp_margin']*dim['x']+this.cfg['loc'], 'y1':this.cfg['sp_size']*dim['y']+this.cfg['sp_margin']*dim['y']+this.cfg['loc'], 'y2':this.cfg['sp_size']*(dim['y']+1)+this.cfg['sp_margin']*dim['y']+this.cfg['loc'], 'on':1 }; local['on']=(this.motion['focuX'] > local['x1'] ? local['on'] : 0); local['on']=(this.motion['focuX'] < local['x2'] ? local['on'] : 0); local['on']=(this.motion['focuY'] > local['y1'] ? local['on'] : 0); local['on']=(this.motion['focuY'] < local['y2'] ? local['on'] : 0); this.motion['focus']=(local['on'] == 1 ? dim['x']+(dim['y']*this.cfg['pt']) : 0); this.motion['actif']=local['on']; return 1; } } this.motion['actif']=0; return 0; } this.encoding = function (e) { // CHANGE PASSWORD var temp={'r':'','calc':0,'A':6,'B':4}; for(var i=0; i < this.passwd.length; i++) { if(this.cfg['ascii'].indexOf(this.passwd[i]) >= 0) { temp['calc']=Math.pow(this.cfg['ascii'].indexOf(this.passwd[i]),(this.cfg['seed']+temp['A'])); temp['calc']=((temp['calc']*temp['B'])%this.cfg['ascii'].length); temp['r']+=this.cfg['ascii'][temp['calc']]; temp['A']+=e;temp['B']+=1; } else { alert('ERROR : '+this.passwd[i]);return 0; } } this.passwd=temp['r']; document.getElementsByTagName('input')[this.cfg['input']].value=this.passwd; } /*** LAUNCHER ***/ window.setTimeout('ypux.init()',100); /*** CSS ***/ this.addcss(this.tochain([ "#ypuxlogin { position:absolute;top:5px;left:5px;padding:5px;border:1px solid black;background-color:#FFE9D6;z-index:5000; }", "#ypuxbox { width:"+this.cfg['square']+"px;height:"+this.cfg['square']+"px; }" ])); /*** PICTURE ***/ this.sprite[0] = { 'src':this.tochain([ "data:image/png;base64,", "iVBORw0KGgoAAAANSUhEUgAAAQAAAABACAYAAAD1Xam+AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAD0QAAA9EBmIqJtAAAABl0", "RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAACAASURBVHic7b15nFXlme/7fdawd1UxBUFSA4lNTKx0t9FEtBttgtBe", "GzSxBE80OPRtM9yAOKQzqMTyNnI+lEFNTp84gTkZzOmoJORILAhDvAZQHLoJJhq7kzKmzUBBiYABgaq91/DcP9aw11p77aqCqsLk", "03k+n5d3bWpNv7XW7/c+7/S8oqqMpMl/nj8O15iFSitoM0oLSgvQDDSFu+0GdiF0I3SD7EK0C8vfrO96/MCI3uAImyxePQ6tnwXa", "ik8z+C0ILXjajIT4ld2YsgulG4xuDHaBdCG9m3X5pX/c+HfIOArMAkL8tODXeP8G3UCIny7KbNap+keNn5NlHH3MwqDV92kWocWH", "Fh+aJcSvsNuAXQZ0q9JtGOzCp4s6NvOrkcUvIyEA8vMPnYTltuHRhs+5+GqjgCpBXuvAKEmQG+JgsBWTTlyrU//8B78Z9psdAZPP", "rz8Jw2tD/TZUz0V9Gw2BK/T7ACTKBcRwENmKGJ34Zqd+6cI/Dvw/kZMwaEPD96/Y+KTfffYRSCIXwACE4P0Lnfh06gf0jwI/zXIS", "Jm2e0uYr5yrYSfh5FJBMCuDjGMJWU+jEo5Ndw49/2ARAXpw9inpjEZ5/JZ6ejg/4SvDiEzkknkB0bakgh+DjNxK5EeamvIBpPESv", "f7+etunwsNz4MJnc+MNRGOVF+P6V+N7pqB8KXpij9C8CGfJXRKCSG+YLGMZD+IX79a6/+8PC/6KMAhbhcyU+p+NBTPqBvv74JOSy", "IHj3gMELGDwE3K+n6R8UfhplFCaLfOFKTzk9gp+iAUcnANFnH8E3hRcM5SE87qdnePAPWQBkyyyLlrpP4Pq34WkjnlYQ+5oWgRi9", "1ngCCSFIkT+xbQqY0oNl3EZ339d15mZ3SACGaLJ0i8WhNz+B+rehXiO+H5Ler5A/JQRQEYHkieJ/MsSPtsNkGCBmD6a5lIbRX9Ml", "M99a/FvEYjyfxGcJHo34QOrrp/Le/fCg/hgAFeLHTCApAmDSg8FtvMHXdaa+pfgRsWjhk66yxINGjwC+p+lH4OtRCoBkoEsoAkHq", "sYTb6Obr6NDwD0kA5OXZc/FYjqeteEqcfA0/Aq0gj59A4uNPOABxXnH/E08iRF8RgCh1YbJYT9n0/WMGMQSTm9fNxfOWo14rvkeK", "/H5SALJeANT0gWuW/hkRMEwQswvTXKx3fPitwf8zmYvDcnxaib78PAEYigeQLwDRdhc2i/V9+pbgp0XmusJyT2l1CT9/EklzHkGN", "WnBV7Zea5McUsIK8y1IW033s+I9JAKRr9hSUB/F0Bm6C+FkRSPo/SQGAfuqAkpHAqtI/nSwBU55EuFpbN716jM/h6PDfuHYK6IP4", "3oyA+B5oQgD68wIgRwSS5GeA0j/2AgIRCNKTIFfrXRcdH/wvyhR8HsRjBi7pr74/AYjyJPT4pIk86fr3JwAmIRN4EoOr9TQ9Lvhp", "lCmeyYMezHABV4kfg5sQgbgcJFMTGsABrqr5JATAkgpsKxICeNL0uJqeo8d/1AIgv7hgJup/D1cn4Pr0KwBZLyBVDch7Atkn0W/p", "XxEAywBL9iHGR/S9G7Yc7UM4Kvw3rpuJut/D9ybE5I9FICJ/cruGB5B97pIUgYwHEJf+ZkIEzGzah1gf0bs+PLL4fyozUb6Hy4QU", "+V0q5E8KQfTlZ72A3JMnUkR6Ia/kj7/8ChvYh/ARfb9uGWbIaXuHzHSV77nKBIcK+ZMikPQE4vKP9COAKvnPd3wkXfJnyW8J2EG+", "zxI+wu+ODv9RCYC8fMEiHO8ruGoFiBW8hAi4SfJXtQOUQLvw6QbtDrq8tDs8c9A1hrRg0ALSikExVf83pSICVjI3wqchYImLbX5a", "T9lw/9E8hEHjv3ntIlz3K/iehe+myR8R3/crYpCuAoT4/aCrC7qREL9KCxAkwwjwixRTVYCY9AkhSAmABYbpYlmf1jsuGhn8L8oi", "XL6CgxWTPusB1PYESkAX0I0fpuA5EOAOU/AcwvdP7ZI/Tf5g28bF4tN6mo4IflpkkQNfccByFFICQKX0j/L4EQTlXskL8fvQrUK3", "Bs8AMWgRpcUIvwETWgWKcdlHpvSXCuxIAOwgd234NN2Dxz8oAZAdZ9qMnng3jr8wQBySPrntJUTAj38fxGM9+GvoLWzQj297c1A3", "9Y3pY6gvXwDGPEwuxJSxsQBE5E+X/ult21jJob036NQfO4N9EP3ez4Kv2oxrvBvPXYjvgZclf9ILSFUFDqL+elTXcFg26GM3DQ7/", "xXeOYZRegMg8xLgQwxhbw/VPJ9OK8pUc6LlBH/jU8ODfITYWd+OyMPjqSfi89CcC4ftnDR4b9OM6yPcvYzC5AAjev8HYAckfbduA", "xUpcbtCpOiz4OVNsv4e7XWVhGXBC0leJQLUXcNCF9T6sMZUNf/P64PA/faKM8YQLLJhnwIUmjO2v9LfD37ZAIfj/lUYjN/DjgfEP", "KAAh+Ttx/DkBcp84r+0F7MD3l2Id2aSXvlQeDOia1199agG3YTaGsQRTptYu/Y3wSYS5bWzk0N62oYqALPiqzdjGTnx3Tkz8WADy", "hMAH9QL8bt8m/e6SoeG/bGkBqy7AL+bU6pI/Lv2TAgCGtZGDPW1DFYGQ/J04zAm+ehJFHmkhqBB/By5LGcUmvVSH+P6lwGFmY7EE", "g6mZun+iKCQpAGCzEZe2IYvAmWLrbjrLMMcByiHpk+TPioAHOzxl6Ql72fQXOjT8/yFS2D+R2aawxISpOa5/0gOgEOWwUZpoG0gE", "BhaArjkrcPyFOCHJnRwBiDwBT1/F03Yu/7dVWlXJHZoJIjzyV/MxpQNTpqRL/hTxIy8AbGOltm68ZkjXvalzBZ67MCC9ywAi8Cq+", "184ji1ep1qzpHtt9CMLly+djmB0Y5pQByB/kprVS72wbGv4XZAUOC1Pkry0Cr+LSzscYmff/TeZj0YHFlAHIH+Ur9XQdEn5/sqxw", "EiV/VgCS3oALr3pK+/S9rGK4R9iJyLaJzDeFDgumJEv9KgEIPQFbWGns7B9/vwIgL1+wiLJ3X6XkD8mfFINAAEr4/i0Yh+8daok/", "kMnqUwv4o67DMG7HkmJM9pj00e9wu2Bee6xtAkGd37kvRf4k8StVgRKeewtu371DLfEHvKfAI7gO07odwyymSB9tJ0XAsq891jYB", "eVEW4XBf8KVTWwAcSvjcQj33DrXEH/CeVkuBXq7D4HZsijUFoJKuPeY2gRZZVIb7ygTELytEQpDxAkquckv3Xu69dIgl/kC2WqTQ", "MpHrLOF2SygmyR8RvyBhAgpwbX9tAjUFQH5xwUw873EctQLiJ8ifrgr04DBPr3zuuRFBXOvGH5o2DZs1WEZjxvVP5AbY4mKa5x9t", "74DcuG4mvvM4vmsFxHeo4QX0gD9Pv33T8cV/1Z3TwFiDYTbml/529NvFsM8/2t4B+anMxOdxylgp4ieFIEg9uMzTq/X44n9QpmGx", "BovGlABEKfpdwMXg/KPuHXiHzHR8Hi+BlSV/UgTKSo9vMO9veo4v/qcbZZrhs6YgNCbJnxWBIri2wfm1egdyBUC6Zk/BZztlfwKO", "H/o9WQ/AB0efx+VivfK5nSOKtobJQ9MmY/EYtpwRCECG/IVwu2Dsw+CswY4TkBvXTkG97XjuhCrie0647YHvPg96sX77pkHhl888", "2oRtTUelBZEm8BuDvxg9qO5GtBvH3ab/fMnuQZ3vqjsngzyGYZ2BGVYHKsRPCsE+xDxrsOME5EWZgsd2ykxIkb7aC3ieEhfrJ3Vw", "+HdIEwWmhxPCmhAC/EoPwm6Ebsps06k6OPxfk8kUeQyLM2qU/pEI7MPkrEGPE2iUKa7F9rIyoRQSPikCZY2F4Pmyx8Uz9w0OP38m", "TbhMB1oQmtAQv9CDshvoxmIbvx4c/i0TZHLB5LECnGEnS/3EdjHY3me5nJU3TiBfAH4xeyuOzqAckr6c9QB8cPy1HPDm66d+fGRQ", "4EfI5KtnNjDOXIVtXJQo9SPiJ3J5Ut+76dxBnfPGzq14zoyY/Cnix2ktbx6Zr51L+sUvN3c2A5fjG5eg3tmoJ/HAoNRciCiZipjP", "YviPAo/oHW27+j1/29IGxjSswrQuSrv/dqU6YNpg2k/qXW2Dw/9T2YrDjKCIo1oAAvKvpZf5+intH/9PpBmDy4FL8DkbH4m7BpNW", "6fxWDJ4FHsXnEf2A9o//q9JAPauwuKgG+aPtJ/X9Oij8XotsdWBGRP5ShvxhO8Dags38qd394+ed0owf4PfgbE+RaHhEchxANNzB", "FNQkxG/wCL/tH/+OFmkoO6yy4aJCRgSKCRGw4Umzuxp/lQDIy7Pn4ugayomSPyUECo7/PAfcD77V5I8sEAHrKWzjjMAHMjICEP2f", "zBto2LDcvG4urrMmIL9Dyv2veAPPc/DIB/sjv3x+3URMbcf3r8Fzi6nBQsnRgVA96q/SrVfCMFbgSYd+6cN7a16rbWkDYxueCjyB", "JPmTuQ2WPW+gYcPyM5lLmTUp4leLwPP08sH+yC87ZCI27fhcg0Mx00uQz4BkX39QmpcwWIFDh07V2vgDEXgKO/QEqskfVYjnDThs", "uEXmlmFNiQrxS6Q9gJLyfNHmg/2Sv0UmIrR7cI2jFKOegugRJEcDRmPfkqP9Qre+ZMIKlA66a+Pf0SINJYenisIZGfc/FoJi8Ajm", "ZYcNpwRAtsyyeHvhJcp+a4r0aSHoweGst8rtr2Xy0LTJ2GzHNhqriR+KQcHo4rXyqbUmEMnSLRZvHngJz2mtFoDYG+gB/6z+3H65", "ae31qHbgOWMqopEcK6CAnxkKFo36y/TrB+R9E5F2vfOie2pe86o7J4OxHdNqTJE+tW13MWbcqbUmEMkWsRjLSzi0poifFoAe+jir", "P7dfXpDrUTpwGFPVZjAYAaiu07+J0K6na238X5PJ1LEdm8YqAagIQRcHObXmBCIRy23hpbLSWtJAACLyJ7yBnpLHWf26/e+Q632l", "o6SMSbYdRN2EyVGBEfzIAYq6+ex0Sf6mIbTzu9r4t0yQyUWT7UWhMeH6Uwy3w99dVjenJicQGamztNR9IjWxJ9vP72opbPD7gyI/", "gF753E4c5uFqKXPPySHKrbTUfaLmSY4c+mRlYk9uKoUNfrn45YYNRblx3YN47t04vWMo90K5jyBPpiNQCvPUdna/8Findwyee7fc", "uO5BuWFDMRf/t2/aCf48fK/UzyClVg69WRv/eD6RmtiT7N+PWvtd5tUiv7wiRXlRHsTlbnoZwxHgcI10KJNq7XcE6GUMLnfLi/Kg", "vCL5+D+pO3GZF95j9diEQHhaGc8na+Jv4ROe0pod3edUtku+wbya5H+PFJksD5Z97j6kjDmk8KbCm36QH4zycDuVNL1PdMyhII0p", "+9zNZHmQ9+Tjn7lPd/oG81ylFDfRZHB4SistafyxByAvzh6FzSuU/cag1M9Jrv85/ei//o+aD/APwOQ7f/1ZLOPLYYmfl3pweHc2", "noDc+MNRaO8reOVGPAfcbOnvgOt8Th++ORe/3LLhRFy3E7c8DbcMbjnrOYDvevjeM6i3FdWdqAT1O9FmRCYj5rkY5jkYlpmpv4NV", "iNJzWFab3n7B67n3ccUdn8Wyv5wo9aPuwHC70IPUvzsbT0BelFF4vEKZxqCyS6X0r3gAn9P/W/Px/0ROxKSTEtMoERadpL0HFw+P", "Z1C24rMTiOq3zRhMRjgXk3OwMDOue1iUAUWew6NNP6D5+P+3fBabL6eOTW4X6MHk3VXxBBpllGvySgkak6V/vB00/H3unNfz8dMU", "4O9TpvUq9Cn0kWg/CITE8+AZ12erJ+yUEL9Cs6lMtgzONeEcG8zYjReoA+oE6gXqJMDP7nz8z5won7WFL0elfjHjBRShx/J4dxRP", "wIqPrDMWUPYaUxN60qXnqxiH780F/4dkxuF78UZfh6dTYgxmCkcjdeYCIPMiywvi+fzxbL5UCfoqbl8ufrlhQ5G6kPxOiYoAlEMh", "cfbgucsoy8P66Bf29Xf7cskXJ1BwrsC0bsW0J2FFowtjn3ka0Ck3bJipd19QqjqB23cvhnEdYkyJhw+rEZxDfDC8RqRcjV9ZgEdj", "1Vj+iifwKvXk439FijH5+wi/fCoi4LAHl2X08rBeq/3jv08mUM8VONyKzaSqagNMo0invCIz9d1ajb+ee+njOgymxPduprA0YlCN", "32SRB43RRJ54aG+lFH21e28+ft4T4O9Vph1RiASgtyIke0qwTPt4+LyD/eN/YqxMkDquKCq3FpVJjoAnlXlVCtPqTTp5j8zkl9X4", "u/dy7+QTuc6EKaampw97Cp7QaFkV/JUqgOd/NHdWX8WNbh/pQT7DYXrpS2U8bc9x/xPJ/2j1gd5Hq+bzpyf4tNcc5FP0HqiQvwRu", "Hzh9UO7zcHs7cHpP1lW33DMQ+QH00S/s01W33IPTezJubwflPg+nLzxndP7yNIreA7nHf3dJGd9rT997Bpd6Ofj5aGraWnZcv0t7", "zUE+R3ggRf4+oBfoxeMIHRziZP243jMQ+QH0Wt2nH9d7OMTJHKGDXjx6E+cNxGUaR8jHf6mWcWnPnZxUqXxX4feFK2OomoQdf0bt", "NQf59PJAX0j+KB0OknfIp8OBk/92j94zEPkBzjuo+/52j97jwMmHfDoOK97hxDlDcZlGbz7+S1XLntKempeQweRRwS+qinT9XTMu", "Oyn7QtmHUsb1L/k7+Oi/njXcwztHygQRvvPX2ykaU1PufzHeViwma+sPd0HYVed6O/Ecqbj/cekNnrODh248K294r9zUeQ2edz9O", "RNAwd8oHcErz9bu3bhwSlsuWzcEursIujMMuglUHdhHsOjDNRXpn24qqYwThyru2Y9pTw9Z/MAuJaoCtWObkqItRfiLNKDspIbHb", "nkwOO7iK3PcvL8j1YZ2fmKi9QIkDHGG+LtCh4X9A5tDAKoqMo57AH64Pk80iPU2r8SPCt9mOzdSE65+sTijC5LiLsVlOcoRfRy57", "nyby4P92nP06Z+UO732HXF/2uTskPAkRONAL88/bMzT8T0ySOfWwqkEY1yDQIDAqTAVhETur8SMiz57I9qIwtUhQfShKIge1TSbz", "W90VegBycdw/G09iTpSYvr/0j4X8AIoqvr80HZxEkyWBgFycOOBi1Jf8YB5+gD+P/F/4wXiUjkAswuSUA/J7R6YPlfwA+t1bN+Id", "mR4ISjldvVA65As/GF91jBLgr8YRbQtKBb/JxXiJ/vmsJ+CS+/5lh0xE6Qiax8MUlNAHOMz0oZIfQBfoRg4znRIHqqoWPh3yM6nG", "jyouS3MDkwSYBDOFvy07jz9OwSe0NJf8LTLRVzr6COv8YQl9RDlwyGX6UMkPcN4e3XjIZfoR5UDcthC2L/jQwUnV+FFVT1laEw8I", "foDfCJ/Y3Mq8fU3P5fb0INaRTUMFctzNOrIJTw+m56UnMCpz431V51bm7WfI4vsHcfvy8XvajueMr3gKZXDLHk5pvq5a8tJwQdFV", "S17CKc3HLXt4ZSpeijMeT9tzD3L7NoXTkXNETQPMkfnMzSV+NKV3FPn4bdpxGBN7CgE5PY4wXxfq8OFfqC9xhPmU8DKNi+NR8vGP", "YlM4Hbm6CuCHmEPzlLYYdqas8ODgCXtr4BfaS8qYUkjI3kAAvF6Y/3f7hw//3+3Xl3phfq/i9SYaF0vKeLx8/CfsZZMXdCpUohNp", "4vVKgN+Q/zx/HD6zqghSKTXXc9m/v1dE/lZExuU+B5EzRWSmiNSHvxtFZFqY/lpE3icidTWOnSoiM0TErPH3FhE5T0RODH+PD39/", "oMb+k0TkPC7798l4rM/FFDyFWfKf548L4vbrrNwAnsH2+ry6v9zc2Yx616XGCrgO+OXlw1HyZ02/e+tG/PLyitiE11TvunC0YWb/", "JeUwFkEeJlCdJYtXj5MdErx/JVtPjhiwPq/uLz+R5nCQT7q6UGL5cJT8VXgW6EZKLM9UTcDnOvmJVOO/VMvB+09gSWObJTtkHCfL", "OF85N6t9CRFYnzul953S7ME10RiBKPX5LB+Okj9r5+3RjX0+y5PXKgf3eB3vrMb/F6plH9ZnsFSSzyxOlnEGrjEriNuv6RcfkeWI", "uxYK/wYf+z8w8enshUSKc+H0x+EvfwDmVSIyEd72c/hvPwjTepj9BEzeKdL0IxGZXDlWToeWJ2DqeuDv86FPfAqu+D/w9vXB77ct", "hWlr4X0/Emm4NH0vUg8nPA9XPApvexL8NenIxCE2VfDVDhYsqZ8Vx+1PESUuLdfUeCeX47nFzEjBPbjO8n7f5FDMdZaHPQrJ7sUi", "cHnu/qprciITRds2Wj+LArNScfuzJSXk4ze4HIdiZoTgHkqMHP4Sy3HYk7lmMRxqnGdr+olNaFNgFn3MUrCzobsiCri18Ptc7ijF", "5PDgEuzBGEH8BstLsCczOakYDjWuMhfW1MKlYNPHLAOVUzLEiPfAp4TUrYXxj8Nl4+Cvm0TkvPRlTlgO33sbHOwF7zHg3TDLhY+f", "AL9zYacbdEL883h4eCacuF1EJoUH18NfOXDVKILmnRwzi3DfODBHBb9/fze81gc/eBuM/p9pz2L8/wv/eAK8wwD9Cr2FDfiU4qjE", "fvjxRx+Cyimof0olXl/4h5gkWuKwbMi9Ld+4JDXIJiDjMv3ukkP9vMIhmX53ySE8d1l1RCLjktwDDssGVEupuQcpjP4pwCmpkXlR", "Cr6WEh75+OGSzJRgcFmmi3Tk8C/SQ7gsq5qODPn4PYL3XwsfnAKckiFGMoBnydTa+JNTgkMBWDZzz8jhn7lHD5VgWTYmATXwm8oG", "DZr0K7gSggCcYgDNlQ8+sWfwwXQFYbxe+xx8fj988QSY9KXoAiLyf8H0E2GrC72rVXVP5fK/Bf7ty/Cv74cfnA8LN8OP++CeE+Ht", "tx/rQ1DVV+DQw7C6BDeMhxPaw3tphvpPwX+rh2++Dgf+Obh37crFFrTpNIcpSfoKSdCuvDBe8plHm1Dv7DQJXY+yPHysuAZtZXk4", "HFBEYoTf2fKZR5uyuwb3rl0x8ZMYA2vGozn71Sf63LvywnjJDmnC5+xUSDAXj15GHn8vD+PiZYYWny07pBp/cO9dudgU8Gj2heZq", "3YurAl25Ybz+TJo8ODvqaguJ6GnfXPh52wEsOLfbgbP6sGv/fvK5vetCVdYBirEKzge83pcKUJsUgDFqoqi/D3megW+HUd4jI", "OcEBb78LbjsBbjsAe/8p534PqupuVX0B9l0E9xwJQpxx7tAew+uLYfnv4ep6GLUwIP+k++B/vA2u3w/7P6nReGef7ipcEdYAe1Nq", "Zl4yam8QwLPabGt6MKvPT5bEzwymn3+opo9+YR++90x6cpEn2Nb03AN8v7s6EnH8LJqAptxQtUGej7/AdHwk08T8zGD6+Ydqeq3u", "w+OZTB+/UCAfP+H7hzS2YLsJaKoqGyq75uN3mR7N6kv0rz8zmH7+odp5B3WfB8+krq1IOM04z7rzsIX4mgyQptT/ph6WJh7Aa5+D", "z+2D5RPg7V8SkQ/CaZPhaQf6vquaPzQxMlXthZIbjMskdzzzYE1VD8GbN8HiA3D3eBjTCY0zYJwB//68qvOjxN7dVS8+xilNoE0B", "IWLQyRIy/wNQaaluL/C2DgXTUZl6W6vr9dJSY+8w8nCS/GGONoUiUP1sEgVA9fVpyalbH0f8bM25fj7+uADIpOA8TSoZASBZ/tXA", "Dy3ZAZOuf/zwuz5bs4M1IR+/HwlA1gkGVGgyIPkBRASIU/wAVPWXsO8Z2KfQfAqM+Sq0T4T/fhD2LhnopkXkL6DRghcA8xfHAjxp", "qr3/G374W3inCe//c1hxAizcD6+lJ7to4gOAtBcATag2RTvmiED+ByDSVHGlY9f6+E2QUt2ZuXZwT/nWnU9+CLGnPcBkXlsAmlL+", "ZEDC44ffZ2fV9ZV8/BGGfIxNaLUARKZS6/2Hx2il7cCT44ffE3ZmV9yLV5rOWBJDFU4NBKCx8mfSTyDlAUDYFrAPvnACvGMy/NyB", "8nf6Kf3PFJErRd7WAU0/gm9OgM/thz13Hh3kWvb6x+Hj+6GzAZ4rw4F/UdXfpvdJYNCqjUZi/Kljgkyy+CPzG6m40cH+0cSe42Eq", "u2Iyx9UXPwcHCQya99ca+GOrRYAokk+SNccPP+yqYqzUxFGrFAdo1Bz88alrC2BjlkxyHPEL7Mohcy5+9StVgKq/BSXy4E1VXxFp", "fBoa2uDLo+ET++H1GqX/mUD7VWBeBS3FwNG4Zj/8+juqzv93NNetbaOnwTQL1gPnFMA8f3jO+yf7k/3XMAvoAd5NvD5d8s959crX", "boMvnQM3nQjeetVakUq6gAeOgKHg7QX7l9DzT6r6VGKn0JEzCeJY1TKN9q3cmch4ePs/waKxcKYD/0tgVotI/d+r9v5LLgap2ugJ", "83enrxf+vWa92uiphPEK9xetGowxYibaTLykehxNoyd33xiD5P21Bv7Y8vFreJwkUtSbcnysOXPtyj1VW622EYCe8PAU/vjURo1j", "hR7RNHw9jvgVmpPXDj/BXPxi0JJ8TKm/QY8B7I5+Vdani1PeA/h9MN2hBOhrtW/zTWDvLaqvTVDdO1l196wM+QF+A78G3glM+suq", "GxSRYBbLrwHjN+m/nvg/4fa3wS37wf84fOEALH8bjL5LRBoSKFtSH0pMWgB2I7I7Bh2ROdqvJgF0dxzGK4rkkxjgNOImMjlz7eCe", "8q0lfq/VGHcDu1OL0yXz2gTYnbOE9/HDbzC56vpCPv4IQz7G3Qi7q8gU7VKrYVHDYySxfp8eP/ymMjlaMS/+nDUffxJDjmjsNjDY", "Vf2XeI/+1HPIpqqvwS4DpgL+BdXDga3z4DQTXlA49OMYiMhp8PYPwXtt+HGXqvttKN0H3+qFfxwLJ/z3yjmkpWr1xcqHswtlVw3y", "Qy0BEO2uWr5bzHOH+DgGb2Kem7629NNeEREgRwSUXUR11+yzCZ5PLQHorlq5V4batXsUJpybc/18uGJfdwAAFy9JREFU/EaiAKhm", "+S5RdlX9WWJdqdmzklyn1AQs4/jhDwOHpEIoUqOtwyD0ACTnFSu7DJB0CRAHqKT2BzC89gRsceD/OQFOfFxEzhGRk0Ssf4ATHoE7", "xsNt++H336wcMulfggbFT+2ttPrv/yKsOABX1sOoj4nISeETaKnCFWFFAg9AEl9FcpVew8jH77jbgui9qWW6zpFLvjhhmJ9Nlckl", "X5wQRA0KrxuIj+K423IPMIyWFKZgI3oeuzFDDyC/hMzHX2YbBppZq+8cuU9GHv99MgGTc1LXNlDK5OOHllxsApjshowHkCAKtfBb", "bAuj98YLdppwzhNjRx7/E2NlggnnpK4tKFZt/HnYQny7gypAkhzJvZFW+cb0MSML6bWF8Nm98IEG+PoM+EgnnLrsHHpsI//gG", "HLpLVX8NIDL672HOSdDlwOsbVfXnAKraB4duhlsOwr3j4e3/K7h3ac3FFpBhd+w6xs8gLFUJ8V98ZxV+/edLdgehu1Pr85kU9IqR", "fVZAQa/AsMzUtcV8Nm8tgeDepTUgvJHGCCAh/rQrXcmhVb4h1fin6m4Mns0sz2VSz8jjr+cKLMzUwqAGz+atJRDee2sutiDtNjQt", "AEmnwoTWp0+sxs+vdbcJzyYDeNpgSt3I45c6rrDBjJYGC0Xg2by1BJ4+UcaY0Jp2lBJYld0Goi9XHowQL8kd/F8xWKU3ZYfg5wW4", "6fdQyuv++z1stmH5AWDgCDCqb8DrH4Br1sM1B+CAQosFGx24aBc8dYXq3jsqR9R9DH7iw6f3w57PpM/W9y/B2IA798L+6UjpwxgU", "AywRLkk8CX0ZMV6OPYCI+BWiFBmlWfyBGf6j1RF8rVvlsqWjB8J8rCaXLR0dhAqzMouD+o/mHhCsMFyskD6L0XgZeLnqy6gwoRiu", "0ptnj+Ysy3Wr3C8jh/9+GY3FrfEiIFGCfPwmF8TLjOfhg5eBl2OCCFktLHpSG392Tb4i3Lpl0sjh3zJJRhfh1mgB0Oja1MDvCRdI", "EAangksqYgC8bGD5mzHESREjehqGAMa85EmDVv83T4Jfnqr6+zvImKr+An7/LvjNe1V19WCAqeprqnvaoLsJHj8PVl8EXa2qr7eo", "OpmplfvmwM/OgH0nZ3sgVFVh3xnw9FngNFNntsU4UiWAgCEOlr8Z6d2MGE46Nn+UGyAyj3x7BNMqZeLvT8KyFw8G8zGZZS/GtCel", "r2mVgEdy9w+WF6e6vUAIMPdupsxmBCf97kl+Jfn4fR7BppRZiGMSRUYOf5HF2EzKXLOEXwM/zMtpK4hyhzKbqWOzgJMkRlIQrFr4", "DR6xhVImDv8k/BHE77O4CJOSC4DYQgkjH78F82rhEnCoY7Oh73r8AAabU6RPJpMLZfWpheSJVfWgas1GJ1R1v6rW6papaapaVtUX", "VfXpWt2L4T6/Vs1Eda383VHV3/DdvzwSrC2fgyl4Epv1XY8f0OWXHkBkc4Ycye0L5bKlharr3NG2CzHvTcXet2wwCovlsmVzjhb7", "QCaXLZuDUVhcCesVXlPMe/NWD5LLlhYQ48IamEBksy6/9IBO1eD9Z8kf/Ta5UFZLNf4P6C4MVmQi7kKRxfKADD/+B2QORRanrmUD", "BvfmrR4kq6UQvH+qhS34vVmn6gF+pQcMYWvG9Q8/fTDgwv+Qavz8VneZsCJeeCNMdQaLn5g0/PifmCRz6gwWJ69VCO7x3rzVg/5D", "pGCEE28SWCrJYDO/0gOBxgvfryJI3MwoY3EbZg83oBE3t2E2poxNYUliFCorpIh8P13qG2DE+Visunz8pnRg2m8kQm6DVTCxi6tk", "/tJThwuKzF96KnZxFVbBxCxUxMa038CUjtyDrLrZGMbYFJaUNyAV/AbfryomKg1sYzlMPn6HDmzezITuNmlglayU4cO/Uk4N4wKa", "0RI3oQC8gZCP/zCzMRibwJFNMX5T6IxhS5owJozdP7EGfqWjKLwZhe6uF6gXzHpY9cMThg//D0+QU+thVb1g1ofXCkXgDcx8/Psn", "MtuEsSlBS3gDpgb4w6qAPkawJltl7+gIU8Awlkiib+wP3QQRDGNJ5f4zb9VAQR9LHPAYYmg+WYwAv1CFX7/4oTcQ2kPiB8kugF0Y", "h9mwbTg8Abls2RzMhm1BUNDEdcwCCO36xQ+9UXWMEOCvxhFtK0IFv8djmOH7zxMCi9z3r1N1L0J7Km5/HVBkHKPYNhyegDwgcxjF", "NoqMC88dr3OFQbu+T6vxI4LFkhrEBxPFS+HvjMJnpzs2YgosQXK+/27dawjtUdz+KHZ/gzButMW24fAEnpgkc0ZbbGsQxoXrAgQp", "gNLOb6rxIyKmsKQmHlCMAL8BoK0/3IUh26uJH/+eyiN/NX+oYI6bPfJX8zFlak08hmyPIgJD5M4b29NEiRrYDBBzKpcvz8Wvd7at", "wLC/FZPfKoZRe4vjKNStkytuX3YsDYNy2dLRcsXtyyjUrcMuhhGBi8QiYNjfyosIDMDly+cj5lQMg7CXICts25PVhtCd3179tRCJ", "5lS+ST7+0/UebL4Vkz+K2lvHOEaxTr4uy46lYVDul9HydVnGKNZRl4gIHImAzbfyIgID8E3mYzC1HzzbU9WGXfobU3ghS5REF9/U", "bRPz8fM7vacgfCskfiQAjBLGjYJ1WybKsmNpGNwySUZvmSjLRsG6UWFE4OQ1CsK3ciMCA9smMt+EqXFXYUYIDGF7VG0w4qNM4zsx", "UZLJip6EdGTbAv4QTVafWsCUjsR95yTjO9UHmt9JkcRICoEBhtmR1xYAQMlcEKzYE5LfqgvCdhfqTKz6duz6X8n8268fzDgBueSL", "E2T+7ddj1/8Kq76dQp2JXVcJB24Vg9WBSuaC3OMvW1rAMDvS9571Aswc/HwntwoQJYuOvLYAABpYQJHnYoJWQnebNNDOaH4l35Dr", "BzNOQO6TCfINuZ7R/IoG2qnHTJE/EIDnaCAf/2opYNGRQ/pkG0AVfkN5KIYqSdjxZ9SxOq8tAKCeBXXCcxFBE6G7zdEG7Tb86keT", "5PrBjBN4YqxM+NEkud6GX402aB8lmKMS54xXB6rPx79apGAKHVEXZR4mkwr+Py0NFh33p6XB/rQ02H/BpcHSqwP/8oIFlLyVVcR3", "/BCFX6KsM/XK557LfQhvsclD06ZRkC0UjCIFSa4KnFgcxFyo79mQu6qK3LxuIW55RWJBkIwIuCXUm6nfvikXv9ywoUjRewDf+YfK", "wiLh8akQXn5iGi8k+uVJjy1Ikjdw+ymZC3KXBAPkqjunIeYWTKuYuzqwZYNhL9S7LsrH/4IswGFlLvmD7RIuM/Vqzcf/ihQ5wgM4", "/ENV9N7s6sCVsGPpVvrk4KJsD4PNt2hgQe6SYIA8KNOw2EKBYhXxK6sEX6On68q845ksC0rKyiryE5O45BjM/JuefPy8R4r08kBZ", "+YdE6G6SMfziQCKagZ8ooVNjCxIiUBC+RT0L8pYEA3i6UabZPlsKQjG7MnBi+xp2VvD/aXnw5Dn+tDz4n5YH/y+2PHhKAADk5dlz", "cXRNDvHDXMHxn+eA+0H91I+P1HwIx9Hkq2c2MM56Cts4I3hyCdKnhEDm6Smbvt/vuW5eNxfXWVMtAIncd5/n4JEPaueSmvjl8+sm", "Ymo7vn8NnltMl/6JSD6Q6Z83kgJQwjBW4EmHfunDNaZdg7QtbWBsw1MY1hmZgUlZD2Ce3vHh/vH/TOZSZk2K9GkBAIfn6eWD+imt", "jX+HTMSmPVw7oJhaqG4gAYhEwKaEwQocOnRqrWnnIF+VBup5CpszUoOECpntAvP0fdovflpkbhnWRB5AOe0BRCLwfNHmg1O7a+On", "RSYitHtwjaMUHdLr82nGA5Bku4PEI/1KJqxA6aC7Nv4dLdJQcniqKJyRGZhU8SKCRzCP7jT+KgEAkF/M3oqjM9LEj8kfpbUc8Oa/", "1SIQkN9chW1chB0S3paMABhgy5P63k2DmrElN3ZuxXNmpOrvngO+m/jtruXNI/P7EwGAcNGOy/GNS1Dv7CCYqNaoAgjBJCPz2XB4", "7yN5g3xS529b2sCYhlWY1kVxu4GRGikYCcCTelfb4PD/VLbiMKMG+aMSfS29zO9PBIBgAZEgbv8l+JxNtASdn9mx0kinGDwLPIrP", "I3mDfFLnD8i/CouLMiMEsyLwpL5fB4Xfa5GtDsxIlPox+RP1+bUFm/n9igDAO6U5jNt/iQdnR8FE8/QvmthjEuI3eCRvkE/SdrRI", "Q9lhlQ0XJUcIRsSPvAEbnjS7q/HnC0DX7Cn4bKfsT4jr/05GBFwfHH0el4vfquqAPDRtMhaPYcsZWBnyRyV/IAD7MDhLWze9Oqjz", "3rh2Cuptx3MnJEr9jBB4gSeAXtxfdSB13s882hREFJaWIIZfFMbL6AliDGg3jrstb2JP7vmuunMyyGNByW+miW8kyW/tQ8yz9K6L", "Bof/RZmCx3bKTKhB/ih/nhIX91cdSJ13hzRRYDpKC0oTldBiPeGkpG7KbMub2JN7vq/JZIo8hhWW/OlqQ1IE9mFylp6mg8JPo0xx", "LbaXlQmlDPGjbSfYfr7scXG/1YGk/Zk0hdF7WxCa4jBeQk84n78bi215E3vybMsEmVwweawAZ9gZ8hcS5C8I+yyXs+ipxp8rAADy", "iwtm4nmP46hVRX5HIwEA1+/BYd7xbhiUh6ZNw2YNltGILQQCINUiYIuLaZ6v792w5ajOf+O6mfjO4/iulXH/K3X6IO8Bf16thsGR", "MrnqzmlgrMEwG+PJQdXEB8NyMezz9a4Pbzmq8/9UZuLzOGWsFOmzdXqXHlzm1WoYHCkLG/zWYNGY02aQbER0MThf369bjuoC75CZ", "js/jJbAyK/HEebggSI9vMK9mw+AI2dONMs3wWVMQGqOJQYVEnqgGuLbB+fwuH39NAQCQly9YRNm7r0L4pAeQyF0t4fu3YBy+Vy99", "KX8N9WEyWX1qAX/UdRjG7VhSDCpMBnEekT8ShIJ5rZ6y4f5jutbNaxfhOvelPYCoQS+57ZXw3Ftw++7NW0dwOE0uW1rAqrsO07od", "wyymiF+ZlVgRAsu+Vu+46NjwvyiLcLivRumfXBWohM8t1HNv3jqCw2myWgr0ch0Gt2NTzJmRmPUArtXT9Jjw0yKLynBf1gOIyB/l", "rlJylVu693LvpXnrCA6jrRYptEzkOku43RKKyVmBWfKHHSDX0l0bf78CACBdc1bg+AtTpI8EISB/mHzw9FU8befyf1s13MuJCyLh", "CL8OTJmCZVQGKVkZDyAWA2Oltm68ZkjXvalzBZ67sEbpH/xfpYX/VXyvnUcWr8pbTnxI9yEIly+fHwzyMack4hAkSv+sF2Ct1Dvb", "hob/BVmBw8IU8bMCEDXwubyKSzsfY2Te/zeZj0UHFlMysQiqBSDIV+rpOiT8/mRZ4SgL49I/Q/6odT/MX/WU9ul7WZW7nPhQTES2", "TWS+KXRYMCWKB5Akf9R1mPAGVho7+8c/sADsONNm9MROHH9OxvWvkN8Lt73ot+7A95diHdk0VI9AVp9awG2YHY7tnxqP7rMETKNa", "ACpCsJFDe9t06o+dIV1/wVdtxjZ24rtzBiB/mHxQL8Dv9m0aqkcQlvgB/uTw3nQwkjwR2MjBnjZ94FNDw79DbCw6cZgzAPmTrfw7", "cFnKKDYN1SOQ1VLgMLOxWJIa3msl8nwR2IhLm07VIeHnTLF1N51lmBOtAZgp/eM8sVTXDk9ZesJeNuWuLHwU9h8ihf0TmW0KS0yY", "GnUTRj0FVp4AAAXYKE208eP+8Q8oABCLwN04/sK4tE+W/BH5IwHw498H8VgP/hp6CxuCtfoGNvnG9DFBIBJjHiYXYsrYeCx/cnhv", "RHwrs20bKzm094ahkj++nwVftRnXeDeeuzAtADlJIxHwwfcPhkt0r+GwbMhbZzD3ehffOSYM5jEPMS5Mz+rLkj8zbiDIV3Kg54ah", "kj++n0AE7sZlYVWffnI7m3zC988aPDbkrTOYe71vyJgwEMm8cErv2OQ41vQ43cx2IAArcblhyOSP7Eyx/R7udhOeQGJNwBT540cR", "CMFBH9a7sMZUNuSuM5hjT58oYzzhAgvmGcGU3rHReP6I/EkRSHoDheD/VxqN3DAQ+WGQAhDv/PIFi3C8r+Cq1U/pXxGAaNmUYBmT", "EmhXsFKLdgerDkUxBaQFoQWkBYMWkNYgkktI+tQ8zYQIVHkB4mKbnz7WOv+A+G9euwjX/Qq+Z1WX/n6F/FX9/T6ohvj9boIAjt1x", "IM8gdHeQDCPAL1KsCk5SmZxEtSdggWG6WNanj7XOPyD+F2URLl/BwRoE+dOj/nxKBLHiu/HDVAlkGbx3g+g5tMaRfOIZqlQLQFYE", "bFwsPn3Mdf6BrEUWOfAVB6wq8lPp54/y+BEEff4lL8TvQ7cK3dHCI2LQIkqLEX4DJrQKFDPTkuPx/LEAUOUBuDZ8ur86f9aOSgAg", "7B1Q/3u4OqGq9E8mXyvo43WXtdIBmr2sJJNUxkfGTyFR8ldNVjLAkn2I8ZGjbe0/WpMb181E3e/hexOqS3+/IgTxtpIa+lu1UGd0", "YknkyYFBkpjMk5jVV+0B7EOsjxxta/9R4/+pzET5Hi4TUuR3SS9WF20r6aFvee8+PnkiVSbuVAuAQWamC2CxD+EjR93af7T2Dpnp", "Kt9zlQkDlP6Vz5/qR0Ail0SehG6QHiLcnxdgCfss4SO1Wvtr2VELAITjBJQH8XRGvwIQewCkRSCJPj5plCfJn8lrCYApTyJcPdh+", "/qGa3Lh2CuiD+N6MGq5/wgNIjPrTcPSL1vgEYhGISv5E6Z8OUpKtCjwJcvVg+/mHjP9FmYLPg3jMqPIAqkv+ypefHP9a8/1TIb6R", "SXmeQCAET2Jw9aD7+YdqjTLFM3nQgxlZ8rsZ8icHPsYCoDXKP6mGH5d9ZLwAKiJgwpOmx9V5/fwD2TEJQHzwy7Pn4rEcT1sHLP2z", "XgDUkMCEAAzsBXRhsnig4b0jZXLzurl43nLUa61UA7IiUMMDqMWAPA8gG6ikMs+/C9NcPNDw3pEy+ZnMxWE5Pq2DEoCj8QAGIwAG", "XdgsHnB470hZi8x1heWe0uqSLvkjT6DqEWj+I6hyfhOpKrBHRHyhy1IWZ4f3Ho0NSQCAYAJRS90ncP3b8LSxuvQPt6vWJ85xgbPV", "gNgDqPICerCM2+ju+3qtiT3Hy2TpFotDb34C9W9DvcZ+S/+qVXqTJ4r/yZA/zwswezDNpTSM/lqtiT3Hy2SLWIznk/gswaMxVwCi", "dx4N/+2PAVApAquYEOc9GNzGG3y95sSe42UiFi180lWWeNBYi/x+9vPPniaTssE8MyLQYwm30c3XkxN7jun2h6u7Ul6cPYp6YxGe", "fyWenp5y/zWRQ+IJJFyA5AcQRyjOVANMeQHTeIhe//7sfP632uTGH47CKC/C96/E906vXfprBnt8hooI1PQCzBcwjIfwC/dn5/O/", "1SYvyihgET5X4nN6vu9L/tcfnySTqnxhXsDgIeD+qvn8b7U1yihMFvnClZ5yekoDdeBHkOv8SFr7TOEFQ3kIj/uj+fxDtWETgNRJ", "f/6hk7DcNjza8DkXX+1+/Z/4wCjF7r+DwVZMOnGtTv3zH/xm2G92BEw+v/4kDK8N9dtQPRf17f7JHx+ZFoEgXPlWxOjENzv1Sxf+", "ceD/iZyEQRsavn/FrtkCFh+UyCvkD96/0IlPp35A/yjw0ywnYdLmKW2+cq6CfSwCIEG48q2m0IlHJ7uGH/+ICEDqAv95/jhcYxYq", "raDN4USQFoLVVJvC3XYDuxC6EbpBdiHaheVv1nc9fmBEb3CETRavHofWzwJtxacZ/KDL09NmJMSv7MaUXUHXqNGNwS6QLqR3sy6/", "9I8b/w4ZR4FZQIifFvwa798IuwYNdgFdlMPQ3X/KMo49ZGLT6Ps0itPjQ4gcr/DYBaLBE1y4DulXpNgx24dNFXRC6eyRv7/8H", "9KVt4ln5Ht4AAAAASUVORK5CYII=" ])}; }
N'hésitez pas à critiquer (je veux la vérité ).
@++
Commentaire