3v4l.org

run code in 300+ PHP versions simultaneously
<?php /** * PHP URI Library * * A PHP library for working with URI's, that is designed around the URI * standard. Requires PHP 5.3 or later. This library replaces and extends all * of PHP's parse_url() features, and even has some handy aliases. * * 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 * @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; public $object; private $chain; 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(!empty($this->object->host)){\uri\generate::authority($this->object);\uri\generate::aliases($this->object);$this->chain=new \uri\chain($this);$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 __clone(){$this->_err('CLONE',debug_backtrace(),'clone');} public function __get($name){if(isset($this->object->$name)){\uri\generate::scheme($this->object);\uri\generate::authority($this->object);return $this->object->$name;}else {$this->_err('UNDEFINED',debug_backtrace(),$name);return NULL;}} public function __set($name,$value){if(isset($this->object->$name)&&$name!='authority'){\uri\actions::modify($this->object,'replace',$name,$value);return $value;}else {$this->_err('FORBIDDEN',debug_backtrace(),$name);return NULL;}} public function __isset($name){\uri\generate::scheme($this->object);\uri\generate::authority($this->object);if(isset($this->object->$name)){return !empty($this->object->$name);}return FALSE;} public function __unset($name){if(isset($this->object->$name)&&$name!='host'&&$name!='authority'){\uri\actions::modify($this->object,'replace',$name,'');return TRUE;}elseif(isset($this->object->$name)){$this->_err('FORBIDDEN',debug_backtrace(),$name);}else {$this->_err('UNDEFINED',debug_backtrace(),$name);}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($prepend='',$append=''){echo $prepend.\uri\generate::string($this->object).$append;} public function arr(){return \uri\generate::to_array($this->object);} public function to_array(){return \uri\generate::to_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\actions::modify($this->object,'replace',$section,$str);} public function prepend($section,$str){return \uri\actions::modify($this->object,'prepend',$section,$str);} public function append($section,$str){return \uri\actions::modify($this->object,'append',$section,$str);} public function query_add($key,$value){return \uri\query::add($this->object,$key,$value);} public function query_replace($key,$value){\uri\query::replace($this->object,$key,$value);} public function query_remove($key){\uri\query::remove($this->object,$key);} public function query_exists($key){return \uri\query::exists($this->object,$key);} public function query_get($key){return \uri\query::get($this->object,$key);} public function query_rename($key,$new_key){return \uri\query::rename($this->object,$key,$new_key);} public function chain(){return $this->chain;} public function reset(){$this->__construct($this->input);} private function _err($type,$trace,$name){$fmt='Undifined property via <code>%1$s::%2$s()</code>: Property <code>%3$s</code> cannot be unset in <b>%4$s</b> on line <b>%5$s</b>. Error triggered';if($type=='FORBIDDEN'){$fmt='Forbidden property via <code>%1$s::%2$s()</code>: Property <code>%3$s</code> cannot be unset in <b>%4$s</b> on line <b>%5$s</b>. Error triggered';}elseif($type=='CLONE'){$fmt='Invalid clone in <b>%4$s</b> on line <b>%5$s</b>. Because of how cloning works, and how references are configured within the class, extensions of %1$s cannot be cloned. Please make a new instance instead, like so: <code>$clone = new \\uri($original->str()); $clone->input = $original->input;</code>. Error triggered';}trigger_error(sprintf($fmt,$trace[0]['class'],$trace[0]['function'],$name,$trace[0]['file'],$trace[0]['line']),E_USER_NOTICE);}}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);if(empty($parsed)){$parsed=array_fill(1,10,'');}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);if(!isset($parsed[0][6])){return FALSE;}return $parsed[0]+array_fill(0,11,'');}}class modify{ public static function scheme_name(&$object,$action,$str){$org=$object->scheme_name;\uri\actions::callback($object,$action,__FUNCTION__,$str);if(!(preg_match('/\A[a-z]{1,10}\Z/',$object->scheme_name)||empty($str))){$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;\uri\actions::callback($object,$action,__FUNCTION__,$str);if(!(preg_match('/\A(:)?([\/]{2,3})?\Z/',$object->scheme_symbols)||empty($str))){$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);\uri\actions::callback($object,$action,__FUNCTION__,$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])){$object->scheme=$org[0];$object->scheme_name=$org[1];$object->scheme_symbols=$org[2];return FALSE;}else {$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){return self::scheme($object,$action,$str);} public static function user(&$object,$action,$str){$str=rawurlencode($str);\uri\actions::callback($object,$action,__FUNCTION__,$str);return \uri\generate::string($object);} public static function username(&$object,$action,$str){return self::user($object,$action,$str);} public static function pass(&$object,$action,$str){$str=rawurlencode($str);\uri\actions::callback($object,$action,__FUNCTION__,$str);return \uri\generate::string($object);} public static function password(&$object,$action,$str){return self::pass($object,$action,$str);} public static function host(&$object,$action,$str){$org=$object->host;\uri\actions::callback($object,$action,__FUNCTION__,$str);if((!preg_match('/\A(([a-z0-9_]([a-z0-9\-_]+)?)\.)+[a-z0-9]([a-z0-9\-]+)?\Z/i',$object->host)&&!preg_match('/\A([0-9]\.){3}[0-9]\Z/i',$object->host))){$object->host=$org;return FALSE;}return \uri\generate::string($object);} public static function domain(&$object,$action,$str){return self::host($object,$action,$str);} public static function fqdn(&$object,$action,$str){return self::host($object,$action,$str);} public static function port(&$object,$action,$str){$org=$object->port;if(isset($str[0])&&$str[0]==':'){$str=substr($str,1);}\uri\actions::callback($object,$action,__FUNCTION__,$str);if(!(preg_match('/\A[0-9]{0,5}\Z/',$object->port)||empty($str))){$object->port=$org;return FALSE;}return \uri\generate::string($object);} public static function path(&$object,$action,$str){\uri\actions::callback($object,$action,__FUNCTION__,$str);return \uri\generate::string($object);} public static function query(&$object,$action,$str){if(isset($str[0])&&$str[0]=='?'){$str=substr($str,1);}\uri\actions::callback($object,$action,__FUNCTION__,$str);return \uri\generate::string($object);} public static function fragment(&$object,$action,$str){if(isset($str[0])&&$str[0]=='#'){$str=substr($str,1);}$str=urlencode($str);\uri\actions::callback($object,$action,__FUNCTION__,$str);return \uri\generate::string($object);}}class actions{ public static function modify(&$object,$action,$section,$str){settype($section,'string');settype($str,'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 callback(&$object,$action,$section,$str){switch($action){case 'replace':$object->$section=$str;break;case 'prepend':$object->$section=$str.$object->$section;break;case 'append':$object->$section=$object->$section.$str;}}}class generate{ 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 to_array(&$object){$arr=array('authority'=>$object->authority,'fragment'=>$object->fragment,'host'=>$object->host,'pass'=>$object->pass,'path'=>$object->path,'port'=>$object->port,'query'=>$object->query,'scheme'=>$object->scheme,'scheme_name'=>$object->scheme_name,'scheme_symbols'=>$object->scheme_symbols,'user'=>$object->user,);$arr['domain']=&$arr['host'];$arr['fqdn']=&$arr['host'];$arr['password']=&$arr['pass'];$arr['protocol']=&$arr['scheme'];$arr['username']=&$arr['user'];ksort($arr);return $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 (array)$return;}}class query{ private static function build_query($query_array){return http_build_query($query_array,'','&',PHP_QUERY_RFC3986);} public static function add(&$object,$key,$value){$qarray=\uri\generate::query_array($object);if(!isset($qarray[$key])){$qarray[$key]=$value;\uri\actions::modify($object,'replace','QUERY',self::build_query($qarray));return TRUE;}return FALSE;} public static function replace(&$object,$key,$value){$qarray=\uri\generate::query_array($object);$qarray[$key]=$value;\uri\actions::modify($object,'replace','QUERY',self::build_query($qarray));} public static function remove(&$object,$key){$qarray=\uri\generate::query_array($object);if(isset($qarray[$key])){unset($qarray[$key]);\uri\actions::modify($object,'replace','QUERY',self::build_query($qarray));}} public static function exists(&$object,$key){$qarray=\uri\generate::query_array($object);return isset($qarray[$key]);} public static function get(&$object,$key){$qarray=\uri\generate::query_array($object);if(isset($qarray[$key])){return $qarray[$key];}return NULL;} public static function rename(&$object,$key,$new_key){$qarray=\uri\generate::query_array($object);if(isset($qarray[$key])){$qarray[$new_key]=$qarray[$key];unset($qarray[$key]);\uri\actions::modify($object,'replace','QUERY',self::build_query($qarray));return TRUE;}return FALSE;}}class chain{ private $class; private $object; public function __construct(&$class){$this->class=&$class;$this->object=&$class->object;return $this;} public function p_str($prepend='',$append=''){echo $prepend.\uri\generate::string($this->object).$append;return $this;} public function replace($section,$str){\uri\actions::modify($this->object,'replace',$section,$str);return $this;} public function prepend($section,$str){\uri\actions::modify($this->object,'prepend',$section,$str);return $this;} public function append($section,$str){\uri\actions::modify($this->object,'append',$section,$str);return $this;} public function query_add($key,$value){\uri\query::add($this->object,$key,$value);return $this;} public function query_replace($key,$value){\uri\query::replace($this->object,$key,$value);return $this;} public function query_remove($key){\uri\query::remove($this->object,$key);return $this;} public function query_rename($key,$new_key){\uri\query::rename($this->object,$key,$new_key);return $this;} public function reset(){$this->class->__construct($this->class->input);} private function _err($trace){trigger_error(sprintf('The method <code>%1$s()</code> cannot be chained in <b>%2$s</b> on line <b>%3$s</b>. Error triggered',$trace[0]['function'],$trace[0]['file'],$trace[0]['line']),E_USER_NOTICE);} public function str(){$this->_err(debug_backtrace());return $this;} public function to_string(){$this->_err(debug_backtrace());return $this;} public function arr(){$this->_err(debug_backtrace());return $this;} public function to_array(){$this->_err(debug_backtrace());return $this;} public function path_info(){$this->_err(debug_backtrace());return $this;} public function query_array(){$this->_err(debug_backtrace());return $this;} public function query_exists(){$this->_err(debug_backtrace());return $this;} public function query_get(){$this->_err(debug_backtrace());return $this;}}}

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).

VersionSystem time (s)User time (s)Memory (MiB)
8.3.60.0070.01118.68
8.3.50.0130.00622.00
8.3.40.0100.01019.27
8.3.30.0090.00619.14
8.3.20.0060.00920.23
8.3.10.0130.00621.97
8.3.00.0060.00918.18
8.2.180.0090.01516.88
8.2.170.0060.00922.96
8.2.160.0160.00420.63
8.2.150.0080.00024.18
8.2.140.0050.00324.66
8.2.130.0040.00426.16
8.2.120.0060.00320.97
8.2.110.0000.01020.60
8.2.100.0060.00618.22
8.2.90.0030.00618.47
8.2.80.0030.00618.00
8.2.70.0030.00618.00
8.2.60.0080.00018.18
8.2.50.0000.00918.07
8.2.40.0080.00018.50
8.2.30.0030.00718.32
8.2.20.0040.00417.99
8.2.10.0040.00418.18
8.2.00.0040.00417.91
8.1.280.0140.00725.92
8.1.270.0040.01823.86
8.1.260.0070.00726.35
8.1.250.0040.00428.09
8.1.240.0030.00622.39
8.1.230.0130.00021.13
8.1.220.0050.00517.74
8.1.210.0060.00318.99
8.1.200.0030.00617.48
8.1.190.0000.00917.34
8.1.180.0060.00318.10
8.1.170.0040.00418.72
8.1.160.0000.00822.27
8.1.150.0040.00418.98
8.1.140.0040.00417.64
8.1.130.0070.00018.13
8.1.120.0050.00317.57
8.1.110.0000.00817.66
8.1.100.0040.00417.51
8.1.90.0020.00517.68
8.1.80.0040.00417.67
8.1.70.0030.00517.51
8.1.60.0030.00617.78
8.1.50.0000.00817.71
8.1.40.0000.00817.61
8.1.30.0060.00317.77
8.1.20.0000.00917.83
8.1.10.0030.00617.78
8.1.00.0000.00817.71
8.0.300.0080.00020.46
8.0.290.0030.00517.00
8.0.280.0000.00718.72
8.0.270.0000.00717.43
8.0.260.0040.00417.55
8.0.250.0080.00017.32
8.0.240.0080.00017.32
8.0.230.0030.00517.27
8.0.220.0000.00817.12
8.0.210.0000.00717.20
8.0.200.0070.00017.29
8.0.190.0060.00317.11
8.0.180.0050.00317.24
8.0.170.0000.00917.14
8.0.160.0030.00517.19
8.0.150.0000.00817.24
8.0.140.0050.00317.15
8.0.130.0060.00013.67
8.0.120.0040.00417.08
8.0.110.0030.00617.21
8.0.100.0040.00417.07
8.0.90.0050.00317.32
8.0.80.0160.00317.24
8.0.70.0040.00417.10
8.0.60.0040.00417.16
8.0.50.0030.00617.07
8.0.30.0070.01517.32
8.0.20.0070.01217.46
8.0.10.0040.00417.07
8.0.00.0080.01117.11
7.4.330.0060.00015.04
7.4.320.0070.00016.79
7.4.300.0000.00716.71
7.4.290.0090.00316.80
7.4.280.0070.00616.67
7.4.270.0040.00416.79
7.4.260.0030.00716.72
7.4.250.0000.00816.79
7.4.240.0000.00816.73
7.4.230.0000.00716.91
7.4.220.0100.01916.81
7.4.210.0130.00916.66
7.4.200.0080.00016.44
7.4.160.0030.01316.58
7.4.150.0080.01117.40
7.4.140.0130.00917.86
7.4.130.0090.00816.78
7.4.120.0090.01016.71
7.4.110.0070.01016.80
7.4.100.0130.00616.66
7.4.90.0090.00916.77
7.4.80.0000.01819.39
7.4.70.0160.00516.44
7.4.60.0040.01516.56
7.4.50.0050.00016.37
7.4.40.0030.01316.55
7.4.30.0100.00616.48
7.4.00.0090.00915.01
7.3.330.0050.00213.46
7.3.320.0030.00313.34
7.3.310.0030.00516.50
7.3.300.0050.00316.38
7.3.290.0000.01516.46
7.3.280.0070.01116.47
7.3.270.0130.00617.40
7.3.260.0070.01116.55
7.3.250.0110.00716.49
7.3.240.0060.01316.55
7.3.230.0090.01316.67
7.3.210.0090.00916.67
7.3.200.0000.01819.39
7.3.190.0100.01116.80
7.3.180.0000.01616.72
7.3.170.0090.00816.54
7.3.160.0100.00716.73
7.3.120.0030.01415.22
7.3.110.0110.00714.72
7.3.100.0000.01215.04
7.3.90.0060.01014.97
7.3.80.0040.01215.29
7.3.70.0030.01015.08
7.3.60.0030.00915.11
7.3.50.0090.00914.61
7.3.40.0040.01415.05
7.3.30.0060.00614.86
7.3.20.0030.01216.72
7.3.10.0060.01016.50
7.3.00.0060.00616.50
7.2.330.0160.00716.79
7.2.320.0070.01316.54
7.2.310.0070.01016.86
7.2.300.0090.00916.82
7.2.290.0120.01216.84
7.2.250.0040.01815.19
7.2.240.0100.01014.84
7.2.230.0090.00915.12
7.2.220.0030.00615.30
7.2.210.0130.00315.18
7.2.200.0000.01414.75
7.2.190.0060.01215.30
7.2.180.0030.01314.84
7.2.170.0110.00015.13
7.1.330.0060.00615.75
7.1.320.0040.01115.86
7.1.310.0030.01315.58
7.1.300.0070.01015.66
7.1.290.0070.01115.87
7.1.280.0000.01315.62
7.1.270.0000.01415.89
7.1.260.0000.01415.60
7.1.70.0000.00817.19
7.1.60.0030.02219.25
7.1.50.0070.01816.54
7.1.00.0100.06722.44
7.0.200.0060.00616.41
7.0.140.0030.07322.00
7.0.100.0030.08720.12
7.0.90.0100.07320.11
7.0.80.0130.07720.19
7.0.70.0100.08720.05
7.0.60.0000.08720.15
7.0.50.0030.06720.56
7.0.40.0070.08320.04
7.0.30.0100.08020.11
7.0.20.0100.07719.93
7.0.10.0030.06020.05
7.0.00.0000.05320.14
5.6.280.0030.07321.27
5.6.250.0030.08720.72
5.6.240.0100.08020.82
5.6.230.0170.07320.69
5.6.220.0130.07720.71
5.6.210.0000.09020.84
5.6.200.0130.07021.20
5.6.190.0000.08721.23
5.6.180.0100.07721.14
5.6.170.0070.09021.29
5.6.160.0070.07721.24
5.6.150.0070.08321.14
5.6.140.0130.07321.23
5.6.130.0130.08021.32
5.6.120.0170.08021.31
5.6.110.0170.06721.35
5.6.100.0030.09021.20
5.6.90.0030.04321.25
5.6.80.0030.04020.68
5.6.70.0200.06320.58
5.6.60.0030.04020.61
5.6.50.0030.04320.64
5.6.40.0070.03720.64
5.6.30.0030.04020.68
5.6.20.0100.03320.71
5.6.10.0030.04320.58
5.6.00.0100.03020.46
5.5.380.0100.07320.57
5.5.370.0030.07320.54
5.5.360.0030.09020.59
5.5.350.0100.07020.66
5.5.340.0130.04321.07
5.5.330.0100.03021.01
5.5.320.0100.08021.12
5.5.310.0130.07721.08
5.5.300.0100.07320.98
5.5.290.0100.08020.91
5.5.280.0070.04721.11
5.5.270.0170.07321.06
5.5.260.0100.07720.98
5.5.250.0130.06320.80
5.5.240.0130.03720.40
5.5.230.0200.03320.47
5.5.220.0030.04020.29
5.5.210.0000.04020.48
5.5.200.0070.03720.35
5.5.190.0030.04020.45
5.5.180.0030.07020.41
5.5.160.0100.03320.39
5.5.150.0030.05320.45
5.5.140.0030.04320.45
5.5.130.0100.03720.18
5.5.120.0070.03720.31
5.5.110.0030.04020.17
5.5.100.0070.03720.35
5.5.90.0000.04320.19
5.5.80.0030.04020.19
5.5.70.0000.04020.24
5.5.60.0030.04020.13
5.5.50.0000.04320.24
5.5.40.0030.04320.23
5.5.30.0070.04320.11
5.5.20.0100.03320.34
5.5.10.0070.04320.20
5.5.00.0000.04020.29
5.4.450.0100.06319.45
5.4.440.0000.08719.34
5.4.430.0100.08019.64
5.4.420.0130.07319.62
5.4.410.0030.04719.42
5.4.400.0130.07019.23
5.4.390.0070.03719.15
5.4.380.0130.05019.23
5.4.370.0030.03719.23
5.4.360.0100.03719.00
5.4.350.0070.04019.12
5.4.340.0030.04019.01
5.4.320.0000.04319.13
5.4.310.0070.03319.14
5.4.300.0100.03719.22
5.4.290.0000.04019.14
5.4.280.0000.04019.29
5.4.270.0100.03019.00
5.4.260.0000.04019.00
5.4.250.0030.03719.05
5.4.240.0030.05019.14
5.4.230.0000.04019.14
5.4.220.0070.04019.17
5.4.210.0000.04319.36
5.4.200.0000.04019.32
5.4.190.0030.04018.93
5.4.180.0000.04719.06
5.4.170.0030.04019.21
5.4.160.0030.03719.13
5.4.150.0030.05019.27
5.4.140.0000.03716.65
5.4.130.0070.03316.58
5.4.120.0070.03016.61
5.4.110.0000.04016.48
5.4.100.0000.04016.44
5.4.90.0000.04316.59
5.4.80.0070.03016.49
5.4.70.0030.04016.42
5.4.60.0030.03316.61
5.4.50.0030.03316.47
5.4.40.0070.04716.48
5.4.30.0030.06716.58
5.4.20.0000.07316.63
5.4.10.0070.03316.50
5.4.00.0070.03315.86
5.3.290.0100.04714.89
5.3.280.0070.03314.86
5.3.270.0100.05014.99
5.3.260.0030.03714.82
5.3.250.0000.03714.99
5.3.240.0070.03314.94
5.3.230.0100.07014.88
5.3.220.0030.03714.90
5.3.210.0070.03714.87
5.3.200.0070.03714.77
5.3.190.0030.08314.78
5.3.180.0030.04714.84
5.3.170.0030.04714.79
5.3.160.0000.04014.89
5.3.150.0000.04014.87
5.3.140.0070.06314.77
5.3.130.0000.07714.82
5.3.120.0030.07314.77
5.3.110.0100.06314.89
5.3.100.0000.08014.38
5.3.90.0070.07314.36
5.3.80.0070.04714.40
5.3.70.0070.06314.32
5.3.60.0100.06714.21
5.3.50.0130.05714.31
5.3.40.0130.06714.20
5.3.30.0100.06714.24
5.3.20.0070.04314.00
5.3.10.0100.06314.05
5.3.00.0070.07013.92

preferences:
42.25 ms | 401 KiB | 5 Q