@ 2013-06-30T21:22:32Z <?php
class EAHashor {
private $right32;
public function __construct()
{
$this->right32 = ~((~0 << 16) << 16);
}
public function eaEncode($string){
$a = "67452301";
$b = "EFCDAB89";
$c = "98BADCFE";
$d = "10325476";
$words = $this->init($string);
for($i = 0, $l = count($words) / 16 - 1; $i <= $l; $i++){
$A = $a;
$B = $b;
$C = $c;
$D = $d;
/* ROUND 1 */
$this->FF ($A, $B, $C, $D, $words[0 + ($i * 16)], 7, "d76aa478");
$this->FF ($D, $A, $B, $C, $words[1 + ($i * 16)], 12, "e8c7b756");
$this->FF ($C, $D, $A, $B, $words[2 + ($i * 16)], 17, "242070db");
$this->FF ($B, $C, $D, $A, $words[3 + ($i * 16)], 22, "c1bdceee");
$this->FF ($A, $B, $C, $D, $words[4 + ($i * 16)], 7, "f57c0faf");
$this->FF ($D, $A, $B, $C, $words[5 + ($i * 16)], 12, "4787c62a");
$this->FF ($C, $D, $A, $B, $words[6 + ($i * 16)], 17, "a8304613");
$this->FF ($B, $C, $D, $A, $words[7 + ($i * 16)], 22, "fd469501");
$this->FF ($A, $B, $C, $D, $words[8 + ($i * 16)], 7, "698098d8");
$this->FF ($D, $A, $B, $C, $words[9 + ($i * 16)], 12, "8b44f7af");
$this->FF ($C, $D, $A, $B, $words[10 + ($i * 16)], 17, "ffff5bb1");
$this->FF ($B, $C, $D, $A, $words[11 + ($i * 16)], 22, "895cd7be");
$this->FF ($A, $B, $C, $D, $words[12 + ($i * 16)], 7, "6b901122");
$this->FF ($D, $A, $B, $C, $words[13 + ($i * 16)], 12, "fd987193");
$this->FF ($C, $D, $A, $B, $words[14 + ($i * 16)], 17, "a679438e");
$this->FF ($B, $C, $D, $A, $words[15 + ($i * 16)], 22, "49b40821");
/* ROUND 2 */
$this->GG ($A, $B, $C, $D, $words[1 + ($i * 16)], 5, "f61e2562");
$this->GG ($D, $A, $B, $C, $words[6 + ($i * 16)], 9, "c040b340");
$this->GG ($C, $D, $A, $B, $words[11 + ($i * 16)], 14, "265e5a51");
$this->GG ($B, $C, $D, $A, $words[0 + ($i * 16)], 20, "e9b6c7aa");
$this->GG ($A, $B, $C, $D, $words[5 + ($i * 16)], 5, "d62f105d");
$this->GG ($D, $A, $B, $C, $words[10 + ($i * 16)], 9, "02441453");
$this->GG ($C, $D, $A, $B, $words[15 + ($i * 16)], 14, "d8a1e681");
$this->GG ($B, $C, $D, $A, $words[4 + ($i * 16)], 20, "e7d3fbc8");
$this->GG ($A, $B, $C, $D, $words[9 + ($i * 16)], 5, "21e1cde6");
$this->GG ($D, $A, $B, $C, $words[14 + ($i * 16)], 9, "c33707d6");
$this->GG ($C, $D, $A, $B, $words[3 + ($i * 16)], 14, "f4d50d87");
$this->GG ($B, $C, $D, $A, $words[8 + ($i * 16)], 20, "455a14ed");
$this->GG ($A, $B, $C, $D, $words[13 + ($i * 16)], 5, "a9e3e905");
$this->GG ($D, $A, $B, $C, $words[2 + ($i * 16)], 9, "fcefa3f8");
$this->GG ($C, $D, $A, $B, $words[7 + ($i * 16)], 14, "676f02d9");
$this->GG ($B, $C, $D, $A, $words[12 + ($i * 16)], 20, "8d2a4c8a");
/* ROUND 3 */
$this->HH ($A, $B, $C, $D, $words[5 + ($i * 16)], 4, "fffa3942");
$this->HH ($D, $A, $B, $C, $words[8 + ($i * 16)], 11, "8771f681");
//HH ($C, $D, $A, $B, $words[11 + ($i * 16)], 16, "6d9d6122");
//the line below has been changed to use 14 rather than 16 as seen in the commented line
$this->HH ($C, $D, $A, $B, $words[11 + ($i * 16)], 14, "6d9d6122");
$this->HH ($B, $C, $D, $A, $words[14 + ($i * 16)], 23, "fde5380c");
$this->HH ($A, $B, $C, $D, $words[1 + ($i * 16)], 4, "a4beea44");
$this->HH ($D, $A, $B, $C, $words[4 + ($i * 16)], 11, "4bdecfa9");
$this->HH ($C, $D, $A, $B, $words[7 + ($i * 16)], 16, "f6bb4b60");
$this->HH ($B, $C, $D, $A, $words[10 + ($i * 16)], 23, "bebfbc70");
$this->HH ($A, $B, $C, $D, $words[13 + ($i * 16)], 4, "289b7ec6");
$this->HH ($D, $A, $B, $C, $words[0 + ($i * 16)], 11, "eaa127fa");
$this->HH ($C, $D, $A, $B, $words[3 + ($i * 16)], 16, "d4ef3085");
$this->HH ($B, $C, $D, $A, $words[6 + ($i * 16)], 23, "04881d05");
$this->HH ($A, $B, $C, $D, $words[9 + ($i * 16)], 4, "d9d4d039");
$this->HH ($D, $A, $B, $C, $words[12 + ($i * 16)], 11, "e6db99e5");
$this->HH ($C, $D, $A, $B, $words[15 + ($i * 16)], 16, "1fa27cf8");
$this->HH ($B, $C, $D, $A, $words[2 + ($i * 16)], 23, "c4ac5665");
/* ROUND 4 */
$this->II ($A, $B, $C, $D, $words[0 + ($i * 16)], 6, "f4292244");
$this->II ($D, $A, $B, $C, $words[7 + ($i * 16)], 10, "432aff97");
$this->II ($C, $D, $A, $B, $words[14 + ($i * 16)], 15, "ab9423a7");
$this->II ($B, $C, $D, $A, $words[5 + ($i * 16)], 21, "fc93a039");
$this->II ($A, $B, $C, $D, $words[12 + ($i * 16)], 6, "655b59c3");
$this->II ($D, $A, $B, $C, $words[3 + ($i * 16)], 10, "8f0ccc92");
$this->II ($C, $D, $A, $B, $words[10 + ($i * 16)], 15, "ffeff47d");
$this->II ($B, $C, $D, $A, $words[1 + ($i * 16)], 21, "85845dd1");
$this->II ($A, $B, $C, $D, $words[8 + ($i * 16)], 6, "6fa87e4f");
$this->II ($D, $A, $B, $C, $words[15 + ($i * 16)], 10, "fe2ce6e0");
$this->II ($C, $D, $A, $B, $words[6 + ($i * 16)], 15, "a3014314");
$this->II ($B, $C, $D, $A, $words[13 + ($i * 16)], 21, "4e0811a1");
$this->II ($A, $B, $C, $D, $words[4 + ($i * 16)], 6, "f7537e82");
$this->II ($D, $A, $B, $C, $words[11 + ($i * 16)], 10, "bd3af235");
$this->II ($C, $D, $A, $B, $words[2 + ($i * 16)], 15, "2ad7d2bb");
$this->II ($B, $C, $D, $A, $words[9 + ($i * 16)], 21, "eb86d391");
//this last line is used twice
$this->II ($B, $C, $D, $A, $words[9 + ($i * 16)], 21, "eb86d391");
$this->addVars($a, $b, $c, $d, $A, $B, $C, $D);
}
$MD5 = '';
foreach (array($a, $b, $c, $d) as $x) {
$MD5 .= implode('', array_reverse(str_split($this->leftpad($x, 8), 2)));
}
return $MD5;
}
/* General functions */
private function hexbin($str){
$hexbinmap = array( "0" => "0000",
"1" => "0001",
"2" => "0010",
"3" => "0011"
, "4" => "0100"
, "5" => "0101"
, "6" => "0110"
, "7" => "0111"
, "8" => "1000"
, "9" => "1001"
, "A" => "1010"
, "a" => "1010"
, "B" => "1011"
, "b" => "1011"
, "C" => "1100"
, "c" => "1100"
, "D" => "1101"
, "d" => "1101"
, "E" => "1110"
, "e" => "1110"
, "F" => "1111"
, "f" => "1111");
$bin = "";
for ($i = 0; $i < strlen($str); $i++){
$bin .= $hexbinmap[$str[$i]];
}
$bin = ltrim($bin, '0');
// echo "Original: ".$str." New: ".$bin."<br />";
return $bin;
}
private function strhex($str){
$hex = "";
for ($i = 0; $i < strlen($str); $i++){
$hex = $hex.$this->leftpad(dechex(ord($str[$i])), 2);
}
return $hex;
}
/* MD5-specific functions */
private function init($string){
$len = strlen($string) * 8;
$hex = $this->strhex($string); // convert ascii string to hex
$bin = $this->leftpad($this->hexbin($hex), $len); // convert hex string to bin
$padded = $this->pad($bin);
$padded = $this->pad($padded, 1, $len);
$block = str_split($padded, 32);
foreach ($block as &$b) {
$b = implode('', array_reverse(str_split($b, 8)));
}
return $block;
}
private function pad($bin, $type=0, $len = 0){
if($type == 0){
$bin = $bin."1";
$buff = strlen($bin) % 512;
if($buff != 448){
while(strlen($bin) % 512 != 448){
$bin = $bin."0";
}
}
}
// append length (b) of string to latter 64 bits
elseif($type == 1){
$bLen = $this->leftpad(decbin($len), 64);
$bin .= implode('', array_reverse(str_split($bLen, 8)));
}
return $bin;
}
/* MD5 base functions */
private function F($X, $Y, $Z){
$X = $this->binarySafeHexDec($X);
$Y = $this->binarysafehexdec($Y);
$Z = $this->binarysafehexdec($Z);
$calc = (($X & $Y) | ((~ $X) & $Z)); // X AND Y OR NOT X AND Z
return $calc;
}
private function G($X, $Y, $Z){
$X = $this->binarysafehexdec($X);
$Y = $this->binarysafehexdec($Y);
$Z = $this->binarysafehexdec($Z);
$calc = (($X & $Z) | ($Y & (~ $Z))); // X AND Z OR Y AND NOT Z
return $calc;
}
private function H($X, $Y, $Z){
$X = $this->binarysafehexdec($X);
$Y = $this->binarysafehexdec($Y);
$Z = $this->binarysafehexdec($Z);
$calc = ($X ^ $Y ^ $Z); // X XOR Y XOR Z
return $calc;
}
private function I($X, $Y, $Z){
$X = $this->binarysafehexdec($X);
$Y = $this->binarysafehexdec($Y);
$Z = $this->binarysafehexdec($Z);
$calc = ($Y ^ ($X | (~ $Z))) ; // Y XOR (X OR NOT Z)
return $calc;
}
/* MD5 round functions */
/* $A - hex, $B - hex, $C - hex, $D - hex (F - dec)
$M - binary
$s - decimal
$t - hex
*/
private function FF(&$A, $B, $C, $D, $M, $s, $t){
$A = $this->binarysafehexdec($A);
$t = $this->binarysafehexdec($t);
$M = $this->binarysafebindec($M);
$A = $this->add($A, $this->F($B, $C, $D), $M, $t) & $this->right32; //decimal
$A = $this->rotate($A, $s);
$A = dechex($this->add($this->binarysafehexdec($B), $this->binarysafehexdec($A)) & $this->right32);
}
private function GG(&$A, $B, $C, $D, $M, $s, $t){
$A = $this->binarysafehexdec($A);
$t = $this->binarysafehexdec($t);
$M = $this->binarysafebindec($M);
$A = $this->add($A, $this->G($B, $C, $D), $M, $t) & $this->right32; //decimal
$A = $this->rotate($A, $s);
$A = dechex($this->add($this->binarysafehexdec($B), $this->binarysafehexdec($A)) & $this->right32);
}
private function HH(&$A, $B, $C, $D, $M, $s, $t){
$A = $this->binarysafehexdec($A);
$t = $this->binarysafehexdec($t);
$M = $this->binarysafebindec($M);
$A = $this->add($A, $this->H($B, $C, $D), $M, $t) & $this->right32; //decimal
$A = $this->rotate($A, $s);
$A = dechex($this->add($this->binarysafehexdec($B), $this->binarysafehexdec($A)) & $this->right32);
}
private function II(&$A, $B, $C, $D, $M, $s, $t){
$A = $this->binarysafehexdec($A);
$t = $this->binarysafehexdec($t);
$M = $this->binarysafebindec($M);
$A = $this->add($A, $this->I($B, $C, $D), $M, $t) & $this->right32; //decimal
$A = $this->rotate($A, $s);
$A = dechex($this->add($this->binarysafehexdec($B), $this->binarysafehexdec($A)) & $this->right32);
}
private function rotate ($decimal, $bits)
{
return dechex(($decimal << $bits) | (($decimal >> (32 - $bits)) & ~((~0 << $bits) & $this->right32)));
}
private function addVars(&$a, &$b, &$c, &$d, $A, $B, $C, $D){
$A = $this->binarysafehexdec($A);
$B = $this->binarysafehexdec($B);
$C = $this->binarysafehexdec($C);
$D = $this->binarysafehexdec($D);
$aa = $this->binarysafehexdec($a);
$bb = $this->binarysafehexdec($b);
$cc = $this->binarysafehexdec($c);
$dd = $this->binarysafehexdec($d);
$aa = $this->add($aa, $A) & $this->right32;
$bb = $this->add($bb, $B) & $this->right32;
$cc = $this->add($cc, $C) & $this->right32;
$dd = $this->add($dd, $D) & $this->right32;
$a = dechex($aa);
$b = dechex($bb);
$c = dechex($cc);
$d = dechex($dd);
}
private function leftpad($needs_padding, $alignment) {
if (strlen($needs_padding) % $alignment) {
$pad_amount = $alignment - strlen($needs_padding) % $alignment;
$left_pad = implode('', array_fill(0, $pad_amount, '0'));
$needs_padding = $left_pad . $needs_padding;
}
return $needs_padding;
}
private function binarySafeBinDec($bin)
{
$bits = array_reverse(str_split($bin, 1));
$result = 0;
foreach ($bits as $position => $bit) {
$result |= ((int) $bit) << $position;
}
return $result;
}
private function binarySafeHexDec($hex)
{
$h = str_split(str_pad($hex, 8, '0', STR_PAD_LEFT), 2);
return (hexdec($h[0]) << 24) | (hexdec($h[1]) << 16) | (hexdec($h[2]) << 8) | hexdec($h[3]);
}
private function leftShiftByOne($intAsStr)
{
$p = unpack('N2', $intAsStr);
return pack('N2', ($p[1] << 1) | (($p[2] >> 32) & 0x00000001), $p[2] << 1);
}
private function binarySafeAddition($a, $b)
{
// NB: we don't actually need 64 bits, but 40 bit integers are confusing
$a = "\x00\x00\x00\x00" . pack('N', $a);
$b = "\x00\x00\x00\x00" . pack('N', $b);
$carry = $a & $b;
$result = $a ^ $b;
while ($carry != "\x00\x00\x00\x00\x00\x00\x00\x00") {
$shiftedcarry = $this->leftShiftByOne($carry);
$carry = $result & $shiftedcarry;
$result ^= $shiftedcarry;
}
return current(unpack('N', substr($result, 4)));
}
private function add()
{
$result = 0;
foreach (func_get_args() as $int) {
$result = $this->binarySafeAddition($result, $int);
}
return $result;
}
}
$eahashor = new EAHashor();
$hash = $eahashor->eaEncode('test');
echo $hash;
Enable javascript to submit You have javascript disabled. You will not be able to edit any code.
Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).
Version System time (s) User time (s) Memory (MiB) 8.3.6 0.015 0.009 16.75 8.3.5 0.010 0.010 17.44 8.3.4 0.007 0.010 19.22 8.3.3 0.017 0.003 18.84 8.3.2 0.004 0.004 18.98 8.3.1 0.006 0.003 20.36 8.3.0 0.003 0.006 17.96 8.2.18 0.007 0.013 16.50 8.2.17 0.008 0.008 22.96 8.2.16 0.012 0.006 22.11 8.2.15 0.009 0.000 24.18 8.2.14 0.004 0.004 24.66 8.2.13 0.005 0.003 26.16 8.2.12 0.000 0.008 19.83 8.2.11 0.008 0.003 21.12 8.2.10 0.007 0.007 18.09 8.2.9 0.006 0.006 20.95 8.2.8 0.004 0.004 18.30 8.2.7 0.003 0.006 17.75 8.2.6 0.000 0.009 18.40 8.2.5 0.000 0.009 18.07 8.2.4 0.004 0.004 18.41 8.2.3 0.000 0.009 18.40 8.2.2 0.009 0.000 17.87 8.2.1 0.000 0.010 17.98 8.2.0 0.004 0.008 17.99 8.1.28 0.007 0.013 25.92 8.1.27 0.007 0.014 24.66 8.1.26 0.006 0.003 26.35 8.1.25 0.010 0.007 28.09 8.1.24 0.010 0.000 22.57 8.1.23 0.008 0.004 21.28 8.1.22 0.000 0.009 18.01 8.1.21 0.003 0.007 19.14 8.1.20 0.011 0.000 17.60 8.1.19 0.003 0.007 17.78 8.1.18 0.006 0.003 18.10 8.1.17 0.000 0.009 18.96 8.1.16 0.004 0.004 19.04 8.1.15 0.000 0.009 18.96 8.1.14 0.000 0.010 17.64 8.1.13 0.005 0.003 18.09 8.1.12 0.000 0.009 17.77 8.1.11 0.003 0.006 17.73 8.1.10 0.006 0.003 17.70 8.1.9 0.000 0.009 17.65 8.1.8 0.004 0.004 17.72 8.1.7 0.003 0.005 17.56 8.1.6 0.003 0.006 17.82 8.1.5 0.000 0.009 17.73 8.1.4 0.003 0.006 17.82 8.1.3 0.003 0.007 17.86 8.1.2 0.000 0.009 17.82 8.1.1 0.003 0.006 17.87 8.1.0 0.003 0.006 17.67 8.0.30 0.003 0.006 20.15 8.0.29 0.003 0.006 16.88 8.0.28 0.000 0.009 18.63 8.0.27 0.004 0.004 17.49 8.0.26 0.000 0.008 17.00 8.0.25 0.009 0.000 17.13 8.0.24 0.007 0.003 17.19 8.0.23 0.000 0.008 17.19 8.0.22 0.004 0.004 17.21 8.0.21 0.006 0.003 17.15 8.0.20 0.003 0.006 17.18 8.0.19 0.006 0.003 17.23 8.0.18 0.004 0.004 17.24 8.0.17 0.000 0.011 17.14 8.0.16 0.005 0.003 17.13 8.0.15 0.003 0.007 17.12 8.0.14 0.006 0.003 17.11 8.0.13 0.003 0.003 13.62 8.0.12 0.006 0.003 17.15 8.0.11 0.005 0.005 17.03 8.0.10 0.006 0.003 17.17 8.0.9 0.006 0.003 16.99 8.0.8 0.008 0.008 17.20 8.0.7 0.000 0.009 17.21 8.0.6 0.006 0.003 17.11 8.0.5 0.004 0.004 17.20 8.0.3 0.009 0.012 17.34 8.0.2 0.012 0.016 17.43 8.0.1 0.004 0.004 17.12 8.0.0 0.007 0.014 17.02 7.4.33 0.000 0.007 13.29 7.4.32 0.008 0.000 16.88 7.4.30 0.000 0.008 16.77 7.4.29 0.003 0.006 16.70 7.4.28 0.004 0.008 16.77 7.4.27 0.000 0.008 16.80 7.4.26 0.004 0.004 13.55 7.4.25 0.007 0.003 16.78 7.4.24 0.000 0.008 16.80 7.4.23 0.003 0.006 16.88 7.4.22 0.019 0.006 16.73 7.4.21 0.006 0.012 16.83 7.4.20 0.003 0.006 16.94 7.4.19 0.004 0.004 16.74 7.4.16 0.009 0.013 16.82 7.4.15 0.010 0.010 16.71 7.4.14 0.015 0.010 16.69 7.4.13 0.016 0.009 16.76 7.4.12 0.012 0.008 16.79 7.4.11 0.004 0.016 16.81 7.4.10 0.003 0.016 16.72 7.4.9 0.006 0.018 16.84 7.4.8 0.010 0.011 16.55 7.4.7 0.006 0.014 16.63 7.4.6 0.016 0.003 16.91 7.4.5 0.004 0.007 16.84 7.4.4 0.003 0.012 16.77 7.4.3 0.008 0.020 16.91 7.4.0 0.007 0.014 15.15 7.3.33 0.003 0.006 13.59 7.3.32 0.003 0.003 13.61 7.3.31 0.004 0.004 16.62 7.3.30 0.003 0.006 16.58 7.3.29 0.007 0.011 16.59 7.3.28 0.009 0.011 16.61 7.3.27 0.007 0.014 16.71 7.3.26 0.011 0.015 16.67 7.3.25 0.015 0.008 16.75 7.3.24 0.006 0.012 16.87 7.3.23 0.007 0.016 16.65 7.3.21 0.009 0.010 16.61 7.3.20 0.010 0.013 19.39 7.3.19 0.009 0.012 16.98 7.3.18 0.013 0.006 16.69 7.3.17 0.013 0.016 16.98 7.3.16 0.009 0.009 16.87 7.3.12 0.011 0.007 15.12 7.3.11 0.011 0.010 15.06 7.3.10 0.006 0.008 14.92 7.3.9 0.002 0.016 15.01 7.3.8 0.010 0.009 14.95 7.3.7 0.010 0.005 15.05 7.3.6 0.006 0.008 15.14 7.3.5 0.007 0.010 15.19 7.3.4 0.007 0.009 15.21 7.3.3 0.002 0.011 15.00 7.3.2 0.008 0.006 16.71 7.3.1 0.008 0.007 16.58 7.3.0 0.011 0.006 16.49 7.2.33 0.011 0.011 17.09 7.2.32 0.010 0.010 17.08 7.2.31 0.016 0.013 17.09 7.2.30 0.015 0.009 16.63 7.2.29 0.010 0.011 17.03 7.2.25 0.005 0.017 14.99 7.2.24 0.011 0.010 15.41 7.2.23 0.005 0.012 15.24 7.2.22 0.005 0.012 15.38 7.2.21 0.006 0.011 15.33 7.2.20 0.005 0.008 15.37 7.2.19 0.002 0.014 15.29 7.2.18 0.005 0.016 15.36 7.2.17 0.003 0.014 15.24 7.2.0 0.007 0.010 19.45 7.1.33 0.006 0.013 15.84 7.1.32 0.006 0.011 15.85 7.1.31 0.006 0.012 15.97 7.1.30 0.007 0.007 15.76 7.1.29 0.009 0.011 15.73 7.1.28 0.003 0.014 15.62 7.1.27 0.006 0.011 15.78 7.1.26 0.002 0.016 15.78 7.1.10 0.006 0.006 18.21 7.1.7 0.003 0.009 17.09 7.1.6 0.006 0.022 19.40 7.1.5 0.013 0.013 17.00 7.1.0 0.003 0.077 22.54 7.0.20 0.024 0.004 15.06 7.0.14 0.000 0.077 22.03 7.0.12 0.000 0.077 22.18 7.0.10 0.027 0.047 20.16 7.0.9 0.050 0.070 20.14 7.0.8 0.010 0.063 20.29 7.0.7 0.013 0.070 20.19 7.0.6 0.003 0.053 20.21 7.0.5 0.037 0.087 20.64 7.0.4 0.007 0.080 20.15 7.0.3 0.007 0.087 20.09 7.0.2 0.003 0.060 20.04 7.0.1 0.020 0.070 20.12 7.0.0 0.013 0.080 20.05 5.6.28 0.003 0.080 21.18 5.6.25 0.013 0.083 20.77 5.6.24 0.003 0.047 20.78 5.6.23 0.003 0.073 20.73 5.6.22 0.013 0.043 20.80 5.6.21 0.010 0.070 20.72 5.6.20 0.013 0.090 21.19 5.6.19 0.003 0.077 21.28 5.6.18 0.007 0.083 21.23 5.6.17 0.007 0.083 21.20 5.6.16 0.010 0.097 21.18 5.6.15 0.010 0.083 21.22 5.6.14 0.017 0.077 21.20 5.6.13 0.010 0.043 21.17 5.6.12 0.013 0.083 21.16 5.6.11 0.007 0.073 21.17 5.6.10 0.010 0.070 21.30 5.6.9 0.017 0.077 21.29 5.6.8 0.020 0.073 20.50 5.6.7 0.010 0.087 20.69 5.6.6 0.010 0.070 20.60 5.6.5 0.007 0.060 20.57 5.6.4 0.017 0.077 20.56 5.6.3 0.003 0.083 20.44 5.6.2 0.013 0.070 20.64 5.6.1 0.010 0.073 20.53 5.6.0 0.010 0.040 20.54 5.5.38 0.010 0.083 20.65 5.5.37 0.003 0.090 20.51 5.5.36 0.013 0.063 20.45 5.5.35 0.007 0.087 20.54 5.5.34 0.013 0.090 20.90 5.5.33 0.023 0.043 21.02 5.5.32 0.010 0.077 21.03 5.5.31 0.007 0.087 20.90 5.5.30 0.007 0.087 21.03 5.5.29 0.003 0.057 20.93 5.5.28 0.007 0.083 20.91 5.5.27 0.010 0.047 21.02 5.5.26 0.007 0.077 20.96 5.5.25 0.013 0.083 20.83 5.5.24 0.010 0.080 20.36 5.5.23 0.007 0.083 20.16 5.5.22 0.000 0.087 20.43 5.5.21 0.013 0.043 20.38 5.5.20 0.013 0.080 20.32 5.5.19 0.007 0.090 20.24 5.5.18 0.010 0.080 20.13 5.5.16 0.017 0.057 20.29 5.5.15 0.003 0.047 20.22 5.5.14 0.007 0.087 20.13 5.5.13 0.003 0.080 20.22 5.5.12 0.013 0.057 20.31 5.5.11 0.010 0.083 20.36 5.5.10 0.007 0.073 20.19 5.5.9 0.013 0.053 20.21 5.5.8 0.017 0.070 20.09 5.5.7 0.017 0.053 20.08 5.5.6 0.010 0.080 20.29 5.5.5 0.003 0.057 20.28 5.5.4 0.007 0.073 20.21 5.5.3 0.003 0.087 20.18 5.5.2 0.010 0.077 20.21 5.5.1 0.010 0.050 20.26 5.5.0 0.003 0.053 20.10 5.4.45 0.007 0.090 19.61 5.4.44 0.007 0.090 19.51 5.4.43 0.013 0.073 19.44 5.4.42 0.023 0.067 19.43 5.4.41 0.013 0.083 19.43 5.4.40 0.010 0.073 19.13 5.4.39 0.010 0.080 19.23 5.4.38 0.007 0.053 18.96 5.4.37 0.010 0.043 19.16 5.4.36 0.000 0.090 19.13 5.4.35 0.003 0.050 19.18 5.4.34 0.013 0.050 19.14 5.4.32 0.010 0.083 18.94 5.4.31 0.013 0.030 18.97 5.4.30 0.003 0.050 19.11 5.4.29 0.010 0.040 19.02 5.4.28 0.000 0.087 18.90 5.4.27 0.003 0.040 19.12 5.4.26 0.000 0.080 18.96 5.4.25 0.007 0.077 19.08 5.4.24 0.003 0.047 18.96 5.4.23 0.007 0.037 18.96 5.4.22 0.007 0.070 19.18 5.4.21 0.007 0.077 19.18 5.4.20 0.007 0.087 19.13 5.4.19 0.007 0.080 19.08 5.4.18 0.013 0.040 18.91 5.4.17 0.007 0.073 19.09 5.4.16 0.017 0.063 19.26 5.4.15 0.007 0.047 18.95 5.4.14 0.000 0.043 16.32 5.4.13 0.017 0.060 16.45 5.4.12 0.017 0.077 16.45 5.4.11 0.007 0.067 16.56 5.4.10 0.007 0.070 16.54 5.4.9 0.007 0.073 16.45 5.4.8 0.000 0.050 16.43 5.4.7 0.003 0.050 16.53 5.4.6 0.010 0.073 16.48 5.4.5 0.007 0.073 16.37 5.4.4 0.013 0.073 16.47 5.4.3 0.010 0.040 16.43 5.4.2 0.010 0.033 16.47 5.4.1 0.013 0.067 16.41 5.4.0 0.000 0.060 15.95 5.3.29 0.017 0.070 14.97 5.3.28 0.010 0.073 14.97 5.3.27 0.010 0.067 14.89 5.3.26 0.010 0.077 14.91 5.3.25 0.003 0.090 14.90 5.3.24 0.003 0.080 14.80 5.3.23 0.003 0.073 14.93 5.3.22 0.010 0.077 14.78 5.3.21 0.007 0.077 14.82 5.3.20 0.013 0.040 14.74 5.3.19 0.000 0.063 14.86 5.3.18 0.007 0.083 14.94 5.3.17 0.003 0.073 14.93 5.3.16 0.013 0.067 14.93 5.3.15 0.007 0.067 14.75 5.3.14 0.010 0.067 14.80 5.3.13 0.003 0.073 14.86 5.3.12 0.010 0.057 14.89 5.3.11 0.010 0.063 14.80 5.3.10 0.003 0.067 14.25 5.3.9 0.010 0.077 14.25 5.3.8 0.000 0.067 14.24 5.3.7 0.007 0.047 14.27 5.3.6 0.003 0.083 14.23 5.3.5 0.003 0.083 14.24 5.3.4 0.003 0.080 14.11 5.3.3 0.007 0.070 14.05 5.3.2 0.007 0.077 14.05 5.3.1 0.023 0.060 13.82 5.3.0 0.007 0.070 13.92
preferences:dark mode live preview
40.8 ms | 400 KiB | 5 Q