@ 2013-08-28T12:50:31Z <?php
class FirePHP {
/**
* Gets singleton instance of FirePHP
*
* @param boolean $AutoCreate
* @return FirePHP
*/
public static function getInstance($AutoCreate=false) {
if($AutoCreate===true && !self::$instance) {
self::init();
}
return self::$instance;
}
/**
* Creates FirePHP object and stores it for singleton access
*
* @return FirePHP
*/
public static function init() {
return self::$instance = new self();
}
/**
* Enable and disable logging to Firebug
*
* @param boolean $Enabled TRUE to enable, FALSE to disable
* @return void
*/
public function setEnabled($Enabled) {
$this->enabled = $Enabled;
}
/**
* Check if logging is enabled
*
* @return boolean TRUE if enabled
*/
public function getEnabled() {
return $this->enabled;
}
/**
* Specify a filter to be used when encoding an object
*
* Filters are used to exclude object members.
*
* @param string $Class The class name of the object
* @param array $Filter An array or members to exclude
* @return void
*/
public function setObjectFilter($Class, $Filter) {
$this->objectFilters[$Class] = $Filter;
}
/**
* Register FirePHP as your error handler
*
* Will throw exceptions for each php error.
*/
public function registerErrorHandler()
{
//NOTE: The following errors will not be caught by this error handler:
// E_ERROR, E_PARSE, E_CORE_ERROR,
// E_CORE_WARNING, E_COMPILE_ERROR,
// E_COMPILE_WARNING, E_STRICT
set_error_handler(array($this,'errorHandler'));
}
/**
* FirePHP's error handler
*
* Throws exception for each php error that will occur.
*
* @param int $errno
* @param string $errstr
* @param string $errfile
* @param int $errline
* @param array $errcontext
*/
public function errorHandler($errno, $errstr, $errfile, $errline, $errcontext)
{
// Don't throw exception if error reporting is switched off
if (error_reporting() == 0) {
return;
}
// Only throw exceptions for errors we are asking for
if (error_reporting() & $errno) {
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}
}
/**
* Register FirePHP as your exception handler
*/
public function registerExceptionHandler()
{
set_exception_handler(array($this,'exceptionHandler'));
}
/**
* FirePHP's exception handler
*
* Logs all exceptions to your firebug console and then stops the script.
*
* @param Exception $Exception
* @throws Exception
*/
function exceptionHandler($Exception) {
$this->fb($Exception);
}
/**
* Set custom processor url for FirePHP
*
* @param string $URL
*/
public function setProcessorUrl($URL)
{
$this->setHeader('X-FirePHP-ProcessorURL', $URL);
}
/**
* Set custom renderer url for FirePHP
*
* @param string $URL
*/
public function setRendererUrl($URL)
{
$this->setHeader('X-FirePHP-RendererURL', $URL);
}
/**
* Start a group for following messages
*
* @param string $Name
* @return true
* @throws Exception
*/
public function group($Name) {
return $this->fb(null, $Name, FirePHP::GROUP_START);
}
/**
* Ends a group you have started before
*
* @return true
* @throws Exception
*/
public function groupEnd() {
return $this->fb(null, null, FirePHP::GROUP_END);
}
/**
* Log object with label to firebug console
*
* @see FirePHP::LOG
* @param mixes $Object
* @param string $Label
* @return true
* @throws Exception
*/
public function log($Object, $Label=null) {
return $this->fb($Object, $Label, FirePHP::LOG);
}
/**
* Log object with label to firebug console
*
* @see FirePHP::INFO
* @param mixes $Object
* @param string $Label
* @return true
* @throws Exception
*/
public function info($Object, $Label=null) {
return $this->fb($Object, $Label, FirePHP::INFO);
}
/**
* Log object with label to firebug console
*
* @see FirePHP::WARN
* @param mixes $Object
* @param string $Label
* @return true
* @throws Exception
*/
public function warn($Object, $Label=null) {
return $this->fb($Object, $Label, FirePHP::WARN);
}
/**
* Log object with label to firebug console
*
* @see FirePHP::ERROR
* @param mixes $Object
* @param string $Label
* @return true
* @throws Exception
*/
public function error($Object, $Label=null) {
return $this->fb($Object, $Label, FirePHP::ERROR);
}
/**
* Dumps key and variable to firebug server panel
*
* @see FirePHP::DUMP
* @param string $Key
* @param mixed $Variable
* @return true
* @throws Exception
*/
public function dump($Key, $Variable) {
return $this->fb($Variable, $Key, FirePHP::DUMP);
}
/**
* Log a trace in the firebug console
*
* @see FirePHP::TRACE
* @param string $Label
* @return true
* @throws Exception
*/
public function trace($Label) {
return $this->fb($Label, FirePHP::TRACE);
}
public function table($Label, $Table) {
return $this->fb($Table, $Label, FirePHP::TABLE);
}
public function detectClientExtension() {
/* Check if FirePHP is installed on client */
if(!@preg_match_all('/\sFirePHP\/([\.|\d]*)\s?/si',$this->getUserAgent(),$m) ||
!version_compare($m[1][0],'0.0.6','>=')) {
return false;
}
return true;
}
public function fb($Object) {
if(!$this->enabled) {
return false;
}
if (headers_sent($filename, $linenum)) {
throw $this->newException('Headers already sent in '.$filename.' on line '.$linenum.'. Cannot send log data to FirePHP. You must have Output Buffering enabled via ob_start() or output_buffering ini directive.');
}
$Type = null;
$Label = null;
if(func_num_args()==1) {
} else
if(func_num_args()==2) {
switch(func_get_arg(1)) {
case self::LOG:
case self::INFO:
case self::WARN:
case self::ERROR:
case self::DUMP:
case self::TRACE:
case self::EXCEPTION:
case self::TABLE:
case self::GROUP_START:
case self::GROUP_END:
$Type = func_get_arg(1);
break;
default:
$Label = func_get_arg(1);
break;
}
} else
if(func_num_args()==3) {
$Type = func_get_arg(2);
$Label = func_get_arg(1);
} else {
throw $this->newException('Wrong number of arguments to fb() function!');
}
if(!$this->detectClientExtension()) {
return false;
}
$meta = array();
$skipFinalObjectEncode = false;
if($Object instanceof Exception) {
$meta['file'] = $this->_escapeTraceFile($Object->getFile());
$meta['line'] = $Object->getLine();
$trace = $Object->getTrace();
if($Object instanceof ErrorException
&& isset($trace[0]['function'])
&& $trace[0]['function']=='errorHandler'
&& isset($trace[0]['class'])
&& $trace[0]['class']=='FirePHP') {
$severity = false;
switch($Object->getSeverity()) {
case E_WARNING: $severity = 'E_WARNING'; break;
case E_NOTICE: $severity = 'E_NOTICE'; break;
case E_USER_ERROR: $severity = 'E_USER_ERROR'; break;
case E_USER_WARNING: $severity = 'E_USER_WARNING'; break;
case E_USER_NOTICE: $severity = 'E_USER_NOTICE'; break;
case E_STRICT: $severity = 'E_STRICT'; break;
case E_RECOVERABLE_ERROR: $severity = 'E_RECOVERABLE_ERROR'; break;
case E_DEPRECATED: $severity = 'E_DEPRECATED'; break;
case E_USER_DEPRECATED: $severity = 'E_USER_DEPRECATED'; break;
}
$Object = array('Class'=>get_class($Object),
'Message'=>$severity.': '.$Object->getMessage(),
'File'=>$this->_escapeTraceFile($Object->getFile()),
'Line'=>$Object->getLine(),
'Type'=>'trigger',
'Trace'=>$this->_escapeTrace(array_splice($trace,2)));
$skipFinalObjectEncode = true;
} else {
$Object = array('Class'=>get_class($Object),
'Message'=>$Object->getMessage(),
'File'=>$this->_escapeTraceFile($Object->getFile()),
'Line'=>$Object->getLine(),
'Type'=>'throw',
'Trace'=>$this->_escapeTrace($trace));
$skipFinalObjectEncode = true;
}
$Type = self::EXCEPTION;
} else
if($Type==self::TRACE) {
$trace = debug_backtrace();
if(!$trace) return false;
for( $i=0 ; $i<sizeof($trace) ; $i++ ) {
if(isset($trace[$i]['class'])
&& isset($trace[$i]['file'])
&& ($trace[$i]['class']=='FirePHP'
|| $trace[$i]['class']=='FB')
&& (substr($this->_standardizePath($trace[$i]['file']),-18,18)=='FirePHPCore/fb.php'
|| substr($this->_standardizePath($trace[$i]['file']),-29,29)=='FirePHPCore/FirePHP.class.php')) {
/* Skip - FB::trace(), FB::send(), $firephp->trace(), $firephp->fb() */
} else
if(isset($trace[$i]['class'])
&& isset($trace[$i+1]['file'])
&& $trace[$i]['class']=='FirePHP'
&& substr($this->_standardizePath($trace[$i+1]['file']),-18,18)=='FirePHPCore/fb.php') {
/* Skip fb() */
} else
if($trace[$i]['function']=='fb'
|| $trace[$i]['function']=='trace'
|| $trace[$i]['function']=='send') {
$Object = array('Class'=>isset($trace[$i]['class'])?$trace[$i]['class']:'',
'Type'=>isset($trace[$i]['type'])?$trace[$i]['type']:'',
'Function'=>isset($trace[$i]['function'])?$trace[$i]['function']:'',
'Message'=>$trace[$i]['args'][0],
'File'=>isset($trace[$i]['file'])?$this->_escapeTraceFile($trace[$i]['file']):'',
'Line'=>isset($trace[$i]['line'])?$trace[$i]['line']:'',
'Args'=>isset($trace[$i]['args'])?$this->encodeObject($trace[$i]['args']):'',
'Trace'=>$this->_escapeTrace(array_splice($trace,$i+1)));
$skipFinalObjectEncode = true;
$meta['file'] = isset($trace[$i]['file'])?$this->_escapeTraceFile($trace[$i]['file']):'';
$meta['line'] = isset($trace[$i]['line'])?$trace[$i]['line']:'';
break;
}
}
} else
if($Type==self::TABLE) {
if(isset($Object[0]) && is_string($Object[0])) {
$Object[1] = $this->encodeTable($Object[1]);
} else {
$Object = $this->encodeTable($Object);
}
$skipFinalObjectEncode = true;
} else {
if($Type===null) {
$Type = self::LOG;
}
}
if($this->options['includeLineNumbers']) {
if(!isset($meta['file']) || !isset($meta['line'])) {
$trace = debug_backtrace();
for( $i=0 ; $trace && $i<sizeof($trace) ; $i++ ) {
if(isset($trace[$i]['class'])
&& isset($trace[$i]['file'])
&& ($trace[$i]['class']=='FirePHP'
|| $trace[$i]['class']=='FB')
&& (substr($this->_standardizePath($trace[$i]['file']),-18,18)=='FirePHPCore/fb.php'
|| substr($this->_standardizePath($trace[$i]['file']),-29,29)=='FirePHPCore/FirePHP.class.php')) {
/* Skip - FB::trace(), FB::send(), $firephp->trace(), $firephp->fb() */
} else
if(isset($trace[$i]['class'])
&& isset($trace[$i+1]['file'])
&& $trace[$i]['class']=='FirePHP'
&& substr($this->_standardizePath($trace[$i+1]['file']),-18,18)=='FirePHPCore/fb.php') {
/* Skip fb() */
} else
if(isset($trace[$i]['file'])
&& substr($this->_standardizePath($trace[$i]['file']),-18,18)=='FirePHPCore/fb.php') {
/* Skip FB::fb() */
} else {
$meta['file'] = isset($trace[$i]['file'])?$this->_escapeTraceFile($trace[$i]['file']):'';
$meta['line'] = isset($trace[$i]['line'])?$trace[$i]['line']:'';
break;
}
}
}
} else {
unset($meta['file']);
unset($meta['line']);
}
$this->setHeader('X-Wf-Protocol-1','http://meta.wildfirehq.org/Protocol/JsonStream/0.2');
$this->setHeader('X-Wf-1-Plugin-1','http://meta.firephp.org/Wildfire/Plugin/FirePHP/Library-FirePHPCore/'.self::VERSION);
$structure_index = 1;
if($Type==self::DUMP) {
$structure_index = 2;
$this->setHeader('X-Wf-1-Structure-2','http://meta.firephp.org/Wildfire/Structure/FirePHP/Dump/0.1');
} else {
$this->setHeader('X-Wf-1-Structure-1','http://meta.firephp.org/Wildfire/Structure/FirePHP/FirebugConsole/0.1');
}
if($Type==self::DUMP) {
$msg = '{"'.$Label.'":'.$this->jsonEncode($Object, $skipFinalObjectEncode).'}';
} else {
$msg_meta = array('Type'=>$Type);
if($Label!==null) {
$msg_meta['Label'] = $Label;
}
if(isset($meta['file'])) {
$msg_meta['File'] = $meta['file'];
}
if(isset($meta['line'])) {
$msg_meta['Line'] = $meta['line'];
}
$msg = '['.$this->jsonEncode($msg_meta).','.$this->jsonEncode($Object, $skipFinalObjectEncode).']';
}
$parts = explode("\n",chunk_split($msg, 5000, "\n"));
for( $i=0 ; $i<count($parts) ; $i++) {
$part = $parts[$i];
if ($part) {
if(count($parts)>2) {
// Message needs to be split into multiple parts
$this->setHeader('X-Wf-1-'.$structure_index.'-'.'1-'.$this->messageIndex,
(($i==0)?strlen($msg):'')
. '|' . $part . '|'
. (($i<count($parts)-2)?'\\':''));
} else {
$this->setHeader('X-Wf-1-'.$structure_index.'-'.'1-'.$this->messageIndex,
strlen($part) . '|' . $part . '|');
}
$this->messageIndex++;
if ($this->messageIndex > 99999) {
throw new Exception('Maximum number (99,999) of messages reached!');
}
}
}
$this->setHeader('X-Wf-1-Index',$this->messageIndex-1);
return true;
}
protected function _standardizePath($Path) {
}
protected function _escapeTrace($Trace) {
if(!$Trace) return $Trace;
for( $i=0 ; $i<sizeof($Trace) ; $i++ ) {
if(isset($Trace[$i]['file'])) {
$Trace[$i]['file'] = $this->_escapeTraceFile($Trace[$i]['file']);
}
if(isset($Trace[$i]['args'])) {
$Trace[$i]['args'] = $this->encodeObject($Trace[$i]['args']);
}
}
return $Trace;
}
protected function _escapeTraceFile($File) {
/* Check if we have a windows filepath */
if(strpos($File,'\\')) {
/* First strip down to single \ */
$file = preg_replace('/\\\\+/','\\',$File);
return $file;
}
return $File;
}
protected function setHeader($Name, $Value) {
return header($Name.': '.$Value);
}
protected function getUserAgent() {
if(!isset($_SERVER['HTTP_USER_AGENT'])) return false;
return $_SERVER['HTTP_USER_AGENT'];
}
}
function ciao()
{
$out = '<pre>';
$args = func_get_args();
if(!empty($args))
{
// var_export() causes fatal errors on recursion...
ob_start();
ini_set('xdebug.var_display_max_depth', 4);
var_dump($args);
$out .= ob_get_contents()."\n\n";
ob_end_clean();
}
$out .= get_backtrace(1);
die($out);
}
class A {
function B()
{
while (ob_get_level() > 1)
ob_end_flush();
// store possible trailing content
$content = ob_get_clean();
// start an output buffer which cannot be flushed (3rd parameter is false)
// callback function get all output and corrects Content-Length header
ob_start(function($buffer) {
ciao($buffer);
}, 0, false);
}
}
$a = new A;
$a->B();
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.006 18.55 8.3.5 0.015 0.009 21.15 8.3.4 0.007 0.011 18.86 8.3.3 0.004 0.011 19.27 8.3.2 0.005 0.003 20.46 8.3.1 0.008 0.000 22.09 8.3.0 0.003 0.006 22.37 8.2.18 0.012 0.009 16.88 8.2.17 0.004 0.011 22.96 8.2.16 0.011 0.004 19.30 8.2.15 0.006 0.003 24.18 8.2.14 0.008 0.000 24.66 8.2.13 0.009 0.006 26.16 8.2.12 0.005 0.003 19.77 8.2.11 0.005 0.005 22.07 8.2.10 0.009 0.003 19.64 8.2.9 0.000 0.008 19.46 8.2.8 0.003 0.006 18.05 8.2.7 0.007 0.003 17.75 8.2.6 0.006 0.003 18.18 8.2.5 0.004 0.004 18.07 8.2.4 0.000 0.009 18.41 8.2.3 0.003 0.006 18.17 8.2.2 0.003 0.005 17.93 8.2.1 0.000 0.008 18.04 8.2.0 0.003 0.005 17.96 8.1.28 0.014 0.004 25.92 8.1.27 0.006 0.003 20.25 8.1.26 0.000 0.008 26.35 8.1.25 0.000 0.008 28.09 8.1.24 0.003 0.006 23.83 8.1.23 0.008 0.003 19.39 8.1.22 0.003 0.005 17.80 8.1.21 0.003 0.006 18.77 8.1.20 0.003 0.006 17.73 8.1.19 0.008 0.000 17.77 8.1.18 0.004 0.004 19.12 8.1.17 0.004 0.004 18.84 8.1.16 0.004 0.004 22.25 8.1.15 0.004 0.004 18.88 8.1.14 0.000 0.008 17.55 8.1.13 0.004 0.004 18.05 8.1.12 0.005 0.003 17.73 8.1.11 0.000 0.008 17.64 8.1.10 0.008 0.000 17.55 8.1.9 0.004 0.004 17.67 8.1.8 0.000 0.007 17.68 8.1.7 0.004 0.004 17.61 8.1.6 0.003 0.005 17.83 8.1.5 0.004 0.004 17.75 8.1.4 0.008 0.000 17.73 8.1.3 0.000 0.008 17.79 8.1.2 0.004 0.004 17.84 8.1.1 0.005 0.003 17.72 8.1.0 0.000 0.009 17.68 8.0.30 0.004 0.004 18.77 8.0.29 0.005 0.003 17.30 8.0.28 0.004 0.004 18.67 8.0.27 0.000 0.007 17.44 8.0.26 0.003 0.003 17.18 8.0.25 0.003 0.005 17.16 8.0.24 0.004 0.004 17.24 8.0.23 0.000 0.007 17.23 8.0.22 0.000 0.007 17.13 8.0.21 0.000 0.008 17.25 8.0.20 0.002 0.005 17.31 8.0.19 0.000 0.008 17.26 8.0.18 0.003 0.005 17.24 8.0.17 0.000 0.008 17.21 8.0.16 0.003 0.005 17.16 8.0.15 0.008 0.000 17.00 8.0.14 0.000 0.008 17.11 8.0.13 0.003 0.003 13.69 8.0.12 0.008 0.000 17.10 8.0.11 0.000 0.008 17.07 8.0.10 0.005 0.003 17.21 8.0.9 0.000 0.008 17.04 8.0.8 0.012 0.004 17.16 8.0.7 0.004 0.004 17.03 8.0.6 0.004 0.004 17.19 8.0.5 0.000 0.008 17.05 8.0.3 0.013 0.009 17.27 8.0.2 0.011 0.009 17.51 8.0.1 0.000 0.008 17.29 8.0.0 0.009 0.014 17.08 7.4.33 0.002 0.002 15.21 7.4.32 0.000 0.007 16.66 7.4.30 0.003 0.003 16.82 7.4.29 0.006 0.006 16.73 7.4.28 0.000 0.009 16.64 7.4.27 0.004 0.004 16.74 7.4.26 0.004 0.004 16.79 7.4.25 0.005 0.003 16.71 7.4.24 0.002 0.006 16.83 7.4.23 0.003 0.005 16.91 7.4.22 0.013 0.016 16.69 7.4.21 0.009 0.008 16.81 7.4.20 0.004 0.004 16.58 7.4.19 0.004 0.004 16.83 7.4.16 0.018 0.004 16.80 7.4.15 0.009 0.009 17.40 7.4.14 0.009 0.012 17.86 7.4.13 0.011 0.008 16.82 7.4.12 0.008 0.010 16.79 7.4.11 0.012 0.006 16.74 7.4.10 0.003 0.015 16.86 7.4.9 0.014 0.004 16.63 7.4.8 0.009 0.016 19.39 7.4.7 0.006 0.013 16.70 7.4.6 0.010 0.010 16.74 7.4.5 0.003 0.006 16.77 7.4.4 0.009 0.009 22.77 7.4.3 0.007 0.010 16.93 7.4.1 0.004 0.014 15.32 7.4.0 0.006 0.012 15.09 7.3.33 0.003 0.003 13.45 7.3.32 0.003 0.003 13.59 7.3.31 0.003 0.003 16.61 7.3.30 0.004 0.004 16.54 7.3.29 0.000 0.014 16.57 7.3.28 0.007 0.010 16.59 7.3.27 0.014 0.003 17.40 7.3.26 0.011 0.007 16.57 7.3.25 0.008 0.010 16.62 7.3.24 0.003 0.016 16.89 7.3.23 0.012 0.006 16.73 7.3.21 0.008 0.008 16.70 7.3.20 0.009 0.009 19.39 7.3.19 0.007 0.013 16.78 7.3.18 0.003 0.018 16.65 7.3.17 0.012 0.008 16.59 7.3.16 0.009 0.006 16.51 7.3.13 0.009 0.009 14.95 7.3.12 0.004 0.013 15.14 7.3.11 0.008 0.010 15.09 7.3.10 0.007 0.010 14.98 7.3.9 0.007 0.008 15.20 7.3.8 0.006 0.010 15.05 7.3.7 0.003 0.010 14.99 7.3.6 0.007 0.007 15.03 7.3.5 0.008 0.007 15.00 7.3.4 0.005 0.010 14.80 7.3.3 0.007 0.006 15.04 7.3.2 0.003 0.007 16.70 7.3.1 0.005 0.009 16.67 7.3.0 0.004 0.008 16.67 7.2.33 0.011 0.007 17.02 7.2.32 0.011 0.014 16.84 7.2.31 0.006 0.019 16.91 7.2.30 0.003 0.014 16.81 7.2.29 0.014 0.003 16.53 7.2.26 0.010 0.007 14.89 7.2.25 0.004 0.013 15.31 7.2.24 0.009 0.010 15.26 7.2.23 0.002 0.012 15.36 7.2.22 0.003 0.012 15.04 7.2.21 0.007 0.009 15.14 7.2.20 0.006 0.008 15.12 7.2.19 0.004 0.012 15.24 7.2.18 0.002 0.010 15.41 7.2.17 0.003 0.011 15.31 7.2.16 0.004 0.011 14.99 7.2.15 0.007 0.004 16.62 7.2.14 0.007 0.011 16.82 7.2.13 0.013 0.003 16.99 7.2.12 0.007 0.011 16.77 7.2.11 0.004 0.008 16.90 7.2.10 0.008 0.008 16.85 7.2.9 0.010 0.000 16.97 7.2.8 0.003 0.008 16.93 7.2.7 0.008 0.006 17.08 7.2.6 0.007 0.010 16.92 7.2.5 0.012 0.003 16.70 7.2.4 0.007 0.003 17.11 7.2.3 0.000 0.014 17.11 7.2.2 0.003 0.008 17.11 7.2.1 0.004 0.011 16.85 7.2.0 0.008 0.005 18.18 7.1.33 0.004 0.009 15.74 7.1.32 0.005 0.010 15.76 7.1.31 0.006 0.008 15.71 7.1.30 0.004 0.011 15.62 7.1.29 0.004 0.009 15.55 7.1.28 0.006 0.008 15.64 7.1.27 0.005 0.009 15.65 7.1.26 0.004 0.006 15.74 7.1.25 0.006 0.009 15.62 7.1.24 0.004 0.009 15.77 7.1.23 0.007 0.010 15.61 7.1.22 0.006 0.010 15.48 7.1.21 0.007 0.007 15.46 7.1.20 0.003 0.011 15.72 7.1.19 0.011 0.007 15.88 7.1.18 0.000 0.011 15.78 7.1.17 0.004 0.011 15.45 7.1.16 0.004 0.011 15.63 7.1.15 0.003 0.010 15.74 7.1.14 0.000 0.013 15.88 7.1.13 0.007 0.010 15.47 7.1.12 0.007 0.007 15.77 7.1.11 0.003 0.012 15.78 7.1.10 0.005 0.008 16.76 7.1.9 0.006 0.006 15.81 7.1.8 0.010 0.003 15.88 7.1.7 0.008 0.005 16.36 7.1.6 0.005 0.014 17.81 7.1.5 0.007 0.013 16.38 7.1.4 0.000 0.016 15.74 7.1.3 0.009 0.006 15.81 7.1.2 0.000 0.015 15.78 7.1.1 0.007 0.007 15.80 7.1.0 0.003 0.022 19.09 7.0.33 0.003 0.013 15.55 7.0.32 0.004 0.012 15.23 7.0.31 0.007 0.007 15.57 7.0.30 0.003 0.006 15.30 7.0.29 0.006 0.009 15.07 7.0.28 0.003 0.010 15.18 7.0.27 0.010 0.006 15.38 7.0.26 0.006 0.003 15.39 7.0.25 0.006 0.006 15.45 7.0.24 0.005 0.005 15.46 7.0.23 0.003 0.010 15.36 7.0.22 0.006 0.006 15.25 7.0.21 0.007 0.007 15.15 7.0.20 0.007 0.005 16.07 7.0.19 0.000 0.014 15.44 7.0.18 0.000 0.012 15.09 7.0.17 0.004 0.007 15.42 7.0.16 0.008 0.004 15.51 7.0.15 0.008 0.008 15.21 7.0.14 0.000 0.045 18.74 7.0.13 0.009 0.003 15.55 7.0.12 0.003 0.007 15.46 7.0.11 0.004 0.011 15.43 7.0.10 0.007 0.046 18.58 7.0.9 0.003 0.047 18.52 7.0.8 0.000 0.035 18.67 7.0.7 0.006 0.028 18.61 7.0.6 0.008 0.032 18.48 7.0.5 0.005 0.039 18.89 7.0.4 0.010 0.037 16.80 7.0.3 0.006 0.043 16.83 7.0.2 0.010 0.029 16.74 7.0.1 0.005 0.040 16.83 7.0.0 0.010 0.030 16.80 5.6.40 0.010 0.003 14.58 5.6.39 0.005 0.005 14.19 5.6.38 0.000 0.017 14.36 5.6.37 0.011 0.007 14.53 5.6.36 0.000 0.014 14.53 5.6.35 0.010 0.007 14.25 5.6.34 0.003 0.013 14.27 5.6.33 0.003 0.006 14.57 5.6.32 0.004 0.011 14.38 5.6.31 0.003 0.009 14.61 5.6.30 0.007 0.004 14.71 5.6.29 0.007 0.010 14.32 5.6.28 0.004 0.042 17.77 5.6.27 0.000 0.013 14.53 5.6.26 0.003 0.010 14.41 5.6.25 0.003 0.042 17.61 5.6.24 0.004 0.028 17.71 5.6.23 0.007 0.045 17.68 5.6.22 0.005 0.048 17.54 5.6.21 0.007 0.039 17.52 5.6.20 0.010 0.045 17.80 5.6.19 0.005 0.031 17.82 5.6.18 0.014 0.035 17.98 5.6.17 0.006 0.046 17.75 5.6.16 0.012 0.037 17.78 5.6.15 0.005 0.028 17.90 5.6.14 0.008 0.042 17.95 5.6.13 0.004 0.030 17.71 5.6.12 0.007 0.047 17.68 5.6.11 0.007 0.025 17.88 5.6.10 0.012 0.033 17.84 5.6.9 0.003 0.049 17.68 5.6.8 0.005 0.045 17.44 5.6.7 0.011 0.035 17.41 5.6.6 0.010 0.044 17.49 5.6.5 0.010 0.040 17.44 5.6.4 0.007 0.044 17.34 5.6.3 0.006 0.043 17.42 5.6.2 0.007 0.043 17.39 5.6.1 0.010 0.031 17.53 5.6.0 0.005 0.048 17.37 5.5.38 0.005 0.045 17.39 5.5.37 0.011 0.038 17.35 5.5.36 0.007 0.044 17.47 5.5.35 0.005 0.045 17.38 5.5.34 0.006 0.043 17.60 5.5.33 0.006 0.036 17.75 5.5.32 0.008 0.038 17.70 5.5.31 0.011 0.043 17.69 5.5.30 0.013 0.036 17.61 5.5.29 0.002 0.029 17.62 5.5.28 0.010 0.040 17.58 5.5.27 0.006 0.026 17.77 5.5.26 0.004 0.044 17.70 5.5.25 0.008 0.043 17.60 5.5.24 0.003 0.038 17.22 5.5.23 0.006 0.043 17.33 5.5.22 0.012 0.038 17.24 5.5.21 0.005 0.048 17.31 5.5.20 0.005 0.047 17.36 5.5.19 0.005 0.043 17.23 5.5.18 0.003 0.031 17.36 5.5.17 0.003 0.013 14.19 5.5.16 0.007 0.038 17.37 5.5.15 0.004 0.032 17.39 5.5.14 0.010 0.039 17.23 5.5.13 0.006 0.042 17.35 5.5.12 0.009 0.036 17.33 5.5.11 0.008 0.041 17.37 5.5.10 0.009 0.045 17.08 5.5.9 0.011 0.041 17.13 5.5.8 0.008 0.045 17.33 5.5.7 0.012 0.042 17.29 5.5.6 0.009 0.044 17.25 5.5.5 0.007 0.042 17.29 5.5.4 0.003 0.048 17.11 5.5.3 0.010 0.041 17.05 5.5.2 0.008 0.027 17.23 5.5.1 0.009 0.027 17.11 5.5.0 0.003 0.047 17.01 5.4.45 0.003 0.037 15.54 5.4.44 0.007 0.042 15.47 5.4.43 0.005 0.042 15.54 5.4.42 0.007 0.026 15.53 5.4.41 0.010 0.025 15.57 5.4.40 0.010 0.037 15.46 5.4.39 0.005 0.028 15.38 5.4.38 0.008 0.040 15.46 5.4.37 0.003 0.042 15.28 5.4.36 0.002 0.041 15.36 5.4.35 0.008 0.037 15.41 5.4.34 0.007 0.039 15.40 5.4.33 0.008 0.003 11.66 5.4.32 0.003 0.030 15.42 5.4.31 0.003 0.048 15.30 5.4.30 0.003 0.039 15.37 5.4.29 0.007 0.025 15.28 5.4.28 0.003 0.029 15.41 5.4.27 0.007 0.023 15.37 5.4.26 0.010 0.035 15.40 5.4.25 0.008 0.046 15.27 5.4.24 0.015 0.033 15.28 5.4.23 0.005 0.040 15.36 5.4.22 0.002 0.045 15.41 5.4.21 0.003 0.026 15.29 5.4.20 0.011 0.034 15.28 5.4.19 0.009 0.039 15.40 5.4.18 0.013 0.035 15.45 5.4.17 0.007 0.041 15.28 5.4.16 0.007 0.031 15.40 5.4.15 0.009 0.024 15.32 5.4.14 0.010 0.030 13.98 5.4.13 0.006 0.024 14.06 5.4.12 0.010 0.023 14.09 5.4.11 0.003 0.047 14.07 5.4.10 0.005 0.038 14.13 5.4.9 0.008 0.028 14.13 5.4.8 0.007 0.034 14.12 5.4.7 0.007 0.039 14.03 5.4.6 0.006 0.040 14.09 5.4.5 0.006 0.041 14.03 5.4.4 0.002 0.041 14.11 5.4.3 0.004 0.042 14.00 5.4.2 0.006 0.019 14.04 5.4.1 0.006 0.036 14.05 5.4.0 0.003 0.041 13.72 5.3.29 0.000 0.087 14.96 5.3.28 0.007 0.050 14.81 5.3.27 0.007 0.043 14.86 5.3.26 0.013 0.063 14.82 5.3.25 0.007 0.073 14.86 5.3.24 0.010 0.070 14.85 5.3.23 0.007 0.060 14.85 5.3.22 0.007 0.037 14.79 5.3.21 0.010 0.073 14.73 5.3.20 0.007 0.077 14.69 5.3.19 0.010 0.077 14.72 5.3.18 0.007 0.073 14.79 5.3.17 0.013 0.067 14.78 5.3.16 0.000 0.057 14.77 5.3.15 0.007 0.070 14.82 5.3.14 0.003 0.050 14.85 5.3.13 0.010 0.043 14.67 5.3.12 0.010 0.070 14.80 5.3.11 0.003 0.080 14.88 5.3.10 0.003 0.073 14.37 5.3.9 0.010 0.073 14.24 5.3.8 0.007 0.057 14.09 5.3.7 0.003 0.040 14.28 5.3.6 0.000 0.053 14.17 5.3.5 0.003 0.043 14.07 5.3.4 0.007 0.077 14.16 5.3.3 0.003 0.050 14.10 5.3.2 0.003 0.057 13.79 5.3.1 0.010 0.040 13.94 5.3.0 0.003 0.047 13.84
preferences:dark mode live preview
49.27 ms | 401 KiB | 5 Q