3v4l.org

run code in 300+ PHP versions simultaneously
<?php header("Expires: " . gmdate("D, d M Y H:i:s", 0) . " GMT"); // RSS2iCal by Dean Sanvitale @2003 // My version displays one event per item with specific dates for each item // Code used from RSSiCal Version 0.8.3 by Noel David Jackson (noel@noeljackson.com) // RSS Parser by Edward Swindelles (ed@readinged.com) // //include("rssical/parseRSS.php"); //////////////////////////////////////////////////////////// //RSS Parser included inline for easy distribution /* Copyright 2002-2003 Edward Swindelles (ed@readinged.com) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* Default settings, you may change them at your whim. See README. */ $rss_cache_path = ''; $rss_default_cache_time = 180; $rss_debug_mode = true; /* Private variables, do not change. */ $rss_contents = array(); $rss_cache_age = 0; $rss_tag = ''; $rss_isItem = false; $rss_isChannel = false; $rss_isImage = false; $rss_isTextInput = false; $rss_index = 0; function stream_last_modified($url) { if (function_exists('version_compare') && version_compare(phpversion(), '4.3.0') > 0) { if (!($fp = @fopen($url, 'r'))) return NULL; $meta = stream_get_meta_data($fp); for ($j = 0; isset($meta['wrapper_data'][$j]); $j++) { if (strstr(strtolower($meta['wrapper_data'][$j]), 'last-modified')) { $modtime = substr($meta['wrapper_data'][$j], 15); break; } } fclose($fp); } else { $parts = parse_url($url); $host = $parts['host']; $path = $parts['path']; if (!($fp = @fsockopen($host, 80))) return NULL; $req = "HEAD $path HTTP/1.0\r\nUser-Agent: PHP/".phpversion()."\r\nHost: $host:80\r\nAccept: */*\r\n\r\n"; fputs($fp, $req); while (!feof($fp)) { $str = fgets($fp, 4096); if (strstr(strtolower($str), 'last-modified')) { $modtime = substr($str, 15); break; } } fclose($fp); } return isset($modtime) ? strtotime($modtime) : time(); } function parseRSS($url, $cache_file=NULL, $cache_time=NULL) { global $rss_contents, $rss_default_cache_time, $rss_isTextInput, $rss_cache_path, $rss_cache_age, $rss_tag, $rss_isImage, $rss_isItem, $rss_isChannel, $rss_index, $rss_debug_mode; $rss_error = '<br /><strong>Error on line %s of '.__FILE__.'</strong>: %s<br />'; if (!function_exists('xml_parser_create')) { if ($rss_debug_mode) printf($rss_error, (__LINE__-3), '<a href="http://www.php.net/manual/en/ref.xml.php">PHP\'s XML Extension</a> is not loaded or available.'); return false; } $rss_contents = array(); if (!is_null($cache_file)) { if (!isset($rss_cache_path) || !strlen($rss_cache_path)) $rss_cache_path = dirname(__FILE__); $cache_file = str_replace('//', '/', $rss_cache_path.'/'.$cache_file); if (is_null($cache_time)) $cache_time = $rss_default_cache_time; $rss_cache_age = file_exists($cache_file) ? ceil((time() - filemtime($cache_file)) / 60) : 0; $remotemodtime = stream_last_modified($url); if (is_null($remotemodtime)) { if ($rss_debug_mode) printf($rss_error, (__LINE__-4), 'Could not connect to remote RSS file ('.$url.').'); return false; } } if (is_null($cache_file) || (!is_null($cache_file) && !file_exists($cache_file)) || (!is_null($cache_file) && file_exists($cache_file) && $rss_cache_age > $cache_time && $remotemodtime > ((time()) - ($rss_cache_age * 60)))) { $rss_tag = ''; $rss_isItem = false; $rss_isChannel = false; $rss_index = 0; $saxparser = @xml_parser_create(); if (!is_resource($saxparser)) { if ($rss_debug_mode) printf($rss_error, (__LINE__-4), 'Could not create an instance of <a href="http://www.php.net/manual/en/ref.xml.php">PHP\'s XML parser</a>.'); return false; } xml_parser_set_option($saxparser, XML_OPTION_CASE_FOLDING, false); xml_set_element_handler($saxparser, 'sax_start', 'sax_end'); xml_set_character_data_handler($saxparser, 'sax_data'); if (!($fp = @fopen($url, 'r'))) { if ($rss_debug_mode) printf($rss_error, (__LINE__-3), 'Could not connect to remote RSS file ('.$url.').'); return false; } while ($data = fread($fp, 4096)) { $parsedOkay = xml_parse($saxparser, $data, feof($fp)); if (!$parsedOkay && xml_get_error_code($saxparser) != XML_ERROR_NONE) { if ($rss_debug_mode) printf($rss_error, (__LINE__-3), 'File has an XML error (<em>'.xml_error_string(xml_get_error_code($saxparser)).'</em> at line <em>'.xml_get_current_line_number($saxparser).'</em>).'); return false; } } xml_parser_free($saxparser); fclose($fp); if (!is_null($cache_file)) { if (!($cache = @fopen($cache_file, 'w'))) { if ($rss_debug_mode) printf($rss_error, (__LINE__-3), 'Could not right to cache file (<em>'.$cache_file.'</em>). The path may be invalid or you may not have write permissions.'); return false; } fwrite($cache, serialize($rss_contents)); fclose($cache); } } else { if (!($fp = @fopen($cache_file, 'r'))) { if ($rss_debug_mode) printf($rss_error, (__LINE__-3), 'Could not read contents of cache file (<em>'.$cache_file.'</em>).'); return false; } $rss_contents = unserialize(fread($fp, filesize($cache_file))); fclose($fp); } return $rss_contents; } function sax_start($parser, $name, $attribs) { global $rss_tag, $rss_isItem, $rss_isChannel, $rss_isImage, $rss_index, $rss_isTextInput; $rss_tag = $name = strtolower($name); if ($name == 'channel') { $rss_isChannel = true; $rss_isImage = false; $rss_isItem = false; } elseif ($name == 'image') { $rss_isChannel = false; $rss_isImage = true; $rss_isItem = false; } elseif ($name == 'item') { $rss_index++; $rss_isChannel = false; $rss_isImage = false; $rss_isItem = true; } elseif ($name == 'textinput') { $rss_isChannel = false; $rss_isImage = false; $rss_isItem = false; $rss_isTextInput = true; } } function sax_end($parser, $name){} function sax_data($parser, $data) { global $rss_tag, $rss_isItem, $rss_isChannel, $rss_contents, $rss_isTextInput, $rss_isImage, $rss_index; if ($data != "\n") { if ($rss_isChannel && !$rss_isItem && strlen($data)) (!isset($rss_contents['channel'][$rss_tag]) || !strlen($rss_contents['channel'][$rss_tag])) ? $rss_contents['channel'][$rss_tag] = $data : $rss_contents['channel'][$rss_tag].= $data ; elseif ($rss_isItem && strlen($data)) (!isset($rss_contents[$rss_index-1][$rss_tag]) || !strlen($rss_contents[$rss_index-1][$rss_tag])) ? $rss_contents[$rss_index-1][$rss_tag] = $data : $rss_contents[$rss_index-1][$rss_tag].= $data ; elseif ($rss_isImage && strlen($data)) (!isset($rss_contents['image'][$rss_tag]) || !strlen($rss_contents['image'][$rss_tag])) ? $rss_contents['image'][$rss_tag] = $data : $rss_contents['image'][$rss_tag].= $data ; elseif ($rss_isTextInput && strlen($data)) (!isset($rss_contents['textinput'][$rss_tag]) || !strlen($rss_contents['textinput'][$rss_tag])) ? $rss_contents['textinput'][$rss_tag] = $data : $rss_contents['textinput'][$rss_tag].= $data ; } } /////////////////////////////// function getVar($varName, $varDefaultVal) { global $HTTP_GET_VARS, $HTTP_POST_VARS, $HTTP_POST_FILES, $HTTP_COOKIE_VARS; if (isset($HTTP_GET_VARS[$varName])) { $varVal = $HTTP_GET_VARS[$varName]; } elseif (isset($HTTP_POST_VARS[$varName])) { $varVal = $HTTP_POST_VARS[$varName]; } elseif (isset($HTTP_POST_FILES[$varName])) { $varVal = $HTTP_POST_FILES[$varName]; } elseif (isset($HTTP_COOKIE_VARS[$varName])) { $varVal = $HTTP_COOKIE_VARS[$varName]; } else { $varVal = $varDefaultVal; } return $varVal; } function write_log ($logentry) { global $logfile; if (!$logfile) { $logfile = fopen ("./log.txt", "a"); } fwrite($logfile, date("m/d/y h:i:s A - ") . $logentry . "\n"); } function pre_fix($strText) { $strResult = $strText; //$strResult = strip_tags($strResult); $trans_array = array(); for ($i=127; $i<255; $i++) { $trans_array[chr($i)] = "&#" . $i . ";"; } $strResult = strtr($strResult, $trans_array); $strResult = ltrim($strResult); $strResult = rtrim($strResult); return $strResult; } function fix($data) { $data = pre_fix($data); $patterns = array( '/<br \/>/', '/<\/p>/', '/<p.*?>/', '/(.*?)<a.*? href="(.*?http:\/\/.+?)".*?>(.*?)<\/a>(.*?)/', '/<code.*?>(.*?)<\/code>/', '/<img.*?src=".*?".*?[\/]*>/', '/<blockquote.*?cite="(http:\/\/.+?)".*?>(.*?)<\/blockquote>/', '/<cite.*?>(.*?)<\/cite>/', '/<[ou]l*?>(.+?)<\/[ou]l>/', '/<li*?>(.+?)<\/li>/', '/<span.*?>(.*?)<\/span>/', '/<strong.*?>(.*?)<\/strong>/', '/<b.*?>(.*?)<\/b>/', '/<em.*?>(.*?)<\/em>/', '/<i.*?>(.*?)<\/i>/', '/,/', '/;/', '/&lt;/', '/&gt;/', '/&amp;/', '/&#821[67];/', '/&#822[01];/' ); $replace = array( //br and p "\\n", "\\n\\n", "", //a element //"\\1\\3 [link: \\2]\\4", "\\1\\3 [link]\\4", //code "\\1", //img "[img]\\n", //cite=,cite "\\n\\2[cite: \\1]\\n\\n", "[cite]\\1", //ul/ol, li "\\n\\1", "* \\1\\n", "\\1", "\\1", "\\1", "\\1", "\\1", "\\,", "\\;", "<", ">", "&", "'", "\"" ); $data = preg_replace($patterns, $replace, $data); $data = strip_tags($data); return $data; } $url = getVar("url", ""); if (strlen($url) == 0) { echo "<HTML>\n"; echo "<HEAD>\n"; echo "<TITLE>RSS2iCal</TITLE>\n"; echo "</HEAD>\n"; echo "<BODY>\n"; echo "View and/or Subscribe to RSS/RDF News Feeds in iCalendar (vCal 2.0) format.<P>\n"; echo "Subscriptions have only been tested with Apple's iCal application.<P>\n"; echo "Once you have subscribed to a news feed in Apple's iCal, iSync can be used to synchronize it with your iPod, Palm, or cell phone.<P>\n"; echo "<HR>\n"; echo "<FORM NAME=\"Form_View\" METHOD=GET ACTION=\"http://" . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . "\">\n"; echo "RSS/RDF URL: <INPUT TYPE=TEXT SIZE=50 NAME=\"url\" VALUE=\"http://www.e-queue.com/index.rdf\">\n"; echo "<INPUT TYPE=HIDDEN NAME=\"format\" VALUE=\".ics\">\n"; echo "<INPUT TYPE=SUBMIT VALUE=\"View\">\n"; echo "<INPUT TYPE=BUTTON VALUE=\"Subscribe\" onClick=\"document.Form_Subscribe.url.value = document.Form_View.url.value; document.Form_Subscribe.submit();\">\n"; echo "</FORM>\n"; echo "<FORM NAME=\"Form_Subscribe\" METHOD=GET ACTION=\"webcal://" . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . "\">\n"; echo "<INPUT TYPE=HIDDEN SIZE=50 NAME=\"url\" VALUE=\"http://www.e-queue.com/index.rdf\">\n"; echo "<INPUT TYPE=HIDDEN NAME=\"format\" VALUE=\".ics\">\n"; echo "</FORM>\n"; echo "Links to Common RSS Feeds Converted to iCal format and subscriptions to them:\n"; echo "<UL>\n"; echo "<LI><A HREF=\"http://" . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . "?url=http://www.bbc.co.uk/syndication/feeds/news/ukfs_news/front_page/rss091.xml&format=*.ics\">BBC News | Front Page</A> [<A HREF=\"webcal://" . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . "?url=http://www.bbc.co.uk/syndication/feeds/news/ukfs_news/front_page/rss091.xml&format=*.ics\">subscribe</A>]</LI>\n"; echo "<LI><A HREF=\"http://" . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . "?url=http://rss.com.com/2547-12-0-20.xml&format=*.ics\">CNET News.com</A> [<A HREF=\"webcal://" . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . "?url=http://rss.com.com/2547-12-0-20.xml&format=*.ics\">subscribe</A>]</LI>\n"; echo "<LI><A HREF=\"http://" . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . "?url=http://www.e-queue.com/index.rdf&format=*.ics\">E-Queue</A> [<A HREF=\"webcal://" . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . "?url=http://www.e-queue.com/index.rdf&format=*.ics\">subscribe</A>]</LI>\n"; echo "<LI><A HREF=\"http://" . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . "?url=http://maccentral.macworld.com/mnn.cgi&format=*.ics\">MacCentral</A> [<A HREF=\"webcal://" . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . "?url=http://maccentral.macworld.com/mnn.cgi&format=*.ics\">subscribe</A>]</LI>\n"; echo "<LI><A HREF=\"http://" . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . "?url=http://www.salon.com/feed/RDF/salon_use.rdf&format=*.ics\">Salon</A> [<A HREF=\"webcal://" . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . "?url=http://www.salon.com/feed/RDF/salon_use.rdf&format=*.ics\">subscribe</A>]</LI>\n"; echo "<LI><A HREF=\"http://" . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . "?url=http://slashdot.org/slashdot.rss&format=*.ics\">Slashdot</A> [<A HREF=\"webcal://" . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . "?url=http://slashdot.org/slashdot.rss&format=*.ics\">subscribe</A>]</LI>\n"; echo "<LI><A HREF=\"http://" . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . "?url=http://www.wired.com/news_drop/netcenter/netcenter.rdf&format=*.ics\">Wired News</A> [<A HREF=\"webcal://" . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . "?url=http://www.wired.com/news_drop/netcenter/netcenter.rdf&format=*.ics\">subscribe</A>]</LI>\n"; echo "</UL>\n"; echo "</BODY>\n"; echo "</HTML>\n"; } else { $url = preg_replace('/http:\/\//', '', $url); header("Content-type: text/plain"); //header("Content-Disposition: inline; filename=MyiCalFile.ics"); if ($rssData = parseRSS ( "http://$url")) { $channel_title = fix($rssData["channel"]["title"]); $channel_description = fix($rssData["channel"]["description"]); if (strlen($channel_description) == 0) { $channel_description = $channel_title; } $channel_date = pre_fix($rssData["channel"]["dc:date"]); $channel_pubdate = pre_fix($rssData["channel"]["pubdate"]); $channel_lastbuilddate = pre_fix($rssData["channel"]["lastbuilddate"]); if (strlen($channel_pubdate) > 0 && (strlen($channel_date) == 0)) { $channel_date = $channel_pubdate; } if (strlen($channel_lastbuilddate) > 0 && (strlen($channel_date) == 0)) { $channel_date = $channel_lastbuilddate; } echo "BEGIN:VCALENDAR\n"; echo "CALSCALE:GREGORIAN\n"; //echo "X-WR-TIMEZONE;VALUE=TEXT:US/Eastern\n"; echo "METHOD:PUBLISH\n"; echo "PRODID:RSS2iCal 0.0.1\n"; echo "X-WR-CALNAME;VALUE=TEXT:" . $channel_title . "\n"; echo "X-WR-CALDESC;VALUE=TEXT:" . $channel_description . "\n"; //echo "X-WR-RELCALID;VALUE=TEXT:123456789\n"; echo "VERSION:2.0\n"; for ( $i = 0; isset ( $rssData[$i] ); $i++ ) { $item_title = fix($rssData[$i]["title"]); $item_link = fix($rssData[$i]["link"]); if (strlen(fix($rssData[$i]["guid"])) > 0 && (strlen($item_link) == 0)) { $item_link = fix($rssData[$i]["guid"]); } $item_description = fix($rssData[$i]["description"]); if (strlen(fix($rssData[$i]["content:encoded"])) > 0) { $item_description = fix($rssData[$i]["content:encoded"]); } if ((strlen($item_description) > 0) && (strlen($item_title) == 0)) { $item_title = substr($item_description, 0, 30) . "..."; } $item_date = pre_fix($rssData[$i]["dc:date"]); $item_pubdate = pre_fix($rssData[$i]["pubdate"]); if (strlen($item_pubdate) > 0 && (strlen($item_date) == 0)) { $item_date = $item_pubdate; } //If we use the channel date, all entries have the same datetime //This datetime is erroneous because it only applies to the latest item //For now don't use it. This results in prettier iCal display //if (strlen($channel_date) > 0 && (strlen($item_date) == 0)) { //$item_date = $channel_date; //} //echo $item_date; if (strlen($item_date) == 25) { $strDT = substr($item_date, 5, 2) . "/"; $strDT = $strDT . substr($item_date, 8, 2) . "/"; $strDT = $strDT . substr($item_date, 0, 4) . " "; $strDT = $strDT . substr($item_date, 11, 8) . " GMT"; //echo "strDT: " . $strDT; $gmt_offset = substr($item_date, 19, 3); $gmt_offset = 60 * 60 * $gmt_offset; //echo "gmt_offset: " . $gmt_offset; $unix_time = strtotime($strDT) - $gmt_offset; //echo "unixtime: " . $unix_time; $item_date = gmdate("Ymd\THis\Z", $unix_time); } elseif (strlen($item_date) == 29) { $item_date = gmdate("Ymd\THis\Z", strtotime($item_date)); } else { $item_date = date("Ymd"); } echo "BEGIN:VEVENT\n"; echo "UID:" . md5($item_link . $item_title) . "\n"; echo "DTSTAMP;VALUE=DATE:$item_date\n"; echo "SUMMARY:" . $item_title . "\n"; if ((strlen($item_link) > 0) && (strlen($item_description) > 0)) { echo "DESCRIPTION:" . $item_link . "\\n\\n" . $item_description . "\n"; } elseif (strlen($item_description) > 0) { echo "DESCRIPTION:" . $item_description . "\n"; } elseif (strlen($item_link) > 0) { echo "DESCRIPTION:" . $item_link . "\\n\\n\n"; } echo "DTSTART;VALUE=DATE:$item_date\n"; echo "DTEND;VALUE=DATE:$item_date\n"; echo "END:VEVENT\n"; } echo "END:VCALENDAR\n"; } else { echo "Unable to parse RSS feed."; } } ?>

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.40.0100.00619.14
8.3.30.0120.00319.29
8.3.20.0000.00820.28
8.3.10.0040.00423.61
8.3.00.0040.00419.25
8.2.170.0090.00622.96
8.2.160.0090.00920.51
8.2.150.0050.00324.18
8.2.140.0050.00324.66
8.2.130.0000.00926.16
8.2.120.0040.00422.30
8.2.110.0060.00320.78
8.2.100.0090.00318.09
8.2.90.0030.00619.76
8.2.80.0040.00417.97
8.2.70.0030.00618.13
8.2.60.0090.00018.18
8.2.50.0030.00618.07
8.2.40.0060.00318.43
8.2.30.0050.00318.24
8.2.20.0000.00817.98
8.2.10.0040.00418.27
8.2.00.0050.00517.98
8.1.270.0040.00422.30
8.1.260.0080.00026.35
8.1.250.0050.00328.09
8.1.240.0000.01122.46
8.1.230.0110.00022.66
8.1.220.0080.00017.89
8.1.210.0040.00419.20
8.1.200.0050.00517.61
8.1.190.0060.00317.72
8.1.180.0060.00318.10
8.1.170.0050.00518.87
8.1.160.0000.00819.04
8.1.150.0030.00818.94
8.1.140.0000.00817.74
8.1.130.0040.00417.98
8.1.120.0080.00017.70
8.1.110.0100.00017.80
8.1.100.0000.00817.72
8.1.90.0000.00917.81
8.1.80.0030.00617.79
8.1.70.0040.00417.76
8.1.60.0030.00617.68
8.1.50.0000.00917.73
8.1.40.0040.00417.74
8.1.30.0000.00817.77
8.1.20.0030.00617.82
8.1.10.0040.00417.71
8.1.00.0040.00417.71
8.0.300.0050.00320.23
8.0.290.0060.00317.00
8.0.280.0000.00718.60
8.0.270.0040.00417.50
8.0.260.0000.00717.48
8.0.250.0040.00417.29
8.0.240.0040.00417.23
8.0.230.0040.00417.29
8.0.220.0000.00717.29
8.0.210.0040.00417.23
8.0.200.0030.00517.32
8.0.190.0000.00817.30
8.0.180.0080.00017.19
8.0.170.0040.00417.29
8.0.160.0080.00017.21
8.0.150.0000.01017.24
8.0.140.0080.00017.20
8.0.130.0080.00013.72
8.0.120.0040.00417.20
8.0.110.0000.00817.17
8.0.100.0040.00417.16
8.0.90.0030.00517.25
8.0.80.0030.02117.25
8.0.70.0040.00417.13
8.0.60.0040.00417.14
8.0.50.0040.00417.21
8.0.30.0110.01017.43
8.0.20.0100.01017.40
8.0.10.0080.00017.24
8.0.00.0150.00517.01
7.4.330.0000.00515.00
7.4.320.0000.00716.85
7.4.300.0000.00716.64
7.4.290.0080.00016.70
7.4.280.0030.00616.84
7.4.270.0000.00716.85
7.4.260.0070.00016.74
7.4.250.0040.00416.85
7.4.240.0060.00216.87
7.4.230.0040.00416.95
7.4.220.0060.01516.65
7.4.210.0090.01016.79
7.4.200.0020.00516.92
7.4.190.0040.00416.64
7.4.160.0040.01216.60
7.4.150.0060.01217.40
7.4.140.0130.00517.86
7.4.130.0090.01116.81
7.4.120.0080.00916.87
7.4.110.0130.00616.95
7.4.100.0060.01316.65
7.4.90.0140.00516.93
7.4.80.0100.01019.39
7.4.70.0100.00716.82
7.4.60.0080.01116.83
7.4.50.0030.00616.93
7.4.40.0110.00716.95
7.4.30.0080.00916.57
7.4.00.0090.01015.08
7.3.330.0030.00613.60
7.3.320.0030.00313.67
7.3.310.0080.00016.48
7.3.300.0050.00316.51
7.3.290.0000.01416.64
7.3.280.0080.01216.59
7.3.270.0110.00817.40
7.3.260.0110.01116.74
7.3.250.0120.00816.77
7.3.240.0120.00616.82
7.3.230.0160.00416.61
7.3.210.0150.00316.73
7.3.200.0110.01319.39
7.3.190.0080.01516.84
7.3.180.0090.01016.85
7.3.170.0110.00816.71
7.3.160.0090.00916.79
7.3.120.0080.00915.15
7.3.110.0040.01615.09
7.3.100.0040.01514.91
7.3.90.0080.00815.12
7.3.80.0070.00715.20
7.3.70.0060.01315.00
7.3.60.0060.01015.20
7.3.50.0000.01115.03
7.3.40.0090.00615.10
7.3.30.0090.00614.86
7.3.20.0090.00616.81
7.3.10.0030.01016.55
7.3.00.0000.00916.84
7.2.330.0120.00917.06
7.2.320.0120.00917.01
7.2.310.0150.00617.18
7.2.300.0070.01116.74
7.2.290.0160.00316.74
7.2.250.0070.01015.62
7.2.240.0070.01415.08
7.2.230.0100.00715.28
7.2.220.0000.01915.18
7.2.210.0000.01414.95
7.2.200.0030.01415.28
7.2.190.0030.01315.37
7.2.180.0070.00715.42
7.2.170.0060.00915.18
7.2.00.0000.01219.37
7.1.330.0060.01015.82
7.1.320.0030.01315.85
7.1.310.0000.00915.60
7.1.300.0050.00515.99
7.1.290.0080.00415.91
7.1.280.0040.01115.98
7.1.270.0030.00715.84
7.1.260.0030.01015.84
7.1.200.0110.00415.92
7.1.100.0070.00718.04
7.1.70.0000.01017.29
7.1.60.0100.01619.46
7.1.50.0060.00617.00
7.1.00.0030.07722.40
7.0.200.0040.00416.83
7.0.140.0000.08021.95
7.0.100.0000.05320.20
7.0.90.0130.07720.06
7.0.80.0300.06720.10
7.0.70.0070.04320.10
7.0.60.0100.04320.13
7.0.50.0370.07020.60
7.0.40.0070.07720.01
7.0.30.0070.04320.05
7.0.20.0070.04720.02
7.0.10.0030.05320.13
7.0.00.0070.05320.08
5.6.280.0000.08021.05
5.6.250.0200.04720.57
5.6.240.0100.04720.73
5.6.230.0030.04720.71
5.6.220.0030.09020.57
5.6.210.0070.06320.57
5.6.200.0030.04721.20
5.6.190.0070.04321.19
5.6.180.0130.08021.21
5.6.170.0030.06321.06
5.6.160.0030.06021.11
5.6.150.0030.04321.09
5.6.140.0130.07021.18
5.6.130.0000.05021.13
5.6.120.0100.08721.16
5.6.110.0130.07721.13
5.6.100.0100.04721.16
5.6.90.0030.05321.04
5.6.80.0070.04720.47
5.6.70.0100.03720.58
5.6.60.0100.05720.53
5.6.50.0100.03720.54
5.6.40.0100.05020.45
5.6.30.0000.05320.55
5.6.20.0130.06320.65
5.6.10.0030.07320.50
5.6.00.0130.05020.55
5.5.380.0100.06020.48
5.5.370.0100.05320.63
5.5.360.0130.03720.52
5.5.350.0100.05720.54
5.5.340.0230.03320.99
5.5.330.0070.05321.01
5.5.320.0100.08020.90
5.5.310.0030.08720.93
5.5.300.0100.06320.86
5.5.290.0070.05021.01
5.5.280.0070.05721.04
5.5.270.0030.04321.05
5.5.260.0070.05720.98
5.5.250.0000.05020.83
5.5.240.0030.06020.43
5.5.230.0100.08020.42
5.5.220.0200.06020.30
5.5.210.0100.04320.34
5.5.200.0100.08720.25
5.5.190.0130.07320.35
5.5.180.0070.08320.41
5.5.160.0030.05720.36
5.5.150.0100.06320.25
5.5.140.0030.04020.24
5.5.130.0130.07320.39
5.5.120.0130.07320.33
5.5.110.0100.07320.34
5.5.100.0000.07720.11
5.5.90.0070.04320.30
5.5.80.0130.03720.14
5.5.70.0070.05020.23
5.5.60.0130.06720.24
5.5.50.0100.03320.27
5.5.40.0070.08020.18
5.5.30.0100.05320.17
5.5.20.0030.04720.15
5.5.10.0070.03720.16
5.5.00.0070.07320.22
5.4.450.0100.04319.41
5.4.440.0130.05319.50
5.4.430.0200.06719.39
5.4.420.0100.04719.45
5.4.410.0070.03719.12
5.4.400.0070.06319.30
5.4.390.0130.04019.13
5.4.380.0070.05319.25
5.4.370.0070.06319.09
5.4.360.0070.08719.23
5.4.350.0100.06719.14
5.4.340.0100.03319.14
5.4.320.0070.07319.17
5.4.310.0030.08319.10
5.4.300.0100.07318.97
5.4.290.0000.06719.20
5.4.280.0030.05319.09
5.4.270.0200.06719.01
5.4.260.0070.06319.27
5.4.250.0100.07719.09
5.4.240.0070.04318.94
5.4.230.0030.07719.09
5.4.220.0030.06019.27
5.4.210.0030.04319.09
5.4.200.0070.05018.95
5.4.190.0100.07019.09
5.4.180.0100.07019.07
5.4.170.0030.07719.23
5.4.160.0000.04719.06
5.4.150.0030.07318.90
5.4.140.0030.06316.50
5.4.130.0100.07016.43
5.4.120.0100.03316.43
5.4.110.0100.06716.61
5.4.100.0030.04016.60
5.4.90.0030.07016.45
5.4.80.0070.04716.42
5.4.70.0070.08016.37
5.4.60.0030.05716.43
5.4.50.0070.03316.54
5.4.40.0100.06316.55
5.4.30.0070.05316.51
5.4.20.0100.05716.54
5.4.10.0130.07016.57
5.4.00.0100.06315.89
5.3.290.0030.08014.91
5.3.280.0000.07714.85
5.3.270.0030.07714.79
5.3.260.0030.08314.84
5.3.250.0030.04314.86
5.3.240.0030.07714.79
5.3.230.0100.06314.77
5.3.220.0130.06314.79
5.3.210.0100.05014.80
5.3.200.0030.04314.68
5.3.190.0100.07314.73
5.3.180.0130.03314.70
5.3.170.0000.06714.85
5.3.160.0030.04314.77
5.3.150.0070.03714.76
5.3.140.0100.03314.85
5.3.130.0100.08714.70
5.3.120.0100.07014.75
5.3.110.0070.06314.67
5.3.100.0030.08714.30
5.3.90.0000.04314.14
5.3.80.0100.05714.21
5.3.70.0130.05314.26
5.3.60.0030.04314.22
5.3.50.0030.04314.20
5.3.40.0030.04014.07
5.3.30.0100.04314.18
5.3.20.0070.04313.88
5.3.10.0030.04713.96
5.3.00.0070.03713.83

preferences:
45.95 ms | 400 KiB | 5 Q