@ 2014-07-20T02:25:19Z <?php
/**
* PHP URI Library
*
* A PHP library for working with URI's. Requires PHP 5.3.7 or later. Replaces
* and extends PHP's parse_url()
*
* Originally inspired by P Guardiario's work.
*
* @author Nicholas Jordon
* @link https://github.com/ProjectCleverWeb/PHP-URI
* @copyright 2014 Nicholas Jordon - All Rights Reserved
* @version 1.0.0 RC2
* @license http://opensource.org/licenses/MIT
* @see http://en.wikipedia.org/wiki/URI_scheme
*/
namespace {
class uri extends \uri\main {}
}
namespace uri {
abstract class main {
public $error;
public $input;
private $object;
private $authority;
private $domain;
private $fqdn;
private $fragment;
private $host;
private $protocol;
private $pass;
private $password;
private $path;
private $port;
private $query;
private $scheme;
private $scheme_name;
private $scheme_symbols;
private $user;
private $username;
public function __construct($input) {
$this->input = $input;
$this->object = \uri\parser::parse($input);
if (is_object($this->object)) {
\uri\generate::authority($this->object);
\uri\generate::aliases($this->object);
// References required for Sudo-Private Variables
$this->authority = &$this->object->authority;
$this->domain = &$this->object->domain;
$this->fqdn = &$this->object->fqdn;
$this->fragment = &$this->object->fragment;
$this->host = &$this->object->host;
$this->protocol = &$this->object->protocol;
$this->pass = &$this->object->pass;
$this->password = &$this->object->password;
$this->path = &$this->object->path;
$this->port = &$this->object->port;
$this->query = &$this->object->query;
$this->scheme = &$this->object->scheme;
$this->scheme_name = &$this->object->scheme_name;
$this->scheme_symbols = &$this->object->scheme_symbols;
$this->user = &$this->object->user;
$this->username = &$this->object->username;
} else {
$this->error = 'Input could not be parsed as a URI';
}
}
public function __toString() {
return \uri\generate::string($this->object);
}
public function __invoke() {
return \uri\generate::string($this->object);
}
public function __get($name) {
if (isset($this->object->$name)) {
\uri\generate::scheme($this->object);
\uri\generate::authority($this->object);
return $this->object->$name;
} else {
$trace = debug_backtrace();
trigger_error(
sprintf(
'Undefined property via %1$s::__get(): \'%2$s\' in %3$s on line %4$s',
__NAMESPACE__.'\\'.__CLASS__,
$name,
$trace[0]['file'],
$trace[0]['line']
),
E_USER_NOTICE
);
return NULL;
}
}
public function __set($name, $value) {
if (\uri\modify::modify($this->object, 'replace', $name, $value)) {
return $value;
} else {
$trace = debug_backtrace();
trigger_error(
sprintf(
'Forbidden property via %1$s::__set(): \'%2$s\' in %3$s on line %4$s',
__NAMESPACE__.'\\'.__CLASS__,
$name,
$trace[0]['file'],
$trace[0]['line']
),
E_USER_NOTICE
);
return NULL;
}
}
public function __isset($name) {
\uri\generate::scheme($this->object);
\uri\generate::authority($this->object);
return !empty($this->object->$name);
}
public function __unset($name) {
if (isset($this->object->$name)) {
$this->object->$name = '';
\uri\generate::scheme($this->object);
\uri\generate::authority($this->object);
return TRUE;
} else {
$trace = debug_backtrace();
trigger_error(
sprintf(
'Undifined property via %1$s::__unset(): \'%2$s\' in %3$s on line %4$s',
__NAMESPACE__.'\\'.__CLASS__,
$name,
$trace[0]['file'],
$trace[0]['line']
),
E_USER_NOTICE
);
}
return FALSE;
}
public function str() {
return \uri\generate::string($this->object);
}
public function to_string() {
return \uri\generate::string($this->object);
}
public function p_str() {
echo \uri\generate::string($this->object);
}
public function arr() {
return (array) $this->object;
}
public function to_array() {
return (array) $this->object;
}
public function path_info() {
return \uri\generate::path_info($this->object);
}
public function query_arr() {
return \uri\generate::query_array($this->object);
}
public function replace($section, $str) {
return \uri\modify::modify($this->object, 'replace', $section, $str);
}
public function prepend($section, $str) {
return \uri\modify::modify($this->object, 'prepend', $section, $str);
}
public function append($section, $str) {
return \uri\modify::modify($this->object, 'append', $section, $str);
}
public function reset() {
$this->__construct($this->input);
}
}
class parser {
const REGEX = '/^(([a-z]+)?(\:\/\/|\:|\/\/))?(?:([a-z0-9$_\.\+!\*\'\(\),;&=\-]+)(?:\:([a-z0-9$_\.\+!\*\'\(\),;&=\-]*))?@)?((?:\d{3}.\d{3}.\d{3}.\d{3})|(?:[a-z0-9\-_]+(?:\.[a-z0-9\-_]+)*))(?:\:([0-9]+))?((?:\:|\/)[a-z0-9\-_\/\.]+)?(?:\?([a-z0-9$_\.\+!\*\'\(\),;:@&=\-%]*))?(?:#([a-z0-9\-_]*))?/i';
public static function parse($uri) {
if (!is_string($uri)) {
return FALSE;
}
$parsed = self::regex_parse($uri);
// Could not be parsed correctly
if (empty($parsed)) {
return FALSE;
}
return (object) array(
'scheme' => $parsed[1],
'scheme_name' => $parsed[2],
'scheme_symbols' => $parsed[3],
'user' => $parsed[4],
'pass' => $parsed[5],
'host' => $parsed[6],
'port' => $parsed[7],
'path' => $parsed[8],
'query' => $parsed[9],
'fragment' => $parsed[10],
);
}
private static function regex_parse($uri) {
preg_match_all(self::REGEX, $uri, $parsed, PREG_SET_ORDER);
// Host is required
if (!isset($parsed[0][6])) {
return FALSE;
}
// Return what was parsed, but make sure that each offset is set regardless
return $parsed[0] + array_fill(0, 11, '');
}
}
class modify {
/*** Methods ***/
public static function modify(&$object, $action, $section, $str) {
settype($section, 'string');
$section = strtolower($section);
if (is_callable(array('\\uri\\modify', $section))) {
return call_user_func_array(array('\\uri\\modify', $section), array($object, $action, $str));
} else {
return FALSE;
}
}
public static function replace(&$object, $section, $str) {
$object->$section = $str;
}
public static function prepend(&$object, $section, $str) {
$object->$section = $str.$object->$section;
}
public static function append(&$object, $section, $str) {
$object->$section = $object->$section.$str;
}
public static function scheme_name(&$object, $action, $str) {
$org = $object->scheme_name;
call_user_func_array(array('\\uri\\modify', $action), array($object, 'scheme_name', $str));
if (!preg_match('/\A[a-z]{1,10}\Z/', $object->scheme_name)) {
$object->scheme_name = $org;
return FALSE;
} elseif (empty($object->scheme_symbols)) {
$object->scheme_symbols = '://';
}
return \uri\generate::string($object);
}
public static function scheme_symbols(&$object, $action, $str) {
$org = $object->scheme_symbols;
call_user_func_array(array('\\uri\\modify', $action), array($object, 'scheme_symbols', $str));
if (!preg_match('/\A(:)?([\/]{2,3})?\Z/', $object->scheme_symbols)) {
$object->scheme_symbols = $org;
return FALSE;
}
return \uri\generate::string($object);
}
public static function scheme(&$object, $action, $str) {
$org = array($object->scheme, $object->scheme_name, $object->scheme_symbols);
call_user_func_array(array('\\uri\\modify', $action), array($object, 'scheme', $str));
if (empty($object->scheme)) {
$object->scheme = $object->scheme_name = $object->scheme_symbols = '';
} else {
preg_match('/\A([a-z]{1,10})?(\:|:\/\/|\/\/|:\/\/\/)\Z/i', $object->scheme, $matches);
if (empty($matches[1]) && empty($matches[2])) {
// restore values
$object->scheme = $org[0];
$object->scheme_name = $org[1];
$object->scheme_symbols = $org[2];
return FALSE;
} else {
// apply changes
$matches = $matches + array('', '', '');
$object->scheme = $matches[0];
$object->scheme_name = $matches[1];
$object->scheme_symbols = $matches[2];
}
}
return \uri\generate::string($object);
}
public static function protocol(&$object, $action, $str) {
self::scheme($object, $action, $str);
}
public static function user(&$object, $action, $str) {
$str = rawurlencode($str);
call_user_func_array(array('\\uri\\modify', $action), array($object, 'user', $str));
return \uri\generate::string($object);
}
public static function username(&$object, $action, $str) {
self::user($object, $action, $str);
}
public static function pass(&$object, $action, $str) {
$str = rawurlencode($str);
call_user_func_array(array('\\uri\\modify', $action), array($object, 'pass', $str));
return \uri\generate::string($object);
}
public static function password(&$object, $action, $str) {
self::pass($object, $action, $str);
}
public static function host(&$object, $action, $str) {
$org = $object->host;
call_user_func_array(array('\\uri\\modify', $action), array($object, 'host', $str));
if (
(
!preg_match('/\A(([a-z0-9_]([a-z0-9\-_]+)?)\.)+[a-z0-9]([a-z0-9\-]+)?\Z/i', $object->host) // fqdn
&&
!preg_match('/\A([0-9]\.){3}[0-9]\Z/i', $object->host) // ip
)
||
strlen($object->host) > 255
) {
$object->host = $org;
return FALSE;
}
return \uri\generate::string($object);
}
public static function domain(&$object, $action, $str) {
self::host($object, $action, $str);
}
public static function fqdn(&$object, $action, $str) {
self::host($object, $action, $str);
}
public static function port(&$object, $action, $str) {
$org = $object->port;
if ($str[0] == ':') {
$str = substr($str, 1);
}
call_user_func_array(array('\\uri\\modify', $action), array($object, 'port', $str));
if (!preg_match('/\A[0-9]{0,5}\Z/', $object->port)) {
$object->port = $org;
return FALSE;
}
return \uri\generate::string($object);
}
public static function path(&$object, $action, $str) {
$str = str_replace(array('//','\\'), '/', $str);
$path_arr = explode('/', $str);
$safe_arr = array();
foreach ($path_arr as $path_part) {
$safe_arr[] = rawurlencode($path_part);
}
$str = implode('/', $safe_arr);
call_user_func_array(array('\\uri\\modify', $action), array($object, 'path', $str));
return \uri\generate::string($object);
}
public static function query(&$object, $action, $str) {
if (is_array($str)) {
$str = http_build_query($str, '', '&', PHP_QUERY_RFC3986);
} elseif ($str[0] == '?') {
$str = substr($str, 1);
}
call_user_func_array(array('\\uri\\modify', $action), array($object, 'query', $str));
return \uri\generate::string($object);
}
public static function fragment(&$object, $action, $str) {
if ($str[0] == '#') {
unset($str[0]);
}
$str = urlencode($str);
call_user_func_array(array('\\uri\\modify', $action), array($object, 'fragment', $str));
return \uri\generate::string($object);
}
}
/**
*
*/
class generate {
/*** Methods ***/
public static function aliases(&$object) {
$object->protocol = &$object->scheme;
$object->username = &$object->user;
$object->password = &$object->pass;
$object->domain = &$object->host;
$object->fqdn = &$object->host;
}
public static function scheme(&$object) {
$object->scheme = $object->scheme_name.$object->scheme_symbols;
}
public static function authority(&$object) {
$str_arr = array($object->user);
if (empty($object->user) == FALSE && empty($object->pass)) {
$str_arr[] = '@';
} elseif (!empty($object->user)) {
$str_arr[] = ':'.$object->pass.'@';
}
$str_arr[] = $object->host;
if (!empty($object->port)) {
$str_arr[] = ':'.$object->port;
}
$object->authority = implode('', $str_arr);
}
public static function string(&$object) {
self::scheme($object);
self::authority($object);
$str_arr = array($object->scheme, $object->authority, $object->path);
if (!empty($object->query)) {
$str_arr[] = '?'.$object->query;
}
if (!empty($object->fragment)) {
$str_arr[] = '#'.$object->fragment;
}
return implode('', $str_arr);
}
public static function path_info(&$object) {
$defaults = array(
'dirname' => '',
'basename' => '',
'extension' => '',
'filename' => '',
'array' => array()
);
$info = pathinfo($object->path) + $defaults;
$info['array'] = array_values(array_filter(explode('/', $object->path)));
ksort($info);
return $info;
}
public static function query_array(&$object) {
parse_str($object->query, $return);
return $return;
}
}
/**
*
*/
class query {
/*** Methods ***/
}
}
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.007 0.011 18.43 8.3.5 0.009 0.009 21.93 8.3.4 0.012 0.003 19.04 8.3.3 0.012 0.003 19.17 8.3.2 0.008 0.000 20.29 8.3.1 0.006 0.003 23.66 8.3.0 0.011 0.000 18.05 8.2.18 0.015 0.006 16.88 8.2.17 0.012 0.006 22.96 8.2.16 0.011 0.004 20.53 8.2.15 0.004 0.004 24.18 8.2.14 0.005 0.003 24.66 8.2.13 0.000 0.008 26.16 8.2.12 0.003 0.006 19.36 8.2.11 0.007 0.003 22.25 8.2.10 0.009 0.003 18.03 8.2.9 0.004 0.004 19.42 8.2.8 0.004 0.004 17.97 8.2.7 0.009 0.000 17.74 8.2.6 0.007 0.004 17.93 8.2.5 0.000 0.010 18.07 8.2.4 0.004 0.004 18.15 8.2.3 0.004 0.004 18.45 8.2.2 0.005 0.003 17.93 8.2.1 0.000 0.008 18.27 8.2.0 0.000 0.008 19.41 8.1.28 0.016 0.006 25.92 8.1.27 0.008 0.000 23.97 8.1.26 0.003 0.005 26.35 8.1.25 0.008 0.000 28.09 8.1.24 0.006 0.003 24.02 8.1.23 0.006 0.006 19.41 8.1.22 0.004 0.004 17.90 8.1.21 0.000 0.008 18.77 8.1.20 0.000 0.010 17.60 8.1.19 0.004 0.004 17.60 8.1.18 0.003 0.006 18.10 8.1.17 0.003 0.006 18.84 8.1.16 0.008 0.000 22.27 8.1.15 0.003 0.005 18.77 8.1.14 0.000 0.008 17.70 8.1.13 0.007 0.000 17.91 8.1.12 0.004 0.004 17.46 8.1.11 0.007 0.003 17.59 8.1.10 0.000 0.008 17.57 8.1.9 0.004 0.004 17.60 8.1.8 0.000 0.008 17.57 8.1.7 0.000 0.007 17.48 8.1.6 0.008 0.000 17.61 8.1.5 0.006 0.003 17.71 8.1.4 0.000 0.008 17.57 8.1.3 0.004 0.004 17.76 8.1.2 0.005 0.003 17.70 8.1.1 0.005 0.003 17.59 8.1.0 0.000 0.009 17.66 8.0.30 0.007 0.000 18.77 8.0.29 0.006 0.003 17.00 8.0.28 0.005 0.002 18.59 8.0.27 0.000 0.008 17.45 8.0.26 0.000 0.007 17.40 8.0.25 0.008 0.000 17.24 8.0.24 0.000 0.007 17.27 8.0.23 0.004 0.004 17.20 8.0.22 0.004 0.004 17.07 8.0.21 0.004 0.004 17.18 8.0.20 0.003 0.003 17.11 8.0.19 0.004 0.004 17.22 8.0.18 0.004 0.004 17.14 8.0.17 0.003 0.006 17.06 8.0.16 0.004 0.004 17.10 8.0.15 0.003 0.006 17.06 8.0.14 0.008 0.000 17.07 8.0.13 0.003 0.005 13.59 8.0.12 0.000 0.008 17.02 8.0.11 0.000 0.011 17.23 8.0.10 0.003 0.005 17.14 8.0.9 0.003 0.006 17.27 8.0.8 0.010 0.014 17.14 8.0.7 0.003 0.005 17.03 8.0.6 0.008 0.000 17.18 8.0.5 0.004 0.004 17.27 8.0.3 0.009 0.011 17.25 8.0.2 0.011 0.010 17.40 8.0.1 0.000 0.008 17.33 8.0.0 0.009 0.009 17.05 7.4.33 0.003 0.003 15.00 7.4.32 0.000 0.007 16.55 7.4.30 0.000 0.006 16.73 7.4.29 0.000 0.008 16.67 7.4.28 0.003 0.006 16.64 7.4.27 0.000 0.007 16.74 7.4.26 0.004 0.003 16.78 7.4.25 0.004 0.004 16.71 7.4.24 0.002 0.006 16.64 7.4.23 0.000 0.007 16.75 7.4.22 0.006 0.013 16.69 7.4.21 0.015 0.006 16.75 7.4.20 0.000 0.007 16.77 7.4.16 0.003 0.013 16.71 7.4.15 0.015 0.011 17.40 7.4.14 0.011 0.007 17.86 7.4.13 0.009 0.011 16.65 7.4.12 0.010 0.008 16.50 7.4.11 0.014 0.004 16.80 7.4.10 0.005 0.014 16.66 7.4.9 0.003 0.016 16.48 7.4.8 0.014 0.006 19.39 7.4.7 0.007 0.010 16.59 7.4.6 0.010 0.007 16.54 7.4.5 0.000 0.009 16.47 7.4.4 0.012 0.006 16.62 7.4.3 0.010 0.007 16.63 7.4.1 0.010 0.007 15.01 7.4.0 0.009 0.009 14.90 7.3.33 0.003 0.003 13.39 7.3.32 0.003 0.003 13.45 7.3.31 0.004 0.004 16.30 7.3.30 0.004 0.004 16.32 7.3.29 0.007 0.007 16.35 7.3.28 0.012 0.010 16.45 7.3.27 0.009 0.016 17.40 7.3.26 0.015 0.012 16.43 7.3.25 0.009 0.009 16.52 7.3.24 0.014 0.006 16.46 7.3.23 0.003 0.013 16.46 7.3.21 0.012 0.006 16.70 7.3.20 0.012 0.006 19.39 7.3.19 0.011 0.007 16.71 7.3.18 0.013 0.003 16.63 7.3.17 0.006 0.012 16.43 7.3.16 0.015 0.009 16.46 7.3.13 0.003 0.015 15.20 7.3.12 0.002 0.017 15.09 7.3.11 0.006 0.012 14.85 7.3.10 0.004 0.007 14.96 7.3.9 0.010 0.007 14.74 7.3.8 0.006 0.006 15.06 7.3.7 0.003 0.007 14.64 7.3.6 0.010 0.010 15.11 7.3.5 0.000 0.014 15.08 7.3.4 0.003 0.010 14.75 7.3.3 0.009 0.003 14.68 7.3.2 0.003 0.013 16.74 7.3.1 0.004 0.011 16.39 7.3.0 0.006 0.009 16.48 7.2.33 0.004 0.015 16.67 7.2.32 0.000 0.018 16.73 7.2.31 0.015 0.006 16.80 7.2.30 0.008 0.009 16.64 7.2.29 0.009 0.009 16.52 7.2.26 0.007 0.013 15.24 7.2.25 0.008 0.006 15.19 7.2.24 0.004 0.011 14.96 7.2.23 0.009 0.006 15.05 7.2.22 0.010 0.000 15.07 7.2.21 0.004 0.008 15.08 7.2.20 0.007 0.007 15.04 7.2.19 0.006 0.012 14.82 7.2.18 0.003 0.007 15.27 7.2.17 0.006 0.009 14.78 7.2.16 0.004 0.012 15.21 7.2.15 0.009 0.006 16.81 7.2.14 0.007 0.007 16.41 7.2.13 0.007 0.007 16.72 7.2.12 0.004 0.012 16.70 7.2.11 0.015 0.003 16.51 7.2.10 0.006 0.006 16.72 7.2.9 0.011 0.003 16.84 7.2.8 0.004 0.011 16.64 7.2.7 0.006 0.010 16.46 7.2.6 0.007 0.004 16.55 7.2.5 0.003 0.010 16.81 7.2.4 0.009 0.003 16.75 7.2.3 0.006 0.006 16.80 7.2.2 0.003 0.012 16.83 7.2.1 0.007 0.011 16.84 7.2.0 0.006 0.006 16.79 7.1.33 0.006 0.006 15.76 7.1.32 0.006 0.009 15.75 7.1.31 0.007 0.007 15.64 7.1.30 0.018 0.000 15.37 7.1.29 0.003 0.010 15.70 7.1.28 0.006 0.003 15.33 7.1.27 0.006 0.003 15.65 7.1.26 0.010 0.007 15.34 7.1.25 0.004 0.008 15.89 7.1.24 0.004 0.011 15.42 7.1.23 0.004 0.011 15.50 7.1.22 0.010 0.006 15.58 7.1.21 0.003 0.015 15.54 7.1.20 0.007 0.003 15.61 7.1.19 0.006 0.006 15.77 7.1.18 0.006 0.006 15.66 7.1.17 0.003 0.007 15.69 7.1.16 0.000 0.012 15.74 7.1.15 0.003 0.007 15.66 7.1.14 0.008 0.008 15.78 7.1.13 0.006 0.003 15.78 7.1.12 0.007 0.011 15.83 7.1.11 0.000 0.017 15.75 7.1.10 0.004 0.008 15.55 7.1.9 0.003 0.009 15.85 7.1.8 0.006 0.010 15.67 7.1.7 0.005 0.004 16.12 7.1.6 0.010 0.011 17.69 7.1.5 0.003 0.007 16.28 7.1.4 0.007 0.007 15.79 7.1.3 0.003 0.009 15.73 7.1.2 0.009 0.006 15.49 7.1.1 0.012 0.003 15.51 7.1.0 0.003 0.045 19.17 7.0.33 0.006 0.010 14.97 7.0.32 0.004 0.013 15.44 7.0.31 0.006 0.010 15.14 7.0.30 0.007 0.007 15.46 7.0.29 0.009 0.006 15.26 7.0.28 0.004 0.008 15.18 7.0.27 0.003 0.006 15.24 7.0.26 0.007 0.007 15.44 7.0.25 0.000 0.016 15.11 7.0.24 0.003 0.012 15.52 7.0.23 0.004 0.004 15.36 7.0.22 0.007 0.007 15.01 7.0.21 0.006 0.006 15.28 7.0.20 0.005 0.005 15.73 7.0.19 0.011 0.006 15.27 7.0.18 0.007 0.007 15.36 7.0.17 0.007 0.010 15.08 7.0.16 0.007 0.007 15.02 7.0.15 0.004 0.007 15.42 7.0.14 0.003 0.042 18.64 7.0.13 0.003 0.010 15.18 7.0.12 0.012 0.004 15.50 7.0.11 0.003 0.014 15.45 7.0.10 0.013 0.023 17.64 7.0.9 0.008 0.043 17.75 7.0.8 0.012 0.030 17.61 7.0.7 0.002 0.047 17.67 7.0.6 0.010 0.044 17.65 7.0.5 0.008 0.025 17.84 7.0.4 0.008 0.047 16.65 7.0.3 0.011 0.047 16.77 7.0.2 0.002 0.029 16.83 7.0.1 0.015 0.038 16.75 7.0.0 0.012 0.027 16.77 5.6.40 0.003 0.010 13.86 5.6.39 0.004 0.018 14.39 5.6.38 0.004 0.017 14.05 5.6.37 0.009 0.009 14.39 5.6.36 0.003 0.013 14.30 5.6.35 0.006 0.009 14.30 5.6.34 0.006 0.009 14.55 5.6.33 0.006 0.003 14.15 5.6.32 0.007 0.007 14.18 5.6.31 0.005 0.005 14.15 5.6.30 0.003 0.009 14.13 5.6.29 0.009 0.006 14.50 5.6.28 0.003 0.043 17.76 5.6.27 0.000 0.011 14.25 5.6.26 0.011 0.004 14.00 5.6.25 0.009 0.031 17.55 5.6.24 0.016 0.038 17.45 5.6.23 0.005 0.041 17.66 5.6.22 0.005 0.030 17.36 5.6.21 0.005 0.046 17.43 5.6.20 0.007 0.032 17.71 5.6.19 0.007 0.050 17.67 5.6.18 0.006 0.046 17.66 5.6.17 0.003 0.049 17.62 5.6.16 0.007 0.050 17.69 5.6.15 0.005 0.045 17.65 5.6.14 0.007 0.028 17.77 5.6.13 0.008 0.038 17.66 5.6.12 0.007 0.026 17.82 5.6.11 0.009 0.045 17.76 5.6.10 0.005 0.050 17.67 5.6.9 0.011 0.026 17.77 5.6.8 0.013 0.035 17.39 5.6.7 0.008 0.045 17.32 5.6.6 0.004 0.049 17.23 5.6.5 0.013 0.035 17.30 5.6.4 0.008 0.040 17.36 5.6.3 0.007 0.041 17.28 5.6.2 0.008 0.040 17.26 5.6.1 0.015 0.033 17.36 5.6.0 0.005 0.028 17.28 5.5.38 0.003 0.028 17.20 5.5.37 0.008 0.048 17.39 5.5.36 0.004 0.033 17.22 5.5.35 0.005 0.027 17.42 5.5.34 0.008 0.036 17.55 5.5.33 0.007 0.047 17.57 5.5.32 0.005 0.030 17.52 5.5.31 0.014 0.034 17.55 5.5.30 0.003 0.050 17.60 5.5.29 0.002 0.028 17.52 5.5.28 0.005 0.047 17.48 5.5.27 0.005 0.048 17.46 5.5.26 0.006 0.046 17.63 5.5.25 0.010 0.046 17.33 5.5.24 0.012 0.039 17.14 5.5.23 0.014 0.045 17.26 5.5.22 0.008 0.026 17.16 5.5.21 0.010 0.039 17.25 5.5.20 0.008 0.042 16.95 5.5.19 0.008 0.046 17.05 5.5.18 0.005 0.027 17.18 5.5.17 0.003 0.010 14.08 5.5.16 0.013 0.023 17.19 5.5.15 0.005 0.039 17.20 5.5.14 0.007 0.046 17.22 5.5.13 0.008 0.037 17.24 5.5.12 0.005 0.044 17.19 5.5.11 0.003 0.047 17.24 5.5.10 0.007 0.043 17.15 5.5.9 0.007 0.046 17.14 5.5.8 0.010 0.039 17.27 5.5.7 0.010 0.040 17.10 5.5.6 0.005 0.041 17.20 5.5.5 0.015 0.035 17.17 5.5.4 0.004 0.028 17.08 5.5.3 0.007 0.025 17.05 5.5.2 0.009 0.040 17.21 5.5.1 0.007 0.027 17.02 5.5.0 0.005 0.043 17.19 5.4.45 0.003 0.034 15.17 5.4.44 0.003 0.047 15.16 5.4.43 0.005 0.033 15.08 5.4.42 0.002 0.045 15.18 5.4.41 0.009 0.035 15.18 5.4.40 0.003 0.039 15.08 5.4.39 0.006 0.030 15.00 5.4.38 0.011 0.036 15.09 5.4.37 0.008 0.025 15.03 5.4.36 0.004 0.030 15.06 5.4.35 0.005 0.040 15.02 5.4.34 0.007 0.032 15.09 5.4.33 0.000 0.010 10.92 5.4.32 0.003 0.045 15.08 5.4.31 0.005 0.021 15.02 5.4.30 0.003 0.044 15.00 5.4.29 0.013 0.032 15.00 5.4.28 0.003 0.045 15.01 5.4.27 0.012 0.033 15.11 5.4.26 0.007 0.027 14.93 5.4.25 0.007 0.037 15.04 5.4.24 0.012 0.034 15.01 5.4.23 0.005 0.037 15.00 5.4.22 0.005 0.027 15.08 5.4.21 0.008 0.041 15.00 5.4.20 0.003 0.027 15.05 5.4.19 0.005 0.042 14.99 5.4.18 0.006 0.031 15.09 5.4.17 0.005 0.034 15.08 5.4.16 0.003 0.028 15.03 5.4.15 0.005 0.036 15.09 5.4.14 0.003 0.032 13.72 5.4.13 0.004 0.042 13.75 5.4.12 0.005 0.023 13.73 5.4.11 0.005 0.042 13.74 5.4.10 0.005 0.026 13.70 5.4.9 0.007 0.018 13.87 5.4.8 0.005 0.020 13.66 5.4.7 0.002 0.022 13.75 5.4.6 0.002 0.023 13.67 5.4.5 0.005 0.025 13.63 5.4.4 0.002 0.025 13.73 5.4.3 0.005 0.025 13.73 5.4.2 0.000 0.022 13.66 5.4.1 0.003 0.035 13.77 5.4.0 0.000 0.030 13.43 5.3.29 0.003 0.030 12.89 5.3.28 0.006 0.040 12.88 5.3.27 0.003 0.022 12.90 5.3.26 0.003 0.025 12.84 5.3.25 0.006 0.038 12.88 5.3.24 0.003 0.043 12.89 5.3.23 0.005 0.025 12.86 5.3.22 0.012 0.034 12.87 5.3.21 0.010 0.036 12.84 5.3.20 0.003 0.042 12.78 5.3.19 0.005 0.024 12.85 5.3.18 0.003 0.020 12.82 5.3.17 0.000 0.026 12.89 5.3.16 0.003 0.022 12.82 5.3.15 0.002 0.025 12.88 5.3.14 0.003 0.020 12.86 5.3.13 0.003 0.025 12.84 5.3.12 0.003 0.022 12.83 5.3.11 0.003 0.022 12.85 5.3.10 0.003 0.022 12.61 5.3.9 0.003 0.024 12.62 5.3.8 0.002 0.020 12.63 5.3.7 0.009 0.030 12.52 5.3.6 0.005 0.018 12.54 5.3.5 0.000 0.024 12.54 5.3.4 0.003 0.023 12.49 5.3.3 0.000 0.029 12.56 5.3.2 0.002 0.020 12.42 5.3.1 0.006 0.018 12.37 5.3.0 0.004 0.021 12.37
preferences:dark mode live preview
46.56 ms | 401 KiB | 5 Q