@ 2013-08-19T12:59:25Z <?php
/**
* PDO4You is a class that implements the Singleton design pattern for connecting the database using the PDO extension (PHP Data Objects)
*
* @author Giovanni Ramos <giovannilauro@gmail.com>
* @copyright 2010-2013, Giovanni Ramos
* @since 2010-09-07
* @license http://opensource.org/licenses/MIT
* @link http://github.com/giovanniramos/PDO4YOU
* @package PDO4YOU
* @category PDO
* @version 3.1
*
* */
class PDO4You extends PDO4You_pagination
{
/**
* Stores the name of the server machine on which the database resides
*
* @access private static
* @var string
*
* */
private static $datahost;
/**
* Stores the name of the port on which the server is running
*
* @access private static
* @var string
*
* */
private static $dataport;
/**
* Stores the name of the current instance of the connection
*
* @access private static
* @var string
*
* */
private static $connection;
/**
* Stores an object instance PDO connection
*
* @access private static
* @var object
*
* */
private static $instance;
/**
* Stores object instances PDO connection
*
* @access private static
* @var array
*
* */
private static $handle = array();
/**
* Stores the definition of persistent connection
*
* @access private static
* @var boolean
*
* */
private static $persistent = false;
/**
* Stores the ID of the last inserted row or sequence value
*
* @access private
* @var string
*
* */
private static $lastId;
/**
* Stores the total of affected rows in last CRUD operation
*
* @access private
* @var string
*
* */
private static $rowCount;
/**
* Stores messages Exception thrown
*
* @access private
* @var array
*
* */
private static $exception = array(
'code-1044' => 'Access denied for user: \'%1$s\'',
'code-1045' => 'Failed communication with the database using: \'%1$s\'@\'%2$s\'',
'code-2002' => 'No connection could be made because the destination machine actively refused. This host is not known.',
'code-2005' => 'No communication with the host provided. Check your settings.',
'unrecognized' => 'The Adapter/DSN Instance was not recognized.',
'no-database' => 'Database unknown. Check your settings.',
'no-instance' => 'No instance of object PDO4You available. Unable to access the methods.',
'no-argument-sql' => 'The SQL argument is missing.',
'no-instruction-json' => 'The SQL statement is missing in JSON format.',
'not-implemented' => 'Method not implemented.',
'critical-error' => 'Critical error detected in the system.',
'json-error-depth' => 'Maximum stack depth exceeded.',
'json-error-state-mismatch' => 'Mismatch or arithmetic operation modes impossible to be represented.',
'json-error-ctrl-char' => 'Attribute control unexpected was found.',
'json-error-syntax' => 'The query is poorly formatted JSON provided.'
);
/**
* The constructor is set to private, preventing direct instance of the class
*
* @access private
*
* */
private function PDO4You()
{
}
/**
* Method Singleton connection
*
* @access private static
* @param string $alias Pseudonym of a connection instance
* @param string $driver Driver DSN connection
* @param string $user Username of the database
* @param string $pass Password of the database
* @param string $option Configuration the connection driver
* @return void
* @throws PDOException Throws an exception in case of connection failures
*
* */
private static function singleton($alias, $driver, $user, $pass, $option)
{
try {
try {
$instance = @ new PDO($driver, $user, $pass, $option);
$instance->setAttribute(PDO::ATTR_ERRMODE, ($_SERVER['SERVER_ADDR'] == '127.0.0.1' || $_SERVER['SERVER_ADDR'] == '::1') ? PDO::ERRMODE_EXCEPTION : PDO::ERRMODE_SILENT);
self::setHandle($alias, $instance);
self::setInstance($alias);
} catch (PDOException $e) {
$error = self::getErrorInfo($e);
if ($e->getMessage() == 'could not find driver' || $e->getMessage() == 'invalid data source name') {
throw new PDOException(self::$exception['unrecognized']);
} elseif ($error['code'] == '2005') {
throw new PDOException(self::$exception['code-2005']);
} elseif ($error['code'] == '2002') {
throw new PDOException(self::$exception['code-2002']);
} elseif ($error['code'] == '1044') {
throw new PDOException(sprintf(self::$exception['code-1044'], $user));
} elseif ($error['code'] == '1045') {
throw new PDOException(sprintf(self::$exception['code-1045'], $user, $pass));
} else {
throw $e;
}
}
} catch (PDOException $e) {
self::stackTrace($e);
}
}
/**
* Method for setting a connection instance
*
* @access public static
* @param string $alias Pseudonym of a connection instance
* @return void
*
* */
public static function setInstance($alias)
{
self::$instance = self::getHandle($alias == null ? 'standard' : $alias);
}
/**
* Method to get a single instance of the database per connection
*
* @access public static
* @param string $alias Pseudonym that will be used as a pointer to an instance of established connection
* @param string $type Connection type if using "Initial Setup" or "Full DSN"
* @param string $user Username of the database
* @param string $pass Password of the database
* @param string $option Configuration the connection driver
* @return object
* @throws Exception Throws an exception in case of connection failures
*
* */
public static function getInstance($alias = 'standard', $type = null, $user = null, $pass = null, Array $option = null)
{
try {
try {
if (!array_key_exists($alias, self::$handle)) {
if ($alias == 'standard') {
$dir = dirname(__FILE__);
$file = $dir . '/PDO4You.settings.ini';
if (file_exists($file)) {
if (is_readable($file)) {
$datafile = parse_ini_file_advanced($file);
if (isset($datafile['adapter'])) {
if (PDO4YOU_ADAPTER == 'vcap') {
$json = json_decode(getenv("VCAP_SERVICES"), true);
$data = $datafile['adapter']['vcap'];
$part = preg_split('~[|]~', $data['vcap']);
$conf = $json[$part[0]][$part[1]]['credentials'];
$type = isset($data['type']) ? $data['type'] : null;
$host = isset($conf['hostname']) ? $conf['hostname'] : null;
$port = isset($conf['port']) ? $conf['port'] : null;
$user = isset($conf['username']) ? $conf['username'] : null;
$pass = isset($conf['password']) ? $conf['password'] : null;
$base = isset($conf['name']) ? $conf['name'] : null;
} else {
$part = preg_split('~[.]~', preg_replace('~[\s]{1,}~', null, PDO4YOU_ADAPTER));
$conf = count($part) == 2 ? @$datafile['adapter'][$part[0]][$part[1]] : @$datafile['adapter'][$part[0]];
$type = isset($conf['type']) ? $conf['type'] : null;
$host = isset($conf['host']) ? $conf['host'] : null;
$port = isset($conf['port']) ? $conf['port'] : null;
$user = isset($conf['user']) ? $conf['user'] : null;
$pass = isset($conf['pass']) ? $conf['pass'] : null;
$base = isset($conf['base']) ? $conf['base'] : null;
}
} else {
exit('The settings for existing databases, were not configured in the <strong>PDO4You.settings.ini</strong>.');
}
} else {
exit('The <strong>PDO4You.settings.ini</strong> file cannot be read.');
}
} else {
exit('The <strong>PDO4You.settings.ini</strong> file could not be found in directory:<br /> ' . $dir);
}
}
$type = strtolower($type);
switch ($type) {
case 'maria': $driver = 'mysql:' . (!(empty($base)) ? 'dbname=' . $base . ';' : null) . 'host=' . $host . ';port=' . $port . ';';
break;
case 'mysql':
case 'pgsql':
case 'cubrid': $driver = $type . ':' . (!(empty($base)) ? 'dbname=' . $base . ';' : null) . 'host=' . $host . ';port=' . $port . ';';
break;
case 'mssql':
case 'dblib':
case 'sybase': $driver = $type . ':' . (!(empty($base)) ? 'dbname=' . $base . ';' : null) . 'host=' . $host . ';';
break;
case 'sqlsrv': $driver = 'sqlsrv:' . (!(empty($base)) ? 'database=' . $base . ';' : null) . 'server=' . $host . ';';
break;
case 'oracle': $driver = 'oci:' . (!(empty($base)) ? 'dbname=' . $base : null);
break;
case 'sqlite': $driver = 'sqlite:' . (!(empty($base)) ? $base : null);
break;
default: $driver = $type;
}
$option = !is_null($option) ? $option : array(PDO::ATTR_PERSISTENT => self::$persistent, PDO::ATTR_CASE => PDO::CASE_LOWER);
self::singleton($alias, $driver, $user, $pass, $option);
}
} catch (PDOException $e) {
$error = self::getErrorInfo($e);
if ($error['state'] == '42000') {
throw new PDOException(self::$exception['no-database']);
} else {
throw $e;
}
}
} catch (PDOException $e) {
self::stackTrace($e);
}
return self::$instance;
}
/**
* Method for assigning a new object instance PDO connection
*
* @param string $alias Pseudonym to identify the connection instance
* @param PDO $instance Object PDO connection
* @return void
*
*/
private static function setHandle($alias, PDO $instance)
{
self::$handle[$alias] = $instance;
}
/**
* Method to return an object PDO connection
*
* @param string $alias Pseudonym of a connection instance
* @return object
*
*/
private static function getHandle($alias)
{
self::setConnection($alias);
return self::$handle[$alias];
}
/**
* Method to set the server name
*
* @access private static
* @param string $host Server name
* @return void
*
* */
private static function setDatahost($host)
{
self::$datahost = $host;
}
/**
* Method to retrieve the server name
*
* @access public static
* @param void
* @return string
*
* */
public static function getDatahost()
{
return self::$datahost;
}
/**
* Method to set the port number of the server
*
* @access private static
* @param string $port Port number
* @return void
*
* */
private static function setDataport($port)
{
self::$dataport = $port;
}
/**
* Method to retrieve the port number of the server
*
* @access public static
* @param void
* @return string
*
* */
public static function getDataport()
{
return self::$dataport;
}
/**
* Method to define which the current instance of connection
*
* @access private static
* @param string $alias Pseudonym of a connection instance
* @return void
*
* */
private static function setConnection($alias)
{
self::$connection = $alias;
}
/**
* Method to retrieve the name of the current instance of connection
*
* @access public static
* @param void
* @return string
*
* */
public static function getConnection()
{
return self::$connection;
}
/**
* Method for defining the type of communication with the database
* The default connection is not persistent
*
* @access public static
* @param boolean $persistent Sets a persistent connection
* @return void
*
* */
public static function setPersistent($persistent = false)
{
self::$persistent = $persistent;
}
/**
* Method to capture the error information of an Exception
*
* @access public static
* @param Exception $e Gets the message from the exception thrown
* @param boolean $debug Enables the display of the captured values
* @return array
*
* */
public static function getErrorInfo(Exception $e, $debug = false)
{
if (defined(PDO4YOU_WEBMASTER)) {
self::fireAlert(self::$exception['critical-error'], $e);
}
$info = null;
$errorInfo = null;
$message = $e->getMessage();
preg_match('~SQLSTATE[[]([[:alnum:]]{1,})[]]:?\s[[]?([[:digit:]]{1,})?[]]?\s?(.+)~', $message, $errorInfo);
$info['state'] = isset($errorInfo[1]) ? $errorInfo[1] : null;
$info['code'] = isset($errorInfo[2]) ? $errorInfo[2] : null;
$info['message'] = isset($errorInfo[3]) ? $errorInfo[3] : null;
if ($debug) {
echo '<pre>', print_r($info), '</pre>';
}
return $info;
}
/**
* Method to retrieve the name of the current driver
*
* @access public static
* @param void
* @return string
*
* */
public static function getDriver()
{
return self::$instance->getAttribute(PDO::ATTR_DRIVER_NAME);
}
/**
* Method to display details about the target server's database connected
*
* @access public static
* @param void
* @return void
*
* */
public static function getServerInfo()
{
try {
if (self::$instance instanceof PDO) {
self::setStyle();
$driver = self::getDriver();
$info = ($driver == 'sqlite' || $driver == 'mssql') ? 'not available' : self::$instance->getAttribute(PDO::ATTR_SERVER_INFO);
echo '<h7>Server Information - ', is_array($info) ? implode(', ', $info) : $info, '</h7>';
} else {
throw new PDOException(self::$exception['no-instance']);
}
} catch (PDOException $e) {
self::stackTrace($e);
}
}
/**
* Method to display the PDO drivers installed and supported by the server
*
* @access public static
* @param void
* @return void
*
* */
public static function getAvailableDrivers()
{
try {
if (self::$instance instanceof PDO) {
self::setStyle();
$info = self::$instance->getAvailableDrivers();
echo '<h7>Available Drivers: ', implode(', ', $info), '</h7>';
} else {
throw new PDOException(self::$exception['no-instance']);
}
} catch (PDOException $e) {
self::stackTrace($e);
}
}
/**
* PDO4You Style
*
* @access public static
* @param void
* @return void
*
* */
public static function setStyle()
{
$style = '<style type="text/css">';
$style.= 'body,.code { background:#FAFAFA; font:normal 12px/1.7em Bitstream Vera Sans Mono,Courier New,Monospace; margin:0; padding:0; }';
$style.= '#pdo4you h2 { display:block; color:#000; background:#FFF; font-size:20px; margin:0; padding:10px; border-bottom:solid 1px #999; }';
$style.= '#pdo4you h7 { display:block; color:#FFF; background:#000; font-size:12px; margin:0; padding:2px 5px; }';
$style.= '.pdo4you { margin:8px; padding:0; }';
$style.= '.code { font:inherit; background:#EFEFEF; border:solid 1px #DDD; border-right-color:#BBB; border-bottom:none; margin:10px 10px 0 10px; overflow:auto; }';
$style.= '.trace,.debug { background:#FFF; border:solid 1px #BBB; border-left-color:#DDD; border-top:none; margin:0 10px 15px 10px; }';
$style.= '.trace div { clear:both; }';
$style.= '.debug { padding:5px; }';
$style.= '.title { padding-left:6px; font-weight:bold; }';
$style.= '.title span { font-weight:normal; }';
$style.= '.number { color:#AAA; background:#EFEFEF; min-width:40px; padding:0 5px; margin-right:5px; float:left; text-align:right; cursor:default; }';
$style.= '.highlight { background:#FFC; }';
$style.= '</style>';
print $style;
}
}
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.000 16.61 8.3.5 0.005 0.010 22.08 8.3.4 0.012 0.009 18.66 8.3.3 0.016 0.006 19.25 8.3.2 0.000 0.008 20.51 8.3.1 0.008 0.000 23.61 8.3.0 0.003 0.005 20.87 8.2.18 0.007 0.007 18.66 8.2.17 0.009 0.012 22.96 8.2.16 0.013 0.010 20.34 8.2.15 0.005 0.003 24.18 8.2.14 0.000 0.008 24.66 8.2.13 0.013 0.007 26.16 8.2.12 0.003 0.006 22.20 8.2.11 0.003 0.006 22.23 8.2.10 0.009 0.003 17.84 8.2.9 0.003 0.005 19.30 8.2.8 0.004 0.004 18.05 8.2.7 0.007 0.003 17.88 8.2.6 0.004 0.004 18.05 8.2.5 0.003 0.005 18.07 8.2.4 0.000 0.009 18.28 8.2.3 0.005 0.003 18.11 8.2.2 0.000 0.008 17.95 8.2.1 0.004 0.004 17.91 8.2.0 0.004 0.004 17.83 8.1.28 0.004 0.018 25.92 8.1.27 0.000 0.008 23.83 8.1.26 0.004 0.007 26.35 8.1.25 0.003 0.007 28.09 8.1.24 0.006 0.003 23.79 8.1.23 0.006 0.006 19.21 8.1.22 0.003 0.005 17.91 8.1.21 0.004 0.004 18.77 8.1.20 0.000 0.010 17.60 8.1.19 0.003 0.005 17.55 8.1.18 0.003 0.006 18.10 8.1.17 0.011 0.000 18.78 8.1.16 0.000 0.008 22.19 8.1.15 0.000 0.008 18.70 8.1.14 0.005 0.003 17.48 8.1.13 0.000 0.008 17.89 8.1.12 0.008 0.000 17.61 8.1.11 0.005 0.003 17.59 8.1.10 0.000 0.007 17.46 8.1.9 0.005 0.003 17.58 8.1.8 0.000 0.007 17.52 8.1.7 0.003 0.003 17.52 8.1.6 0.003 0.006 17.70 8.1.5 0.004 0.004 17.57 8.1.4 0.003 0.005 17.60 8.1.3 0.004 0.004 17.61 8.1.2 0.000 0.008 17.75 8.1.1 0.003 0.005 17.69 8.1.0 0.006 0.003 17.63 8.0.30 0.000 0.008 18.77 8.0.29 0.000 0.007 17.29 8.0.28 0.004 0.004 18.55 8.0.27 0.005 0.002 17.09 8.0.26 0.007 0.000 16.93 8.0.25 0.005 0.003 17.16 8.0.24 0.004 0.004 17.13 8.0.23 0.006 0.003 17.05 8.0.22 0.003 0.003 17.14 8.0.21 0.007 0.000 17.16 8.0.20 0.004 0.004 17.06 8.0.19 0.006 0.003 17.24 8.0.18 0.005 0.002 16.98 8.0.17 0.000 0.008 17.15 8.0.16 0.004 0.004 17.00 8.0.15 0.003 0.006 17.12 8.0.14 0.000 0.008 17.13 8.0.13 0.006 0.000 13.56 8.0.12 0.001 0.007 15.31 8.0.11 0.002 0.006 15.36 8.0.10 0.000 0.008 15.31 8.0.9 0.001 0.007 15.33 8.0.8 0.006 0.005 15.36 8.0.7 0.006 0.002 15.31 8.0.6 0.007 0.001 15.29 8.0.5 0.005 0.003 15.29 8.0.3 0.012 0.004 16.03 8.0.2 0.010 0.005 16.08 8.0.1 0.006 0.002 15.27 8.0.0 0.010 0.009 15.86 7.4.33 0.005 0.000 15.00 7.4.32 0.000 0.007 16.65 7.4.30 0.003 0.003 16.62 7.4.29 0.000 0.008 16.62 7.4.28 0.005 0.003 16.52 7.4.27 0.000 0.007 16.75 7.4.26 0.008 0.000 16.66 7.4.25 0.004 0.004 15.03 7.4.24 0.003 0.005 15.56 7.4.23 0.000 0.008 15.01 7.4.22 0.006 0.007 14.97 7.4.21 0.006 0.008 15.79 7.4.20 0.005 0.003 14.90 7.4.19 0.006 0.002 15.05 7.4.18 0.000 0.008 13.45 7.4.16 0.003 0.009 15.06 7.4.15 0.008 0.005 15.39 7.4.14 0.006 0.009 16.36 7.4.13 0.007 0.007 15.52 7.4.12 0.013 0.006 15.48 7.4.11 0.010 0.005 15.00 7.4.10 0.007 0.010 14.93 7.4.9 0.006 0.009 15.01 7.4.8 0.011 0.005 16.32 7.4.7 0.003 0.012 14.99 7.4.6 0.007 0.006 14.95 7.4.5 0.006 0.003 15.00 7.4.4 0.008 0.002 18.00 7.4.3 0.005 0.010 15.05 7.4.2 0.003 0.006 13.28 7.4.1 0.008 0.000 13.40 7.4.0 0.009 0.005 14.20 7.3.33 0.003 0.003 13.31 7.3.32 0.005 0.000 13.30 7.3.31 0.004 0.004 14.86 7.3.30 0.006 0.001 14.80 7.3.29 0.005 0.009 14.96 7.3.28 0.008 0.008 15.65 7.3.27 0.007 0.006 15.34 7.3.26 0.008 0.008 14.90 7.3.25 0.009 0.005 15.40 7.3.24 0.009 0.003 15.07 7.3.23 0.005 0.007 14.89 7.3.22 0.004 0.004 13.38 7.3.21 0.009 0.004 14.93 7.3.20 0.004 0.009 16.45 7.3.19 0.008 0.007 15.08 7.3.18 0.005 0.007 14.99 7.3.17 0.008 0.004 14.98 7.3.16 0.005 0.007 15.00 7.3.15 0.007 0.000 13.49 7.3.14 0.000 0.006 13.23 7.3.13 0.006 0.000 13.21 7.3.12 0.005 0.006 14.20 7.3.11 0.003 0.005 13.97 7.3.10 0.006 0.005 14.01 7.3.9 0.002 0.007 14.39 7.3.8 0.005 0.007 14.11 7.3.7 0.006 0.005 14.25 7.3.6 0.005 0.005 14.23 7.3.5 0.003 0.005 14.33 7.3.4 0.006 0.005 14.29 7.3.3 0.003 0.006 14.09 7.3.2 0.004 0.006 15.86 7.3.1 0.003 0.005 15.76 7.3.0 0.003 0.005 15.85 7.2.34 0.012 0.000 13.46 7.2.33 0.010 0.005 14.93 7.2.32 0.010 0.007 14.98 7.2.31 0.010 0.006 14.99 7.2.30 0.002 0.013 14.86 7.2.29 0.009 0.006 14.94 7.2.28 0.013 0.000 13.17 7.2.27 0.012 0.000 13.32 7.2.26 0.006 0.007 13.44 7.2.25 0.012 0.000 13.18 7.2.24 0.001 0.012 14.09 7.2.23 0.004 0.010 14.11 7.2.22 0.005 0.010 13.98 7.2.21 0.001 0.014 14.16 7.2.20 0.010 0.003 14.33 7.2.19 0.005 0.007 14.26 7.2.18 0.007 0.007 14.36 7.2.17 0.005 0.010 14.28 7.2.16 0.005 0.009 14.32 7.2.15 0.012 0.002 15.92 7.2.14 0.008 0.006 15.83 7.2.13 0.007 0.009 15.86 7.2.12 0.011 0.004 15.81 7.2.11 0.010 0.002 16.04 7.2.10 0.008 0.006 16.12 7.2.9 0.004 0.008 16.06 7.2.8 0.005 0.009 15.87 7.2.7 0.007 0.008 15.94 7.2.6 0.008 0.005 16.06 7.2.5 0.008 0.006 16.07 7.2.4 0.007 0.007 16.01 7.2.3 0.008 0.004 15.96 7.2.2 0.012 0.002 16.02 7.2.1 0.008 0.005 15.88 7.2.0 0.009 0.004 17.05 7.1.33 0.008 0.003 14.70 7.1.32 0.008 0.007 14.79 7.1.31 0.009 0.005 14.66 7.1.30 0.009 0.003 14.86 7.1.29 0.005 0.007 14.77 7.1.28 0.009 0.005 14.90 7.1.27 0.008 0.006 14.89 7.1.26 0.009 0.003 14.93 7.1.25 0.008 0.004 14.77 7.1.24 0.011 0.000 13.98 7.1.23 0.000 0.012 14.23 7.1.22 0.009 0.002 14.07 7.1.21 0.012 0.000 14.04 7.1.20 0.008 0.003 14.82 7.1.19 0.008 0.004 13.97 7.1.18 0.013 0.000 14.23 7.1.17 0.006 0.006 14.13 7.1.16 0.000 0.013 14.14 7.1.15 0.012 0.000 14.16 7.1.14 0.000 0.012 14.01 7.1.13 0.006 0.006 13.98 7.1.12 0.013 0.000 14.02 7.1.11 0.012 0.000 14.05 7.1.10 0.001 0.010 15.92 7.1.9 0.012 0.000 14.07 7.1.8 0.009 0.004 14.13 7.1.7 0.009 0.002 15.39 7.1.6 0.009 0.011 16.61 7.1.5 0.010 0.007 15.49 7.1.4 0.008 0.004 14.13 7.1.3 0.004 0.009 13.94 7.1.2 0.009 0.003 13.99 7.1.1 0.012 0.000 14.06 7.1.0 0.005 0.041 18.10 7.0.33 0.008 0.004 14.01 7.0.32 0.006 0.006 13.92 7.0.31 0.000 0.012 13.86 7.0.30 0.009 0.004 14.05 7.0.29 0.008 0.004 13.84 7.0.28 0.006 0.005 13.87 7.0.27 0.009 0.003 13.88 7.0.26 0.011 0.000 13.93 7.0.25 0.006 0.006 14.15 7.0.24 0.009 0.003 14.06 7.0.23 0.012 0.000 14.13 7.0.22 0.006 0.006 14.07 7.0.21 0.012 0.000 14.00 7.0.20 0.006 0.006 15.32 7.0.19 0.008 0.004 13.91 7.0.18 0.000 0.012 14.13 7.0.17 0.008 0.004 14.13 7.0.16 0.006 0.006 14.00 7.0.15 0.004 0.008 14.05 7.0.14 0.006 0.039 17.97 7.0.13 0.005 0.007 14.07 7.0.12 0.006 0.006 14.17 7.0.11 0.004 0.008 13.97 7.0.10 0.024 0.042 16.99 7.0.9 0.025 0.028 17.10 7.0.8 0.011 0.038 17.08 7.0.7 0.010 0.041 17.10 7.0.6 0.013 0.033 17.00 7.0.5 0.006 0.034 17.13 7.0.4 0.009 0.043 16.97 7.0.3 0.004 0.035 17.06 7.0.2 0.010 0.043 17.02 7.0.1 0.011 0.041 17.00 7.0.0 0.008 0.044 17.06 5.6.40 0.008 0.003 12.51 5.6.39 0.006 0.006 12.60 5.6.38 0.004 0.008 12.67 5.6.37 0.011 0.002 12.61 5.6.36 0.011 0.000 12.47 5.6.35 0.007 0.004 12.44 5.6.34 0.008 0.003 12.73 5.6.33 0.011 0.000 12.67 5.6.32 0.009 0.002 12.68 5.6.31 0.010 0.002 12.60 5.6.30 0.012 0.000 12.35 5.6.29 0.009 0.003 12.49 5.6.28 0.011 0.035 16.88 5.6.27 0.000 0.011 12.52 5.6.26 0.007 0.004 12.65 5.6.25 0.009 0.039 16.61 5.6.24 0.009 0.031 16.64 5.6.23 0.007 0.046 16.61 5.6.22 0.008 0.041 16.78 5.6.21 0.006 0.032 16.68 5.6.20 0.012 0.041 17.03 5.6.19 0.013 0.037 16.93 5.6.18 0.006 0.030 16.88 5.6.17 0.009 0.039 16.85 5.6.16 0.012 0.035 16.89 5.6.15 0.007 0.039 16.90 5.6.14 0.008 0.025 16.94 5.6.13 0.005 0.043 16.90 5.6.12 0.009 0.042 16.98 5.6.11 0.009 0.038 16.80 5.6.10 0.008 0.040 16.91 5.6.9 0.003 0.031 16.94 5.6.8 0.007 0.045 16.63 5.6.7 0.013 0.035 16.53 5.6.6 0.004 0.033 16.67 5.6.5 0.011 0.033 16.45 5.6.4 0.008 0.023 16.61 5.6.3 0.005 0.022 16.61 5.6.2 0.007 0.024 16.58 5.6.1 0.006 0.025 16.52 5.6.0 0.004 0.027 16.54 5.5.38 0.009 0.040 16.59 5.5.37 0.009 0.025 16.61 5.5.36 0.004 0.025 16.46 5.5.35 0.010 0.035 16.59 5.5.34 0.006 0.045 16.72 5.5.33 0.008 0.042 16.79 5.5.32 0.008 0.042 16.67 5.5.31 0.007 0.041 16.67 5.5.30 0.010 0.054 16.72 5.5.29 0.006 0.045 16.66 5.5.28 0.007 0.044 16.75 5.5.27 0.003 0.046 16.62 5.5.26 0.005 0.046 16.66 5.5.25 0.006 0.045 16.59 5.5.24 0.007 0.041 16.48 5.5.23 0.004 0.043 16.48 5.5.22 0.004 0.023 16.39 5.5.21 0.008 0.033 16.46 5.5.20 0.007 0.020 16.43 5.5.19 0.005 0.022 16.39 5.5.18 0.007 0.022 16.17 5.5.17 0.011 0.000 12.36 5.5.16 0.008 0.024 16.22 5.5.15 0.002 0.024 16.37 5.5.14 0.003 0.040 16.30 5.5.13 0.009 0.031 16.17 5.5.12 0.004 0.025 16.29 5.5.11 0.006 0.021 16.28 5.5.10 0.007 0.022 16.35 5.5.9 0.006 0.020 16.32 5.5.8 0.007 0.020 16.30 5.5.7 0.004 0.025 16.28 5.5.6 0.009 0.018 16.33 5.5.5 0.005 0.022 16.38 5.5.4 0.008 0.020 16.24 5.5.3 0.004 0.024 16.45 5.5.2 0.007 0.020 16.37 5.5.1 0.007 0.020 16.18 5.5.0 0.004 0.031 16.23 5.4.45 0.003 0.045 15.98 5.4.44 0.009 0.042 15.96 5.4.43 0.008 0.039 15.84 5.4.42 0.008 0.042 15.94 5.4.41 0.009 0.037 15.95 5.4.40 0.006 0.041 15.77 5.4.39 0.007 0.023 15.63 5.4.38 0.006 0.021 15.75 5.4.37 0.008 0.020 15.70 5.4.36 0.007 0.021 15.69 5.4.35 0.005 0.021 15.83 5.4.34 0.006 0.020 15.65 5.4.33 0.008 0.003 12.59 5.4.32 0.010 0.019 15.80 5.4.31 0.006 0.022 15.85 5.4.30 0.006 0.022 15.88 5.4.29 0.007 0.029 15.84 5.4.28 0.008 0.020 15.74 5.4.27 0.006 0.020 15.63 5.4.26 0.008 0.041 15.82 5.4.25 0.004 0.027 15.79 5.4.24 0.006 0.020 15.60 5.4.23 0.006 0.020 15.54 5.4.22 0.007 0.018 15.62 5.4.21 0.004 0.020 15.66 5.4.20 0.006 0.031 15.63 5.4.19 0.006 0.020 15.62 5.4.18 0.006 0.020 15.65 5.4.17 0.000 0.026 15.79 5.4.16 0.004 0.032 15.71 5.4.15 0.003 0.025 15.62 5.4.14 0.007 0.044 14.38 5.4.13 0.006 0.020 14.43 5.4.12 0.006 0.018 14.38 5.4.11 0.004 0.021 14.57 5.4.10 0.005 0.019 14.40 5.4.9 0.003 0.021 14.33 5.4.8 0.003 0.024 14.42 5.4.7 0.006 0.020 14.54 5.4.6 0.007 0.032 14.44 5.4.5 0.008 0.033 14.36 5.4.4 0.007 0.032 14.41 5.4.3 0.011 0.015 14.42 5.4.2 0.009 0.035 14.51 5.4.1 0.007 0.037 14.36 5.4.0 0.011 0.023 14.21 5.3.29 0.002 0.036 13.91 5.3.28 0.005 0.033 13.77 5.3.27 0.007 0.020 13.95 5.3.26 0.006 0.021 13.72 5.3.25 0.005 0.019 13.85 5.3.24 0.006 0.026 13.88 5.3.23 0.007 0.028 13.77 5.3.22 0.000 0.026 13.67 5.3.21 0.006 0.021 13.67 5.3.20 0.005 0.021 13.76 5.3.19 0.005 0.030 13.72 5.3.18 0.004 0.022 13.89 5.3.17 0.004 0.022 13.80 5.3.16 0.004 0.026 13.94 5.3.15 0.009 0.015 13.75 5.3.14 0.005 0.021 13.73 5.3.13 0.010 0.037 13.88 5.3.12 0.007 0.038 13.87 5.3.11 0.004 0.044 13.87 5.3.10 0.007 0.041 13.63 5.3.9 0.006 0.036 13.62 5.3.8 0.010 0.022 13.59 5.3.7 0.010 0.035 13.46 5.3.6 0.007 0.020 13.60 5.3.5 0.004 0.041 13.46 5.3.4 0.011 0.033 13.47 5.3.3 0.006 0.039 13.55 5.3.2 0.008 0.036 13.33 5.3.1 0.005 0.040 13.28 5.3.0 0.009 0.040 13.27
preferences:dark mode live preview
74.48 ms | 401 KiB | 5 Q