Visual Password Hash

Displays a sequence of colored icons calculated from the entered password to help you detect if you've entered the password correctly.

  1. // ==UserScript==
  2. // @name Visual Password Hash
  3. // @namespace dschachtler.dssr.ch
  4. // @description Displays a sequence of colored icons calculated from the entered password to help you detect if you've entered the password correctly.
  5. // @include *
  6. // @grant GM_getValue
  7. // @grant GM_setValue
  8. // @version 2
  9. // ==/UserScript==
  10.  
  11.  
  12.  
  13. var cssinjected = false;
  14.  
  15. var displayedSymbols;
  16. var symbols;
  17. var names;
  18. var colors;
  19.  
  20. var defaultDisplayedSymbols = 3;
  21. var defaultSymbols = new Array();
  22. defaultSymbols[00] = "data:image/gif;base64,R0lGODlhIAAgAPcAAAQCBPz%2B%2FAAANwAAfkOsAB3pAAASAAAAAHo0ACOHAAA2AAB%2BAABIAAAEABUoAAAAAAkPAAAAAAAAAAAAAAAAyAIA6gAAEgAAAAAAcwEA5AAAkQAAfPwbAOjlABI6FQB3AOnNGOWrAIG6AHzcAAAAMAAAeAEAegAAAFboDwDpAAASAAAAAAQbAOjlABI6AAB3AHMUAADqAAASAAAAACQWG%2BmI5RI2AQB%2BACAAAunQAJH9AHx%2FAGAUFADq6pISEnwAAP9a3P%2BIrv82N%2F9%2Bfl3UCADp65ISEnwAAIUqIOeI6YE2kXx%2BfAAAYAAAABUAkgAAfFhI%2FwME%2FwAo%2FwAA%2F%2BAAXefwABUAkgAAfBAU%2BmcAmRUAgAAAfAABAAAAAAAAFQAAAH4AAAAAAAAAAMAAAAAADQAAmgAAgAAAfP8QaP8Alf8AFf8AAP8AAf8AAP8AAP8AAABkAQDsAAASAAAAAAAAEAAA6wAAEgAAAAAE3ADq4hUSOgAAd4YADMcAgAAAAAAAADS4SOkABBKSKAB8AJ9gAOuVAIEVAHwAAEvQB%2BPqAIESAHwAAEBBAHgAAFCSAAB8ABDoAGcGAAEVFQAAAGtdAAAAAACSAAB8AHCGAOjHABIAAAAAADRMAADqAAASAMAAAKy1APsrABKDAAB8ACAAOOkAAJEApHwAAGAAAAAAAJIAAHwAAP8AAP8AAP8AAP8AAF0AkwABAJIAAHwAAOoZk%2FQsAICDAHx8AABw%2FADq8BUSEgAAAAD0%2FwAr%2FwCD%2FwB8%2FxAAAGcAABUAAAAAAAA8eAEA6wCkEgAAAABkxgBkPACDTAB8APf%2FWPT%2F64D%2FEnz%2FAFx0d%2BrrEBISTwAAABCdjGdk6xWDEgB8AAFgZAAtZABPgwAAfAB0m%2Bo27RJPEgAAAAIAawAB%2FwAA%2FwAAfxtwCOXq7ToSEncAAMQAPOkBABIApAAAAAO4ZIlkZEyDgwB8fAABPOoAABIApAAAAAIAhgAAxwAwAAAAALQPAOkAABIAAAAAAAAAtgAA6gAARwAAACH5BAEAAAAALAAAAAAgACAABwhzAAMIHEiwoMGDCBMqXMgwAAAADSMOfChRIsWKDB9exJhQI0SOCD1uBDlR5EiSJk9yTKmRpEOWLVfC9ChzpsqFNkVazKmzIc%2BeOH8C7SiUZtCiNwsijalwaVKCTj8eFRpx6c6fGLHWhOlypsuSRr%2BKHWswIAA7";
  23. defaultSymbols[01] = "data:image/gif;base64,R0lGODlhIAAgAPcAAAQCBPz%2B%2FAAANwAAfkOsAB3pAAASAAAAAHo0ACOHAAA2AAB%2BAABIAAAEABUoAAAAAAkPAAAAAAAAAAAAAAAAyAIA6gAAEgAAAAAAcwEA5AAAkQAAfPwbAOjlABI6FQB3AOnNGOWrAIG6AHzcAAAAMAAAeAEAegAAAFboDwDpAAASAAAAAAQbAOjlABI6AAB3AHMUAADqAAASAAAAACQWG%2BmI5RI2AQB%2BACAAAunQAJH9AHx%2FAGAUFADq6pISEnwAAP9a3P%2BIrv82N%2F9%2Bfl3UCADp65ISEnwAAIUqIOeI6YE2kXx%2BfAAAYAAAABUAkgAAfFhI%2FwME%2FwAo%2FwAA%2FyAAXcTwABgAkgAAfBAU%2BmcAmRUAgAAAfAABAAAAAAAAFQAAAH4AAAAAAAAAAMAAAAAADQAAmgAAgAAAfP8Q%2BP8Aiv8AF%2F8AAP8AAf8AAP8AAP8AAABkAQDsAAASAAAAAAAAEAAA6wAAEgAAAAAE3ADq4hUSOgAAd4YADMcAgAAAAAAAADS4SOkABBKSKAB8AJ%2FwAOuKAIEXAHwAAEvQB%2BPqAIESAHwAAEBBAHgAAFCSAAB8ABDoAGcGAAEVFQAAAGtdAAAAAACSAAB8AHCGAOjHABIAAAAAADRMAADqAAASAMAAAKy1APsrABKDAAB8ACAAQOkAAJEApHwAAGAAAAAAAJIAAHwAAP8AAP8AAP8AAP8AAF0AkwABAJIAAHwAAOoZk%2FQsAICDAHx8AABw%2FADq8BUSEgAAAAD0%2FwAr%2FwCD%2FwB8%2FxAAAGcAABUAAAAAAABEeAEA6wCkEgAAAABkxgBkPACDTAB8APf%2FWPT%2F64D%2FEnz%2FAFx0d%2BrrEBISTwAAABCdjGdk6xWDEgB8AAFgZAAtZABPgwAAfAB0m%2Bo27RJPEgAAAAIAawAB%2FwAA%2FwAAfxtwCOXq7ToSEncAAMQAROkBABIApAAAAAO4ZIlkZEyDgwB8fAABROoAABIApAAAAAIAhgAAxwAwAAAAALQPAOkAABIAAAAAAAAAtgAA6gAARwAAACH5BAEAAAAALAAAAAAgACAABwh0AAMIHEiwoMGDCBECWMiQYcKHBBtKhEhRYkOKEC06xJhQ40KOHT2CVChypEGPAECiXGnxIMuXH0%2FCZOly5sqaNksWzIkSJ8%2BJMn8C3Sl0aEWdJgf2TBoRKdOlTAVCjTr1qdOkVbFeNZmV69aRXcF%2BVTlWYEAAOw%3D%3D";
  24. defaultSymbols[02] = "data:image/gif;base64,R0lGODlhIAAgAPcAAAQCBPz%2B%2FAAANwAAfkOsAB3pAAASAAAAAHo0ACOHAAA2AAB%2BAABIAAAEABUoAAAAAAkPAAAAAAAAAAAAAAAAyAIA6gAAEgAAAAAAcwEA5AAAkQAAfPwbAOjlABI6FQB3AOnNGOWrAIG6AHzcAAAAMAAAeAEAegAAAFboDwDpAAASAAAAAAQbAOjlABI6AAB3AHMUAADqAAASAAAAACQWG%2BmI5RI2AQB%2BACAAAunQAJH9AHx%2FAGAUFADq6pISEnwAAP9a3P%2BIrv82N%2F9%2Bfl3UCADp65ISEnwAAIUqIOeI6YE2kXx%2BfAAAYAAAABUAkgAAfFhI%2FwME%2FwAo%2FwAA%2F4AAXTzwABgAkgAAfBAU%2BmcAmRUAgAAAfAABAAAAAAAAFQAAAH4AAAAAAAAAAMAAAAAADQAAmgAAgAAAfP8Q6P8AT%2F8AFv8AAP8AAf8AAP8AAP8AAABkAQDsAAASAAAAAAAAEAAA6wAAEgAAAAAE3ADq4hUSOgAAd4YADMcAgAAAAAAAADS4SOkABBKSKAB8AJ%2FgAOtPAIEWAHwAAEvQB%2BPqAIESAHwAAEBBAHgAAFCSAAB8ABDoAGcGAAEVFQAAAGtdAAAAAACSAAB8AHCGAOjHABIAAAAAADRMAADqAAASAMAAAKy1APsrABKDAAB8ACAAOOkAAJEApHwAAGAAAAAAAJIAAHwAAP8AAP8AAP8AAP8AAF0AkwABAJIAAHwAAOoZk%2FQsAICDAHx8AABw%2FADq8BUSEgAAAAD0%2FwAr%2FwCD%2FwB8%2FxAAAGcAABUAAAAAAAA8eAEA6wCkEgAAAABkxgBkPACDTAB8APf%2FWPT%2F64D%2FEnz%2FAFx0d%2BrrEBISTwAAABCdjGdk6xWDEgB8AAFgZAAtZABPgwAAfAB0m%2Bo27RJPEgAAAAIAawAB%2FwAA%2FwAAfxtwCOXq7ToSEncAAMQAPOkBABIApAAAAAO4ZIlkZEyDgwB8fAABPOoAABIApAAAAAIAhgAAxwAwAAAAALQPAOkAABIAAAAAAAAAtgAA6gAARwAAACH5BAEAAAAALAAAAAAgACAABwiZAAMIHEiwoMGDCBECWMgQQMKHAxkelAix4MKKAS5idIgxIkSNHSNyNAgypMiJJlFaTKlwpcCGIzvG5AizocmRDmvCDElTp06eGTP6tClT6E6jFC3GfIm05FGCRD3WhBpVZMmgP5teFUpS69ClCnN%2BffpQ41iyE3Gerap05lq2cN%2BeJSl3aNq6WeniZau3rky%2FN%2BeytMp3sOGAADs%3D";
  25. defaultSymbols[03] = "data:image/gif;base64,R0lGODlhIAAgAPcAAAQCBPz%2B%2FAAANwAAfkOsAB3pAAASAAAAAHo0ACOHAAA2AAB%2BAABIAAAEABUoAAAAAAkPAAAAAAAAAAAAAAAAyAIA6gAAEgAAAAAAcwEA5AAAkQAAfPwbAOjlABI6FQB3AOnNGOWrAIG6AHzcAAAAMAAAeAEAegAAAFboDwDpAAASAAAAAAQbAOjlABI6AAB3AHMUAADqAAASAAAAACQWG%2BmI5RI2AQB%2BACAAAunQAJH9AHx%2FAGAUFADq6pISEnwAAP9a3P%2BIrv82N%2F9%2Bfl3UCADp65ISEnwAAIUqIOeI6YE2kXx%2BfAAAYAAAABUAkgAAfFhI%2FwME%2FwAo%2FwAA%2F4AAXTzwABgAkgAAfBAU%2BmcAmRUAgAAAfAABAAAAAAAAFQAAAH4AAAAAAAAAAMAAAAAADQAAmgAAgAAAfP8QcP8AbP8AGP8AAP8AAf8AAP8AAP8AAABkAQDsAAASAAAAAAAAEAAA6wAAEgAAAAAE3ADq4hUSOgAAd4YADMcAgAAAAAAAADS4SOkABBKSKAB8AJ9oAOtsAIEYAHwAAEvQB%2BPqAIESAHwAAEBBAHgAAFCSAAB8ABDoAGcGAAEVFQAAAGtdAAAAAACSAAB8AHCGAOjHABIAAAAAADRMAADqAAASAMAAAKy1APsrABKDAAB8ACAAQOkAAJEApHwAAGAAAAAAAJIAAHwAAP8AAP8AAP8AAP8AAF0AkwABAJIAAHwAAOoZk%2FQsAICDAHx8AABw%2FADq8BUSEgAAAAD0%2FwAr%2FwCD%2FwB8%2FxAAAGcAABUAAAAAAABEeAEA6wCkEgAAAABkxgBkPACDTAB8APf%2FWPT%2F64D%2FEnz%2FAFx0d%2BrrEBISTwAAABCdjGdk6xWDEgB8AAFgZAAtZABPgwAAfAB0m%2Bo27RJPEgAAAAIAawAB%2FwAA%2FwAAfxtwCOXq7ToSEncAAMQAROkBABIApAAAAAO4ZIlkZEyDgwB8fAABROoAABIApAAAAAIAhgAAxwAwAAAAALQPAOkAABIAAAAAAAAAtgAA6gAARwAAACH5BAEAAAAALAAAAAAgACAABwh0AAMIHEiwoMGDCBECWMhwYcKHAxtKZAjx4MSLFCsGwMgxY8KOIB%2BCHAlAIcmOFk%2BGLKhyZcSWLjfCRClw5siaNmnm1LkTI86eE38CbSh0qEOZRj0mPVoUKEujBpOm7GmS6kebFXNqREpy68uYXr9KDEsWYkAAOw%3D%3D";
  26. defaultSymbols[04] = "data:image/gif;base64,R0lGODlhIAAgAPcAAAQCBPz%2B%2FAAANwAAfkOsAB3pAAASAAAAAHo0ACOHAAA2AAB%2BAABIAAAEABUoAAAAAAkPAAAAAAAAAAAAAAAAyAIA6gAAEgAAAAAAcwEA5AAAkQAAfPwbAOjlABI6FQB3AOnNGOWrAIG6AHzcAAAAMAAAeAEAegAAAFboDwDpAAASAAAAAAQbAOjlABI6AAB3AHMUAADqAAASAAAAACQWG%2BmI5RI2AQB%2BACAAAunQAJH9AHx%2FAGAUFADq6pISEnwAAP9a3P%2BIrv82N%2F9%2Bfl3UCADp65ISEnwAAIUqIOeI6YE2kXx%2BfAAAYAAAABUAkgAAfFhI%2FwME%2FwAo%2FwAA%2F4AAXTzwABgAkgAAfBAU%2BmcAmRUAgAAAfAABAAAAAAAAFQAAAH4AAAAAAAAAAMAAAAAADQAAmgAAgAAAfP8QwP8Agf8AGf8AAP8AAf8AAP8AAP8AAABkAQDsAAASAAAAAAAAEAAA6wAAEgAAAAAE3ADq4hUSOgAAd4YADMcAgAAAAAAAADS4SOkABBKSKAB8AJ%2B4AOuBAIEZAHwAAEvQB%2BPqAIESAHwAAEBBAHgAAFCSAAB8ABDoAGcGAAEVFQAAAGtdAAAAAACSAAB8AHCGAOjHABIAAAAAADRMAADqAAASAMAAAKy1APsrABKDAAB8ACAAOOkAAJEApHwAAGAAAAAAAJIAAHwAAP8AAP8AAP8AAP8AAF0AkwABAJIAAHwAAOoZk%2FQsAICDAHx8AABw%2FADq8BUSEgAAAAD0%2FwAr%2FwCD%2FwB8%2FxAAAGcAABUAAAAAAAA8eAEA6wCkEgAAAABkxgBkPACDTAB8APf%2FWPT%2F64D%2FEnz%2FAFx0d%2BrrEBISTwAAABCdjGdk6xWDEgB8AAFgZAAtZABPgwAAfAB0m%2Bo27RJPEgAAAAIAawAB%2FwAA%2FwAAfxtwCOXq7ToSEncAAMQAPOkBABIApAAAAAO4ZIlkZEyDgwB8fAABPOoAABIApAAAAAIAhgAAxwAwAAAAALQPAOkAABIAAAAAAAAAtgAA6gAARwAAACH5BAEAAAAALAAAAAAgACAABwiUAAMIHEiwIAAABRMqXDjw4EGGEBc6dBixosCJEy1CxIhRo0KOHD0SBAlSZEOSFE2eJGkS4ciSIyOmXDnz4kOJGV%2FepOnSYMiXPjvq%2FIkTZgCUO4OyRFrTJtOnPXkuRVqUpVOiH61KjXqUq9GhXpsKzRo250qZSs1ebIlS5daxIqFy1fjU7VWsbrXavTt3r9q9QDUGBAA7";
  27. defaultSymbols[05] = "data:image/gif;base64,R0lGODlhIAAgAPcAAAQCBPz%2B%2FAAANwAAfkOsAB3pAAASAAAAAHo0ACOHAAA2AAB%2BAABIAAAEABUoAAAAAAkPAAAAAAAAAAAAAAAAyAIA6gAAEgAAAAAAcwEA5AAAkQAAfPwbAOjlABI6FQB3AOnNGOWrAIG6AHzcAAAAMAAAeAEAegAAAFboDwDpAAASAAAAAAQbAOjlABI6AAB3AHMUAADqAAASAAAAACQWG%2BmI5RI2AQB%2BACAAAunQAJH9AHx%2FAGAUFADq6pISEnwAAP9a3P%2BIrv82N%2F9%2Bfl3UCADp65ISEnwAAIUqIOeI6YE2kXx%2BfAAAYAAAABUAkgAAfFhI%2FwME%2FwAo%2FwAA%2F4AAXTzwABgAkgAAfBAU%2BmcAmRUAgAAAfAABAAAAAAAAFQAAAH4AAAAAAAAAAMAAAAAADQAAmgAAgAAAfP8QSP8Ar%2F8AGP8AAP8AAf8AAP8AAP8AAABkAQDsAAASAAAAAAAAEAAA6wAAEgAAAAAE3ADq4hUSOgAAd4YADMcAgAAAAAAAADS4SOkABBKSKAB8AJ9AAOuvAIEYAHwAAEvQB%2BPqAIESAHwAAEBBAHgAAFCSAAB8ABDoAGcGAAEVFQAAAGtdAAAAAACSAAB8AHCGAOjHABIAAAAAADRMAADqAAASAMAAAKy1APsrABKDAAB8ACAAYOkAAJEApHwAAGAAAAAAAJIAAHwAAP8AAP8AAP8AAP8AAF0AkwABAJIAAHwAAOoZk%2FQsAICDAHx8AABw%2FADq8BUSEgAAAAD0%2FwAr%2FwCD%2FwB8%2FxAAAGcAABUAAAAAAABkeAEA6wCkEgAAAABkxgBkPACDTAB8APf%2FWPT%2F64D%2FEnz%2FAFx0d%2BrrEBISTwAAABCdjGdk6xWDEgB8AAFgZAAtZABPgwAAfAB0m%2Bo27RJPEgAAAAIAawAB%2FwAA%2FwAAfxtwCOXq7ToSEncAAMQAZOkBABIApAAAAAO4ZIlkZEyDgwB8fAABZOoAABIApAAAAAIAhgAAxwAwAAAAALQPAOkAABIAAAAAAAAAtgAA6gAARwAAACH5BAEAAAAALAAAAAAgACAABwioAAMIDACgYMGBCBMKNHgwIcOHChE%2BZDhwIsSIFikSNLhQo8KLFD12bCiRY8mLDklWVLlSZMuPLEeaTAkAZk2bLjfePIlT586RNmnezEi06EyjSFG2TJoxIsaYM51KjQpUqlWqOq1ehRpT60uaXp1ixSqWKVGcZs%2FKTFtUJti3S30GhbuU7NiuE5%2F%2BrCoUL9e9a1nmdBnSpNKTDTUaLavW5%2BG%2Bg3MyVhkQADs%3D";
  28. defaultSymbols[06] = "data:image/gif;base64,R0lGODlhIAAgAPcAAAQCBPz%2B%2FAAANwAAfkOsAB3pAAASAAAAAHo0ACOHAAA2AAB%2BAABIAAAEABUoAAAAAAkPAAAAAAAAAAAAAAAAyAIA6gAAEgAAAAAAcwEA5AAAkQAAfPwbAOjlABI6FQB3AOnNGOWrAIG6AHzcAAAAMAAAeAEAegAAAFboDwDpAAASAAAAAAQbAOjlABI6AAB3AHMUAADqAAASAAAAACQWG%2BmI5RI2AQB%2BACAAAunQAJH9AHx%2FAGAUFADq6pISEnwAAP9a3P%2BIrv82N%2F9%2Bfl3UCADp65ISEnwAAIUqIOeI6YE2kXx%2BfAAAYAAAABUAkgAAfFhI%2FwME%2FwAo%2FwAA%2F4AAXTzwABgAkgAAfBAU%2BmcAmRUAgAAAfAABAAAAAAAAFQAAAH4AAAAAAAAAAMAAAAAADQAAmgAAgAAAfP8QoP8AXv8AG%2F8AAP8AAf8AAP8AAP8AAABkAQDsAAASAAAAAAAAEAAA6wAAEgAAAAAE3ADq4hUSOgAAd4YADMcAgAAAAAAAADS4SOkABBKSKAB8AJ%2BYAOteAIEbAHwAAEvQB%2BPqAIESAHwAAEBBAHgAAFCSAAB8ABDoAGcGAAEVFQAAAGtdAAAAAACSAAB8AHCGAOjHABIAAAAAADRMAADqAAASAMAAAKy1APsrABKDAAB8ACAAOOkAAJEApHwAAGAAAAAAAJIAAHwAAP8AAP8AAP8AAP8AAF0AkwABAJIAAHwAAOoZk%2FQsAICDAHx8AABw%2FADq8BUSEgAAAAD0%2FwAr%2FwCD%2FwB8%2FxAAAGcAABUAAAAAAAA8eAEA6wCkEgAAAABkxgBkPACDTAB8APf%2FWPT%2F64D%2FEnz%2FAFx0d%2BrrEBISTwAAABCdjGdk6xWDEgB8AAFgZAAtZABPgwAAfAB0m%2Bo27RJPEgAAAAIAawAB%2FwAA%2FwAAfxtwCOXq7ToSEncAAMQAPOkBABIApAAAAAO4ZIlkZEyDgwB8fAABPOoAABIApAAAAAIAhgAAxwAwAAAAALQPAOkAABIAAAAAAAAAtgAA6gAARwAAACH5BAEAAAAALAAAAAAgACAABwh0AAMIHEiwoMGDCBMqXMiwYQAAEB06hAhAYkOKFhlizKhwI8eDFCt%2BBOlxJMGQJg2iTHlyJcuHLlmGFPly5suBNm%2FmvFgSZ8yFM2kK3MnzJ9GiHo9OtKlUYtCmS58K5Sh16kepNYPehPnTJNSREbfiFEs2QEAAOw%3D%3D";
  29. defaultSymbols[07] = "data:image/gif;base64,R0lGODlhIAAgAPcAAAQCBPz%2B%2FAAANwAAfkOsAB3pAAASAAAAAHo0ACOHAAA2AAB%2BAABIAAAEABUoAAAAAAkPAAAAAAAAAAAAAAAAyAIA6gAAEgAAAAAAcwEA5AAAkQAAfPwbAOjlABI6FQB3AOnNGOWrAIG6AHzcAAAAMAAAeAEAegAAAFboDwDpAAASAAAAAAQbAOjlABI6AAB3AHMUAADqAAASAAAAACQWG%2BmI5RI2AQB%2BACAAAunQAJH9AHx%2FAGAUFADq6pISEnwAAP9a3P%2BIrv82N%2F9%2Bfl3UCADp65ISEnwAAIUqIOeI6YE2kXx%2BfAAAYAAAABUAkgAAfFhI%2FwME%2FwAo%2FwAA%2F4AAXTzwABgAkgAAfBAU%2BmcAmRUAgAAAfAABAAAAAAAAFQAAAH4AAAAAAAAAAMAAAAAADQAAmgAAgAAAfP8QOP8Av%2F8AGf8AAP8AAf8AAP8AAP8AAABkAQDsAAASAAAAAAAAEAAA6wAAEgAAAAAE3ADq4hUSOgAAd4YADMcAgAAAAAAAADS4SOkABBKSKAB8AJ8wAOu%2FAIEZAHwAAEvQB%2BPqAIESAHwAAEBBAHgAAFCSAAB8ABDoAGcGAAEVFQAAAGtdAAAAAACSAAB8AHCGAOjHABIAAAAAADRMAADqAAASAMAAAKy1APsrABKDAAB8ACAAYOkAAJEApHwAAGAAAAAAAJIAAHwAAP8AAP8AAP8AAP8AAF0AkwABAJIAAHwAAOoZk%2FQsAICDAHx8AABw%2FADq8BUSEgAAAAD0%2FwAr%2FwCD%2FwB8%2FxAAAGcAABUAAAAAAABkeAEA6wCkEgAAAABkxgBkPACDTAB8APf%2FWPT%2F64D%2FEnz%2FAFx0d%2BrrEBISTwAAABCdjGdk6xWDEgB8AAFgZAAtZABPgwAAfAB0m%2Bo27RJPEgAAAAIAawAB%2FwAA%2FwAAfxtwCOXq7ToSEncAAMQAZOkBABIApAAAAAO4ZIlkZEyDgwB8fAABZOoAABIApAAAAAIAhgAAxwAwAAAAALQPAOkAABIAAAAAAAAAtgAA6gAARwAAACH5BAEAAAAALAAAAAAgACAABwiJAAMIHEiwoMGDCAkCAJCwYcOFCx1KVAiRocOKFhFivIgxY8GOHimCDCkQ5MGREE%2BaFImSJMqBLUmyrAjz5cORAVpKjIlzIk%2BaE2vyDPpxKNGZHY8a1KlUqE2lP2XejEo06kaOVoFqfJm1ZEykJqmCvWq0aE%2BvT81eHbtTq9qITbfCjUu3rt2BAQEAOw%3D%3D";
  30. defaultSymbols[08] = "data:image/gif;base64,R0lGODlhIAAgAPcAAAQCBPz%2B%2FAAANwAAfkOsAB3pAAASAAAAAHo0ACOHAAA2AAB%2BAABIAAAEABUoAAAAAAkPAAAAAAAAAAAAAAAAyAIA6gAAEgAAAAAAcwEA5AAAkQAAfPwbAOjlABI6FQB3AOnNGOWrAIG6AHzcAAAAMAAAeAEAegAAAFboDwDpAAASAAAAAAQbAOjlABI6AAB3AHMUAADqAAASAAAAACQWG%2BmI5RI2AQB%2BACAAAunQAJH9AHx%2FAGAUFADq6pISEnwAAP9a3P%2BIrv82N%2F9%2Bfl3UCADp65ISEnwAAIUqIOeI6YE2kXx%2BfAAAYAAAABUAkgAAfFhI%2FwME%2FwAo%2FwAA%2F4AAXTzwABgAkgAAfBAU%2BmcAmRUAgAAAfAABAAAAAAAAFQAAAH4AAAAAAAAAAMAAAAAADQAAmgAAgAAAfP8QwP8AT%2F8AG%2F8AAP8AAf8AAP8AAP8AAABkAQDsAAASAAAAAAAAEAAA6wAAEgAAAAAE3ADq4hUSOgAAd4YADMcAgAAAAAAAADS4SOkABBKSKAB8AJ%2B4AOtPAIEbAHwAAEvQB%2BPqAIESAHwAAEBBAHgAAFCSAAB8ABDoAGcGAAEVFQAAAGtdAAAAAACSAAB8AHCGAOjHABIAAAAAADRMAADqAAASAMAAAKy1APsrABKDAAB8ACAAOOkAAJEApHwAAGAAAAAAAJIAAHwAAP8AAP8AAP8AAP8AAF0AkwABAJIAAHwAAOoZk%2FQsAICDAHx8AABw%2FADq8BUSEgAAAAD0%2FwAr%2FwCD%2FwB8%2FxAAAGcAABUAAAAAAAA8eAEA6wCkEgAAAABkxgBkPACDTAB8APf%2FWPT%2F64D%2FEnz%2FAFx0d%2BrrEBISTwAAABCdjGdk6xWDEgB8AAFgZAAtZABPgwAAfAB0m%2Bo27RJPEgAAAAIAawAB%2FwAA%2FwAAfxtwCOXq7ToSEncAAMQAPOkBABIApAAAAAO4ZIlkZEyDgwB8fAABPOoAABIApAAAAAIAhgAAxwAwAAAAALQPAOkAABIAAAAAAAAAtgAA6gAARwAAACH5BAEAAAAALAAAAAAgACAABwhsAAMIHEiwoMGDCBMqXMiwoUOBACJKlPgw4cSLFRFenJjx4EaKHQt%2BjBhS5MiSBEcCQDlQJUuIJ1OqnBkTJs2bHG3i3KlzJ84APn32DFqTKE2WLlEmLbk0ZNOOTzNGrTj1YVWHV19q3cq1q8GAADs%3D";
  31. defaultSymbols[09] = "data:image/gif;base64,R0lGODlhIAAgAPcAAAQCBPz%2B%2FAAANwAAfkOsAB3pAAASAAAAAHo0ACOHAAA2AAB%2BAABIAAAEABUoAAAAAAkPAAAAAAAAAAAAAAAAyAIA6gAAEgAAAAAAcwEA5AAAkQAAfPwbAOjlABI6FQB3AOnNGOWrAIG6AHzcAAAAMAAAeAEAegAAAFboDwDpAAASAAAAAAQbAOjlABI6AAB3AHMUAADqAAASAAAAACQWG%2BmI5RI2AQB%2BACAAAunQAJH9AHx%2FAGAUFADq6pISEnwAAP9a3P%2BIrv82N%2F9%2Bfl3UCADp65ISEnwAAIUqIOeI6YE2kXx%2BfAAAYAAAABUAkgAAfFhI%2FwME%2FwAo%2FwAA%2F4AAXTzwABgAkgAAfBAU%2BmcAmRUAgAAAfAABAAAAAAAAFQAAAH4AAAAAAAAAAMAAAAAADQAAmgAAgAAAfP8QGP8AFv8AH%2F8AAP8AAf8AAP8AAP8AAABkAQDsAAASAAAAAAAAEAAA6wAAEgAAAAAE3ADq4hUSOgAAd4YADMcAgAAAAAAAADS4SOkABBKSKAB8AJ8QAOsWAIEfAHwAAEvQB%2BPqAIESAHwAAEBBAHgAAFCSAAB8ABDoAGcGAAEVFQAAAGtdAAAAAACSAAB8AHCGAOjHABIAAAAAADRMAADqAAASAMAAAKy1APsrABKDAAB8ACAAYOkAAJEApHwAAGAAAAAAAJIAAHwAAP8AAP8AAP8AAP8AAF0AkwABAJIAAHwAAOoZk%2FQsAICDAHx8AABw%2FADq8BUSEgAAAAD0%2FwAr%2FwCD%2FwB8%2FxAAAGcAABUAAAAAAABkeAEA6wCkEgAAAABkxgBkPACDTAB8APf%2FWPT%2F64D%2FEnz%2FAFx0d%2BrrEBISTwAAABCdjGdk6xWDEgB8AAFgZAAtZABPgwAAfAB0m%2Bo27RJPEgAAAAIAawAB%2FwAA%2FwAAfxtwCOXq7ToSEncAAMQAZOkBABIApAAAAAO4ZIlkZEyDgwB8fAABZOoAABIApAAAAAIAhgAAxwAwAAAAALQPAOkAABIAAAAAAAAAtgAA6gAARwAAACH5BAEAAAAALAAAAAAgACAABwh5AAMIHEiwoMGDCBMOBKCwoUKGDiMWhChRIoCLFS1izNjwokeODz1SBGlQ5EiSBE2iLGnyJMqWLg%2FCnEkTpsCaOGdOzJkTIc%2BaIX%2BqdCh0o0aeIJEm7bkUJ0mlGYVytGmzYsudIq1mZfnxaMybXSMaDalR68qzaAkGBAA7";
  32. defaultSymbols[10] = "data:image/gif;base64,R0lGODlhIAAgAPcAAAQCBPz%2B%2FAAANwAAfkOsAB3pAAASAAAAAHo0ACOHAAA2AAB%2BAABIAAAEABUoAAAAAAkPAAAAAAAAAAAAAAAAyAIA6gAAEgAAAAAAcwEA5AAAkQAAfPwbAOjlABI6FQB3AOnNGOWrAIG6AHzcAAAAMAAAeAEAegAAAFboDwDpAAASAAAAAAQbAOjlABI6AAB3AHMUAADqAAASAAAAACQWG%2BmI5RI2AQB%2BACAAAunQAJH9AHx%2FAGAUFADq6pISEnwAAP9a3P%2BIrv82N%2F9%2Bfl3UCADp65ISEnwAAIUqIOeI6YE2kXx%2BfAAAYAAAABUAkgAAfFhI%2FwME%2FwAo%2FwAA%2F4AAXTzwABgAkgAAfBAU%2BmcAmRUAgAAAfAABAAAAAAAAFQAAAH4AAAAAAAAAAMAAAAAADQAAmgAAgAAAfP8QiP8AFf8AH%2F8AAP8AAf8AAP8AAP8AAABkAQDsAAASAAAAAAAAEAAA6wAAEgAAAAAE3ADq4hUSOgAAd4YADMcAgAAAAAAAADS4SOkABBKSKAB8AJ%2BAAOsVAIEfAHwAAEvQB%2BPqAIESAHwAAEBBAHgAAFCSAAB8ABDoAGcGAAEVFQAAAGtdAAAAAACSAAB8AHCGAOjHABIAAAAAADRMAADqAAASAMAAAKy1APsrABKDAAB8ACAAQOkAAJEApHwAAGAAAAAAAJIAAHwAAP8AAP8AAP8AAP8AAF0AkwABAJIAAHwAAOoZk%2FQsAICDAHx8AABw%2FADq8BUSEgAAAAD0%2FwAr%2FwCD%2FwB8%2FxAAAGcAABUAAAAAAABEeAEA6wCkEgAAAABkxgBkPACDTAB8APf%2FWPT%2F64D%2FEnz%2FAFx0d%2BrrEBISTwAAABCdjGdk6xWDEgB8AAFgZAAtZABPgwAAfAB0m%2Bo27RJPEgAAAAIAawAB%2FwAA%2FwAAfxtwCOXq7ToSEncAAMQAROkBABIApAAAAAO4ZIlkZEyDgwB8fAABROoAABIApAAAAAIAhgAAxwAwAAAAALQPAOkAABIAAAAAAAAAtgAA6gAARwAAACH5BAEAAAAALAAAAAAgACAABwh3AAMIHEiwoMGDCBMaBABAocOEDBk%2BnDgwYkOKDy1KxKhQ40WOCDWChChy5EKPJgt6%2FJgywEqWJl%2B2FPgSJsiaNjniLElx50qSPnGGDCr0JNGaB48WVan0Z9KmKJ9CtTh0asSqVjtm1ToVY9ObPlOGFUuV6syRAQEAOw%3D%3D";
  33. defaultSymbols[11] = "data:image/gif;base64,R0lGODlhIAAgAPcAAAQCBPz%2B%2FAAANwAAfkOsAB3pAAASAAAAAHo0ACOHAAA2AAB%2BAABIAAAEABUoAAAAAAkPAAAAAAAAAAAAAAAAyAIA6gAAEgAAAAAAcwEA5AAAkQAAfPwbAOjlABI6FQB3AOnNGOWrAIG6AHzcAAAAMAAAeAEAegAAAFboDwDpAAASAAAAAAQbAOjlABI6AAB3AHMUAADqAAASAAAAACQWG%2BmI5RI2AQB%2BACAAAunQAJH9AHx%2FAGAUFADq6pISEnwAAP9a3P%2BIrv82N%2F9%2Bfl3UCADp65ISEnwAAIUqIOeI6YE2kXx%2BfAAAYAAAABUAkgAAfFhI%2FwME%2FwAo%2FwAA%2F4AAXTzwABgAkgAAfBAU%2BmcAmRUAgAAAfAABAAAAAAAAFQAAAH4AAAAAAAAAAMAAAAAADQAAmgAAgAAAfP8Q%2BP8Ao%2F8AF%2F8AAP8AAf8AAP8AAP8AAABkAQDsAAASAAAAAAAAEAAA6wAAEgAAAAAE3ADq4hUSOgAAd4YADMcAgAAAAAAAADS4SOkABBKSKAB8AJ%2FwAOujAIEXAHwAAEvQB%2BPqAIESAHwAAEBBAHgAAFCSAAB8ABDoAGcGAAEVFQAAAGtdAAAAAACSAAB8AHCGAOjHABIAAAAAADRMAADqAAASAMAAAKy1APsrABKDAAB8ACAAYOkAAJEApHwAAGAAAAAAAJIAAHwAAP8AAP8AAP8AAP8AAF0AkwABAJIAAHwAAOoZk%2FQsAICDAHx8AABw%2FADq8BUSEgAAAAD0%2FwAr%2FwCD%2FwB8%2FxAAAGcAABUAAAAAAABkeAEA6wCkEgAAAABkxgBkPACDTAB8APf%2FWPT%2F64D%2FEnz%2FAFx0d%2BrrEBISTwAAABCdjGdk6xWDEgB8AAFgZAAtZABPgwAAfAB0m%2Bo27RJPEgAAAAIAawAB%2FwAA%2FwAAfxtwCOXq7ToSEncAAMQAZOkBABIApAAAAAO4ZIlkZEyDgwB8fAABZOoAABIApAAAAAIAhgAAxwAwAAAAALQPAOkAABIAAAAAAAAAtgAA6gAARwAAACH5BAEAAAAALAAAAAAgACAABwh1AAMIHEiwoMGDCBMqXMhQIICGEAk%2BjAgRgEWKDC1qxKhQ40WOBz1uBFlQ5EeSDk2eBKnSI8qWIznCdClz5sqKNmPizDlxJ8%2BeC3%2BKbCiUZseiRhEiTWpw6VClTnVKjMo0JdWbAa4%2Btao1ZtenX02iHEu2rMGAADs%3D";
  34. defaultSymbols[12] = "data:image/gif;base64,R0lGODlhIAAgAPcAAAQCBPz%2B%2FAAANwAAfkOsAB3pAAASAAAAAHo0ACOHAAA2AAB%2BAABIAAAEABUoAAAAAAkPAAAAAAAAAAAAAAAAyAIA6gAAEgAAAAAAcwEA5AAAkQAAfPwbAOjlABI6FQB3AOnNGOWrAIG6AHzcAAAAMAAAeAEAegAAAFboDwDpAAASAAAAAAQbAOjlABI6AAB3AHMUAADqAAASAAAAACQWG%2BmI5RI2AQB%2BACAAAunQAJH9AHx%2FAGAUFADq6pISEnwAAP9a3P%2BIrv82N%2F9%2Bfl3UCADp65ISEnwAAIUqIOeI6YE2kXx%2BfAAAYAAAABUAkgAAfFhI%2FwME%2FwAo%2FwAA%2F4AAXTzwABgAkgAAfBAU%2BmcAmRUAgAAAfAABAAAAAAAAFQAAAH4AAAAAAAAAAMAAAAAADQAAmgAAgAAAfP8QCP8ApP8AF%2F8AAP8AAf8AAP8AAP8AAABkAQDsAAASAAAAAAAAEAAA6wAAEgAAAAAE3ADq4hUSOgAAd4YADMcAgAAAAAAAADS4SOkABBKSKAB8AJ8AAOukAIEXAHwAAEvQB%2BPqAIESAHwAAEBBAHgAAFCSAAB8ABDoAGcGAAEVFQAAAGtdAAAAAACSAAB8AHCGAOjHABIAAAAAADRMAADqAAASAMAAAKy1APsrABKDAAB8ACAAQOkAAJEApHwAAGAAAAAAAJIAAHwAAP8AAP8AAP8AAP8AAF0AkwABAJIAAHwAAOoZk%2FQsAICDAHx8AABw%2FADq8BUSEgAAAAD0%2FwAr%2FwCD%2FwB8%2FxAAAGcAABUAAAAAAABEeAEA6wCkEgAAAABkxgBkPACDTAB8APf%2FWPT%2F64D%2FEnz%2FAFx0d%2BrrEBISTwAAABCdjGdk6xWDEgB8AAFgZAAtZABPgwAAfAB0m%2Bo27RJPEgAAAAIAawAB%2FwAA%2FwAAfxtwCOXq7ToSEncAAMQAROkBABIApAAAAAO4ZIlkZEyDgwB8fAABROoAABIApAAAAAIAhgAAxwAwAAAAALQPAOkAABIAAAAAAAAAtgAA6gAARwAAACH5BAEAAAAALAAAAAAgACAABwh%2BAAMIHEiwoMGDCBMqXEgQgEOHCh8CWCixosGKEg9ixChwo8WGHjMGCCmyI8mTHE2iXPlQJcuVLl%2BejCkzJM2aG2%2FiLDlyp0eQPlMODPoRKNGJF48mJEpxJ8OeMp%2Fq%2FCkVKsqqQ69indpya9acXo3yDGsVItmCY8%2BaVMu2bdWAADs%3D";
  35. defaultSymbols[13] = "data:image/gif;base64,R0lGODlhIAAgAPcAAAQCBPz%2B%2FAAANwAAfkOsAB3pAAASAAAAAHo0ACOHAAA2AAB%2BAABIAAAEABUoAAAAAAkPAAAAAAAAAAAAAAAAyAIA6gAAEgAAAAAAcwEA5AAAkQAAfPwbAOjlABI6FQB3AOnNGOWrAIG6AHzcAAAAMAAAeAEAegAAAFboDwDpAAASAAAAAAQbAOjlABI6AAB3AHMUAADqAAASAAAAACQWG%2BmI5RI2AQB%2BACAAAunQAJH9AHx%2FAGAUFADq6pISEnwAAP9a3P%2BIrv82N%2F9%2Bfl3UCADp65ISEnwAAIUqIOeI6YE2kXx%2BfAAAYAAAABUAkgAAfFhI%2FwME%2FwAo%2FwAA%2F4AAXTzwABgAkgAAfBAU%2BmcAmRUAgAAAfAABAAAAAAAAFQAAAH4AAAAAAAAAAMAAAAAADQAAmgAAgAAAfP8QwP8AT%2F8AG%2F8AAP8AAf8AAP8AAP8AAABkAQDsAAASAAAAAAAAEAAA6wAAEgAAAAAE3ADq4hUSOgAAd4YADMcAgAAAAAAAADS4SOkABBKSKAB8AJ%2B4AOtPAIEbAHwAAEvQB%2BPqAIESAHwAAEBBAHgAAFCSAAB8ABDoAGcGAAEVFQAAAGtdAAAAAACSAAB8AHCGAOjHABIAAAAAADRMAADqAAASAMAAAKy1APsrABKDAAB8ACAAYOkAAJEApHwAAGAAAAAAAJIAAHwAAP8AAP8AAP8AAP8AAF0AkwABAJIAAHwAAOoZk%2FQsAICDAHx8AABw%2FADq8BUSEgAAAAD0%2FwAr%2FwCD%2FwB8%2FxAAAGcAABUAAAAAAABkeAEA6wCkEgAAAABkxgBkPACDTAB8APf%2FWPT%2F64D%2FEnz%2FAFx0d%2BrrEBISTwAAABCdjGdk6xWDEgB8AAFgZAAtZABPgwAAfAB0m%2Bo27RJPEgAAAAIAawAB%2FwAA%2FwAAfxtwCOXq7ToSEncAAMQAZOkBABIApAAAAAO4ZIlkZEyDgwB8fAABZOoAABIApAAAAAIAhgAAxwAwAAAAALQPAOkAABIAAAAAAAAAtgAA6gAARwAAACH5BAEAAAAALAAAAAAgACAABwiDAAMIHEiwoMGDAgEgXMhwoMKGEA0CeBix4sSKGC9ijDiR4saFHT1yBNnxYwCNBUOaLJlS5UeXCWFmDPmQpkiINhXaXJlz58aePn8ClclxKEuhRm823JnzJU2HRIsePRkV51SqKGdmhaqUYVWqPLsmdCrWZEyzXsua3Yo2ZVuQb%2BOaDAgAOw%3D%3D";
  36. defaultSymbols[14] = "data:image/gif;base64,R0lGODlhIAAgAPcAAAQCBPz%2B%2FAAANwAAfkOsAB3pAAASAAAAAHg0ACOHAAA2AAB%2BAADaAAAEABUeAAAAAAkPAAAAAAAAAAAAAAAAyAIA6gAAEgAAAAAAcwEA5AAAkQAAfPwbAOjlABI6FQB3AOnNGOWrAIG6AHzcAAAAMAAAeAEAegAAAFboDwDpAAASAAAAAAQbAOjlABI6AAB3AHMUAADqAAASAAAAACQWG%2BmI5RI2AQB%2BACAAAungAJH9AHx%2FAGAUFADq6pISEnwAAP9a3P%2BIrv82N%2F9%2Bfl3UCADp65ISEnwAAIUqIOeI6YE2kXx%2BfAAAYAAAABUAkgAAfFja%2FwME%2FwAe%2FwAA%2F%2BAAXefwABUAkgAAfBAU%2BmcAmRUAgAAAfAABAAAAAAAAFQAAAH4AAAAAAAAAAMAAAAAADQAAmgAAgAAAfP8QaP8Alf8AFf8AAP8AAf8AAP8AAP8AAABkAQDsAAASAAAAAAAAEAAA6wAAEgAAAAAE3ADq4hUSOgAAdxoADOsAgAAAAAAAADS42ukABBKSHgB8AJ9gAOuVAIEVAHwAAEvQB%2BPqAIESAHwAAEBBAHgAAFCSAAB8ABDoAGcGAAEVFQAAAGtdAAAAAACSAAB8AHAaAOjrABIAAAAAADRMAADqAAASAMAAAKy1APsrABKDAAB8ACAAOOkAAJEApHwAAGAAAAAAAJIAAHwAAP8AAP8AAP8AAP8AAF0AkwABAJIAAHwAAOoZk%2FQsAICDAHx8AABw%2FADq8BUSEgAAAAD0%2FwAr%2FwCD%2FwB8%2FxAAAGcAABUAAAAAAAA8eAEA6wCkEgAAAABkxgBkPACDTAB8APf%2FWPT%2F64D%2FEnz%2FAFx0d%2BrrEBISTwAAABCdjGdk6xWDEgB8AAFgZAAtZABPgwAAfAB0m%2Bo27RJPEgAAAAIAawAB%2FwAA%2FwAAfxtwCOXq7ToSEncAAMQAPOkBABIApAAAAAO4ZIlkZEyDgwB8fAABPOoAABIApAAAAAIAGgAA6wAwAAAAALQPAOkAABIAAAAAAAAAtgAA6gAARwAAACH5BAEAAAAALAAAAAAgACAABwiDAAMIHEiwoMGDAA4qXFgQgEOGEBs6nBgx4sSLCSsqxIhRo0SOHT0GAEnSI8mTJk9SHJmxokqJKTkibGkx5MyYNG9qfFgzpcucDHlCFNpz40OiQ4Gi3ElTJdCFRJ36HPhyqsCqTD9eFHn1KVeWNr92BSmW6lKxUsumVUu2LMGwbuMeDAgAOw%3D%3D";
  37. defaultSymbols[15] = "data:image/gif;base64,R0lGODlhIAAgAPcAAAQCBPz%2B%2FAAANwAAfkOsAB3pAAASAAAAAHg0ACOHAAA2AAB%2BAADaAAAEABUeAAAAAAkPAAAAAAAAAAAAAAAAyAIA6gAAEgAAAAAAcwEA5AAAkQAAfPwbAOjlABI6FQB3AOnNGOWrAIG6AHzcAAAAMAAAeAEAegAAAFboDwDpAAASAAAAAAQbAOjlABI6AAB3AHMUAADqAAASAAAAACQWG%2BmI5RI2AQB%2BACAAAungAJH9AHx%2FAGAUFADq6pISEnwAAP9a3P%2BIrv82N%2F9%2Bfl3UCADp65ISEnwAAIUqIOeI6YE2kXx%2BfAAAYAAAABUAkgAAfFja%2FwME%2FwAe%2FwAA%2F%2BAAXefwABUAkgAAfBAU%2BmcAmRUAgAAAfAABAAAAAAAAFQAAAH4AAAAAAAAAAMAAAAAADQAAmgAAgAAAfP8QSP8Aj%2F8AFv8AAP8AAf8AAP8AAP8AAABkAQDsAAASAAAAAAAAEAAA6wAAEgAAAAAE3ADq4hUSOgAAdxoADOsAgAAAAAAAADS42ukABBKSHgB8AJ9AAOuPAIEWAHwAAEvQB%2BPqAIESAHwAAEBBAHgAAFCSAAB8ABDoAGcGAAEVFQAAAGtdAAAAAACSAAB8AHAaAOjrABIAAAAAADRMAADqAAASAMAAAKy1APsrABKDAAB8ACAAQOkAAJEApHwAAGAAAAAAAJIAAHwAAP8AAP8AAP8AAP8AAF0AkwABAJIAAHwAAOoZk%2FQsAICDAHx8AABw%2FADq8BUSEgAAAAD0%2FwAr%2FwCD%2FwB8%2FxAAAGcAABUAAAAAAABEeAEA6wCkEgAAAABkxgBkPACDTAB8APf%2FWPT%2F64D%2FEnz%2FAFx0d%2BrrEBISTwAAABCdjGdk6xWDEgB8AAFgZAAtZABPgwAAfAB0m%2Bo27RJPEgAAAAIAawAB%2FwAA%2FwAAfxtwCOXq7ToSEncAAMQAROkBABIApAAAAAO4ZIlkZEyDgwB8fAABROoAABIApAAAAAIAGgAA6wAwAAAAALQPAOkAABIAAAAAAAAAtgAA6gAARwAAACH5BAEAAAAALAAAAAAgACAABwhsAAMIHEiwoMGDCBMqXAigocOHECNKJCixosWHFC9qjJhxo0cAHT9qDCnSIsmSEweiHKlypcmWLlMKjFnxJE2QMG86tEmTZ0yfLoGuFIqSaEmjIpF%2BVOqR6UanLGfqxJhzKtSLV18u3Mq1a9eAADs%3D";
  38. var defaultNames = new Array(
  39. "Drop", "Latin Cross", "Taijitu (Ying Yang)", "Circle",
  40. "Diamonds", "Bowen Knot", "Check Mark (Yes)", "Cross Mark (No)",
  41. "Arrow", "Star", "Thumbs Up", "Triangle",
  42. "Heart", "Lightning", "Notes", "Square"
  43. );
  44. var defaultColors = new Array('red', 'orange', 'green', 'blue', 'black');
  45.  
  46. loadConfig();
  47.  
  48. var pwds = document.getElementsByTagName('input');
  49. for (var i = 0; i < pwds.length; i++)
  50. {
  51. if (pwds[i].type == 'password')
  52. {
  53. createHashContainer();
  54. injectCSS();
  55.  
  56. wrapPasswordField(pwds[i]);
  57. }
  58. }
  59.  
  60. function loadConfig()
  61. {
  62. displayedSymbols = GM_getValue('NumberOfDisplayedSymbols', null);
  63. if (displayedSymbols == null)
  64. {
  65. displayedSymbols = defaultDisplayedSymbols;
  66. GM_setValue('NumberOfDisplayedSymbols', defaultDisplayedSymbols);
  67. }
  68. symbols = GM_getValue('Symbols', null);
  69. if (symbols == null || symbols.length == 0)
  70. {
  71. symbols = defaultSymbols;
  72. GM_setValue('Symbols', defaultSymbols.join('|'));
  73. }
  74. else
  75. {
  76. symbols = symbols.split('|');
  77. }
  78. names = GM_getValue('SymbolNames', null);
  79. if (names == null || names.length == 0)
  80. {
  81. names = defaultNames;
  82. GM_setValue('SymbolNames', defaultNames.join('|'));
  83. }
  84. else
  85. {
  86. names = names.split('|');
  87. }
  88. colors = GM_getValue('Colors', null);
  89. if (colors == null || colors.length == 0)
  90. {
  91. colors = defaultColors;
  92. GM_setValue('Colors', defaultColors.join('|'));
  93. }
  94. else
  95. {
  96. colors = colors.split('|');
  97. }
  98. }
  99.  
  100. function injectCSS()
  101. {
  102. if (cssinjected) return;
  103. cssinjected = true;
  104. var head = document.getElementsByTagName('head')[0];
  105. var mycss = document.createElement('style');
  106. mycss.type = 'text/css';
  107. mycss.innerHTML =
  108. 'div.visualpasswordhash span\
  109. {\
  110. margin: 2px;\
  111. }\
  112. div.visualpasswordhash\
  113. {\
  114. position: absolute;\
  115. visibility: hidden;\
  116. background: white;\
  117. padding: 4px 4px 4px 4px;\
  118. border: 3px solid black;\
  119. z-index: 1000;\
  120. -moz-border-radius: 8px;\
  121. }\
  122. div.visualpasswordhash.on\
  123. {\
  124. visibility: visible;\
  125. }';
  126. head.appendChild(mycss);
  127. }
  128.  
  129. function createHashContainer()
  130. {
  131. if (document.getElementById('visualpasswordhash') != null) return;
  132.  
  133. var myelement = document.createElement('div');
  134. myelement.id = "visualpasswordhash";
  135. myelement.className = "visualpasswordhash";
  136. myelement.innerHTML =
  137. '<span style="background: black; display: inline-block; height: 18px;">\
  138. <img height="18" alt="" title="" id="vpwdhash_icon1" src="sym0.gif"/>\
  139. </span>\
  140. <span style="background: black; display: inline-block; height: 18px;">\
  141. <img height="18" alt="" title="" id="vpwdhash_icon2" src="sym1.gif"/>\
  142. </span>\
  143. <span style="background: black; display: inline-block; height: 18px;">\
  144. <img height="18" alt="" title="" id="vpwdhash_icon3" src="sym2.gif"/>\
  145. </span>'
  146. document.getElementsByTagName('body')[0].appendChild(myelement)
  147. setSymbol(document.getElementById('vpwdhash_icon1'), 0);
  148. setSymbol(document.getElementById('vpwdhash_icon2'), 1);
  149. setSymbol(document.getElementById('vpwdhash_icon3'), 2);
  150. }
  151.  
  152. function wrapPasswordField(field)
  153. {
  154. field.addEventListener("keyup", function() {passwordChanged(field);}, true);
  155. field.addEventListener("focus", function() {positionHashContainer(field); showHash();}, false);
  156. field.addEventListener("blur", function() {hideHash();}, false);
  157. }
  158.  
  159. function positionHashContainer(pwdfield)
  160. {
  161. var hashelement = document.getElementById('visualpasswordhash');
  162. hashelement.style.top = (findPosY(pwdfield) + pwdfield.offsetHeight) + "px";
  163. hashelement.style.left = (findPosX(pwdfield)) + "px";
  164. }
  165.  
  166. function findPosX(obj) {
  167. var curleft = curtop = 0;
  168. if (obj.offsetParent) {
  169. do {
  170. curleft += obj.offsetLeft;
  171. } while (obj = obj.offsetParent);
  172. return curleft;
  173. }
  174. }
  175. function findPosY(obj) {
  176. var curleft = curtop = 0;
  177. if (obj.offsetParent) {
  178. do {
  179. curtop += obj.offsetTop;
  180. } while (obj = obj.offsetParent);
  181. return curtop;
  182. }
  183. }
  184.  
  185. function showHash()
  186. {
  187. document.getElementById('visualpasswordhash').className = "visualpasswordhash on";
  188. }
  189.  
  190. function hideHash()
  191. {
  192. document.getElementById('visualpasswordhash').className = "visualpasswordhash";
  193. }
  194.  
  195. function passwordChanged(field)
  196. {
  197. positionHashContainer(field);
  198. showHash();
  199. var pwd = field.value;
  200.  
  201. if (pwd.length >= 5)
  202. {
  203. var hash = SHA256(pwd);
  204.  
  205. setSymbol(document.getElementById('vpwdhash_icon1'), parseInt("0x" + hash.substring(4,6)) % symbols.length);
  206. setSymbol(document.getElementById('vpwdhash_icon2'), parseInt("0x" + hash.substring(7,9)) % symbols.length);
  207. setSymbol(document.getElementById('vpwdhash_icon3'), parseInt("0x" + hash.substring(23,25)) % symbols.length);
  208.  
  209. var sum = parseInt("0x" + hash) % (colors.length * colors.length * colors.length);
  210. document.getElementById('vpwdhash_icon1').parentNode.style.background = colors[/*(sum / colors.length / colors.length)*/parseInt("0x" + hash.substring(6,7)) % colors.length];
  211. document.getElementById('vpwdhash_icon2').parentNode.style.background = colors[/*(sum / colors.length)*/parseInt("0x" + hash.substring(9,10)) % colors.length];
  212. document.getElementById('vpwdhash_icon3').parentNode.style.background = colors[/*sum*/parseInt("0x" + hash.substring(25,26)) % colors.length];
  213. }
  214. else
  215. {
  216. setSymbol(document.getElementById('vpwdhash_icon1'), Math.floor(Math.random() * symbols.length));
  217. setSymbol(document.getElementById('vpwdhash_icon2'), Math.floor(Math.random() * symbols.length));
  218. setSymbol(document.getElementById('vpwdhash_icon3'), Math.floor(Math.random() * symbols.length));
  219.  
  220. document.getElementById('vpwdhash_icon1').parentNode.style.background = colors[Math.floor(Math.random() * colors.length)];
  221. document.getElementById('vpwdhash_icon2').parentNode.style.background = colors[Math.floor(Math.random() * colors.length)];
  222. document.getElementById('vpwdhash_icon3').parentNode.style.background = colors[Math.floor(Math.random() * colors.length)];
  223. }
  224. }
  225.  
  226. function setSymbol(node, symbol)
  227. {
  228. //alert(names[symbol]);
  229. node.src = symbols[symbol];
  230. node.title = names[symbol];
  231. node.alt = names[symbol];
  232. }
  233.  
  234. function SHA256(s){
  235. var chrsz = 8;
  236. var hexcase = 0;
  237. function safe_add (x, y) {
  238. var lsw = (x & 0xFFFF) + (y & 0xFFFF);
  239. var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
  240. return (msw << 16) | (lsw & 0xFFFF);
  241. }
  242. function S (X, n) { return ( X >>> n ) | (X << (32 - n)); }
  243. function R (X, n) { return ( X >>> n ); }
  244. function Ch(x, y, z) { return ((x & y) ^ ((~x) & z)); }
  245. function Maj(x, y, z) { return ((x & y) ^ (x & z) ^ (y & z)); }
  246. function Sigma0256(x) { return (S(x, 2) ^ S(x, 13) ^ S(x, 22)); }
  247. function Sigma1256(x) { return (S(x, 6) ^ S(x, 11) ^ S(x, 25)); }
  248. function Gamma0256(x) { return (S(x, 7) ^ S(x, 18) ^ R(x, 3)); }
  249. function Gamma1256(x) { return (S(x, 17) ^ S(x, 19) ^ R(x, 10)); }
  250. function core_sha256 (m, l) {
  251. var K = new Array(0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5, 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5, 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3, 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174, 0xE49B69C1, 0xEFBE4786, 0xFC19DC6, 0x240CA1CC, 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA, 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7, 0xC6E00BF3, 0xD5A79147, 0x6CA6351, 0x14292967, 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13, 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85, 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3, 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070, 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5, 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3, 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208, 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2);
  252. var HASH = new Array(0x6A09E667, 0xBB67AE85, 0x3C6EF372, 0xA54FF53A, 0x510E527F, 0x9B05688C, 0x1F83D9AB, 0x5BE0CD19);
  253. var W = new Array(64);
  254. var a, b, c, d, e, f, g, h, i, j;
  255. var T1, T2;
  256. m[l >> 5] |= 0x80 << (24 - l % 32);
  257. m[((l + 64 >> 9) << 4) + 15] = l;
  258. for ( var i = 0; i<m.length; i+=16 ) {
  259. a = HASH[0];
  260. b = HASH[1];
  261. c = HASH[2];
  262. d = HASH[3];
  263. e = HASH[4];
  264. f = HASH[5];
  265. g = HASH[6];
  266. h = HASH[7];
  267. for ( var j = 0; j<64; j++) {
  268. if (j < 16) W[j] = m[j + i];
  269. else W[j] = safe_add(safe_add(safe_add(Gamma1256(W[j - 2]), W[j - 7]), Gamma0256(W[j - 15])), W[j - 16]);
  270. T1 = safe_add(safe_add(safe_add(safe_add(h, Sigma1256(e)), Ch(e, f, g)), K[j]), W[j]);
  271. T2 = safe_add(Sigma0256(a), Maj(a, b, c));
  272. h = g;
  273. g = f;
  274. f = e;
  275. e = safe_add(d, T1);
  276. d = c;
  277. c = b;
  278. b = a;
  279. a = safe_add(T1, T2);
  280. }
  281. HASH[0] = safe_add(a, HASH[0]);
  282. HASH[1] = safe_add(b, HASH[1]);
  283. HASH[2] = safe_add(c, HASH[2]);
  284. HASH[3] = safe_add(d, HASH[3]);
  285. HASH[4] = safe_add(e, HASH[4]);
  286. HASH[5] = safe_add(f, HASH[5]);
  287. HASH[6] = safe_add(g, HASH[6]);
  288. HASH[7] = safe_add(h, HASH[7]);
  289. }
  290. return HASH;
  291. }
  292. function str2binb (str) {
  293. var bin = Array();
  294. var mask = (1 << chrsz) - 1;
  295. for(var i = 0; i < str.length * chrsz; i += chrsz) {
  296. bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (24 - i%32);
  297. }
  298. return bin;
  299. }
  300. function Utf8Encode(string) {
  301. string = string.replace(/\r\n/g,"\n");
  302. var utftext = "";
  303. for (var n = 0; n < string.length; n++) {
  304. var c = string.charCodeAt(n);
  305. if (c < 128) {
  306. utftext += String.fromCharCode(c);
  307. }
  308. else if((c > 127) && (c < 2048)) {
  309. utftext += String.fromCharCode((c >> 6) | 192);
  310. utftext += String.fromCharCode((c & 63) | 128);
  311. }
  312. else {
  313. utftext += String.fromCharCode((c >> 12) | 224);
  314. utftext += String.fromCharCode(((c >> 6) & 63) | 128);
  315. utftext += String.fromCharCode((c & 63) | 128);
  316. }
  317. }
  318. return utftext;
  319. }
  320. function binb2hex (binarray) {
  321. var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
  322. var str = "";
  323. for(var i = 0; i < binarray.length * 4; i++) {
  324. str += hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8+4)) & 0xF) +
  325. hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8 )) & 0xF);
  326. }
  327. return str;
  328. }
  329. s = Utf8Encode(s);
  330. return binb2hex(core_sha256(str2binb(s), s.length * chrsz));
  331. }

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址