@ 2013-08-26T08:18:31Z <?php
class E_View_Helper {
private $form_array_source = array();
/**
* Standard contructor
*
* @param array $a_form_array_source
* - controls container, must look like:
* $form['form_name1']['label']
* $form['form_name1']['form']
* $form['form_name_2']['label']
* ...
*/
public function __construct(&$a_form_array_source)
{
if( !is_array($a_form_array_source) ) return FALSE;
$this->form_array_source = &$a_form_array_source;
}
/**
* Prints formatted input for datepicker with labels
*
* @param string $a_form_name
* - name of input
* @param string $a_align
* - input alignment: right, left or center
*/
public function input_date_form($a_form_name, $a_align = FALSE)
{
if( isset($this->form_array_source[$a_form_name]['form']) )
{
switch( $a_align )
{
case 'right':
case 'center':
case 'left':
$a_align = 'text-' . strtolower($a_align);
break;
default :
$a_align = '';
}
?>
<label for="<?php print $a_form_name; ?>"
class="<?php print $a_align; ?>">
<?php print $this->form_array_source[$a_form_name]['label'];?>
<?php print $this->form_array_source[$a_form_name]['form']; ?>
</label>
<?php
}
}
/**
* Prints formatted group of date range inputs ("from" and "to")
*
* @param string $a_form_title
* - title (label) above all inputs
* @param string $a_from_form_name
* - "from" input name
* @param string $a_to_form_name
* - "to" input name
*/
public function date_range_group($a_form_title, $a_from_form_name, $a_to_form_name)
{
if( isset($this->form_array_source[$a_from_form_name]['form']) or isset($this->form_array_source[$a_to_form_name]['form']) )
{
?>
<div class="datepicker_container">
<?php if ($a_form_title AND isset($this->form_array_source[$a_form_title]['title'])) { ?>
<label><?php print $this->form_array_source[$a_form_title]['title'];?></label>
<?php } else { ?>
<label> </label>
<?php } ?>
<?php print $this->input_date_form($a_from_form_name, 'right'); ?>
<?php print $this->input_date_form($a_to_form_name, 'right'); ?>
</div>
<?php
}
}
/**
* Prints standard input form
*
* @param string $a_form_name
* - name of input
* @param string $a_label_class
* - CSS class of label above input
*/
public function input_form($a_form_name, $a_label_class = '')
{
if( isset($this->form_array_source[$a_form_name]['form']) )
{
$mandatory = isset($this->form_array_source[$a_form_name]['label']['mandatory']) ? ' <span class="mandatory">∗</span>' : '';
?>
<label class="<?php print $a_label_class?>"
for="<?php print $a_form_name; ?>">
<?php print empty($this->form_array_source[$a_form_name]['label']) ? ' ' : $this->form_array_source[$a_form_name]['label'].$mandatory;?>
</label>
<?php print $this->form_array_source[$a_form_name]['form']; ?>
<?php
}
}
/**
* Prints inline input like checkbox/radio
*
* @param string $a_form_name
* - name of input
* @param string $a_label_class
* - CSS class of label above input
*/
public function input_inline($a_form_name, $label_class = 'radio')
{
if( isset($this->form_array_source[$a_form_name]['form']) )
{
$mandatory = isset($this->form_array_source[$a_form_name]['label']['mandatory']) ? ' <span class="mandatory">∗</span>' : '';
?>
<label class="<?php print $label_class?>"
for="<?php print $a_form_name; ?>">
<?php print $this->form_array_source[$a_form_name]['form']; ?>
<?php print empty($this->form_array_source[$a_form_name]['label']) ? ' ' : $this->form_array_source[$a_form_name]['label'].$mandatory;?>
</label>
<?php
}
}
}
/**
* Provides unified display of index pages.
* Base abstract class, to be inherited
*
*
* @author Michal K.
*
*/
abstract class Index_View_Helper extends Printable_Section {
// optional custom table printer
public $table_printer = NULL;
// optional custom search box printer
public $search_box_printer = NULL;
// optional flags
public $is_add_button_printed = true;
public $is_message_printed = true;
public $is_flash_message_printed = true;
public $is_pagination_printed = true;
/**
*
* @param array $data_array
* - data array with standard variables: title, $flash_status, $flash etc
* @param string $form_array_source
* array with inputs for search box
* @param string $table_array_source
* array with elements for index table
*/
public function __construct(array $data_array)
{
// data for access inside functions
parent::__construct($data_array);
$this->search = $this->data['search'];
}
public function render_all()
{
$this->print_all();
}
public function print_page_header()
{
if( isset($this->data['title']) )
{
print '<div class="page-header"><h2>' . $this->data['title'] . '</h2></div>';
}
}
protected function print_message()
{
if( $this->is_message_printed ) print '<div id="message"></div>';
}
protected function print_flash_message()
{
if( $this->is_flash_message_printed )
{
if( isset($this->data->flash) and $this->data->flash )
{
print '<input type="hidden" name="' . ( isset($this->data->flash_status) ? $this->data->flash_status : '' ) . '" id="flash" value="' . $this->data->flash . '" /> ';
}
}
}
public function print_search_form()
{
if( $this->search_box_printer != NULL )
{
$this->search_box_printer->print_all();
}
else
{
$this->search_box_printer = new Standard_Search_Form_Printer($this->data);
$this->search_box_printer->print_all();
}
}
public function print_pagination()
{
if( $this->is_pagination_printed )
{
print '<div class="row">' . ( $this->is_add_button_printed ? $this->data['add'] : '' );
print '<div class="total_records span">' . $this->lang->txt('total') . ' ' . $this->data['pagination_config']['total_rows'] . '</div>';
print '<div class="records_per_page pull-right">' . $this->data['limit'] . '</div>';
print '<div class="pull-right pagination_numbers">' . $this->data['pagination'] . '</div>';
print '</div>';
}
}
public function print_index_table()
{
if( $this->table_printer != NULL )
{
$this->table_printer->print_all();
}
else
{
$this->table_printer = new Standard_Table_Printer($this->data);
$this->table_printer->print_all();
}
}
protected function print_information()
{
}
}
abstract class HTMlElement {
public $css = 0, $name = 0, $id = 0;
protected $tag;
public function __construct($tag)
{
$this->tag = $tag;
}
public function begin()
{
$attrs = $this->_attrs();
if( $attrs != '' )
{
print "<$this->tag $attrs >";
}
else
{
print "<$this->tag>";
}
}
public function end()
{
print "</$this->tag>";
}
public abstract function print_all();
protected function _attrs()
{
$attrs = '';
if( $this->name ) $attrs .= 'name="' . $this->name . '" ';
if( $this->id ) $attrs .= 'id="' . $this->id . '" ';
if( $this->css ) $attrs .= 'class="' . $this->css . '" ';
return $attrs;
}
}
abstract class Printable_Section extends HTMlElement {
// helper variables
protected $data = array();
protected $lang = false;
protected $parent = false;
public function __construct(array $data, $tag = 'div')
{
parent::__construct($tag);
$this->data = $data;
$this->parent = &get_instance();
$this->lang = $this->parent->lang;
}
public function print_all()
{
$this->before_content();
$this->begin();
$this->print_section_content();
$this->end();
$this->after_content();
}
public abstract function print_section_content();
protected function before_content()
{
}
protected function after_content()
{
}
}
class Standard_Table_Printer extends Printable_Section {
// indexes of columns to be printed. empty = all
// must be in correct format
public $table_headers = array();
// optional flags
public $is_num_printed = true;
// helper variables
protected $table = array();
public function __construct(array $data)
{
parent::__construct($data, 'table');
$this->table = $data['table'];
$this->id = "records";
$this->css = "table table-striped table-hover";
}
public function print_section_content()
{
if( count($this->table['elements']) > 0 )
{
if( !empty($this->table_headers) )
{
$this->table['headers'] = $this->table_headers;
}
$this->print_table_head();
$this->print_table_body();
}
else
{
print '<div class="alert alert-error no_records">' . $this->lang->txt('no_records') . '</div>';
}
}
protected function print_table_head()
{
print '<thead>';
$this->print_table_headers();
print '</thead>';
}
protected function print_table_headers()
{
print '<tr class="headers">';
if( $this->is_num_printed )
{
print '<th class="header_nr">' . $this->lang->txt('nr') . '</th>';
}
foreach( $this->table['headers'] as $header => $value )
{
if( $value )
{
$selected = $sortby = '';
$selected = ( $this->table['sorting']['sort'] == $header and $sortby = $this->table['sorting']['by'] ) ? 'selected' : '';
// print '<th class="header_'.$header.' '.$selected.'"><a onClick="javascript:sortby(\''.$header.'\')">'.$value.'</a> '.$sortby.'</th>';
print '<th class="header_' . $header . ' ' . $selected . ' "><a rel="' . $header . '" class="' . $selected . ' ' . $sortby . '">' . ( $value === 1 ? $this->lang->txt($header) : $value ) . '</a></th>';
}
else
print '<th class="header_' . $header . '">' . $this->lang->txt($header) . '</th>';
}
print '</tr>';
}
protected function print_table_body()
{
print '<tbody>';
$this->print_table_rows();
print '</tbody>';
}
protected function print_table_rows()
{
$nr = $this->data['pagination_config']['cur_page'] + 1;
foreach( $this->table['elements'] as $element )
{
$this->print_formatted_row($element, $nr);
$nr++;
}
}
protected function print_formatted_row($element, $nr)
{
print '<tr>';
if( $this->is_num_printed )
{
print '<td class="header_nr">' . $nr . '</td>';
}
foreach( $this->table['headers'] as $header => $value )
{
$element_value = '';
if( isset($element->$header) ) $element_value = $element->$header;
if( $header == 'datecreated' or $header == 'dateupdated' ) $element_value = ( $element_value != 0 and $element_value != 1 ) ? format_date_local($element_value) : '';
else
$element_value = ( in_array($element_value, array(
'0',
'1'
)) ) ? $this->lang->txt(set_yesno($element_value)) : $element_value;
$element_value = ( $element_value ) ? $element_value : '-';
if( $header == 'options' and isset($this->table['options']['links']) and is_array($this->table['options']['links']) )
{
$links = array();
foreach( $this->table['options']['links'] as $key => $val )
{
$links[$key] = $val . $element->rid;
}
$element_value = $this->generate_buttons($links, $this->table['options']['translations']);
}
$selected = '';
$selected = ( $this->table['sorting']['sort'] == $header ) ? 'td_selected' : '';
print '<td class="element_' . $header . ' ' . $selected . '">' . $element_value . '</td>';
}
print '</tr>';
}
protected function generate_buttons($links, $translations)
{
return set_options($links, $translations);
}
}
class Standard_Search_Form_Printer extends Printable_Section {
// helper variables
protected $search = false;
public function __construct(array $data)
{
parent::__construct($data, 'div');
$this->search = $data['search'];
$this->id = "";
$this->css = "search well";
}
public function print_section_content()
{
print '<div class="search_options_block row">';
// form start
print $this->data['search']['open'];
print '<fieldset>';
$this->print_search_fields();
print '</fieldset>';
// form end
print $this->data['search']['close'];
print '</div>';
}
protected function print_search_fields()
{
print $this->search['hidden'];
if( $this->search['options'] ) print '<div class="search_button span"><label> </label>' . $this->search['options'] . '</div>';
print '<div class="control-group span">';
foreach( $this->search['elements'] as $key => $element )
{
if( isset($element['form']) )
{
$mandatory = isset($element['label']['mandatory']) ? '<span class="mandatory">*</span>' : '';
print '<div class="span controls"><label class="control-label" for="' . $key . '">' . $element['label'] . '</label>' . $element['form'] . '</div>';
}
}
print '</div>';
}
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
* Provides unified display of index pages.
* How to use:
*
* $index = new Standard_Index_Page($this->data);
* $index->render_all();
*
* to customize extend this class and overwrite necessary methods. For example:
*
* class User_Index_Page extends Standard_Index_Page {
*
* protected function generate_buttons($links, $translations)
* {
* return button_dropdown($links, $translations, 'Action');
* }
*
* }
* or add new functionality here.
*
* $index = new User_Index_Page($this->data);
* $index->render_all();
*
* @author Michal K.
*
*/
class Standard_Index_Page extends Index_View_Helper {
public function print_section_content()
{
// title / header
$this->print_page_header();
// page body start
print '<div class="page_body">';
// message container for javascript
$this->print_message();
// flash message
$this->print_flash_message();
// print search form, inputs, buttons
$this->print_search_form();
print '<form id="sorting_form" action="' . current_url() . '" method="post">';
print '<input type="hidden" name="sorting" id="sorting" value="" />';
// print pagination and/or add button
$this->print_pagination();
// print table with selected columns. no select = all columns
$this->print_index_table();
print '</form>';
// page body end
print '</div>';
$this->print_information();
}
}
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.012 0.009 16.75 8.3.5 0.011 0.012 16.61 8.3.4 0.007 0.010 18.85 8.3.3 0.019 0.003 18.71 8.3.2 0.016 0.003 18.59 8.3.1 0.005 0.003 20.29 8.3.0 0.005 0.005 17.22 8.2.18 0.019 0.003 18.18 8.2.17 0.012 0.003 22.96 8.2.16 0.004 0.011 20.92 8.2.15 0.003 0.006 24.18 8.2.14 0.003 0.005 24.66 8.2.13 0.004 0.004 26.16 8.2.12 0.007 0.011 19.85 8.2.11 0.003 0.006 21.11 8.2.10 0.009 0.003 17.91 8.2.9 0.006 0.003 19.36 8.2.8 0.011 0.000 18.03 8.2.7 0.000 0.009 17.50 8.2.6 0.003 0.006 18.16 8.2.5 0.003 0.005 18.07 8.2.4 0.000 0.008 18.34 8.2.3 0.008 0.000 18.14 8.2.2 0.000 0.009 17.70 8.2.1 0.003 0.005 17.80 8.2.0 0.003 0.005 17.86 8.1.28 0.008 0.008 25.92 8.1.27 0.003 0.005 24.66 8.1.26 0.000 0.008 26.35 8.1.25 0.006 0.003 28.09 8.1.24 0.010 0.003 20.70 8.1.23 0.007 0.004 21.10 8.1.22 0.005 0.003 17.77 8.1.21 0.004 0.004 19.16 8.1.20 0.003 0.006 17.48 8.1.19 0.008 0.000 17.78 8.1.18 0.007 0.003 18.10 8.1.17 0.005 0.003 19.05 8.1.16 0.000 0.009 18.91 8.1.15 0.004 0.004 18.76 8.1.14 0.000 0.012 17.48 8.1.13 0.004 0.004 18.05 8.1.12 0.000 0.008 17.59 8.1.11 0.008 0.000 17.48 8.1.10 0.000 0.007 17.50 8.1.9 0.004 0.004 17.47 8.1.8 0.004 0.004 17.51 8.1.7 0.000 0.007 17.60 8.1.6 0.008 0.000 17.64 8.1.5 0.003 0.005 17.57 8.1.4 0.004 0.004 17.67 8.1.3 0.003 0.006 17.71 8.1.2 0.008 0.004 17.70 8.1.1 0.000 0.008 17.50 8.1.0 0.000 0.008 17.48 8.0.30 0.003 0.005 20.19 8.0.29 0.000 0.008 17.00 8.0.28 0.000 0.008 18.63 8.0.27 0.004 0.004 17.38 8.0.26 0.000 0.007 16.94 8.0.25 0.004 0.004 17.11 8.0.24 0.004 0.004 17.10 8.0.23 0.000 0.008 17.05 8.0.22 0.004 0.004 16.98 8.0.21 0.000 0.007 17.01 8.0.20 0.008 0.004 16.97 8.0.19 0.004 0.004 17.07 8.0.18 0.000 0.008 16.93 8.0.17 0.003 0.006 17.07 8.0.16 0.005 0.002 17.02 8.0.15 0.004 0.004 17.07 8.0.14 0.004 0.007 16.96 8.0.13 0.003 0.003 13.49 8.0.12 0.004 0.004 16.91 8.0.11 0.003 0.005 16.83 8.0.10 0.003 0.005 17.05 8.0.9 0.004 0.004 17.08 8.0.8 0.014 0.003 16.97 8.0.7 0.003 0.005 16.99 8.0.6 0.003 0.005 16.91 8.0.5 0.004 0.004 17.02 8.0.3 0.009 0.011 17.20 8.0.2 0.015 0.005 17.24 8.0.1 0.003 0.005 16.91 8.0.0 0.010 0.013 16.92 7.4.33 0.003 0.003 13.04 7.4.32 0.000 0.006 16.64 7.4.30 0.007 0.000 16.65 7.4.29 0.000 0.008 16.55 7.4.28 0.006 0.003 16.73 7.4.27 0.004 0.004 16.64 7.4.26 0.003 0.003 13.46 7.4.25 0.003 0.006 16.76 7.4.24 0.005 0.003 16.62 7.4.23 0.000 0.008 16.54 7.4.22 0.006 0.013 16.58 7.4.21 0.006 0.010 16.77 7.4.20 0.002 0.005 16.68 7.4.19 0.000 0.008 16.78 7.4.16 0.016 0.003 16.46 7.4.15 0.006 0.013 16.57 7.4.14 0.011 0.011 16.60 7.4.13 0.008 0.012 16.73 7.4.12 0.007 0.012 16.57 7.4.11 0.013 0.005 16.57 7.4.10 0.017 0.000 16.43 7.4.9 0.016 0.003 16.57 7.4.8 0.012 0.006 16.57 7.4.7 0.005 0.011 16.43 7.4.6 0.005 0.013 16.64 7.4.5 0.004 0.004 16.50 7.4.4 0.012 0.003 16.64 7.4.3 0.009 0.009 16.52 7.4.1 0.006 0.010 15.21 7.4.0 0.007 0.009 15.05 7.3.33 0.000 0.007 13.21 7.3.32 0.000 0.006 13.31 7.3.31 0.003 0.005 16.24 7.3.30 0.004 0.004 16.29 7.3.29 0.008 0.010 16.48 7.3.28 0.007 0.009 16.40 7.3.27 0.014 0.010 16.55 7.3.26 0.015 0.005 16.38 7.3.25 0.008 0.012 16.66 7.3.24 0.007 0.011 16.43 7.3.23 0.010 0.010 16.41 7.3.21 0.011 0.008 16.40 7.3.20 0.007 0.013 19.39 7.3.19 0.007 0.014 16.43 7.3.18 0.010 0.006 16.43 7.3.17 0.008 0.010 16.45 7.3.16 0.007 0.010 16.53 7.3.13 0.008 0.011 15.15 7.3.12 0.005 0.013 14.84 7.3.11 0.002 0.018 14.73 7.3.10 0.005 0.010 15.01 7.3.9 0.007 0.012 15.11 7.3.8 0.005 0.008 14.84 7.3.7 0.004 0.009 14.88 7.3.6 0.002 0.009 14.79 7.3.5 0.005 0.006 14.87 7.3.4 0.006 0.008 14.95 7.3.3 0.008 0.008 14.91 7.3.2 0.003 0.010 16.60 7.3.1 0.004 0.011 16.20 7.3.0 0.006 0.008 16.36 7.2.33 0.007 0.011 16.74 7.2.32 0.015 0.003 16.43 7.2.31 0.019 0.006 16.58 7.2.30 0.013 0.010 16.46 7.2.29 0.013 0.005 16.48 7.2.26 0.007 0.014 14.98 7.2.25 0.008 0.011 15.00 7.2.24 0.009 0.007 15.09 7.2.23 0.003 0.015 15.18 7.2.22 0.013 0.006 14.96 7.2.21 0.004 0.008 15.15 7.2.20 0.008 0.004 14.91 7.2.19 0.006 0.006 14.78 7.2.18 0.006 0.008 14.89 7.2.17 0.003 0.006 14.95 7.2.16 0.005 0.009 15.08 7.2.15 0.005 0.011 16.83 7.2.14 0.005 0.005 16.60 7.2.13 0.009 0.007 16.71 7.2.12 0.008 0.009 16.51 7.2.11 0.008 0.005 16.50 7.2.10 0.009 0.005 16.54 7.2.9 0.007 0.011 16.63 7.2.8 0.006 0.009 16.59 7.2.7 0.009 0.008 16.65 7.2.6 0.014 0.005 16.57 7.2.5 0.010 0.009 16.73 7.2.4 0.008 0.009 16.80 7.2.3 0.006 0.011 16.38 7.2.2 0.005 0.012 16.63 7.2.1 0.008 0.009 16.63 7.2.0 0.007 0.011 17.29 7.1.33 0.005 0.009 15.69 7.1.32 0.005 0.013 15.69 7.1.31 0.008 0.006 15.76 7.1.30 0.006 0.008 15.64 7.1.29 0.004 0.009 15.69 7.1.28 0.003 0.008 15.46 7.1.27 0.002 0.010 15.75 7.1.26 0.003 0.008 15.67 7.1.25 0.004 0.011 15.44 7.1.24 0.002 0.013 15.65 7.1.23 0.004 0.010 15.31 7.1.22 0.002 0.010 15.43 7.1.21 0.003 0.012 15.62 7.1.20 0.003 0.009 15.72 7.1.19 0.007 0.004 15.71 7.1.18 0.005 0.009 15.60 7.1.17 0.005 0.012 15.78 7.1.16 0.005 0.008 15.51 7.1.15 0.008 0.006 15.71 7.1.14 0.005 0.009 15.56 7.1.13 0.011 0.002 15.61 7.1.12 0.007 0.006 15.72 7.1.11 0.008 0.007 15.79 7.1.10 0.004 0.007 16.27 7.1.9 0.008 0.006 15.82 7.1.8 0.005 0.009 15.83 7.1.7 0.005 0.006 16.08 7.1.6 0.005 0.011 16.97 7.1.5 0.008 0.009 21.73 7.1.4 0.005 0.010 15.47 7.1.3 0.002 0.012 15.70 7.1.2 0.003 0.013 15.61 7.1.1 0.005 0.010 15.78 7.1.0 0.005 0.028 17.84 7.0.33 0.004 0.009 15.24 7.0.32 0.004 0.010 15.19 7.0.31 0.011 0.000 15.28 7.0.30 0.003 0.010 15.23 7.0.29 0.004 0.008 15.13 7.0.28 0.010 0.004 15.24 7.0.27 0.004 0.007 15.15 7.0.26 0.005 0.011 15.32 7.0.25 0.007 0.008 15.30 7.0.24 0.003 0.010 15.38 7.0.23 0.002 0.014 15.32 7.0.22 0.004 0.006 15.23 7.0.21 0.008 0.004 15.41 7.0.20 0.005 0.005 15.80 7.0.19 0.004 0.007 15.21 7.0.18 0.003 0.010 15.34 7.0.17 0.010 0.003 15.44 7.0.16 0.006 0.007 15.28 7.0.15 0.007 0.009 15.25 7.0.14 0.005 0.029 17.51 7.0.13 0.007 0.006 15.21 7.0.12 0.005 0.032 17.53 7.0.11 0.007 0.005 15.29 7.0.10 0.020 0.029 16.90 7.0.9 0.013 0.029 16.82 7.0.8 0.014 0.034 16.84 7.0.7 0.013 0.034 16.82 7.0.6 0.016 0.029 16.93 7.0.5 0.021 0.032 17.08 7.0.4 0.011 0.025 15.66 7.0.3 0.004 0.036 15.56 7.0.2 0.009 0.032 15.65 7.0.1 0.005 0.035 15.62 7.0.0 0.008 0.031 15.51 5.6.40 0.007 0.006 14.11 5.6.39 0.000 0.013 14.37 5.6.38 0.006 0.010 14.17 5.6.37 0.006 0.009 14.30 5.6.36 0.010 0.005 14.39 5.6.35 0.010 0.005 14.32 5.6.34 0.006 0.008 14.11 5.6.33 0.004 0.011 14.37 5.6.32 0.003 0.014 14.32 5.6.31 0.007 0.006 14.32 5.6.30 0.005 0.004 14.27 5.6.29 0.013 0.003 14.34 5.6.28 0.005 0.020 16.67 5.6.27 0.004 0.010 14.32 5.6.26 0.009 0.005 14.22 5.6.25 0.007 0.032 16.29 5.6.24 0.008 0.019 16.47 5.6.23 0.005 0.029 16.31 5.6.22 0.003 0.029 16.36 5.6.21 0.004 0.022 16.38 5.6.20 0.007 0.032 16.61 5.6.19 0.003 0.033 16.66 5.6.18 0.006 0.032 16.47 5.6.17 0.010 0.029 16.65 5.6.16 0.005 0.034 16.54 5.6.15 0.005 0.034 16.64 5.6.14 0.008 0.033 16.59 5.6.13 0.009 0.031 16.59 5.6.12 0.008 0.030 16.63 5.6.11 0.002 0.032 16.58 5.6.10 0.010 0.031 16.61 5.6.9 0.008 0.034 16.51 5.6.8 0.007 0.023 16.31 5.6.7 0.003 0.032 16.29 5.6.6 0.008 0.018 16.16 5.6.5 0.003 0.036 16.50 5.6.4 0.002 0.031 16.25 5.6.3 0.011 0.027 16.13 5.6.2 0.013 0.026 16.44 5.6.1 0.007 0.020 16.26 5.6.0 0.010 0.030 16.24 5.5.38 0.002 0.029 16.33 5.5.37 0.004 0.029 16.31 5.5.36 0.010 0.026 16.08 5.5.35 0.005 0.036 16.19 5.5.34 0.006 0.027 16.33 5.5.33 0.010 0.028 16.44 5.5.32 0.007 0.026 16.47 5.5.31 0.007 0.032 16.40 5.5.30 0.006 0.033 16.52 5.5.29 0.004 0.035 16.50 5.5.28 0.009 0.032 16.42 5.5.27 0.007 0.022 16.48 5.5.26 0.005 0.037 16.33 5.5.25 0.006 0.025 16.44 5.5.24 0.007 0.033 16.11 5.5.23 0.004 0.036 16.02 5.5.22 0.003 0.035 16.01 5.5.21 0.006 0.030 16.28 5.5.20 0.009 0.030 16.25 5.5.19 0.005 0.031 16.20 5.5.18 0.006 0.034 16.20 5.5.17 0.008 0.006 14.17 5.5.16 0.005 0.032 16.15 5.5.15 0.008 0.033 16.03 5.5.14 0.008 0.032 16.11 5.5.13 0.004 0.029 16.11 5.5.12 0.007 0.024 16.20 5.5.11 0.011 0.031 16.23 5.5.10 0.010 0.029 16.10 5.5.9 0.011 0.026 16.26 5.5.8 0.010 0.030 16.01 5.5.7 0.006 0.034 16.19 5.5.6 0.009 0.032 16.00 5.5.5 0.012 0.030 16.10 5.5.4 0.010 0.031 16.16 5.5.3 0.008 0.028 16.08 5.5.2 0.008 0.029 16.12 5.5.1 0.010 0.023 16.06 5.5.0 0.008 0.030 16.08 5.4.45 0.001 0.024 14.80 5.4.44 0.003 0.032 14.77 5.4.43 0.006 0.031 14.72 5.4.42 0.007 0.020 14.79 5.4.41 0.005 0.034 14.74 5.4.40 0.008 0.018 14.69 5.4.39 0.008 0.019 14.60 5.4.38 0.007 0.025 14.65 5.4.37 0.007 0.028 14.66 5.4.36 0.008 0.027 14.63 5.4.35 0.008 0.017 14.66 5.4.34 0.004 0.020 14.62 5.4.33 0.007 0.005 12.45 5.4.32 0.005 0.030 14.68 5.4.31 0.002 0.035 14.60 5.4.30 0.006 0.025 14.71 5.4.29 0.004 0.029 14.69 5.4.28 0.004 0.032 14.61 5.4.27 0.008 0.025 14.61 5.4.26 0.008 0.024 14.67 5.4.25 0.003 0.023 14.69 5.4.24 0.011 0.023 14.61 5.4.23 0.009 0.031 14.67 5.4.22 0.009 0.025 14.68 5.4.21 0.008 0.031 14.66 5.4.20 0.005 0.028 14.67 5.4.19 0.004 0.027 14.66 5.4.18 0.003 0.034 14.68 5.4.17 0.004 0.027 14.68 5.4.16 0.001 0.033 14.61 5.4.15 0.004 0.021 14.66 5.4.14 0.008 0.028 13.77 5.4.13 0.006 0.019 13.77 5.4.12 0.006 0.027 13.74 5.4.11 0.007 0.024 13.79 5.4.10 0.004 0.032 13.77 5.4.9 0.006 0.029 13.81 5.4.8 0.006 0.019 13.81 5.4.7 0.006 0.030 13.77 5.4.6 0.006 0.027 13.77 5.4.5 0.004 0.031 13.82 5.4.4 0.004 0.018 13.76 5.4.3 0.009 0.029 13.77 5.4.2 0.004 0.029 13.80 5.4.1 0.007 0.018 13.76 5.4.0 0.008 0.021 13.61 5.3.29 0.006 0.032 13.22 5.3.28 0.008 0.030 13.20 5.3.27 0.006 0.029 13.24 5.3.26 0.003 0.035 13.24 5.3.25 0.003 0.025 13.21 5.3.24 0.006 0.034 13.22 5.3.23 0.003 0.033 13.21 5.3.22 0.004 0.032 13.23 5.3.21 0.003 0.029 13.22 5.3.20 0.008 0.025 13.21 5.3.19 0.007 0.028 13.25 5.3.18 0.007 0.029 13.24 5.3.17 0.006 0.026 13.22 5.3.16 0.005 0.017 13.21 5.3.15 0.004 0.030 13.20 5.3.14 0.008 0.024 13.24 5.3.13 0.006 0.023 13.19 5.3.12 0.003 0.030 13.20 5.3.11 0.002 0.024 13.21 5.3.10 0.005 0.030 13.01 5.3.9 0.004 0.026 13.04 5.3.8 0.007 0.030 12.99 5.3.7 0.005 0.030 13.02 5.3.6 0.009 0.028 13.02 5.3.5 0.002 0.021 12.98 5.3.4 0.004 0.022 13.00 5.3.3 0.001 0.023 13.02 5.3.2 0.005 0.019 12.92 5.3.1 0.005 0.031 12.94 5.3.0 0.006 0.031 12.86
preferences:dark mode live preview
48.42 ms | 401 KiB | 5 Q