<html><body><div style="color:#000; background-color:#fff; font-family:times new roman, new york, times, serif;font-size:12pt"><div><span>Hi again Willi, All,</span></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: 'times new roman', 'new york', times, serif; font-style: normal; background-color: transparent;"><br></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: 'times new roman', 'new york', times, serif; font-style: normal; background-color: transparent;">Another question: could someone tell me what this program does?</div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: 'times new roman', 'new york', times, serif; font-style: normal; background-color: transparent;"><br></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: 'times new roman', 'new york', times, serif; font-style: normal; background-color:
 transparent;">Thanks&nbsp;</div><div></div><div>&nbsp;</div><div>Nathalie<br>_____________________________________</div><div style="font-family: 'times new roman', 'new york', times, serif; font-size: 12pt;"><div style="font-family: 'times new roman', 'new york', times, serif; font-size: 12pt;"><div class="y_msg_container">&lt;html&gt;<br>&lt;head&gt;<br>&lt;title&gt;DHT480 Tool&lt;/title&gt;<br>&lt;script type="text/javascript"&gt;<br><br>const XOR_BASE32 = 0x13; // VRH2T 10011 for IPv4<br>const LOCAL_TOP_LEVEL_DOMAIN = ".&amp;REG; MARS";<br>const PLASTIC_CARD_STRING1 = "6060572447574848";<br>const PLASTIC_CARD_NUMBER1 = Number(PLASTIC_CARD_STRING1);<br>const PLASTIC_CARD_STRING2 = "1603961-10bb";<br>const PLASTIC_CARD_NUMBER2 = Number(PLASTIC_CARD_STRING2);<br><br>function InsertSoftWay(){<br>&nbsp; &nbsp; document.write("\<br>&nbsp; &nbsp; &nbsp; &nbsp; &lt;font face=arial size=5&gt;\<br>&nbsp; &nbsp; &nbsp; &nbsp; &lt;center&gt;\<br>&nbsp; &nbsp;
 &nbsp; &nbsp; &nbsp; &nbsp; &lt;br/&gt;\<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;b&gt;&lt;font color=blue&gt;Z&lt;/font&gt;&lt;font color=red&gt;O&lt;/font&gt;&lt;font<br>color=green&gt;O&lt;/font&gt;&lt;font color=blue&gt;M&lt;/font&gt;&lt;/b&gt;://Soft.WAY.&amp;reg;\<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;br/&gt;\<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;font size=-2&gt;&lt;span<br>onclick='Dedication(\".MARS\");'&gt;Copyright 1981-2014<br>The.UNIR.Project.&amp;trade;&lt;/span&gt;&lt;/font&gt;\<br>&nbsp; &nbsp; &nbsp; &nbsp; &lt;/center&gt;\<br>&nbsp; &nbsp; &nbsp; &nbsp; &lt;/font&gt;\<br>&nbsp; &nbsp; ");<br>&nbsp; &nbsp; document.write("&lt;center&gt;&lt;font face=arial<br>size=3&gt;&lt;b&gt;"+PLASTIC_CARD_STRING1+"&lt;/b&gt; "+Date()+"<br>&lt;b&gt;"+PLASTIC_CARD_STRING2+"&lt;/b&gt;&lt;/font&gt;&lt;/center&gt;");<br>}<br><br>//<br>// Dedication<br>//<br><br>function Dedication(planet){<br>&nbsp; &nbsp; alert("<a
 ymailto="mailto:C@T" href="mailto:C@T">C@T</a> is Alive on "+planet+"\nNZ N=14 Z=26\n01110<br>11010\nDedicated to an Angel, D &amp; JD\nVisit "+planet+"\n<br>TC.2014");<br>}<br><br>var LargeInteger = 4000000000000000000 + Number(new Date()); // Spice<br>things up a bit<br>var Multiplier=1;<br>var CurrentPI = LargeInteger;<br>var CurrentI = 1;<br>var CurrentSign = 1;<br>var SpigotCount=0;<br>var DHTlimit = 15; // 256*15=3840 3840/480=8&nbsp; 3840/256=15<br>var LastSaved = -1;<br>var MatrixCard = "1234567890123456";<br><br>/////////////////////////////(C).Soft.WAY.(R) Sun Feb 23 2014 03:43:11<br>GMT-0600 (Central Standard Time)<br>//<br>// class TimeByte<br>//<br>// Generate CamelCase String for 8-bit TimeByte - could be "" for 0x00<br>//<br>// DYMWDSHM - Decade.Year.Month.Week.Day.SHIFT.Hour.Minute<br>// DYMWDSHM - Decade.Year.Month.Week.Day.SHIFT.Hour.Moment<br>//<br><br>function ZOOM_TimeByte_toString(aTimeByte){<br>&nbsp; &nbsp; var _ =
 "";<br><br>&nbsp; &nbsp; if(aTimeByte &amp; 0x80){<br>&nbsp; &nbsp; &nbsp; &nbsp; _ += "Decade";<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; if(aTimeByte &amp; 0x40){<br>&nbsp; &nbsp; &nbsp; &nbsp; _ += "Year";<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; if(aTimeByte &amp; 0x20){<br>&nbsp; &nbsp; &nbsp; &nbsp; _ += "Month";<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; if(aTimeByte &amp; 0x10){<br>&nbsp; &nbsp; &nbsp; &nbsp; _ += "Week";<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; if(aTimeByte &amp; 0x08){<br>&nbsp; &nbsp; &nbsp; &nbsp; _ += "Day";<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; if(aTimeByte &amp; 0x04){<br>&nbsp; &nbsp; &nbsp; &nbsp; _ += "Shift";<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; if(aTimeByte &amp; 0x02){<br>&nbsp; &nbsp; &nbsp; &nbsp; _ += "Hour";<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; if(aTimeByte &amp; 0x01){<br>&nbsp; &nbsp; &nbsp; &nbsp; _ += "Moment";<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; return _;<br>}<br><br>/////////////////////////////(C).Soft.WAY.(R) Sun Feb 23 2014
 03:43:11<br>GMT-0600 (Central Standard Time)<br>//<br>// class Date<br>//<br>// Date.add_aTimeByte(aByte);<br>//<br>// DYMWDSHM - Decade.Year.Month.Week.Day.SHIFT.Hour.Minute<br>// DYMWDSHM - Decade.Year.Month.Week.Day.SHIFT.Hour.Moment<br>//<br>// 10011011 - Decade..Week.Day..Hour.Moment<br>// 00011011 - ...Week.Day..Hour.Moment<br>//<br>// SHIFT - Random value from 8 to 12 hours - Discrete Random Shifts ~<br>8 9 10 11 12 hours<br>// MOMENT - Random value from 60 to 480 Seconds depending on .NET Load<br>when the PUT() is done<br>//<br><br>function ZOOM_Date_add_aTimeByte(aDate,aTimeByte){<br><br>&nbsp; &nbsp; // typeOf aDate and aTimeByte should be checked - just in case -<br><a ymailto="mailto:C@T" href="mailto:C@T">C@T</a> just checks number of arguments<br><br>&nbsp; &nbsp; var _ = new Date(aDate.getTime()); // make a separate new object to return<br><br>&nbsp; &nbsp; if(aTimeByte &amp; 0x01){<br>&nbsp; &nbsp; &nbsp; &nbsp; var randomMoment =
 (Math.random()*420)+60; // Random value<br>from 60 to 480 Seconds<br>&nbsp; &nbsp; &nbsp; &nbsp; _.setUTCSeconds(_.getUTCSeconds()+randomMoment);<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; if(aTimeByte &amp; 0x02){<br>&nbsp; &nbsp; &nbsp; &nbsp; _.setUTCHours(_.getUTCHours()+1);<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; if(aTimeByte &amp; 0x04){<br>&nbsp; &nbsp; &nbsp; &nbsp; var randomShift = Math.floor(Math.random()*5)+8; // Discrete<br>Random Shifts ~ 8 9 10 11 12 hours<br>&nbsp; &nbsp; &nbsp; &nbsp; _.setUTCHours(_.getUTCHours()+randomShift);<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; if(aTimeByte &amp; 0x08){<br>&nbsp; &nbsp; &nbsp; &nbsp; _.setUTCHours(_.getUTCHours()+24);<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; if(aTimeByte &amp; 0x10){<br>&nbsp; &nbsp; &nbsp; &nbsp; _.setUTCHours(_.getUTCHours()+168);<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; if(aTimeByte &amp; 0x20){<br>&nbsp; &nbsp; &nbsp; &nbsp; _.setUTCMonth(_.getUTCMonth()+1);<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp;
 if(aTimeByte &amp; 0x40){<br>&nbsp; &nbsp; &nbsp; &nbsp; _.setUTCFullYear(_.getUTCFullYear()+1);<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; if(aTimeByte &amp; 0x80){<br>&nbsp; &nbsp; &nbsp; &nbsp; _.setUTCFullYear(_.getUTCFullYear()+10);<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; // Returns a Date Object NOT a DateTime48<br><br>&nbsp; &nbsp; return _;<br>}<br><br>//////////////////////////////////////////////////////////////////////////////<br><br>// Binary class methods<br>var Binary = {<br><br>&nbsp; &nbsp; // Convert a string to a byte array<br>stringToBytes: function (str) {<br>&nbsp; &nbsp; for (var bytes = [], i = 0; i &lt; str.length; i++)<br>&nbsp; &nbsp; &nbsp; &nbsp; bytes.push(str.charCodeAt(i));<br>&nbsp; &nbsp; return bytes;<br>&nbsp; &nbsp; },<br><br>&nbsp; &nbsp; // Convert a byte array to a string<br>bytesToString: function (bytes) {<br>&nbsp; &nbsp; for (var str = [], i = 0; i &lt; bytes.length; i++)<br>&nbsp; &nbsp; &nbsp; &nbsp;
 str.push(String.fromCharCode(bytes[i]));<br>&nbsp; &nbsp; return str.join("");<br>&nbsp; &nbsp; },<br><br>&nbsp; &nbsp; // Convert a HEX string to a byte array<br>hexToBytes: function (str) {<br>&nbsp; &nbsp; for (var bytes = [], i = 0; i &lt; str.length; i+=2){<br>&nbsp; &nbsp; &nbsp; &nbsp; bytes.push(((str.charCodeAt(i)-48)&lt;&lt;4)+(str.charCodeAt(i+1)-48));<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; return bytes;<br>&nbsp; &nbsp; }<br>}<br><br>function Base32String_fromString (s) {<br>&nbsp; &nbsp; return ZOOM_Base32Array_fromString(s).join("");<br>}<br><br>function ZOOM_Base32String_fromBytes(bytes){<br>&nbsp; &nbsp; var _ = "";<br><br>&nbsp; &nbsp; _ = ZOOM_String_fromBytes(bytes);<br><br>&nbsp; &nbsp; return ZOOM_Base32_fromString(_);<br>}<br><br>function ZOOM_Base32Array_fromString (s) {<br><br>&nbsp; &nbsp; var base32bits = 5; // 2^5=32 log2(32)=5<br>&nbsp; &nbsp; var alphabet = "0ABCDEFGHIJKLMNOPQRSTUVWXYZ12389"; // 32 Symbols<br><br>&nbsp; &nbsp;
 // pad with 0 to be multiple of 40 bits<br>&nbsp; &nbsp; while( ((s.length*8) % 40) != 0){<br>&nbsp; &nbsp; &nbsp; &nbsp; s += '\x00';<br>&nbsp; &nbsp; }<br><br>&nbsp; &nbsp; var n40bit = (s.length*8)/40;<br><br>&nbsp; &nbsp; var parts = [];<br><br>&nbsp; &nbsp; // process 40-bits at a time<br>&nbsp; &nbsp;  for (i = 0; i &lt; n40bit; i++) {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; parts.push(alphabet.charAt(s.charCodeAt(i*5) &gt;&gt; 3));<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; parts.push(alphabet.charAt( ((s.charCodeAt(i*5) &amp; 0x07) &lt;&lt; 2)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  | (s.charCodeAt(i*5+1) &gt;&gt; 6)));<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; parts.push(alphabet.charAt( ((s.charCodeAt(i*5+1) &amp; 0x3F) &gt;&gt; 1) ));<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; parts.push(alphabet.charAt( ((s.charCodeAt(i*5+1) &amp; 0x01) &lt;&lt; 4)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  | (s.charCodeAt(i*5+2) &gt;&gt; 4)));<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; parts.push(alphabet.charAt( ((s.charCodeAt(i*5+2) &amp; 0x0F) &lt;&lt; 1)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  | (s.charCodeAt(i*5+3) &gt;&gt; 7)));<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; parts.push(alphabet.charAt( ((s.charCodeAt(i*5+3) &amp; 0x7F) &gt;&gt; 2)));<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; parts.push(alphabet.charAt( ((s.charCodeAt(i*5+3) &amp; 0x03) &lt;&lt; 3)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  | (s.charCodeAt(i*5+4) &gt;&gt; 5)));<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; parts.push(alphabet.charAt( ((s.charCodeAt(i*5+4) &amp; 0x1F) )));<br>&nbsp; &nbsp;  }<br><br>&nbsp; &nbsp;  return parts;<br>}<br><br>//<br>// class Date48<br>//<br>//
 Loc3+Century5+Year7+Month4+Date5+Hour5+Min6+Sec6+Msec7=48<br>// lllCCCCC.YYYYYYYM.MMMDDDDD.HHHHHMMM.MMMSSSSS.Smmmmmmm<br>//<br>// a 6-byte class commonly used in a 160-bit MatrixWord160<br>//<br>// MatrixWord160 Fixed160 = [class16+key32+locDateTime48+random32]~checksum32<br>//<br>// return the 48-bit ZOOM.Date used in 160-bit DHT480<br>//<br>//<br><br>function ZOOM_Date48_asBytes(location){<br>&nbsp; &nbsp; //<a ymailto="mailto:C@T" href="mailto:C@T">C@T</a> today=Date.new();<br>&nbsp; &nbsp; var today = new Date();<br>&nbsp; &nbsp; var msec = Math.floor((today.getUTCMilliseconds()/1000)*127)&amp;0x7F;<br><br>&nbsp; &nbsp; var _ = [];<br><br>&nbsp; &nbsp; if(typeof location == "undefined"){<br>&nbsp; &nbsp; &nbsp; &nbsp; location = 0;<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; _.push(location &amp; 0x07); // [0] Loc3 0-7 EARTH=0 MARS=7<br>&nbsp; &nbsp; _.push(Math.floor(today.getUTCFullYear()/100)); // [1] CCCCC 0-31<br>&nbsp; &nbsp;
 _.push(today.getUTCFullYear()%100); // [2] YYYYYYY7 0-99<br>&nbsp; &nbsp; _.push(today.getUTCMonth()); // [3] MMMM4 0-11 Jan-Dec<br>&nbsp; &nbsp; _.push(today.getUTCDate()); // [4] DDDDD5 1-31<br>&nbsp; &nbsp; _.push(today.getUTCHours()); // [5] HHHHH5 1-23<br>&nbsp; &nbsp; _.push(today.getUTCMinutes()); // [6] MMMMMM6 1-60<br>&nbsp; &nbsp; _.push(today.getUTCSeconds()); // [7] SSSSSS6 1-60<br>&nbsp; &nbsp; _.push(msec); // [8] mmmmmmm7 0-127 mapped &amp; rounded (above)<br><br>&nbsp; &nbsp; return _;<br>}<br><br>function ZOOM_Date48_asBits(aDate48){<br>&nbsp; &nbsp; var _ = "";<br><br>&nbsp; &nbsp; for(var i=0; i&lt;6; i++){<br>&nbsp; &nbsp; &nbsp; &nbsp; _ = _ + ZOOM_Byte_toBitString(aDate48[i]);<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; return _;<br>}<br><br>// Loc3+Century5+Year7+Month4+Date5+Hour5+Min6+Sec6+msec5=48<br>// lllCCCCC.YYYYYYYM.MMMDDDDD.HHHHHMMM.MMMSSSSS.Smmmmmmm<br><br>function ZOOM_Date48(){<br>&nbsp; &nbsp; var today =
 ZOOM_Date48_asBytes(0); // [0] Loc3 0-7 EARTH=0 MARS=7<br><br>&nbsp; &nbsp; return ZOOM_Date48_encodeFromBytes(today);<br>}<br><br>function ZOOM_Date48_encodeFromBytes(bytes){<br>&nbsp; &nbsp; var _ = [];<br><br>&nbsp; &nbsp; _.push(((bytes[0]&lt;&lt;5)&amp;0xE0)|((bytes[1]&gt;&gt;0)&amp;0x1F)); // [0] lllCCCCC<br>&nbsp; &nbsp; _.push(((bytes[2]&lt;&lt;1)&amp;0xFE)|((bytes[3]&gt;&gt;3)&amp;0x01)); // [1] YYYYYYYM<br>&nbsp; &nbsp; _.push(((bytes[3]&lt;&lt;5)&amp;0xE0)|((bytes[4]&gt;&gt;0)&amp;0x1F)); // [2] MMMDDDDD<br>&nbsp; &nbsp; _.push(((bytes[5]&lt;&lt;3)&amp;0xF8)|((bytes[6]&gt;&gt;3)&amp;0x07)); // [3] HHHHHMMM<br>&nbsp; &nbsp; _.push(((bytes[6]&lt;&lt;5)&amp;0xE0)|((bytes[7]&gt;&gt;1)&amp;0x1F)); // [4] MMMSSSSS<br>&nbsp; &nbsp; _.push(((bytes[7]&lt;&lt;7)&amp;0x80)|((bytes[8]&gt;&gt;0)&amp;0x7F)); // [5] Smmmmmmm<br><br>&nbsp; &nbsp; return _;<br>}<br><br>//<br>// class Class160<br>//<br>//&nbsp; &nbsp; ZOOM 160 bit Header - Version16 + Key32 +
 DateTime48 + Random32<br>+ Checksum32<br><br>function ZOOM_Bytes_160(class16Bytes,key32Bytes){<br>&nbsp; &nbsp; var pi32 = 3141592653;<br>&nbsp; &nbsp; var random32 = Math.floor(Math.random()*pi32); // PI based 3.14159...<br>&nbsp; &nbsp; //TEST var random32 = Math.floor(.99999999999999*pi32); // PI<br>based 3.14159...<br><br>&nbsp; &nbsp; var _ = [];<br><br>&nbsp; &nbsp; //_.push((class16&gt;&gt;8)&amp;0xFF); _.push(class16&amp;0xFF);<br>&nbsp; &nbsp; _.push(class16Bytes[0]); _.push(class16Bytes[1]);<br><br>&nbsp; &nbsp; //_.push((key32&gt;&gt;24)&amp;0xFF); _.push((key32&gt;&gt;16)&amp;0xFF);<br>_.push((key32&gt;&gt;8)&amp;0xFF); _.push((key32)&amp;0xFF);<br>&nbsp; &nbsp; _.push(key32Bytes[0]); _.push(key32Bytes[1]);<br>_.push(key32Bytes[2]); _.push(key32Bytes[3]);<br>//48<br>&nbsp; &nbsp; // BUG found in Bytes to Hex - a single push shows in alert but is<br>missing in for loop<br>&nbsp; &nbsp; var zoomDate = ZOOM_Date48();<br>&nbsp; &nbsp; for(var
 i=0; i&lt;6; i++){<br>&nbsp; &nbsp; &nbsp; &nbsp; _.push(zoomDate[i]);<br>&nbsp; &nbsp; }<br>//96<br>&nbsp; &nbsp; _.push((random32&gt;&gt;24)&amp;0xFF); _.push((random32&gt;&gt;16)&amp;0xFF);<br>_.push((random32&gt;&gt;8)&amp;0xFF); _.push((random32)&amp;0xFF);<br>//128<br>&nbsp; &nbsp; var checksum = Crypto.SHA256(Crypto.SHA256(_, { asBytes: true }),<br>{ asBytes: true });<br>&nbsp; &nbsp; _.push(checksum[0]); _.push(checksum[1]); _.push(checksum[2]);<br>_.push(checksum[3]);<br>//160<br>&nbsp; &nbsp; return _;<br>}<br><br>// pack single bytes into string one per uni-code 16-bit doubleByte<br><br>function ZOOM_String_fromBytes(bytes){<br>&nbsp; &nbsp; var _String = "";<br><br>&nbsp; &nbsp; for(var i = 0; i &lt; bytes.length; i++) {<br>&nbsp; &nbsp; &nbsp; &nbsp; _String += String.fromCharCode(bytes[i]);<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; return _String;<br>}<br><br>// Pull 40 bits from 8 Symbols and store in 5 bytes<br>//<br>// Example<br>//NZDZ
 M8NA<br>//<br>//&nbsp; 0&nbsp; &nbsp;  1&nbsp; &nbsp;  2&nbsp; &nbsp;  3&nbsp; &nbsp;  4&nbsp; &nbsp;  5&nbsp; &nbsp;  6&nbsp; &nbsp;  7<br>//<br>//01110 11010 00100 11010 01101 11110 01110 00001<br>//<br>//01110 110|10 00100 1|1010 0110|1 11110 01|110 00001<br><br>function ZOOM_Bytes5_fromString8(input){<br>&nbsp; &nbsp; var alphabet = "0ABCDEFGHIJKLMNOPQRSTUVWXYZ12389"; // Base32 Symbols<br><br>&nbsp; &nbsp; var _value = 0;<br>&nbsp; &nbsp; var parts = [];<br><br>&nbsp; &nbsp; parts.push(((alphabet.indexOf(input[0])&amp;0x1F)&lt;&lt;3)|((alphabet.indexOf(input[1])&amp;0x1C)&gt;&gt;2));<br>&nbsp; &nbsp; parts.push(((alphabet.indexOf(input[1])&amp;0x03)&lt;&lt;6)|((alphabet.indexOf(input[2])&amp;0x1F)&lt;&lt;1)|((alphabet.indexOf(input[3])&amp;0x10)&gt;&gt;4));<br>&nbsp; &nbsp; parts.push(((alphabet.indexOf(input[3])&amp;0x0F)&lt;&lt;4)|((alphabet.indexOf(input[4])&amp;0x1E)&gt;&gt;1));<br>&nbsp; &nbsp;
 parts.push(((alphabet.indexOf(input[4])&amp;0x01)&lt;&lt;7)|((alphabet.indexOf(input[5])&amp;0x1F)&lt;&lt;2)|((alphabet.indexOf(input[6])&amp;0x18)&gt;&gt;3));<br>&nbsp; &nbsp; parts.push(((alphabet.indexOf(input[6])&amp;0x07)&lt;&lt;5)|(alphabet.indexOf(input[7])&amp;0x1F));<br><br>&nbsp; &nbsp; return parts;<br>}<br><br>// Extract bytes from Base32 String of 200-bit Account<br>// Type8 + Hash160 + Checksum32<br>// Example: "NZDZM8NAYHSL9NQF1X0ZD8SGGX3AS9CCTVBILHHH"<br>//&nbsp;  returns 118,137,166,249,193,202,38,207,186,38,222,1,162,122,103,62,58,25,252,99,165,132,150,33,8<br>//<br><br>function ZOOM_Bytes_fromBase32Account(input){<br>&nbsp; &nbsp; var parts = [];<br><br>&nbsp; &nbsp; for(var i = 0; i&lt;5; i++){<br>&nbsp; &nbsp; &nbsp; &nbsp; parts.push(ZOOM_Bytes5_fromString8(input.substr(i*8,8)));<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; return parts;<br>}<br><br>// ZOOM_PrintableBase32_fromString<br>//<br>// Encode a string using custom Base32 (5-bits
 per Symbol)<br>// Operates on 40 bits at a time (40=5*8)<br>// Pads with 0x00 to ensure 40-bit boundaries<br>// 200-bit eWallet - 25 bytes - 40 Symbols Base32<br>// 160-bit IPv3 Header - 20 bytes - 32 Symbols Base32<br>//<br>// Steal 2+3=5 bits from 160-bit hash - 10+155+35 - Type10+Hash155+CheckSum35<br>// makes it appear as if Type10 is two symbols and Checksum is 35 bits<br>// Type10 is really only 8 bits and CheckSum35 is really 32 bits<br><br>function ZOOM_PrintableBase32_fromString (s) {<br><br>&nbsp; &nbsp; var parts = ZOOM_Base32Array_fromString(s);<br><br>&nbsp; &nbsp; return ZOOM_PrintableBase32_fromArray(parts);<br>}<br><br>function ZOOM_PrintableBase32_fromArray (parts) {<br><br>&nbsp; &nbsp; return "&lt;b&gt;&lt;font size=+2&gt;"+parts[0]+parts[1]+"&lt;/font&gt;.&lt;/b&gt;"+<br>&nbsp; &nbsp; &nbsp; &nbsp; parts[2]+parts[3]+parts[4]+parts[5]+parts[6]+parts[7]+parts[8]+parts[9]+<br>&nbsp; &nbsp; &nbsp; &nbsp;
 parts[10]+parts[11]+parts[12]+parts[13]+parts[14]+parts[15]+parts[16]+parts[17]+<br>&nbsp; &nbsp; &nbsp; &nbsp; parts[18]+parts[19]+parts[20]+parts[21]+parts[22]+parts[23]+parts[24]+parts[25]+<br>&nbsp; &nbsp; &nbsp; &nbsp; parts[26]+parts[27]+parts[28]+parts[29]+parts[30]+parts[31]+parts[32]+<br>&nbsp; &nbsp; &nbsp; &nbsp; "&lt;b&gt;."+parts[33]+parts[34]+parts[35]+parts[36]+parts[37]+parts[38]+parts[39]+"&lt;/b&gt;";<br>}<br><br>function ZOOM_Base32_fromString (s) {<br><br>&nbsp; &nbsp; var parts = ZOOM_Base32Array_fromString(s);<br><br>&nbsp; &nbsp; return parts.join("");<br>}<br><br>// Just the base32 symbols - works for various sizes<br><br>function ZOOM_BasicPrintableBase32_fromString (s) {<br><br>&nbsp; &nbsp; var parts = ZOOM_Base32Array_fromString(s);<br><br>&nbsp; &nbsp; return parts.join("");<br>}<br><br>// DNSD BASE64 [0-9,A-Z,a-z,-.]<br>//<br>// Note [-.] do not show up when only digits are used in the original key<br><br>function
 Base64String_fromString (s) {<br>&nbsp; &nbsp; return ZOOM_Base64Array_fromString(s).join("");<br>}<br><br>function ZOOM_Base64Array_fromString (s) {<br><br>&nbsp; &nbsp; var base64bits = 6; // 2^6=64 log2(64)=6<br>&nbsp; &nbsp; var alphabet =<br>"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-."; //<br>64 Symbols<br><br>&nbsp; &nbsp; // pad with 0 to be multiple of 24 bits<br>&nbsp; &nbsp; while( ((s.length*8) % 24) != 0){<br>&nbsp; &nbsp; &nbsp; &nbsp; s += '\x00';<br>&nbsp; &nbsp; }<br><br>&nbsp; &nbsp; var n24bit = (s.length*8)/24;<br><br>&nbsp; &nbsp; var parts = [];<br><br>&nbsp; &nbsp; // process 24-bits at a time<br>&nbsp; &nbsp;  for (var i = 0; i &lt; n24bit; i++) {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; parts.push(alphabet.charAt(s.charCodeAt(i*3) &gt;&gt; 2)); //6<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; parts.push(alphabet.charAt( ((s.charCodeAt(i*3) &amp; 0x03) &lt;&lt; 4) //2<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  | ((s.charCodeAt(i*3+1) &amp; 0xF0) &gt;&gt; 4))); //4<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; parts.push(alphabet.charAt( ((s.charCodeAt(i*3+1) &amp; 0x0F) &lt;&lt; 2) //4<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  | ((s.charCodeAt(i*3+2) &amp; 0xC0) &gt;&gt; 6))); //2<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; parts.push(alphabet.charAt( (s.charCodeAt(i*3+2) &amp; 0x3F)));<br>&nbsp; &nbsp;  }<br><br>&nbsp; &nbsp;  return parts;<br>}<br><br>function ZOOM_MD160(messageBytes){<br>&nbsp; &nbsp; return Crypto.RIPEMD160(messageBytes, { asBytes: true });<br>}<br><br>function ZOOM_SHA256(messageBytes){<br>&nbsp; &nbsp; return Crypto.SHA256(messageBytes, { asBytes: true });<br>}<br><br>///////////////////////////////////// END ZOOM<br>///////////////////////////////////////<br>&lt;/script&gt;<br><br>&lt;script
 type="text/javascript"&gt;<br><br>//////////////////////////////////&nbsp; CRYPTO<br>//////////////////////////////////////////<br><br>/*!<br>* Crypto-JS v2.0.0<br>* <a href="http://code.google.com/p/crypto-js/" target="_blank">http://code.google.com/p/crypto-js/</a><br>* Copyright (c) 2009, Jeff Mott. All rights reserved.<br>* <a href="http://code.google.com/p/crypto-js/wiki/License" target="_blank">http://code.google.com/p/crypto-js/wiki/License</a><br>*/<br><br>(function () {<br><br>// map is likely unused because builtin browser functions are used<br>// [A-Z,a-z,0-9,+/] "=" used for padding<br>var base64map =<br>"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";<br>//var base64map =<br>"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-.";<br><br><br>// Global Crypto object<br><br>var Crypto = window.Crypto = {};<br><br>// Crypto utilities<br><br>var util = Crypto.util = {<br><br>&nbsp; &nbsp; &nbsp; &nbsp; // Bit-wise
 rotate left<br>&nbsp; &nbsp; rotl: function (n, b) {<br>&nbsp; &nbsp; &nbsp; &nbsp; return (n &lt;&lt; b) | (n &gt;&gt;&gt; (32 - b));<br>&nbsp; &nbsp; },<br><br>&nbsp; &nbsp; &nbsp; &nbsp; // Bit-wise rotate right<br>&nbsp; &nbsp; rotr: function (n, b) {<br>&nbsp; &nbsp; &nbsp; &nbsp; return (n &lt;&lt; (32 - b)) | (n &gt;&gt;&gt; b);<br>&nbsp; &nbsp; },<br><br>&nbsp; &nbsp; &nbsp; &nbsp; // Swap big-endian to little-endian and vice versa<br>&nbsp; &nbsp; endian: function (n) {<br><br>&nbsp; &nbsp; &nbsp; &nbsp; // If number given, swap endian<br>&nbsp; &nbsp; &nbsp; &nbsp; if(n.constructor == Number) {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return util.rotl(n, 8) &amp; 0x00FF00FF | util.rotl(n, 24) &amp; 0xFF00FF00;<br>&nbsp; &nbsp; &nbsp; &nbsp; }<br><br>&nbsp; &nbsp; &nbsp; &nbsp; // Else, assume array and swap all items<br>&nbsp; &nbsp; &nbsp; &nbsp; for(var i = 0; i &lt; n.length; i++)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; n[i] =
 util.endian(n[i]);<br>&nbsp; &nbsp; &nbsp; &nbsp; return n;<br>&nbsp; &nbsp; },<br><br>&nbsp; &nbsp; &nbsp; &nbsp; // Generate an array of any length of random bytes<br>&nbsp; &nbsp; randomBytes: function (n) {<br>&nbsp; &nbsp; &nbsp; &nbsp; for (var bytes = []; n &gt; 0; n--)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bytes.push(Math.floor(Math.random() * 256));<br>&nbsp; &nbsp; &nbsp; &nbsp; return bytes;<br>&nbsp; &nbsp; },<br><br>&nbsp; &nbsp; &nbsp; &nbsp; // Convert a byte array to big-endian 32-bit words<br>&nbsp; &nbsp; bytesToWords: function (bytes) {<br>&nbsp; &nbsp; &nbsp; &nbsp; for (var words = [], i = 0, b = 0; i &lt; bytes.length; i++, b += 8)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; words[b &gt;&gt;&gt; 5] |= bytes[i] &lt;&lt; (24 - b % 32);<br>&nbsp; &nbsp; &nbsp; &nbsp; return words;<br>&nbsp; &nbsp; },<br><br>&nbsp; &nbsp; &nbsp; &nbsp; // Convert big-endian 32-bit words to a byte array<br>&nbsp; &nbsp; wordsToBytes: function
 (words) {<br>&nbsp; &nbsp; &nbsp; &nbsp; for(var bytes = [], b = 0; b &lt; words.length * 32; b += 8)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bytes.push((words[b &gt;&gt;&gt; 5] &gt;&gt;&gt; (24 - b % 32)) &amp; 0xFF);<br>&nbsp; &nbsp; &nbsp; &nbsp; return bytes;<br>&nbsp; &nbsp; },<br><br>&nbsp; &nbsp; &nbsp; &nbsp; // Convert a byte array to a hex string<br>&nbsp; &nbsp; bytesToHex: function (bytes) {<br>&nbsp; &nbsp; &nbsp; &nbsp; //BUG bytes with single push do not have proper length<br>(missing interior values)<br>&nbsp; &nbsp; &nbsp; &nbsp; for(var hex = [], i = 0; i &lt; bytes.length; i++) {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; hex.push((bytes[i] &gt;&gt;&gt; 4).toString(16));<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; hex.push((bytes[i] &amp; 0xF).toString(16));<br>&nbsp; &nbsp; &nbsp; &nbsp; }<br>&nbsp; &nbsp; &nbsp; &nbsp; return hex.join("");<br>&nbsp; &nbsp; },<br><br>&nbsp; &nbsp; &nbsp; &nbsp; // Convert a hex string to a
 byte array<br>&nbsp; &nbsp; hexToBytes: function (hex) {<br>&nbsp; &nbsp; &nbsp; &nbsp; for(var bytes = [], c = 0; c &lt; hex.length; c += 2)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bytes.push(parseInt(hex.substr(c, 2), 16));<br>&nbsp; &nbsp; &nbsp; &nbsp; return bytes;<br>&nbsp; &nbsp; },<br><br>&nbsp; &nbsp; &nbsp; &nbsp; // Convert a byte array to a base-64 string - "=" as pad<br>&nbsp; &nbsp; bytesToBase64: function (bytes) {<br>&nbsp; &nbsp; &nbsp; &nbsp; // Use browser-native function if it exists<br>&nbsp; &nbsp; &nbsp; &nbsp; if(typeof btoa == "function"){<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //alert("Using builtin btoa for base64");<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return btoa(Binary.bytesToString(bytes));<br>&nbsp; &nbsp; &nbsp; &nbsp; }<br>// likely not used - see above<br>&nbsp; &nbsp; &nbsp; &nbsp; for(var base64 = [], i = 0; i &lt; bytes.length; i += 3) {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var triplet =
 (bytes[i] &lt;&lt; 16) | (bytes[i + 1] &lt;&lt; 8) | bytes[i + 2];<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for(var j = 0; j &lt; 4; j++){<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(i * 8 + j * 6 &lt;= bytes.length * 8)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; base64.push(base64map.charAt((triplet &gt;&gt;&gt; 6 * (3 -<br>j)) &amp; 0x3F));<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else base64.push("=");<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>&nbsp; &nbsp; &nbsp; &nbsp; }<br>&nbsp; &nbsp; &nbsp; &nbsp; return base64.join("");<br>&nbsp; &nbsp; },<br><br>&nbsp; &nbsp; &nbsp; &nbsp; // Convert a base-64 string to a byte array<br>&nbsp; &nbsp; base64ToBytes: function (base64) {<br>&nbsp; &nbsp; &nbsp; &nbsp; // Use browser-native function if it exists<br>&nbsp; &nbsp; &nbsp; &nbsp; if (typeof atob == "function") {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //alert("using
 builtin atob");<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return Binary.stringToBytes(atob(base64));<br>&nbsp; &nbsp; &nbsp; &nbsp; }<br>// below likely not used - see above<br><br>&nbsp; &nbsp; &nbsp; &nbsp; // Remove non-base-64 characters<br>//BUG???? what about a-z ?<br>&nbsp; &nbsp; &nbsp; &nbsp; //base64 = base64.replace(/[^A-Z0-9+\/]/ig, "");<br><br>&nbsp; &nbsp; &nbsp; &nbsp; //Assume input has proper characters<br><br>&nbsp; &nbsp; &nbsp; &nbsp; for (var bytes = [], i = 0, imod4 = 0; i &lt; base64.length;<br>imod4 = ++i % 4) {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (imod4 == 0) continue;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bytes.push(((base64map.indexOf(base64.charAt(i - 1)) &amp;<br>(Math.pow(2, -2 * imod4 + 8) - 1)) &lt;&lt; (imod4 * 2)) |<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (base64map.indexOf(base64.charAt(i)) &gt;&gt;&gt; (6 - imod4 * 2)));<br>&nbsp; &nbsp; &nbsp; &nbsp; }<br><br>&nbsp; &nbsp; &nbsp; &nbsp;
 return bytes;<br><br>&nbsp; &nbsp; }<br>};<br><br>/////////////////////////////////////////////////////////////<br><br>&nbsp; &nbsp; &nbsp; &nbsp; // Crypto mode namespace<br>&nbsp; &nbsp; &nbsp; &nbsp; Crypto.mode = {};<br><br>&nbsp; &nbsp; &nbsp; &nbsp; // Crypto character encodings<br>&nbsp; &nbsp; &nbsp; &nbsp; var charenc = Crypto.charenc = {};<br><br>//////////////////////// UTF-8 ///////////////////////////////<br><br>&nbsp; &nbsp; &nbsp; &nbsp; // UTF-8 encoding<br>&nbsp; &nbsp; &nbsp; &nbsp; var UTF8 = charenc.UTF8 = {<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Convert a string to a byte array<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; stringToBytes: function (str) {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return Binary.stringToBytes(unescape(encodeURIComponent(str)));<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; },<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Convert a byte array to a string<br>&nbsp;
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bytesToString: function (bytes) {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return decodeURIComponent(escape(Binary.bytesToString(bytes)));<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br><br>&nbsp; &nbsp; &nbsp; &nbsp; };<br><br>//////////////////////// Binary ///////////////////////////////<br><br>&nbsp; &nbsp; &nbsp; &nbsp; // Binary encoding<br>&nbsp; &nbsp; &nbsp; &nbsp; var Binary = charenc.Binary = {<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Convert a string to a byte array<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; stringToBytes: function (str) {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (var bytes = [], i = 0; i &lt; str.length; i++)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bytes.push(str.charCodeAt(i));<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return bytes;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
 },<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Convert a byte array to a string<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bytesToString: function (bytes) {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (var str = [], i = 0; i &lt; bytes.length; i++)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; str.push(String.fromCharCode(bytes[i]));<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return str.join("");<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br><br>&nbsp; &nbsp; &nbsp; &nbsp; };<br><br>&nbsp; &nbsp; })();<br><br><br>////////////////////////////////// SHA256<br>//////////////////////////////////////////<br><br>/*!<br>* Crypto-JS v2.0.0<br>* <a href="http://code.google.com/p/crypto-js/" target="_blank">http://code.google.com/p/crypto-js/</a><br>* Copyright (c) 2009, Jeff Mott. All rights reserved.<br>* <a href="http://code.google.com/p/crypto-js/wiki/License"
 target="_blank">http://code.google.com/p/crypto-js/wiki/License</a><br>*/<br>(function () {<br><br>// Shortcuts<br>var C = Crypto,<br>util = C.util,<br>charenc = C.charenc,<br>UTF8 = charenc.UTF8,<br>Binary = charenc.Binary;<br><br>// Constants<br>var K = [0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,<br>&nbsp; &nbsp; 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,<br>&nbsp; &nbsp; 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,<br>&nbsp; &nbsp; 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,<br>&nbsp; &nbsp; 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,<br>&nbsp; &nbsp; 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,<br>&nbsp; &nbsp; 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,<br>&nbsp; &nbsp; 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,<br>&nbsp; &nbsp; 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,<br>&nbsp; &nbsp; 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,<br>&nbsp; &nbsp; 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,<br>&nbsp;
 &nbsp; 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,<br>&nbsp; &nbsp; 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,<br>&nbsp; &nbsp; 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,<br>&nbsp; &nbsp; 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,<br>&nbsp; &nbsp; 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2];<br><br>&nbsp; &nbsp; &nbsp; &nbsp; // Public API<br>&nbsp; &nbsp; var SHA256 = C.SHA256 = function (message, options) {<br>&nbsp; &nbsp; &nbsp; &nbsp; var digestbytes = util.wordsToBytes(SHA256._sha256(message));<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return options &amp;&amp; options.asBytes ? digestbytes :<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  options &amp;&amp; options.asString ? Binary.bytesToString(digestbytes) :<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  util.bytesToHex(digestbytes);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; };<br><br>&nbsp; &nbsp; &nbsp; &nbsp; // The core<br>&nbsp; &nbsp; SHA256._sha256 = function (message)
 {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Convert to byte array<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (message.constructor == String) message =<br>UTF8.stringToBytes(message);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /* else, assume byte array already */<br><br>&nbsp; &nbsp; &nbsp; &nbsp; var m = util.bytesToWords(message),<br>&nbsp; &nbsp; &nbsp; &nbsp; l = message.length * 8,<br>&nbsp; &nbsp; &nbsp; &nbsp; H = [0x6A09E667, 0xBB67AE85, 0x3C6EF372, 0xA54FF53A,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x510E527F, 0x9B05688C, 0x1F83D9AB, 0x5BE0CD19],<br>&nbsp; &nbsp; &nbsp; &nbsp; w = [],<br>&nbsp; &nbsp; &nbsp; &nbsp; a, b, c, d, e, f, g, h, i, j,<br>&nbsp; &nbsp; &nbsp; &nbsp; t1, t2;<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Padding<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; m[l &gt;&gt; 5] |= 0x80 &lt;&lt; (24 - l % 32);<br>&nbsp; &nbsp;
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; m[((l + 64 &gt;&gt; 9) &lt;&lt; 4) + 15] = l;<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (var i = 0; i &lt; m.length; i += 16) {<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; a = H[0];<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; b = H[1];<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; c = H[2];<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; d = H[3];<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; e = H[4];<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; f = H[5];<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; g = H[6];<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; h = H[7];<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (var j = 0; j &lt; 64;
 j++) {<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (j &lt; 16) w[j] = m[j + i];<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else {<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var gamma0x = w[j - 15],<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; gamma1x = w[j - 2],<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; gamma0 = ((gamma0x &lt;&lt; 25) | (gamma0x &gt;&gt;&gt; 7)) ^<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((gamma0x &lt;&lt; 14) | (gamma0x &gt;&gt;&gt; 18)) ^<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  (gamma0x &gt;&gt;&gt; 3),<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; gamma1 =
 ((gamma1x &lt;&lt; 15) | (gamma1x &gt;&gt;&gt; 17)) ^<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((gamma1x &lt;&lt; 13) | (gamma1x &gt;&gt;&gt; 19)) ^<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  (gamma1x &gt;&gt;&gt; 10);<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; w[j] = gamma0 + (w[j - 7] &gt;&gt;&gt; 0) +<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  gamma1 + (w[j - 16] &gt;&gt;&gt; 0);<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var ch = e &amp; f ^ ~e &amp; g,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; maj = a &amp; b ^ a &amp; c ^ b &amp; c,<br>&nbsp; &nbsp; &nbsp; &nbsp;
 &nbsp; &nbsp; &nbsp; &nbsp; sigma0 = ((a &lt;&lt; 30) | (a &gt;&gt;&gt; 2)) ^<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  ((a &lt;&lt; 19) | (a &gt;&gt;&gt; 13)) ^<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  ((a &lt;&lt; 10) | (a &gt;&gt;&gt; 22)),<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sigma1 = ((e &lt;&lt; 26) | (e &gt;&gt;&gt; 6)) ^<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  ((e &lt;&lt; 21) | (e &gt;&gt;&gt; 11)) ^<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  ((e &lt;&lt; 7) | (e &gt;&gt;&gt; 25));<br><br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; t1 = (h &gt;&gt;&gt; 0) + sigma1 + ch + (K[j]) + (w[j] &gt;&gt;&gt; 0);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; t2 =
 sigma0 + maj;<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; h = g;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; g = f;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; f = e;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; e = d + t1;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; d = c;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; c = b;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; b = a;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; a = t1 + t2;<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; H[0] += a;<br>&nbsp; &nbsp;
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; H[1] += b;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; H[2] += c;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; H[3] += d;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; H[4] += e;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; H[5] += f;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; H[6] += g;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; H[7] += h;<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return H;<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; };<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Package private blocksize<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SHA256._blocksize = 16;<br><br>&nbsp; &nbsp; &nbsp; &nbsp;
 })();<br><br>//////////////////&nbsp; RIPEMD-160&nbsp;  ////////////////////////////////////////<br><br>&nbsp; &nbsp; &nbsp; &nbsp; /*!<br>&nbsp; &nbsp; &nbsp; &nbsp; * Crypto-JS v2.0.0<br>&nbsp; &nbsp; &nbsp; &nbsp; * <a href="http://code.google.com/p/crypto-js/" target="_blank">http://code.google.com/p/crypto-js/</a><br>&nbsp; &nbsp; &nbsp; &nbsp; * Copyright (c) 2009, Jeff Mott. All rights reserved.<br>&nbsp; &nbsp; &nbsp; &nbsp; * <a href="http://code.google.com/p/crypto-js/wiki/License" target="_blank">http://code.google.com/p/crypto-js/wiki/License</a><br>&nbsp; &nbsp; &nbsp; &nbsp; *<br>&nbsp; &nbsp; &nbsp; &nbsp; * A JavaScript implementation of the RIPEMD-160 Algorithm<br>&nbsp; &nbsp; &nbsp; &nbsp; * Version 2.2 Copyright Jeremy Lin, Paul Johnston 2000 - 2009.<br>&nbsp; &nbsp; &nbsp; &nbsp; * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet<br>&nbsp; &nbsp; &nbsp; &nbsp; * Distributed under the BSD License<br>&nbsp; &nbsp; &nbsp;
 &nbsp; * See <a href="http://pajhome.org.uk/crypt/md5" target="_blank">http://pajhome.org.uk/crypt/md5 </a>for details.<br>&nbsp; &nbsp; &nbsp; &nbsp; * Also <a href="http://www.ocf.berkeley.edu/~jjlin/jsotp/" target="_blank">http://www.ocf.berkeley.edu/~jjlin/jsotp/</a><br>&nbsp; &nbsp; &nbsp; &nbsp; * Ported to Crypto-JS by Stefan Thomas.<br>&nbsp; &nbsp; &nbsp; &nbsp; */<br><br>&nbsp; &nbsp; &nbsp; &nbsp; (function () {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Shortcuts<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var C = Crypto,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; util = C.util,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; charenc = C.charenc,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; UTF8 = charenc.UTF8,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Binary = charenc.Binary;<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Convert a byte array to little-endian 32-bit
 words<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; util.bytesToLWords = function (bytes) {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var output = Array(bytes.length &gt;&gt; 2);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (var i = 0; i &lt; output.length; i++)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; output[i] = 0;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (var i = 0; i &lt; bytes.length * 8; i += 8)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; output[i &gt;&gt; 5] |= (bytes[i / 8] &amp; 0xFF) &lt;&lt; (i % 32);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return output;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; };<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Convert little-endian 32-bit words to a byte array<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; util.lWordsToBytes = function (words) {<br>&nbsp; &nbsp;
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var output = [];<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (var i = 0; i &lt; words.length * 32; i += 8)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; output.push((words[i &gt;&gt; 5] &gt;&gt;&gt; (i % 32)) &amp; 0xff);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return output;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; };<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Public API<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var RIPEMD160 = C.RIPEMD160 = function (message, options) {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var digestbytes =<br>util.lWordsToBytes(RIPEMD160._rmd160(message));<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return options &amp;&amp; options.asBytes ? digestbytes :<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; options &amp;&amp; options.asString ? Binary.bytesToString(digestbytes)
 :<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; util.bytesToHex(digestbytes);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; };<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // The core<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; RIPEMD160._rmd160 = function (message) {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Convert to byte array<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (message.constructor == String) message =<br>UTF8.stringToBytes(message);<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var x = util.bytesToLWords(message),<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; len = message.length * 8;<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /* append padding */<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; x[len &gt;&gt; 5] |= 0x80 &lt;&lt; (len % 32);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; x[(((len + 64) &gt;&gt;&gt; 9) &lt;&lt;
 4) + 14] = len;<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var h0 = 0x67452301;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var h1 = 0xefcdab89;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var h2 = 0x98badcfe;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var h3 = 0x10325476;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var h4 = 0xc3d2e1f0;<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (var i = 0; i &lt; x.length; i += 16) {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var T;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var A1 = h0, B1 = h1, C1 = h2, D1 = h3, E1 = h4;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var A2 = h0, B2 = h1, C2 = h2, D2 = h3, E2 = h4;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (var j = 0; j &lt;= 79; ++j)
 {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; T = safe_add(A1, rmd160_f(j, B1, C1, D1));<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; T = safe_add(T, x[i + rmd160_r1[j]]);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; T = safe_add(T, rmd160_K1(j));<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; T = safe_add(bit_rol(T, rmd160_s1[j]), E1);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; A1 = E1; E1 = D1; D1 = bit_rol(C1, 10); C1 = B1; B1 = T;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; T = safe_add(A2, rmd160_f(79 - j, B2, C2, D2));<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; T = safe_add(T, x[i + rmd160_r2[j]]);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; T = safe_add(T, rmd160_K2(j));<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; T = safe_add(bit_rol(T, rmd160_s2[j]), E2);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; A2 = E2; E2 = D2; D2 = bit_rol(C2, 10); C2 = B2; B2 = T;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; T = safe_add(h1, safe_add(C1, D2));<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; h1 = safe_add(h2, safe_add(D1, E2));<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; h2 = safe_add(h3, safe_add(E1, A2));<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; h3 = safe_add(h4, safe_add(A1, B2));<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; h4 = safe_add(h0, safe_add(B1,
 C2));<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; h0 = T;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return [h0, h1, h2, h3, h4];<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; function rmd160_f(j, x, y, z) {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return (0 &lt;= j &amp;&amp; j &lt;= 15) ? (x ^ y ^ z) :<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (16 &lt;= j &amp;&amp; j &lt;= 31) ? (x &amp; y) | (~x &amp; z) :<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (32 &lt;= j &amp;&amp; j &lt;= 47) ? (x | ~y) ^ z :<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (48 &lt;= j &amp;&amp; j &lt;= 63) ? (x &amp; z) | (y &amp; ~z) :<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (64 &lt;= j &amp;&amp; j &lt;= 79) ? x ^ (y | ~z) :<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "rmd160_f: j out of
 range";<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; function rmd160_K1(j) {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return (0 &lt;= j &amp;&amp; j &lt;= 15) ? 0x00000000 :<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (16 &lt;= j &amp;&amp; j &lt;= 31) ? 0x5a827999 :<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (32 &lt;= j &amp;&amp; j &lt;= 47) ? 0x6ed9eba1 :<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (48 &lt;= j &amp;&amp; j &lt;= 63) ? 0x8f1bbcdc :<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (64 &lt;= j &amp;&amp; j &lt;= 79) ? 0xa953fd4e :<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "rmd160_K1: j out of range";<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; function rmd160_K2(j) {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return (0 &lt;= j &amp;&amp; j &lt;= 15) ? 0x50a28be6 :<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
 &nbsp; (16 &lt;= j &amp;&amp; j &lt;= 31) ? 0x5c4dd124 :<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (32 &lt;= j &amp;&amp; j &lt;= 47) ? 0x6d703ef3 :<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (48 &lt;= j &amp;&amp; j &lt;= 63) ? 0x7a6d76e9 :<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (64 &lt;= j &amp;&amp; j &lt;= 79) ? 0x00000000 :<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "rmd160_K2: j out of range";<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var rmd160_r1 = [<br>&nbsp; &nbsp; &nbsp; &nbsp; 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,<br>&nbsp; &nbsp; &nbsp; &nbsp; 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,<br>&nbsp; &nbsp; &nbsp; &nbsp; 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,<br>&nbsp; &nbsp; &nbsp; &nbsp; 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,<br>&nbsp; &nbsp; &nbsp; &nbsp; 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13<br>&nbsp; &nbsp;
 ];<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var rmd160_r2 = [<br>&nbsp; &nbsp; &nbsp; &nbsp; 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,<br>&nbsp; &nbsp; &nbsp; &nbsp; 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,<br>&nbsp; &nbsp; &nbsp; &nbsp; 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,<br>&nbsp; &nbsp; &nbsp; &nbsp; 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,<br>&nbsp; &nbsp; &nbsp; &nbsp; 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11<br>&nbsp; &nbsp; ];<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var rmd160_s1 = [<br>&nbsp; &nbsp; &nbsp; &nbsp; 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,<br>&nbsp; &nbsp; &nbsp; &nbsp; 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,<br>&nbsp; &nbsp; &nbsp; &nbsp; 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,<br>&nbsp; &nbsp; &nbsp; &nbsp; 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,<br>&nbsp; &nbsp; &nbsp; &nbsp; 9, 15, 5, 11,
 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6<br>&nbsp; &nbsp; ];<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var rmd160_s2 = [<br>&nbsp; &nbsp; &nbsp; &nbsp; 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,<br>&nbsp; &nbsp; &nbsp; &nbsp; 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,<br>&nbsp; &nbsp; &nbsp; &nbsp; 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,<br>&nbsp; &nbsp; &nbsp; &nbsp; 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,<br>&nbsp; &nbsp; &nbsp; &nbsp; 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11<br>&nbsp; &nbsp; ];<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /*<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; * Add integers, wrapping at 2^32. This uses 16-bit<br>operations internally<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; * to work around bugs in some JS interpreters.<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; */<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; function safe_add(x, y)
 {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var lsw = (x &amp; 0xFFFF) + (y &amp; 0xFFFF);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var msw = (x &gt;&gt; 16) + (y &gt;&gt; 16) + (lsw &gt;&gt; 16);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return (msw &lt;&lt; 16) | (lsw &amp; 0xFFFF);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /*<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; * Bitwise rotate a 32-bit number to the left.<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; */<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; function bit_rol(num, cnt) {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return (num &lt;&lt; cnt) | (num &gt;&gt;&gt; (32 - cnt));<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>&nbsp; &nbsp; &nbsp; &nbsp; })();<br>///////////////////////////END RIPEMD160/////////////////////////////////////<br><br>function
 ImportCard1(matrix){<br><br>&nbsp; &nbsp; if(typeof matrix != 'string'){<br>&nbsp; &nbsp; &nbsp; &nbsp; alert("MatrixCard #1 is not a string");<br>&nbsp; &nbsp; &nbsp; &nbsp; return;<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; if(matrix.length &gt; 16){<br>&nbsp; &nbsp; &nbsp; &nbsp; alert("Spaces removed");<br>&nbsp; &nbsp; &nbsp; &nbsp; matrix = matrix.replace(/[ \n\r]/g,''); // for some reason<br>spaces (32) get inserted<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; if(!(/^[0123456789]{16}$/.test(matrix))){<br>&nbsp; &nbsp; &nbsp; &nbsp; alert("Entry is not MATRIX Card format");<br>&nbsp; &nbsp; &nbsp; &nbsp; return;<br>&nbsp; &nbsp; }<br><br>&nbsp; &nbsp; MatrixCard1 = matrix;<br>&nbsp; &nbsp; LargeInteger = 4000000000000000000 + Number(new Date()) + Number(matrix);<br>&nbsp; &nbsp; document.getElementById("LargeInteger").innerHTML = LargeInteger;<br>}<br><br>function ImportCard2(matrix){<br><br>&nbsp; &nbsp; if(typeof matrix != 'string'){<br>&nbsp; &nbsp; &nbsp;
 &nbsp; alert("MatrixCard #2 is not a string");<br>&nbsp; &nbsp; &nbsp; &nbsp; return;<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; if(matrix.length &gt; 16){<br>&nbsp; &nbsp; &nbsp; &nbsp; alert("Spaces removed");<br>&nbsp; &nbsp; &nbsp; &nbsp; matrix = matrix.replace(/[ \n\r]/g,''); // for some reason<br>spaces (32) get inserted<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; if(!(/^[0123456789]{16}$/.test(matrix))){<br>&nbsp; &nbsp; &nbsp; &nbsp; alert("Entry is not MATRIX Card format");<br>&nbsp; &nbsp; &nbsp; &nbsp; return;<br>&nbsp; &nbsp; }<br><br>&nbsp; &nbsp; MatrixCard2 = matrix;<br>&nbsp; &nbsp; LargeInteger = 4000000000000000000 + Number(new Date()) + Number(matrix);<br>&nbsp; &nbsp; document.getElementById("LargeInteger").innerHTML = LargeInteger;<br>}<br><br>function ImportMatrix(matrix){<br><br>//DHT480_EXPIRE_aKey(DHT480_TEST_KEY);<br><br>&nbsp; &nbsp; if(typeof matrix != 'string'){<br>&nbsp; &nbsp; &nbsp; &nbsp; alert("Matrix is not a string");<br>&nbsp;
 &nbsp; &nbsp; &nbsp; return;<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; if(matrix.length &gt; 960){<br>&nbsp; &nbsp; &nbsp; &nbsp; //alert("Spaces removed");<br>&nbsp; &nbsp; &nbsp; &nbsp; matrix = matrix.replace(/[ \n\r]/g,''); // for some reason<br>spaces (32) get inserted<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; if(!(/^[123456789\n]{960}$/.test(matrix))){<br>&nbsp; &nbsp; &nbsp; &nbsp; alert("Entry is not DHT480 MATRIX format");<br>&nbsp; &nbsp; &nbsp; &nbsp; return;<br>&nbsp; &nbsp; }<br><br>&nbsp; &nbsp; var bytes = Binary.stringToBytes(matrix);<br>&nbsp; &nbsp; var index=0;<br>&nbsp; &nbsp; for(var i=0; i&lt;8; i++){<br>&nbsp; &nbsp; &nbsp; &nbsp; var key = [];<br>&nbsp; &nbsp; &nbsp; &nbsp; for(var j=0; j&lt;120; j++){<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; key.push(bytes[index++]-48); // ASCII "0" (48) not used<br>but the offset is there<br>&nbsp; &nbsp; &nbsp; &nbsp; }<br>&nbsp; &nbsp; &nbsp; &nbsp; document.getElementById("SPIGOT").innerHTML
 =<br>document.getElementById("SPIGOT").innerHTML+key.join("")+"\n";<br>&nbsp; &nbsp; }<br>}<br><br><br>function ComputePI(event){<br>&nbsp; &nbsp; if(!LargeInteger){<br>&nbsp; &nbsp; &nbsp; &nbsp; alert("LargeInteger is not set yet...");<br>&nbsp; &nbsp; &nbsp; &nbsp; return;<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; var iterations = (event.clientX+event.clientY)*Multiplier;<br>&nbsp; &nbsp; for(var i=1; i&lt;iterations; i+=2){<br>&nbsp; &nbsp; &nbsp; &nbsp; ComputePIonce();<br>&nbsp; &nbsp; }<br>}<br><br>function ComputePIonce(){<br>&nbsp; &nbsp; //document.getElementById("LargeInteger").innerHTML = LargeInteger;<br><br>&nbsp; &nbsp; CurrentI += 2;<br>&nbsp; &nbsp; document.getElementById("CurrentI").innerHTML = CurrentI;<br><br>&nbsp; &nbsp; document.getElementById("LargeCurrent").innerHTML = LargeInteger/CurrentI;<br><br>&nbsp; &nbsp; if(CurrentSign == 0){<br>&nbsp; &nbsp; &nbsp; &nbsp; CurrentPI += LargeInteger/CurrentI;<br>&nbsp; &nbsp; &nbsp; &nbsp;
 CurrentSign = 1;<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; else{<br>&nbsp; &nbsp; &nbsp; &nbsp; CurrentPI -= LargeInteger/CurrentI;<br>&nbsp; &nbsp; &nbsp; &nbsp; CurrentSign = 0;<br>&nbsp; &nbsp; }<br><br>&nbsp; &nbsp; document.getElementById("CurrentPI").innerHTML = CurrentPI;<br><br>&nbsp; &nbsp; if(CurrentI &lt;10){<br>&nbsp; &nbsp; &nbsp; &nbsp; CapturePI(); // Clipboard has Limit<br>&nbsp; &nbsp; }<br><br>/*<br>*&nbsp; &nbsp; Add your captures here<br>*<br>&nbsp; &nbsp; if(CurrentI == 12345){<br>&nbsp; &nbsp; &nbsp; &nbsp; CapturePI();<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; if(CurrentI == 9999){<br>&nbsp; &nbsp; &nbsp; &nbsp; CapturePI();<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; if(CurrentI &lt;128){<br>&nbsp; &nbsp; &nbsp; &nbsp; CapturePI();<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; if((CurrentI%10000) == 9999){<br>&nbsp; &nbsp; &nbsp; &nbsp; CapturePI();<br>&nbsp; &nbsp; }<br>*<br>*/<br><br>}<br><br>function CapturePI(){<br>&nbsp; &nbsp; // replace all the 0s with
 [1 to 9] because 0 is Disabled in the<br>IPv3 PIDEX Protocol<br>&nbsp; &nbsp; // random replacement values are NOT used because we want the<br>process to be repeatable (deterministic)<br><br>&nbsp; &nbsp; // Don't allow PI Indexes with any 0 digits - this can confuse the<br>user who clicks expecting a capture<br>&nbsp; &nbsp; //if(String(CurrentI).indexOf("0") != -1){<br>&nbsp; &nbsp; //&nbsp; &nbsp; return;<br>&nbsp; &nbsp; //}<br><br>&nbsp; &nbsp; if(SpigotCount &gt;= DHTlimit){<br>&nbsp; &nbsp; &nbsp; &nbsp; return;<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; if(LastSaved == CurrentI){<br>&nbsp; &nbsp; &nbsp; &nbsp; alert("Click Slower OR Move Mouse to Upper Left");<br>&nbsp; &nbsp; &nbsp; &nbsp; return;<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; LastSaved = CurrentI;<br><br>&nbsp; &nbsp; var noZeroes = ReplaceRandom(String(CurrentPI));<br><br>&nbsp; &nbsp; var dateTime = Number(new Date());<br>&nbsp; &nbsp; //var dateTime = "112233445566778899";<br><br>&nbsp;
 &nbsp; document.getElementById("SPIGOT").innerHTML =<br>document.getElementById("SPIGOT").innerHTML+LargeInteger+MatrixCard1+MatrixCard2+CurrentI+CurrentPI+","+noZeroes+dateTime+","+(Math.floor(Math.random()<br>* 1000000000000))+"00000&lt;br&gt;";<br>&nbsp; &nbsp; SpigotCount++;<br>}<br><br>function ReplaceRandom(aString){<br>&nbsp; &nbsp; var _ = aString;<br><br>&nbsp; &nbsp; //var start=0;<br>&nbsp; &nbsp; const start = Math.floor(Math.random() * 10); // Start random but<br>use in sequence - not as random as all random replacement<br><br>&nbsp; &nbsp; for(var i=start; (_.indexOf('0') != -1); i++){<br>&nbsp; &nbsp; &nbsp; &nbsp; _ = _.replace(/0/,(i%9)+1); // Don't replace 0 with 0 - use 1<br>to 9 over and over<br>&nbsp; &nbsp; }<br><br>&nbsp; &nbsp; return _;<br>}<br><br>function ClearSpigot(){<br>&nbsp; &nbsp; document.getElementById("CLIPBOARD").innerHTML =<br>document.getElementById("SPIGOT").innerHTML;<br>&nbsp; &nbsp;
 document.getElementById("SPIGOT").innerHTML = "";<br>&nbsp; &nbsp; SpigotCount=0;<br>}<br><br>function InitPI(){<br>&nbsp; &nbsp; LargeInteger = 4000000000000000000 + Number(new Date()); // Spice<br>things up a bit<br>&nbsp; &nbsp; //LargeInteger = 4000000000000000000; // 0x3782DACE9D900000<br>&nbsp; &nbsp; document.getElementById("LargeInteger").innerHTML = LargeInteger;<br>&nbsp; &nbsp; Multiplier=1;<br>&nbsp; &nbsp; CurrentPI = LargeInteger;<br>&nbsp; &nbsp; CurrentI = 1;<br>&nbsp; &nbsp; CurrentSign = 1;<br>&nbsp; &nbsp; SpigotCount=0;<br>&nbsp; &nbsp; DHTlimit = 15; // 256*15=3840 3840/480=8&nbsp; 3840/256=15<br>&nbsp; &nbsp; LastSaved = -1;<br>&nbsp; &nbsp; MatrixCard1 = "6060572447574848";<br>&nbsp; &nbsp; MatrixCard2 = "6060572447574848";<br>}<br><br>function Accelerate(){<br>&nbsp; &nbsp; if(Multiplier &gt; 4){<br>&nbsp; &nbsp; &nbsp; &nbsp; alert("You may need a faster computer...");<br>&nbsp; &nbsp; &nbsp; &nbsp; Multiplier = .5;<br>&nbsp;
 &nbsp; &nbsp; &nbsp; return;<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; Multiplier=Multiplier*2;<br>}<br><br>function MakeKeys(){<br><br>&nbsp; &nbsp; // Get rid of commas and zeroes<br>&nbsp; &nbsp; var clipboard =<br>ReplaceRandom((document.getElementById("CLIPBOARD").innerHTML).replace(/,/g,""));<br>&nbsp; &nbsp; // no commas or zeroes at this point<br><br>&nbsp; &nbsp; // where do these come from?<br>&nbsp; &nbsp; clipboard = clipboard.replace(/&lt;font&gt;/g,"");<br>&nbsp; &nbsp; clipboard = clipboard.replace(/&lt;\/font&gt;/g,"");<br><br>&nbsp; &nbsp; // UNIX was built on the single byte newline vs CR-LF etc<br>&nbsp; &nbsp; clipboard = clipboard.replace(/&lt;br&gt;/g,"\n");<br><br>&nbsp; &nbsp; var keys = "";<br>&nbsp; &nbsp; var endofline;<br><br>&nbsp; &nbsp; // Zeroes will be gone at this point<br>&nbsp; &nbsp; if(!/[123456789\n]/.test(clipboard)){<br>&nbsp; &nbsp; &nbsp; &nbsp; alert("CLIPBOARD has bad format - Did you CAPTURE anything?");<br>&nbsp;
 &nbsp; &nbsp; &nbsp; return;<br>&nbsp; &nbsp; }<br><br>&nbsp; &nbsp; while((endofline=clipboard.indexOf('\n')) != -1){<br>&nbsp; &nbsp; &nbsp; &nbsp; keys += clipboard.substr(0,120) + '\n';<br>&nbsp; &nbsp; &nbsp; &nbsp; var common =<br>Binary.bytesToString(Binary.hexToBytes(clipboard.substr(0,120)));<br>&nbsp; &nbsp; &nbsp; &nbsp; keys += Base32String_fromString(common) + '\n';<br><br>//DHT480_PUT_aKeyDataTime(Base32String_fromString(common),random_TestArray(),random_TimeByte());<br>DHT480_PUT_aKeyDataTime(Base32String_fromString(common),random_TestArray(),1);<br><br>&nbsp; &nbsp; &nbsp; &nbsp; keys += Base64String_fromString(common) + '\n\n';<br>&nbsp; &nbsp; &nbsp; &nbsp; clipboard = clipboard.replace(/^.*\n/,"");<br>&nbsp; &nbsp; }<br><br>&nbsp; &nbsp; document.getElementById("KEYS").innerHTML = "&lt;pre&gt;"+keys+"&lt;/pre&gt;";<br>}<br><br>function OneSecond(){<br>&nbsp; &nbsp; setTimeout(function () { OneSecond(); }, 1000);<br>&nbsp; &nbsp;
 ComputePIonce();<br>&nbsp; &nbsp; DHT480_EXPIRE_ALL();<br>&nbsp; &nbsp; //CapturePI();<br>}<br><br>function RESET(){<br>&nbsp; &nbsp; InitPI();<br>&nbsp; &nbsp; ClearSpigot();<br>}<br><br>&lt;/script&gt;<br>&lt;/head&gt;<br><br>&lt;!--<br>&nbsp; &nbsp; CSS STYLE<br>--&gt;<br>&lt;style type="text/css"&gt;<br>.details { background-color: #DDDDDD; font-family: Arial; font-size:<br>100%; clear: both; width: 400px; padding: 10px 0 10px 0; margin: 50px<br>auto auto auto; }<br>.footer { background-color: #DDDDDD; font-family: Arial; font-size:<br>50%; clear: both; width: 696px; padding: 10px 0 10px 0; margin: 50px<br>auto auto auto; }<br>&lt;/style&gt;<br><br>&lt;!--<br>&nbsp; &nbsp; BODY<br>--&gt;<br><br>&lt;body onclick="CapturePI();" onkeypress="" onmousemove="ComputePI(event);"&gt;<br><br>&lt;!--<br>&nbsp; &nbsp; VIEW<br>--&gt;<br>&lt;span&gt;&lt;input type="button" value="RESET" onclick="RESET();" /&gt;&lt;/span&gt;<br>&lt;center&gt;<br>&lt;font
 face=arial&gt;<br>&lt;div id="tagline"&gt;<br>&lt;font size=5&gt;&lt;b&gt;<a ymailto="mailto:Techno.C@T" href="mailto:Techno.C@T">Techno.C@T</a>'s&lt;/b&gt;&lt;/font&gt;<br>&lt;br/&gt;<br>&lt;b&gt;Stand-Alone&lt;/b&gt; [OFFLINE] &lt;i&gt;JavaScript&lt;/i&gt; DNSD eWALLET DHT480 PI Workbench<br>&lt;br&gt;<br>&lt;h4&gt;Did you know that PI = 2.222222222222222... ? [Hint: Not BASE10]&lt;/h4&gt;<br>&lt;/div&gt;<br>&lt;br/&gt;<br>&lt;div id="commands"&gt;<br>&lt;br/&gt;<br>&lt;span&gt;&lt;b&gt;Enter MATRIX Card #1:&lt;/b&gt;&lt;input type="text" id="MatrixCard1"<br>size=16 maxLength=16 value="1234567890123456"<br>onfocus="this.select();" onkeypress="if (event.keyCode == 13)<br>ImportCard1(document.getElementById('MatrixCard1').value);"&gt; [0-9<br>ONLY]<br>&lt;br/&gt;<br>&lt;span&gt;<br>&lt;input type="button" id="cardimport" value="Enter Plastic Card #1"<br>onclick="ImportCard1(document.getElementById('MatrixCard1').value);"<br>/&gt;<br>&lt;b&gt;&lt;font
 size=2&gt;...NUMERIC ONLY entry...16 Digits...&lt;/font&gt;&lt;/b&gt;<br>&lt;/span&gt;<br>&lt;br/&gt;<br>&lt;br/&gt;<br>&lt;span&gt;&lt;b&gt;Enter MATRIX Card #2:&lt;/b&gt;&lt;input type="text" id="MatrixCard2"<br>size=16 maxLength=16 value="1234567890123456"<br>onfocus="this.select();" onkeypress="if (event.keyCode == 13)<br>ImportCard1(document.getElementById('MatrixCard2').value);"&gt; [0-9<br>ONLY]<br>&lt;br/&gt;<br>&lt;span&gt;<br>&lt;input type="button" id="cardimport" value="Enter Plastic Card #2"<br>onclick="ImportCard2(document.getElementById('MatrixCard2').value);"<br>/&gt;<br>&lt;b&gt;&lt;font size=2&gt;...NUMERIC ONLY entry...16 Digits...&lt;/font&gt;&lt;/b&gt;<br>&lt;/span&gt;<br>&lt;br/&gt;<br>&lt;/div&gt;<br>&lt;br/&gt;<br>&lt;h3&gt;...Move Mouse near RESET to Iterate FASTER...Click CLEAR and<br>CAPTURE of SPIGOT...&lt;/h3&gt;<br>&lt;div class="details"&gt;LargeInteger:&lt;div id="LargeInteger"&gt;[]&lt;/div&gt;<br>CurrentI:&lt;div
 id="CurrentI"&gt;[]&lt;/div&gt; LargeInteger/CurrentI:&lt;div<br>id="LargeCurrent"&gt;[]&lt;/div&gt;&lt;/div&gt;<br>&lt;br&gt;<br>&lt;i&gt;Are WE There YET ?&lt;/i&gt;....4/1-4/3+4/5-4/7+4/9-4/11+...<br>&lt;span&gt;&lt;input type="button" value="ACCELERATE" onclick="Accelerate();" /&gt;&lt;/span&gt;<br>&lt;h3&gt;31415926535897932384626433832795&lt;/h3&gt;<br>&lt;font face=arial size=12&gt;&lt;div id="CurrentPI"&gt;[]&lt;/div&gt;&lt;/font&gt;<br>&lt;br&gt;<br>Copy and Paste from DHT480 MATRIX...<br>&lt;br/&gt;<br>&lt;span&gt;&lt;b&gt;Enter MATRIX:&lt;/b&gt;&lt;input type="text" id="dhtMatrix" size=64<br>maxLength=974 value="PASTE MATRIX HERE"<br>onfocus="this.select();" onkeypress="if (event.keyCode == 13)<br>ImportMatrix(document.getElementById('dhtMatrix').value);"&gt; [1-9 ONLY]<br>&lt;br/&gt;<br>&lt;span&gt;<br>&lt;input type="button" id="dnsdimport" value="IMPORT"<br>onclick="ImportMatrix(document.getElementById('dhtMatrix').value);"
 /&gt;<br>&lt;b&gt;&lt;font size=2&gt;...NUMERIC ONLY entry...SPACES will be removed...&lt;/font&gt;&lt;/b&gt;<br>&lt;/span&gt;<br>&lt;br/&gt;<br>&lt;script type="text/javascript"&gt; InsertSoftWay(); &lt;/script&gt;<br>&lt;h1&gt;ZOOM://Soft.WAY.&amp;trade;&lt;/h1&gt;<br>&lt;span&gt;&lt;input type="button" value="CLEAR and CAPTURE to CLIPBOARD"<br>onclick="ClearSpigot();" /&gt;&lt;/span&gt;<br>&lt;br/&gt;<br>&lt;b&gt;SPIGOT&lt;/b&gt;&lt;div id="SPIGOT"&gt;&lt;/div&gt;<br>&lt;br/&gt;<br>&lt;b&gt;CLIPBOARD (CSV)&lt;/b&gt;&lt;div id="CLIPBOARD" onclick=""&gt;&lt;/div&gt;<br>&lt;br/&gt;<br>&lt;span&gt;&lt;input type="button" value="reMAKE KEYS from CLIPBOARD"<br>onclick="MakeKeys();" /&gt;&lt;/span&gt;<br>&lt;br/&gt;<br>&lt;b&gt;480-bit DHT KEYS&lt;br&gt;1to9HEX (120 Symbols) - Base32 (96 Symbols)<br>Base64 (80 Symbols ~ KeyPunchCard)&lt;/b&gt;&lt;div id="KEYS" onclick=""&gt;&lt;/div&gt;<br>&lt;/div&gt;<br>&lt;!--<br>&nbsp; &nbsp; SAMPLE
 MATRIX<br>--&gt;<br>&lt;pre&gt;<br>SAMPLE MATRIX - CUT AND PASTE to IMPORT
 above...<br>819412345139691696237891434567139891696239123139491696236656789123326666675939446415456726666675939446415678913919169623<br>672345678593466667872128134234563466667872128134234781399916962614123456778289523919199713923456289523916199773989178139<br>991696261412345679833396837919878132345633396837919878132347813999169626151234567294598314152585732732891234314152585732<br>732834556139791697399489533689631416531178387256912331416531118327256344513969169746927843659153141539689238917789123141<br>539389238917456341395916975552673398694314164395966778739123314164395966778739145139691697617378443171531415474196747467<br>789131415474196747417232313949169768625624482133141638366974456678913141638366974126345231394916977364562448213314163836<br>697445667891314163836697423645623139491697784256246463331415547519213614678931415597119213614231213939169783284514646323<br>14155374192136145678314155273192136144591139291697882734946465131416367882528133234531
4163678825281339167139891697941691<br>&lt;/pre&gt;<br>&lt;i&gt;...THIS is NOT an <a ymailto="mailto:RFC...C@T" href="mailto:RFC...C@T">RFC...C@T</a>&lt;/i&gt;<br>&lt;br/&gt;<br>&lt;pre&gt;&lt;div id="TESTAREA"&gt;&lt;/div&gt;&lt;/pre&gt;<br>&lt;script type="text/javascript"&gt;<br><br>var isArray = Function.isArray || function(o) {<br>return typeof o === "object" &amp;&amp;<br>Object.prototype.toString.call(o) === "[object Array]";<br>};<br><br>const Date_Today = new Date();<br>const Date_Time = Date_Today.getTime();<br>document.write(Date_Today);<br>document.write(Date_Time+" ::
 ");<br>document.write(<br>((Date_Time&gt;&gt;56)&amp;0xFF)+'.'+((Date_Time&gt;&gt;48)&amp;0xFF)+'.'+((Date_Time&gt;&gt;40)&amp;0xFF)+'.'+((Date_Time&gt;&gt;32)&amp;0xFF)+'.'+((Date_Time&gt;&gt;24)&amp;0xFF)+'.'+((Date_Time&gt;&gt;16)&amp;0xFF)+'.'+((Date_Time&gt;&gt;8)&amp;0xFF)+'.'+((Date_Time&gt;&gt;0)&amp;0xFF));<br><br>//////////////////////////////////////////////////////////////////////////////<br>//<br>// DHT480 has TWO methods PUT(KEY480,DATA8192,TIME8) and GET(KEY480)<br>//<br><br>// Create a test Array with KEY480,DATA8192 the TIME8 {TimeByte} is<br>not tested here...see below<br><br>// BASE32 96*5=480 ~ One Symbol short appended below<br>const testKEY =<br>"0ABCDEFGHIJKLMNOPQRSTUVWXYZ123890ABCDEFGHIJKLMNOPQRSTUVWXYZ123890ABCDEFGHIJKLMNOPQRSTUVWXYZ1238";<br>// Leave the 9 off<br><br>// in BASE32 the 0 Symbol is 00000 0x00 therefore 96 0 Symbols is<br>96*5=480 bits of ALL 0s 00000...00000<br><br>const DHT480_ZERO_KEY
 =<br>"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000";<br><br>const DHT480_ONES_KEY =<br>"999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999";<br><br>const DHT480_TEST_KEY =<br>"HDQTJD2UN3IFF8DQDM0RFQKGQEHRFQKFOBHRFHSTOEBSBPJXIEKXHPXXL8AQHELDRU2DHLLDJZHRBNJWPX1QBYQRDRHWMAXV";<br><br>// in BASE32 the 9 Symbol is 11111 0x1F therefore 96 9 Symbols is<br>96*5=480 bits of ALL 1s 11111...11111<br><br>// 96 Symbol RULERs<br>// "012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345"<br>// "0ABCDEFGHIJKLMNOPQRSTUVWXYZ123890ABCDEFGHIJKLMNOPQRSTUVWXYZ123890ABCDEFGHIJKLMNOPQRSTUVWXYZ12389"<br>// "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"<br>// "999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999"<br>//<br>// 96 digits from a
 PI_SPIGOT - NOT #BASE32 note the digits other than {012389}<br>// "819412345139691696237891434567139891696239123139491696236656789123326666675939446415456726666675"<br>//<br>//<br>// "000P00HB0LJAXWIQICAQP1J9ER88BLA8S3GMIJ8NZTDSZNVOU0QR33DQFZWCNH0FJ1B8P23QHDGWKB8JMZQCCFPSBA1CV98U"<br>//<br><br>const DHT480_base32_alphabet = "0ABCDEFGHIJKLMNOPQRSTUVWXYZ12389";<br><br>var DHT480_table = new Array(32); // 32 rows of the test key table<br><br>//<br>// STORE an entry in the DHT480<br>//<br>// aKey - aString of 96 #BASE32 Symbols (96x5=480)<br>// anArray - 1024 Bytes of Data<br>// aTimeByte - DYMWDSHM - Decade.Year.Month.Week.Day.SHIFT.Hour.Moment<br><br>function DHT480_PUT_aKeyDataTime(aKey,anArray,aTimeByte){<br><br>&nbsp; &nbsp; if(aKey in DHT480_table){<br>&nbsp; &nbsp; &nbsp; &nbsp; alert(aKey+" exists");<br>&nbsp; &nbsp; &nbsp; &nbsp; return DHT480_ZERO_KEY;<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; if(aKey.length != 96){<br>&nbsp; &nbsp; &nbsp; &nbsp; return
 DHT480_ONES_KEY;<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; if(anArray.length != 1024){<br>&nbsp; &nbsp; &nbsp; &nbsp; return DHT480_ONES_KEY;<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; for(var i=0; i&lt;1024; i++){<br>&nbsp; &nbsp; &nbsp; &nbsp; if( ! ((anArray[i] &gt;= 0) &amp;&amp; (anArray[i] &lt;= 255)) ){<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return DHT480_ONES_KEY;<br>&nbsp; &nbsp; &nbsp; &nbsp; }<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; if( ! ((aTimeByte &gt;= 0) &amp;&amp; (aTimeByte &lt;= 255)) ){<br>&nbsp; &nbsp; &nbsp; &nbsp; return DHT480_ONES_KEY;<br>&nbsp; &nbsp; }<br><br>&nbsp; &nbsp; DHT480_table[aKey] = new Array(1025);<br><br>&nbsp; &nbsp; DHT480_table[aKey][0] = (ZOOM_Date_add_aTimeByte((new<br>Date()),aTimeByte)).getTime();<br>&nbsp; &nbsp; for(var i=1; i&lt;=1024; i++){<br>&nbsp; &nbsp; &nbsp; &nbsp; DHT480_table[aKey][i] = anArray[i-1];<br>&nbsp; &nbsp; }<br><br>&nbsp; &nbsp; return aKey;<br>}<br><br>//<br>// GET an entry from the
 DHT480<br>//<br><br>function DHT480_GET_aKey(aKey){<br><br>&nbsp; &nbsp; if(aKey.length != 96){<br>&nbsp; &nbsp; &nbsp; &nbsp; return undefined;<br>&nbsp; &nbsp; }<br><br>&nbsp; &nbsp; var _ = new Array(1024);<br><br>&nbsp; &nbsp; for(var i=1; i&lt;=1024; i++){<br>&nbsp; &nbsp; &nbsp; &nbsp; _[i-1] = DHT480_table[aKey][i];<br>&nbsp; &nbsp; }<br><br>&nbsp; &nbsp; return _;<br>}<br><br>//<br>// EXPIRE an entry from the DHT480<br>//<br><br>function DHT480_EXPIRE_aKey(aKey){<br><br>&nbsp; &nbsp; //if(DHT480_table[aKey] == undefined){<br>&nbsp; &nbsp; &nbsp; &nbsp; //alert(aKey+" does not exist");<br>&nbsp; &nbsp; //&nbsp; &nbsp; return;<br>&nbsp; &nbsp; //}<br>&nbsp; &nbsp; if(!(aKey in DHT480_table)){<br>&nbsp; &nbsp; &nbsp; &nbsp; return aKey;<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; if(aKey.length != 96){<br>&nbsp; &nbsp; &nbsp; &nbsp; return aKey;<br>&nbsp; &nbsp; }<br><br>&nbsp; &nbsp; var now = new Date().getTime();<br><br>&nbsp; &nbsp;
 if(DHT480_table[aKey][0] &lt; now){<br>&nbsp; &nbsp; &nbsp; &nbsp; console.log("Expired:"+aKey+":"+new Date);<br>&nbsp; &nbsp; &nbsp; &nbsp; delete DHT480_table[aKey];<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; else{<br>&nbsp; &nbsp; &nbsp; &nbsp; //alert(aKey+" expires at "+DHT480_table[aKey][0]+":::"+new<br>Date(DHT480_table[aKey][0]));<br>&nbsp; &nbsp; }<br><br>&nbsp; &nbsp; return aKey;<br>}<br><br>function DHT480_EXPIRE_ALL(){<br>&nbsp; &nbsp; var p;<br><br>&nbsp; &nbsp; for(p in DHT480_table){ // Loop through the properties<br>&nbsp; &nbsp; &nbsp; &nbsp; //console.log(p);<br>&nbsp; &nbsp; &nbsp; &nbsp; DHT480_EXPIRE_aKey(p);<br>&nbsp; &nbsp; }<br>}<br><br>// Fill the ZERO_KEY DATA8192 with 0s 00000...00000<br><br>DHT480_table[DHT480_ZERO_KEY] = new Array(1025);<br>&nbsp; &nbsp; for(var col = 1; col &lt;= 1024; col++) {<br>&nbsp; &nbsp; &nbsp; &nbsp; DHT480_table[DHT480_ZERO_KEY][col] = 0;<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp;
 DHT480_table[DHT480_ZERO_KEY][0] = (new Date()).getTime();<br><br>// Fill the ONES_KEY DATA8192 with 1s 11111...11111<br><br>DHT480_table[DHT480_ONES_KEY] = new Array(1025);<br>&nbsp; &nbsp; for(var col = 1; col &lt;= 1024; col++) {<br>&nbsp; &nbsp; &nbsp; &nbsp; DHT480_table[DHT480_ONES_KEY][col] = 255; // 0xFF<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; DHT480_table[DHT480_ONES_KEY][0] = (new Date()).getTime();<br><br>// Dump the properties to a TESTAREA<br><br>function dumpDHT480(){<br>&nbsp; &nbsp; document.getElementById("TESTAREA").innerHTML = "";<br>&nbsp; &nbsp; for(p in DHT480_table){ // Loop through the properties<br>&nbsp; &nbsp; &nbsp; &nbsp; //console.log(p);<br>&nbsp; &nbsp; &nbsp; &nbsp; document.getElementById("TESTAREA").innerHTML += p + '&lt;br/&gt;';<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var limit = 0;<br>&nbsp; &nbsp; &nbsp; &nbsp; for(q in DHT480_table[p]){<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
 document.getElementById("TESTAREA").innerHTML += q + ":" +<br>DHT480_table[p][q] + ",";<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(limit++ &gt; 10) break;<br>&nbsp; &nbsp; &nbsp; &nbsp; }<br>&nbsp; &nbsp; &nbsp; &nbsp; document.getElementById("TESTAREA").innerHTML += '&lt;br/&gt;';<br>&nbsp; &nbsp; }<br>}<br><br>function random_TestArray(){<br>&nbsp; &nbsp; var _ = [];<br><br>&nbsp; &nbsp; for(var i = 0; i&lt;1024; i++){<br>&nbsp; &nbsp; &nbsp; &nbsp; _[i] = Math.floor(Math.random() * 256);<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; return _;<br>}<br><br>function random_TestROM(){<br>&nbsp; &nbsp; var _ = new Array(522240);<br><br>&nbsp; &nbsp; for(var i = 0; i&lt;522240; i++){<br>&nbsp; &nbsp; &nbsp; &nbsp; _[i] = Math.floor(Math.random() * 256);<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; return _;<br>}<br><br>function random_TimeByte(){<br><br>&nbsp; &nbsp; return Math.floor(Math.random() *
 256);<br>}<br><br>//DHT480_PUT_aKeyDataTime(DHT480_TEST_KEY,random_TestArray(),random_TimeByte());<br>//DHT480_PUT_aKeyDataTime(DHT480_TEST_KEY,random_TestArray(),random_TimeByte());<br><br>DHT480_PUT_aKeyDataTime(DHT480_TEST_KEY,random_TestArray(),1); // the<br>smallest TimeByte = aMoment up to 8 minutes<br><br>//alert(DHT480_TEST_KEY);<br><br>DHT480_EXPIRE_aKey(DHT480_TEST_KEY);<br><br>///////////////////////////////////////////////////////////////////////////////////////////////////////////////////<br><br>&lt;/script&gt;<br>&lt;!--<br>&nbsp; &nbsp; FOOTER<br>--&gt;<br>&lt;div class="footer" onclick="Dedication('MARS 128n 128e');"&gt;<br>&lt;center&gt;&lt;span&gt;Copyright &amp;copy; 1981-2014 The UNIR&amp;trade;<br>Project&lt;/span&gt;&lt;/center&gt;&lt;br&gt;<br>&lt;span&gt;Comments &amp; JavaScript Copyrights are included in the Source&lt;/span&gt;<br>&lt;br/&gt;<br>&lt;span&gt;No Warranty - FREEly pass this around the IPv3 IPv16 ZOOM
 #COMNET&lt;/span&gt;<br>&lt;br/&gt;<br>&lt;span&gt;THIS IS NOT an RFC or Property of &lt;b&gt;THE.XXX.ORGy&lt;/b&gt; aka<br>The.Big.Lie.Society*&lt;/span&gt;<br>&lt;br/&gt;<br>...<br>&lt;br/&gt;<br>&lt;span&gt;#COMNET only uses .COM and .NET Legacy DNS ~ .NET derives from<br>.COM ~ #NETCOM&lt;/span&gt;<br>&lt;br/&gt;<br>&lt;/div&gt;<br>&lt;/font&gt;<br>&lt;/center&gt;<br><br>&lt;!--<br>&nbsp; &nbsp; CONTROLLER<br>--&gt;<br><br>&lt;script type="text/javascript"&gt;<br><br>//<br>// GlobalROM BLOBsize is 522240 Bytes<br>//<br>// 272 x 480 x 32bits - based on SONY PSP Screen Size<br>//<br><br>var GlobalROM = random_TestROM();<br><br>var GlobalROM_BTC160 = ZOOM_MD160(ZOOM_SHA256(GlobalROM));<br>var GlobalROM_MD160 = ZOOM_MD160(GlobalROM);<br><br>// DHT480 Handle for GlobalROM<br>//&nbsp; &nbsp;  Class160 zoomBytes160<br>//&nbsp; &nbsp;  BTC160 GlobalROM_BTC160<br>//&nbsp; &nbsp;  RIPE160<br><br>// Class160<br>var
 version16=[];<br>version16.push(255);version16.push(255);<br>//_.push((key32&gt;&gt;24)&amp;0xFF); _.push((key32&gt;&gt;16)&amp;0xFF);<br>_.push((key32&gt;&gt;8)&amp;0xFF); _.push((key32)&amp;0xFF);<br>var key32=[255,255,255,255];<br>var zoomBytes160 = ZOOM_Bytes_160(version16,key32); // Class160<br><br>// Key480<br>var zoomGlobalROM_key480 = [];<br>// Assemble the three objects Class160 BTC160 MD160<br>zoomGlobalROM_key480 =<br>zoomGlobalROM_key480.concat(zoomBytes160,GlobalROM_BTC160,GlobalROM_MD160);<br><br>var ZOOMstring96 = ZOOM_Base32String_fromBytes(zoomGlobalROM_key480);<br><br>// Time = DYMWDSHM - Decade.Year.Month.Week.Day.SHIFT.Hour.Moment<br><br>DHT480_PUT_aKeyDataTime(ZOOMstring96,random_TestArray(),3);<br><br><br>RESET();<br>setInterval("dumpDHT480()",10000);<br>CapturePI();<br>OneSecond();<br><br>for(var i=0; i&lt;100000; i++){<br>&nbsp; &nbsp; for(p in DHT480_table){ // Loop through the properties<br>&nbsp; &nbsp; &nbsp; &nbsp;
 //console.log(p);<br>&nbsp; &nbsp; &nbsp; &nbsp; DHT480_EXPIRE_aKey(p);<br>&nbsp; &nbsp; }<br>}<br>&lt;/script&gt;<br>&lt;script type="text/javascript"&gt; InsertSoftWay(); &lt;/script&gt;<br>&lt;/body&gt;<br>&lt;/html&gt;<br><br>--<br><br><br>____________________________________________________________<br><br><br></div> </div> </div>  </div></body></html>