+ * @copyright 2009 phpSysInfo
+ * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License
+ * @version Release: 3.0
+ * @link http://phpsysinfo.sourceforge.net
+ */
+class MDStatus extends PSI_Plugin
+{
+ /**
+ * variable, which holds the content of the command
+ * @var array
+ */
+ private $_filecontent = "";
+
+ /**
+ * variable, which holds the result before the xml is generated out of this array
+ * @var array
+ */
+ private $_result = array();
+
+ /**
+ * read the data into an internal array and also call the parent constructor
+ *
+ * @param String $enc encoding
+ */
+ public function __construct($enc)
+ {
+ $buffer = "";
+ parent::__construct(__CLASS__, $enc);
+ switch (strtolower(PSI_PLUGIN_MDSTATUS_ACCESS)) {
+ case 'file':
+ CommonFunctions::rfts("/proc/mdstat", $buffer);
+ break;
+ case 'data':
+ CommonFunctions::rfts(APP_ROOT."/data/mdstat.txt", $buffer);
+ break;
+ default:
+ $this->global_error->addConfigError("__construct()", "PSI_PLUGIN_MDSTATUS_ACCESS");
+ break;
+ }
+ if (trim($buffer) != "") {
+ $this->_filecontent = preg_split("/\n/", $buffer, -1, PREG_SPLIT_NO_EMPTY);
+ } else {
+ $this->_filecontent = array();
+ }
+ }
+
+ /**
+ * doing all tasks to get the required informations that the plugin needs
+ * result is stored in an internal array the array is build like a tree,
+ * so that it is possible to get only a specific process with the childs
+ *
+ * @return void
+ */
+ public function execute()
+ {
+ if (empty($this->_filecontent)) {
+ return;
+ }
+ // get the supported types
+ if (preg_match('/[a-zA-Z]* : (\[([a-z0-9])*\]([ \n]))+/', $this->_filecontent[0], $res)) {
+ $parts = preg_split("/ : /", $res[0]);
+ $parts = preg_split("/ /", $parts[1]);
+ $count = 0;
+ foreach ($parts as $types) {
+ if (trim($types) != "") {
+ $this->_result['supported_types'][$count++] = substr(trim($types), 1, -1);
+ }
+ }
+ }
+ // get disks
+ if (preg_match("/^read_ahead/", $this->_filecontent[1])) {
+ $count = 2;
+ } else {
+ $count = 1;
+ }
+ $cnt_filecontent = count($this->_filecontent);
+ do {
+ $parts = preg_split("/ : /", $this->_filecontent[$count]);
+ $dev = trim($parts[0]);
+ if (count($parts) == 2) {
+ $details = preg_split('/ /', $parts[1]);
+ if (!strstr($details[0], 'inactive')) {
+ $this->_result['devices'][$dev]['level'] = $details[1];
+ } else {
+ $this->_result['devices'][$dev]['level'] = "none";
+ }
+ $this->_result['devices'][$dev]['status'] = $details[0];
+ for ($i = 2, $cnt_details = count($details); $i < $cnt_details; $i++) {
+ preg_match('/(([a-z0-9])+)(\[([0-9]+)\])(\([SF ]\))?/', trim($details[$i]), $partition);
+ if (count($partition) == 5 || count($partition) == 6) {
+ $this->_result['devices'][$dev]['partitions'][$partition[1]]['raid_index'] = substr(trim($partition[3]), 1, -1);
+ if (isset($partition[5])) {
+ $search = array("(", ")");
+ $replace = array("", "");
+ $this->_result['devices'][$dev]['partitions'][$partition[1]]['status'] = str_replace($search, $replace, trim($partition[5]));
+ } else {
+ $this->_result['devices'][$dev]['partitions'][$partition[1]]['status'] = "ok";
+ }
+ }
+ }
+ $count++;
+ $optionline = $this->_filecontent[$count - 1].$this->_filecontent[$count];
+ if (preg_match('/([^\sk]*)k chunk/', $optionline, $chunksize)) {
+ $this->_result['devices'][$dev]['chunk_size'] = $chunksize[1];
+ } else {
+ $this->_result['devices'][$dev]['chunk_size'] = -1;
+ }
+ if ($pos = strpos($optionline, "super non-persistent")) {
+ $this->_result['devices'][$dev]['pers_superblock'] = 0;
+ } else {
+ $this->_result['devices'][$dev]['pers_superblock'] = 1;
+ }
+ if ($pos = strpos($optionline, "algorithm")) {
+ $this->_result['devices'][$dev]['algorithm'] = trim(substr($optionline, $pos + 9, 2));
+ } else {
+ $this->_result['devices'][$dev]['algorithm'] = -1;
+ }
+ if (preg_match('/(\[[0-9]?\/[0-9]\])/', $optionline, $res)) {
+ $slashpos = strpos($res[0], '/');
+ $this->_result['devices'][$dev]['registered'] = substr($res[0], 1, $slashpos - 1);
+ $this->_result['devices'][$dev]['active'] = substr($res[0], $slashpos + 1, strlen($res[0]) - $slashpos - 2);
+ } else {
+ $this->_result['devices'][$dev]['registered'] = -1;
+ $this->_result['devices'][$dev]['active'] = -1;
+ }
+ if (preg_match(('/([a-z]+)( *)=( *)([0-9\.]+)%/'), $this->_filecontent[$count + 1], $res) || (preg_match(('/([a-z]+)( *)=( *)([0-9\.]+)/'), $optionline, $res))) {
+ list($this->_result['devices'][$dev]['action']['name'], $this->_result['devices'][$dev]['action']['percent']) = preg_split("/=/", str_replace("%", "", $res[0]));
+ if (preg_match(('/([a-z]*=[0-9\.]+[a-z]+)/'), $this->_filecontent[$count + 1], $res)) {
+ $time = preg_split("/=/", $res[0]);
+ list($this->_result['devices'][$dev]['action']['finish_time'], $this->_result['devices'][$dev]['action']['finish_unit']) = sscanf($time[1], '%f%s');
+ } else {
+ $this->_result['devices'][$dev]['action']['finish_time'] = -1;
+ $this->_result['devices'][$dev]['action']['finish_unit'] = -1;
+ }
+ } else {
+ $this->_result['devices'][$dev]['action']['name'] = -1;
+ $this->_result['devices'][$dev]['action']['percent'] = -1;
+ $this->_result['devices'][$dev]['action']['finish_time'] = -1;
+ $this->_result['devices'][$dev]['action']['finish_unit'] = -1;
+ }
+ } else {
+ $count++;
+ }
+ } while ($cnt_filecontent > $count);
+ $lastline = $this->_filecontent[$cnt_filecontent - 2];
+ if (strpos($lastline, "unused devices") !== false) {
+ $parts = preg_split("/:/", $lastline);
+ $search = array("<", ">");
+ $replace = array("", "");
+ $this->_result['unused_devs'] = trim(str_replace($search, $replace, $parts[1]));
+ } else {
+ $this->_result['unused_devs'] = -1;
+ }
+ }
+
+ /**
+ * generates the XML content for the plugin
+ *
+ * @return SimpleXMLObject entire XML content for the plugin
+ */
+ public function xml()
+ {
+ if (empty($this->_result)) {
+ return $this->xml->getSimpleXmlElement();
+ }
+ $hideRaids = array();
+ if (defined('PSI_PLUGIN_MDSTATUS_HIDE_RAID_DEVICES') && is_string(PSI_PLUGIN_MDSTATUS_HIDE_RAID_DEVICES)) {
+ if (preg_match(ARRAY_EXP, PSI_PLUGIN_MDSTATUS_HIDE_RAID_DEVICES)) {
+ $hideRaids = eval(PSI_PLUGIN_MDSTATUS_HIDE_RAID_DEVICES);
+ } else {
+ $hideRaids = array(PSI_PLUGIN_MDSTATUS_HIDE_RAID_DEVICES);
+ }
+ }
+ $sup = $this->xml->addChild("Supported_Types");
+ foreach ($this->_result['supported_types'] as $type) {
+ $typ = $sup->addChild("Type");
+ $typ->addAttribute("Name", $type);
+ }
+ if (isset($this->_result['devices'])) foreach ($this->_result['devices'] as $key=>$device) {
+ if (!in_array($key, $hideRaids, true)) {
+ $dev = $this->xml->addChild("Raid");
+ $dev->addAttribute("Device_Name", $key);
+ $dev->addAttribute("Level", $device["level"]);
+ $dev->addAttribute("Disk_Status", $device["status"]);
+ $dev->addAttribute("Chunk_Size", $device["chunk_size"]);
+ $dev->addAttribute("Persistend_Superblock", $device["pers_superblock"]);
+ $dev->addAttribute("Algorithm", $device["algorithm"]);
+ $dev->addAttribute("Disks_Registered", $device["registered"]);
+ $dev->addAttribute("Disks_Active", $device["active"]);
+ $action = $dev->addChild("Action");
+ $action->addAttribute("Percent", $device['action']['percent']);
+ $action->addAttribute("Name", $device['action']['name']);
+ $action->addAttribute("Time_To_Finish", $device['action']['finish_time']);
+ $action->addAttribute("Time_Unit", $device['action']['finish_unit']);
+ $disks = $dev->addChild("Disks");
+ foreach ($device['partitions'] as $diskkey=>$disk) {
+ $disktemp = $disks->addChild("Disk");
+ $disktemp->addAttribute("Name", $diskkey);
+ $disktemp->addAttribute("Status", $disk['status']);
+ $disktemp->addAttribute("Index", $disk['raid_index']);
+ }
+ }
+ }
+ if ($this->_result['unused_devs'] !== - 1) {
+ $unDev = $this->xml->addChild("Unused_Devices");
+ $unDev->addAttribute("Devices", $this->_result['unused_devs']);
+ }
+
+ return $this->xml->getSimpleXmlElement();
+ }
+}
diff --git a/sources/plugins/mdstatus/css/mdstatus.css b/sources/plugins/mdstatus/css/mdstatus.css
new file mode 100644
index 0000000..f9cd1b1
--- /dev/null
+++ b/sources/plugins/mdstatus/css/mdstatus.css
@@ -0,0 +1,14 @@
+/*
+ $Id: mdstatus.css 661 2012-08-27 11:26:39Z namiltd $
+ */
+.plugin_mdstatus_biun {
+ text-align: center;
+ margin-bottom: 5px;
+ margin-right: 20px;
+ float: left;
+ width: 64px;
+}
+
+img.plugin_mdstatus_biun {
+ margin: auto;
+}
diff --git a/sources/plugins/mdstatus/gfx/error.png b/sources/plugins/mdstatus/gfx/error.png
new file mode 100644
index 0000000..56c94f1
Binary files /dev/null and b/sources/plugins/mdstatus/gfx/error.png differ
diff --git a/sources/plugins/mdstatus/gfx/harddrivefail.png b/sources/plugins/mdstatus/gfx/harddrivefail.png
new file mode 100644
index 0000000..02f0170
Binary files /dev/null and b/sources/plugins/mdstatus/gfx/harddrivefail.png differ
diff --git a/sources/plugins/mdstatus/gfx/harddriveok.png b/sources/plugins/mdstatus/gfx/harddriveok.png
new file mode 100644
index 0000000..e9b910b
Binary files /dev/null and b/sources/plugins/mdstatus/gfx/harddriveok.png differ
diff --git a/sources/plugins/mdstatus/gfx/harddrivespare.png b/sources/plugins/mdstatus/gfx/harddrivespare.png
new file mode 100644
index 0000000..0fa4594
Binary files /dev/null and b/sources/plugins/mdstatus/gfx/harddrivespare.png differ
diff --git a/sources/plugins/mdstatus/js/mdstatus.js b/sources/plugins/mdstatus/js/mdstatus.js
new file mode 100644
index 0000000..6257579
--- /dev/null
+++ b/sources/plugins/mdstatus/js/mdstatus.js
@@ -0,0 +1,228 @@
+/***************************************************************************
+ * Copyright (C) 2008 by phpSysInfo - A PHP System Information Script *
+ * http://phpsysinfo.sourceforge.net/ *
+ * *
+ * 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. *
+ ***************************************************************************/
+//
+// $Id: mdstatus.js 679 2012-09-04 10:10:11Z namiltd $
+//
+
+/*global $, jQuery, buildBlock, genlang, createBar, plugin_translate, datetime */
+
+"use strict";
+
+//appendcss("./plugins/MDStatus/css/MDStatus.css");
+
+var mdstatus_show = false;
+
+/**
+ * get the details of the raid
+ * @param {jQuery} xml part of the plugin-XML
+ * @param {number} id id of the device
+ */
+function mdstatus_buildinfos(xml, id) {
+ var html = "", devstatus = "", devlevel = "", devchunk = 0, devsuper = 0, devalgo = 0, devactive = 0, devregis = 0, button = "";
+
+ devstatus = $(xml).attr("Disk_Status");
+ devlevel = $(xml).attr("Level");
+ devchunk = parseInt($(xml).attr("Chunk_Size"), 10);
+ devsuper = parseInt($(xml).attr("Persistent_Superblock"), 10);
+ devalgo = parseInt($(xml).attr("Algorithm"), 10);
+ devactive = parseInt($(xml).attr("Disks_Active"), 10);
+ devregis = parseInt($(xml).attr("Disks_Registered"), 10);
+ html += "" + genlang(5, true, "MDStatus") + " " + devstatus + " ";
+ html += "" + genlang(6, true, "MDStatus") + " " + devlevel + " ";
+ if (devchunk !== -1) {
+ html += "" + genlang(7, true, "MDStatus") + " " + devchunk + "K ";
+ }
+ if (devalgo !== -1) {
+ html += "" + genlang(8, true, "MDStatus") + " " + devalgo + " ";
+ }
+ if (devsuper !== -1) {
+ html += "" + genlang(9, true, "MDStatus") + " " + genlang(10, true, "MDStatus") + " ";
+ }
+ else {
+ html += "" + genlang(9, true, "MDStatus") + " " + genlang(11, true, "MDStatus") + " ";
+ }
+ if (devactive !== -1 && devregis !== -1) {
+ html += "" + genlang(12, true, "MDStatus") + " " + devregis + "/" + devactive + " ";
+ }
+ button += " " + genlang(4, true, "MDStatus") + " ";
+ button += " " + genlang(4, true, "MDStatus") + " ";
+ button += "";
+ return button;
+}
+
+/**
+ * generate a html string with the current action on the disks
+ * @param {jQuery} xml part of the plugin-XML
+ */
+function mdstatus_buildaction(xml) {
+ var html = "", name = "", time = "", tunit = "", percent = 0;
+ $("Action", xml).each(function mdstatus_getaction(id) {
+ name = $(this).attr("Name");
+ if (parseInt(name, 10) !== -1) {
+ time = $(this).attr("Time_To_Finish");
+ tunit = $(this).attr("Time_Unit");
+ percent = parseFloat($(this).attr("Percent"));
+ html += "";
+ html += genlang(13, true, "MDStatus") + ": " + name + " ";
+ html += createBar(percent);
+ html += " ";
+ html += genlang(14, true, "MDStatus") + ": " + time + " " + tunit;
+ html += "
";
+ }
+ });
+ return html;
+}
+
+/**
+ * choose the right diskdrive icon
+ * @param {jQuery} xml part of the plugin-XML
+ */
+function mdstatus_diskicon(xml) {
+ var html = "";
+ $("Disks Disk", xml).each(function mdstatus_getdisk(id) {
+ var diskstatus = "", diskname = "", img = "", alt = "";
+ html += "";
+ diskstatus = $(this).attr("Status");
+ diskname = $(this).attr("Name");
+ switch (diskstatus) {
+ case "ok":
+ img = "harddriveok.png";
+ alt = "ok";
+ break;
+ case "F":
+ img = "harddrivefail.png";
+ alt = "fail";
+ break;
+ case "S":
+ img = "harddrivespare.png";
+ alt = "spare";
+ break;
+ default:
+// alert("--" + diskstatus + "--");
+ img = "error.png";
+ alt = "error";
+ break;
+ }
+ html += "
"; //onload IE6 PNG fix
+ html += "
" + diskname + " ";
+ html += "
";
+ });
+ return html;
+}
+
+/**
+ * fill the plugin block
+ * @param {jQuery} xml plugin-XML
+ */
+function mdstatus_populate(xml) {
+ var htmltypes = "";
+
+ $("#Plugin_MDStatusTable").empty();
+ $("#Plugin_MDStatusTable").append("");
+
+ $("Plugins Plugin_MDStatus Supported_Types Type", xml).each(function mdstatus_getsupportedtypes(id) {
+// htmltypes += "" + $(this).attr("Name") + " ";
+ htmltypes += "" + $(this).attr("Name") + " ";
+ });
+ if (htmltypes.length > 0) {
+ htmltypes = "";
+ $("#Plugin_MDStatusTable").append("" + genlang(2, false, "MDStatus") + " " + htmltypes + " ");
+ mdstatus_show = true;
+ }
+
+ $("Plugins Plugin_MDStatus Raid", xml).each(function mdstatus_getdevice(id) {
+ var htmldisks = "", htmldisklist = "", topic = "", name = "", buildedaction = "";
+ name = $(this).attr("Device_Name");
+ htmldisklist += mdstatus_diskicon(this);
+ htmldisks += "";
+ htmldisks += "" + htmldisklist + " ";
+ buildedaction = mdstatus_buildaction($(this));
+ if (buildedaction) {
+ htmldisks += "" + buildedaction + " ";
+ }
+ htmldisks += "" + mdstatus_buildinfos($(this), id) + " ";
+ htmldisks += "
";
+ if (id) {
+ topic = "";
+ }
+ else {
+ topic = genlang(3, false, "MDStatus");
+ }
+ $("#Plugin_MDStatusTable").append("" + topic + " " + name + "
" + htmldisks + " ");
+ $("#sPlugin_MDStatus_Info" + id).click(function mdstatus_showinfo() {
+ $("#Plugin_MDStatus_InfoTable" + id).slideDown("slow");
+ $("#sPlugin_MDStatus_Info" + id).hide();
+ $("#hPlugin_MDStatus_Info" + id).show();
+ });
+ $("#hPlugin_MDStatus_Info" + id).click(function mdstatus_hideinfo() {
+ $("#Plugin_MDStatus_InfoTable" + id).slideUp("slow");
+ $("#hPlugin_MDStatus_Info" + id).hide();
+ $("#sPlugin_MDStatus_Info" + id).show();
+ });
+ mdstatus_show = true;
+ });
+
+ if ($("Plugins Plugin_MDStatus Unused_Devices", xml).length > 0) {
+ $("#Plugin_MDStatusTable").append("" + genlang(15, true, "MDStatus") + " " + $(this).attr("Devices") + " ");
+ mdstatus_show = true;
+ }
+
+ $("#Plugin_MDStatusTable").append(" ");
+}
+
+/**
+ * load the xml via ajax
+ */
+function mdstatus_request() {
+ $("#Reload_MDStatusTable").attr("title", "reload");
+ $.ajax({
+ url: "xml.php?plugin=MDStatus",
+ dataType: "xml",
+ error: function mdstatus_error() {
+ $.jGrowl("Error loading XML document for Plugin MDStatus");
+ },
+ success: function mdstatus_buildblock(xml) {
+ populateErrors(xml);
+ mdstatus_populate(xml);
+ if (mdstatus_show) {
+ plugin_translate("MDStatus");
+ $("#Plugin_MDStatus").show();
+ }
+ }
+ });
+}
+
+$(document).ready(function mdstatus_buildpage() {
+ var html = "";
+
+ $("#footer").before(buildBlock("MDStatus", 1, true));
+ html += " \n";
+ $("#Plugin_MDStatus").append(html);
+
+ $("#Plugin_MDStatus").css("width", "915px");
+
+ mdstatus_request();
+
+ $("#Reload_MDStatusTable").click(function mdstatus_reload(id) {
+ mdstatus_request();
+ $(this).attr("title", datetime());
+ });
+});
diff --git a/sources/plugins/mdstatus/js/mdstatus_bootstrap.js b/sources/plugins/mdstatus/js/mdstatus_bootstrap.js
new file mode 100644
index 0000000..d667567
--- /dev/null
+++ b/sources/plugins/mdstatus/js/mdstatus_bootstrap.js
@@ -0,0 +1,146 @@
+function renderPlugin_mdstatus(data) {
+
+ function raid_buildaction(data) {
+ var html = "", name = "", percent = 0;
+ if (data !== undefined) {
+ name = data['Name'];
+ if ((name !== undefined) && (parseInt(name) !== -1)) {
+ percent = Math.round(parseFloat(data['Percent']));
+ html += "" + genlang(13, true,'mdstatus') + ":" + String.fromCharCode(160) + name + "
";
+ html += '
';
+ html += genlang(14, true,'mdstatus') + ":" + String.fromCharCode(160) + data['Time_To_Finish'] + String.fromCharCode(160) + data['Time_Unit'];
+ html += "
";
+ }
+ }
+ return html;
+ }
+
+ function raid_diskicon(data) {
+ var html = "";
+ var img = "", alt = "";
+
+ html += "";
+ switch (data["Status"]) {
+ case "ok":
+ img = "harddriveok.png";
+ alt = "ok";
+ break;
+ case "F":
+ img = "harddrivefail.png";
+ alt = "fail";
+ break;
+ case "S":
+ img = "harddrivespare.png";
+ alt = "spare";
+ break;
+ case "W":
+ img = "harddrivewarn.png";
+ alt = "warning";
+ break;
+ default:
+// alert("--" + data["Status"] + "--");
+ img = "error.png";
+ alt = "error";
+ break;
+ }
+ html += "
"; //onload IE6 PNG fix
+ html += "
" + data["Name"] + " ";
+ html += "
";
+ return html;
+ }
+
+ if (data['Plugins']['Plugin_MDStatus'] !== undefined) {
+ $('#mdstatus-data').empty();
+ if (data['Plugins']['Plugin_MDStatus']['Supported_Types'] !== undefined) {
+ var stitems = items(data['Plugins']['Plugin_MDStatus']['Supported_Types']['Type']);
+ if (stitems.length > 0) {
+ var htmltypes = ""+genlang(2, false, 'mdstatus')+" ";
+ for (var i = 0; i < stitems.length ; i++) {
+ htmltypes += stitems[i]["@attributes"]["Name"] + " ";
+ }
+ htmltypes += " ";
+ $('#mdstatus-data').append(htmltypes);
+ $('#block_mdstatus').show();
+ } else {
+ $('#block_mdstatus').hide();
+ }
+ } else {
+ $('#block_mdstatus').hide();
+ }
+ var mditems = items(data['Plugins']['Plugin_MDStatus']['Raid']);
+ if (mditems.length > 0) {
+ var html = '';
+ for (var i = 0; i < mditems.length ; i++) {
+ if (i) {
+ html += "";
+ } else {
+ html += " "+genlang(3, false, 'mdstatus')+" ";
+ }
+
+ if (mditems[i]['Disks'] !== undefined) {
+ var devchunk = parseInt(mditems[i]["@attributes"]["Chunk_Size"]);
+ var devsuper = parseInt(mditems[i]["@attributes"]["Persistent_Superblock"]);
+ var devalgo = parseInt(mditems[i]["@attributes"]["Algorithm"]);
+ var devactive = parseInt(mditems[i]["@attributes"]["Disks_Active"]);
+ var devregis = parseInt(mditems[i]["@attributes"]["Disks_Registered"]);
+
+ html += "";
+ html += "";
+
+ var diskitems = items(mditems[i]['Disks']['Disk']);
+ for (var j = 0; j < diskitems.length ; j++) {
+ html += raid_diskicon(diskitems[j]["@attributes"]);
+ }
+
+ html += " ";
+ if (mditems[i]['Action'] !== undefined) {
+ var buildedaction = raid_buildaction(mditems[i]['Action']['@attributes']);
+ if (buildedaction) {
+ html += "" + buildedaction + " ";
+ }
+ }
+
+ html += "";
+ html += "";
+ html += "" + mditems[i]["@attributes"]["Device_Name"] + " ";
+ html += ""+genlang(5, true,'mdstatus')+" " + mditems[i]["@attributes"]["Disk_Status"] + " ";
+ html += ""+genlang(6, true ,'mdstatus')+" " + mditems[i]["@attributes"]["Level"] + " ";
+ if (devchunk !== -1) {
+ html += ""+genlang(7, true,'mdstatus')+" " + devchunk + "K ";
+ }
+ if (devalgo !== -1) {
+ html += ""+genlang(8, true ,'mdstatus')+" " + devalgo + " ";
+ }
+ if (devsuper !== -1) {
+ html += ""+genlang(9, true, 'mdstatus')+" available ";
+ } else {
+ html += ""+genlang(9, true, 'mdstatus')+" not available ";
+ }
+ if (devactive !== -1 && devregis !== -1) {
+ html += ""+genlang(12, true, 'mdstatus')+" " + devregis + "/" + devactive + " ";
+ }
+ html += "
";
+ html += " ";
+ html += "
";
+ }
+
+ html +=" ";
+ }
+ $('#mdstatus-data').append(html);
+
+ for (var i = 0; i < mditems.length ; i++) {
+ if (mditems[i]['Disks'] !== undefined) {
+ $('#mdstatus-'+i).treegrid({
+ initialState: 'collapsed',
+ expanderExpandedClass: 'normalicon normalicon-down',
+ expanderCollapsedClass: 'normalicon normalicon-right'
+ });
+ }
+ }
+ }
+ } else {
+ $('#block_mdstatus').hide();
+ }
+}
diff --git a/sources/plugins/mdstatus/lang/cz.xml b/sources/plugins/mdstatus/lang/cz.xml
new file mode 100644
index 0000000..949191f
--- /dev/null
+++ b/sources/plugins/mdstatus/lang/cz.xml
@@ -0,0 +1,57 @@
+
+
+
+
+
+ Stav RAIDu
+
+
+ Poodporované typy RAID
+
+
+ RAID-zaÅ™ÃzenÃ
+
+
+ DodateÄné informace
+
+
+ Stav
+
+
+ Úroveň RAIDu
+
+
+ Velikost proužku
+
+
+ Algoritmus
+
+
+ Persistentnà Superblock
+
+
+ dostupný
+
+
+ nedostupný
+
+
+ Registrovné/aktivnà disky
+
+
+ Aktuálnà Äinnost
+
+
+ ÄŒas dokonÄenÃ
+
+
+ Nevyužité disky
+
+
+ Aktualizováno
+
+
diff --git a/sources/plugins/mdstatus/lang/de.xml b/sources/plugins/mdstatus/lang/de.xml
new file mode 100644
index 0000000..8ec702d
--- /dev/null
+++ b/sources/plugins/mdstatus/lang/de.xml
@@ -0,0 +1,57 @@
+
+
+
+
+
+ RAID Status
+
+
+ Unterstützte RAID-Typen
+
+
+ RAID-Geräte
+
+
+ Zusätzliche Informationen
+
+
+ Status
+
+
+ RAID-Level
+
+
+ Blockgröße
+
+
+ Algorithmus
+
+
+ Persistenter Superblock
+
+
+ verfügbar
+
+
+ nicht verfügbar
+
+
+ Registrierte/Aktive Platten
+
+
+ Aktuelle Aktion
+
+
+ Fertig in
+
+
+ Unbenutzte Platten
+
+
+ Zuletzt aktualisiert
+
+
diff --git a/sources/plugins/mdstatus/lang/en.xml b/sources/plugins/mdstatus/lang/en.xml
new file mode 100644
index 0000000..b62734b
--- /dev/null
+++ b/sources/plugins/mdstatus/lang/en.xml
@@ -0,0 +1,57 @@
+
+
+
+
+
+ RAID Status
+
+
+ Supported RAID-Types
+
+
+ RAID-Devices
+
+
+ Additional Information
+
+
+ Status
+
+
+ RAID-Level
+
+
+ Chunk Size
+
+
+ Algorithm
+
+
+ Persistent Superblock
+
+
+ available
+
+
+ not available
+
+
+ Registered/Active Disks
+
+
+ Current Action
+
+
+ Finishing in
+
+
+ Unused Disks
+
+
+ Last refresh
+
+
diff --git a/sources/plugins/mdstatus/lang/fr.xml b/sources/plugins/mdstatus/lang/fr.xml
new file mode 100644
index 0000000..d7bf07f
--- /dev/null
+++ b/sources/plugins/mdstatus/lang/fr.xml
@@ -0,0 +1,57 @@
+
+
+
+
+
+ Statut RAID
+
+
+ Type de RAID supporté
+
+
+ Périphériques RAID
+
+
+ Informations additionnelles
+
+
+ Statut
+
+
+ Type de RAID
+
+
+ Granularité
+
+
+ Algorithme
+
+
+ Superblocs persistants
+
+
+ disponible
+
+
+ non disponible
+
+
+ Disques Enregistrés/Actives
+
+
+ Action courante
+
+
+ Temps restant
+
+
+ Disques inutilisés
+
+
+ Dernière actualisation
+
+
diff --git a/sources/plugins/mdstatus/lang/gr.xml b/sources/plugins/mdstatus/lang/gr.xml
new file mode 100644
index 0000000..454f861
--- /dev/null
+++ b/sources/plugins/mdstatus/lang/gr.xml
@@ -0,0 +1,57 @@
+
+
+
+
+
+ Κατάσταση RAID
+
+
+ ΥποστηÏιζόμενοι Ï„Ïποι RAID
+
+
+ Αλυσίδες RAID
+
+
+ Î Ïόσθετες πληÏοφοÏίες
+
+
+ Κατάσταση
+
+
+ ΤÏπος RAID
+
+
+ ΜÎγεθος Chunk
+
+
+ ΑλγόÏιθμος
+
+
+ Μόνιμο Superblock
+
+
+ διαθÎσιμο
+
+
+ μη διαθÎσιμο
+
+
+ ΔηλωμÎνοι/ΕνεÏγοί Δίσκοι
+
+
+ ΤÏÎχουσα ενÎÏγεια
+
+
+ ΟλοκληÏώνεται σε
+
+
+ ΑχÏησιμοποίητοι Δίσκοι
+
+
+ ΕνημÎÏωση
+
+
diff --git a/sources/plugins/mdstatus/lang/ro.xml b/sources/plugins/mdstatus/lang/ro.xml
new file mode 100644
index 0000000..44a9e76
--- /dev/null
+++ b/sources/plugins/mdstatus/lang/ro.xml
@@ -0,0 +1,57 @@
+
+
+
+
+
+ Stare RAID
+
+
+ Tipuri de RAID suportate
+
+
+ Dispozitive RAID
+
+
+ Informații Aditionale
+
+
+ Stare
+
+
+ Nivele RAID
+
+
+ Chunk Size
+
+
+ Algoritm
+
+
+ Superblock persistente
+
+
+ disponibil
+
+
+ indisponibil
+
+
+ ÃŽnregistrate/Discuri Active
+
+
+ Acțiune curentă
+
+
+ finisare în
+
+
+ Discuri defolosite
+
+
+ Ultimul refresh
+
+
diff --git a/sources/plugins/mdstatus/lang/ru.xml b/sources/plugins/mdstatus/lang/ru.xml
new file mode 100644
index 0000000..1e3d54d
--- /dev/null
+++ b/sources/plugins/mdstatus/lang/ru.xml
@@ -0,0 +1,57 @@
+
+
+
+
+
+ RAID СтатуÑ
+
+
+ ПоддерживаютÑÑ Ñ‚Ð¸Ð¿Ñ‹ RAID
+
+
+ RAID-УÑтройÑтва
+
+
+ Дополнительные ÑведениÑ
+
+
+ СтатуÑ
+
+
+ RAID-Уровень
+
+
+ Размер блока
+
+
+ Ðлгоритм
+
+
+ ПоÑтоÑнный Ñуперблок
+
+
+ доÑтупен
+
+
+ не доÑтупен
+
+
+ ЗарегиÑтрировано/Ðктивных ДиÑков
+
+
+ Текущее дейÑтвие
+
+
+ Окончание в
+
+
+ ÐеиÑпользуемые диÑки
+
+
+ ПоÑледнее обновление
+
+
diff --git a/sources/plugins/mdstatus/mdstatus_bootstrap.html b/sources/plugins/mdstatus/mdstatus_bootstrap.html
new file mode 100644
index 0000000..1e24812
--- /dev/null
+++ b/sources/plugins/mdstatus/mdstatus_bootstrap.html
@@ -0,0 +1,13 @@
+
diff --git a/sources/plugins/ps/class.ps.inc.php b/sources/plugins/ps/class.ps.inc.php
new file mode 100644
index 0000000..e58416d
--- /dev/null
+++ b/sources/plugins/ps/class.ps.inc.php
@@ -0,0 +1,255 @@
+
+ * @copyright 2009 phpSysInfo
+ * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License
+ * @version SVN: $Id: class.ps.inc.php 692 2012-09-08 17:12:08Z namiltd $
+ * @link http://phpsysinfo.sourceforge.net
+ */
+ /**
+ * process Plugin, which displays all running processes
+ * a simple tree view which is filled with the running processes which are determined by
+ * calling the "ps" command line utility, another way is to provide
+ * a file with the output of the ps utility, so there is no need to run a execute by the
+ * webserver, the format of the command is written down in the phpsysinfo.ini file, where also
+ * the method of getting the information is configured
+ *
+ * @category PHP
+ * @package PSI_Plugin_PS
+ * @author Michael Cramer
+ * @copyright 2009 phpSysInfo
+ * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License
+ * @version Release: 3.0
+ * @link http://phpsysinfo.sourceforge.net
+ */
+class PS extends PSI_Plugin
+{
+ /**
+ * variable, which holds the content of the command
+ * @var array
+ */
+ private $_filecontent = array();
+ /**
+ * variable, which holds the result before the xml is generated out of this array
+ * @var array
+ */
+ private $_result = array();
+ /**
+ * read the data into an internal array and also call the parent constructor
+ *
+ * @param String $enc encoding
+ */
+ public function __construct($enc)
+ {
+ parent::__construct(__CLASS__, $enc);
+ switch (strtolower(PSI_PLUGIN_PS_ACCESS)) {
+ case 'command':
+ if (PSI_OS == 'WINNT') {
+ try {
+ $objLocator = new COM("WbemScripting.SWbemLocator");
+ $wmi = $objLocator->ConnectServer();
+ $os_wmi = $wmi->InstancesOf('Win32_OperatingSystem');
+ foreach ($os_wmi as $os) {
+ $memtotal = $os->TotalVisibleMemorySize * 1024;
+ }
+ $process_wmi = $wmi->InstancesOf('Win32_Process');
+ foreach ($process_wmi as $process) {
+ if (strlen(trim($process->CommandLine)) > 0) {
+ $ps = trim($process->CommandLine);
+ } else {
+ $ps = trim($process->Caption);
+ }
+ if (trim($process->ProcessId) != 0) {
+ $memusage = round(trim($process->WorkingSetSize) * 100 / $memtotal, 1);
+ //ParentProcessId
+ //Unique identifier of the process that creates a process. Process identifier numbers are reused, so they
+ //only identify a process for the lifetime of that process. It is possible that the process identified by
+ //ParentProcessId is terminated, so ParentProcessId may not refer to a running process. It is also
+ //possible that ParentProcessId incorrectly refers to a process that reuses a process identifier. You can
+ //use the CreationDate property to determine whether the specified parent was created after the process
+ //represented by this Win32_Process instance was created.
+ //=> subtrees of processes may be missing (WHAT TODO?!?)
+ $this->_filecontent[] = trim($process->ProcessId)." ".trim($process->ParentProcessId)." ".$memusage." ".$ps;
+ }
+ }
+ } catch (Exception $e) {
+ }
+ } else {
+ CommonFunctions::executeProgram("ps", "axo pid,ppid,pmem,args", $buffer, PSI_DEBUG);
+ if (((PSI_OS == 'Linux') || (PSI_OS == 'Android')) && (!preg_match("/^[^\n]+\n\s*\d+\s+\d+\s+[\d\.]+\s+.+/", $buffer))) { //alternative method if no data
+ if (CommonFunctions::rfts('/proc/meminfo', $mbuf)) {
+ $bufe = preg_split("/\n/", $mbuf, -1, PREG_SPLIT_NO_EMPTY);
+ $totalmem = 0;
+ foreach ($bufe as $buf) {
+ if (preg_match('/^MemTotal:\s+(.*)\s*kB/i', $buf, $ar_buf)) {
+ $totalmem = $ar_buf[1];
+ break;
+ }
+ }
+ $buffer = " PID PPID %MEM COMMAND\n";
+
+ $processlist = glob('/proc/*/status', GLOB_NOSORT);
+ if (($total = count($processlist)) > 0) {
+ natsort($processlist); //first sort
+ $prosess = array();
+ foreach ($processlist as $processitem) { //second sort
+ $process[] = $processitem;
+ }
+
+ $buf = "";
+ for ($i = 0; $i < $total; $i++) {
+ if (CommonFunctions::rfts($process[$i], $buf, 0, 4096, false)) {
+
+ if (($totalmem != 0) && (preg_match('/^VmRSS:\s+(\d+)\s+kB/m', $buf, $tmppmem))) {
+ $pmem = round(100 * $tmppmem[1] / $totalmem, 1);
+ } else {
+ $pmem = 0;
+ }
+
+ $name = null;
+ if (CommonFunctions::rfts(substr($process[$i], 0, strlen($process[$i])-6)."cmdline", $namebuf, 0, 4096, false)) {
+ $name = str_replace(chr(0), ' ', trim($namebuf));
+ }
+ if (preg_match('/^Pid:\s+(\d+)/m', $buf, $tmppid) &&
+ preg_match('/^PPid:\s+(\d+)/m', $buf, $tmpppid) &&
+ preg_match('/^Name:\s+(.+)/m', $buf, $tmpargs)) {
+ $pid = $tmppid[1];
+ $ppid = $tmpppid[1];
+ $args = $tmpargs[1];
+ if ($name !== null) {
+ if ($name !== "") {
+ $args = $name;
+ } else {
+ $args = "[".$args."]";
+ }
+ }
+ $buffer .= $pid." ".$ppid." ".$pmem." ".$args."\n";
+ }
+
+ }
+ }
+ }
+ }
+ }
+ }
+ break;
+ case 'data':
+ CommonFunctions::rfts(APP_ROOT."/data/ps.txt", $buffer);
+ break;
+ default:
+ $this->global_error->addConfigError("__construct()", "PSI_PLUGIN_PS_ACCESS");
+ break;
+ }
+ if (PSI_OS != 'WINNT') {
+ if (trim($buffer) != "") {
+ $this->_filecontent = preg_split("/\n/", $buffer, -1, PREG_SPLIT_NO_EMPTY);
+ unset($this->_filecontent[0]);
+ } else {
+ $this->_filecontent = array();
+ }
+ }
+ }
+ /**
+ * doing all tasks to get the required informations that the plugin needs
+ * result is stored in an internal array the array is build like a tree,
+ * so that it is possible to get only a specific process with the childs
+ *
+ * @return void
+ */
+ public function execute()
+ {
+ if (empty($this->_filecontent)) {
+ return;
+ }
+ $items = array();
+ foreach ($this->_filecontent as $roworig) {
+ $row = preg_split("/[\s]+/", trim($roworig), 4);
+ if (count($row) != 4) {
+ break;
+ }
+ foreach ($row as $key=>$val) {
+ $items[$row[0]][$key] = $val;
+ }
+ if ($row[1] !== $row[0]) {
+ $items[$row[1]]['childs'][$row[0]] = &$items[$row[0]];
+ }
+ }
+ foreach ($items as $item) { //find zombie
+ if (!isset($item[0])) {
+ foreach ($item["childs"] as $subitem) {
+ $zombie = $subitem[1];
+ if ($zombie != 0) {
+ $items[$zombie]["0"] = $zombie;
+ $items[$zombie]["1"] = "0";
+ $items[$zombie]["2"] = "0";
+ $items[$zombie]["3"] = "unknown";
+ $items[0]['childs'][$zombie] = &$items[$zombie];
+ }
+ break; //first is sufficient
+ }
+ }
+ }
+ if (isset($items[0])) {
+ $this->_result = $items[0];
+ } else {
+ $_result = array();
+ }
+ }
+ /**
+ * generates the XML content for the plugin
+ *
+ * @return SimpleXMLElement entire XML content for the plugin
+ */
+ public function xml()
+ {
+ if ($this->_result) {
+ $positions = array(0=>0);
+ $this->_addchild($this->_result['childs'], $this->xml, $positions);
+ }
+
+ return $this->xml->getSimpleXmlElement();
+ }
+ /**
+ * recursive function to allow appending child processes to a parent process
+ *
+ * @param Array $child part of the array which should be appended to the XML
+ * @param SimpleXMLExtended $xml XML-Object to which the array content is appended
+ * @param Array &$positions array with parent positions in xml structure
+ *
+ * @return SimpleXMLExtended Object with the appended array content
+ */
+ private function _addchild($child, SimpleXMLExtended $xml, &$positions)
+ {
+ foreach ($child as $key=>$value) {
+ $xmlnode = $xml->addChild("Process");
+ if (isset($value[0])) {
+ array_push($positions, $value[0]);
+ $xmlnode->addAttribute('PID', $value[0]);
+ $parentid = array_search($value[1], $positions);
+ $xmlnode->addAttribute('ParentID', $parentid);
+ $xmlnode->addAttribute('PPID', $value[1]);
+ $xmlnode->addAttribute('MemoryUsage', $value[2]);
+ $xmlnode->addAttribute('Name', $value[3]);
+ if (PSI_OS !== 'WINNT') {
+ if ($parentid === 1) {
+ $xmlnode->addAttribute('Expanded', 0);
+ }
+ if (defined('PSI_PLUGIN_PS_SHOW_KTHREADD_EXPANDED') && (PSI_PLUGIN_PS_SHOW_KTHREADD_EXPANDED === false) && ($value[3] === "[kthreadd]")) {
+ $xmlnode->addAttribute('Expanded', 0);
+ }
+ }
+ }
+ if (isset($value['childs'])) {
+ $this->_addChild($value['childs'], $xml, $positions);
+ }
+ }
+
+ return $xml;
+ }
+}
diff --git a/sources/plugins/ps/js/ps.js b/sources/plugins/ps/js/ps.js
new file mode 100644
index 0000000..b99f9b7
--- /dev/null
+++ b/sources/plugins/ps/js/ps.js
@@ -0,0 +1,121 @@
+/***************************************************************************
+ * Copyright (C) 2008 by phpSysInfo - A PHP System Information Script *
+ * http://phpsysinfo.sourceforge.net/ *
+ * *
+ * 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. *
+ ***************************************************************************/
+//
+// $Id: ps.js 661 2012-08-27 11:26:39Z namiltd $
+//
+
+/*global $, jQuery, buildBlock, datetime, plugin_translate, createBar, genlang */
+
+"use strict";
+
+var ps_show = false;
+
+/**
+ * build the table where content is inserted
+ * @param {jQuery} xml plugin-XML
+ */
+function ps_buildTable(xml) {
+ var html = "", tree = [], closed = [2];
+
+ $("#Plugin_PS #Plugin_PSTable").remove();
+
+ html += " \n";
+ html += " \n";
+ html += " \n";
+ html += " " + genlang(3, false, "PS") + " \n";
+ html += " " + genlang(4, false, "PS") + " \n";
+ html += " " + genlang(5, false, "PS") + " \n";
+ html += " " + genlang(6, false, "PS") + " \n";
+ html += " \n";
+ html += " \n";
+ html += " \n";
+
+ $("Plugins Plugin_PS Process", xml).each(function ps_getprocess(id) {
+ var close = 0, pid = 0, ppid = 0, name = "", percent = 0, parentId = 0, expanded = 0;
+ name = $(this).attr("Name");
+ parentId = parseInt($(this).attr("ParentID"), 10);
+ pid = parseInt($(this).attr("PID"), 10);
+ ppid = parseInt($(this).attr("PPID"), 10);
+ percent = parseInt($(this).attr("MemoryUsage"), 10);
+ expanded = parseInt($(this).attr("Expanded"), 10);
+
+ html += " " + name + " " + pid + " " + ppid + " " + createBar(percent) + " \n";
+ close = tree.push(parentId);
+ if (!isNaN(expanded) && (expanded === 0)) {
+ closed.push(close);
+ }
+ ps_show = true;
+ });
+
+ html += " \n";
+ html += "
\n";
+
+ $("#Plugin_PS").append(html);
+
+ $("#Plugin_PSTable").jqTreeTable(tree, {
+ openImg: "./gfx/treeTable/tv-collapsable.gif",
+ shutImg: "./gfx/treeTable/tv-expandable.gif",
+ leafImg: "./gfx/treeTable/tv-item.gif",
+ lastOpenImg: "./gfx/treeTable/tv-collapsable-last.gif",
+ lastShutImg: "./gfx/treeTable/tv-expandable-last.gif",
+ lastLeafImg: "./gfx/treeTable/tv-item-last.gif",
+ vertLineImg: "./gfx/treeTable/vertline.gif",
+ blankImg: "./gfx/treeTable/blank.gif",
+ collapse: closed,
+ column: 0,
+ striped: true,
+ highlight: false,
+ state: false
+ });
+}
+
+/**
+ * load the xml via ajax
+ */
+function ps_request() {
+ $("#Reload_PSTable").attr("title", "reload");
+ $.ajax({
+ url: "xml.php?plugin=PS",
+ dataType: "xml",
+ error: function ps_error() {
+ $.jGrowl("Error loading XML document for Plugin PS!");
+ },
+ success: function ps_buildblock(xml) {
+ populateErrors(xml);
+ ps_buildTable(xml);
+ if (ps_show) {
+ plugin_translate("PS");
+ $("#Plugin_PS").show();
+ }
+ }
+ });
+}
+
+$(document).ready(function ps_buildpage() {
+ $("#footer").before(buildBlock("PS", 1, true));
+ $("#Plugin_PS").css("width", "915px");
+
+ ps_request();
+
+ $("#Reload_PSTable").click(function ps_reload(id) {
+ ps_request();
+ $(this).attr("title", datetime());
+ });
+});
diff --git a/sources/plugins/ps/js/ps_bootstrap.js b/sources/plugins/ps/js/ps_bootstrap.js
new file mode 100644
index 0000000..0b01f0f
--- /dev/null
+++ b/sources/plugins/ps/js/ps_bootstrap.js
@@ -0,0 +1,60 @@
+function renderPlugin_ps(data) {
+
+ var directives = {
+ MemoryUsage: {
+ html: function () {
+ return '' + this["MemoryUsage"] + '%
';
+ }
+ },
+ Name: {
+ html: function () {
+ return this["Name"];
+ }
+ }
+ };
+
+ if (data['Plugins']['Plugin_PS'] !== undefined) {
+ var psitems = items(data['Plugins']['Plugin_PS']['Process']);
+ if (psitems.length > 0) {
+
+ var html = "", ps_item = [], expanded = 1;
+ for (var i = 0; i < psitems.length ; i++) {
+ ps_item = psitems[i]["@attributes"];
+
+ if (ps_item["ParentID"]==="0") {
+ html+="";
+ } else {
+ html+=" ";
+ }
+ html+=" ";
+ html+=" ";
+ html+=" ";
+ html+=" ";
+ html+=" ";
+ }
+
+ $("#ps-data").empty().append(html);
+
+ $('#ps').treegrid({
+ initialState: 'expanded',
+ expanderExpandedClass: 'normalicon normalicon-down',
+ expanderCollapsedClass: 'normalicon normalicon-right'
+ });
+
+ for (var i = 0; i < psitems.length ; i++) {
+ ps_item = psitems[i]["@attributes"];
+ $('#ps-'+(i+1)).render(ps_item, directives);
+ expanded = ps_item["Expanded"];
+ if ((expanded !== undefined) && (expanded === "0")) {
+ $('#ps-'+(i+1)).treegrid('collapse');
+ }
+ }
+ $('#block_ps').show();
+ } else {
+ $('#block_ps').hide();
+ }
+ } else {
+ $('#block_ps').hide();
+ }
+}
diff --git a/sources/plugins/ps/lang/cz.xml b/sources/plugins/ps/lang/cz.xml
new file mode 100644
index 0000000..b6b3f55
--- /dev/null
+++ b/sources/plugins/ps/lang/cz.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+ Procesy
+
+
+ Aktualizováno
+
+
+ PÅ™Ãkaz
+
+
+ PID
+
+
+ RodiÄovský PID
+
+
+ Spotřeba paměti
+
+
diff --git a/sources/plugins/ps/lang/de.xml b/sources/plugins/ps/lang/de.xml
new file mode 100644
index 0000000..961132d
--- /dev/null
+++ b/sources/plugins/ps/lang/de.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+ Prozess Status
+
+
+ Letzte Aktualisierung
+
+
+ Befehl
+
+
+ Prozess ID
+
+
+ Eltern ID
+
+
+ Speichernutzung
+
+
diff --git a/sources/plugins/ps/lang/en.xml b/sources/plugins/ps/lang/en.xml
new file mode 100644
index 0000000..a021789
--- /dev/null
+++ b/sources/plugins/ps/lang/en.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+ Process Status
+
+
+ Last refresh
+
+
+ Command
+
+
+ Process ID
+
+
+ Parent ID
+
+
+ Memory Usage
+
+
diff --git a/sources/plugins/ps/lang/fr.xml b/sources/plugins/ps/lang/fr.xml
new file mode 100644
index 0000000..40d2efe
--- /dev/null
+++ b/sources/plugins/ps/lang/fr.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+ Etat des processus
+
+
+ Dernière actualisation
+
+
+ Commande
+
+
+ ID processus
+
+
+ ID processus père
+
+
+ Utilisation mémoire
+
+
diff --git a/sources/plugins/ps/lang/gr.xml b/sources/plugins/ps/lang/gr.xml
new file mode 100644
index 0000000..1a924e8
--- /dev/null
+++ b/sources/plugins/ps/lang/gr.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+ ΔιεÏγασίες Συστήματος
+
+
+ ΕνημÎÏωση
+
+
+ Εντολή
+
+
+ ID ΔιεÏγασίας
+
+
+ ID ΚÏÏιας ΔιεÏγασίας
+
+
+ ΧÏήση Μνήμης
+
+
diff --git a/sources/plugins/ps/lang/pl.xml b/sources/plugins/ps/lang/pl.xml
new file mode 100644
index 0000000..4787fa7
--- /dev/null
+++ b/sources/plugins/ps/lang/pl.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+ Status Procesów
+
+
+ Ostatnie odświeżenie
+
+
+ Polecenie
+
+
+ PID
+
+
+ PID rodzica
+
+
+ Wykorzystanie pamięci
+
+
diff --git a/sources/plugins/ps/lang/ro.xml b/sources/plugins/ps/lang/ro.xml
new file mode 100644
index 0000000..cd34c72
--- /dev/null
+++ b/sources/plugins/ps/lang/ro.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+ Stare proces
+
+
+ Ultimul refresh
+
+
+ Comanda
+
+
+ ID Proces
+
+
+ ID Parinte
+
+
+ Utilizare Memorie
+
+
diff --git a/sources/plugins/ps/lang/ru.xml b/sources/plugins/ps/lang/ru.xml
new file mode 100644
index 0000000..cfe191e
--- /dev/null
+++ b/sources/plugins/ps/lang/ru.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+ Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð¿Ñ€Ð¾Ñ†ÐµÑÑов
+
+
+ ПоÑледнее обновление
+
+
+ Команда
+
+
+ ID процеÑÑа
+
+
+ ID родителÑ
+
+
+ ИÑпользовано памÑти
+
+
diff --git a/sources/plugins/ps/ps_bootstrap.html b/sources/plugins/ps/ps_bootstrap.html
new file mode 100644
index 0000000..aa07d07
--- /dev/null
+++ b/sources/plugins/ps/ps_bootstrap.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+ Command
+ Process ID
+ Parent ID
+ Memory Usage
+
+
+
+
+
+
+
+
diff --git a/sources/plugins/psstatus/class.psstatus.inc.php b/sources/plugins/psstatus/class.psstatus.inc.php
new file mode 100644
index 0000000..500db1a
--- /dev/null
+++ b/sources/plugins/psstatus/class.psstatus.inc.php
@@ -0,0 +1,179 @@
+
+ * @copyright 2009 phpSysInfo
+ * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License
+ * @version SVN: $Id: class.psstatus.inc.php 692 2012-09-08 17:12:08Z namiltd $
+ * @link http://phpsysinfo.sourceforge.net
+ */
+ /**
+ * process Plugin, which displays the status of configured processes
+ * a simple view which shows a process name and the status
+ * status determined by calling the "pidof" command line utility, another way is to provide
+ * a file with the output of the pidof utility, so there is no need to run a executeable by the
+ * webserver, the format of the command is written down in the phpsysinfo.ini file, where also
+ * the method of getting the information is configured
+ * processes that should be checked are also defined in phpsysinfo.ini
+ *
+ * @category PHP
+ * @package PSI_Plugin_PSStatus
+ * @author Michael Cramer
+ * @copyright 2009 phpSysInfo
+ * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License
+ * @version Release: 3.0
+ * @link http://phpsysinfo.sourceforge.net
+ */
+class PSStatus extends PSI_Plugin
+{
+ /**
+ * variable, which holds the content of the command
+ * @var array
+ */
+ private $_filecontent = array();
+
+ /**
+ * variable, which holds the result before the xml is generated out of this array
+ * @var array
+ */
+ private $_result = array();
+
+ /**
+ * read the data into an internal array and also call the parent constructor
+ *
+ * @param String $enc target encoding
+ */
+ public function __construct($enc)
+ {
+ parent::__construct(__CLASS__, $enc);
+ switch (strtolower(PSI_PLUGIN_PSSTATUS_ACCESS)) {
+ case 'command':
+ if (PSI_OS == 'WINNT') {
+ try {
+ $objLocator = new COM("WbemScripting.SWbemLocator");
+ $wmi = $objLocator->ConnectServer();
+ $process_wmi = $wmi->InstancesOf('Win32_Process');
+ foreach ($process_wmi as $process) {
+ $this->_filecontent[] = array(strtolower(trim($process->Caption)), trim($process->ProcessId));
+ }
+ } catch (Exception $e) {
+ }
+ } else {
+ if (defined('PSI_PLUGIN_PSSTATUS_PROCESSES') && is_string(PSI_PLUGIN_PSSTATUS_PROCESSES)) {
+ if (preg_match(ARRAY_EXP, PSI_PLUGIN_PSSTATUS_PROCESSES)) {
+ $processes = eval(PSI_PLUGIN_PSSTATUS_PROCESSES);
+ } else {
+ $processes = array(PSI_PLUGIN_PSSTATUS_PROCESSES);
+ }
+ if (defined('PSI_PLUGIN_PSSTATUS_USE_REGEX') && PSI_PLUGIN_PSSTATUS_USE_REGEX === true) {
+ foreach ($processes as $process) {
+ CommonFunctions::executeProgram("pgrep", "-n -x ".$process, $buffer, PSI_DEBUG);
+ if (strlen($buffer) > 0) {
+ $this->_filecontent[] = array($process, $buffer);
+ }
+ }
+ } else {
+ foreach ($processes as $process) {
+ CommonFunctions::executeProgram("pidof", "-s ".$process, $buffer, PSI_DEBUG);
+ if (strlen($buffer) > 0) {
+ $this->_filecontent[] = array($process, $buffer);
+ }
+ }
+ }
+ }
+ }
+ break;
+ case 'data':
+ CommonFunctions::rfts(APP_ROOT."/data/psstatus.txt", $buffer);
+ $processes = preg_split("/\n/", $buffer, -1, PREG_SPLIT_NO_EMPTY);
+ foreach ($processes as $process) {
+ $ps = preg_split("/[\s]?\|[\s]?/", $process, -1, PREG_SPLIT_NO_EMPTY);
+ if (count($ps) == 2) {
+ $this->_filecontent[] = array(trim($ps[0]), trim($ps[1]));
+ }
+ }
+ break;
+ default:
+ $this->global_error->addError("switch(PSI_PLUGIN_PSSTATUS_ACCESS)", "Bad psstatus configuration in phpsysinfo.ini");
+ break;
+ }
+ }
+
+ /**
+ * doing all tasks to get the required informations that the plugin needs
+ * result is stored in an internal array the array is build like a tree,
+ * so that it is possible to get only a specific process with the childs
+ *
+ * @return void
+ */
+ public function execute()
+ {
+ if (empty($this->_filecontent)) {
+ return;
+ }
+ if (defined('PSI_PLUGIN_PSSTATUS_PROCESSES') && is_string(PSI_PLUGIN_PSSTATUS_PROCESSES)) {
+ if (preg_match(ARRAY_EXP, PSI_PLUGIN_PSSTATUS_PROCESSES)) {
+ $processes = eval(PSI_PLUGIN_PSSTATUS_PROCESSES);
+ } else {
+ $processes = array(PSI_PLUGIN_PSSTATUS_PROCESSES);
+ }
+ if ((PSI_OS == 'WINNT') && (strtolower(PSI_PLUGIN_PSSTATUS_ACCESS) == 'command')) {
+ foreach ($processes as $process) {
+ if ($this->_recursiveinarray(strtolower($process), $this->_filecontent)) {
+ $this->_result[] = array($process, true);
+ } else {
+ $this->_result[] = array($process, false);
+ }
+ }
+ } else {
+ foreach ($processes as $process) {
+ if ($this->_recursiveinarray($process, $this->_filecontent)) {
+ $this->_result[] = array($process, true);
+ } else {
+ $this->_result[] = array($process, false);
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * generates the XML content for the plugin
+ *
+ * @return SimpleXMLElement entire XML content for the plugin
+ */
+ public function xml()
+ {
+ foreach ($this->_result as $ps) {
+ $xmlps = $this->xml->addChild("Process");
+ $xmlps->addAttribute("Name", $ps[0]);
+ $xmlps->addAttribute("Status", $ps[1] ? 1 : 0);
+ }
+
+ return $this->xml->getSimpleXmlElement();
+ }
+
+ /**
+ * checks an array recursive if an value is in, extended version of in_array()
+ *
+ * @param mixed $needle what to find
+ * @param array $haystack where to find
+ *
+ * @return boolean true - found false - not found
+ */
+ private function _recursiveinarray($needle, $haystack)
+ {
+ foreach ($haystack as $stalk) {
+ if ($needle == $stalk || (is_array($stalk) && $this->_recursiveinarray($needle, $stalk))) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+}
diff --git a/sources/plugins/psstatus/css/psstatus.css b/sources/plugins/psstatus/css/psstatus.css
new file mode 100644
index 0000000..239656a
--- /dev/null
+++ b/sources/plugins/psstatus/css/psstatus.css
@@ -0,0 +1,6 @@
+/*
+ $Id: psstatus.css 661 2012-08-27 11:26:39Z namiltd $
+ */
+#plugin_psstatusTable thead tr .header {
+ cursor: pointer;
+}
diff --git a/sources/plugins/psstatus/gfx/offline.gif b/sources/plugins/psstatus/gfx/offline.gif
new file mode 100644
index 0000000..6cb73fb
Binary files /dev/null and b/sources/plugins/psstatus/gfx/offline.gif differ
diff --git a/sources/plugins/psstatus/gfx/online.gif b/sources/plugins/psstatus/gfx/online.gif
new file mode 100644
index 0000000..2a72a4a
Binary files /dev/null and b/sources/plugins/psstatus/gfx/online.gif differ
diff --git a/sources/plugins/psstatus/js/psstatus.js b/sources/plugins/psstatus/js/psstatus.js
new file mode 100644
index 0000000..82c1692
--- /dev/null
+++ b/sources/plugins/psstatus/js/psstatus.js
@@ -0,0 +1,125 @@
+/***************************************************************************
+ * Copyright (C) 2008 by phpSysInfo - A PHP System Information Script *
+ * http://phpsysinfo.sourceforge.net/ *
+ * *
+ * 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. *
+ ***************************************************************************/
+//
+// $Id: psstatus.js 679 2012-09-04 10:10:11Z namiltd $
+//
+
+/*global $, jQuery, buildBlock, datetime, plugin_translate, genlang */
+
+"use strict";
+
+var psstatus_show = false, psstatus_table;
+
+//appendcss("./plugins/PSStatus/css/PSStatus.css");
+
+/**
+ * insert content into table
+ * @param {jQuery} xml plugin-XML
+ */
+function psstatus_populate(xml) {
+ var name = "", status = 0, state = "";
+
+ psstatus_table.fnClearTable();
+
+ $("Plugins Plugin_PSStatus Process", xml).each(function psstatus_getprocess(idp) {
+ name = $(this).attr("Name");
+ status = parseInt($(this).attr("Status"), 10);
+ if (!isNaN(status) && (status === 1)) {
+ state = "" + status.toString() + " ";
+ }
+ else {
+ state = "" + status.toString() + " ";
+ }
+ psstatus_table.fnAddData(["" + name + " " + name, state]);
+ psstatus_show = true;
+ });
+}
+
+/**
+ * fill the plugin block with table structure
+ */
+function psstatus_buildTable() {
+ var html = "";
+
+ html += "\n";
+ html += " \n";
+ html += " \n";
+ html += " " + genlang(3, false, "PSStatus") + " \n";
+ html += " " + genlang(4, false, "PSStatus") + " \n";
+ html += " \n";
+ html += " \n";
+ html += " \n";
+ html += " \n";
+ html += "
\n";
+
+ $("#Plugin_PSStatus").append(html);
+
+ psstatus_table = $("#Plugin_PSStatusTable").dataTable({
+ "bPaginate": false,
+ "bLengthChange": false,
+ "bFilter": false,
+ "bSort": true,
+ "bInfo": false,
+ "bProcessing": true,
+ "bAutoWidth": false,
+ "bStateSave": true,
+ "aoColumns": [{
+ "sType": 'span-string'
+ }, {
+ "sType": 'span-number'
+ }]
+ });
+}
+
+/**
+ * load the xml via ajax
+ */
+function psstatus_request() {
+ $("#Reload_PSStatusTable").attr("title", "reload");
+ $.ajax({
+ url: "xml.php?plugin=PSStatus",
+ dataType: "xml",
+ error: function psstatus_error() {
+ $.jGrowl("Error loading XML document for Plugin PSStatus!");
+ },
+ success: function psstatus_buildblock(xml) {
+ populateErrors(xml);
+ psstatus_populate(xml);
+ if (psstatus_show) {
+ plugin_translate("PSStatus");
+ $("#Plugin_PSStatus").show();
+ }
+ }
+ });
+}
+
+$(document).ready(function psstatus_buildpage() {
+ $("#footer").before(buildBlock("PSStatus", 1, true));
+ $("#Plugin_PSStatus").css("width", "451px");
+
+ psstatus_buildTable();
+
+ psstatus_request();
+
+ $("#Reload_PSStatusTable").click(function psstatus_reload(id) {
+ psstatus_request();
+ $(this).attr("title", datetime());
+ });
+});
diff --git a/sources/plugins/psstatus/js/psstatus_bootstrap.js b/sources/plugins/psstatus/js/psstatus_bootstrap.js
new file mode 100644
index 0000000..ea9f240
--- /dev/null
+++ b/sources/plugins/psstatus/js/psstatus_bootstrap.js
@@ -0,0 +1,27 @@
+function renderPlugin_psstatus(data) {
+
+ var directives = {
+ Status: {
+ text: function () {
+ return (this['Status'] === "1") ? "ON" : "OFF";
+ }
+ }
+ };
+
+ if (data['Plugins']['Plugin_PSStatus'] !== undefined) {
+ var psitems = items(data['Plugins']['Plugin_PSStatus']['Process']);
+ if (psitems.length > 0) {
+ var ps_memory = [];
+ ps_memory.push_attrs(psitems);
+ $('#psstatus-data').render(ps_memory, directives);
+ $('#psstatus_Name').removeClass("sorttable_sorted"); // reset sort order
+ sorttable.innerSortFunction.apply($('#psstatus_Name')[0], []);
+
+ $('#block_psstatus').show();
+ } else {
+ $('#block_psstatus').hide();
+ }
+ } else {
+ $('#block_psstatus').hide();
+ }
+}
diff --git a/sources/plugins/psstatus/lang/cz.xml b/sources/plugins/psstatus/lang/cz.xml
new file mode 100644
index 0000000..fb8da10
--- /dev/null
+++ b/sources/plugins/psstatus/lang/cz.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+ Stav procesů
+
+
+ Aktualizováno
+
+
+ Název
+
+
+ Stav
+
+
diff --git a/sources/plugins/psstatus/lang/de.xml b/sources/plugins/psstatus/lang/de.xml
new file mode 100644
index 0000000..13ddde5
--- /dev/null
+++ b/sources/plugins/psstatus/lang/de.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+ Prozess Status
+
+
+ Letzte Aktualisierung
+
+
+ Name
+
+
+ Status
+
+
diff --git a/sources/plugins/psstatus/lang/en.xml b/sources/plugins/psstatus/lang/en.xml
new file mode 100644
index 0000000..c32fdf5
--- /dev/null
+++ b/sources/plugins/psstatus/lang/en.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+ Process Status
+
+
+ Last refresh
+
+
+ Name
+
+
+ Status
+
+
diff --git a/sources/plugins/psstatus/lang/fr.xml b/sources/plugins/psstatus/lang/fr.xml
new file mode 100644
index 0000000..a598e06
--- /dev/null
+++ b/sources/plugins/psstatus/lang/fr.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+ Etat des processus
+
+
+ Dernière actualisation
+
+
+ Nom
+
+
+ Etat
+
+
diff --git a/sources/plugins/psstatus/lang/gr.xml b/sources/plugins/psstatus/lang/gr.xml
new file mode 100644
index 0000000..410f27e
--- /dev/null
+++ b/sources/plugins/psstatus/lang/gr.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+ Κατάσταση ΚÏίσιμων ΔιεÏγασιών
+
+
+ ΕνημÎÏωση
+
+
+ ΔιεÏγασία
+
+
+ Κατάσταση
+
+
diff --git a/sources/plugins/psstatus/lang/pl.xml b/sources/plugins/psstatus/lang/pl.xml
new file mode 100644
index 0000000..3a1c79d
--- /dev/null
+++ b/sources/plugins/psstatus/lang/pl.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+ Status Procesów
+
+
+ Ostatnie odświeżenie
+
+
+ Nazwa
+
+
+ Status
+
+
diff --git a/sources/plugins/psstatus/lang/ro.xml b/sources/plugins/psstatus/lang/ro.xml
new file mode 100644
index 0000000..67c752b
--- /dev/null
+++ b/sources/plugins/psstatus/lang/ro.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+ Stare proces
+
+
+ Ultimul refresh
+
+
+ Nume
+
+
+ Stare
+
+
diff --git a/sources/plugins/psstatus/lang/ru.xml b/sources/plugins/psstatus/lang/ru.xml
new file mode 100644
index 0000000..1afe895
--- /dev/null
+++ b/sources/plugins/psstatus/lang/ru.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+ Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ñлужб
+
+
+ ПоÑледнее обновление
+
+
+ Ð˜Ð¼Ñ Ñлужбы
+
+
+ СтатуÑ
+
+
diff --git a/sources/plugins/psstatus/psstatus_bootstrap.html b/sources/plugins/psstatus/psstatus_bootstrap.html
new file mode 100644
index 0000000..704bce1
--- /dev/null
+++ b/sources/plugins/psstatus/psstatus_bootstrap.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+ Name
+ Status
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sources/plugins/quotas/class.quotas.inc.php b/sources/plugins/quotas/class.quotas.inc.php
new file mode 100644
index 0000000..bde6fa4
--- /dev/null
+++ b/sources/plugins/quotas/class.quotas.inc.php
@@ -0,0 +1,132 @@
+
+ * @copyright 2009 phpSysInfo
+ * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License
+ * @version SVN: $Id: class.quotas.inc.php 661 2012-08-27 11:26:39Z namiltd $
+ * @link http://phpsysinfo.sourceforge.net
+ */
+ /**
+ * Quotas Plugin, which displays all quotas on the machine
+ * display all quotas in a sortable table with the current values which are determined by
+ * calling the "repquota" command line utility, another way is to provide
+ * a file with the output of the repquota utility, so there is no need to run a execute by the
+ * webserver, the format of the command is written down in the phpsysinfo.ini file, where also
+ * the method of getting the information is configured
+ *
+ * @category PHP
+ * @package PSI_Plugin_Quotas
+ * @author Michael Cramer
+ * @copyright 2009 phpSysInfo
+ * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License
+ * @version Release: 3.0
+ * @link http://phpsysinfo.sourceforge.net
+ */
+class Quotas extends PSI_Plugin
+{
+ /**
+ * variable, which holds the content of the command
+ * @var array
+ */
+ private $_filecontent = array();
+
+ /**
+ * variable, which holds the result before the xml is generated out of this array
+ * @var array
+ */
+ private $_result = array();
+
+ /**
+ * read the data into an internal array and also call the parent constructor
+ *
+ * @param String $enc target encoding
+ */
+ public function __construct($enc)
+ {
+ parent::__construct(__CLASS__, $enc);
+ switch (strtolower(PSI_PLUGIN_QUOTAS_ACCESS)) {
+ case 'command':
+ CommonFunctions::executeProgram("repquota", "-au", $buffer, PSI_DEBUG);
+ break;
+ case 'data':
+ CommonFunctions::rfts(APP_ROOT."/data/quotas.txt", $buffer);
+ break;
+ default:
+ $this->global_error->addConfigError("__construct()", "PSI_PLUGIN_QUOTAS_ACCESS");
+ break;
+ }
+ if (trim($buffer) != "") {
+ $this->_filecontent = preg_split("/\n/", $buffer, -1, PREG_SPLIT_NO_EMPTY);
+ unset($this->_filecontent[0]);
+ } else {
+ $this->_filecontent = array();
+ }
+ }
+
+ /**
+ * doing all tasks to get the required informations that the plugin needs
+ * result is stored in an internal array the array is build like a tree,
+ * so that it is possible to get only a specific process with the childs
+ *
+ * @return void
+ */
+ public function execute()
+ {
+ $i = 0;
+ $quotas = array();
+ foreach ($this->_filecontent as $thisline) {
+ $thisline = preg_replace("/([\s]--)/", "", $thisline);
+ $thisline = preg_split("/(\s)/e", $thisline, -1, PREG_SPLIT_NO_EMPTY);
+ if (count($thisline) == 7) {
+ $quotas[$i]['user'] = str_replace("--", "", $thisline[0]);
+ $quotas[$i]['byte_used'] = $thisline[1] * 1024;
+ $quotas[$i]['byte_soft'] = $thisline[2] * 1024;
+ $quotas[$i]['byte_hard'] = $thisline[3] * 1024;
+ if ($thisline[3] != 0) {
+ $quotas[$i]['byte_percent_used'] = round((($quotas[$i]['byte_used'] / $quotas[$i]['byte_hard']) * 100), 1);
+ } else {
+ $quotas[$i]['byte_percent_used'] = 0;
+ }
+ $quotas[$i]['file_used'] = $thisline[4];
+ $quotas[$i]['file_soft'] = $thisline[5];
+ $quotas[$i]['file_hard'] = $thisline[6];
+ if ($thisline[6] != 0) {
+ $quotas[$i]['file_percent_used'] = round((($quotas[$i]['file_used'] / $quotas[$i]['file_hard']) * 100), 1);
+ } else {
+ $quotas[$i]['file_percent_used'] = 0;
+ }
+ $i++;
+ }
+ }
+ $this->_result = $quotas;
+ }
+
+ /**
+ * generates the XML content for the plugin
+ *
+ * @return SimpleXMLElement entire XML content for the plugin
+ */
+ public function xml()
+ {
+ foreach ($this->_result as $quota) {
+ $quotaChild = $this->xml->addChild("Quota");
+ $quotaChild->addAttribute("User", $quota['user']);
+ $quotaChild->addAttribute("ByteUsed", $quota['byte_used']);
+ $quotaChild->addAttribute("ByteSoft", $quota['byte_soft']);
+ $quotaChild->addAttribute("ByteHard", $quota['byte_hard']);
+ $quotaChild->addAttribute("BytePercentUsed", $quota['byte_percent_used']);
+ $quotaChild->addAttribute("FileUsed", $quota['file_used']);
+ $quotaChild->addAttribute("FileSoft", $quota['file_soft']);
+ $quotaChild->addAttribute("FileHard", $quota['file_hard']);
+ $quotaChild->addAttribute("FilePercentUsed", $quota['file_percent_used']);
+ }
+
+ return $this->xml->getSimpleXmlElement();
+ }
+}
diff --git a/sources/plugins/quotas/css/quotas.css b/sources/plugins/quotas/css/quotas.css
new file mode 100644
index 0000000..36efde4
--- /dev/null
+++ b/sources/plugins/quotas/css/quotas.css
@@ -0,0 +1,7 @@
+/*
+ $Id: quotas.css 661 2012-08-27 11:26:39Z namiltd $
+ */
+#plugin_quotasTable thead tr .header {
+ cursor: pointer;
+ text-align: center;
+}
diff --git a/sources/plugins/quotas/js/quotas.js b/sources/plugins/quotas/js/quotas.js
new file mode 100644
index 0000000..820227e
--- /dev/null
+++ b/sources/plugins/quotas/js/quotas.js
@@ -0,0 +1,147 @@
+/***************************************************************************
+ * Copyright (C) 2008 by phpSysInfo - A PHP System Information Script *
+ * http://phpsysinfo.sourceforge.net/ *
+ * *
+ * 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. *
+ ***************************************************************************/
+//
+// $Id: quotas.js 661 2012-08-27 11:26:39Z namiltd $
+//
+
+/*global $, jQuery, buildBlock, datetime, plugin_translate, genlang, formatBytes, createBar */
+
+"use strict";
+
+var quotas_show = false, quotas_table;
+
+//appendcss("./plugins/Quotas/css/Quotas.css");
+
+/**
+ * insert content into table
+ * @param {jQuery} xml plugin-XML
+ */
+function quotas_populate(xml) {
+ quotas_table.fnClearTable();
+
+ $("Plugins Plugin_Quotas Quota", xml).each(function quotas_getquota(id) {
+ var user = "", bused = 0, bsoft = 0, bhard = 0, bpuse = 0, fpuse = 0, fused = 0, fsoft = 0, fhard = 0;
+ user = $(this).attr("User");
+ bused = parseInt($(this).attr("ByteUsed"), 10);
+ bsoft = parseInt($(this).attr("ByteSoft"), 10);
+ bhard = parseInt($(this).attr("ByteHard"), 10);
+ bpuse = parseInt($(this).attr("BytePercentUsed"), 10);
+ fused = parseInt($(this).attr("FileUsed"), 10);
+ fsoft = parseInt($(this).attr("FileSoft"), 10);
+ fhard = parseInt($(this).attr("FileHard"), 10);
+ fpuse = parseInt($(this).attr("FilePercentUsed"), 10);
+
+ quotas_table.fnAddData(["" + user + " " + user, "" + bused + " " + formatBytes(bused, xml), "" + bsoft + " " + formatBytes(bsoft, xml), "" + bhard + " " + formatBytes(bhard, xml), "" + bpuse + " " + createBar(bpuse), "" + fused + " " + fused, "" + fsoft + " " + fsoft, "" + fhard + " " + fhard, "" + fpuse + " " + createBar(fpuse)]);
+ quotas_show = true;
+ });
+}
+
+/**
+ * fill the plugin block with table structure
+ */
+function quotas_buildTable() {
+ var html = "";
+
+ html += "\n";
+ html += " \n";
+ html += " \n";
+ html += " " + genlang(3, false, "Quotas") + " \n";
+ html += " " + genlang(4, false, "Quotas") + " \n";
+ html += " " + genlang(5, false, "Quotas") + " \n";
+ html += " " + genlang(6, false, "Quotas") + " \n";
+ html += " " + genlang(7, false, "Quotas") + " \n";
+ html += " " + genlang(8, false, "Quotas") + " \n";
+ html += " " + genlang(9, false, "Quotas") + " \n";
+ html += " " + genlang(10, false, "Quotas") + " \n";
+ html += " " + genlang(11, false, "Quotas") + " \n";
+ html += " \n";
+ html += " \n";
+ html += " \n";
+ html += " \n";
+ html += "
\n";
+
+ $("#Plugin_Quotas").append(html);
+
+ quotas_table = $("#Plugin_QuotasTable").dataTable({
+ "bPaginate": false,
+ "bLengthChange": false,
+ "bFilter": false,
+ "bSort": true,
+ "bInfo": false,
+ "bProcessing": true,
+ "bAutoWidth": false,
+ "bStateSave": true,
+ "aoColumns": [{
+ "sType": 'span-string'
+ }, {
+ "sType": 'span-number'
+ }, {
+ "sType": 'span-number'
+ }, {
+ "sType": 'span-number'
+ }, {
+ "sType": 'span-number'
+ }, {
+ "sType": 'span-number'
+ }, {
+ "sType": 'span-number'
+ }, {
+ "sType": 'span-number'
+ }, {
+ "sType": 'span-number'
+ }]
+ });
+}
+
+/**
+ * load the xml via ajax
+ */
+function quotas_request() {
+ $("#Reload_QuotasTable").attr("title", "reload");
+ $.ajax({
+ url: "xml.php?plugin=Quotas",
+ dataType: "xml",
+ error: function quotas_error() {
+ $.jGrowl("Error loading XML document for Plugin quotas!");
+ },
+ success: function quotas_buildblock(xml) {
+ populateErrors(xml);
+ quotas_populate(xml);
+ if (quotas_show) {
+ plugin_translate("Quotas");
+ $("#Plugin_Quotas").show();
+ }
+ }
+ });
+}
+
+$(document).ready(function quotas_buildpage() {
+ $("#footer").before(buildBlock("Quotas", 1, true));
+ $("#Plugin_Quotas").css("width", "915px");
+
+ quotas_buildTable();
+
+ quotas_request();
+
+ $("#Reload_QuotasTable").click(function quotas_reload(id) {
+ quotas_request();
+ $(this).attr("title", datetime());
+ });
+});
diff --git a/sources/plugins/quotas/js/quotas_bootstrap.js b/sources/plugins/quotas/js/quotas_bootstrap.js
new file mode 100644
index 0000000..00028a6
--- /dev/null
+++ b/sources/plugins/quotas/js/quotas_bootstrap.js
@@ -0,0 +1,50 @@
+function renderPlugin_quotas(data) {
+
+ var directives = {
+
+ ByteUsed: {
+ html: function () {
+ return formatBytes(this["ByteUsed"], data["Options"]["@attributes"]["byteFormat"]);
+ }
+ },
+ ByteSoft: {
+ html: function () {
+ return formatBytes(this["ByteSoft"], data["Options"]["@attributes"]["byteFormat"]);
+ }
+ },
+ ByteHard: {
+ html: function () {
+ return formatBytes(this["ByteHard"], data["Options"]["@attributes"]["byteFormat"]);
+ }
+ },
+ BytePercentUsed: {
+ html: function () {
+ return '' + this["BytePercentUsed"] + '%
';
+ }
+ },
+ FilePercentUsed: {
+ html: function () {
+ return '' + this["FilePercentUsed"] + '%
';
+ }
+ }
+ };
+
+ if (data['Plugins']['Plugin_Quotas'] !== undefined) {
+ var qtitems = items(data['Plugins']['Plugin_Quotas']['Quota']);
+ if (qtitems.length > 0) {
+ var qt_memory = [];
+ qt_memory.push_attrs(qtitems);
+ $('#quotas-data').render(qt_memory, directives);
+ $('#quotas_User').removeClass("sorttable_sorted"); // reset sort order
+ sorttable.innerSortFunction.apply($('#quotas_User')[0], []);
+
+ $('#block_quotas').show();
+ } else {
+ $('#block_quotas').hide();
+ }
+ } else {
+ $('#block_quotas').hide();
+ }
+}
diff --git a/sources/plugins/quotas/lang/cz.xml b/sources/plugins/quotas/lang/cz.xml
new file mode 100644
index 0000000..b69afd1
--- /dev/null
+++ b/sources/plugins/quotas/lang/cz.xml
@@ -0,0 +1,42 @@
+
+
+
+
+
+ Stav kvót
+
+
+ aktualizováno
+
+
+ Uživatel
+
+
+ Využité mÃsto
+
+
+ Měkký limit
+
+
+ Tvrdý limit
+
+
+ Procento využitÃ
+
+
+ PoÄet soouborů
+
+
+ Měkký souborový limit
+
+
+ Tvrdý souborový limit
+
+
+ Procento využità souborů
+
+
diff --git a/sources/plugins/quotas/lang/de.xml b/sources/plugins/quotas/lang/de.xml
new file mode 100644
index 0000000..528f592
--- /dev/null
+++ b/sources/plugins/quotas/lang/de.xml
@@ -0,0 +1,42 @@
+
+
+
+
+
+ Quota Status
+
+
+ Letze Aktualisierung
+
+
+ Benutzer
+
+
+ Bytes (Belegt)
+
+
+ Bytes (Soft Limit)
+
+
+ Bytes (Hard Limit)
+
+
+ Bytes (Belegt Prozent)
+
+
+ Dateien (Benutzt)
+
+
+ Dateien (Soft Limit)
+
+
+ Dateien (Hard Limit)
+
+
+ Dateien (Benutzt Prozent)
+
+
diff --git a/sources/plugins/quotas/lang/en.xml b/sources/plugins/quotas/lang/en.xml
new file mode 100644
index 0000000..e123add
--- /dev/null
+++ b/sources/plugins/quotas/lang/en.xml
@@ -0,0 +1,42 @@
+
+
+
+
+
+ Quota Status
+
+
+ Last Refresh
+
+
+ User
+
+
+ Bytes Used
+
+
+ Bytes Soft
+
+
+ Bytes Hard
+
+
+ Bytes Used Percent
+
+
+ Files Used
+
+
+ Files Soft
+
+
+ Files Hard
+
+
+ Files Used Percent
+
+
diff --git a/sources/plugins/quotas/lang/fr.xml b/sources/plugins/quotas/lang/fr.xml
new file mode 100644
index 0000000..3aeec9b
--- /dev/null
+++ b/sources/plugins/quotas/lang/fr.xml
@@ -0,0 +1,42 @@
+
+
+
+
+
+ Etat des quotas
+
+
+ Dernière actualisation
+
+
+ Utilisateurs
+
+
+ Espace utilisés
+
+
+ Espace limite souple
+
+
+ Espace limite stricte
+
+
+ Pourcentage espace utilisés
+
+
+ Inodes utilisés
+
+
+ Inodes limite souple
+
+
+ Inodes limite stricte
+
+
+ Pourcentage inodes utilisés
+
+
diff --git a/sources/plugins/quotas/lang/pl.xml b/sources/plugins/quotas/lang/pl.xml
new file mode 100644
index 0000000..d34ce6c
--- /dev/null
+++ b/sources/plugins/quotas/lang/pl.xml
@@ -0,0 +1,42 @@
+
+
+
+
+
+ Status Quoty
+
+
+ Ostatnie odświeżenie
+
+
+ Użytkownik
+
+
+ Bajtów wykorzystanych
+
+
+ Miękki limit bajtów
+
+
+ Twardy limit bajtów
+
+
+ Procentowo bajtów
+
+
+ Plików wykorzystanych
+
+
+ Miękki limit plików
+
+
+ Twardy limit plików
+
+
+ Procentowo plików
+
+
diff --git a/sources/plugins/quotas/lang/ro.xml b/sources/plugins/quotas/lang/ro.xml
new file mode 100644
index 0000000..d1809b1
--- /dev/null
+++ b/sources/plugins/quotas/lang/ro.xml
@@ -0,0 +1,42 @@
+
+
+
+
+
+ Stare Quota
+
+
+ Ultimul refresh
+
+
+ Utilizator
+
+
+ Bytes Folositi
+
+
+ Bytes Soft
+
+
+ Bytes Hard
+
+
+ Bytes Percent Folosiți
+
+
+ Fișiere Folosite
+
+
+ Fișiere Soft
+
+
+ Fișiere Hard
+
+
+ Fișiere Percent Folosite
+
+
diff --git a/sources/plugins/quotas/lang/ru.xml b/sources/plugins/quotas/lang/ru.xml
new file mode 100644
index 0000000..f551c38
--- /dev/null
+++ b/sources/plugins/quotas/lang/ru.xml
@@ -0,0 +1,42 @@
+
+
+
+
+
+ СоÑтоÑние Квоты
+
+
+ ПоÑледнее обновление
+
+
+ Пользователь
+
+
+ ИÑпользуетÑÑ
+
+
+ Программы
+
+
+ ЖеÑткий диÑк
+
+
+ Процентов
+
+
+ Файлы ИÑпользуетÑÑ
+
+
+ Файлов программ
+
+
+ Файлы на жеÑтком диÑке
+
+
+ Проценты файлов
+
+
diff --git a/sources/plugins/quotas/quotas_bootstrap.html b/sources/plugins/quotas/quotas_bootstrap.html
new file mode 100644
index 0000000..3395889
--- /dev/null
+++ b/sources/plugins/quotas/quotas_bootstrap.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+ User
+ Bytes Used
+ Bytes Soft
+ Bytes Hard
+ Bytes Used Percent
+ Files Used
+ Files Soft
+ Files Hard
+ Files Used Percent
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sources/plugins/smart/class.smart.inc.php b/sources/plugins/smart/class.smart.inc.php
new file mode 100644
index 0000000..39a3d68
--- /dev/null
+++ b/sources/plugins/smart/class.smart.inc.php
@@ -0,0 +1,302 @@
+
+ * @copyright 2009 phpSysInfo
+ * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License
+ * @version SVN: $Id: class.smart.inc.php 707 2012-11-28 10:20:49Z namiltd $
+ * @link http://phpsysinfo.sourceforge.net
+ */
+/**
+ * SMART plugin, which displays all SMART informations available
+ *
+ * @category PHP
+ * @package PSI_Plugin_SMART
+ * @author Antoine Bertin
+ * @copyright 2009 phpSysInfo
+ * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License
+ * @version Release: 3.0
+ * @link http://phpsysinfo.sourceforge.net
+ */
+class SMART extends PSI_Plugin
+{
+ /**
+ * variable, which holds the content of the command
+ * @var array
+ */
+ private $_filecontent = array();
+
+ /**
+ * variable, which holds the result before the xml is generated out of this array
+ * @var array
+ */
+ private $_result = array();
+
+ /**
+ * variable, which holds PSI_PLUGIN_SMART_IDS well formated datas
+ * @var array
+ */
+ private $_ids = array();
+
+ /**
+ * read the data into an internal array and also call the parent constructor
+ *
+ * @param String $enc target encoding
+ */
+ public function __construct($enc)
+ {
+ parent::__construct(__CLASS__, $enc);
+ switch (strtolower(PSI_PLUGIN_SMART_ACCESS)) {
+ case 'command':
+ if (defined('PSI_PLUGIN_SMART_DEVICES') && is_string(PSI_PLUGIN_SMART_DEVICES)) {
+ if (preg_match(ARRAY_EXP, PSI_PLUGIN_SMART_DEVICES)) {
+ $disks = eval(PSI_PLUGIN_SMART_DEVICES);
+ } else {
+ $disks = array(PSI_PLUGIN_SMART_DEVICES);
+ }
+ foreach ($disks as $disk) {
+ if (trim($disk) != "") {
+ $diskdev = "";
+ if (preg_match("/\s*\(([^\(\(]*)\)\s*(.*)/", $disk, $devdisk)) {
+ $diskname = trim($devdisk[2]);
+ if (trim($devdisk[1]) != "") {
+ $diskdev = "--device ".preg_replace('/\./', ',', trim($devdisk[1]));
+ }
+ } else {
+ $diskname = trim($disk);
+ }
+ $buffer = "";
+ if (trim($diskname != "") && (CommonFunctions::executeProgram('smartctl', '--all'.' '.$diskdev.' '.$diskname, $buffer, PSI_DEBUG))) {
+ $this->_filecontent[trim($disk)] = $buffer;
+ }
+ }
+ }
+ }
+ if (defined('PSI_PLUGIN_SMART_IDS') && is_string(PSI_PLUGIN_SMART_IDS)) {
+ if (preg_match(ARRAY_EXP, PSI_PLUGIN_SMART_IDS)) {
+ $fullIds = eval(PSI_PLUGIN_SMART_IDS);
+ } else {
+ $fullIds = array(PSI_PLUGIN_SMART_IDS);
+ }
+ foreach ($fullIds as $fullId) {
+ $arrFullId = preg_split('/-/', $fullId);
+ $this->_ids[intval($arrFullId[0])] = strtolower($arrFullId[1]);
+ if (!empty($arrFullId[2]))
+ $this->_ids[intval($arrFullId[2])] = "#replace-".intval($arrFullId[0]);
+ }
+ }
+ break;
+ case 'data':
+ if (defined('PSI_PLUGIN_SMART_DEVICES') && is_string(PSI_PLUGIN_SMART_DEVICES)) {
+ if (preg_match(ARRAY_EXP, PSI_PLUGIN_SMART_DEVICES)) {
+ $disks = eval(PSI_PLUGIN_SMART_DEVICES);
+ } else {
+ $disks = array(PSI_PLUGIN_SMART_DEVICES);
+ }
+ $dn=0;
+ foreach ($disks as $disk) {
+ $buffer="";
+ if (CommonFunctions::rfts(APP_ROOT."/data/smart{$dn}.txt", $buffer) && !empty($buffer)) {
+ $this->_filecontent[$disk] = $buffer;
+ }
+ $dn++;
+ }
+ }
+ if (defined('PSI_PLUGIN_SMART_IDS') && is_string(PSI_PLUGIN_SMART_IDS)) {
+ if (preg_match(ARRAY_EXP, PSI_PLUGIN_SMART_IDS)) {
+ $fullIds = eval(PSI_PLUGIN_SMART_IDS);
+ } else {
+ $fullIds = array(PSI_PLUGIN_SMART_IDS);
+ }
+ foreach ($fullIds as $fullId) {
+ $arrFullId = preg_split('/-/', $fullId);
+ $this->_ids[intval($arrFullId[0])] = strtolower($arrFullId[1]);
+ if (!empty($arrFullId[2]))
+ $this->_ids[intval($arrFullId[2])] = "#replace-".intval($arrFullId[0]);
+ }
+ }
+ break;
+ default:
+ $this->global_error->addError("switch(PSI_PLUGIN_SMART_ACCESS)", "Bad SMART configuration in phpsysinfo.ini");
+ break;
+ }
+ }
+
+ /**
+ * doing all tasks to get the required informations that the plugin needs
+ * result is stored in an internal array
+ *
+ * @return void
+ */
+ public function execute()
+ {
+ if (empty($this->_filecontent) || empty($this->_ids)) {
+ return;
+ }
+ foreach ($this->_filecontent as $disk=>$result) {
+ // set the start and end offset in the result string at the beginning and end respectively
+ // just in case we don't find the two strings, so that it still works as expected.
+ $startIndex = 0;
+ $endIndex = 0;
+ $vendorInfos = "";
+
+ // locate the beginning string offset for the attributes
+ if (preg_match('/(Vendor Specific SMART Attributes with Thresholds)/', $result, $matches, PREG_OFFSET_CAPTURE))
+ $startIndex = $matches[0][1];
+
+ // locate the end string offset for the attributes, this is usually right before string "SMART Error Log Version" or "SMART Error Log not supported" or "Error SMART Error Log Read failed" (hopefully every output has it!)
+ if (preg_match('/(SMART Error Log Version)|(SMART Error Log not supported)|(Error SMART Error Log Read failed)/', $result, $matches, PREG_OFFSET_CAPTURE))
+ $endIndex = $matches[0][1];
+
+ if ($startIndex && $endIndex && ($endIndex>$startIndex))
+ $vendorInfos = preg_split("/\n/", substr($result, $startIndex, $endIndex - $startIndex));
+
+ if (!empty($vendorInfos)) {
+ $labels = preg_split('/\s+/', $vendorInfos[1]);
+ foreach ($labels as $k=>$v) {
+ $labels[$k] = str_replace('#', '', strtolower($v));
+ }
+ $i = 0; // Line number
+ foreach ($vendorInfos as $line) {
+ $line = preg_replace('/^\s+/', '', $line);
+ $values = preg_split('/\s+/', $line);
+ if (count($values) > count($labels)) {
+ $values = array_slice($values, 0, count($labels), true);
+ }
+ $j = 0;
+ $found = false;
+ foreach ($values as $value) {
+ if ((in_array($value, array_keys($this->_ids)) && $labels[$j] == 'id')) {
+ $arrFullVa = preg_split('/-/', $this->_ids[$value]);
+ if (($arrFullVa[0]=="#replace") && !empty($arrFullVa[1]))
+ $value=$arrFullVa[1];
+ }
+ if (((in_array($value, array_keys($this->_ids)) && $labels[$j] == 'id') || ($found && (in_array($labels[$j], array_values($this->_ids)))) || ($found && $labels[$j] == 'attribute_name'))) {
+ $this->_result[$disk][$i][$labels[$j]] = $value;
+ $found = true;
+ }
+ $j++;
+ }
+ $i++;
+ }
+ } else {
+ //SCSI devices
+ if (!empty($this->_ids[1]) && ($this->_ids[1]=="raw_value")) {
+ preg_match('/read\: (.*)\n/', $result, $lines);
+ if (!empty($lines) && !empty($lines[0])) {
+ $values=preg_split('/\s+/', $lines[0]);
+ if (!empty($values) && ($values[7]!=null)) {
+ $vals=preg_split('/[,\.]/', $values[7]);
+ $this->_result[$disk][0]['id'] = 1;
+ $this->_result[$disk][0]['attribute_name'] = "Raw_Read_Error_Rate";
+ $this->_result[$disk][0]['raw_value'] = $vals[0];
+ }
+ }
+ }
+ if (!empty($this->_ids[5]) && ($this->_ids[5]=="raw_value")) {
+ preg_match('/Elements in grown defect list\: (.*)\n/', $result, $lines);
+ if (!empty($lines) && !empty($lines[0])) {
+ $values=preg_split('/\s+/', $lines[0]);
+ if (!empty($values) && ($values[5]!=null)) {
+ $vals=preg_split('/[,\.]/', $values[5]);
+ $this->_result[$disk][1]['id'] = 5;
+ $this->_result[$disk][1]['attribute_name'] = "Reallocated_Sector_Ct";
+ $this->_result[$disk][1]['raw_value'] = $vals[0];
+ }
+ }
+ }
+ if (!empty($this->_ids[9]) && ($this->_ids[9]=="raw_value")) {
+ preg_match('/ number of hours powered up = (.*)\n/', $result, $lines);
+ if (!empty($lines) && !empty($lines[0])) {
+ $values=preg_split('/\s+/', $lines[0]);
+ if (!empty($values) && ($values[7]!=null)) {
+ $vals=preg_split('/[,\.]/', $values[7]);
+ $this->_result[$disk][2]['id'] = 9;
+ $this->_result[$disk][2]['attribute_name'] = "Power_On_Hours";
+ $this->_result[$disk][2]['raw_value'] = $vals[0];
+ }
+ }
+ }
+ if (!empty($this->_ids[194]) && ($this->_ids[194]=="raw_value")) {
+ preg_match('/Current Drive Temperature\: (.*)\n/', $result, $lines);
+ if (!empty($lines) && !empty($lines[0])) {
+ $values=preg_split('/\s+/', $lines[0]);
+ if (!empty($values) && ($values[3]!=null)) {
+ $vals=preg_split('/[,\.]/', $values[3]);
+ $this->_result[$disk][3]['id'] = 194;
+ $this->_result[$disk][3]['attribute_name'] = "Temperature_Celsius";
+ $this->_result[$disk][3]['raw_value'] = $vals[0];
+ }
+ }
+ }
+ }
+ }
+ //Usage test
+ $newIds = array();
+ foreach ($this->_ids as $id=>$column_name) {
+ $found = 0;
+ foreach ($this->_result as $diskName=>$diskInfos) {
+ if ($found!=2) foreach ($diskInfos as $lineInfos) {
+ if ($found!=2) {
+ $found = 0;
+ foreach ($lineInfos as $label=>$value) {
+ if (($found==0) && ($label=="id") && ($value==$id))
+ $found = 1;
+ if (($found==1) && ($label==$column_name))
+ $found = 2;
+ }
+ }
+ }
+ }
+ if ($found==2) $newIds[$id] = $this->_ids[$id];
+ }
+ $this->_ids = $newIds;
+ }
+
+ /**
+ * generates the XML content for the plugin
+ *
+ * @return SimpleXMLObject entire XML content for the plugin
+ */
+ public function xml()
+ {
+ if (empty($this->_result) || empty($this->_ids)) {
+ return $this->xml->getSimpleXmlElement();
+ }
+
+ $columnsChild = $this->xml->addChild('columns');
+ // Fill the xml with preferences
+ foreach ($this->_ids as $id=>$column_name) {
+ $columnChild = $columnsChild->addChild('column');
+ $columnChild->addAttribute('id', $id);
+ $columnChild->addAttribute('name', $column_name);
+ }
+
+ $disksChild = $this->xml->addChild('disks');
+ // Now fill the xml with S.M.A.R.T datas
+ foreach ($this->_result as $diskName=>$diskInfos) {
+ $diskChild = $disksChild->addChild('disk');
+ $diskChild->addAttribute('name', $diskName);
+ foreach ($diskInfos as $lineInfos) {
+ $lineChild = $diskChild->addChild('attribute');
+
+ if (($lineInfos['id'] == 9) && ($lineInfos['attribute_name'] == "Power_On_Hours_and_Msec")) {
+ $lineInfos['attribute_name'] = "Power_On_Hours";
+ $raw_value = preg_split("/h/", $lineInfos['raw_value'], -1, PREG_SPLIT_NO_EMPTY);
+ $lineInfos['raw_value'] = $raw_value[0];
+ }
+
+ foreach ($lineInfos as $label=>$value) {
+ $lineChild->addAttribute($label, $value);
+ }
+ }
+ }
+
+ return $this->xml->getSimpleXmlElement();
+ }
+}
diff --git a/sources/plugins/smart/css/smart.css b/sources/plugins/smart/css/smart.css
new file mode 100644
index 0000000..6d2ca65
--- /dev/null
+++ b/sources/plugins/smart/css/smart.css
@@ -0,0 +1,6 @@
+/*
+ $Id: smart.css 661 2012-08-27 11:26:39Z namiltd $
+ */
+#Plugin_SMARTTable tbody tr td {
+ text-align: right;
+}
diff --git a/sources/plugins/smart/js/smart.js b/sources/plugins/smart/js/smart.js
new file mode 100644
index 0000000..5d931ef
--- /dev/null
+++ b/sources/plugins/smart/js/smart.js
@@ -0,0 +1,147 @@
+/***************************************************************************
+ * Copyright (C) 2008 by phpSysInfo - A PHP System Information Script *
+ * http://phpsysinfo.sourceforge.net/ *
+ * *
+ * 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. *
+ ***************************************************************************/
+
+//$Id: smart.js 707 2012-11-28 10:20:49Z namiltd $
+
+
+/*global $, jQuery, genlang, formatTemp, plugin_translate, buildBlock, datetime */
+
+"use strict";
+
+var smart_show = false, smart_table;
+
+//appendcss("./plugins/SMART/css/SMART.css");
+
+/**
+ * fill the plugin block with table structure
+ */
+function smart_buildTable(xml) {
+ var html = "";
+
+ html += "\n";
+ html += " \n";
+ html += " \n";
+ html += " " + genlang(3, false, "SMART") + " \n";
+ $("Plugins Plugin_SMART columns column", xml).each(function smart_table_header() {
+ html += " " + genlang(100 + parseInt($(this).attr("id"), 10), false, "SMART") + " \n";
+ });
+ html += " \n";
+ html += " \n";
+ html += " \n";
+ html += " \n";
+ html += "
\n";
+
+ $("#Plugin_SMART").append(html);
+
+ smart_table = $("#Plugin_SMARTTable").dataTable({
+ "bPaginate": false,
+ "bLengthChange": false,
+ "bFilter": false,
+ "bSort": true,
+ "bInfo": false,
+ "bProcessing": true,
+ "bAutoWidth": false,
+ "bStateSave": true
+ });
+}
+
+/**
+ * insert content into table
+ * @param {jQuery} xml plugin-XML
+ */
+function smart_populate(xml) {
+ var name = "", columns = [];
+ smart_table.fnClearTable();
+
+ // Get datas that the user want to be displayed
+ $("Plugins Plugin_SMART columns column", xml).each(function smart_find_columns() {
+ columns[parseInt($(this).attr("id"), 10)] = $(this).attr("name");
+ });
+
+ // Now we add selected datas in the table
+ $("Plugins Plugin_SMART disks disk", xml).each(function smart_fill_table() {
+ var values = [], display = [], i;
+ name = $(this).attr("name");
+ $(this).find("attribute").each(function smart_fill_data() {
+ if (columns[parseInt($(this).attr("id"), 10)] && columns[parseInt($(this).attr("id"), 10)] !== "") {
+ values[parseInt($(this).attr("id"), 10)] = $(this).attr(columns[parseInt($(this).attr("id"), 10)]);
+ }
+ });
+
+ display.push("" + name + " " + name);
+
+ // On "columns" so we get the right order
+ // fixed for Firefox (fix wrong order)
+ $("Plugins Plugin_SMART columns column", xml).each(function smart_find_columns() {
+ i = parseInt($(this).attr("id"), 10);
+ if (typeof(values[i])==='undefined') {
+ display.push(" ");
+ }
+ else if (i === 194) {
+ display.push("" + values[i] + " " + formatTemp(values[i], xml));
+ }
+ else {
+ display.push("" + values[i] + " " + values[i]);
+ }
+// }
+ });
+ smart_table.fnAddData(display);
+ });
+ smart_show = true;
+}
+
+/**
+ * load the xml via ajax
+ */
+function smart_request() {
+ $("#Reload_SMARTTable").attr("title", "reload");
+ $.ajax({
+ url: "xml.php?plugin=SMART",
+ dataType: "xml",
+ error: function smart_error() {
+ $.jGrowl("Error loading XML document for Plugin SMART");
+ },
+ success: function smart_buildBlock(xml) {
+ populateErrors(xml);
+ if ((smart_table === undefined) || (typeof(smart_table) !== "object")) {
+ smart_buildTable(xml);
+ }
+ smart_populate(xml);
+ if (smart_show) {
+ plugin_translate("SMART");
+ $("#Plugin_SMART").show();
+ }
+ }
+ });
+}
+
+$(document).ready(function smart_buildpage() {
+ var html = "";
+
+ $("#footer").before(buildBlock("SMART", 1, true));
+ $("#Plugin_SMART").css("width", "915px");
+
+ smart_request();
+
+ $("#Reload_SMARTTable").click(function smart_reload(id) {
+ smart_request();
+ $(this).attr("title", datetime());
+ });
+});
diff --git a/sources/plugins/smart/js/smart_bootstrap.js b/sources/plugins/smart/js/smart_bootstrap.js
new file mode 100644
index 0000000..3eee13e
--- /dev/null
+++ b/sources/plugins/smart/js/smart_bootstrap.js
@@ -0,0 +1,84 @@
+function renderPlugin_smart(data) {
+
+ if ((data['Plugins']['Plugin_SMART'] !== undefined) && (data['Plugins']['Plugin_SMART']["columns"] !== undefined) && (items(data['Plugins']['Plugin_SMART']["columns"]["column"]).length > 0)
+ && (data['Plugins']['Plugin_SMART']["disks"] !== undefined) && (items(data['Plugins']['Plugin_SMART']["disks"]["disk"]).length > 0)) {
+ var smartitems = items(data['Plugins']['Plugin_SMART']["columns"]["column"]);
+ var smartnames = {
+ 1:"plugin_smart_101", // "Raw Read Error Rate",
+ 2:"plugin_smart_102", // "Throughput Performance",
+ 3:"plugin_smart_103", // "Spin Up Time",
+ 4:"plugin_smart_104", // "Start Stop Count",
+ 5:"plugin_smart_105", // "Reallocated Sector Ct",
+ 7:"plugin_smart_106", // "Seek Error Rate",
+ 8:"plugin_smart_108", // "Seek Time Performance",
+ 9:"plugin_smart_109", // "Power On Hours",
+ 10:"plugin_smart_110", // "Spin Retry Count",
+ 11:"plugin_smart_111", // "Calibration Retry Count",
+ 12:"plugin_smart_112", // "Power Cycle Count",
+ 190:"plugin_smart_290", // "Airflow Temperature",
+ 191:"plugin_smart_291", // "G-sense Error Rate",
+ 192:"plugin_smart_292", // "Power-Off Retract Count",
+ 193:"plugin_smart_293", // "Load Cycle Count",
+ 194:"plugin_smart_294", // "Temperature",
+ 195:"plugin_smart_295", // "Hardware ECC Recovered",
+ 196:"plugin_smart_296", // "Reallocated Event Count",
+ 197:"plugin_smart_297", // "Current Pending Sector",
+ 198:"plugin_smart_298", // "Offline Uncorr.",
+ 199:"plugin_smart_299", // "UDMA CRC Error Count",
+ 200:"plugin_smart_300", // "Multi Zone Error Rate",
+ 201:"plugin_smart_301", // "Soft Read Error Rate",
+ 202:"plugin_smart_302", // "Data Address Mark Errors",
+ 223:"plugin_smart_323", // "Load Retry Count",
+ 225:"plugin_smart_325", }; // "Load Cycle Count"
+
+ var html = '';
+
+ html+="";
+ html+="";
+ html+=""+genlang(3, false, 'smart')+" "; // Name
+ for (var i = 0; i < smartitems.length ; i++) {
+ smartid = smartitems[i]["@attributes"]["id"];
+ if (smartnames[smartid] !== undefined) {
+ html+=""+ genlang(100+parseInt(smartid), false, 'smart') + " ";
+ } else {
+ html+=""+ smartid + " ";
+ }
+ }
+ html+=" ";
+ html+=" ";
+
+ var diskitems = items(data['Plugins']['Plugin_SMART']["disks"]["disk"]);
+ html += '';
+ for (var i = 0; i < diskitems.length; i++) {
+ html += '';
+ html += ''+ diskitems[i]["@attributes"]["name"] + ' ';
+ attribitems = items(diskitems[i]["attribute"]);
+ var valarray = [];
+ for (var j = 0;j < attribitems.length; j++) {
+ valarray[attribitems[j]["@attributes"]["id"]] = attribitems[j]["@attributes"]["raw_value"];
+ }
+ for (var j = 0; j < smartitems.length; j++) {
+ var smartid = smartitems[j]["@attributes"]["id"];
+ var itemvalue = valarray[smartid];
+ if ((itemvalue !== undefined) && (itemvalue !== '' )) {
+ if (smartid === "194") {
+ html += '' + formatTemp(itemvalue, data["Options"]["@attributes"]["tempFormat"]) + ' ';
+ } else {
+ html += '' + itemvalue + ' ';
+ }
+ } else {
+ html += ' ';
+ }
+ }
+ html += ' ';
+ }
+ html += ' ';
+ $('#smart').empty().append(html);
+ $('#smart').addClass("sortable");
+ sorttable.makeSortable($('#smart')[0]);
+ sorttable.innerSortFunction.apply($('#smart_name')[0], []);
+ $('#block_smart').show();
+ } else {
+ $('#block_smart').hide();
+ }
+}
diff --git a/sources/plugins/smart/lang/cz.xml b/sources/plugins/smart/lang/cz.xml
new file mode 100644
index 0000000..66be4d4
--- /dev/null
+++ b/sources/plugins/smart/lang/cz.xml
@@ -0,0 +1,97 @@
+
+
+
+
+
+ S.M.A.R.T Informace
+
+
+ Aktualizováno
+
+
+ Název
+
+
+ Raw Read Error Rate
+
+
+ Throughput Performance
+
+
+ Spin Up Time
+
+
+ Start Stop Count
+
+
+ Reallocated Sector Ct
+
+
+ Seek Error Rate
+
+
+ Seek Time Performance
+
+
+ Power On Hours
+
+
+ Spin Retry Count
+
+
+ Calibration Retry Count
+
+
+ Power Cycle Count
+
+
+ Airflow Temperature
+
+
+ G-sense Error Rate
+
+
+ Power-Off Retract Count
+
+
+ Load Cycle Count
+
+
+ Temperature
+
+
+ Hardware ECC Recovered
+
+
+ Reallocated Event Count
+
+
+ Current Pending Sector
+
+
+ Offline Uncorr.
+
+
+ UDMA CRC Error Count
+
+
+ Multi Zone Error Rate
+
+
+ Soft Read Error Rate
+
+
+ Data Address Mark Errors
+
+
+ Load Retry Count
+
+
+ Load Cycle Count
+
+
diff --git a/sources/plugins/smart/lang/en.xml b/sources/plugins/smart/lang/en.xml
new file mode 100644
index 0000000..338e9e0
--- /dev/null
+++ b/sources/plugins/smart/lang/en.xml
@@ -0,0 +1,97 @@
+
+
+
+
+
+ S.M.A.R.T Informations
+
+
+ Last refresh
+
+
+ Name
+
+
+ Raw Read Error Rate
+
+
+ Throughput Performance
+
+
+ Spin Up Time
+
+
+ Start Stop Count
+
+
+ Reallocated Sector Ct
+
+
+ Seek Error Rate
+
+
+ Seek Time Performance
+
+
+ Power On Hours
+
+
+ Spin Retry Count
+
+
+ Calibration Retry Count
+
+
+ Power Cycle Count
+
+
+ Airflow Temperature
+
+
+ G-sense Error Rate
+
+
+ Power-Off Retract Count
+
+
+ Load Cycle Count
+
+
+ Temperature
+
+
+ Hardware ECC Recovered
+
+
+ Reallocated Event Count
+
+
+ Current Pending Sector
+
+
+ Offline Uncorr.
+
+
+ UDMA CRC Error Count
+
+
+ Multi Zone Error Rate
+
+
+ Soft Read Error Rate
+
+
+ Data Address Mark Errors
+
+
+ Load Retry Count
+
+
+ Load Cycle Count
+
+
diff --git a/sources/plugins/smart/lang/fr.xml b/sources/plugins/smart/lang/fr.xml
new file mode 100644
index 0000000..38e6ee6
--- /dev/null
+++ b/sources/plugins/smart/lang/fr.xml
@@ -0,0 +1,97 @@
+
+
+
+
+
+ Informations S.M.A.R.T
+
+
+ Dernière actualisation:
+
+
+ Nom
+
+
+ Raw Read Error Rate
+
+
+ Throughput Performance
+
+
+ Spin Up Time
+
+
+ Start Stop Count
+
+
+ Reallocated Sector Ct
+
+
+ Seek Error Rate
+
+
+ Seek Time Performance
+
+
+ Power On Hours
+
+
+ Spin Retry Count
+
+
+ Calibration Retry Count
+
+
+ Power Cycle Count
+
+
+ Airflow Temperature
+
+
+ G-sense Error Rate
+
+
+ Power-Off Retract Count
+
+
+ Load Cycle Count
+
+
+ Temperature
+
+
+ Hardware ECC Recovered
+
+
+ Reallocated Event Count
+
+
+ Current Pending Sector
+
+
+ Offline Uncorr.
+
+
+ UDMA CRC Error Count
+
+
+ Multi Zone Error Rate
+
+
+ Soft Read Error Rate
+
+
+ Data Address Mark Errors
+
+
+ Load Retry Count
+
+
+ Load Cycle Count
+
+
diff --git a/sources/plugins/smart/lang/gr.xml b/sources/plugins/smart/lang/gr.xml
new file mode 100644
index 0000000..2940e87
--- /dev/null
+++ b/sources/plugins/smart/lang/gr.xml
@@ -0,0 +1,97 @@
+
+
+
+
+
+ ΠληÏοφοÏίες S.M.A.R.T
+
+
+ ΕνημÎÏωση
+
+
+ Συσκευή
+
+
+ Raw Read Error Rate
+
+
+ Throughput Performance
+
+
+ Spin Up Time
+
+
+ Start Stop Count
+
+
+ ΑνακτημÎνοι Τομείς
+
+
+ Seek Error Rate
+
+
+ Seek Time Performance
+
+
+ ÎÏες λειτουÏγίας
+
+
+ Spin Retry Count
+
+
+ Calibration Retry Count
+
+
+ Power Cycle Count
+
+
+ ΘεÏμοκÏασία ΑÎÏος
+
+
+ G-sense Error Rate
+
+
+ Power-Off Retract Count
+
+
+ Load Cycle Count
+
+
+ ΘεÏμοκÏασία
+
+
+ Hardware ECC Recovered
+
+
+ Reallocated Event Count
+
+
+ Current Pending Sector
+
+
+ Offline Uncorr.
+
+
+ UDMA CRC Error Count
+
+
+ Multi Zone Error Rate
+
+
+ Soft Read Error Rate
+
+
+ Data Address Mark Errors
+
+
+ Load Retry Count
+
+
+ Load Cycle Count
+
+
diff --git a/sources/plugins/smart/lang/pl.xml b/sources/plugins/smart/lang/pl.xml
new file mode 100644
index 0000000..363d17f
--- /dev/null
+++ b/sources/plugins/smart/lang/pl.xml
@@ -0,0 +1,97 @@
+
+
+
+
+
+ Informacje S.M.A.R.T
+
+
+ Ostatnie odświeżenie
+
+
+ Nazwa
+
+
+ Raw Read Error Rate
+
+
+ Throughput Performance
+
+
+ Spin Up Time
+
+
+ Start Stop Count
+
+
+ Reallocated Sector Ct
+
+
+ Seek Error Rate
+
+
+ Seek Time Performance
+
+
+ Power On Hours
+
+
+ Spin Retry Count
+
+
+ Calibration Retry Count
+
+
+ Power Cycle Count
+
+
+ Airflow Temperature
+
+
+ G-sense Error Rate
+
+
+ Power-Off Retract Count
+
+
+ Load Cycle Count
+
+
+ Temperature
+
+
+ Hardware ECC Recovered
+
+
+ Reallocated Event Count
+
+
+ Current Pending Sector
+
+
+ Offline Uncorr.
+
+
+ UDMA CRC Error Count
+
+
+ Multi Zone Error Rate
+
+
+ Soft Read Error Rate
+
+
+ Data Address Mark Errors
+
+
+ Load Retry Count
+
+
+ Load Cycle Count
+
+
diff --git a/sources/plugins/smart/lang/ro.xml b/sources/plugins/smart/lang/ro.xml
new file mode 100644
index 0000000..deb515a
--- /dev/null
+++ b/sources/plugins/smart/lang/ro.xml
@@ -0,0 +1,97 @@
+
+
+
+
+
+ Informații S.M.A.R.T
+
+
+ Ultimul refresh
+
+
+ Nume
+
+
+ Raw Read Error Rate
+
+
+ Throughput Performance
+
+
+ Spin Up Time
+
+
+ Start Stop Count
+
+
+ Reallocated Sector Ct
+
+
+ Seek Error Rate
+
+
+ Seek Time Performance
+
+
+ Power On Hours
+
+
+ Spin Retry Count
+
+
+ Calibration Retry Count
+
+
+ Power Cycle Count
+
+
+ Airflow Temperature
+
+
+ G-sense Error Rate
+
+
+ Power-Off Retract Count
+
+
+ Load Cycle Count
+
+
+ Temperature
+
+
+ Hardware ECC Recovered
+
+
+ Reallocated Event Count
+
+
+ Current Pending Sector
+
+
+ Offline Uncorr.
+
+
+ UDMA CRC Error Count
+
+
+ Multi Zone Error Rate
+
+
+ Soft Read Error Rate
+
+
+ Data Address Mark Errors
+
+
+ Load Retry Count
+
+
+ Load Cycle Count
+
+
diff --git a/sources/plugins/smart/lang/ru.xml b/sources/plugins/smart/lang/ru.xml
new file mode 100644
index 0000000..14633aa
--- /dev/null
+++ b/sources/plugins/smart/lang/ru.xml
@@ -0,0 +1,42 @@
+
+
+
+
+
+ СоÑтоÑние Квоты
+
+
+ ПоÑледнее обновление
+
+
+ Пользователь
+
+
+ Байт ИÑпользуетÑÑ
+
+
+ Байт Программ
+
+
+ Байтов ЖеÑткий диÑк
+
+
+ Байт ИÑпользуетÑÑ ÐŸÑ€Ð¾Ñ†ÐµÐ½Ñ‚Ñ‹
+
+
+ Файлы ИÑпользуемые
+
+
+ Файлы Программ
+
+
+ Файлы ЖеÑткий диÑк
+
+
+ Файлов ИÑпользуетÑÑ ÐŸÑ€Ð¾Ñ†ÐµÐ½Ñ‚Ñ‹
+
+
diff --git a/sources/plugins/smart/smart_bootstrap.html b/sources/plugins/smart/smart_bootstrap.html
new file mode 100644
index 0000000..75e1ed4
--- /dev/null
+++ b/sources/plugins/smart/smart_bootstrap.html
@@ -0,0 +1,11 @@
+
+
+
S.M.A.R.T Informations
+
+
+
+
+
diff --git a/sources/plugins/snmppinfo/class.snmppinfo.inc.php b/sources/plugins/snmppinfo/class.snmppinfo.inc.php
new file mode 100644
index 0000000..b8eb5d6
--- /dev/null
+++ b/sources/plugins/snmppinfo/class.snmppinfo.inc.php
@@ -0,0 +1,233 @@
+
+ * @copyright 2011 phpSysInfo
+ * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License
+ * @version SVN: $Id: class.snmppinfo.inc.php 661 2012-08-27 11:26:39Z namiltd $
+ * @link http://phpsysinfo.sourceforge.net
+ */
+ /**
+ * SNMPPInfo Plugin, which displays battery state
+ *
+ * @category PHP
+ * @package PSI_Plugin_SNMPPInfo
+ * @author Mieczyslaw Nalewaj
+ * @copyright 2011 phpSysInfo
+ * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License
+ * @version $Id: class.snmppinfo.inc.php 661 2012-08-27 11:26:39Z namiltd $
+ * @link http://phpsysinfo.sourceforge.net
+ */
+class SNMPPInfo extends PSI_Plugin
+{
+ /**
+ * variable, which holds the content of the command
+ * @var array
+ */
+ private $_filecontent = array();
+
+ /**
+ * variable, which holds the result before the xml is generated out of this array
+ * @var array
+ */
+ private $_result = array();
+
+ /**
+ * read the data into an internal array and also call the parent constructor
+ *
+ * @param String $enc encoding
+ */
+ public function __construct($enc)
+ {
+ parent::__construct(__CLASS__, $enc);
+ switch (strtolower(PSI_PLUGIN_SNMPPINFO_ACCESS)) {
+ case 'command':
+ if (defined('PSI_PLUGIN_SNMPPINFO_DEVICES') && is_string(PSI_PLUGIN_SNMPPINFO_DEVICES)) {
+ if (preg_match(ARRAY_EXP, PSI_PLUGIN_SNMPPINFO_DEVICES)) {
+ $printers = eval(PSI_PLUGIN_SNMPPINFO_DEVICES);
+ } else {
+ $printers = array(PSI_PLUGIN_SNMPPINFO_DEVICES);
+ }
+ foreach ($printers as $printer) {
+ CommonFunctions::executeProgram("snmpwalk", "-Ona -c public -v 1 -r 1 ".$printer." .1.3.6.1.2.1.1.5", $buffer, PSI_DEBUG);
+ if (strlen($buffer) > 0) {
+ $this->_filecontent[$printer] = $buffer;
+
+ CommonFunctions::executeProgram("snmpwalk", "-Ona -c public -v 1 -r 1 ".$printer." .1.3.6.1.2.1.43.11.1.1", $buffer2, PSI_DEBUG);
+ if (strlen($buffer2) > 0) {
+ $this->_filecontent[$printer] .= "\n".$buffer2;
+ }
+ CommonFunctions::executeProgram("snmpwalk", "-Ona -c public -v 1 -r 1 ".$printer." .1.3.6.1.2.1.43.18.1.1", $buffer3, PSI_DEBUG);
+ if (strlen($buffer3) > 0) {
+ $this->_filecontent[$printer] .= "\n".$buffer3;
+ }
+ }
+ }
+ }
+ break;
+ case 'php-snmp':
+ if (!extension_loaded("snmp")) {
+ $this->global_error->addError("Requirements error", "SNMPPInfo plugin requires the snmp extension to php in order to work properly");
+ break;
+ }
+ snmp_set_valueretrieval(SNMP_VALUE_LIBRARY);
+ snmp_set_oid_output_format(SNMP_OID_OUTPUT_NUMERIC);
+ if (defined('PSI_PLUGIN_SNMPPINFO_DEVICES') && is_string(PSI_PLUGIN_SNMPPINFO_DEVICES)) {
+ if (preg_match(ARRAY_EXP, PSI_PLUGIN_SNMPPINFO_DEVICES)) {
+ $printers = eval(PSI_PLUGIN_SNMPPINFO_DEVICES);
+ } else {
+ $printers = array(PSI_PLUGIN_SNMPPINFO_DEVICES);
+ }
+ foreach ($printers as $printer) {
+ if (! PSI_DEBUG) {
+ restore_error_handler(); /* default error handler */
+ $old_err_rep = error_reporting();
+ error_reporting(E_ERROR); /* fatal errors only */
+ }
+ $bufferarr=snmprealwalk($printer, "public", ".1.3.6.1.2.1.1.5", 1000000, 1);
+ if (! PSI_DEBUG) {
+ error_reporting($old_err_rep); /* restore error level */
+ set_error_handler('errorHandlerPsi'); /* restore error handler */
+ }
+ if (! empty($bufferarr)) {
+ $buffer="";
+ foreach ($bufferarr as $id=>$string) {
+ $buffer .= $id." = ".$string."\n";
+ }
+
+ if (! PSI_DEBUG) {
+ restore_error_handler(); /* default error handler */
+ $old_err_rep = error_reporting();
+ error_reporting(E_ERROR); /* fatal errors only */
+ }
+ $bufferarr2=snmprealwalk($printer, "public", ".1.3.6.1.2.1.43.11.1.1", 1000000, 1);
+ if (! PSI_DEBUG) {
+ error_reporting($old_err_rep); /* restore error level */
+ set_error_handler('errorHandlerPsi'); /* restore error handler */
+ }
+ if (! empty($bufferarr2)) {
+ foreach ($bufferarr2 as $id=>$string) {
+ $buffer .= $id." = ".$string."\n";
+ }
+ }
+
+ if (! PSI_DEBUG) {
+ restore_error_handler(); /* default error handler */
+ $old_err_rep = error_reporting();
+ error_reporting(E_ERROR); /* fatal errors only */
+ }
+ $bufferarr3=snmprealwalk($printer, "public", ".1.3.6.1.2.1.43.18.1.1", 1000000, 1);
+ if (! PSI_DEBUG) {
+ error_reporting($old_err_rep); /* restore error level */
+ set_error_handler('errorHandlerPsi'); /* restore error handler */
+ }
+ if (! empty($bufferarr3)) {
+ foreach ($bufferarr3 as $id=>$string) {
+ $buffer .= $id." = ".$string."\n";
+ }
+ }
+
+ if (strlen(trim($buffer)) > 0) {
+ $this->_filecontent[$printer] = $buffer;
+ }
+ }
+ }
+ }
+ break;
+ case 'data':
+ if (defined('PSI_PLUGIN_SNMPPINFO_DEVICES') && is_string(PSI_PLUGIN_SNMPPINFO_DEVICES)) {
+ if (preg_match(ARRAY_EXP, PSI_PLUGIN_SNMPPINFO_DEVICES)) {
+ $printers = eval(PSI_PLUGIN_SNMPPINFO_DEVICES);
+ } else {
+ $printers = array(PSI_PLUGIN_SNMPPINFO_DEVICES);
+ }
+ $pn=0;
+ foreach ($printers as $printer) {
+ $buffer="";
+ if (CommonFunctions::rfts(APP_ROOT."/data/snmppinfo{$pn}.txt", $buffer) && !empty($buffer)) {
+ $this->_filecontent[$printer] = $buffer;
+ }
+ $pn++;
+ }
+ }
+ break;
+ default:
+ $this->global_error->addError("switch(PSI_PLUGIN_SNMPPINFO_ACCESS)", "Bad SNMPPInfo configuration in phpsysinfo.ini");
+ break;
+ }
+ }
+
+ /**
+ * doing all tasks to get the required informations that the plugin needs
+ * result is stored in an internal array
+ *
+ * @return void
+ */
+ public function execute()
+ {
+ if (empty($this->_filecontent)) {
+ return;
+ }
+ foreach ($this->_filecontent as $printer=>$result) {
+ $lines = preg_split('/\r?\n/', $result);
+ foreach ($lines as $line) {
+ if (preg_match('/^\.1\.3\.6\.1\.2\.1\.43\.11\.1\.1\.6\.1\.(.*) = STRING:\s(.*)/', $line, $data)) {
+ $this->_result[$printer][$data[1]]['prtMarkerSuppliesDescription']=trim($data[2], "\"");
+ } elseif (preg_match('/^\.1\.3\.6\.1\.2\.1\.43\.11\.1\.1\.7\.1\.(.*) = INTEGER:\s(.*)/', $line, $data)) {
+ $this->_result[$printer][$data[1]]['prtMarkerSuppliesSupplyUnit']=$data[2];
+ } elseif (preg_match('/^\.1\.3\.6\.1\.2\.1\.43\.11\.1\.1\.8\.1\.(.*) = INTEGER:\s(.*)/', $line, $data)) {
+ $this->_result[$printer][$data[1]]['prtMarkerSuppliesMaxCapacity']=$data[2];
+ } elseif (preg_match('/^\.1\.3\.6\.1\.2\.1\.43\.11\.1\.1\.9\.1\.(.*) = INTEGER:\s(.*)/', $line, $data)) {
+ $this->_result[$printer][$data[1]]['prtMarkerSuppliesLevel']=$data[2];
+ } elseif (preg_match('/^\.1\.3\.6\.1\.2\.1\.1\.5\.0 = STRING:\s(.*)/', $line, $data)) {
+ $this->_result[$printer][0]['prtMarkerSuppliesDescription']=trim($data[1], "\"");;
+ } elseif (preg_match('/^\.1\.3\.6\.1\.2\.1\.43\.18\.1\.1\.8\.1\.(.*) = STRING:\s(.*)/', $line, $data)) {
+ $this->_result[$printer][99][$data[1]]["message"]=trim($data[2], "\"");
+ } elseif (preg_match('/^\.1\.3\.6\.1\.2\.1\.43\.18\.1\.1\.2\.1\.(.*) = INTEGER:\s(.*)/', $line, $data)) {
+ $this->_result[$printer][99][$data[1]]["severity"]=$data[2];
+ }
+ }
+ }
+ }
+
+ /**
+ * generates the XML content for the plugin
+ *
+ * @return SimpleXMLElement entire XML content for the plugin
+ */
+ public function xml()
+ {
+ foreach ($this->_result as $printer=>$markersupplies_item) {
+ $xmlsnmppinfo_printer = $this->xml->addChild("Printer");
+ $xmlsnmppinfo_printer->addAttribute("Device", $printer);
+ foreach ($markersupplies_item as $marker=>$snmppinfo_item) {
+
+ if ($marker==0) {
+ $xmlsnmppinfo_printer->addAttribute("Name", $snmppinfo_item['prtMarkerSuppliesDescription']);
+ } elseif ($marker==99) {
+ foreach ($snmppinfo_item as $item=>$iarr) {
+ if (isset($iarr["message"]) && $iarr["message"] != "") {
+ $xmlsnmppinfo_errors = $xmlsnmppinfo_printer->addChild("PrinterMessage");
+ $xmlsnmppinfo_errors->addAttribute("Message", $iarr["message"]);
+ $xmlsnmppinfo_errors->addAttribute("Severity", $iarr["severity"]);
+ }
+ }
+ } else {
+ $xmlsnmppinfo = $xmlsnmppinfo_printer->addChild("MarkerSupplies");
+
+ $xmlsnmppinfo->addAttribute("Description", isset($snmppinfo_item['prtMarkerSuppliesDescription']) ? $snmppinfo_item['prtMarkerSuppliesDescription'] : "");
+ $xmlsnmppinfo->addAttribute("SupplyUnit", isset($snmppinfo_item['prtMarkerSuppliesSupplyUnit']) ? $snmppinfo_item['prtMarkerSuppliesSupplyUnit'] : "");
+ $xmlsnmppinfo->addAttribute("MaxCapacity", isset($snmppinfo_item['prtMarkerSuppliesMaxCapacity']) ? $snmppinfo_item['prtMarkerSuppliesMaxCapacity'] : "");
+ $xmlsnmppinfo->addAttribute("Level", isset($snmppinfo_item['prtMarkerSuppliesLevel']) ? $snmppinfo_item['prtMarkerSuppliesLevel'] : "");
+ }
+ }
+ }
+
+ return $this->xml->getSimpleXmlElement();
+ }
+}
diff --git a/sources/plugins/snmppinfo/js/snmppinfo.js b/sources/plugins/snmppinfo/js/snmppinfo.js
new file mode 100644
index 0000000..ac0296d
--- /dev/null
+++ b/sources/plugins/snmppinfo/js/snmppinfo.js
@@ -0,0 +1,140 @@
+/***************************************************************************
+ * Copyright (C) 2008 by phpSysInfo - A PHP System Information Script *
+ * http://phpsysinfo.sourceforge.net/ *
+ * *
+ * 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. *
+ ***************************************************************************/
+//
+// $Id: snmppinfo.js 661 2012-08-27 11:26:39Z namiltd $
+//
+
+/*global $, jQuery, buildBlock, datetime, plugin_translate, createBar, genlang */
+
+"use strict";
+
+var snmppinfo_show = false;
+
+/**
+ * build the table where content is inserted
+ * @param {jQuery} xml plugin-XML
+ */
+function snmppinfo_buildTable(xml) {
+ var html = "", tree = [], closed = [];
+
+ $("#Plugin_SNMPPInfo #Plugin_SNMPPInfoTable").remove();
+
+ html += " \n";
+ html += " \n";
+ html += " \n";
+ html += " " + genlang(3, false, "SNMPPInfo") + " \n";
+ html += " " + genlang(4, false, "SNMPPInfo") + " \n";
+ html += " " + genlang(5, false, "SNMPPInfo") + " \n";
+ html += " \n";
+ html += " \n";
+ html += " \n";
+
+ var lastdev="", index = 0 ;
+ $("Plugins Plugin_SNMPPInfo Printer MarkerSupplies", xml).each(function snmppinfo_getprinters(id) {
+ var close = 0, name = "", device = "", desc = "", unit = 0, max = 0, level = 0, percent = 0, units = "";
+ name = $(this).parent().attr("Name");
+ device = $(this).parent().attr("Device");
+ desc = $(this).attr("Description");
+
+ unit = parseInt($(this).attr("SupplyUnit"), 10);
+ max = parseInt($(this).attr("MaxCapacity"), 10);
+ level = parseInt($(this).attr("Level"), 10);
+
+ if (max>0 && (level>=0) && (level<=max) ) {
+ percent = Math.round(100*level/max);
+ units = level+" / "+max;
+ } else if (max==-2 && (level>=0) && (level<=100) ) {
+ percent = level;
+ units = level+" / 100";
+ } else if (level==-3) {
+ percent = 100;
+ units = genlang(6, false, "SNMPPInfo")
+ } else {
+ percent = 0;
+ units = genlang(7, false, "SNMPPInfo")
+ }
+
+ if (device!=lastdev) {
+ html += " " + device + " (" + name + ") \n";
+ index = tree.push(0);
+ lastdev = device;
+ }
+ html += " " + desc + " " + createBar(percent) +" " + units +" \n";
+
+ tree.push(index);
+ snmppinfo_show = true;
+ });
+
+ html += " \n";
+ html += "
\n";
+
+ $("#Plugin_SNMPPInfo").append(html);
+
+ $("#Plugin_SNMPPInfoTable").jqTreeTable(tree, {
+ openImg: "./gfx/treeTable/tv-collapsable.gif",
+ shutImg: "./gfx/treeTable/tv-expandable.gif",
+ leafImg: "./gfx/treeTable/tv-item.gif",
+ lastOpenImg: "./gfx/treeTable/tv-collapsable-last.gif",
+ lastShutImg: "./gfx/treeTable/tv-expandable-last.gif",
+ lastLeafImg: "./gfx/treeTable/tv-item-last.gif",
+ vertLineImg: "./gfx/treeTable/vertline.gif",
+ blankImg: "./gfx/treeTable/blank.gif",
+ collapse: closed,
+ column: 0,
+ striped: true,
+ highlight: false,
+ state: false
+ });
+
+}
+
+/**
+ * load the xml via ajax
+ */
+function snmppinfo_request() {
+ $("#Reload_SNMPPInfoTable").attr("title", "reload");
+ $.ajax({
+ url: "xml.php?plugin=SNMPPInfo",
+ dataType: "xml",
+ error: function snmppinfo_error() {
+ $.jGrowl("Error loading XML document for Plugin SNMPPInfo!");
+ },
+ success: function snmppinfo_buildblock(xml) {
+ populateErrors(xml);
+ snmppinfo_buildTable(xml);
+ if (snmppinfo_show) {
+ plugin_translate("SNMPPInfo");
+ $("#Plugin_SNMPPInfo").show();
+ }
+ }
+ });
+}
+
+$(document).ready(function snmppinfo_buildpage() {
+ $("#footer").before(buildBlock("SNMPPInfo", 1, true));
+ $("#Plugin_SNMPPInfo").css("width", "451px");
+
+ snmppinfo_request();
+
+ $("#Reload_SNMPPInfoTable").click(function snmppinfo_reload(id) {
+ snmppinfo_request();
+ $(this).attr("title", datetime());
+ });
+});
diff --git a/sources/plugins/snmppinfo/js/snmppinfo_bootstrap.js b/sources/plugins/snmppinfo/js/snmppinfo_bootstrap.js
new file mode 100644
index 0000000..f556557
--- /dev/null
+++ b/sources/plugins/snmppinfo/js/snmppinfo_bootstrap.js
@@ -0,0 +1,99 @@
+function renderPlugin_snmppinfo(data) {
+
+ var directives = {
+ Device: {
+ text: function () {
+ var Name = (this["Name"] !== undefined) ? (' (' + this["Name"] + ')'): '';
+ return this["Device"] + Name;
+ }
+ },
+ Percent: {
+ html: function () {
+ var max = parseInt(this["MaxCapacity"]);
+ var level = parseInt(this["Level"]);
+ var percent = 0;
+
+ if (max>0 && (level>=0) && (level<=max) ) {
+ percent = Math.round(100*level/max);
+ } else if (max==-2 && (level>=0) && (level<=100) ) {
+ percent = level;
+ } else if (level==-3) {
+ percent = 100;
+ }
+ return '' + percent + '%
';
+ }
+ },
+ Units: {
+ html: function () {
+ var max = parseInt(this["MaxCapacity"]);
+ var level = parseInt(this["Level"]);
+
+ if (max>0 && (level>=0) && (level<=max) ) {
+ return level+" / "+max;
+ } else if (max==-2 && (level>=0) && (level<=100) ) {
+ return level+" / 100";
+ } else if (level==-3) {
+ return genlang(6, false, 'snmppinfo'); // enough
+ } else {
+ return getlang(7, false, 'snmppinfo'); // unknown
+ }
+ }
+ }
+ };
+
+ if (data['Plugins']['Plugin_SNMPPInfo'] !== undefined) {
+ var printers = items(data['Plugins']['Plugin_SNMPPInfo']['Printer']);
+ if (printers.length > 0) {
+ var html = "";
+ for (var i = 0; i < printers.length; i++) {
+ html+="";
+ html+=" ";
+ html+=" ";
+ html+=" ";
+ html+=" ";
+
+ try {
+ var datas = items(printers[i]["MarkerSupplies"]);
+ for (var j = 0; j < datas.length; j++) {
+ html+="";
+ html+=" ";
+ html+=" ";
+ html+=" ";
+ html+=" ";
+ }
+ }
+ catch (err) {
+ $("#snmppinfo-" + i).hide();
+ }
+ }
+
+ $("#snmppinfo-data").empty().append(html);
+
+ for (var i = 0; i < printers.length; i++) {
+ $('#snmppinfo-'+ i).render(printers[i]["@attributes"], directives);
+ try {
+ var datas = items(printers[i]["MarkerSupplies"]);
+ for (var j = 0; j < datas.length; j++) {
+ $('#snmppinfo-'+ i+ "-" + j).render(datas[j]["@attributes"], directives);
+ }
+ }
+ catch (err) {
+ $("#snmppinfo-" + i).hide();
+ }
+ }
+
+ $('#snmppinfo').treegrid({
+ initialState: 'expanded',
+ expanderExpandedClass: 'normalicon normalicon-down',
+ expanderCollapsedClass: 'normalicon normalicon-right'
+ });
+
+ $('#block_snmppinfo').show();
+ } else {
+ $('#block_snmppinfo').hide();
+ }
+ } else {
+ $('#block_snmppinfo').hide();
+ }
+}
diff --git a/sources/plugins/snmppinfo/lang/cz.xml b/sources/plugins/snmppinfo/lang/cz.xml
new file mode 100644
index 0000000..08723e7
--- /dev/null
+++ b/sources/plugins/snmppinfo/lang/cz.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+ Informace o tiskárnách
+
+
+ Poslednà aktualizace
+
+
+ Tiskárna
+
+
+ Procenta
+
+
+ Jednotky
+
+
+ dostatek
+
+
+ neznámé
+
+
diff --git a/sources/plugins/snmppinfo/lang/de.xml b/sources/plugins/snmppinfo/lang/de.xml
new file mode 100644
index 0000000..487d71e
--- /dev/null
+++ b/sources/plugins/snmppinfo/lang/de.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+ Drucker Information
+
+
+ Letzte Aktualisierung
+
+
+ Drucker
+
+
+ Prozent
+
+
+ Units
+
+
+ genug
+
+
+ unbekannt
+
+
diff --git a/sources/plugins/snmppinfo/lang/en.xml b/sources/plugins/snmppinfo/lang/en.xml
new file mode 100644
index 0000000..8e53c6d
--- /dev/null
+++ b/sources/plugins/snmppinfo/lang/en.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+ Printer Information
+
+
+ Last refresh
+
+
+ Printer
+
+
+ Percent
+
+
+ Units
+
+
+ enough
+
+
+ unknown
+
+
diff --git a/sources/plugins/snmppinfo/lang/fr.xml b/sources/plugins/snmppinfo/lang/fr.xml
new file mode 100644
index 0000000..62b681f
--- /dev/null
+++ b/sources/plugins/snmppinfo/lang/fr.xml
@@ -0,0 +1,29 @@
+
+
+
+
+ Imprimantes
+
+
+ Dernière actualisation
+
+
+ Imprimante
+
+
+ Pourcent
+
+
+ Unité
+
+
+ suffisamment
+
+
+ inconnu
+
+
diff --git a/sources/plugins/snmppinfo/lang/pl.xml b/sources/plugins/snmppinfo/lang/pl.xml
new file mode 100644
index 0000000..c56909d
--- /dev/null
+++ b/sources/plugins/snmppinfo/lang/pl.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+ Drukarki
+
+
+ Ostatnie odświeżenie
+
+
+ Drukarka
+
+
+ Procent
+
+
+ Jednostek
+
+
+ dość
+
+
+ nieznany
+
+
diff --git a/sources/plugins/snmppinfo/lang/ro.xml b/sources/plugins/snmppinfo/lang/ro.xml
new file mode 100644
index 0000000..3a75175
--- /dev/null
+++ b/sources/plugins/snmppinfo/lang/ro.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+ Informații Imprimantă
+
+
+ Ultimul refresh
+
+
+ Imprimantă
+
+
+ Procent
+
+
+ Unități
+
+
+ suficient
+
+
+ necunoscut
+
+
diff --git a/sources/plugins/snmppinfo/lang/ru.xml b/sources/plugins/snmppinfo/lang/ru.xml
new file mode 100644
index 0000000..9b072da
--- /dev/null
+++ b/sources/plugins/snmppinfo/lang/ru.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+ Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ принтерах
+
+
+ ПоÑледнее обновление
+
+
+ Принтер
+
+
+ Процент
+
+
+ Еденицы
+
+
+ доÑтаточно
+
+
+ неизвеÑтный
+
+
diff --git a/sources/plugins/snmppinfo/snmppinfo_bootstrap.html b/sources/plugins/snmppinfo/snmppinfo_bootstrap.html
new file mode 100644
index 0000000..a53a97d
--- /dev/null
+++ b/sources/plugins/snmppinfo/snmppinfo_bootstrap.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+ Printer
+ Percent
+ Units
+
+
+
+
+
+
+
+
diff --git a/sources/plugins/updatenotifier/class.updatenotifier.inc.php b/sources/plugins/updatenotifier/class.updatenotifier.inc.php
new file mode 100644
index 0000000..d60773e
--- /dev/null
+++ b/sources/plugins/updatenotifier/class.updatenotifier.inc.php
@@ -0,0 +1,109 @@
+
+ * @copyright 2009 phpSysInfo
+ * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License
+ * @version SVN: $Id: class.updatenotifier.inc.php 661 2012-08-27 11:26:39Z namiltd $
+ * @link http://phpsysinfo.sourceforge.net
+ */
+/**
+ * UpdateNotifier Plugin, which displays update notification from Ubuntu Landscape system
+ *
+ * @category PHP
+ * @package PSI_Plugin_UpdateNotifier
+ * @author Damien ROTH
+ * @copyright 2009 phpSysInfo
+ * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License
+ * @version $Id: class.updatenotifier.inc.php 661 2012-08-27 11:26:39Z namiltd $
+ * @link http://phpsysinfo.sourceforge.net
+ */
+class UpdateNotifier extends PSI_Plugin
+{
+ /**
+ * variable, which holds the content of the command
+ * @var array
+ */
+ private $_filecontent = array();
+
+ /**
+ * variable, which holds the result before the xml is generated out of this array
+ * @var array
+ */
+ private $_result = array();
+
+ /**
+ * read the data into an internal array and also call the parent constructor
+ *
+ * @param String $enc encoding
+ */
+ public function __construct($enc)
+ {
+ parent::__construct(__CLASS__, $enc);
+
+ CommonFunctions::rfts(PSI_PLUGIN_UPDATENOTIFIER_FILE, $buffer_info);
+ // Remove blank lines
+ $this->_filecontent = preg_split("/\n/", $buffer_info, -1, PREG_SPLIT_NO_EMPTY);
+ }
+
+ /**
+ * doing all tasks to get the required informations that the plugin needs
+ * result is stored in an internal array
+ *
+ * @return void
+ */
+ public function execute()
+ {
+ if (empty($this->_filecontent)) {
+ return;
+ }
+
+ if (PSI_PLUGIN_UPDATENOTIFIER_UBUNTU_LANDSCAPE_FORMAT === true) {
+ /*
+ Ubuntu Landscape format:
+ - line 1: packages to update
+ - line 2: security packages to update
+ */
+ if (count($this->_filecontent) == 2) {
+ foreach ($this->_filecontent as $line) {
+ list($num, $text) = explode(" ", $line, 2);
+ $this->_result[] = $num;
+ }
+ } else {
+ $this->global_error->addWarning("Unable to parse UpdateNotifier file");
+ }
+ } else {
+ /*
+ Universal format: A;B
+ - A: packages to update
+ - B: security packages to update
+ */
+ if (count($this->_filecontent) == 1 && strpos($this->_filecontent[0], ";") !== false) {
+ $this->_result = explode(";", $this->_filecontent[0]);
+ } else {
+ $this->global_error->addWarning("Unable to parse UpdateNotifier file");
+ }
+ }
+ }
+
+ /**
+ * generates the XML content for the plugin
+ *
+ * @return SimpleXMLElement entire XML content for the plugin
+ */
+ public function xml()
+ {
+ if (!empty($this->_result)) {
+ $xmluu = $this->xml->addChild("UpdateNotifier");
+ $xmluu->addChild("packages", $this->_result[0]);
+ $xmluu->addChild("security", $this->_result[1]);
+ }
+
+ return $this->xml->getSimpleXmlElement();
+ }
+}
diff --git a/sources/plugins/updatenotifier/js/updatenotifier.js b/sources/plugins/updatenotifier/js/updatenotifier.js
new file mode 100644
index 0000000..cb271bc
--- /dev/null
+++ b/sources/plugins/updatenotifier/js/updatenotifier.js
@@ -0,0 +1,113 @@
+/***************************************************************************
+ * Copyright (C) 2008 by phpSysInfo - A PHP System Information Script *
+ * http://phpsysinfo.sourceforge.net/ *
+ * *
+ * 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. *
+ ***************************************************************************/
+
+/*global $, jQuery, buildBlock, datetime, plugin_translate, genlang, createBar */
+
+"use strict";
+
+var UpdateNotifier_show = false, UpdateNotifier_table;
+/**
+ * insert content into table
+ * @param {jQuery} xml plugin-XML
+ */
+function updatenotifier_populate(xml) {
+ var html = "";
+
+ $("Plugins Plugin_UpdateNotifier UpdateNotifier", xml).each(function(idp) {
+ var packages = "", security = "";
+ packages = $("packages", this).text();
+ security = $("security", this).text();
+
+ //UpdateNotifier_table.fnAddData([packages]);
+ //UpdateNotifier_table.fnAddData([security]);
+
+ html = " \n";
+ html += " " + packages + " " + genlang(3, false, "UpdateNotifier") + " \n";
+ html += " \n";
+ html += " \n";
+ html += " " + security + " " + genlang(4, false, "UpdateNotifier") + " \n";
+ html += " \n";
+
+ $("#Plugin_UpdateNotifier tbody").empty().append(html);
+
+ if ((packages == 0) && (security == 0)) {
+ $("#UpdateNotifierTable-info").html(genlang(5, false, "UpdateNotifier"));
+ } else {
+ $("#UpdateNotifierTable-info").html(genlang(2, false, "UpdateNotifier"));
+ }
+
+ UpdateNotifier_show = true;
+ });
+}
+
+/**
+ * fill the plugin block with table structure
+ */
+function updatenotifier_buildTable() {
+ var html = "";
+
+ html += "\n";
+ html += " \n";
+ html += " \n";
+ html += " " + genlang(2, false, "UpdateNotifier") + " \n";
+ html += " \n";
+ html += " \n";
+ html += " \n";
+ html += " \n";
+ html += "
\n";
+
+ $("#Plugin_UpdateNotifier").append(html);
+
+}
+
+/**
+ * load the xml via ajax
+ */
+function updatenotifier_request() {
+ $("#Reload_UpdateNotifierTable").attr("title", "reload");
+ $.ajax({
+ url: "xml.php?plugin=UpdateNotifier",
+ dataType: "xml",
+ error: function () {
+ $.jGrowl("Error loading XML document for Plugin UpdateNotifier!");
+ },
+ success: function updatenotifier_buildblock(xml) {
+ populateErrors(xml);
+ updatenotifier_populate(xml);
+ if (UpdateNotifier_show) {
+ plugin_translate("UpdateNotifier");
+ $("#Plugin_UpdateNotifier").show();
+ }
+ }
+ });
+}
+
+$(document).ready(function() {
+ $("#footer").before(buildBlock("UpdateNotifier", 1, true));
+ $("#Plugin_UpdateNotifier").css("width", "451px");
+
+ updatenotifier_buildTable();
+ updatenotifier_request();
+
+ $("#Reload_UpdateNotifierTable").click(function updatenotifier_reload(id) {
+ updatenotifier_request();
+ $(this).attr("title", datetime());
+ });
+});
diff --git a/sources/plugins/updatenotifier/js/updatenotifier_bootstrap.js b/sources/plugins/updatenotifier/js/updatenotifier_bootstrap.js
new file mode 100644
index 0000000..c399a5d
--- /dev/null
+++ b/sources/plugins/updatenotifier/js/updatenotifier_bootstrap.js
@@ -0,0 +1,25 @@
+function renderPlugin_updatenotifier(data) {
+
+ var directives = {
+ updateNotifierNbPackages: {
+ text: function () {
+ return this['packages'];
+ }
+ },
+ updateNotifierNbSecPackages: {
+ text: function () {
+ return this['security'];
+ }
+ }
+ };
+ if ((data['Plugins']['Plugin_UpdateNotifier'] !== undefined) && (data['Plugins']['Plugin_UpdateNotifier']["UpdateNotifier"] !== undefined)){
+ $('#updatenotifier').render(data['Plugins']['Plugin_UpdateNotifier']["UpdateNotifier"], directives);
+ if ((data['Plugins']['Plugin_UpdateNotifier']["UpdateNotifier"]["packages"] == 0) &&
+ (data['Plugins']['Plugin_UpdateNotifier']["UpdateNotifier"]["security"] == 0) ) {
+ $("#updatenotifier-info").html(""+genlang(5, false, 'updatenotifier')+" ");
+ }
+ $('#block_updatenotifier').show();
+ } else {
+ $('#block_updatenotifier').hide();
+ }
+}
diff --git a/sources/plugins/updatenotifier/lang/cz.xml b/sources/plugins/updatenotifier/lang/cz.xml
new file mode 100644
index 0000000..4b85473
--- /dev/null
+++ b/sources/plugins/updatenotifier/lang/cz.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+ Notifikátor aktualizacÃ
+
+
+ Jsou dostupné aktualizace!
+
+
+ balÃÄků je pÅ™ipraveno k aktualizaci.
+
+
+ balÃÄků obsahuje bezpeÄnostnà aktualizace.
+
+
+ Žádné aktualizace jsou dostupné
+
+
+ Number of packages
+
+
+ Number of security packages
+
+
diff --git a/sources/plugins/updatenotifier/lang/de.xml b/sources/plugins/updatenotifier/lang/de.xml
new file mode 100644
index 0000000..0a99ebc
--- /dev/null
+++ b/sources/plugins/updatenotifier/lang/de.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+ Updates Notifier
+
+
+ Updates verfügbar
+
+
+ Pakete können aktualisiert werden.
+
+
+ Updates sind Sicherheits-Updates.
+
+
+ Keine Updates verfügbar
+
+
+ Anzahl Pakete
+
+
+ Anzahl Sicherheitspakete
+
+
diff --git a/sources/plugins/updatenotifier/lang/en.xml b/sources/plugins/updatenotifier/lang/en.xml
new file mode 100644
index 0000000..82ed0c9
--- /dev/null
+++ b/sources/plugins/updatenotifier/lang/en.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+ Updates Notifier
+
+
+ Updates available
+
+
+ packages can be updated.
+
+
+ updates are security updates.
+
+
+ No updates available
+
+
+ Number of packages
+
+
+ Number of security packages
+
+
diff --git a/sources/plugins/updatenotifier/lang/fr.xml b/sources/plugins/updatenotifier/lang/fr.xml
new file mode 100644
index 0000000..0e71fb9
--- /dev/null
+++ b/sources/plugins/updatenotifier/lang/fr.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+ Updates Notifier
+
+
+ Mises à jour disponibles
+
+
+ paquets peuvent être mit à jour.
+
+
+ mises à jour concernent la sécurité.
+
+
+ Pas de mises à jour disponibles
+
+
+ Number of packages
+
+
+ Number of security packages
+
+
diff --git a/sources/plugins/updatenotifier/lang/pl.xml b/sources/plugins/updatenotifier/lang/pl.xml
new file mode 100644
index 0000000..a92907f
--- /dev/null
+++ b/sources/plugins/updatenotifier/lang/pl.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+ Updates Notifier
+
+
+ Aktualizacje dostępne
+
+
+ pakietów do aktualizacji.
+
+
+ to aktualizacje zabezpieczeń.
+
+
+ Brak dostępnych aktualizacji
+
+
+ Liczba pakietów aktualizacyjnych
+
+
+ Liczba pakietów aktualizacji zabezpieczeń
+
+
diff --git a/sources/plugins/updatenotifier/lang/ro.xml b/sources/plugins/updatenotifier/lang/ro.xml
new file mode 100644
index 0000000..4d44189
--- /dev/null
+++ b/sources/plugins/updatenotifier/lang/ro.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+ Updates Notifier
+
+
+ Actualizări Disponibile
+
+
+ Pachetele pot fi actualizate.
+
+
+ Sunt actualizări de securitate.
+
+
+ Nu actualizări disponibile
+
+
+ Number of packages
+
+
+ Number of security packages
+
+
diff --git a/sources/plugins/updatenotifier/lang/ru.xml b/sources/plugins/updatenotifier/lang/ru.xml
new file mode 100644
index 0000000..2a04c76
--- /dev/null
+++ b/sources/plugins/updatenotifier/lang/ru.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+ ÐžÐ¿Ð¾Ð²ÐµÑ‰ÐµÐ½Ð¸Ñ Ð¾Ð± обновлениÑÑ…
+
+
+ ДоÑтупно обновление
+
+
+ Пакеты могут быть обновлены.
+
+
+ ÐžÐ±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑноÑти.
+
+
+ Ðет доÑтупных обновлений
+
+
+ Number of packages
+
+
+ Number of security packages
+
+
diff --git a/sources/plugins/updatenotifier/updatenotifier_bootstrap.html b/sources/plugins/updatenotifier/updatenotifier_bootstrap.html
new file mode 100644
index 0000000..35f1bac
--- /dev/null
+++ b/sources/plugins/updatenotifier/updatenotifier_bootstrap.html
@@ -0,0 +1,14 @@
+
+
+
+
+
Updates available
+
+ Number of packages
+ Number of security packages
+
+
+
+
diff --git a/sources/plugins/uprecords/class.uprecords.inc.php b/sources/plugins/uprecords/class.uprecords.inc.php
new file mode 100644
index 0000000..1753e8c
--- /dev/null
+++ b/sources/plugins/uprecords/class.uprecords.inc.php
@@ -0,0 +1,124 @@
+
+ * @copyright 2014 phpSysInfo
+ * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License
+ * @version SVN: $Id: class.uprecords.inc.php 661 2014-01-08 11:26:39Z aolah76 $
+ * @link http://phpsysinfo.sourceforge.net
+ */
+/**
+ * Uprecords plugin, which displays all uprecords informations available
+ *
+ * @category PHP
+ * @package PSI_Plugin_Uprecords
+ * @author Ambrus Sandor Olah
+ * @copyright 2014 phpSysInfo
+ * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License
+ * @version Release: 1.0
+ * @link http://phpsysinfo.sourceforge.net
+ */
+
+class uprecords extends PSI_Plugin
+{
+ private $_lines;
+
+ public function __construct($enc)
+ {
+ parent::__construct(__CLASS__, $enc);
+
+ $this->_lines = array();
+ }
+
+ /**
+ * get uprecords information
+ *
+ * @return array uprecords in array with label
+ */
+
+ private function uprecords()
+ {
+ $result = array();
+ $i = 0;
+
+ foreach ($this->_lines as $line) {
+ if (($i > 1) and (strpos($line, '---') === false)) {
+ $buffer = preg_split("/\s*[ |]\s+/", ltrim(ltrim($line, '->'), ' '));
+ if (strpos($line, '->') !== false) {
+ $buffer[0] = '-> '.$buffer[0];
+ }
+
+ if (count($buffer) > 4) {
+ $buffer[3] = $buffer[3].' '.$buffer[4];
+ }
+
+ $result[$i]['hash'] = $buffer[0];
+ $result[$i]['Uptime'] = $buffer[1];
+ $result[$i]['System'] = $buffer[2];
+ //Date formating
+ $result[$i]['Bootup'] = preg_replace("/^(\S+)(\s+)/", "$1,$2", preg_replace("/^(\S+\s+\S+\s+)(\d)(\s+)/", "$1 0$2$3", $buffer[3]." GMT"));
+ }
+ $i++;
+ }
+
+ return $result;
+ }
+
+ public function execute()
+ {
+ $this->_lines = array();
+ switch (strtolower(PSI_PLUGIN_UPRECORDS_ACCESS)) {
+ case 'command':
+ $lines = "";
+ $oldtz=getenv("TZ");
+ putenv("TZ=GMT");
+ $options = "";
+ if (defined('PSI_PLUGIN_UPRECORDS_MAX_ENTRIES')) {
+ if (PSI_PLUGIN_UPRECORDS_MAX_ENTRIES === false) {
+ $options=" -m 0";
+ } elseif (PSI_PLUGIN_UPRECORDS_MAX_ENTRIES === true) {
+ $options=" -m 1";
+ } elseif ((PSI_PLUGIN_UPRECORDS_MAX_ENTRIES > 1) && (PSI_PLUGIN_UPRECORDS_MAX_ENTRIES != 10)) {
+ $options=" -m ".PSI_PLUGIN_UPRECORDS_MAX_ENTRIES;
+ }
+ }
+ if (CommonFunctions::executeProgram('uprecords', '-a -w'.$options, $lines) && !empty($lines))
+ $this->_lines = preg_split("/\n/", $lines, -1, PREG_SPLIT_NO_EMPTY);
+ putenv("TZ=".$oldtz);
+ break;
+ case 'data':
+ if (CommonFunctions::rfts(APP_ROOT."/data/uprecords.txt", $lines) && !empty($lines))
+ $this->_lines = preg_split("/\n/", $lines, -1, PREG_SPLIT_NO_EMPTY);
+ break;
+ default:
+ $this->error->addConfigError('__construct()', 'PSI_PLUGIN_UPRECORDS_ACCESS');
+ break;
+ }
+ }
+
+ public function xml()
+ {
+ if (empty($this->_lines))
+ return $this->xml->getSimpleXmlElement();
+
+ $arrBuff = $this->uprecords();
+ if (sizeof($arrBuff) > 0) {
+ $uprecords = $this->xml->addChild("Uprecords");
+ foreach ($arrBuff as $arrValue) {
+ $item = $uprecords->addChild('Item');
+ $item->addAttribute('hash', $arrValue['hash']);
+ $item->addAttribute('Uptime', $arrValue['Uptime']);
+ $item->addAttribute('System', $arrValue['System']);
+ $item->addAttribute('Bootup', $arrValue['Bootup']);
+ }
+ }
+
+ return $this->xml->getSimpleXmlElement();
+ }
+}
diff --git a/sources/plugins/uprecords/js/uprecords.js b/sources/plugins/uprecords/js/uprecords.js
new file mode 100644
index 0000000..069e4c2
--- /dev/null
+++ b/sources/plugins/uprecords/js/uprecords.js
@@ -0,0 +1,113 @@
+/***************************************************************************
+ * Copyright (C) 2008 by phpSysInfo - A PHP System Information Script *
+ * http://phpsysinfo.sourceforge.net/ *
+ * *
+ * 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. *
+ ***************************************************************************/
+
+//$Id: uprecords.js 661 2014-01-08 11:26:39 aolah76 $
+
+
+/*global $, jQuery, buildBlock, datetime, plugin_translate, genlang, createBar */
+
+"use strict";
+
+var uprecords_show = false;
+
+/**
+ * insert content into table
+ * @param {jQuery} xml plugin-XML
+ */
+
+function uprecords_populate(xml) {
+
+ var html = "";
+
+ $("Plugins Plugin_uprecords uprecords Item", xml).each(function uprecords_getitem(idp) {
+ html += " \n";
+ html += " " + $(this).attr("hash") + " \n";
+ html += " " + $(this).attr("Uptime") + " \n";
+ html += " " + $(this).attr("System") + " \n";
+/* var lastboot = new Date($(this).attr("Bootup"));
+ if (typeof(lastboot.toUTCString)==="function") {
+ html += " " + lastboot.toUTCString() + " \n";
+ } else { //deprecated
+ html += " " + lastboot.toGMTString() + " \n";
+ } */
+ html += " " + $(this).attr("Bootup") + " \n";
+ html += " \n";
+ uprecords_show = true;
+ });
+
+ $("#Plugin_uprecordsTable-tbody").empty().append(html);
+ $('#Plugin_uprecordsTable tr:nth-child(even)').addClass('even');
+
+}
+
+function uprecords_buildTable() {
+ var html = "";
+
+ html += "\n";
+ html += " \n";
+ html += " \n";
+ html += " " + genlang(101, false, "uprecords") + " \n";
+ html += " " + genlang(102, false, "uprecords") + " \n";
+ html += " " + genlang(103, false, "uprecords") + " \n";
+ html += " " + genlang(104, false, "uprecords") + " \n";
+ html += " \n";
+ html += " \n";
+ html += " \n";
+ html += " \n";
+ html += "
\n";
+ $("#Plugin_uprecords").append(html);
+}
+
+/**
+ * load the xml via ajax
+ */
+
+function uprecords_request() {
+ $("#Reload_uprecordsTable").attr("title", "reload");
+ $.ajax({
+ url: "xml.php?plugin=uprecords",
+ dataType: "xml",
+ error: function uprecords_error() {
+ $.jGrowl("Error loading XML document for Plugin uprecords!");
+ },
+ success: function uprecords_buildblock(xml) {
+ populateErrors(xml);
+ uprecords_populate(xml);
+ if (uprecords_show) {
+ plugin_translate("uprecords");
+ $("#Plugin_uprecords").show();
+ }
+ }
+ });
+}
+
+$(document).ready(function uprecords_buildpage() {
+ $("#footer").before(buildBlock("uprecords", 1, true));
+ $("#Plugin_uprecords").css("width", "915px");
+
+ uprecords_buildTable();
+
+ uprecords_request();
+
+ $("#Reload_uprecordsTable").click(function uprecords_reload(id) {
+ uprecords_request();
+ $(this).attr("title", datetime());
+ });
+});
diff --git a/sources/plugins/uprecords/js/uprecords_bootstrap.js b/sources/plugins/uprecords/js/uprecords_bootstrap.js
new file mode 100644
index 0000000..0cd4a36
--- /dev/null
+++ b/sources/plugins/uprecords/js/uprecords_bootstrap.js
@@ -0,0 +1,25 @@
+function renderPlugin_uprecords(data) {
+
+ var directives = {
+ hash: {
+ html: function () {
+ return this["hash"];
+ }
+ }
+ };
+
+ if ((data['Plugins']['Plugin_uprecords'] !== undefined) && (data['Plugins']['Plugin_uprecords']['Uprecords'] !== undefined)) {
+ var upitems = items(data['Plugins']['Plugin_uprecords']['Uprecords']['Item']);
+ if (upitems.length > 0) {
+ var up_memory = [];
+ up_memory.push_attrs(upitems);
+ $('#uprecords-data').render(up_memory, directives);
+
+ $('#block_uprecords').show();
+ } else {
+ $('#block_uprecords').hide();
+ }
+ } else {
+ $('#block_uprecords').hide();
+ }
+}
diff --git a/sources/plugins/uprecords/lang/en.xml b/sources/plugins/uprecords/lang/en.xml
new file mode 100644
index 0000000..8dfa6b6
--- /dev/null
+++ b/sources/plugins/uprecords/lang/en.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+ Uprecords
+
+
+ Last refresh
+
+
+ #
+
+
+ Uptime
+
+
+ System
+
+
+ Boot up
+
+
diff --git a/sources/plugins/uprecords/lang/fr.xml b/sources/plugins/uprecords/lang/fr.xml
new file mode 100644
index 0000000..99f8c9b
--- /dev/null
+++ b/sources/plugins/uprecords/lang/fr.xml
@@ -0,0 +1,26 @@
+
+
+
+
+ Uprecords
+
+
+ Dernière actualisation
+
+
+ #
+
+
+ Uptime
+
+
+ Système
+
+
+ Démarrage
+
+
diff --git a/sources/plugins/uprecords/lang/hu.xml b/sources/plugins/uprecords/lang/hu.xml
new file mode 100644
index 0000000..f06c6ca
--- /dev/null
+++ b/sources/plugins/uprecords/lang/hu.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+ Uprecords
+
+
+ Last refresh
+
+
+ #
+
+
+ Uptime
+
+
+ Rendszer
+
+
+ RendszerindÃtás idÅ‘pontja
+
+
diff --git a/sources/plugins/uprecords/lang/pl.xml b/sources/plugins/uprecords/lang/pl.xml
new file mode 100644
index 0000000..273837e
--- /dev/null
+++ b/sources/plugins/uprecords/lang/pl.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+ Uprecords
+
+
+ Last refresh
+
+
+ #
+
+
+ Czas pracy
+
+
+ System
+
+
+ Wystartował
+
+
diff --git a/sources/plugins/uprecords/lang/ro.xml b/sources/plugins/uprecords/lang/ro.xml
new file mode 100644
index 0000000..e9f609c
--- /dev/null
+++ b/sources/plugins/uprecords/lang/ro.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+ Uprecords
+
+
+ Ultimul refresh
+
+
+ #
+
+
+ Uptime
+
+
+ System
+
+
+ Boot up
+
+
diff --git a/sources/plugins/uprecords/lang/ru.xml b/sources/plugins/uprecords/lang/ru.xml
new file mode 100644
index 0000000..5d90677
--- /dev/null
+++ b/sources/plugins/uprecords/lang/ru.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+ СоÑтоÑное ÑиÑтемы
+
+
+ ПоÑледние обновление
+
+
+ #
+
+
+ Ðптайм
+
+
+ СиÑтема
+
+
+ Загружено
+
+
diff --git a/sources/plugins/uprecords/uprecords_bootstrap.html b/sources/plugins/uprecords/uprecords_bootstrap.html
new file mode 100644
index 0000000..180b74c
--- /dev/null
+++ b/sources/plugins/uprecords/uprecords_bootstrap.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+ #
+ Uptime
+ System
+ Boot up
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sources/read_config.php b/sources/read_config.php
new file mode 100644
index 0000000..407e6aa
--- /dev/null
+++ b/sources/read_config.php
@@ -0,0 +1,272 @@
+$group) {
+ if (strtoupper($name)=="MAIN") {
+ $name_prefix='PSI_';
+ } elseif (strtoupper(substr($name, 0, 7))=="SENSOR_") {
+ $name_prefix='PSI_'.strtoupper($name).'_';
+ } else {
+ $name_prefix='PSI_PLUGIN_'.strtoupper($name).'_';
+ }
+ foreach ($group as $param=>$value) {
+ if ((trim($value)==="") || (trim($value)==="0")) {
+ define($name_prefix.strtoupper($param), false);
+ } elseif (trim($value)==="1") {
+ define($name_prefix.strtoupper($param), true);
+ } else {
+ if (strstr($value, ',')) {
+ define($name_prefix.strtoupper($param), 'return '.var_export(preg_split('/\s*,\s*/', trim($value), -1, PREG_SPLIT_NO_EMPTY), 1).';');
+ } else {
+ define($name_prefix.strtoupper($param), trim($value));
+ }
+ }
+ }
+ }
+ }
+
+ if (defined('PSI_ALLOWED') && is_string(PSI_ALLOWED)) {
+ if (preg_match(ARRAY_EXP, PSI_ALLOWED)) {
+ $allowed = eval(strtolower(PSI_ALLOWED));
+ } else {
+ $allowed = array(strtolower(PSI_ALLOWED));
+ }
+
+ if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])) {
+ $ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
+ } else {
+ if (isset($_SERVER["HTTP_CLIENT_IP"])) {
+ $ip = $_SERVER["HTTP_CLIENT_IP"];
+ } else {
+ $ip = $_SERVER["REMOTE_ADDR"];
+ }
+ }
+ $ip = preg_replace("/^::ffff:/", "", strtolower($ip));
+
+ if (!in_array($ip, $allowed, true)) {
+ echo "Client IP address not allowed";
+ die();
+ }
+ }
+
+ /* default error handler */
+ if (function_exists('errorHandlerPsi')) {
+ restore_error_handler();
+ }
+
+ /* fatal errors only */
+ $old_err_rep = error_reporting();
+ error_reporting(E_ERROR);
+
+ /* get git revision */
+ if (file_exists(APP_ROOT.'/.git/HEAD')) {
+ $contents = @file_get_contents(APP_ROOT.'/.git/HEAD');
+ if ($contents && preg_match("/^ref:\s+(.*)\/([^\/\s]*)/m", $contents, $matches)) {
+ $contents = @file_get_contents(APP_ROOT.'/.git/'.$matches[1]."/".$matches[2]);
+ if ($contents && preg_match("/^([^\s]*)/m", $contents, $revision)) {
+ define('PSI_VERSION_STRING', PSI_VERSION ."-".$matches[2]."-".substr($revision[1], 0, 7));
+ } else {
+ define('PSI_VERSION_STRING', PSI_VERSION ."-".$matches[2]);
+ }
+ }
+ }
+ /* get svn revision */
+ if (!defined('PSI_VERSION_STRING') && file_exists(APP_ROOT.'/.svn/entries')) {
+ $contents = @file_get_contents(APP_ROOT.'/.svn/entries');
+ if ($contents && preg_match("/dir\n(.+)/", $contents, $matches)) {
+ define('PSI_VERSION_STRING', PSI_VERSION."-r".$matches[1]);
+ } else {
+ define('PSI_VERSION_STRING', PSI_VERSION);
+ }
+ }
+ if (!defined('PSI_VERSION_STRING')) {
+ define('PSI_VERSION_STRING', PSI_VERSION);
+ }
+
+ if (!defined('PSI_OS')) { //if not overloaded in phpsysinfo.ini
+ /* get Linux code page */
+ if (PHP_OS == 'Linux') {
+ if (file_exists('/etc/sysconfig/i18n')) {
+ $contents = @file_get_contents('/etc/sysconfig/i18n');
+ } elseif (file_exists('/etc/default/locale')) {
+ $contents = @file_get_contents('/etc/default/locale');
+ } elseif (file_exists('/etc/locale.conf')) {
+ $contents = @file_get_contents('/etc/locale.conf');
+ } elseif (file_exists('/etc/sysconfig/language')) {
+ $contents = @file_get_contents('/etc/sysconfig/language');
+ } elseif (file_exists('/etc/profile.d/lang.sh')) {
+ $contents = @file_get_contents('/etc/profile.d/lang.sh');
+ } elseif (file_exists('/etc/profile')) {
+ $contents = @file_get_contents('/etc/profile');
+ } else {
+ $contents = false;
+ if (file_exists('/system/build.prop')) { //Android
+ define('PSI_OS', 'Android');
+ if (!defined('PSI_MODE_POPEN')) { //if not overloaded in phpsysinfo.ini
+ if (!function_exists("proc_open")) { //proc_open function test by executing 'pwd' command
+ define('PSI_MODE_POPEN', true); //use popen() function - no stderr error handling
+ } else {
+ $out = '';
+ $err = '';
+ $pipes = array();
+ $descriptorspec = array(0=>array("pipe", "r"), 1=>array("pipe", "w"), 2=>array("pipe", "w"));
+ $process = proc_open("pwd 2>/dev/null ", $descriptorspec, $pipes);
+ if (!is_resource($process)) {
+ define('PSI_MODE_POPEN', true);
+ } else {
+ $w = null;
+ $e = null;
+
+ while (!(feof($pipes[1]) || feof($pipes[2]))) {
+ $read = array($pipes[1], $pipes[2]);
+
+ $n = stream_select($read, $w, $e, 5);
+
+ if (($n === false) || ($n === 0)) {
+ break;
+ }
+
+ foreach ($read as $r) {
+ if ($r == $pipes[1]) {
+ $out .= fread($r, 4096);
+ }
+ if ($r == $pipes[2]) {
+ $err .= fread($r, 4096);
+ }
+ }
+ }
+
+ if (is_null($out) || (trim($out) == "") || (substr(trim($out), 0, 1) != "/")) {
+ define('PSI_MODE_POPEN', true);
+ }
+ fclose($pipes[0]);
+ fclose($pipes[1]);
+ fclose($pipes[2]);
+ // It is important that you close any pipes before calling
+ // proc_close in order to avoid a deadlock
+ proc_close($process);
+ }
+ }
+ }
+ }
+ }
+ if (!(defined('PSI_SYSTEM_CODEPAGE') && defined('PSI_SYSTEM_LANG')) //also if both not overloaded in phpsysinfo.ini
+ && $contents && (preg_match('/^(LANG="?[^"\n]*"?)/m', $contents, $matches)
+ || preg_match('/^RC_(LANG="?[^"\n]*"?)/m', $contents, $matches)
+ || preg_match('/^\s*export (LANG="?[^"\n]*"?)/m', $contents, $matches))) {
+ if (!defined('PSI_SYSTEM_CODEPAGE') && @exec($matches[1].' locale -k LC_CTYPE 2>/dev/null', $lines)) { //if not overloaded in phpsysinfo.ini
+ foreach ($lines as $line) {
+ if (preg_match('/^charmap="?([^"]*)/', $line, $matches2)) {
+ define('PSI_SYSTEM_CODEPAGE', $matches2[1]);
+ break;
+ }
+ }
+ }
+ if (!defined('PSI_SYSTEM_LANG') && @exec($matches[1].' locale 2>/dev/null', $lines)) { //also if not overloaded in phpsysinfo.ini
+ foreach ($lines as $line) {
+ if (preg_match('/^LC_MESSAGES="?([^\."@]*)/', $line, $matches2)) {
+ $lang = "";
+ if (is_readable(APP_ROOT.'/data/languages.ini') && ($langdata = @parse_ini_file(APP_ROOT.'/data/languages.ini', true))) {
+ if (isset($langdata['Linux']['_'.$matches2[1]])) {
+ $lang = $langdata['Linux']['_'.$matches2[1]];
+ }
+ }
+ if ($lang == "") {
+ $lang = 'Unknown';
+ }
+ define('PSI_SYSTEM_LANG', $lang.' ('.$matches2[1].')');
+ break;
+ }
+ }
+ }
+ }
+ } elseif (PHP_OS == 'Haiku') {
+ if (!(defined('PSI_SYSTEM_CODEPAGE') && defined('PSI_SYSTEM_LANG')) //also if both not overloaded in phpsysinfo.ini
+ && @exec('locale -m 2>/dev/null', $lines)) {
+ foreach ($lines as $line) {
+ if (preg_match('/^"?([^\."]*)\.?([^"]*)/', $line, $matches2)) {
+
+ if (!defined('PSI_SYSTEM_CODEPAGE') && isset($matches2[2]) && !is_null($matches2[2]) && (trim($matches2[2]) != "")) { //also if not overloaded in phpsysinfo.ini
+ define('PSI_SYSTEM_CODEPAGE', $matches2[2]);
+ }
+
+ if (!defined('PSI_SYSTEM_LANG')) { //if not overloaded in phpsysinfo.ini
+ $lang = "";
+ if (is_readable(APP_ROOT.'/data/languages.ini') && ($langdata = @parse_ini_file(APP_ROOT.'/data/languages.ini', true))) {
+ if (isset($langdata['Linux']['_'.$matches2[1]])) {
+ $lang = $langdata['Linux']['_'.$matches2[1]];
+ }
+ }
+ if ($lang == "") {
+ $lang = 'Unknown';
+ }
+ define('PSI_SYSTEM_LANG', $lang.' ('.$matches2[1].')');
+ }
+ break;
+ }
+ }
+ }
+ } elseif (PHP_OS == 'Darwin') {
+ if (!defined('PSI_SYSTEM_LANG') //if not overloaded in phpsysinfo.ini
+ && @exec('defaults read /Library/Preferences/.GlobalPreferences AppleLocale 2>/dev/null', $lines)) {
+ $lang = "";
+ if (is_readable(APP_ROOT.'/data/languages.ini') && ($langdata = @parse_ini_file(APP_ROOT.'/data/languages.ini', true))) {
+ if (isset($langdata['Linux']['_'.$lines[0]])) {
+ $lang = $langdata['Linux']['_'.$lines[0]];
+ }
+ }
+ if ($lang == "") {
+ $lang = 'Unknown';
+ }
+ define('PSI_SYSTEM_LANG', $lang.' ('.$lines[0].')');
+ }
+ }
+ }
+
+ if (!defined('PSI_OS')) {
+ define('PSI_OS', PHP_OS);
+ }
+
+ if (!defined('PSI_SYSTEM_LANG')) {
+ define('PSI_SYSTEM_LANG', null);
+ }
+ if (!defined('PSI_SYSTEM_CODEPAGE')) { //if not overloaded in phpsysinfo.ini
+ if ((PSI_OS=='Android') || (PSI_OS=='Darwin')) {
+ define('PSI_SYSTEM_CODEPAGE', 'UTF-8');
+ } elseif (PSI_OS=='Minix') {
+ define('PSI_SYSTEM_CODEPAGE', 'CP437');
+ } else {
+ define('PSI_SYSTEM_CODEPAGE', null);
+ }
+ }
+
+ if (!defined('PSI_JSON_ISSUE')) { //if not overloaded in phpsysinfo.ini
+ if (simplexml_load_string(" \n ") !== simplexml_load_string(" ")) { // json_encode issue test
+ define('PSI_JSON_ISSUE', true); // Problem must be solved
+ }
+ }
+
+ /* restore error level */
+ error_reporting($old_err_rep);
+
+ /* restore error handler */
+ if (function_exists('errorHandlerPsi')) {
+ set_error_handler('errorHandlerPsi');
+ }
+}
diff --git a/sources/sample/distrotest/4MLinux/10.0-server.txt b/sources/sample/distrotest/4MLinux/10.0-server.txt
new file mode 100644
index 0000000..a3d6e28
--- /dev/null
+++ b/sources/sample/distrotest/4MLinux/10.0-server.txt
@@ -0,0 +1,2 @@
+----------/etc/4MLinux-version----------
+10.0
diff --git a/sources/sample/distrotest/ALT/6.0.0.txt b/sources/sample/distrotest/ALT/6.0.0.txt
new file mode 100644
index 0000000..1ffd513
--- /dev/null
+++ b/sources/sample/distrotest/ALT/6.0.0.txt
@@ -0,0 +1,14 @@
+----------lsb_release -a----------
+LSB Version: n/a
+Distributor ID: ALT
+Description: ALT Linux 6.0.0 Centaurus (Cheiron)
+Release: 6.0.0
+Codename: Cheiron
+----------/etc/altlinux-release----------
+ALT Linux 6.0.0 Centaurus (Cheiron)
+----------/etc/fedora-release----------
+ALT Linux 6.0.0 Centaurus (Cheiron)
+----------/etc/redhat-release----------
+ALT Linux 6.0.0 Centaurus (Cheiron)
+----------/etc/system-release----------
+ALT Linux 6.0.0 Centaurus (Cheiron)
diff --git a/sources/sample/distrotest/ALT/7.0.0-Simply.txt b/sources/sample/distrotest/ALT/7.0.0-Simply.txt
new file mode 100644
index 0000000..ed7f8cb
--- /dev/null
+++ b/sources/sample/distrotest/ALT/7.0.0-Simply.txt
@@ -0,0 +1,18 @@
+----------/etc/altlinux-release----------
+Simply Linux 7.0.0 (Dory)
+----------/etc/fedora-release----------
+Simply Linux 7.0.0 (Dory)
+----------/etc/os-release----------
+NAME="Simply Linux"
+VERSION="7.0.0 (Dory)"
+ID=altlinux
+VERSION_ID=7.0.0
+PRETTY_NAME="Simply Linux 7.0.0 (Dory)"
+ANSI_COLOR="1;36"
+CPE_NAME="cpe:/o:alt linux:slinux:7.0.0"
+HOME_URL="http://simplylinux.ru/"
+BUG_REPORT_URL="https://bugs.altlinux.org/"
+----------/etc/redhat-release----------
+Simply Linux 7.0.0 (Dory)
+----------/etc/system-release----------
+Simply Linux 7.0.0 (Dory)
diff --git a/sources/sample/distrotest/ALT/7.0.1.txt b/sources/sample/distrotest/ALT/7.0.1.txt
new file mode 100644
index 0000000..12e19e8
--- /dev/null
+++ b/sources/sample/distrotest/ALT/7.0.1.txt
@@ -0,0 +1,18 @@
+----------/etc/altlinux-release----------
+ALT Linux 7.0.1 Centaurus (Pholus)
+----------/etc/fedora-release----------
+ALT Linux 7.0.1 Centaurus (Pholus)
+----------/etc/os-release----------
+NAME="ALT Linux"
+VERSION="7.0.1 (Pholus)"
+ID=altlinux
+VERSION_ID=6.9.0
+PRETTY_NAME="ALT Linux 7.0.1 Centaurus (Pholus)"
+ANSI_COLOR="1;33"
+CPE_NAME="cpe:/o:alt linux:centaurus:7.0.1"
+HOME_URL="http://altlinux.ru/"
+BUG_REPORT_URL="https://bugs.altlinux.org/"
+----------/etc/redhat-release----------
+ALT Linux 7.0.1 Centaurus (Pholus)
+----------/etc/system-release----------
+ALT Linux 7.0.1 Centaurus (Pholus)
diff --git a/sources/sample/distrotest/Alpine/2.6.4.txt b/sources/sample/distrotest/Alpine/2.6.4.txt
new file mode 100644
index 0000000..d9d9129
--- /dev/null
+++ b/sources/sample/distrotest/Alpine/2.6.4.txt
@@ -0,0 +1,2 @@
+----------/etc/alpine-release----------
+2.6.4
diff --git a/sources/sample/distrotest/Amazon/2013.09.txt b/sources/sample/distrotest/Amazon/2013.09.txt
new file mode 100644
index 0000000..e1055f4
--- /dev/null
+++ b/sources/sample/distrotest/Amazon/2013.09.txt
@@ -0,0 +1,8 @@
+----------lsb_release -a----------
+LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
+Distributor ID: AmazonAMI
+Description: Amazon Linux AMI release 2013.09
+Release: 2013.09
+Codename: n/a
+----------/etc/system-release----------
+Amazon Linux AMI release 2013.09
diff --git a/sources/sample/distrotest/Arch/2011.08.19-ISO.txt b/sources/sample/distrotest/Arch/2011.08.19-ISO.txt
new file mode 100644
index 0000000..4849963
--- /dev/null
+++ b/sources/sample/distrotest/Arch/2011.08.19-ISO.txt
@@ -0,0 +1,2 @@
+----------/etc/arch-release----------
+Arch Linux Live ISO
diff --git a/sources/sample/distrotest/Arch/2013.11.01.txt b/sources/sample/distrotest/Arch/2013.11.01.txt
new file mode 100644
index 0000000..24e2af0
--- /dev/null
+++ b/sources/sample/distrotest/Arch/2013.11.01.txt
@@ -0,0 +1,10 @@
+----------/etc/arch-release----------
+----------/etc/os-release----------
+NAME="Arch Linux"
+ID=arch
+PRETTY_NAME="Arch Linux"
+ANSI_COLOR="0;36"
+HOME_URL="https://www.archlinux.org/"
+SUPPORT_URL="https://bbs.archlinux.org/"
+BUG_REPORT_URL="https://bugs.archlinux.org/"
+
diff --git a/sources/sample/distrotest/Arch/2014.01.05.txt b/sources/sample/distrotest/Arch/2014.01.05.txt
new file mode 100644
index 0000000..5696148
--- /dev/null
+++ b/sources/sample/distrotest/Arch/2014.01.05.txt
@@ -0,0 +1,22 @@
+----------lsb_release -a----------
+LSB Version: 1.4
+Distributor ID: Arch
+Description: Arch Linux
+Release: rolling
+Codename: n/a
+----------/etc/arch-release----------
+Arch Linux release
+----------/etc/lsb-release----------
+LSB_VERSION=1.4
+DISTRIB_ID=Arch
+DISTRIB_RELEASE=rolling
+DISTRIB_DESCRIPTION="Arch Linux"
+----------/etc/os-release----------
+NAME="Arch Linux"
+ID=arch
+PRETTY_NAME="Arch Linux"
+ANSI_COLOR="0;36"
+HOME_URL="https://www.archlinux.org/"
+SUPPORT_URL="https://bbs.archlinux.org/"
+BUG_REPORT_URL="https://bugs.archlinux.org/"
+
diff --git a/sources/sample/distrotest/BOSS/1.0-server.txt b/sources/sample/distrotest/BOSS/1.0-server.txt
new file mode 100644
index 0000000..969bef0
--- /dev/null
+++ b/sources/sample/distrotest/BOSS/1.0-server.txt
@@ -0,0 +1,10 @@
+----------lsb_release -a----------
+LSB Version: core-2.0-noarch:core-3.0-noarch:core-3.1-noarch:core-2.0-ia32:core-3.0-ia32:core-3.1-ia32
+Distributor ID: BOSS Server Beta
+Description: BOSS Server Beta GNU/Linux anant
+Release: anant
+Codename: 1.0
+----------/etc/boss_version----------
+anant
+----------/etc/debian_version----------
+lenny/sid
diff --git a/sources/sample/distrotest/BOSS/5.0.txt b/sources/sample/distrotest/BOSS/5.0.txt
new file mode 100644
index 0000000..2e88c7f
--- /dev/null
+++ b/sources/sample/distrotest/BOSS/5.0.txt
@@ -0,0 +1,19 @@
+----------lsb_release -a----------
+Distributor ID: BOSS
+Description: BOSS GNU/Linux 5.0 (anokha)
+Release: 5.0
+Codename: anokha
+----------/etc/os-release----------
+PRETTY_NAME="BOSS GNU/Linux 5.0 (anokha)"
+NAME="BOSS GNU/Linux"
+VERSION_ID="5.0"
+VERSION="5.0 (anokha)"
+ID=debian
+ANSI_COLOR="1;31"
+HOME_URL="http://www.bosslinux.in/"
+SUPPORT_URL="http://www.bosslinux.in/support-centre"
+BUG_REPORT_URL="http://bugzilla.bosslinux.in/"
+----------/etc/boss_version----------
+5.0
+----------/etc/debian_version----------
+7.0
diff --git a/sources/sample/distrotest/Calculate/13.11.txt b/sources/sample/distrotest/Calculate/13.11.txt
new file mode 100644
index 0000000..9193970
--- /dev/null
+++ b/sources/sample/distrotest/Calculate/13.11.txt
@@ -0,0 +1,10 @@
+----------/etc/gentoo-release----------
+Calculate Linux Desktop 13.11 XFCE
+----------/etc/os-release----------
+NAME=Gentoo
+ID=gentoo
+PRETTY_NAME="Gentoo/Linux"
+ANSI_COLOR="1;32"
+HOME_URL="http://www.gentoo.org/"
+SUPPORT_URL="http://www.gentoo.org/main/en/support.xml"
+BUG_REPORT_URL="https://bugs.gentoo.org/"
diff --git a/sources/sample/distrotest/Canaima/4.1.txt b/sources/sample/distrotest/Canaima/4.1.txt
new file mode 100644
index 0000000..c78400b
--- /dev/null
+++ b/sources/sample/distrotest/Canaima/4.1.txt
@@ -0,0 +1,19 @@
+----------lsb_release -a----------
+Distributor ID: Canaima
+Description: Canaima GNU/Linux 4.1 (kukenan)
+Release: 4.1
+Codename: kukenan
+----------/etc/os-release----------
+PRETTY_NAME="Canaima GNU/Linux 4.1 (kukenan)"
+NAME="Canaima GNU/Linux"
+VERSION_ID="4.1"
+VERSION="4.1 (kukenan)"
+ID=canaima
+ANSI_COLOR="1;31"
+HOME_URL="http://http://canaima.softwarelibre.gob.ve/"
+SUPPORT_URL="http://http://canaima.softwarelibre.gob.ve/Soporte"
+BUG_REPORT_URL="http://http://trac.canaima.softwarelibre.gob.ve/canaima/"
+----------/etc/canaima_version----------
+4.1
+----------/etc/debian_version----------
+Canaima
diff --git a/sources/sample/distrotest/CentOS/5.6.txt b/sources/sample/distrotest/CentOS/5.6.txt
new file mode 100644
index 0000000..2460517
--- /dev/null
+++ b/sources/sample/distrotest/CentOS/5.6.txt
@@ -0,0 +1,8 @@
+----------lsb_release -a----------
+LSB Version: :core-4.0-amd64:core-4.0-ia32:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-ia32:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-ia32:printing-4.0-noarch
+Distributor ID: CentOS
+Description: CentOS release 5.6 (Final)
+Release: 5.6
+Codename: Final
+----------/etc/redhat-release----------
+CentOS release 5.6 (Final)
diff --git a/sources/sample/distrotest/CentOS/6.5-SF.txt b/sources/sample/distrotest/CentOS/6.5-SF.txt
new file mode 100644
index 0000000..bd695c0
--- /dev/null
+++ b/sources/sample/distrotest/CentOS/6.5-SF.txt
@@ -0,0 +1,6 @@
+----------/etc/centos-release----------
+CentOS release 6.5 (Final)
+----------/etc/redhat-release----------
+CentOS release 6.5 (Final)
+----------/etc/system-release----------
+CentOS release 6.5 (Final)
diff --git a/sources/sample/distrotest/CentOS/6.5.txt b/sources/sample/distrotest/CentOS/6.5.txt
new file mode 100644
index 0000000..22cf73b
--- /dev/null
+++ b/sources/sample/distrotest/CentOS/6.5.txt
@@ -0,0 +1,14 @@
+----------lsb_release -a----------
+LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
+Distributor ID: CentOS
+Description: CentOS release 6.5 (Final)
+Release: 6.5
+Codename: Final
+----------/etc/centos-release----------
+CentOS release 6.5 (Final)
+----------/etc/lsb-release----------
+LSB_VERSION=base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
+----------/etc/redhat-release----------
+CentOS release 6.5 (Final)
+----------/etc/system-release----------
+CentOS release 6.5 (Final)
diff --git a/sources/sample/distrotest/CentOS/7.1.1503.txt b/sources/sample/distrotest/CentOS/7.1.1503.txt
new file mode 100644
index 0000000..0dbdc0c
--- /dev/null
+++ b/sources/sample/distrotest/CentOS/7.1.1503.txt
@@ -0,0 +1,23 @@
+----------/etc/centos-release----------
+CentOS Linux release 7.1.1503 (Core)
+----------/etc/os-release----------
+NAME="CentOS Linux"
+VERSION="7 (Core)"
+ID="centos"
+ID_LIKE="rhel fedora"
+VERSION_ID="7"
+PRETTY_NAME="CentOS Linux 7 (Core)"
+ANSI_COLOR="0;31"
+CPE_NAME="cpe:/o:centos:centos:7"
+HOME_URL="https://www.centos.org/"
+BUG_REPORT_URL="https://bugs.centos.org/"
+
+CENTOS_MANTISBT_PROJECT="CentOS-7"
+CENTOS_MANTISBT_PROJECT_VERSION="7"
+REDHAT_SUPPORT_PRODUCT="centos"
+REDHAT_SUPPORT_PRODUCT_VERSION="7"
+
+----------/etc/redhat-release----------
+CentOS Linux release 7.1.1503 (Core)
+----------/etc/system-release----------
+CentOS Linux release 7.1.1503 (Core)
diff --git a/sources/sample/distrotest/Chakra/2013.02.txt b/sources/sample/distrotest/Chakra/2013.02.txt
new file mode 100644
index 0000000..9ffe64e
--- /dev/null
+++ b/sources/sample/distrotest/Chakra/2013.02.txt
@@ -0,0 +1,21 @@
+----------lsb_release -a----------
+LSB Version: n/a
+Distributor ID: Chakra
+Description: Chakra
+Release: 2013.02
+Codename: Benz
+----------/etc/chakra-release----------
+----------/etc/lsb-release----------
+DISTRIB_ID="Chakra"
+DISTRIB_RELEASE="2013.02"
+DISTRIB_CODENAME="Benz"
+DISTRIB_DESCRIPTION="Chakra"
+----------/etc/os-release----------
+NAME="The Chakra-Project"
+VERSION="Benz"
+ID=chakra
+PRETTY_NAME="The Chakra-Project (Benz)"
+ANSI_COLOR="0;36"
+HOME_URL="http://www.chakra-linux.org/"
+BUG_REPORT_URL="http://chakra-linux.org/bugs/"
+
diff --git a/sources/sample/distrotest/ClearOS/6.4.0-Beta.txt b/sources/sample/distrotest/ClearOS/6.4.0-Beta.txt
new file mode 100644
index 0000000..ab0d0f3
--- /dev/null
+++ b/sources/sample/distrotest/ClearOS/6.4.0-Beta.txt
@@ -0,0 +1,6 @@
+----------/etc/clearos-release----------
+ClearOS Community release 6.4.0 Beta (Beta 2)
+----------/etc/redhat-release----------
+ClearOS Community release 6.4.0 Beta (Beta 2)
+----------/etc/system-release----------
+ClearOS Community release 6.4.0 Beta (Beta 2)
diff --git a/sources/sample/distrotest/Cloud/5.10.txt b/sources/sample/distrotest/Cloud/5.10.txt
new file mode 100644
index 0000000..6f63ce6
--- /dev/null
+++ b/sources/sample/distrotest/Cloud/5.10.txt
@@ -0,0 +1,10 @@
+----------lsb_release -a----------
+LSB Version: :core-4.0-amd64:core-4.0-ia32:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-ia32:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-ia32:printing-4.0-noarch
+Distributor ID: CloudLinuxServer
+Description: CloudLinux Server release 5.10 (Georgy Beregovoy)
+Release: 5.10
+Codename: GeorgyBeregovoy
+----------/etc/CloudLinux-release----------
+CloudLinux Server release 5.10 (Georgy Beregovoy)
+----------/etc/redhat-release----------
+CloudLinux Server release 5.10 (Georgy Beregovoy)
diff --git a/sources/sample/distrotest/Cloud/6.4.txt b/sources/sample/distrotest/Cloud/6.4.txt
new file mode 100644
index 0000000..bc44eb7
--- /dev/null
+++ b/sources/sample/distrotest/Cloud/6.4.txt
@@ -0,0 +1,12 @@
+----------lsb_release -a----------
+LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
+Distributor ID: CloudLinuxServer
+Description: CloudLinux Server release 6.4
+Release: 6.4
+Codename: n/a
+----------/etc/lsb-release----------
+LSB_VERSION=base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
+----------/etc/redhat-release----------
+CloudLinux Server release 6.4
+----------/etc/system-release----------
+CloudLinux Server release 6.4
diff --git a/sources/sample/distrotest/CoreOS/367.1.0.txt b/sources/sample/distrotest/CoreOS/367.1.0.txt
new file mode 100644
index 0000000..d1a9275
--- /dev/null
+++ b/sources/sample/distrotest/CoreOS/367.1.0.txt
@@ -0,0 +1,15 @@
+----------/etc/lsb-release----------
+DISTRIB_ID=CoreOS
+DISTRIB_RELEASE=367.1.0
+DISTRIB_CODENAME="Red Dog"
+DISTRIB_DESCRIPTION="CoreOS 367.1.0"
+----------/etc/os-release----------
+NAME=CoreOS
+ID=coreos
+VERSION=367.1.0
+VERSION_ID=367.1.0
+BUILD_ID=
+PRETTY_NAME="CoreOS 367.1.0"
+ANSI_COLOR="1;32"
+HOME_URL="https://coreos.com/"
+BUG_REPORT_URL="https://github.com/coreos/bugs/issues"
diff --git a/sources/sample/distrotest/Crux/2.8.txt b/sources/sample/distrotest/Crux/2.8.txt
new file mode 100644
index 0000000..ba63337
--- /dev/null
+++ b/sources/sample/distrotest/Crux/2.8.txt
@@ -0,0 +1,2 @@
+----------/usr/bin/crux----------
+CRUX version 2.8
diff --git a/sources/sample/distrotest/Debian/5.0.3.txt b/sources/sample/distrotest/Debian/5.0.3.txt
new file mode 100644
index 0000000..aa75d5a
--- /dev/null
+++ b/sources/sample/distrotest/Debian/5.0.3.txt
@@ -0,0 +1,2 @@
+----------/etc/debian_version----------
+5.0.3
diff --git a/sources/sample/distrotest/Debian/6.0.6.txt b/sources/sample/distrotest/Debian/6.0.6.txt
new file mode 100644
index 0000000..0ecd1fa
--- /dev/null
+++ b/sources/sample/distrotest/Debian/6.0.6.txt
@@ -0,0 +1,7 @@
+----------lsb_release -a----------
+Distributor ID: Debian
+Description: Debian GNU/Linux 6.0.6 (squeeze)
+Release: 6.0.6
+Codename: squeeze
+----------/etc/debian_version----------
+6.0.6
diff --git a/sources/sample/distrotest/Debian/8-20140106-netinstall.txt b/sources/sample/distrotest/Debian/8-20140106-netinstall.txt
new file mode 100644
index 0000000..6cebf75
--- /dev/null
+++ b/sources/sample/distrotest/Debian/8-20140106-netinstall.txt
@@ -0,0 +1,6 @@
+----------/etc/default-release----------
+jessie
+----------/etc/lsb-release----------
+DISTRIB_ID=Debian
+DISTRIB_DESCRIPTION="Debian GNU/Linux installer"
+DISTRIB_RELEASE="8 (jessie) - installer build 20140106-00:05"
diff --git a/sources/sample/distrotest/Debian/8-20140106.txt b/sources/sample/distrotest/Debian/8-20140106.txt
new file mode 100644
index 0000000..0ac168a
--- /dev/null
+++ b/sources/sample/distrotest/Debian/8-20140106.txt
@@ -0,0 +1,15 @@
+----------lsb_release -a----------
+Distributor ID: Debian
+Description: Debian GNU/Linux testing (jessie)
+Release: testing
+Codename: jessie
+----------/etc/os-release----------
+PRETTY_NAME="Debian GNU/Linux jessie/sid"
+NAME="Debian GNU/Linux"
+ID=debian
+ANSI_COLOR="1;31"
+HOME_URL="http://www.debian.org/"
+SUPPORT_URL="http://www.debian.org/support/"
+BUG_REPORT_URL="http://bugs.debian.org/"
+----------/etc/debian_version----------
+jessie/sid
diff --git a/sources/sample/distrotest/Deepin/2013.txt b/sources/sample/distrotest/Deepin/2013.txt
new file mode 100644
index 0000000..97310d9
--- /dev/null
+++ b/sources/sample/distrotest/Deepin/2013.txt
@@ -0,0 +1,22 @@
+----------lsb_release -a----------
+Distributor ID: LinuxDeepin
+Description: LinuxDeepin 2013
+Release: 2013
+Codename: raring
+----------/etc/lsb-release----------
+DISTRIB_ID=LinuxDeepin
+DISTRIB_RELEASE=2013
+DISTRIB_CODENAME=raring
+DISTRIB_DESCRIPTION="LinuxDeepin 2013"
+----------/etc/os-release----------
+NAME="Ubuntu"
+VERSION="13.04, Raring Ringtail"
+ID=ubuntu
+ID_LIKE=debian
+PRETTY_NAME="Ubuntu 13.04"
+VERSION_ID="13.04"
+HOME_URL="http://www.ubuntu.com/"
+SUPPORT_URL="http://help.ubuntu.com/"
+BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
+----------/etc/debian_version----------
+wheezy/sid
diff --git a/sources/sample/distrotest/Eisfair/1-2.6.5.txt b/sources/sample/distrotest/Eisfair/1-2.6.5.txt
new file mode 100644
index 0000000..6a4d778
--- /dev/null
+++ b/sources/sample/distrotest/Eisfair/1-2.6.5.txt
@@ -0,0 +1,10 @@
+----------lsb_release -a----------
+LSB Version: n/a
+Distributor ID: eisfair project
+Description: eisfair-1
+Release: 2.6.5
+Codename: n/a
+----------/etc/version----------
+2.6.5
+----------/etc/eisfair-system----------
+eisfair-1
diff --git a/sources/sample/distrotest/Eisfair/2-1.8.1.txt b/sources/sample/distrotest/Eisfair/2-1.8.1.txt
new file mode 100644
index 0000000..41b9c1f
--- /dev/null
+++ b/sources/sample/distrotest/Eisfair/2-1.8.1.txt
@@ -0,0 +1,4 @@
+----------/etc/version----------
+1.8.1
+----------/etc/eisfair-system----------
+eisfair-2
diff --git a/sources/sample/distrotest/Fedora/20-lsb.txt b/sources/sample/distrotest/Fedora/20-lsb.txt
new file mode 100644
index 0000000..98f2021
--- /dev/null
+++ b/sources/sample/distrotest/Fedora/20-lsb.txt
@@ -0,0 +1,26 @@
+----------lsb_release -a----------
+LSB Version: :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch
+Distributor ID: Fedora
+Description: Fedora release 20 (Heisenbug)
+Release: 20
+Codename: Heisenbug
+----------/etc/fedora-release----------
+Fedora release 20 (Heisenbug)
+----------/etc/os-release----------
+NAME=Fedora
+VERSION="20 (Heisenbug)"
+ID=fedora
+VERSION_ID=20
+PRETTY_NAME="Fedora 20 (Heisenbug)"
+ANSI_COLOR="0;34"
+CPE_NAME="cpe:/o:fedoraproject:fedora:20"
+HOME_URL="https://fedoraproject.org/"
+BUG_REPORT_URL="https://bugzilla.redhat.com/"
+REDHAT_BUGZILLA_PRODUCT="Fedora"
+REDHAT_BUGZILLA_PRODUCT_VERSION=20
+REDHAT_SUPPORT_PRODUCT="Fedora"
+REDHAT_SUPPORT_PRODUCT_VERSION=20
+----------/etc/redhat-release----------
+Fedora release 20 (Heisenbug)
+----------/etc/system-release----------
+Fedora release 20 (Heisenbug)
diff --git a/sources/sample/distrotest/Fedora/20.txt b/sources/sample/distrotest/Fedora/20.txt
new file mode 100644
index 0000000..05d3e5c
--- /dev/null
+++ b/sources/sample/distrotest/Fedora/20.txt
@@ -0,0 +1,20 @@
+----------/etc/fedora-release----------
+Fedora release 20 (Heisenbug)
+----------/etc/os-release----------
+NAME=Fedora
+VERSION="20 (Heisenbug)"
+ID=fedora
+VERSION_ID=20
+PRETTY_NAME="Fedora 20 (Heisenbug)"
+ANSI_COLOR="0;34"
+CPE_NAME="cpe:/o:fedoraproject:fedora:20"
+HOME_URL="https://fedoraproject.org/"
+BUG_REPORT_URL="https://bugzilla.redhat.com/"
+REDHAT_BUGZILLA_PRODUCT="Fedora"
+REDHAT_BUGZILLA_PRODUCT_VERSION=20
+REDHAT_SUPPORT_PRODUCT="Fedora"
+REDHAT_SUPPORT_PRODUCT_VERSION=20
+----------/etc/redhat-release----------
+Fedora release 20 (Heisenbug)
+----------/etc/system-release----------
+Fedora release 20 (Heisenbug)
diff --git a/sources/sample/distrotest/Fedora/4.txt b/sources/sample/distrotest/Fedora/4.txt
new file mode 100644
index 0000000..aeba173
--- /dev/null
+++ b/sources/sample/distrotest/Fedora/4.txt
@@ -0,0 +1,12 @@
+----------lsb_release -a----------
+LSB Version: 1.3
+Distributor ID: FedoraCore
+Description: Fedora Core release 4 (Stentz)
+Release: 4
+Codename: Stentz
+----------/etc/fedora-release----------
+Fedora Core release 4 (Stentz)
+----------/etc/lsb-release----------
+LSB_VERSION="1.3"
+----------/etc/redhat-release----------
+Fedora Core release 4 (Stentz)
diff --git a/sources/sample/distrotest/Foresight/2.5.3.txt b/sources/sample/distrotest/Foresight/2.5.3.txt
new file mode 100644
index 0000000..f1db333
--- /dev/null
+++ b/sources/sample/distrotest/Foresight/2.5.3.txt
@@ -0,0 +1,2 @@
+----------/etc/distro-release----------
+Foresight
diff --git a/sources/sample/distrotest/Frugalware/1.9.txt b/sources/sample/distrotest/Frugalware/1.9.txt
new file mode 100644
index 0000000..a1ec4ce
--- /dev/null
+++ b/sources/sample/distrotest/Frugalware/1.9.txt
@@ -0,0 +1,9 @@
+----------/etc/frugalware-release----------
+Frugalware 1.9 (Arcturus)
+----------/etc/os-release----------
+NAME="Frugalware"
+VERSION="1.9 (Arcturus)"
+ID=frugalware
+VERSION_ID="1.9"
+PRETTY_NAME="Frugalware 1.9 (Arcturus)"
+ANSI_COLOR="1;36"
diff --git a/sources/sample/distrotest/Fuduntu/2013.2.txt b/sources/sample/distrotest/Fuduntu/2013.2.txt
new file mode 100644
index 0000000..d903419
--- /dev/null
+++ b/sources/sample/distrotest/Fuduntu/2013.2.txt
@@ -0,0 +1,19 @@
+----------lsb_release -a----------
+LSB Version: :core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
+Distributor ID: Fuduntu
+Description: n/a
+Release: 2013.2
+Codename: Punny Name Serious Distro
+----------/etc/fedora-release----------
+Fuduntu 2013.2 (Punny Name Serious Distro)
+----------/etc/fuduntu-release----------
+Fuduntu 2013.2 (Punny Name Serious Distro)
+----------/etc/lsb-release----------
+DISTRIB_ID=Fuduntu
+DISTRIB_RELEASE=2013.2
+DISTRIB_CODENAME=Fuduntu
+DISTRIB_DESCRIPTION="Punny Name Serious Distro"
+----------/etc/redhat-release----------
+Fuduntu 2013.2 (Punny Name Serious Distro)
+----------/etc/system-release----------
+Fuduntu 2013.2 (Punny Name Serious Distro)
diff --git a/sources/sample/distrotest/Generations/3.1.txt b/sources/sample/distrotest/Generations/3.1.txt
new file mode 100644
index 0000000..85258ec
--- /dev/null
+++ b/sources/sample/distrotest/Generations/3.1.txt
@@ -0,0 +1,22 @@
+----------lsb_release -a----------
+LSB Version: core-3.1-noarch
+Distributor ID: generations
+Description: Generations Linux
+Release: 3.1
+Codename: vortex
+----------/etc/lsb-release----------
+DISTRIB_ID="generations"
+DISTRIB_DESCRIPTION="Generations Linux"
+DISTRIB_RELEASE="3.1"
+DISTRIB_CODENAME="vortex"
+LSB_VERSION="core-3.1-noarch"
+----------/etc/os-release----------
+# http://www.freedesktop.org/software/systemd/man/os-release.html
+NAME="Generations Linux"
+VERSION="3.1 (vortex)"
+ID=generations
+VERSION_ID=3.1
+PRETTY_NAME="$NAME $VERSION"
+HOME_URL="http://softcraft.org"
+BUILD_ID="2013-05-04 1527"
+ANSI_COLOR="1;34"
diff --git a/sources/sample/distrotest/Gentoo/2.2-NAME.txt b/sources/sample/distrotest/Gentoo/2.2-NAME.txt
new file mode 100644
index 0000000..1d2b749
--- /dev/null
+++ b/sources/sample/distrotest/Gentoo/2.2-NAME.txt
@@ -0,0 +1,18 @@
+----------lsb_release -a----------
+LSB Version: n/a
+Distributor ID: Gentoo
+Description: NAME=Gentoo
+Release: n/a
+Codename: n/a
+----------/etc/gentoo-release----------
+Gentoo Base System release 2.2
+----------/etc/lsb-release----------
+DISTRIB_ID="Gentoo"
+----------/etc/os-release----------
+NAME=Gentoo
+ID=gentoo
+PRETTY_NAME="Gentoo/Linux"
+ANSI_COLOR="1;32"
+HOME_URL="http://www.gentoo.org/"
+SUPPORT_URL="http://www.gentoo.org/main/en/support.xml"
+BUG_REPORT_URL="https://bugs.gentoo.org/"
diff --git a/sources/sample/distrotest/Gentoo/2.2.txt b/sources/sample/distrotest/Gentoo/2.2.txt
new file mode 100644
index 0000000..e143316
--- /dev/null
+++ b/sources/sample/distrotest/Gentoo/2.2.txt
@@ -0,0 +1,18 @@
+----------lsb_release -a----------
+LSB Version: n/a
+Distributor ID: Gentoo
+Description: Gentoo Base System release 2.2
+Release: 2.2
+Codename: n/a
+----------/etc/gentoo-release----------
+Gentoo Base System release 2.2
+----------/etc/lsb-release----------
+DISTRIB_ID="Gentoo"
+----------/etc/os-release----------
+NAME=Gentoo
+ID=gentoo
+PRETTY_NAME="Gentoo/Linux"
+ANSI_COLOR="1;32"
+HOME_URL="http://www.gentoo.org/"
+SUPPORT_URL="http://www.gentoo.org/main/en/support.xml"
+BUG_REPORT_URL="https://bugs.gentoo.org/"
diff --git a/sources/sample/distrotest/Gobo/015.beta2.txt b/sources/sample/distrotest/Gobo/015.beta2.txt
new file mode 100644
index 0000000..5ea3450
--- /dev/null
+++ b/sources/sample/distrotest/Gobo/015.beta2.txt
@@ -0,0 +1,2 @@
+----------/etc/GoboLinuxVersion----------
+015.beta2
diff --git a/sources/sample/distrotest/Handy/2.0.txt b/sources/sample/distrotest/Handy/2.0.txt
new file mode 100644
index 0000000..3b10bb9
--- /dev/null
+++ b/sources/sample/distrotest/Handy/2.0.txt
@@ -0,0 +1,19 @@
+----------lsb_release -a----------
+LSB Version: core-2.0-ia32:core-2.0-noarch:core-3.0-ia32:core-3.0-noarch:core-3.1-ia32:core-3.1-noarch:core-3.2-ia32:core-3.2-noarch:core-4.0-ia32:core-4.0-noarch:core-4.1-ia32:core-4.1-noarch:cxx-3.0-ia32:cxx-3.0-noarch:cxx-3.1-ia32:cxx-3.1-noarch:cxx-3.2-ia32:cxx-3.2-noarch:cxx-4.0-ia32:cxx-4.0-noarch:cxx-4.1-ia32:cxx-4.1-noarch:desktop-3.1-ia32:desktop-3.1-noarch:desktop-3.2-ia32:desktop-3.2-noarch:desktop-4.0-ia32:desktop-4.0-noarch:desktop-4.1-ia32:desktop-4.1-noarch:graphics-2.0-ia32:graphics-2.0-noarch:graphics-3.0-ia32:graphics-3.0-noarch:graphics-3.1-ia32:graphics-3.1-noarch:graphics-3.2-ia32:graphics-3.2-noarch:graphics-4.0-ia32:graphics-4.0-noarch:graphics-4.1-ia32:graphics-4.1-noarch:languages-3.2-ia32:languages-3.2-noarch:languages-4.0-ia32:languages-4.0-noarch:languages-4.1-ia32:languages-4.1-noarch:multimedia-3.2-ia32:multimedia-3.2-noarch:multimedia-4.0-ia32:multimedia-4.0-noarch:multimedia-4.1-ia32:multimedia-4.1-noarch:printing-3.2-ia32:printing-3.2-noarch:printing-4.0-ia32:printing-4.0-noarch:printing-4.1-ia32:printing-4.1-noarch:qt4-3.1-ia32:qt4-3.1-noarch:security-4.0-ia32:security-4.0-noarch:security-4.1-ia32:security-4.1-noarch
+Distributor ID: HandyLinux
+Description: HandyLinux GNU/Linux 8.0 (jessie)
+Release: 8.0
+Codename: jessie
+----------/etc/os-release----------
+PRETTY_NAME="Debian GNU/Linux 8 (jessie)"
+NAME="Debian GNU/Linux"
+VERSION_ID="8"
+VERSION="8 (jessie)"
+ID=debian
+HOME_URL="http://www.debian.org/"
+SUPPORT_URL="http://www.debian.org/support/"
+BUG_REPORT_URL="https://bugs.debian.org/"
+----------/etc/debian_version----------
+8.0
+----------/etc/handylinux_version----------
+HandyLinux-2.0
diff --git a/sources/sample/distrotest/HipServ/2.6.txt b/sources/sample/distrotest/HipServ/2.6.txt
new file mode 100644
index 0000000..e6d387f
--- /dev/null
+++ b/sources/sample/distrotest/HipServ/2.6.txt
@@ -0,0 +1,2 @@
+----------/etc/redhat-release----------
+HipServ
diff --git a/sources/sample/distrotest/IPFire/2.13.txt b/sources/sample/distrotest/IPFire/2.13.txt
new file mode 100644
index 0000000..65d2da8
--- /dev/null
+++ b/sources/sample/distrotest/IPFire/2.13.txt
@@ -0,0 +1,2 @@
+----------/etc/system-release----------
+IPFire 2.13 (i586) - core74
diff --git a/sources/sample/distrotest/KaOS/2014.0301.txt b/sources/sample/distrotest/KaOS/2014.0301.txt
new file mode 100644
index 0000000..4b22806
--- /dev/null
+++ b/sources/sample/distrotest/KaOS/2014.0301.txt
@@ -0,0 +1,21 @@
+----------lsb_release -a----------
+LSB Version: n/a
+Distributor ID: KaOS
+Description: KaOS
+Release: 2014.0301
+Codename: n/a
+----------/etc/KaOS-release----------
+KaOS release 2014.0301
+----------/etc/lsb-release----------
+DISTRIB_ID="KaOS"
+DISTRIB_RELEASE="2014.0301"
+DISTRIB_DESCRIPTION="KaOS"
+----------/etc/os-release----------
+NAME="KaOS"
+VERSION="2014"
+ID=kaos
+PRETTY_NAME="KaOS (2014)"
+ANSI_COLOR="0;36"
+HOME_URL="http://kaosx.us/"
+
+
diff --git a/sources/sample/distrotest/Korora/20.txt b/sources/sample/distrotest/Korora/20.txt
new file mode 100644
index 0000000..e3d036f
--- /dev/null
+++ b/sources/sample/distrotest/Korora/20.txt
@@ -0,0 +1,21 @@
+----------lsb_release -a----------
+LSB Version: :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch
+Distributor ID: Korora
+Description: Korora release 20 (Peach)
+Release: 20
+Codename: Peach
+----------/etc/fedora-release----------
+Korora release 20 (Peach)
+----------/etc/os-release----------
+NAME=Korora
+VERSION="20 (Peach)"
+ID=korora
+VERSION_ID=20
+PRETTY_NAME="Korora 20 (Peach)"
+ANSI_COLOR="0;34"
+CPE_NAME="cpe:/o:kororaproject:korora:20"
+HOME_URL="https://kororaproject.org/"
+----------/etc/redhat-release----------
+Korora release 20 (Peach)
+----------/etc/system-release----------
+Korora release 20 (Peach)
diff --git a/sources/sample/distrotest/Linaro/13.12.txt b/sources/sample/distrotest/Linaro/13.12.txt
new file mode 100644
index 0000000..d6cf3da
--- /dev/null
+++ b/sources/sample/distrotest/Linaro/13.12.txt
@@ -0,0 +1,22 @@
+----------lsb_release -a----------
+Distributor ID: Linaro
+Description: Linaro 13.12
+Release: 13.12
+Codename: saucy
+----------/etc/lsb-release----------
+DISTRIB_ID=Linaro
+DISTRIB_RELEASE=13.12
+DISTRIB_CODENAME=saucy
+DISTRIB_DESCRIPTION="Linaro 13.12"
+----------/etc/os-release----------
+NAME="Linaro"
+VERSION="13.12"
+ID=linaro
+ID_LIKE=debian
+PRETTY_NAME="Linaro 13.12"
+VERSION_ID="13.12"
+HOME_URL="http://www.linaro.org/"
+SUPPORT_URL="http://linaro.zendesk.com/"
+BUG_REPORT_URL="http://bugs.launchpad.net/linaro-ubuntu"
+----------/etc/debian_version----------
+wheezy/sid
diff --git a/sources/sample/distrotest/Lunar/1.7.0-rc2.txt b/sources/sample/distrotest/Lunar/1.7.0-rc2.txt
new file mode 100644
index 0000000..f81bf6e
--- /dev/null
+++ b/sources/sample/distrotest/Lunar/1.7.0-rc2.txt
@@ -0,0 +1,13 @@
+----------/etc/lsb-release----------
+DISTRIB_ID="Lunar Linux"
+DISTRIB_RELEASE="1.7.0-rc2-x86_64"
+DISTRIB_CODENAME="Sinus Successus"
+DISTRIB_DESCRIPTION="Lunar Linux 1.7.0-rc2-x86_64 (Sinus Successus - 20140913)"
+----------/etc/os-release----------
+NAME="Lunar Linux"
+VERSION="1.7.0-rc2-x86_64 (Sinus Successus)"
+ID=lunar
+VERSION_ID=1.7.0-rc2-x86_64
+PRETTY_NAME="Lunar Linux 1.7.0-rc2-x86_64 (Sinus Successus - 20140913)"
+ANSI_COLOR="1;34"
+HOME_URL="http://lunar-linux.org/"
diff --git a/sources/sample/distrotest/Mageia/4.txt b/sources/sample/distrotest/Mageia/4.txt
new file mode 100644
index 0000000..2ddbde3
--- /dev/null
+++ b/sources/sample/distrotest/Mageia/4.txt
@@ -0,0 +1,36 @@
+----------lsb_release -a----------
+LSB Version: *
+Distributor ID: Mageia
+Description: Mageia 4
+Release: 4
+Codename: thornicroft
+----------/etc/lsb-release----------
+LSB_VERSION=
+DISTRIB_ID="Mageia"
+DISTRIB_RELEASE=4
+DISTRIB_CODENAME=thornicroft
+DISTRIB_DESCRIPTION="Mageia 4"
+----------/etc/mageia-release----------
+Mageia release 4 (Cauldron) for x86_64
+----------/etc/mandrake-release----------
+Mageia release 4 (Cauldron) for x86_64
+----------/etc/mandrakelinux-release----------
+Mageia release 4 (Cauldron) for x86_64
+----------/etc/mandriva-release----------
+Mageia release 4 (Cauldron) for x86_64
+----------/etc/os-release----------
+NAME="Mageia"
+VERSION="4"
+ID=mageia
+ID_LIKE="mandriva fedora"
+PRETTY_NAME="Mageia 4"
+ANSI_COLOR="1;36"
+HOME_URL="http://www.mageia.org/"
+SUPPORT_URL="http://www.mageia.org/support/"
+BUG_REPORT_URL="https://bugs.mageia.org/"
+----------/etc/redhat-release----------
+Mageia release 4 (Cauldron) for x86_64
+----------/etc/version----------
+4 0.5 cauldron
+----------/etc/release----------
+Mageia release 4 (Cauldron) for x86_64
diff --git a/sources/sample/distrotest/Mandrake/2011.0.txt b/sources/sample/distrotest/Mandrake/2011.0.txt
new file mode 100644
index 0000000..e8023cd
--- /dev/null
+++ b/sources/sample/distrotest/Mandrake/2011.0.txt
@@ -0,0 +1,24 @@
+----------lsb_release -a----------
+LSB Version: *
+Distributor ID: MandrivaLinux
+Description: Mandriva Linux 2011.0
+Release: 2011.0
+Codename: turtle
+----------/etc/lsb-release----------
+LSB_VERSION=
+DISTRIB_ID=MandrivaLinux
+DISTRIB_RELEASE=2011.0
+DISTRIB_CODENAME=turtle
+DISTRIB_DESCRIPTION="Mandriva Linux 2011.0"
+----------/etc/mandrake-release----------
+Mandriva Linux release 2011.0 (Official) for x86_64
+----------/etc/mandrakelinux-release----------
+Mandriva Linux release 2011.0 (Official) for x86_64
+----------/etc/mandriva-release----------
+Mandriva Linux release 2011.0 (Official) for x86_64
+----------/etc/redhat-release----------
+Mandriva Linux release 2011.0 (Official) for x86_64
+----------/etc/version----------
+2011.0.0 2 cooker
+----------/etc/release----------
+Mandriva Linux release 2011.0 (Official) for x86_64
diff --git a/sources/sample/distrotest/Mandrake/9.2.txt b/sources/sample/distrotest/Mandrake/9.2.txt
new file mode 100644
index 0000000..beb9b8e
--- /dev/null
+++ b/sources/sample/distrotest/Mandrake/9.2.txt
@@ -0,0 +1,16 @@
+----------lsb_release -a----------
+LSB Version: 1.3
+Distributor ID: Mandrake
+Description: Mandrake Linux
+Release: 9.2
+Codename: FiveStar
+----------/etc/lsb-release----------
+LSB_VERSION=1.3
+DISTRIB_ID=Mandrake
+DISTRIB_RELEASE=9.2
+DISTRIB_CODENAME=FiveStar
+DISTRIB_DESCRIPTION="Mandrake Linux"
+----------/etc/mandrake-release----------
+Mandrake Linux release 9.2 (FiveStar) for i586
+----------/etc/redhat-release----------
+Mandrake Linux release 9.2 (FiveStar) for i586
diff --git a/sources/sample/distrotest/Manjaro/0.8.8.txt b/sources/sample/distrotest/Manjaro/0.8.8.txt
new file mode 100644
index 0000000..1d15028
--- /dev/null
+++ b/sources/sample/distrotest/Manjaro/0.8.8.txt
@@ -0,0 +1,21 @@
+----------lsb_release -a----------
+LSB Version: n/a
+Distributor ID: ManjaroLinux
+Description: Manjaro Linux
+Release: 0.8.8
+Codename: Ascella
+----------/etc/lsb-release----------
+DISTRIB_ID=ManjaroLinux
+DISTRIB_RELEASE=0.8.8
+DISTRIB_CODENAME=Ascella
+DISTRIB_DESCRIPTION="Manjaro Linux"
+----------/etc/manjaro-release----------
+Manjaro Linux
+----------/etc/os-release----------
+NAME="Manjaro Linux"
+ID=manjaro
+PRETTY_NAME="Manjaro Linux"
+ANSI_COLOR="1;32"
+HOME_URL="http://www.manjaro.org/"
+SUPPORT_URL="http://www.manjaro.org/"
+BUG_REPORT_URL="http://bugs.manjaro.org/"
diff --git a/sources/sample/distrotest/Mer/0.2011.txt b/sources/sample/distrotest/Mer/0.2011.txt
new file mode 100644
index 0000000..f04291c
--- /dev/null
+++ b/sources/sample/distrotest/Mer/0.2011.txt
@@ -0,0 +1,18 @@
+----------lsb_release -a----------
+LSB Version: :core-3.1-ia32:core-3.1-noarch:core-3.2-ia32:core-3.2-noarch:core-4.0-ia32:core-4.0-noarch:desktop-3.1-ia32:desktop-3.1-noarch:desktop-3.2-ia32:desktop-3.2-noarch:desktop-4.0-ia32:desktop-4.0-noarch
+Distributor ID: Mer
+Description: Mer release 0.2011 (Mer)
+Release: 0.2011
+Codename: Mer
+----------/etc/meego-release----------
+Mer release 0.2011 (Mer)
+BUILD: Jolla-1.0.8.19-SDK_Build_Engine-i486
+----------/etc/mer-release----------
+Mer release 0.2011 (Mer)
+BUILD: Jolla-1.0.8.19-SDK_Build_Engine-i486
+----------/etc/moblin-release----------
+Mer release 0.2011 (Mer)
+BUILD: Jolla-1.0.8.19-SDK_Build_Engine-i486
+----------/etc/system-release----------
+Mer release 0.2011 (Mer)
+BUILD: Jolla-1.0.8.19-SDK_Build_Engine-i486
diff --git a/sources/sample/distrotest/Mint/13.txt b/sources/sample/distrotest/Mint/13.txt
new file mode 100644
index 0000000..a47db71
--- /dev/null
+++ b/sources/sample/distrotest/Mint/13.txt
@@ -0,0 +1,12 @@
+----------lsb_release -a----------
+Distributor ID: LinuxMint
+Description: Linux Mint 13 Maya
+Release: 13
+Codename: maya
+----------/etc/lsb-release----------
+DISTRIB_ID=LinuxMint
+DISTRIB_RELEASE=13
+DISTRIB_CODENAME=maya
+DISTRIB_DESCRIPTION="Linux Mint 13 Maya"
+----------/etc/debian_version----------
+wheezy/sid
diff --git a/sources/sample/distrotest/Mint/14.txt b/sources/sample/distrotest/Mint/14.txt
new file mode 100644
index 0000000..0f50cd3
--- /dev/null
+++ b/sources/sample/distrotest/Mint/14.txt
@@ -0,0 +1,19 @@
+----------lsb_release -a----------
+Distributor ID: LinuxMint
+Description: Linux Mint 14 Nadia
+Release: 14
+Codename: nadia
+----------/etc/lsb-release----------
+DISTRIB_ID=LinuxMint
+DISTRIB_RELEASE=14
+DISTRIB_CODENAME=nadia
+DISTRIB_DESCRIPTION="Linux Mint 14 Nadia"
+----------/etc/os-release----------
+NAME="Ubuntu"
+VERSION="12.10, Quantal Quetzal"
+ID=ubuntu
+ID_LIKE=debian
+PRETTY_NAME="Ubuntu quantal (12.10)"
+VERSION_ID="12.10"
+----------/etc/debian_version----------
+wheezy/sid
diff --git a/sources/sample/distrotest/Mint/15.txt b/sources/sample/distrotest/Mint/15.txt
new file mode 100644
index 0000000..a858f58
--- /dev/null
+++ b/sources/sample/distrotest/Mint/15.txt
@@ -0,0 +1,22 @@
+----------lsb_release -a----------
+Distributor ID: LinuxMint
+Description: Linux Mint 15 Olivia
+Release: 15
+Codename: olivia
+----------/etc/lsb-release----------
+DISTRIB_ID=LinuxMint
+DISTRIB_RELEASE=15
+DISTRIB_CODENAME=olivia
+DISTRIB_DESCRIPTION="Linux Mint 15 Olivia"
+----------/etc/os-release----------
+NAME="Ubuntu"
+VERSION="13.04, Raring Ringtail"
+ID=ubuntu
+ID_LIKE=debian
+PRETTY_NAME="Ubuntu 13.04"
+VERSION_ID="13.04"
+HOME_URL="http://www.ubuntu.com/"
+SUPPORT_URL="http://help.ubuntu.com/"
+BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
+----------/etc/debian_version----------
+wheezy/sid
diff --git a/sources/sample/distrotest/Netrunner/13.06-SE.txt b/sources/sample/distrotest/Netrunner/13.06-SE.txt
new file mode 100644
index 0000000..eab52ae
--- /dev/null
+++ b/sources/sample/distrotest/Netrunner/13.06-SE.txt
@@ -0,0 +1,22 @@
+----------lsb_release -a----------
+Distributor ID: NetrunnerSE
+Description: Netrunner 5 SE Enigma (13.06)
+Release: 13.06
+Codename: enigma-1306
+----------/etc/lsb-release----------
+DISTRIB_ID=NetrunnerSE
+DISTRIB_RELEASE=13.06
+DISTRIB_CODENAME=enigma-1306
+DISTRIB_DESCRIPTION="Netrunner 5 SE Enigma (13.06)"
+----------/etc/os-release----------
+NAME="Netrunner"
+VERSION="13.06, Enigma"
+ID=netrunner
+ID_LIKE=debian
+PRETTY_NAME="Netrunner 5 Enigma (13.06)"
+VERSION_ID="13.06"
+HOME_URL="www.netrunner-os.com"
+SUPPORT_URL="forums.netrunner-os.com"
+BUG_REPORT_URL="https://github.com/netrunner/netrunner-feedback"
+----------/etc/debian_version----------
+wheezy/sid
diff --git a/sources/sample/distrotest/Netrunner/13.06.txt b/sources/sample/distrotest/Netrunner/13.06.txt
new file mode 100644
index 0000000..7f6c714
--- /dev/null
+++ b/sources/sample/distrotest/Netrunner/13.06.txt
@@ -0,0 +1,22 @@
+----------lsb_release -a----------
+Distributor ID: Netrunner
+Description: Netrunner 5 Enigma (13.06)
+Release: 13.06
+Codename: enigma-1306
+----------/etc/lsb-release----------
+DISTRIB_ID=Netrunner
+DISTRIB_RELEASE=13.06
+DISTRIB_CODENAME=enigma-1306
+DISTRIB_DESCRIPTION="Netrunner 5 Enigma (13.06)"
+----------/etc/os-release----------
+NAME="Netrunner"
+VERSION="13.06, Enigma"
+ID=netrunner
+ID_LIKE=debian
+PRETTY_NAME="Netrunner 5 Enigma (13.06)"
+VERSION_ID="13.06"
+HOME_URL="www.netrunner-os.com"
+SUPPORT_URL="forums.netrunner-os.com"
+BUG_REPORT_URL="https://github.com/netrunner/netrunner-feedback"
+----------/etc/debian_version----------
+wheezy/sid
diff --git a/sources/sample/distrotest/Netrunner/2014.04.txt b/sources/sample/distrotest/Netrunner/2014.04.txt
new file mode 100644
index 0000000..394c828
--- /dev/null
+++ b/sources/sample/distrotest/Netrunner/2014.04.txt
@@ -0,0 +1,22 @@
+----------lsb_release -a----------
+LSB Version: n/a
+Distributor ID: Netrunner
+Description: Netrunner Rolling
+Release: 2014.04
+Codename: Rolling
+----------/etc/lsb-release----------
+DISTRIB_ID=Netrunner
+DISTRIB_RELEASE=2014.04
+DISTRIB_CODENAME=Rolling
+DISTRIB_DESCRIPTION="Netrunner Rolling"
+----------/etc/manjaro-release----------
+Manjaro Linux
+----------/etc/os-release----------
+NAME="Netrunner Rolling"
+ID=netrunner
+PRETTY_NAME="Netrunner Rolling"
+ANSI_COLOR="1;32"
+HOME_URL="www.netrunner-os.com"
+SUPPORT_URL="forums.netrunner-os.com"
+BUG_REPORT_URL="https://github.com/netrunner/netrunner-feedback"
+
diff --git a/sources/sample/distrotest/NixOS/13.10.txt b/sources/sample/distrotest/NixOS/13.10.txt
new file mode 100644
index 0000000..b5c88cb
--- /dev/null
+++ b/sources/sample/distrotest/NixOS/13.10.txt
@@ -0,0 +1,7 @@
+----------/etc/os-release----------
+NAME=NixOS
+ID=nixos
+VERSION="13.10.35686.3bcfa7b (Aardvark)"
+VERSION_ID="13.10.35686.3bcfa7b"
+PRETTY_NAME="NixOS 13.10.35686.3bcfa7b (Aardvark)"
+HOME_URL="http://nixos.org/"
diff --git a/sources/sample/distrotest/OpenMamba/3.0.1.txt b/sources/sample/distrotest/OpenMamba/3.0.1.txt
new file mode 100644
index 0000000..4076b90
--- /dev/null
+++ b/sources/sample/distrotest/OpenMamba/3.0.1.txt
@@ -0,0 +1,31 @@
+----------lsb_release -a----------
+LSB Version: core-4.1-noarch:core-4.1-x86-64
+Distributor ID: openmamba
+Description: openmamba release 3.0.1 for x86_64 (milestone3)
+Release: 3.0.1
+Codename: milestone3
+----------/etc/lsb-release----------
+DISTRIB_ID=openmamba
+DISTRIB_RELEASE=2.90.0
+DISTRIB_CODENAME=rolling
+DISTRIB_DESCRIPTION="openmamba 2.90.0"
+LSB_VERSION=core-4.1-x86-64:core-4.1-noarch
+----------/etc/openmamba-release----------
+openmamba release 3.0.1 for x86_64 (milestone3)
+----------/etc/os-release----------
+NAME=openmamba
+VERSION="3.0.1 (milestone3)"
+ID=openmamba
+VERSION_ID="3.0.1"
+PRETTY_NAME="openmamba GNU/Linux 3.0.1 for x86_64 (milestone3)"
+ANSI_COLOR="0;32"
+CPE_NAME="cpe:/o:openmamba:openmamba:3.0.1"
+HOME_URL="http://www.openmamba.org/"
+BUG_REPORT_URL="http://bugs.openmamba.org/"
+OPENMAMBA_MILESTONE="milestone3"
+OPENMAMBA_CODENAME="milestone3"
+OPENMAMBA_FORUM_URL="http://forum.openmamba.org/"
+OPENMAMBA_GIT_URL="http://gitlab.mambasoft.it/openmamba/"
+OPENMAMBA_WEBBUILD_URL="http://www.openmamba.org/distribution/webbuild.php"
+----------/etc/system-release----------
+openmamba release 3.0.1 for x86_64 (milestone3)
diff --git a/sources/sample/distrotest/OpenMandriva/2013.0-RC1.txt b/sources/sample/distrotest/OpenMandriva/2013.0-RC1.txt
new file mode 100644
index 0000000..a083867
--- /dev/null
+++ b/sources/sample/distrotest/OpenMandriva/2013.0-RC1.txt
@@ -0,0 +1,41 @@
+----------lsb_release -a----------
+LSB Version: *
+Distributor ID: OpenMandrivaLinux
+Description: OpenMandriva Lx 2013.0
+Release: 2013.0
+Codename: oxygen
+----------/etc/distro-release----------
+OpenMandriva Lx release 2013.0 RC1 (Oxygen) for x86_64
+----------/etc/lsb-release----------
+LSB_VERSION=
+DISTRIB_ID=OpenMandrivaLinux
+DISTRIB_RELEASE=2013.0
+DISTRIB_CODENAME=oxygen
+DISTRIB_DESCRIPTION="OpenMandriva Lx 2013.0"
+----------/etc/mandrake-release----------
+OpenMandriva Lx release 2013.0 RC1 (Oxygen) for x86_64
+----------/etc/mandrakelinux-release----------
+OpenMandriva Lx release 2013.0 RC1 (Oxygen) for x86_64
+----------/etc/mandriva-release----------
+OpenMandriva Lx release 2013.0 RC1 (Oxygen) for x86_64
+----------/etc/os-release----------
+NAME="OpenMandriva Lx"
+VERSION="2013.0 RC1 (Oxygen)"
+ID="openmandriva_association"
+VERSION_ID=2013.0
+BUILD_ID=20131104.12
+PRETTY_NAME="OpenMandriva Lx 2013.0 RC1 (Oxygen)"
+ANSI_COLOR="1;43"
+CPE_NAME="cpe:/o:openmandriva_association:openmandriva_lx:2013.0"
+HOME_URL="http://openmandriva.org/"
+BUG_REPORT_URL="https://issues.openmandriva.org/"
+----------/etc/redhat-release----------
+OpenMandriva Lx release 2013.0 RC1 (Oxygen) for x86_64
+----------/etc/rosa-release----------
+OpenMandriva Lx release 2013.0 RC1 (Oxygen) for x86_64
+----------/etc/system-release----------
+OpenMandriva Lx release 2013.0 RC1 (Oxygen) for x86_64
+----------/etc/version----------
+2013.0.0 4 RC1 (Oxygen)
+----------/etc/release----------
+OpenMandriva Lx release 2013.0 RC1 (Oxygen) for x86_64
diff --git a/sources/sample/distrotest/Oracle/5.10-el.txt b/sources/sample/distrotest/Oracle/5.10-el.txt
new file mode 100644
index 0000000..f59f006
--- /dev/null
+++ b/sources/sample/distrotest/Oracle/5.10-el.txt
@@ -0,0 +1,12 @@
+----------lsb_release -a----------
+LSB Version: :core-4.0-ia32:core-4.0-noarch:graphics-4.0-ia32:graphics-4.0-noarch:printing-4.0-ia32:printing-4.0-noarch
+Distributor ID: EnterpriseEnterpriseServer
+Description: Enterprise Linux Enterprise Linux Server release 5.10 (Carthage)
+Release: 5.10
+Codename: Carthage
+----------/etc/enterprise-release----------
+Enterprise Linux Enterprise Linux Server release 5.10 (Carthage)
+----------/etc/oracle-release----------
+Oracle Linux Server release 5.10
+----------/etc/redhat-release----------
+Red Hat Enterprise Linux Server release 5.10 (Tikanga)
diff --git a/sources/sample/distrotest/Oracle/6.3.txt b/sources/sample/distrotest/Oracle/6.3.txt
new file mode 100644
index 0000000..51c986b
--- /dev/null
+++ b/sources/sample/distrotest/Oracle/6.3.txt
@@ -0,0 +1,12 @@
+----------lsb_release -a----------
+LSB Version: :core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
+Distributor ID: OracleServer
+Description: Oracle Linux Server release 6.3
+Release: 6.3
+Codename: n/a
+----------/etc/oracle-release----------
+Oracle Linux Server release 6.3
+----------/etc/redhat-release----------
+Red Hat Enterprise Linux Server release 6.3 (Santiago)
+----------/etc/system-release----------
+Oracle Linux Server release 6.3
diff --git a/sources/sample/distrotest/PCLinuxOS/2012.06.txt b/sources/sample/distrotest/PCLinuxOS/2012.06.txt
new file mode 100644
index 0000000..9449357
--- /dev/null
+++ b/sources/sample/distrotest/PCLinuxOS/2012.06.txt
@@ -0,0 +1,26 @@
+----------lsb_release -a----------
+LSB Version: lsb-3.1-ia32:lsb-3.1-noarch:*
+Distributor ID: PCLinuxOS
+Description: PCLinuxOS
+Release: 2012
+Codename: PCLinuxOS
+----------/etc/lsb-release----------
+LSB_VERSION=lsb-3.1-ia32:lsb-3.1-noarch:*
+DISTRIB_ID=PCLinuxOS
+DISTRIB_RELEASE=
+DISTRIB_CODENAME=
+DISTRIB_DESCRIPTION="PCLinuxOS"
+----------/etc/version----------
+2012 1 PCLinuxOS
+----------/etc/mandrake-release----------
+PCLinuxOS release 2012 (PCLinuxOS) for i586
+----------/etc/mandrakelinux-release----------
+PCLinuxOS release 2012 (PCLinuxOS) for i586
+----------/etc/mandriva-release----------
+PCLinuxOS release 2012 (PCLinuxOS) for i586
+----------/etc/pclinuxos-release----------
+PCLinuxOS release 2012 (PCLinuxOS) for i586
+----------/etc/redhat-release----------
+PCLinuxOS release 2012 (PCLinuxOS) for i586
+----------/etc/release----------
+PCLinuxOS release 2012 (PCLinuxOS) for i586
diff --git a/sources/sample/distrotest/PLD/2.99.txt b/sources/sample/distrotest/PLD/2.99.txt
new file mode 100644
index 0000000..771716f
--- /dev/null
+++ b/sources/sample/distrotest/PLD/2.99.txt
@@ -0,0 +1,2 @@
+----------/etc/pld-release----------
+2.99 PLD Linux (Th)
diff --git a/sources/sample/distrotest/PLD/3.0.txt b/sources/sample/distrotest/PLD/3.0.txt
new file mode 100644
index 0000000..bee6288
--- /dev/null
+++ b/sources/sample/distrotest/PLD/3.0.txt
@@ -0,0 +1,11 @@
+----------/etc/pld-release----------
+3.0 PLD Linux (Th)
+----------/etc/os-release----------
+NAME="PLD Linux"
+ID="pld"
+VERSION_ID="3.0"
+PRETTY_NAME="PLD Linux 3.0 (Th)"
+ANSI_COLOR="0;32"
+CPE_NAME="cpe:/o:pld-linux:pld:3.0"
+HOME_URL="http://www.pld-linux.org/"
+BUG_REPORT_URL="https://bugs.pld-linux.org/"
diff --git a/sources/sample/distrotest/Parsix/5.0.txt b/sources/sample/distrotest/Parsix/5.0.txt
new file mode 100644
index 0000000..0e6dd6b
--- /dev/null
+++ b/sources/sample/distrotest/Parsix/5.0.txt
@@ -0,0 +1,19 @@
+----------lsb_release -a----------
+Distributor ID: Parsix
+Description: Parsix GNU/Linux 5.0 (lombardo)
+Release: 5.0
+Codename: lombardo
+----------/etc/os-release----------
+PRETTY_NAME="Parsix GNU/Linux 4.0 (gloria)"
+NAME="Parsix GNU/Linux"
+VERSION_ID="4.0"
+VERSION="4.0 (gloria)"
+ID=parsix
+ANSI_COLOR="1;31"
+HOME_URL="http://www.parsix.org/"
+SUPPORT_URL="http://forums.parsix.org/"
+BUG_REPORT_URL="http://bugs.parsix.org/"
+----------/etc/parsix-version----------
+Parsix GNU/Linux 5.0r1
+----------/etc/debian_version----------
+7.0
diff --git a/sources/sample/distrotest/Parsix/6.0.txt b/sources/sample/distrotest/Parsix/6.0.txt
new file mode 100644
index 0000000..bda1dad
--- /dev/null
+++ b/sources/sample/distrotest/Parsix/6.0.txt
@@ -0,0 +1,19 @@
+----------lsb_release -a----------
+Distributor ID: Parsix
+Description: Parsix GNU/Linux 6.0 (trev)
+Release: 6.0
+Codename: trev
+----------/etc/os-release----------
+PRETTY_NAME="Parsix GNU/Linux 4.0 (gloria)"
+NAME="Parsix GNU/Linux"
+VERSION_ID="4.0"
+VERSION="4.0 (gloria)"
+ID=parsix
+ANSI_COLOR="1;31"
+HOME_URL="http://www.parsix.org/"
+SUPPORT_URL="http://forums.parsix.org/"
+BUG_REPORT_URL="http://bugs.parsix.org/"
+----------/etc/parsix-version----------
+Parsix GNU/Linux 6.0-TEST-1
+----------/etc/debian_version----------
+7.0
diff --git a/sources/sample/distrotest/Pear/5.00.txt b/sources/sample/distrotest/Pear/5.00.txt
new file mode 100644
index 0000000..547ec12
--- /dev/null
+++ b/sources/sample/distrotest/Pear/5.00.txt
@@ -0,0 +1,12 @@
+----------lsb_release -a----------
+Distributor ID: PearLinux
+Description: Pear Linux 5
+Release: 5.00
+Codename: sunsprite
+----------/etc/lsb-release----------
+DISTRIB_ID=PearLinux
+DISTRIB_RELEASE=5.00
+DISTRIB_CODENAME=sunsprite
+DISTRIB_DESCRIPTION="Pear Linux 5"
+----------/etc/debian_version----------
+wheezy/sid
diff --git a/sources/sample/distrotest/Pear/6.1-LTS.txt b/sources/sample/distrotest/Pear/6.1-LTS.txt
new file mode 100644
index 0000000..f6b4322
--- /dev/null
+++ b/sources/sample/distrotest/Pear/6.1-LTS.txt
@@ -0,0 +1,20 @@
+----------lsb_release -a----------
+Distributor ID: PearLinux
+Description: Pear Linux 6.1 LTS
+Release: 6.1
+Codename: Bartlett
+----------/etc/lsb-release----------
+DISTRIB_ID=PearLinux
+DISTRIB_RELEASE=6.1
+DISTRIB_CODENAME=Bartlett
+DISTRIB_DESCRIPTION="Pear Linux 6.1 LTS"
+DISTRIB_EDITION="32 bit PAE"
+----------/etc/os-release----------
+NAME="Ubuntu"
+VERSION="12.04.1 LTS, Precise Pangolin"
+ID=ubuntu
+ID_LIKE=debian
+PRETTY_NAME="Ubuntu precise (12.04.1 LTS)"
+VERSION_ID="12.04"
+----------/etc/debian_version----------
+wheezy/sid
diff --git a/sources/sample/distrotest/Pear/6.1.txt b/sources/sample/distrotest/Pear/6.1.txt
new file mode 100644
index 0000000..50475d2
--- /dev/null
+++ b/sources/sample/distrotest/Pear/6.1.txt
@@ -0,0 +1,19 @@
+----------lsb_release -a----------
+Distributor ID: Pear Linux
+Description: Pear Linux 6.1
+Release: 6.1
+Codename: Bartlett
+----------/etc/lsb-release----------
+DISTRIB_ID="Pear Linux"
+DISTRIB_RELEASE="6.1"
+DISTRIB_CODENAME="Bartlett"
+DISTRIB_DESCRIPTION="Pear Linux 6.1"
+----------/etc/os-release----------
+NAME="Ubuntu"
+VERSION="12.04.1 LTS, Precise Pangolin"
+ID=ubuntu
+ID_LIKE=debian
+PRETTY_NAME="Ubuntu precise (12.04.1 LTS)"
+VERSION_ID="12.04"
+----------/etc/debian_version----------
+wheezy/sid
diff --git a/sources/sample/distrotest/Pear/7.0.txt b/sources/sample/distrotest/Pear/7.0.txt
new file mode 100644
index 0000000..aa898f0
--- /dev/null
+++ b/sources/sample/distrotest/Pear/7.0.txt
@@ -0,0 +1,20 @@
+----------lsb_release -a----------
+Distributor ID: PearOS
+Description: Pear OS 7 64 bits
+Release: 7.0
+Codename: Corella
+----------/etc/lsb-release----------
+DISTRIB_ID="PearOS"
+DISTRIB_RELEASE="7.0"
+DISTRIB_CODENAME="Corella"
+DISTRIB_DESCRIPTION="Pear OS 7 64 bits"
+
+----------/etc/os-release----------
+NAME="Ubuntu"
+VERSION="12.10, Quantal Quetzal"
+ID=ubuntu
+ID_LIKE=debian
+PRETTY_NAME="Ubuntu quantal (12.10)"
+VERSION_ID="12.10"
+----------/etc/debian_version----------
+wheezy/sid
diff --git a/sources/sample/distrotest/Peppermint/3.txt b/sources/sample/distrotest/Peppermint/3.txt
new file mode 100644
index 0000000..a53abbf
--- /dev/null
+++ b/sources/sample/distrotest/Peppermint/3.txt
@@ -0,0 +1,12 @@
+----------lsb_release -a----------
+Distributor ID: Peppermint
+Description: Peppermint Three
+Release: 3
+Codename: precise
+----------/etc/lsb-release----------
+DISTRIB_ID=Peppermint
+DISTRIB_RELEASE=3
+DISTRIB_CODENAME=precise
+DISTRIB_DESCRIPTION="Peppermint Three"
+----------/etc/debian_version----------
+wheezy/sid
diff --git a/sources/sample/distrotest/Peppermint/4-20131113.txt b/sources/sample/distrotest/Peppermint/4-20131113.txt
new file mode 100644
index 0000000..ff125b7
--- /dev/null
+++ b/sources/sample/distrotest/Peppermint/4-20131113.txt
@@ -0,0 +1,22 @@
+----------lsb_release -a----------
+Distributor ID: Peppermint
+Description: Peppermint Four
+Release: 4
+Codename: raring
+----------/etc/lsb-release----------
+DISTRIB_ID=Peppermint
+DISTRIB_RELEASE=4
+DISTRIB_CODENAME=raring
+DISTRIB_DESCRIPTION="Peppermint Four"
+----------/etc/os-release----------
+NAME="Peppermint"
+VERSION="Four"
+ID=peppermint
+ID_LIKE=debian
+PRETTY_NAME="Peppermint Four"
+VERSION_ID="4"
+HOME_URL="http://peppermintos.com/"
+SUPPORT_URL="http://peppermintos.net/"
+BUG_REPORT_URL="http://bugs.launchpad.net/peppermint/"
+----------/etc/debian_version----------
+wheezy/sid
diff --git a/sources/sample/distrotest/Pisi/1.0.txt b/sources/sample/distrotest/Pisi/1.0.txt
new file mode 100644
index 0000000..732da6b
--- /dev/null
+++ b/sources/sample/distrotest/Pisi/1.0.txt
@@ -0,0 +1,15 @@
+----------lsb_release -a----------
+LSB Version: n/a
+Distributor ID: PisiLinux
+Description: Pisi GNU/Linux 1.0
+Release: 1.0
+Codename: n/a
+----------/etc/lsb-release----------
+DISTRIB_ID="PisiLinux"
+DISTRIB_RELEASE="1.0"
+DISTRIB_DESCRIPTION="Pisi GNU/Linux 1.0"
+DISTRIB_CODENAME=""
+----------/etc/pisilinux-release----------
+Pisi_Linux 1.0
+----------/etc/system-release----------
+Pisi_Linux 1.0
diff --git a/sources/sample/distrotest/Porteus/2.1.txt b/sources/sample/distrotest/Porteus/2.1.txt
new file mode 100644
index 0000000..b109dcf
--- /dev/null
+++ b/sources/sample/distrotest/Porteus/2.1.txt
@@ -0,0 +1,15 @@
+----------/etc/os-release----------
+NAME=Slackware
+VERSION="14.0"
+ID=slackware
+VERSION_ID=14.0
+PRETTY_NAME="Slackware 14.0"
+ANSI_COLOR="0;34"
+CPE_NAME="cpe:/o:slackware:slackware_linux:14.0"
+HOME_URL="http://slackware.com/"
+SUPPORT_URL="http://www.linuxquestions.org/questions/slackware-14/"
+BUG_REPORT_URL="http://www.linuxquestions.org/questions/slackware-14/"
+----------/etc/porteus-version----------
+Porteus-v2.1
+----------/etc/slackware-version----------
+Slackware 14.0
diff --git a/sources/sample/distrotest/Puppy/431.txt b/sources/sample/distrotest/Puppy/431.txt
new file mode 100644
index 0000000..48e7d63
--- /dev/null
+++ b/sources/sample/distrotest/Puppy/431.txt
@@ -0,0 +1,11 @@
+----------/etc/DISTRO_SPECS----------
+#One or more words that identify this distribution:
+DISTRO_NAME='Puppy'
+#A three-digit numeric value, version number of this distribution:
+DISTRO_VERSION=431
+#The distro whose binary packages were used to build this distribution:
+DISTRO_BINARY_COMPAT='puppy'
+#Prefix for some filenames: exs: pupsave.2fs, pup-431.sfs
+DISTRO_FILE_PREFIX='pup'
+#The version of the distro whose binary packages were used to build this distro:
+DISTRO_COMPAT_VERSION='4'
diff --git a/sources/sample/distrotest/Puppy/5.3-wary.txt b/sources/sample/distrotest/Puppy/5.3-wary.txt
new file mode 100644
index 0000000..d289f23
--- /dev/null
+++ b/sources/sample/distrotest/Puppy/5.3-wary.txt
@@ -0,0 +1,23 @@
+----------/etc/DISTRO_SPECS----------
+#One or more words that identify this distribution:
+DISTRO_NAME='Wary Puppy'
+#version number of this distribution:
+DISTRO_VERSION=5.3
+#The distro whose binary packages were used to build this distribution:
+DISTRO_BINARY_COMPAT='puppy'
+#Prefix for some filenames: exs: warysave.2fs, wary-5.1.3.4.sfs
+DISTRO_FILE_PREFIX='wary'
+#The version of the distro whose binary packages were used to build this distro:
+DISTRO_COMPAT_VERSION='wary5'
+#the kernel pet package used:
+DISTRO_KERNEL_PET='linux_kernel-2.6.32.59-uni-i486-aufs-w5.pet'
+DISTRO_TARGETARCH='x86'
+#16-byte alpha-numeric ID-string appended to vmlinuz, puppy_wary_5.3.sfs, zdrv_wary_5.3.sfs and devx.sfs:
+DISTRO_IDSTRING='w120404071421ZZZZ5.3XXXXXXXXXXXX'
+#Puppy default filenames...
+#Note, the 'SFS' files below are what the 'init' script in initrd.gz searches for,
+#for the partition, path and actual files loaded, see PUPSFS and ZDRV in /etc/rc.d/PUPSTATE
+DISTRO_PUPPYSFS='puppy_wary_5.3.sfs'
+DISTRO_ZDRVSFS='zdrv_wary_5.3.sfs'
+DISTRO_PUPPYDATE='Apr 2012'
+DISTRO_XORG_AUTO='no'
diff --git a/sources/sample/distrotest/Puppy/5.3.3-slacko.txt b/sources/sample/distrotest/Puppy/5.3.3-slacko.txt
new file mode 100644
index 0000000..147f356
--- /dev/null
+++ b/sources/sample/distrotest/Puppy/5.3.3-slacko.txt
@@ -0,0 +1,22 @@
+----------/etc/DISTRO_SPECS----------
+#One or more words that identify this distribution:
+DISTRO_NAME='Slacko Puppy'
+#version number of this distribution:
+DISTRO_VERSION=5.3.3
+#The distro whose binary packages were used to build this distribution:
+DISTRO_BINARY_COMPAT='slackware'
+#Prefix for some filenames: exs: slackosave.2fs, slacko-5.3.3.sfs
+DISTRO_FILE_PREFIX='slacko'
+#The version of the distro whose binary packages were used to build this distro:
+DISTRO_COMPAT_VERSION='13.37'
+#the kernel pet package used:
+DISTRO_KERNEL_PET='linux_kernel-3.1.10-patched_s_4gA.pet'
+#16-byte alpha-numeric ID-string appended to vmlinuz, puppy_slacko_5.3.3.sfs, zdrv_slacko_5.3.3.sfs and devx.sfs:
+DISTRO_IDSTRING='s120505091759ZZZZ5.3.3XXXXXXXXXX'
+#Puppy default filenames...
+#Note, the 'SFS' files below are what the 'init' script in initrd.gz searches for,
+#for the partition, path and actual files loaded, see PUPSFS and ZDRV in /etc/rc.d/PUPSTATE
+DISTRO_PUPPYSFS='puppy_slacko_5.3.3.sfs'
+DISTRO_ZDRVSFS='zdrv_slacko_5.3.3.sfs'
+DISTRO_PUPPYDATE='May 2012'
+DISTRO_XORG_AUTO='yes'
diff --git a/sources/sample/distrotest/Puppy/528-lucid.txt b/sources/sample/distrotest/Puppy/528-lucid.txt
new file mode 100644
index 0000000..d600f79
--- /dev/null
+++ b/sources/sample/distrotest/Puppy/528-lucid.txt
@@ -0,0 +1,22 @@
+----------/etc/DISTRO_SPECS----------
+#One or more words that identify this distribution:
+DISTRO_NAME='Lucid '
+#A three-digit numeric value, version number of this distribution:
+DISTRO_VERSION=528
+#A two-digit numeric value, minor-version number of this distribution:
+DISTRO_MINOR_VERSION=00
+#The distro whose binary packages were used to build this distribution:
+DISTRO_BINARY_COMPAT='ubuntu'
+#Prefix for some filenames: exs: lupusave.2fs, lupu-528.sfs
+DISTRO_FILE_PREFIX='lupu'
+#The version of the distro whose binary packages were used to build this distro:
+DISTRO_COMPAT_VERSION='lucid'
+#the kernel pet package used:
+DISTRO_KERNEL_PET='linux_kernel-2.6.33.2-tickless_smp_patched-L3.pet'
+#16-byte alpha-numeric ID-string appended to vmlinuz, lupu_528.sfs, zl528332.sfs and devx.sfs:
+DISTRO_IDSTRING='l528120404231153'
+#Puppy default filenames...
+#Note, the 'SFS' files below are what the 'init' script in initrd.gz searches for,
+#for the partition, path and actual files loaded, see PUPSFS and ZDRV in /etc/rc.d/PUPSTATE
+DISTRO_PUPPYSFS='lupu_528.sfs'
+DISTRO_ZDRVSFS='zl528332.sfs'
diff --git a/sources/sample/distrotest/QTS/3.1.2.txt b/sources/sample/distrotest/QTS/3.1.2.txt
new file mode 100644
index 0000000..6fa3cb0
--- /dev/null
+++ b/sources/sample/distrotest/QTS/3.1.2.txt
@@ -0,0 +1,284 @@
+----------/etc/config/uLinux.conf----------
+[System]
+Model = TS-439
+Internal Model = TS-439
+Server comment = american
+Version = 3.1.2
+Build Number = 1014T
+Time Zone = America/Phoenix
+Enable Daylight Saving Time = TRUE
+Workgroup = DODOES
+Code Page = 437
+System Device = /dev/sdx
+Test Mode = FALSE
+Auto Create Raid = raid0
+Wan Access = TRUE
+Lan Access = TRUE
+Web Access Port = 8080
+E2KEY Support = FALSE
+Rsync Support = TRUE
+Rsync Model = QNAP
+FS Type = ext3
+Auto PowerOn = FALSE
+Quota Type = vfsv0
+Write Connection Log = 0
+
+Booting = 0
+Server Name = american
+UPNP_UUID = 76c5f8aa-558a-40f7-a07e-3f4ea6ab79ff
+Redundant Power Enable = FALSE
+[Test]
+Test Program = /sbin/test/Self-test-main
+
+[NTP]
+USE NTP Server = FALSE
+NTP Server IP = pool.ntp.org
+Enable NTP Server = FALSE
+Server1 IP =
+Server2 IP =
+Sercer3 IP =
+Interval = 1
+TimeUnit = DAY
+
+[Alert]
+Alert Level = 0
+SMTP IP = 0.0.0.0
+Alert Mail =
+SMS Mode = 0
+
+[Network]
+Interface Number = 2
+DNS = 0.0.0.0
+WINS IP = 0.0.0.0
+WINS Enable = False
+BONDING Support = TRUE
+BONDING01 = Interface1
+BONDING02 = Interface2
+Domain Name Server 1 = 0.0.0.0
+Domain Name Server 2 = 0.0.0.0
+[bond0]
+Bonding Mode = 4
+Configure = TRUE
+Use DHCP = TRUE
+Usage = DHCP
+IP Address = 169.254.100.100
+Subnet Mask = 255.255.0.0
+Broadcast = 169.254.255.255
+Gateway = 169.254.100.100
+Speed = auto
+MTU = 1500
+
+[eth0]
+Configure = False
+Use DHCP = TRUE
+Usage = DHCP
+IP Address = 169.254.100.100
+Subnet Mask = 255.255.0.0
+Broadcast = 192.168.255.255
+Gateway = 169.254.100.100
+Speed = auto
+MTU = 1500
+
+[eth1]
+Configure = False
+Use DHCP = TRUE
+Usage = DHCP
+IP Address = 169.254.100.100
+Subnet Mask = 255.255.0.0
+Broadcast = 192.168.255.255
+Gateway = 169.254.100.100
+Speed = auto
+MTU = 1500
+
+[Samba]
+Enable = TRUE
+[Appletalk]
+Enable = TRUE
+Default Zone = *
+[SNMP]
+Server Enable = FALSE
+
+[WebFS]
+Enable = TRUE
+Web Root Path = /WWW
+
+[QWEB]
+Enable = 1
+Port = 80
+[QPHOTO]
+Enable = TRUE
+[BTDownload]
+Enable = TRUE
+Max_Running = 3
+Qget_Support = TRUE
+Download_Folder = /share/Qdownload/
+Total Job = 0
+Run List Job = 0
+Pause List Job = 0
+Finish List Job = 0
+Overwrite List = 0
+Max Download Rate = 0
+Max Upload Rate = 0
+Port Range From = 6881
+Port Range To = 6999
+UPnP Port Forwarding = 0
+encrypt = 0
+DT Time = 1
+S1 Enable = 0
+S2 Enable = 0
+[NVR]
+Enable = FALSE
+Support = TRUE
+
+[Storage]
+Auto Init = FALSE
+Disk Drive Number = 4
+Drive 1 = sda
+Drive 2 = sdb
+Drive 3 = sdc
+Drive 4 = sdd
+Disk Check On Boot = Error
+Auto Fix Disk Check Errors = TRUE
+Support RAID 5 = FALSE
+SUPPORT HOTSWAP = TRUE
+Support Hot Spare = FALSE
+Support LVM = FALSE
+
+Encrypt_sda3 = FALSE
+Encrypt_sdb3 = FALSE
+Encrypt_sdc3 = FALSE
+Encrypt_md0 = FALSE
+[Disk]
+Drive 1 EXIST = 1
+Drive 2 EXIST = 1
+Drive 3 EXIST = 1
+Drive 4 EXIST = 0
+Drive 5 EXIST = 0
+
+Drive 13 EXIST = 0
+Drive 9 EXIST = 1
+[FTP]
+ServerName = ProFTPD
+Enable = False
+Port = 21
+MaxInstances = 30
+User = guest
+Group = guest
+DefaultRoot = /share
+MaxAnonymous = 30
+AllowAnonymous = False
+Unicode = 0
+CharsetRemote = 999
+SSL MODE = 1
+Passive Enabled = 1
+Bandwidth Enabled = 0
+Max connection per account = 10
+EnableUserWanIp = FALSE
+WanIp =
+[DHCP Server]
+Enable = FALSE
+Start Range = 169.254.1.100
+End Range = 169.254.1.200
+Max Lease Time = 86400
+
+[Printers]
+Support = FALSE
+Enable = False
+Name =
+Comment = Printer port on NAS
+
+Phy exist = 0
+Phy exist2 = 0
+Phy exist3 = 0
+Phy exist4 = 0
+Phy exist5 = 0
+[LOGO]
+Show PIC Index = 1
+PIC Counter = 10
+Default LOGO Image Path = /etc/config/logo/default_logo_img.gif
+Upload LOGO Image Path = /etc/config/logo/upload_logo_img.gif
+PIC1 LOGO Image Path = /etc/config/logo/pic1_logo_img.gif
+PIC2 LOGO Image Path = /etc/config/logo/pic2_logo_img.gif
+PIC3 LOGO Image Path = /etc/config/logo/pic3_logo_img.gif
+PIC4 LOGO Image Path = /etc/config/logo/pic4_logo_img.gif
+PIC5 LOGO Image Path = /etc/config/logo/pic5_logo_img.gif
+LOGO Image Size Limitation = 20480
+
+[UPS]
+Support = TRUE
+Serial UPS = FALSE
+Snmp UPS = TRUE
+Daemon Type = 1
+UPS IP = 0.0.0.0
+Enable = FALSE
+UPS Type = PhxTec-A1000
+Shutdown System In = 5
+ValidCOM = 1
+AC Power = OK
+Battery Power = OK
+
+[Misc]
+Disk StandBy Timeout = 5
+Disk StandBy Timeout Enable = TRUE
+Disk Free Size Alert = 3072
+Disk Free Size Alert Enable = TRUE
+Buzzer Warning Enable = TRUE
+Wake On Lan = FALSE
+
+System Started = TRUE
+Configured = TRUE
+Reset Password Switch = TRUE
+Custom Temp = 0
+system low temp = 40
+system high temp = 48
+[HWTEST]
+mini PCI = Agere Systems
+
+[MySQL]
+Enable = FALSE
+DB_Init = FALSE
+[LOGIN]
+SSH Enable = TRUE
+SSH Port = 22
+TELNET Enable = FALSE
+TELNET Port = 13131
+
+[Index]
+Qphoto_LOGO = FALSE
+Qdownlod_LOGO = FALSE
+
+[iSCSI]
+Company Info = 2004-04.com.qnap
+Model Name = TS-439
+[END_FLAG]
+[usb copy]
+usb_copy_avail = 1
+lock flag = 0
+usb copying = 0
+copy func old = 0
+copy func = 0
+internal = Qusb
+copy type = 0
+[UPnP Service]
+Enable = TRUE
+[NFS]
+Enable = TRUE
+[TwonkyMedia]
+Enable = TRUE
+[iTune]
+Enable = TRUE
+Password Enabled = 0
+Code Page = CP437
+[Bonjour Service]
+Web = 1
+Web Service Name = american
+SAMBA = 1
+SAMBA Service Name = american(SAMBA)
+AFP = 1
+AFP Service Name = american(AFP)
+SSH = 0
+SSH Service Name = american(SSH)
+FTP = 0
+FTP Service Name = american(FTP)
+[QRAID1]
+device name =
diff --git a/sources/sample/distrotest/Qubes/3.0.txt b/sources/sample/distrotest/Qubes/3.0.txt
new file mode 100644
index 0000000..d3ab4e1
--- /dev/null
+++ b/sources/sample/distrotest/Qubes/3.0.txt
@@ -0,0 +1,16 @@
+----------/etc/fedora-release----------
+Qubes release 3.0 (R3.0)
+----------/etc/os-release----------
+NAME=Qubes
+VERSION="3.0 (R3.0)"
+ID=qubes
+VERSION_ID=3.0
+PRETTY_NAME="Qubes 3.0 (R3.0)"
+ANSI_COLOR="0;31"
+CPE_NAME="cpe:/o:ITL:qubes:3.0"
+----------/etc/qubes-release----------
+Qubes release 3.0 (R3.0)
+----------/etc/redhat-release----------
+Qubes release 3.0 (R3.0)
+----------/etc/system-release----------
+Qubes release 3.0 (R3.0)
diff --git a/sources/sample/distrotest/ROSA/2012.0.0-11-LTS.txt b/sources/sample/distrotest/ROSA/2012.0.0-11-LTS.txt
new file mode 100644
index 0000000..663d45c
--- /dev/null
+++ b/sources/sample/distrotest/ROSA/2012.0.0-11-LTS.txt
@@ -0,0 +1,34 @@
+----------lsb_release -a----------
+LSB Version: core-2.0-amd64:core-2.0-noarch:core-3.0-amd64:core-3.0-noarch:core-3.1-amd64:core-3.1-noarch:core-3.2-amd64:core-3.2-noarch:core-4.0-amd64:core-4.0-noarch:core-4.1-amd64:core-4.1-noarch:cxx-3.1-amd64:cxx-3.1-noarch:cxx-3.2-amd64:cxx-3.2-noarch:graphics-3.1-amd64:graphics-3.1-noarch:graphics-3.2-amd64:graphics-3.2-noarch:lsb-2.0-amd64:lsb-2.0-noarch:lsb-3.0-amd64:lsb-3.0-noarch:lsb-3.1-amd64:lsb-3.1-noarch:lsb-3.2-amd64:lsb-3.2-noarch:lsb-4.0-amd64:lsb-4.0-noarch:lsb-4.1-amd64:lsb-4.1-noarch
+Distributor ID: RosaDesktop.Marathon
+Description: ROSA Linux 2012.0
+Release: 2012.0
+Codename: marathon
+----------/etc/lsb-release----------
+LSB_VERSION=
+DISTRIB_ID=RosaDesktop.Marathon
+DISTRIB_RELEASE=2012.0
+DISTRIB_CODENAME=marathon
+DISTRIB_DESCRIPTION="ROSA Linux 2012.0"
+----------/etc/version----------
+2012.0.0 11 rosalts
+----------/etc/release----------
+ROSA release 2012.0 (LTS) for x86_64
+----------/etc/mandrake-release----------
+ROSA release 2012.0 (LTS) for x86_64
+----------/etc/mandrakelinux-release----------
+ROSA release 2012.0 (LTS) for x86_64
+----------/etc/mandriva-release----------
+ROSA release 2012.0 (LTS) for x86_64
+----------/etc/redhat-release----------
+ROSA release 2012.0 (LTS) for x86_64
+----------/etc/os-release----------
+NAME="ROSA Marathon"
+VERSION="Free 2012.0 LTS"
+ID=rosa
+VERSION_ID=2012lts
+PRETTY_NAME="ROSA Marathon Free 2012.0 LTS"
+ANSI_COLOR="1;43"
+CPE_NAME="cpe:/o:rosa:rosalinux:2012.0"
+HOME_URL="http://www.rosalinux.com/"
+BUG_REPORT_URL="https://bugs.rosalinux.com/"
diff --git a/sources/sample/distrotest/ROSA/2012.0.0-6-LTS.txt b/sources/sample/distrotest/ROSA/2012.0.0-6-LTS.txt
new file mode 100644
index 0000000..1337320
--- /dev/null
+++ b/sources/sample/distrotest/ROSA/2012.0.0-6-LTS.txt
@@ -0,0 +1,25 @@
+----------lsb_release -a----------
+LSB Version: *
+Distributor ID: ROSA
+Description: ROSA Linux 2012.0
+Release: 2012.0
+Codename: turtle
+----------/etc/lsb-release----------
+LSB_VERSION=
+DISTRIB_ID=ROSA MarathonLinux
+DISTRIB_RELEASE=2012.0
+DISTRIB_CODENAME=turtle
+DISTRIB_DESCRIPTION="ROSA Linux 2012.0"
+----------/etc/version----------
+2012.0.0 6 rosalts
+----------/etc/release----------
+ROSA Linux release 2012.0 (LTS) for x86_64
+----------/etc/mandrake-release----------
+ROSA Linux release 2012.0 (LTS) for x86_64
+----------/etc/mandrakelinux-release----------
+ROSA Linux release 2012.0 (LTS) for x86_64
+----------/etc/mandriva-release----------
+ROSA Linux release 2012.0 (LTS) for x86_64
+----------/etc/redhat-release----------
+ROSA Linux release 2012.0 (LTS) for x86_64
+
diff --git a/sources/sample/distrotest/ROSA/2012.1.0-20.txt b/sources/sample/distrotest/ROSA/2012.1.0-20.txt
new file mode 100644
index 0000000..184b779
--- /dev/null
+++ b/sources/sample/distrotest/ROSA/2012.1.0-20.txt
@@ -0,0 +1,34 @@
+----------lsb_release -a----------
+LSB Version: *
+Distributor ID: RosaDesktop.Fresh
+Description: ROSA RosaDesktop.Fresh 2012.1
+Release: 2012.1
+Codename: belka
+----------/etc/lsb-release----------
+LSB_VERSION=
+DISTRIB_ID=RosaDesktop.Fresh
+DISTRIB_RELEASE=2012.1
+DISTRIB_CODENAME=belka
+DISTRIB_DESCRIPTION="ROSA RosaDesktop.Fresh 2012.1"
+----------/etc/version----------
+2012.1.0 20 rosa
+----------/etc/release----------
+ROSA Desktop Fresh R2 release 2012.1 for x86_64
+----------/etc/mandrake-release----------
+ROSA Desktop Fresh R2 release 2012.1 for x86_64
+----------/etc/mandrakelinux-release----------
+ROSA Desktop Fresh R2 release 2012.1 for x86_64
+----------/etc/mandriva-release----------
+ROSA Desktop Fresh R2 release 2012.1 for x86_64
+----------/etc/redhat-release----------
+ROSA Desktop Fresh R2 release 2012.1 for x86_64
+----------/etc/os-release----------
+NAME="ROSA Desktop Fresh"
+VERSION="EE 2012.1 Desktop"
+ID=rosa
+VERSION_ID=2012.1
+PRETTY_NAME="ROSA Desktop Fresh EE 2012.1 Desktop"
+ANSI_COLOR="1;43"
+CPE_NAME="cpe:/o:rosa:rosalinux:2012.1"
+HOME_URL="http://www.rosalinux.com/"
+BUG_REPORT_URL="https://bugs.rosalinux.com/"
diff --git a/sources/sample/distrotest/ROSA/6.5-Server.txt b/sources/sample/distrotest/ROSA/6.5-Server.txt
new file mode 100644
index 0000000..23f1c93
--- /dev/null
+++ b/sources/sample/distrotest/ROSA/6.5-Server.txt
@@ -0,0 +1,14 @@
+----------lsb_release -a----------
+LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
+Distributor ID: ROSAEnterpriseServer
+Description: ROSA Enterprise Linux Server release 6.5 (Helium)
+Release: 6.5
+Codename: Helium
+----------/etc/lsb-release----------
+LSB_VERSION=base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
+----------/etc/redhat-release----------
+ROSA Enterprise Linux Server release 6.5 (Helium)
+----------/etc/rosa-release----------
+ROSA Enterprise Linux Server release 6.5 (Helium)
+----------/etc/system-release----------
+ROSA Enterprise Linux Server release 6.5 (Helium)
diff --git a/sources/sample/distrotest/Raspbian/7.txt b/sources/sample/distrotest/Raspbian/7.txt
new file mode 100644
index 0000000..8233aa4
--- /dev/null
+++ b/sources/sample/distrotest/Raspbian/7.txt
@@ -0,0 +1,13 @@
+----------/etc/os-release----------
+PRETTY_NAME="Raspbian GNU/Linux 7 (wheezy)"
+NAME="Raspbian GNU/Linux"
+VERSION_ID="7"
+VERSION="7 (wheezy)"
+ID=raspbian
+ID_LIKE=debian
+ANSI_COLOR="1;31"
+HOME_URL="http://www.raspbian.org/"
+SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
+BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"
+----------/etc/debian_version----------
+7.1
diff --git a/sources/sample/distrotest/Raspbian/8.0.txt b/sources/sample/distrotest/Raspbian/8.0.txt
new file mode 100644
index 0000000..ac46f9e
--- /dev/null
+++ b/sources/sample/distrotest/Raspbian/8.0.txt
@@ -0,0 +1,17 @@
+----------lsb_release -a----------
+Distributor ID: Raspbian
+Description: Raspbian GNU/Linux 8.0 (jessie)
+Release: 8.0
+Codename: jessie
+----------/etc/os-release----------
+PRETTY_NAME="Raspbian GNU/Linux 8 (jessie)"
+NAME="Raspbian GNU/Linux"
+VERSION_ID="8"
+VERSION="8 (jessie)"
+ID=raspbian
+ID_LIKE=debian
+HOME_URL="http://www.raspbian.org/"
+SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
+BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"
+----------/etc/debian_version----------
+8.0
diff --git a/sources/sample/distrotest/RedFlag/8.0.txt b/sources/sample/distrotest/RedFlag/8.0.txt
new file mode 100644
index 0000000..8f3307b
--- /dev/null
+++ b/sources/sample/distrotest/RedFlag/8.0.txt
@@ -0,0 +1,23 @@
+----------lsb_release -a----------
+LSB Version: 4.1
+Distributor ID: Red Flag inWise
+Description: Red Flag Linux
+Release: v8.0
+Codename: zhurong
+----------/etc/lsb-release----------
+LSB_VERSION=4.1
+DISTRIB_ID="Red Flag inWise"
+DISTRIB_RELEASE=v8.0
+DISTRIB_DESCRIPTION="Red Flag Linux"
+DISTRIB_CODENAME=zhurong
+----------/etc/os-release----------
+NAME="Red Flag inWise"
+ID=redflag
+PRETTY_NAME="Red Flag inWise"
+ANSI_COLOR="0;36"
+HOME_URL="http://www.redflag-linux.com/"
+SUPPORT_URL="http://www.redflag-linux.com/"
+----------/etc/redflag-release----------
+Red Flag inWise V8.0 (zhurong)
+----------/etc/system-release----------
+Red Flag inWise V8.0 (zhurong) v8.0-13.04.01.1305
diff --git a/sources/sample/distrotest/RedHat/6.0.txt b/sources/sample/distrotest/RedHat/6.0.txt
new file mode 100644
index 0000000..b01f6ab
--- /dev/null
+++ b/sources/sample/distrotest/RedHat/6.0.txt
@@ -0,0 +1,10 @@
+----------lsb_release -a----------
+LSB Version: :core-4.0-ia32:core-4.0-noarch:graphics-4.0-ia32:graphics-4.0-noarch:printing-4.0-ia32:printing-4.0-noarch
+Distributor ID: RedHatEnterpriseServer
+Description: Red Hat Enterprise Linux Server release 6.0 (Santiago)
+Release: 6.0
+Codename: Santiago
+----------/etc/redhat-release----------
+Red Hat Enterprise Linux Server release 6.0 (Santiago)
+----------/etc/system-release----------
+Red Hat Enterprise Linux Server release 6.0 (Santiago)
diff --git a/sources/sample/distrotest/RedHat/7.0-Beta.txt b/sources/sample/distrotest/RedHat/7.0-Beta.txt
new file mode 100644
index 0000000..176982c
--- /dev/null
+++ b/sources/sample/distrotest/RedHat/7.0-Beta.txt
@@ -0,0 +1,17 @@
+----------/etc/os-release----------
+NAME="Red Hat Enterprise Linux Everything"
+VERSION="7.0 (Maipo)"
+ID="rhel"
+VERSION_ID="7.0"
+PRETTY_NAME="Red Hat Enterprise Linux Everything 7.0 (Maipo)"
+ANSI_COLOR="0;31"
+CPE_NAME="cpe:/o:redhat:enterprise_linux:7.0:beta:everything"
+
+REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 7"
+REDHAT_BUGZILLA_PRODUCT_VERSION=7.0
+REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"
+REDHAT_SUPPORT_PRODUCT_VERSION=7.0
+----------/etc/redhat-release----------
+Red Hat Enterprise Linux Everything release 7.0 Beta (Maipo)
+----------/etc/system-release----------
+Red Hat Enterprise Linux Everything release 7.0 Beta (Maipo)
diff --git a/sources/sample/distrotest/SMEServer/8.1beta3.txt b/sources/sample/distrotest/SMEServer/8.1beta3.txt
new file mode 100644
index 0000000..405ec83
--- /dev/null
+++ b/sources/sample/distrotest/SMEServer/8.1beta3.txt
@@ -0,0 +1,11 @@
+----------lsb_release -a----------
+LSB Version: :core-4.0-amd64:core-4.0-ia32:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-ia32:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-ia32:printing-4.0-noarch
+Distributor ID: SMEServer
+Description: SME Server release 8.1beta3
+Release: 8.1beta3
+Codename: n/a
+----------/etc/e-smith-release----------
+SME Server release 8.1beta3
+----------/etc/redhat-release----------
+SME Server release 8.1beta3
+
diff --git a/sources/sample/distrotest/SMEServer/9.0beta3.txt b/sources/sample/distrotest/SMEServer/9.0beta3.txt
new file mode 100644
index 0000000..2e56c06
--- /dev/null
+++ b/sources/sample/distrotest/SMEServer/9.0beta3.txt
@@ -0,0 +1,8 @@
+----------/etc/centos-release----------
+CentOS release 6.5 (Final)
+----------/etc/e-smith-release----------
+SME Server release 9.0beta3
+----------/etc/redhat-release----------
+SME Server release 9.0beta3
+----------/etc/system-release----------
+SME Server release 9.0beta3
diff --git a/sources/sample/distrotest/SMS/2.0.5.txt b/sources/sample/distrotest/SMS/2.0.5.txt
new file mode 100644
index 0000000..5fe2381
--- /dev/null
+++ b/sources/sample/distrotest/SMS/2.0.5.txt
@@ -0,0 +1,15 @@
+----------/etc/os-release----------
+NAME=SMS
+VERSION="2.0.5"
+ID=sms
+VERSION_ID=2.0.5
+PRETTY_NAME="Superb! Mini Server 2.0"
+ANSI_COLOR="0;34"
+CPE_NAME="cpe:/o:superb_mini_server:sms:2.0"
+HOME_URL="http://sms.it-ccs.com/"
+SUPPORT_URL="http://sms.it-ccs.com/forum/"
+BUG_REPORT_URL="http://sms.it-ccs.com/forum/"
+----------/etc/slackware-version----------
+Slackware 14.0
+----------/etc/sms-version----------
+SMS64 2.0.5
diff --git a/sources/sample/distrotest/Sabayon/14.01.txt b/sources/sample/distrotest/Sabayon/14.01.txt
new file mode 100644
index 0000000..7aa9b9d
--- /dev/null
+++ b/sources/sample/distrotest/Sabayon/14.01.txt
@@ -0,0 +1,22 @@
+----------lsb_release -a----------
+LSB Version: n/a
+Distributor ID: Sabayon
+Description: Sabayon Linux amd64 14.01
+Release: n/a
+Codename: n/a
+----------/etc/gentoo-release----------
+Gentoo Base System release 2.2
+----------/etc/lsb-release----------
+DISTRIB_ID="Sabayon"
+----------/etc/os-release----------
+NAME=Sabayon
+ID=sabayon
+PRETTY_NAME="Sabayon/Linux"
+ANSI_COLOR="1;32"
+HOME_URL="http://www.sabayon.org/"
+SUPPORT_URL="http://forum.sabayon.org/"
+BUG_REPORT_URL="https://bugs.sabayon.org/"
+----------/etc/sabayon-release----------
+Sabayon Linux amd64 14.01
+----------/etc/system-release----------
+Sabayon Linux amd64 14.01
diff --git a/sources/sample/distrotest/Salix/14.0.txt b/sources/sample/distrotest/Salix/14.0.txt
new file mode 100644
index 0000000..e24653a
--- /dev/null
+++ b/sources/sample/distrotest/Salix/14.0.txt
@@ -0,0 +1,15 @@
+----------/etc/os-release----------
+NAME=Slackware
+VERSION="14.0"
+ID=slackware
+VERSION_ID=14.0
+PRETTY_NAME="Slackware 14.0"
+ANSI_COLOR="0;34"
+CPE_NAME="cpe:/o:slackware:slackware_linux:14.0"
+HOME_URL="http://slackware.com/"
+SUPPORT_URL="http://www.linuxquestions.org/questions/slackware-14/"
+BUG_REPORT_URL="http://www.linuxquestions.org/questions/slackware-14/"
+----------/etc/slackware-version----------
+Slackware 14.0
+----------/etc/salix-update-notifier.conf----------
+interval=2h
diff --git a/sources/sample/distrotest/Scientific/6.3-lsb.txt b/sources/sample/distrotest/Scientific/6.3-lsb.txt
new file mode 100644
index 0000000..d7dec37
--- /dev/null
+++ b/sources/sample/distrotest/Scientific/6.3-lsb.txt
@@ -0,0 +1,10 @@
+----------lsb_release -a----------
+LSB Version: :core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
+Distributor ID: Scientific
+Description: Scientific Linux release 6.3 (Carbon)
+Release: 6.3
+Codename: Carbon
+----------/etc/redhat-release----------
+Scientific Linux release 6.3 (Carbon)
+----------/etc/system-release----------
+Scientific Linux release 6.3 (Carbon)
diff --git a/sources/sample/distrotest/Scientific/6.3.txt b/sources/sample/distrotest/Scientific/6.3.txt
new file mode 100644
index 0000000..ba0e5a8
--- /dev/null
+++ b/sources/sample/distrotest/Scientific/6.3.txt
@@ -0,0 +1,4 @@
+----------/etc/redhat-release----------
+Scientific Linux release 6.3 (Carbon)
+----------/etc/system-release----------
+Scientific Linux release 6.3 (Carbon)
diff --git a/sources/sample/distrotest/Scientific/6.4.txt b/sources/sample/distrotest/Scientific/6.4.txt
new file mode 100644
index 0000000..61a70d8
--- /dev/null
+++ b/sources/sample/distrotest/Scientific/6.4.txt
@@ -0,0 +1,12 @@
+----------lsb_release -a----------
+LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
+Distributor ID: ScientificFermi
+Description: Scientific Linux Fermi release 6.4 (Ramsey)
+Release: 6.4
+Codename: Ramsey
+----------/etc/lsb-release----------
+LSB_VERSION=base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
+----------/etc/redhat-release----------
+Scientific Linux Fermi release 6.4 (Ramsey)
+----------/etc/system-release----------
+Scientific Linux Fermi release 6.4 (Ramsey)
diff --git a/sources/sample/distrotest/Semplice/6.txt b/sources/sample/distrotest/Semplice/6.txt
new file mode 100644
index 0000000..ab04bbf
--- /dev/null
+++ b/sources/sample/distrotest/Semplice/6.txt
@@ -0,0 +1,22 @@
+----------lsb_release -a----------
+Distributor ID: Semplice
+Description: Semplice 6
+Release: 6
+Codename: heaven
+----------/etc/lsb-release----------
+DISTRIB_ID=Semplice
+DISTRIB_RELEASE=6
+DISTRIB_CODENAME=heaven
+DISTRIB_DESCRIPTION="Semplice 6"
+----------/etc/os-release----------
+NAME=Semplice
+VERSION="6"
+ID=semplice
+VERSION_ID=6
+PRETTY_NAME="Semplice 6 (Stairway to Heaven)"
+HOME_URL="http://semplice-linux.org"
+BUG_REPORT_URL="https://github.com/semplice"
+----------/etc/debian_version----------
+jessie/sid
+----------/etc/semplice_version----------
+6
diff --git a/sources/sample/distrotest/Slackware/14.0.txt b/sources/sample/distrotest/Slackware/14.0.txt
new file mode 100644
index 0000000..08dbe6f
--- /dev/null
+++ b/sources/sample/distrotest/Slackware/14.0.txt
@@ -0,0 +1,13 @@
+----------/etc/os-release----------
+NAME=Slackware
+VERSION="14.0"
+ID=slackware
+VERSION_ID=14.0
+PRETTY_NAME="Slackware 14.0"
+ANSI_COLOR="0;34"
+CPE_NAME="cpe:/o:slackware:slackware_linux:14.0"
+HOME_URL="http://slackware.com/"
+SUPPORT_URL="http://www.linuxquestions.org/questions/slackware-14/"
+BUG_REPORT_URL="http://www.linuxquestions.org/questions/slackware-14/"
+----------/etc/slackware-version----------
+Slackware 14.0
diff --git a/sources/sample/distrotest/Slax/7.0.1.txt b/sources/sample/distrotest/Slax/7.0.1.txt
new file mode 100644
index 0000000..6f0f4e2
--- /dev/null
+++ b/sources/sample/distrotest/Slax/7.0.1.txt
@@ -0,0 +1,15 @@
+----------/etc/os-release----------
+NAME=Slackware
+VERSION="14.0"
+ID=slackware
+VERSION_ID=14.0
+PRETTY_NAME="Slackware 14.0"
+ANSI_COLOR="0;34"
+CPE_NAME="cpe:/o:slackware:slackware_linux:14.0"
+HOME_URL="http://slackware.com/"
+SUPPORT_URL="http://www.linuxquestions.org/questions/slackware-14/"
+BUG_REPORT_URL="http://www.linuxquestions.org/questions/slackware-14/"
+----------/etc/slackware-version----------
+Slackware 14.0
+----------/etc/slax-version----------
+Slax 7.0.1 32bit
diff --git a/sources/sample/distrotest/SliTaz/2014.02.16-cooking.txt b/sources/sample/distrotest/SliTaz/2014.02.16-cooking.txt
new file mode 100644
index 0000000..4cdc929
--- /dev/null
+++ b/sources/sample/distrotest/SliTaz/2014.02.16-cooking.txt
@@ -0,0 +1,2 @@
+----------/etc/slitaz-release----------
+cooking
diff --git a/sources/sample/distrotest/Solus/1.0-rc1.txt b/sources/sample/distrotest/Solus/1.0-rc1.txt
new file mode 100644
index 0000000..f7a1b27
--- /dev/null
+++ b/sources/sample/distrotest/Solus/1.0-rc1.txt
@@ -0,0 +1,26 @@
+----------lsb_release -a----------
+LSB Version: 1.4
+Distributor ID: Solus
+Description: Solus Operating System
+Release: 1.0
+Codename: shannon
+----------/etc/lsb-release----------
+LSB_VERSION=1.4
+DISTRIB_ID=Solus
+DISTRIB_DESCRIPTION="Solus Operating System"
+DISTRIB_RELEASE=1.0
+DISTRIB_CODENAME=shannon
+----------/etc/os-release----------
+NAME="Solus Operating System"
+VERSION=1.0
+ID=solus-project
+VERSION_ID=1.0
+PRETTY_NAME="Solus Operating System 1.0"
+ANSI_COLOR="1;34"
+HOME_URL="https://www.solus-project.com"
+SUPPORT_URL="https://www.solus-project.com/forums/"
+BUG_REPORT_URL="https://www.solus-project.com/project/core"
+----------/etc/solus-release----------
+Solus Operating System 1.0
+----------/etc/image-version----------
+0.201544.4.0
diff --git a/sources/sample/distrotest/SolusOS/1.3.txt b/sources/sample/distrotest/SolusOS/1.3.txt
new file mode 100644
index 0000000..7a53baa
--- /dev/null
+++ b/sources/sample/distrotest/SolusOS/1.3.txt
@@ -0,0 +1,12 @@
+----------lsb_release -a----------
+Distributor ID: SolusOS
+Description: SolusOS Eveline 64-bit
+Release: 1.3
+Codename: Eveline
+----------/etc/lsb-release----------
+DISTRIB_ID=SolusOS
+DISTRIB_RELEASE=1.3
+DISTRIB_CODENAME=Eveline
+DISTRIB_DESCRIPTION="SolusOS Eveline 64-bit"
+----------/etc/debian_version----------
+6.0.6
diff --git a/sources/sample/distrotest/SolusOS/2-alpha7.txt b/sources/sample/distrotest/SolusOS/2-alpha7.txt
new file mode 100644
index 0000000..be2a484
--- /dev/null
+++ b/sources/sample/distrotest/SolusOS/2-alpha7.txt
@@ -0,0 +1,24 @@
+----------lsb_release -a----------
+Distributor ID: SolusOS
+Description: SolusOS 2 Alpha 7
+Release: Alpha
+Codename: Two
+----------/etc/lsb-release----------
+DISTRIB_ID=SolusOS
+DISTRIB_RELEASE=Alpha
+DISTRIB_CODENAME=Two
+DISTRIB_DESCRIPTION="SolusOS 2 Alpha 7"
+----------/etc/os-release----------
+PRETTY_NAME="Debian GNU/Linux 7.0 (wheezy)"
+NAME="Debian GNU/Linux"
+VERSION_ID="7.0"
+VERSION="7.0 (wheezy)"
+ID=ubuntu
+ANSI_COLOR="1;31"
+HOME_URL="http://www.debian.org/"
+SUPPORT_URL="http://www.debian.org/support/"
+BUG_REPORT_URL="http://bugs.debian.org/"
+----------/etc/debian_version----------
+7.0
+----------/etc/solusos_version----------
+SolusOS 2 Alpha
diff --git a/sources/sample/distrotest/SolydXK/2014.01-K.txt b/sources/sample/distrotest/SolydXK/2014.01-K.txt
new file mode 100644
index 0000000..7684ff3
--- /dev/null
+++ b/sources/sample/distrotest/SolydXK/2014.01-K.txt
@@ -0,0 +1,33 @@
+----------lsb_release -a----------
+Distributor ID: SolydXK
+Description: SolydXK
+Release: 1
+Codename: testing
+----------/etc/lsb-release----------
+DISTRIB_ID=SolydXK
+DISTRIB_RELEASE=1
+DISTRIB_CODENAME=testing
+DISTRIB_DESCRIPTION="SolydXK"
+----------/etc/os-release----------
+PRETTY_NAME="Debian GNU/Linux jessie/sid"
+NAME="Debian GNU/Linux"
+ID=debian
+ANSI_COLOR="1;31"
+HOME_URL="http://www.debian.org/"
+SUPPORT_URL="http://www.debian.org/support/"
+BUG_REPORT_URL="http://bugs.debian.org/"
+----------/etc/debian_version----------
+jessie/sid
+----------/etc/solydxk/info----------
+RELEASE=1
+CODENAME=testing
+EDITION=solydx64
+DESCRIPTION="SolydXK"
+DESKTOP=KDE
+DISTRIB_ID=SolydXK
+TOOLKIT=QT
+NEW_FEATURES_URL=http://www.solydxk.com
+RELEASE_NOTES_URL=http://www.solydxk.com
+USER_GUIDE_URL=http://www.solydxk.com
+GRUB_TITLE=SolydX 64-bit
+
diff --git a/sources/sample/distrotest/SolydXK/2014.01-X.txt b/sources/sample/distrotest/SolydXK/2014.01-X.txt
new file mode 100644
index 0000000..a77cf3d
--- /dev/null
+++ b/sources/sample/distrotest/SolydXK/2014.01-X.txt
@@ -0,0 +1,25 @@
+----------lsb_release -a----------
+Distributor ID: SolydXK
+Description: SolydXK
+Release: 1
+Codename: testing
+----------/etc/lsb-release----------
+DISTRIB_ID=SolydXK
+DISTRIB_RELEASE=1
+DISTRIB_CODENAME=testing
+DISTRIB_DESCRIPTION="SolydXK"
+----------/etc/debian_version----------
+jessie/sid
+----------/etc/solydxk/info----------
+RELEASE=1
+CODENAME=testing
+EDITION=solydx64
+DESCRIPTION="SolydXK"
+DESKTOP=Xfce
+DISTRIB_ID=SolydXK
+TOOLKIT=GTK
+NEW_FEATURES_URL=http://www.solydxk.com
+RELEASE_NOTES_URL=http://www.solydxk.com
+USER_GUIDE_URL=http://www.solydxk.com
+GRUB_TITLE=SolydX 64-bit
+
diff --git a/sources/sample/distrotest/StartOS/5.0.txt b/sources/sample/distrotest/StartOS/5.0.txt
new file mode 100644
index 0000000..a9a75df
--- /dev/null
+++ b/sources/sample/distrotest/StartOS/5.0.txt
@@ -0,0 +1,4 @@
+----------lsb_release -a----------
+StartOS release 5.0 (Braveheart)
+----------/etc/startos-release----------
+StartOS release 5.0 (Braveheart)
diff --git a/sources/sample/distrotest/StartOS/6.0.txt b/sources/sample/distrotest/StartOS/6.0.txt
new file mode 100644
index 0000000..eb849fb
--- /dev/null
+++ b/sources/sample/distrotest/StartOS/6.0.txt
@@ -0,0 +1,4 @@
+----------lsb_release -a----------
+StartOS release 6.0 (Dark Knight)
+----------/etc/startos-release----------
+StartOS release 6.0 (Dark Knight)
diff --git a/sources/sample/distrotest/SteamOS/1.0-beta.txt b/sources/sample/distrotest/SteamOS/1.0-beta.txt
new file mode 100644
index 0000000..0a8e4eb
--- /dev/null
+++ b/sources/sample/distrotest/SteamOS/1.0-beta.txt
@@ -0,0 +1,23 @@
+----------lsb_release -a----------
+Distributor ID: SteamOS
+Description: SteamOS 1.0
+Release: 1.0
+Codename: alchemist
+----------/etc/lsb-release----------
+DISTRIB_ID=SteamOS
+DISTRIB_RELEASE=1.0
+DISTRIB_CODENAME=alchemist
+DISTRIB_DESCRIPTION="SteamOS 1.0"
+----------/etc/os-release----------
+PRETTY_NAME="SteamOS GNU/Linux 7 (alchemist)"
+NAME="SteamOS GNU/Linux"
+VERSION_ID="1"
+VERSION="1 (alchemist)"
+ID=steamos
+ID_LIKE=debian
+ANSI_COLOR="1;31"
+HOME_URL="http://www.steampowered.com/"
+SUPPORT_URL="http://support.steampowered.com/"
+BUG_REPORT_URL="http://support.steampowered.com/"
+----------/etc/debian_version----------
+7.1
diff --git a/sources/sample/distrotest/Synology/4.1-2668.txt b/sources/sample/distrotest/Synology/4.1-2668.txt
new file mode 100644
index 0000000..ff07592
--- /dev/null
+++ b/sources/sample/distrotest/Synology/4.1-2668.txt
@@ -0,0 +1,264 @@
+----------/etc/synoinfo.conf----------
+unique="synology_bromolow_3612xs"
+company_title="Synology"
+
+# system options
+timezone="Sarajevo"
+language="def"
+maillang="enu"
+codepage="plk"
+defquota="5"
+defshare="public"
+defgroup="users"
+defright="writeable"
+eventsmtp=""
+eventmail1=""
+eventmail2=""
+eventauth="no"
+eventuser=""
+eventpasscrypted=""
+configured="yes"
+admin_port="5000"
+secure_admin_port="5001"
+pswdprotect="no"
+supportweb="yes"
+supportphoto="yes"
+support_download="yes"
+supportmysql="yes"
+supportquota="yes"
+supportitunes="yes"
+supportddns="yes"
+supportfilestation="yes"
+supportssl="yes"
+supportssh="yes"
+supportHTTPS="yes"
+supportNFS="yes"
+supportrsrcmon="yes"
+supportmemtest="yes"
+supportmount="yes"
+
+# service options
+runsamba="yes"
+runapple="yes"
+runftpd="no"
+ftpport="21"
+syslogport="514"
+ftp_trans_ext_ip="no"
+ftpflowcontrol="no"
+ftpmaxuploadrate="0"
+ftpmaxdownloadrate="0"
+ftpanonymouslogin="no"
+diskcache="on"
+standbytimer="20"
+standby_force="yes"
+enableguest="no"
+usbbkp="yes"
+usbcopy="no"
+netbkp="yes"
+runnetbkp="no"
+runmysql="no"
+supportmediaservice="yes"
+runmediaservice="no"
+supportups="yes"
+ddns_update="no"
+ddns_select=""
+ddns_reclaim_interval_mins="3"
+portmap_admin="no"
+portmap_ftp="no"
+portmap_http="no"
+portmap_http_add="no"
+portmap_netbkp="no"
+portmap_netbkp_encrypt="no"
+php_openbasedir_customize="no"
+ss_sync_event_player="yes"
+ss_cms="yes"
+ss_vs="yes"
+run_bonjour_printer_service="yes"
+tunnel_enable="no"
+printer_driver_host="http://download.synology.com/airprint/DSM4.1"
+
+# service limitations
+maxaccounts="4096"
+maxgroups="512"
+maxshares="512"
+maxservices="1024"
+maxdisks="12"
+maxprinters="2"
+maxlogsize="64"
+maxvhost="30"
+
+# UI options (limitations)
+company="synology"
+supplang="enu,cht,chs,krn,ger,fre,ita,spn,jpn,dan,nor,sve,nld,rus,plk,ptb,ptg,hun,trk,csy"
+product="DiskStation"
+manager="Synology DiskStation"
+vender="Synology Inc."
+mailfrom="Synology DiskStation"
+updateurl="http://www.synology.com/"
+win98autodisconnect="yes"
+
+wins="none"
+AppleTalk="eth0"
+default_ip="dhcp"
+default_mask=""
+default_gateway=""
+
+hostname="DiskStation"
+ntpdate_period="daily"
+ntpdate_server=""
+ntpdate_server_backup=""
+run_ntp_client="no"
+run_ntp_server="no"
+
+sdkversion="no"
+allowanonymous="yes"
+
+httpport="80"
+defaultfs="ext4"
+addport="no"
+supportuart2="yes"
+runafp="yes"
+oplock_disabled="no"
+
+
+# SMS options
+smsserver="clickatell"
+smsport="80"
+smstemplate="https://api.clickatell.com/http/sendmsg?user=@@USER@@&password=@@PASS@@&api_id=3148203&to=@@PHONE@@&text=@@TEXT@@"
+smssepchar="+"
+smsuser=""
+smspass=""
+smsphone1=""
+smsphone2=""
+smsssl="yes"
+smstest="no"
+smsneedinterval="no"
+smsinterval="1"
+
+# VS60 options
+vs_version="1.1"
+
+# DSM auto update default server
+rss_server="http://update.synology.com/autoupdate/genRSS.php"
+
+# Synology package update default server
+package_server="http://update.synology.com/packageupdate/getpackages.php"
+
+# Push Service Server address
+pushservice_server_1="https://sns1.synology.com:8089/api/"
+pushservice_server_2="https://sns2.synology.com:8089/api/"
+
+# Redirect Server address
+redirect_server="https://gofile.me/"
+
+package_update_channel="stable"
+
+upnpmodelurl=""
+upnpmodelname="DS3612xs"
+upnpmanufacturerurl="http://www.synology.com/"
+runupnp="no"
+upnpfriendlyname="DiskStation Device"
+upnpdevicetype="DiskStation"
+upnpmodeldescription="DiskStation UPnP Device"
+esataportcfg="0xff000"
+support_wireless="yes"
+support_synopkg="yes"
+disk_warning_percent="0.01"
+vpn_conn_max="20"
+eth3_mtu="1500"
+eth0_wol_options="d"
+supportldap="yes"
+supportfileindex="yes"
+support_timebkp_server="yes"
+support_transcode_mp3="yes"
+supportsmart="yes"
+supportphotopersonal="yes"
+s2s_task_max="16"
+supportext4="yes"
+support_iscsi_target="yes"
+synobios="bromolow"
+supportMFP="yes"
+eth5_mtu="1500"
+pgsql_sys_max_connections="100"
+eth2_wol_options="d"
+sysctl_kernel.sem="250 32000 32 256"
+supportntfswrite="yes"
+audio_support_eq="yes"
+support_syno_hybrid_raid="yes"
+max_volumes="1024"
+eth0_mtu="1500"
+supportSATA="yes"
+supportsystemperature="yes"
+eth7_mtu="1500"
+timebkp_max_task="16"
+supportrcpower="yes"
+support_wol="yes"
+support_ha="yes"
+support_vaai="yes"
+support_wimax="yes"
+supportsystempwarning="yes"
+use_reserved_more_gdt="yes"
+eth2_mtu="1500"
+supportMTU="yes"
+surveillance_camera_max="50"
+supportsurveillance="yes"
+s2s_watches_max="1024000"
+sfmaxworkercount="128"
+supportraidcross="yes"
+supportVLAN="yes"
+support_iscsi_lunbkp="yes"
+enableRCPower="no"
+support_share_encryption="yes"
+usbportcfg="0xf00000"
+support_webinstall="yes"
+support_s2s="yes"
+maxlanport="8"
+supportdomain="yes"
+supportvideostation="yes"
+mfp_manualtimer="300"
+eth4_mtu="1500"
+supportbootinst="yes"
+eth1_wol_options="d"
+support_synoacl="yes"
+eunitseq="sdm,sdq"
+max_iscsitrgs="64"
+max_iscsiluns="512"
+supportTc="yes"
+supportstartupd="yes"
+buzzeroffcfg="0x00"
+supportsnapshot="yes"
+supportdcacheui="yes"
+support_iscsi_target_block="yes"
+mfp_autotimer="60"
+support_auto_poweron="yes"
+eth6_mtu="1500"
+eth3_wol_options="d"
+internalportcfg="0xfff"
+max_lunbkp_srv="16"
+wol_enabled_options="g"
+buzzeroffen="0x1f"
+support_fan_adjust_dual_mode="yes"
+eth1_mtu="1500"
+support_mtd_serial="yes"
+sfmaxusercount="16"
+php_cache_size="64"
+support_audio="yes"
+supportraid="yes"
+iscsi_target_type="lio"
+
+# Fixed items
+eventtest="off"
+codepage_apple="1850"
+usb_standbytimer="0"
+runweb="no"
+runphoto="no"
+runaudiostation="no"
+runsurveillance="no"
+runpgsql="yes"
+runssh="yes"
+----------/etc/VERSION----------
+majorversion="4"
+minorversion="1"
+buildphase="0"
+buildnumber="2668"
+builddate="2012/12/11"
diff --git a/sources/sample/distrotest/Tails/0.22.1.txt b/sources/sample/distrotest/Tails/0.22.1.txt
new file mode 100644
index 0000000..b4f7b5d
--- /dev/null
+++ b/sources/sample/distrotest/Tails/0.22.1.txt
@@ -0,0 +1,5 @@
+----------/etc/os-release----------
+TAILS_PRODUCT_NAME="Tails"
+TAILS_VERSION_ID="0.22.1"
+----------/etc/debian_version----------
+6.0.8
diff --git a/sources/sample/distrotest/Tanglu/2.0-beta2.txt b/sources/sample/distrotest/Tanglu/2.0-beta2.txt
new file mode 100644
index 0000000..e045e76
--- /dev/null
+++ b/sources/sample/distrotest/Tanglu/2.0-beta2.txt
@@ -0,0 +1,20 @@
+----------lsb_release -a----------
+Distributor ID: Tanglu
+Description: Tanglu GNU/Linux 2 (Bartholomea Annulata)
+Release: 2
+Codename: bartholomea
+----------/etc/lsb-release----------
+DISTRIB_ID=Tanglu
+DISTRIB_RELEASE=2
+DISTRIB_CODENAME=bartholomea
+DISTRIB_DESCRIPTION="Tanglu GNU/Linux 2 (Bartholomea Annulata)"
+----------/etc/os-release----------
+PRETTY_NAME="Tanglu GNU/Linux 2 (Bartholomea Annulata)"
+NAME="Tanglu GNU/Linux"
+VERSION_ID="2"
+VERSION="2 (bartholomea)"
+ID=tanglu
+HOME_URL="http://www.tanglu.org/"
+BUG_REPORT_URL="http://bugs.tanglu.org/"
+----------/etc/debian_version----------
+7.5
diff --git a/sources/sample/distrotest/TinyCore/5.0.alpha4.txt b/sources/sample/distrotest/TinyCore/5.0.alpha4.txt
new file mode 100644
index 0000000..3aabce3
--- /dev/null
+++ b/sources/sample/distrotest/TinyCore/5.0.alpha4.txt
@@ -0,0 +1,2 @@
+----------/usr/share/doc/tc/release.txt----------
+5.0.alpha4
diff --git a/sources/sample/distrotest/Tizen/2.2.0-Magnolia.txt b/sources/sample/distrotest/Tizen/2.2.0-Magnolia.txt
new file mode 100644
index 0000000..74d52f0
--- /dev/null
+++ b/sources/sample/distrotest/Tizen/2.2.0-Magnolia.txt
@@ -0,0 +1,10 @@
+----------/etc/os-release----------
+NAME="Tizen"
+VERSION="2.2.0, Magnolia"
+ID=tizen
+PRETTY_NAME="Tizen Magnolia (2.2.0)"
+VERSION_ID="2.2.0"
+----------/etc/system-release----------
+Tizen release 2.2.0 (Magnolia)
+----------/etc/tizen-release-----------
+Tizen release 2.2.0 (Magnolia)
diff --git a/sources/sample/distrotest/Tizen/2.2.0-Tizen.txt b/sources/sample/distrotest/Tizen/2.2.0-Tizen.txt
new file mode 100644
index 0000000..1754686
--- /dev/null
+++ b/sources/sample/distrotest/Tizen/2.2.0-Tizen.txt
@@ -0,0 +1,10 @@
+----------/etc/os-release----------
+NAME="Tizen"
+VERSION="2.2.0, (Tizen)"
+ID=tizen
+PRETTY_NAME="Tizen 2.2.0 (Tizen)"
+VERSION_ID="2.2.0"
+----------/etc/system-release----------
+Tizen release 2.2.0 (Tizen)
+----------/etc/tizen-release-----------
+Tizen release 2.2.0 (Tizen)
diff --git a/sources/sample/distrotest/Trisquel/6.0.txt b/sources/sample/distrotest/Trisquel/6.0.txt
new file mode 100644
index 0000000..7655c6e
--- /dev/null
+++ b/sources/sample/distrotest/Trisquel/6.0.txt
@@ -0,0 +1,19 @@
+----------lsb_release -a----------
+Distributor ID: Trisquel
+Description: Trisquel 6.0
+Release: 6.0
+Codename: toutatis
+----------/etc/lsb-release----------
+DISTRIB_ID=Trisquel
+DISTRIB_RELEASE=6.0
+DISTRIB_CODENAME=toutatis
+DISTRIB_DESCRIPTION="Trisquel 6.0"
+----------/etc/os-release----------
+NAME="Ubuntu"
+VERSION="12.04.1 LTS, Precise Pangolin"
+ID=ubuntu
+ID_LIKE=debian
+PRETTY_NAME="Ubuntu precise (12.04.1 LTS)"
+VERSION_ID="12.04"
+----------/etc/debian_version----------
+wheezy/sid
diff --git a/sources/sample/distrotest/Turbo/12.5.txt b/sources/sample/distrotest/Turbo/12.5.txt
new file mode 100644
index 0000000..08da4c6
--- /dev/null
+++ b/sources/sample/distrotest/Turbo/12.5.txt
@@ -0,0 +1,2 @@
+----------/etc/turbolinux-release----------
+Turbolinux Client 12.5 (Magny-cours2)
diff --git a/sources/sample/distrotest/Ubuntu/10.04.txt b/sources/sample/distrotest/Ubuntu/10.04.txt
new file mode 100644
index 0000000..86d3bde
--- /dev/null
+++ b/sources/sample/distrotest/Ubuntu/10.04.txt
@@ -0,0 +1,7 @@
+----------/etc/lsb-release----------
+DISTRIB_ID=Ubuntu
+DISTRIB_RELEASE=10.04
+DISTRIB_CODENAME=lucid
+DISTRIB_DESCRIPTION="Ubuntu 10.04.3 LTS"
+----------/etc/debian_version----------
+squeeze/sid
diff --git a/sources/sample/distrotest/Ubuntu/12.04.txt b/sources/sample/distrotest/Ubuntu/12.04.txt
new file mode 100644
index 0000000..c9fbceb
--- /dev/null
+++ b/sources/sample/distrotest/Ubuntu/12.04.txt
@@ -0,0 +1,19 @@
+----------lsb_release -a----------
+Distributor ID: Ubuntu
+Description: Ubuntu 12.04.3 LTS
+Release: 12.04
+Codename: precise
+----------/etc/lsb-release----------
+DISTRIB_ID=Ubuntu
+DISTRIB_RELEASE=12.04
+DISTRIB_CODENAME=precise
+DISTRIB_DESCRIPTION="Ubuntu 12.04.3 LTS"
+----------/etc/os-release----------
+NAME="Ubuntu"
+VERSION="12.04.3 LTS, Precise Pangolin"
+ID=ubuntu
+ID_LIKE=debian
+PRETTY_NAME="Ubuntu precise (12.04.3 LTS)"
+VERSION_ID="12.04"
+----------/etc/debian_version----------
+wheezy/sid
diff --git a/sources/sample/distrotest/Ubuntu/13.10.txt b/sources/sample/distrotest/Ubuntu/13.10.txt
new file mode 100644
index 0000000..f95f541
--- /dev/null
+++ b/sources/sample/distrotest/Ubuntu/13.10.txt
@@ -0,0 +1,22 @@
+----------lsb_release -a----------
+Distributor ID: Ubuntu
+Description: Ubuntu 13.10
+Release: 13.10
+Codename: saucy
+----------/etc/lsb-release----------
+DISTRIB_ID=Ubuntu
+DISTRIB_RELEASE=13.10
+DISTRIB_CODENAME=saucy
+DISTRIB_DESCRIPTION="Ubuntu 13.10"
+----------/etc/os-release----------
+NAME="Ubuntu"
+VERSION="13.10, Saucy Salamander"
+ID=ubuntu
+ID_LIKE=debian
+PRETTY_NAME="Ubuntu 13.10"
+VERSION_ID="13.10"
+HOME_URL="http://www.ubuntu.com/"
+SUPPORT_URL="http://help.ubuntu.com/"
+BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
+----------/etc/debian_version----------
+wheezy/sid
diff --git a/sources/sample/distrotest/UltimateEdition/3.9.txt b/sources/sample/distrotest/UltimateEdition/3.9.txt
new file mode 100644
index 0000000..0b3aa57
--- /dev/null
+++ b/sources/sample/distrotest/UltimateEdition/3.9.txt
@@ -0,0 +1,19 @@
+----------lsb_release -a----------
+Distributor ID: Ultimate_Edition
+Description: Ultimate Edition 3.9
+Release: 3.9
+Codename: raring
+----------/etc/lsb-release----------
+DISTRIB_ID=Ultimate_Edition
+DISTRIB_RELEASE=3.9
+DISTRIB_CODENAME=raring
+DISTRIB_DESCRIPTION="Ultimate Edition 3.9"
+----------/etc/os-release----------
+NAME="Ultimate_Edition"
+VERSION=ultimate-edition-3.9-x64, "raring"
+ID=ultimate
+ID_LIKE=debian
+PRETTY_NAME="Ultimate_Edition (ultimate-edition-3.9-x64)"
+VERSION_ID=ultimate-edition-3.9-x64
+----------/etc/debian_version----------
+wheezy/sid
diff --git a/sources/sample/distrotest/Vector/647.0.txt b/sources/sample/distrotest/Vector/647.0.txt
new file mode 100644
index 0000000..e38c812
--- /dev/null
+++ b/sources/sample/distrotest/Vector/647.0.txt
@@ -0,0 +1,4 @@
+----------/etc/slackware-version----------
+Slackware 13.37.0
+----------/etc/vector-version----------
+Vlocity Linux 647.0 STD FINAL built on JUL-12-2012
diff --git a/sources/sample/distrotest/VortexBox/2.2.txt b/sources/sample/distrotest/VortexBox/2.2.txt
new file mode 100644
index 0000000..14ea7ef
--- /dev/null
+++ b/sources/sample/distrotest/VortexBox/2.2.txt
@@ -0,0 +1,8 @@
+----------/etc/fedora-release----------
+Fedora release 16 (Verne)
+----------/etc/redhat-release----------
+Fedora release 16 (Verne)
+----------/etc/system-release----------
+Fedora release 16 (Verne)
+----------/etc/vortexbox/vortexbox-version----------
+2.2
diff --git a/sources/sample/distrotest/VortexBox/2.3-beta.txt b/sources/sample/distrotest/VortexBox/2.3-beta.txt
new file mode 100644
index 0000000..fa1aa20
--- /dev/null
+++ b/sources/sample/distrotest/VortexBox/2.3-beta.txt
@@ -0,0 +1,22 @@
+----------/etc/fedora-release----------
+Fedora release 20 (Heisenbug)
+----------/etc/os-release----------
+NAME=Fedora
+VERSION="20 (Heisenbug)"
+ID=fedora
+VERSION_ID=20
+PRETTY_NAME="Fedora 20 (Heisenbug)"
+ANSI_COLOR="0;34"
+CPE_NAME="cpe:/o:fedoraproject:fedora:20"
+HOME_URL="https://fedoraproject.org/"
+BUG_REPORT_URL="https://bugzilla.redhat.com/"
+REDHAT_BUGZILLA_PRODUCT="Fedora"
+REDHAT_BUGZILLA_PRODUCT_VERSION=20
+REDHAT_SUPPORT_PRODUCT="Fedora"
+REDHAT_SUPPORT_PRODUCT_VERSION=20
+----------/etc/redhat-release----------
+Fedora release 20 (Heisenbug)
+----------/etc/system-release----------
+Fedora release 20 (Heisenbug)
+----------/etc/vortexbox/vortexbox-version----------
+2.3
diff --git a/sources/sample/distrotest/Zenwalk/7.4.txt b/sources/sample/distrotest/Zenwalk/7.4.txt
new file mode 100644
index 0000000..122380d
--- /dev/null
+++ b/sources/sample/distrotest/Zenwalk/7.4.txt
@@ -0,0 +1,11 @@
+----------/etc/os-release----------
+NAME=Zenwalk
+VERSION="7.4"
+ID=Zenwalk
+VERSION_ID="7.4"
+PRETTY_NAME="Zenwalk 7.4"
+HOME_URL="http://www.zenwalk.org/"
+----------/etc/slackware-version----------
+7.4
+----------/etc/zenwalk-version----------
+7.4
diff --git a/sources/sample/distrotest/Zorin/6.txt b/sources/sample/distrotest/Zorin/6.txt
new file mode 100644
index 0000000..559e4f4
--- /dev/null
+++ b/sources/sample/distrotest/Zorin/6.txt
@@ -0,0 +1,19 @@
+----------lsb_release -a----------
+Distributor ID: Zorin
+Description: Zorin OS 6
+Release: 6
+Codename: precise
+----------/etc/lsb-release----------
+DISTRIB_ID=Zorin
+DISTRIB_RELEASE=6
+DISTRIB_CODENAME=precise
+DISTRIB_DESCRIPTION="Zorin OS 6"
+----------/etc/os-release----------
+NAME="Ubuntu"
+VERSION="12.04.1 LTS, Precise Pangolin"
+ID=ubuntu
+ID_LIKE=debian
+PRETTY_NAME="Ubuntu precise (12.04.1 LTS)"
+VERSION_ID="12.04"
+----------/etc/debian_version----------
+wheezy/sid
diff --git a/sources/sample/distrotest/Zorin/7.txt b/sources/sample/distrotest/Zorin/7.txt
new file mode 100644
index 0000000..65145f2
--- /dev/null
+++ b/sources/sample/distrotest/Zorin/7.txt
@@ -0,0 +1,22 @@
+----------lsb_release -a----------
+Distributor ID: Zorin
+Description: Zorin OS 7
+Release: 7
+Codename: raring
+----------/etc/lsb-release----------
+DISTRIB_ID=Zorin
+DISTRIB_RELEASE=7
+DISTRIB_CODENAME=raring
+DISTRIB_DESCRIPTION="Zorin OS 7"
+----------/etc/os-release----------
+NAME="Ubuntu"
+VERSION="13.04, Raring Ringtail"
+ID=ubuntu
+ID_LIKE=debian
+PRETTY_NAME="Ubuntu 13.04"
+VERSION_ID="13.04"
+HOME_URL="http://www.ubuntu.com/"
+SUPPORT_URL="http://help.ubuntu.com/"
+BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
+----------/etc/debian_version----------
+wheezy/sid
diff --git a/sources/sample/distrotest/Zorin/8.txt b/sources/sample/distrotest/Zorin/8.txt
new file mode 100644
index 0000000..1a515ac
--- /dev/null
+++ b/sources/sample/distrotest/Zorin/8.txt
@@ -0,0 +1,22 @@
+----------lsb_release -a----------
+Distributor ID: Zorin
+Description: Zorin OS 8
+Release: 8
+Codename: saucy
+----------/etc/lsb-release----------
+DISTRIB_ID=Zorin
+DISTRIB_RELEASE=8
+DISTRIB_CODENAME=saucy
+DISTRIB_DESCRIPTION="Zorin OS 8"
+----------/etc/os-release----------
+NAME="Zorin OS"
+VERSION="8"
+ID=Zorin OS
+ID_LIKE=ubuntu
+PRETTY_NAME="Zorin OS 8"
+VERSION_ID="8"
+HOME_URL="http://www.zorin-os.com/"
+SUPPORT_URL="http://www.zorin-os.com/help/"
+BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
+----------/etc/debian_version----------
+wheezy/sid
diff --git a/sources/sample/distrotest/antiX/2012.07.06.txt b/sources/sample/distrotest/antiX/2012.07.06.txt
new file mode 100644
index 0000000..35e9a64
--- /dev/null
+++ b/sources/sample/distrotest/antiX/2012.07.06.txt
@@ -0,0 +1,9 @@
+----------/etc/os-release----------
+PRETTY_NAME="Debian GNU/Linux wheezy/sid"
+NAME="Debian GNU/Linux"
+ID=debian
+ANSI_COLOR="1;31"
+----------/etc/antix-version----------
+antiX-full Edelweißpiraten 06 August 2012
+----------/etc/debian_version----------
+wheezy/sid
diff --git a/sources/sample/distrotest/elementaryOS/0.2.txt b/sources/sample/distrotest/elementaryOS/0.2.txt
new file mode 100644
index 0000000..93dec32
--- /dev/null
+++ b/sources/sample/distrotest/elementaryOS/0.2.txt
@@ -0,0 +1,19 @@
+----------lsb_release -a----------
+Distributor ID: elementary OS
+Description: elementary OS Luna
+Release: 0.2
+Codename: luna
+----------/etc/lsb-release----------
+DISTRIB_ID="elementary OS"
+DISTRIB_RELEASE=0.2
+DISTRIB_CODENAME=luna
+DISTRIB_DESCRIPTION="elementary OS Luna"
+----------/etc/os-release----------
+NAME="elementary OS"
+VERSION="0.2 Luna"
+ID=elementary OS
+ID_LIKE=ubuntu
+PRETTY_NAME="elementary OS Luna"
+VERSION_ID="0.2"
+----------/etc/debian_version----------
+wheezy/sid
diff --git a/sources/sample/distrotest/gNewSense/3.0.txt b/sources/sample/distrotest/gNewSense/3.0.txt
new file mode 100644
index 0000000..d58ca78
--- /dev/null
+++ b/sources/sample/distrotest/gNewSense/3.0.txt
@@ -0,0 +1,12 @@
+----------lsb_release -a----------
+Distributor ID: gNewSense
+Description: gNewSense GNU/Linux 3.0 (parkes)
+Release: 3.0
+Codename: parkes
+----------/etc/lsb-release----------
+DISTRIB_ID=gNewSense
+DISTRIB_RELEASE=3.0
+DISTRIB_CODENAME=parkes
+DISTRIB_DESCRIPTION="gNewSense GNU/Linux 3.0 (parkes)"
+----------/etc/debian_version----------
+6.0.6
diff --git a/sources/sample/distrotest/openSUSE/11.3.txt b/sources/sample/distrotest/openSUSE/11.3.txt
new file mode 100644
index 0000000..c091c8b
--- /dev/null
+++ b/sources/sample/distrotest/openSUSE/11.3.txt
@@ -0,0 +1,9 @@
+----------lsb_release -a----------
+LSB Version: n/a
+Distributor ID: SUSE LINUX
+Description: openSUSE 11.3 (x86_64)
+Release: 11.3
+Codename: n/a
+----------/etc/SuSE-release----------
+openSUSE 11.3 (x86_64)
+VERSION = 11.3
diff --git a/sources/sample/distrotest/openSUSE/13.1.txt b/sources/sample/distrotest/openSUSE/13.1.txt
new file mode 100644
index 0000000..37002cf
--- /dev/null
+++ b/sources/sample/distrotest/openSUSE/13.1.txt
@@ -0,0 +1,18 @@
+----------lsb_release -a----------
+LSB Version: n/a
+Distributor ID: openSUSE project
+Description: openSUSE 13.1 Milestone 3 (x86_64)
+Release: 13.1
+Codename: Bottle
+----------/etc/SuSE-release----------
+openSUSE 13.1 Milestone 3 (x86_64)
+VERSION = 13.1
+CODENAME = Bottle
+----------/etc/os-release----------
+NAME=openSUSE
+VERSION="13.1 Milestone 3 (Bottle)"
+VERSION_ID="13.1milstone3"
+PRETTY_NAME="openSUSE 13.1 Milestone 3 (Bottle) (x86_64)"
+ID=opensuse
+ANSI_COLOR="0;32"
+CPE_NAME="cpe:/o:opensuse:opensuse:13.1"
diff --git a/sources/sample/logs/log_android21.txt b/sources/sample/logs/log_android21.txt
new file mode 100644
index 0000000..2c2613c
--- /dev/null
+++ b/sources/sample/logs/log_android21.txt
@@ -0,0 +1,270 @@
+---Sat, 11 May 2013 09:44:40 +0000 GMT--- Reading: /system/build.prop
+##### Merging of the /util/data/semc_kernel_time_stamp.prop file #####
+ro.build.date=Fri Dec 17 18:35:45 2010
+ro.build.date.utc=1292582145
+ro.build.user=SEMCUser
+ro.build.host=SEMCHost
+
+##### Final patch of properties #####
+ro.build.product=E15i
+ro.build.description=E15i-user 2.1-update1 2.1.1.A.0.16 238 test-keys
+
+ro.product.brand=SEMC
+ro.product.name=E15i_1252-3596
+ro.product.device=E15i
+ro.product.board=delta
+ro.build.version.incremental=73_d
+ro.build.tags=release-keys
+ro.build.fingerprint=SEMC/E15i_1252-3596/E15i/delta:2.1-update1/2.1.1.A.0.16/73_d:user/release-keys
+
+
+ ######################## Customized property values #########################
+
+ro.semc.version.cust=1252-3596
+ro.semc.version.cust_revision=R4B
+ro.semc.enable.fast_dormancy=true
+ro.config.ringtone=t-mobile_ringtone.ogg
+ro.config.notification_sound=t-mobile_message.ogg
+ro.camera.sound.forced=1
+ro.voicemail.dialing-number=+48602950000
+ #########################################################################
+
+
+#ro.config.ringtone=sony_ericsson.ogg
+#ro.config.notification_sound=notification.ogg
+ro.semc.content.number=PA4
+
+################# Updating of the SW Version #################
+ro.semc.version.fs_revision=2.1.1.A.0.16
+ro.build.id=2.1.1.A.0.16
+ro.build.display.id=2.1.1.A.0.16
+
+##### Values from product package metadata #####
+ro.product.model=E15i
+ro.semc.ms_type_id=AAD-3880091-BV
+ro.semc.version.fs=ORANGE-1-8
+ro.semc.product.name=Xperia X8
+ro.semc.product.device=E15
+
+# begin build properties
+# autogenerated by buildinfo.sh
+#ro.build.id=2.1.1.A.0.16
+#ro.build.display.id=2.1.1.A.0.16
+#ro.build.version.incremental=238
+ro.build.version.sdk=7
+ro.build.version.codename=REL
+ro.build.version.release=2.1-update1
+#ro.build.date=Sun Jan 30 20:24:08 CST 2011
+#ro.build.date.utc=1296390248
+ro.build.type=user
+#ro.build.user=hudsonslave
+#ro.build.host=cnbjlx3512
+#ro.build.tags=test-keys
+#ro.product.model=shakira
+#ro.product.brand=Sony-Ericsson
+#ro.product.name=shakira
+#ro.product.device=shakira
+#ro.product.board=delta
+ro.product.cpu.abi=armeabi
+ro.product.manufacturer=Sony Ericsson
+ro.product.locale.language=en
+ro.product.locale.region=GB
+ro.wifi.channels=
+ro.board.platform=msm7k
+# ro.build.product is obsolete; use ro.product.device
+#ro.build.product=shakira
+# Do not try to parse ro.build.description or .fingerprint
+#ro.build.description=shakira-user 2.1-update1 2.1.1.A.0.16 238 test-keys
+#ro.build.fingerprint=Sony-Ericsson/shakira/shakira/delta:2.1-update1/2.1.1.A.0.16/238:user/test-keys
+# end build properties
+#
+# system.prop for shakira
+#
+
+rild.libpath=/system/lib/libril-qc-1.so
+rild.libargs=-d /dev/smd0
+wifi.interface = wlan0
+ro.sf.lcd_density=160
+ro.semc.def_screen_orientation=sensor
+ro.semc.timescape_keys=X8_key
+ro.semc.timescape_model=1_handed
+ro.semc.sound_effects_enabled=false
+ro.workaround.noautofocus=1
+persist.rild.nitz_plmn=
+persist.rild.nitz_long_ons_0=
+persist.rild.nitz_long_ons_1=
+persist.rild.nitz_long_ons_2=
+persist.rild.nitz_long_ons_3=
+persist.rild.nitz_short_ons_0=
+persist.rild.nitz_short_ons_1=
+persist.rild.nitz_short_ons_2=
+persist.rild.nitz_short_ons_3=
+persist.ro.ril.sms_sync_sending=1
+DEVICE_PROVISIONED=1
+# Constant values for Battery test in Service menu.
+ro.semc.batt.capacity=950
+ro.semc.batt.test.consumption=150
+ro.semc.batt.test.z_threshold=30
+dalvik.vm.heapsize=24m
+kernel.log=default
+ro.telephony.call_ring.multiple=false
+debug.sf.hw=1
+keyguard.no_require_sim=true
+
+#
+# ADDITIONAL_BUILD_PROPERTIES
+#
+#ro.config.notification_sound=OnTheHunt.ogg
+ro.config.alarm_alert=Alarm_Classic.ogg
+ro.setupwizard.mode=DISABLED
+ro.com.google.gmsversion=2.1_r11
+ro.com.google.clientidbase=android-sonyericsson
+net.bt.name=Android
+ro.config.sync=yes
+dalvik.vm.stack-trace-file=/data/anr/traces.txt
+ro.drm.active.num=4
+ro.drm.active.0=semc,1
+ro.drm.active.1=cmla,0
+ro.drm.active.2=viaccess,0
+ro.drm.active.3=marlin,1
+---Sat, 11 May 2013 09:44:40 +0000 GMT--- Reading: /proc/sys/kernel/hostname
+localhost
+---Sat, 11 May 2013 09:44:40 +0000 GMT--- Reading: /proc/version
+Linux version 2.6.29 (SEMCUser@SEMCHost) (gcc version 4.4.0 (GCC) ) #1 PREEMPT Fri Dec 17 18:35:45 2010
+---Sat, 11 May 2013 09:44:40 +0000 GMT--- Reading: /proc/uptime
+2003.04 0.00
+---Sat, 11 May 2013 09:44:40 +0000 GMT--- Reading: /proc/cpuinfo
+Processor : ARMv6-compatible processor rev 5 (v6l)
+BogoMIPS : 599.65
+Features : swp half thumb fastmult vfp edsp java
+CPU implementer : 0x41
+CPU architecture: 6TEJ
+CPU variant : 0x1
+CPU part : 0xb36
+CPU revision : 5
+
+Hardware : SEMC Delta
+Revision : 0000
+Serial : 0000000000000000
+---Sat, 11 May 2013 09:44:40 +0000 GMT--- Reading: /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
+600000
+---Sat, 11 May 2013 09:44:40 +0000 GMT--- Reading: /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
+600000
+---Sat, 11 May 2013 09:44:40 +0000 GMT--- Reading: /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq
+245760
+---Sat, 11 May 2013 09:44:40 +0000 GMT--- Reading: /proc/stat
+cpu 86055 8531 23906 69411 12010 7 103 0 0
+cpu0 86055 8531 23906 69411 12010 7 103 0 0
+intr 8171919 11514 0 0 0 0 0 0 14363 501285 0 0 4 0 0 0 0 57488 0 0 18127 18154 406183 0 0 6436007 1 175242 142506 0 0 0 0 0 0 176802 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 39658 0 0 0 0 0 0 0 0 26 14 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 167624 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6856 0 0 0 0 0 0 0 0 60 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ctxt 15100441
+btime 1368263477
+processes 3738
+procs_running 1
+procs_blocked 1
+---Sat, 11 May 2013 09:44:41 +0000 GMT--- Reading: /proc/stat
+cpu 86101 8531 23914 69419 12048 7 103 0 0
+cpu0 86101 8531 23914 69419 12048 7 103 0 0
+intr 8172501 11517 0 0 0 0 0 0 14368 501580 0 0 4 0 0 0 0 57530 0 0 18141 18168 406207 0 0 6436007 1 175247 142510 0 0 0 0 0 0 176889 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 39660 0 0 0 0 0 0 0 0 26 14 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 167708 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6859 0 0 0 0 0 0 0 0 60 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ctxt 15101320
+btime 1368263477
+processes 3738
+procs_running 1
+procs_blocked 0
+---Sat, 11 May 2013 09:44:41 +0000 GMT--- Reading: /proc/net/dev
+Inter-| Receive | Transmit
+ face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
+ lo: 2089060 2577 0 0 0 0 0 0 2089060 2577 0 0 0 0 0 0
+dummy0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+rmnet0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+rmnet1: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+rmnet2: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ usb0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ wlan0:27900154 20327 0 0 0 0 0 0 817017 9503 0 0 0 0 0 0
+---Sat, 11 May 2013 09:44:41 +0000 GMT--- Executing: ifconfig lo 2>/dev/null
+lo: ip 127.0.0.1 mask 255.0.0.0 flags [up loopback running]
+---Sat, 11 May 2013 09:44:41 +0000 GMT--- Executing: ifconfig dummy0 2>/dev/null
+
+---Sat, 11 May 2013 09:44:41 +0000 GMT--- Executing: ifconfig rmnet0 2>/dev/null
+
+---Sat, 11 May 2013 09:44:41 +0000 GMT--- Executing: ifconfig rmnet1 2>/dev/null
+
+---Sat, 11 May 2013 09:44:41 +0000 GMT--- Executing: ifconfig rmnet2 2>/dev/null
+
+---Sat, 11 May 2013 09:44:41 +0000 GMT--- Executing: ifconfig usb0 2>/dev/null
+
+---Sat, 11 May 2013 09:44:41 +0000 GMT--- Executing: ifconfig sit0 2>/dev/null
+
+---Sat, 11 May 2013 09:44:42 +0000 GMT--- Executing: ifconfig wlan0 2>/dev/null
+wlan0: ip 192.168.1.2 mask 255.255.255.0 flags [up broadcast running multicast]
+---Sat, 11 May 2013 09:44:42 +0000 GMT--- Reading: /proc/meminfo
+MemTotal: 179788 kB
+MemFree: 2664 kB
+Buffers: 148 kB
+Cached: 26572 kB
+SwapCached: 0 kB
+Active: 75404 kB
+Inactive: 78812 kB
+Active(anon): 62080 kB
+Inactive(anon): 66112 kB
+Active(file): 13324 kB
+Inactive(file): 12700 kB
+Unevictable: 284 kB
+Mlocked: 0 kB
+SwapTotal: 0 kB
+SwapFree: 0 kB
+Dirty: 32 kB
+Writeback: 0 kB
+AnonPages: 127780 kB
+Mapped: 24760 kB
+Slab: 6744 kB
+SReclaimable: 1768 kB
+SUnreclaim: 4976 kB
+PageTables: 7272 kB
+NFS_Unstable: 0 kB
+Bounce: 0 kB
+WritebackTmp: 0 kB
+CommitLimit: 89892 kB
+Committed_AS: 2647024 kB
+VmallocTotal: 696320 kB
+VmallocUsed: 53040 kB
+VmallocChunk: 602116 kB
+---Sat, 11 May 2013 09:44:42 +0000 GMT--- Executing: df 2>/dev/null
+/dev: 89892K total, 12K used, 89880K available (block size 4096)
+/sqlite_stmt_journals: 4096K total, 8K used, 4088K available (block size 4096)
+/system: 210944K total, 190756K used, 20188K available (block size 4096)
+/data: 216832K total, 117836K used, 98996K available (block size 4096)
+/cache: 51200K total, 15756K used, 35444K available (block size 4096)
+/sdcard: 992860K total, 967764K used, 25096K available (block size 4096)
+---Sat, 11 May 2013 09:44:42 +0000 GMT--- Executing: mount
+rootfs / rootfs ro 0 0
+tmpfs /dev tmpfs rw,mode=755 0 0
+devpts /dev/pts devpts rw,mode=600 0 0
+proc /proc proc rw 0 0
+sysfs /sys sysfs rw 0 0
+tmpfs /sqlite_stmt_journals tmpfs rw,size=4096k 0 0
+/dev/block/mtdblock0 /system yaffs2 ro 0 0
+/dev/block/mtdblock2 /data yaffs2 rw,nosuid,nodev 0 0
+/dev/block/mtdblock1 /cache yaffs2 rw,nosuid,nodev 0 0
+DxDrmServerIpc /data/DxDrm/fuse fuse.DxDrmServerIpc rw,nosuid,nodev,user_id=0,group_id=0,allow_other 0 0
+/dev/block//vold/179:0 /sdcard vfat rw,dirsync,nosuid,nodev,noexec,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
+---Sat, 11 May 2013 09:44:42 +0000 GMT--- Reading: /proc/loadavg
+9.64 10.21 9.25 1/368 3761
+---Sat, 11 May 2013 09:44:42 +0000 GMT--- Reading: /proc/stat
+cpu 86106 8531 23923 69419 12048 7 103 0 0
+cpu0 86106 8531 23923 69419 12048 7 103 0 0
+intr 8172553 11517 0 0 0 0 0 0 14368 501597 0 0 4 0 0 0 0 57530 0 0 18141 18168 406228 0 0 6436010 1 175247 142510 0 0 0 0 0 0 176889 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 39660 0 0 0 0 0 0 0 0 26 14 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 167719 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6859 0 0 0 0 0 0 0 0 60 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ctxt 15101414
+btime 1368263477
+processes 3758
+procs_running 1
+procs_blocked 0
+---Sat, 11 May 2013 09:44:43 +0000 GMT--- Reading: /proc/stat
+cpu 86108 8531 23924 69516 12048 7 103 0 0
+cpu0 86108 8531 23924 69516 12048 7 103 0 0
+intr 8172829 11517 0 0 0 0 0 0 14386 501712 0 0 4 0 0 0 0 57534 0 0 18142 18169 406228 0 0 6436010 1 175250 142513 0 0 0 0 0 0 176934 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 39661 0 0 0 0 0 0 0 0 26 14 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 167804 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6859 0 0 0 0 0 0 0 0 60 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ctxt 15101638
+btime 1368263477
+processes 3758
+procs_running 1
+procs_blocked 0
diff --git a/sources/sample/logs/log_android412.txt b/sources/sample/logs/log_android412.txt
new file mode 100644
index 0000000..421ffe5
--- /dev/null
+++ b/sources/sample/logs/log_android412.txt
@@ -0,0 +1,443 @@
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /system/build.prop
+# begin build properties
+# autogenerated by buildinfo.sh
+ro.build.id=JZO54K
+ro.build.display.id=Jelly Blur 4.1.2 JZ054K eng.tiestobunio.20130507.120822 shakira test-keys
+ro.build.version.incremental=eng.tiestobunio.20130507.120822
+ro.build.version.sdk=16
+ro.build.version.codename=REL
+ro.build.version.release=4.1.2
+ro.build.date=Tue May 7 12:08:22 EURO 2013
+ro.build.date.utc=12082214
+ro.build.type=user
+ro.build.user=tiestobunio
+ro.build.host=toshiba
+ro.build.tags=test-keys
+ro.product.model=E15i
+ro.product.brand=SEMC
+ro.product.name=LT30p_1269-0608
+ro.product.device=shakira
+ro.product.board=shakira
+ro.product.cpu.abi=armeabi-v6l
+ro.product.cpu.abi2=armeabi
+ro.product.manufacturer=Sony Ericsson
+ro.wifi.channels=
+ro.board.platform=msm7x27
+# ro.build.product is obsolete; use ro.product.device
+ro.build.product=shakira
+# Do not try to parse ro.build.description or .fingerprint
+ro.build.description=LT30p-user 4.0.4 7.0.A.3.195 PPP_xw test-keys
+ro.build.fingerprint=Sony/LT30p_1269-0608/LT30p:4.0.4/7.0.A.3.195/PPP_xw:user/release-keys
+ro.build.characteristics=default
+ro.cm.device=shakira
+# end build properties
+
+#
+# ADDITIONAL_BUILD_PROPERTIES
+#
+ro.sf.lcd_density=160
+keyguard.no_require_sim=true
+ro.url.legal=http://www.google.com/intl/%s/mobile/android/basic/phone-legal.html
+ro.url.legal.android_privacy=http://www.google.com/intl/%s/mobile/android/basic/privacy.html
+ro.com.google.clientidbase=android-google
+ro.com.android.wifi-watchlist=GoogleGuest
+ro.setupwizard.enterprise_mode=1
+ro.com.android.dateformat=MM-dd-yyyy
+ro.com.android.dataroaming=false
+ro.cm.version=Jelly Blur CM10 V4.5
+ro.modversion=Jelly Blur CM10
+ro.min.kernel.version=2.6.32.60-nAa
+ro.min.kernel.revision=05
+persist.sys.themeId=sytem
+persist.sys.themePackageName=com.system.theme.jellybean
+ro.media.dec.jpeg.memcap=10000000
+rild.libpath=/system/lib/libril-qc-1.so
+rild.libargs=-d/dev/smd0
+ro.ril.hep=1
+ro.ril.hsdpa.category=10
+ro.ril.enable.dtm=1
+ro.ril.enable.3g.prefix=1
+ro.ril.hsxpa=2
+ro.ril.gprsclass=10
+ro.ril.hsupa.category=6
+ro.ril.disable.power.collapse=1
+ro.telephony.ril_class=SemcRIL
+wifi.interface=wlan0
+wifi.softap.interface=wlan0
+wifi.softapconcurrent.interface=wlan0
+wifi.supplicant_scan_interval=45
+ro.ril.def.agps.mode=2
+ro.ril.def.agps.feature=1
+persist.sys.use_16bpp_alpha=1
+persist.sys.use_dithering=0
+persist.sys.force_hw_ui=true
+ro.telephony.default_network=0
+ro.telephony.call_ring.delay=1000
+ro.telephony.call_ring.multiple=false
+ro.com.google.locationfeatures=1
+ro.com.google.networklocation=1
+ro.ril.enable.a52=1
+ro.ril.enable.a53=1
+ro.telephony.ril.v3=icccardstatus,skipbrokendatacall,signalstrength,datacall
+ro.telephony.ril_skip_locked=true
+ro.media.enc.file.format=3gp,mp4
+ro.media.enc.vid.codec=m4v,h263
+ro.media.enc.vid.h263.width=176,640
+ro.media.enc.vid.h263.height=144,480
+ro.media.enc.vid.h263.bps=64000,1600000
+ro.media.enc.vid.h263.fps=1,30
+ro.media.enc.vid.m4v.width=176,640
+ro.media.enc.vid.m4v.height=144,480
+ro.media.enc.vid.m4v.bps=64000,1600000
+ro.media.enc.vid.m4v.fps=1,30
+ro.media.dec.aud.wma.enabled=1
+ro.media.dec.vid.wmv.enabled=1
+settings.display.autobacklight=1
+media.stagefright.enable-player=true
+media.stagefright.enable-meta=true
+media.stagefright.enable-scan=true
+media.stagefright.enable-http=true
+windowsmgr.max_events_per_sec=200
+debug.camcorder.disablemeta=1
+dalvik.vm.dexopt-flags=v=a,o=v,m=y,u=y
+dalvik.vm.checkjni=0
+dalvik.vm.dexopt-data-only=1
+dalvik.vm.lockprof.threshold=500
+dalvik.vm.execution-mode=int:jit
+dalvik.vm.verify_bytecode=false
+dalvik.vm.heapsize=32m
+debug.sf.hw=1
+debug.composition.type=mdp
+debug.gr.numframebuffers=1
+ro.max.fling_velocity=4000
+debug.qctwa.statusbar=1
+debug.qctwa.preservebuf=1
+hwui.render_dirty_regions=false
+hwui.disable_vsync=true
+debug.mdpcomp.logs=0
+debug.sf.no_hw_vsync=1
+hwui.print_config=choice
+debug.enabletr=false
+debug.hwui.render_dirty_regions=false
+debug.hwui.disable_vsync=true
+com.qc.hardware=true
+persist.service.zram=1
+ro.zram.default=18
+persist.sys.usb.config=mtp,adb
+persist.service.adb.enable=1
+ro.opengles.version=131072
+ro.product.locale.language=en
+ro.product.locale.region=US
+ro.service.swiqi.supported=true
+persist.service.swiqi.enable=1
+persist.ro.ril.sms_sync_sending=1
+persist.android.strictmode=0
+debug.performance.tuning=1
+video.accelerate.hw=1
+pm.sleep_mode=1
+persist.pmem.camera=4000000
+ro.config.ringtone=CyanTone.ogg
+ro.config.notification_sound=CyanMessage.ogg
+ro.config.alarm_alert=CyanAlarm.ogg
+net.bt.name=Android
+dalvik.vm.stack-trace-file=/data/anr/traces.txt
+
+# Fast Reboot
+persist.sys.purgeable_assets=1
+# Render UI With GPU
+debug.sf.hw=1
+
+#Perfomance Engine
+
+persist.rild.nitz_plmn=
+
+persist.rild.nitz_long_ons_0=
+
+persist.rild.nitz_long_ons_1=
+
+persist.rild.nitz_long_ons_2=
+
+persist.rild.nitz_long_ons_3=
+
+persist.rild.nitz_short_ons_0=
+
+persist.rild.nitz_short_ons_1=
+
+persist.rild.nitz_short_ons_2=
+
+persist.rild.nitz_short_ons_3=
+
+
+#Disable blur
+debug.hwui.render_dirty_regions=false
+
+# Force use of GPU on 2D rendering
+# persist.sys.force_hw_ui=true
+
+# Proximity Tweaks
+ro.lge.proximity.delay=25
+mot.proximity.delay=25
+
+# Fast Reboot
+persist.sys.shutdown.mode=hibernate
+ro.config.hw_quickpoweron=true
+
+#Disable blur
+debug.hwui.render_dirty_regions=false
+# Force use of GPU on 2D rendering
+# persist.sys.force_hw_ui=true
+
+# Proximity Tweaks
+ro.lge.proximity.delay=25
+mot.proximity.delay=25
+
+# Frees More RAM
+persist.sys.purgeable_assets=1
+
+ro.HOME_APP_ADJ=1
+ro.mot.eri.losalert.delay=1000
+ro.config.hw_fast_dormancy=1
+ro.ril.enable.amr.wideband=1
+ro.config.hw_fast_dormancy=1
+ro.config.hw_quickpoweron=true
+
+
+#Media quality improvements
+media.stagefright.enable-player=true
+media.stagefright.enable-meta=true
+media.stagefright.enable-scan=true
+media.stagefright.enable-http=true
+media.stagefright.enable-record=true
+ro.media.enc.jpeg.quality=100
+ro.media.dec.jpeg.memcap=8000000
+ro.media.enc.hprof.vid.bps=8000000
+ro.media.enc.hprof.vid.fps=75
+video.accelerate.hw=1
+
+
+#Other Performance Tweaks
+ENFORCE_PROCESS_LIMIT=false
+persist.android.strictmode=0
+persist.service.lgospd.enable=0
+persist.service.pcsync.enable=0
+ro.min_pointer_dur=1
+ro.telephony.call_ring.delay=0
+ro.sec.proximity.delay=0
+ro.HOME_APP_ADJ=1
+debug.composition.type=gpu
+persist.sys.NV_FPSLIMIT=60
+dev.pm.dyn_samplingrate=1---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /proc/sys/kernel/hostname
+localhost
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /proc/version
+Linux version 2.6.32.60-nAa-05 (nobodyAtall@palikari) (gcc version 4.7.3 20121106 (prerelease) (Linaro GCC 4.7-2012.11) ) #1096 PREEMPT Sat Mar 16 20:04:00 EET 2013
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /proc/uptime
+1727.18 325.01
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /proc/cpuinfo
+Processor : ARMv6-compatible processor rev 5 (v6l)
+BogoMIPS : 599.65
+Features : swp half thumb fastmult vfp edsp java
+CPU implementer : 0x41
+CPU architecture: 6TEJ
+CPU variant : 0x1
+CPU part : 0xb36
+CPU revision : 5
+
+Hardware : SEMC Delta
+Revision : 0000
+Serial : 0000000000000000
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
+604800
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
+864000
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq
+122880
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/uevent
+POWER_SUPPLY_NAME=battery
+POWER_SUPPLY_TYPE=Battery
+POWER_SUPPLY_STATUS=Charging
+POWER_SUPPLY_PRESENT=1
+POWER_SUPPLY_HEALTH=Good
+POWER_SUPPLY_TECHNOLOGY=Li-poly
+POWER_SUPPLY_CAPACITY=100
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/capacity
+100
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/batt_temp
+330
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/batt_vol
+4181
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/technology
+Li-poly
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/status
+Charging
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/health
+Good
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /proc/stat
+cpu 67446 9149 43018 32501 20250 9 64 0 0
+cpu0 67446 9149 43018 32501 20250 9 64 0 0
+intr 9106653 10362 0 0 0 0 0 0 0 422747 0 0 11 0 0 0 0 37498 0 0 22911 33276 743963 0 9145 7167599 0 187062 0 0 0 0 0 0 0 431029 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18635 0 0 0 0 0 0 0 0 33 26 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13079 0 0 0 0 9266 0 0 0 0 0 0 0 0 5 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ctxt 18521396
+btime 1368381847
+processes 5477
+procs_running 4
+procs_blocked 3
+softirq 271689 0 130976 444 2408 0 0 46075 0 1139 90647
+---Sun, 12 May 2013 18:32:55 +0000 GMT--- Reading: /proc/stat
+cpu 67450 9149 43024 32501 20340 9 64 0 0
+cpu0 67450 9149 43024 32501 20340 9 64 0 0
+intr 9116370 10380 0 0 0 0 0 0 0 422818 0 0 11 0 0 0 0 37498 0 0 22911 33276 744057 0 9145 7176941 0 187062 0 0 0 0 0 0 0 431213 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18635 0 0 0 0 0 0 0 0 33 26 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13087 0 0 0 0 9266 0 0 0 0 0 0 0 0 5 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ctxt 18540445
+btime 1368381847
+processes 5477
+procs_running 1
+procs_blocked 1
+softirq 271729 0 131004 444 2408 0 0 46078 0 1140 90655
+---Sun, 12 May 2013 18:32:55 +0000 GMT--- Reading: /proc/net/dev
+Inter-| Receive | Transmit
+ face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
+ lo: 4906465 3467 0 0 0 0 0 0 4906465 3467 0 0 0 0 0 0
+dummy0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+rmnet0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+rmnet1: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+rmnet2: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+rmnet3: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+rmnet4: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+rmnet5: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+rmnet6: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+rmnet7: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ip6tnl0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ wlan0:23784505 16344 0 0 0 0 0 0 481451 5463 0 0 0 0 0 0
+---Sun, 12 May 2013 18:32:55 +0000 GMT--- Executing: ifconfig lo 2>/dev/null
+lo: ip 127.0.0.1 mask 255.0.0.0 flags [up loopback running]
+---Sun, 12 May 2013 18:32:55 +0000 GMT--- Executing: ifconfig dummy0 2>/dev/null
+
+---Sun, 12 May 2013 18:32:55 +0000 GMT--- Executing: ifconfig rmnet0 2>/dev/null
+
+---Sun, 12 May 2013 18:32:55 +0000 GMT--- Executing: ifconfig rmnet1 2>/dev/null
+
+---Sun, 12 May 2013 18:32:55 +0000 GMT--- Executing: ifconfig rmnet2 2>/dev/null
+
+---Sun, 12 May 2013 18:32:55 +0000 GMT--- Executing: ifconfig rmnet3 2>/dev/null
+
+---Sun, 12 May 2013 18:32:55 +0000 GMT--- Executing: ifconfig rmnet4 2>/dev/null
+
+---Sun, 12 May 2013 18:32:55 +0000 GMT--- Executing: ifconfig rmnet5 2>/dev/null
+
+---Sun, 12 May 2013 18:32:55 +0000 GMT--- Executing: ifconfig rmnet6 2>/dev/null
+
+---Sun, 12 May 2013 18:32:55 +0000 GMT--- Executing: ifconfig rmnet7 2>/dev/null
+
+---Sun, 12 May 2013 18:32:55 +0000 GMT--- Executing: ifconfig sit0 2>/dev/null
+
+---Sun, 12 May 2013 18:32:55 +0000 GMT--- Executing: ifconfig ip6tnl0 2>/dev/null
+
+---Sun, 12 May 2013 18:32:55 +0000 GMT--- Executing: ifconfig wlan0 2>/dev/null
+wlan0: ip 192.168.1.3 mask 255.255.255.0 flags [up broadcast running multicast]
+---Sun, 12 May 2013 18:32:55 +0000 GMT--- Reading: /proc/meminfo
+MemTotal: 190820 kB
+MemFree: 13680 kB
+Buffers: 160 kB
+Cached: 28056 kB
+SwapCached: 8788 kB
+Active: 68900 kB
+Inactive: 68544 kB
+Active(anon): 54804 kB
+Inactive(anon): 55032 kB
+Active(file): 14096 kB
+Inactive(file): 13512 kB
+Unevictable: 544 kB
+Mlocked: 0 kB
+SwapTotal: 34340 kB
+SwapFree: 808 kB
+Dirty: 60 kB
+Writeback: 0 kB
+AnonPages: 101708 kB
+Mapped: 20516 kB
+Shmem: 64 kB
+Slab: 11880 kB
+SReclaimable: 2900 kB
+SUnreclaim: 8980 kB
+KernelStack: 3816 kB
+PageTables: 3764 kB
+NFS_Unstable: 0 kB
+Bounce: 0 kB
+WritebackTmp: 0 kB
+CommitLimit: 129748 kB
+Committed_AS: 1438480 kB
+VmallocTotal: 565248 kB
+VmallocUsed: 34984 kB
+VmallocChunk: 472740 kB
+---Sun, 12 May 2013 18:32:55 +0000 GMT--- Reading: /proc/swaps
+Filename Type Size Used Priority
+/dev/block/zram0 partition 34340 33532 -1
+---Sun, 12 May 2013 18:32:56 +0000 GMT--- Executing: df 2>/dev/null
+Filesystem Size Used Free Blksize
+/cache 5M 996K 4M 4096
+/dev 93.2M 84K 93.1M 4096
+/mnt/asec 93.2M 0K 93.2M 4096
+/mnt/obb 93.2M 0K 93.2M 4096
+/system 261M 211M 50M 4096
+/data 191.8M 141.9M 49.9M 4096
+/storage/sdcard0 969.6M 669.3M 300.3M 4096
+/mnt/asec/com.ghisler.tcplugins.WebDAV-1 2M 588K 1.4M 4096
+/mnt/asec/org.connectbot-1 2M 764K 1.3M 4096
+/mnt/asec/jackpal.androidterm-1 2M 456K 1.6M 4096
+/mnt/asec/com.opera.browser-1 26M 24.7M 1.3M 4096
+/mnt/asec/com.ghisler.tcplugins.LAN-1 2M 352K 1.7M 4096
+/mnt/asec/com.ghisler.tcplugins.FTP-1 2M 408K 1.6M 4096
+/mnt/asec/com.ghisler.android.TotalCommander-1 3M 1.2M 1.8M 4096
+/mnt/asec/ru.zdevs.zarchiver-1 6M 4.3M 1.7M 4096
+/mnt/asec/pl.redefine.ipla-2 14M 12.3M 1.7M 4096
+/mnt/asec/mobi.infolife.appbackup-1 2M 428K 1.6M 4096
+/mnt/asec/com.skype.raider-1 18M 16.7M 1.3M 4096
+/mnt/asec/pl.vod-1 2M 472K 1.5M 4096
+/mnt/asec/org.mozilla.firefox-1 23M 21.3M 1.7M 4096
+---Sun, 12 May 2013 18:32:56 +0000 GMT--- Executing: mount
+rootfs / rootfs rw,nodiratime,relatime 0 0
+/dev/block/mtdblock1 /cache yaffs2 rw,nosuid,nodev,nodiratime,relatime 0 0
+tmpfs /dev tmpfs rw,nosuid,noatime,mode=755 0 0
+devpts /dev/pts devpts rw,noatime,mode=600 0 0
+proc /proc proc rw,noatime 0 0
+sysfs /sys sysfs rw,noatime 0 0
+tmpfs /mnt/asec tmpfs rw,noatime,mode=755,gid=1000 0 0
+tmpfs /mnt/obb tmpfs rw,noatime,mode=755,gid=1000 0 0
+/dev/block/mtdblock0 /system yaffs2 ro,relatime 0 0
+/dev/block/mtdblock2 /data yaffs2 rw,nosuid,nodev,nodiratime,relatime 0 0
+/dev/block/vold/179:0 /storage/sdcard0 vfat rw,dirsync,nosuid,nodev,noexec,noatime,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
+/dev/block/vold/179:0 /mnt/secure/asec vfat rw,dirsync,nosuid,nodev,noexec,noatime,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
+tmpfs /storage/sdcard0/.android_secure tmpfs ro,noatime,size=0k,mode=000 0 0
+/dev/block/dm-0 /mnt/asec/com.ghisler.tcplugins.WebDAV-1 ext4 ro,dirsync,nosuid,nodev,relatime,barrier=1,data=writeback 0 0
+/dev/block/dm-1 /mnt/asec/org.connectbot-1 ext4 ro,dirsync,nosuid,nodev,relatime,barrier=1,data=writeback 0 0
+/dev/block/dm-2 /mnt/asec/jackpal.androidterm-1 ext4 ro,dirsync,nosuid,nodev,relatime,barrier=1,data=writeback 0 0
+/dev/block/dm-3 /mnt/asec/com.opera.browser-1 ext4 ro,dirsync,nosuid,nodev,relatime,barrier=1,data=writeback 0 0
+/dev/block/dm-4 /mnt/asec/com.ghisler.tcplugins.LAN-1 ext4 ro,dirsync,nosuid,nodev,relatime,barrier=1,data=writeback 0 0
+/dev/block/dm-5 /mnt/asec/com.ghisler.tcplugins.FTP-1 ext4 ro,dirsync,nosuid,nodev,relatime,barrier=1,data=writeback 0 0
+/dev/block/dm-6 /mnt/asec/com.ghisler.android.TotalCommander-1 ext4 ro,dirsync,nosuid,nodev,relatime,barrier=1,data=writeback 0 0
+/dev/block/dm-7 /mnt/asec/ru.zdevs.zarchiver-1 ext4 ro,dirsync,nosuid,nodev,relatime,barrier=1,data=writeback 0 0
+/dev/block/dm-8 /mnt/asec/pl.redefine.ipla-2 ext4 ro,dirsync,nosuid,nodev,relatime,barrier=1,data=writeback 0 0
+/dev/block/dm-9 /mnt/asec/mobi.infolife.appbackup-1 ext4 ro,dirsync,nosuid,nodev,relatime,barrier=1,data=writeback 0 0
+/dev/block/dm-10 /mnt/asec/com.skype.raider-1 ext4 ro,dirsync,nosuid,nodev,relatime,barrier=1,data=writeback 0 0
+/dev/block/dm-11 /mnt/asec/pl.vod-1 ext4 ro,dirsync,nosuid,nodev,relatime,barrier=1,data=writeback 0 0
+/dev/block/dm-12 /mnt/asec/org.mozilla.firefox-1 ext4 ro,dirsync,nosuid,nodev,relatime,barrier=1,data=writeback 0 0
+---Sun, 12 May 2013 18:32:56 +0000 GMT--- Reading: /proc/loadavg
+11.23 11.98 10.79 1/475 5508
+---Sun, 12 May 2013 18:32:56 +0000 GMT--- Reading: /proc/stat
+cpu 67462 9149 43044 32501 20340 9 64 0 0
+cpu0 67462 9149 43044 32501 20340 9 64 0 0
+intr 9116804 10380 0 0 0 0 0 0 0 422857 0 0 11 0 0 0 0 37498 0 0 22911 33276 744135 0 9145 7177210 0 187062 0 0 0 0 0 0 0 431259 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18635 0 0 0 0 0 0 0 0 33 26 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13089 0 0 0 0 9266 0 0 0 0 0 0 0 0 5 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ctxt 18541338
+btime 1368381847
+processes 5507
+procs_running 1
+procs_blocked 1
+softirq 271870 0 131036 444 2408 0 0 46083 0 1140 90759
+---Sun, 12 May 2013 18:32:57 +0000 GMT--- Reading: /proc/stat
+cpu 67462 9149 43054 32528 20404 9 64 0 0
+cpu0 67462 9149 43054 32528 20404 9 64 0 0
+intr 9126517 10380 0 0 0 0 0 0 0 422931 0 0 11 0 0 0 0 37498 0 0 22911 33276 744138 0 9145 7186654 0 187062 0 0 0 0 0 0 0 431443 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18635 0 0 0 0 0 0 0 0 33 26 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13097 0 0 0 0 9266 0 0 0 0 0 0 0 0 5 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ctxt 18560395
+btime 1368381847
+processes 5507
+procs_running 1
+procs_blocked 0
+softirq 271904 0 131064 444 2408 0 0 46086 0 1140 90762
diff --git a/sources/sample/logs/log_bluestacks.txt b/sources/sample/logs/log_bluestacks.txt
new file mode 100644
index 0000000..b5b0751
--- /dev/null
+++ b/sources/sample/logs/log_bluestacks.txt
@@ -0,0 +1,202 @@
+---Mon, 29 Apr 2013 07:33:51 +0000 GMT--- Reading: /system/build.prop
+# begin build properties
+# autogenerated by buildinfo.sh
+ro.build.id=GRJ22
+ro.build.display.id=generic_x86-eng 2.3.4 GRJ22 eng.build.20121017.125534 test-keys
+ro.build.version.incremental=eng.build.20121017.125534
+ro.build.version.sdk=10
+ro.build.version.codename=REL
+ro.build.version.release=2.3.4
+ro.build.date=Wed Oct 17 14:18:50 IST 2012
+ro.build.date.utc=1350463730
+ro.build.type=eng
+ro.build.user=build
+ro.build.host=BuildServer
+ro.build.tags=test-keys
+ro.product.model=BlueStacks
+ro.product.brand=BlueStacks
+ro.product.name=BlueStacks
+ro.product.device=Virtual
+ro.product.board=
+ro.product.cpu.abi=armeabi-v7a
+ro.product.cpu.abi2=armeabi
+ro.product.manufacturer=BlueStacks
+ro.product.locale.language=en
+ro.product.locale.region=US
+ro.wifi.channels=
+ro.board.platform=
+# ro.build.product is obsolete; use ro.product.device
+ro.build.product=Virtual
+# Do not try to parse ro.build.description or .fingerprint
+ro.build.description=generic_x86-eng 2.3.4 GRJ22 eng.build.20121017.125534 test-keys
+ro.build.fingerprint=generic_x86/generic_x86/generic_x86:2.3.4/GRJ22/eng.build.20121017.125534:eng/test-keys
+# end build properties
+
+#
+# ADDITIONAL_BUILD_PROPERTIES
+#
+ro.config.notification_sound=OnTheHunt.ogg
+ro.config.alarm_alert=Alarm_Classic.ogg
+ro.com.android.dataroaming=true
+ro.kernel.android.checkjni=1
+ro.setupwizard.mode=OPTIONAL
+net.bt.name=Android
+dalvik.vm.stack-trace-file=/data/anr/traces.txt
+---Mon, 29 Apr 2013 07:33:51 +0000 GMT--- Reading: /proc/sys/kernel/hostname
+localhost
+---Mon, 29 Apr 2013 07:33:51 +0000 GMT--- Reading: /proc/version
+Linux version 2.6.38-android-x86+ (build@BuildServer) (gcc version 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4) ) #1 PREEMPT Thu Oct 25 09:38:01 IST 2012
+---Mon, 29 Apr 2013 07:33:51 +0000 GMT--- Reading: /proc/uptime
+59.49 39.40
+---Mon, 29 Apr 2013 07:33:51 +0000 GMT--- Reading: /proc/cpuinfo
+processor : 0
+vendor_id : GenuineIntel
+cpu family : 6
+model : 58
+model name : Intel(R) Core(TM) i5-3320M CPU @ 2.60GHz
+stepping : 9
+cpu MHz : 2594.000
+cache size : 3072 KB
+fdiv_bug : no
+hlt_bug : no
+f00f_bug : no
+coma_bug : no
+fpu : yes
+fpu_exception : yes
+cpuid level : 13
+wp : yes
+flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx rdtscp lm constant_tsc arch_perfmon pebs bts nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 x2apic popcnt aes avx f16c rdrnd lahf_lm ida arat epb pln pts dts tpr_shadow vnmi flexpriority ept vpid
+bogomips : 33449.57
+clflush size : 64
+cache_alignment : 64
+address sizes : 36 bits physical, 48 bits virtual
+power management:
+
+---Mon, 29 Apr 2013 07:33:51 +0000 GMT--- Reading: /proc/stat
+cpu 1240 219 360 3940 188 0 2 0 0 0
+cpu0 1240 219 360 3940 188 0 2 0 0 0
+intr 23405 5949 0 156 9791 26 627 0 3513 0 10 0 3329 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ctxt 91556
+btime 1367220772
+processes 1274
+procs_running 5
+procs_blocked 1
+softirq 19636 0 5734 0 1838 0 0 89 0 0 11975
+---Mon, 29 Apr 2013 07:33:52 +0000 GMT--- Reading: /proc/stat
+cpu 1318 219 364 3959 188 0 2 0 0 0
+cpu0 1318 219 364 3959 188 0 2 0 0 0
+intr 23660 6050 0 156 9827 26 627 0 3514 0 10 0 3446 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ctxt 92554
+btime 1367220772
+processes 1276
+procs_running 2
+procs_blocked 0
+softirq 19850 0 5831 0 1839 0 0 89 0 0 12091
+---Mon, 29 Apr 2013 07:33:52 +0000 GMT--- Reading: /proc/net/dev
+Inter-| Receive | Transmit
+ face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
+ lo: 642215 258 0 0 0 0 0 0 642215 258 0 0 0 0 0 0
+ eth0: 4201926 3512 0 0 0 0 0 0 1127382 2464 0 0 0 0 0 0
+---Mon, 29 Apr 2013 07:33:52 +0000 GMT--- Executing: ifconfig lo 2>/dev/null
+lo: ip 127.0.0.1 mask 255.0.0.0 flags [up loopback running]
+---Mon, 29 Apr 2013 07:33:52 +0000 GMT--- Executing: ifconfig eth0 2>/dev/null
+eth0: ip 10.0.2.15 mask 255.255.255.0 flags [up broadcast running multicast]
+---Mon, 29 Apr 2013 07:33:52 +0000 GMT--- Reading: /proc/meminfo
+MemTotal: 758548 kB
+MemFree: 112792 kB
+Buffers: 55744 kB
+Cached: 332496 kB
+SwapCached: 0 kB
+Active: 288288 kB
+Inactive: 330996 kB
+Active(anon): 235068 kB
+Inactive(anon): 32692 kB
+Active(file): 53220 kB
+Inactive(file): 298304 kB
+Unevictable: 0 kB
+Mlocked: 0 kB
+SwapTotal: 0 kB
+SwapFree: 0 kB
+Dirty: 3564 kB
+Writeback: 0 kB
+AnonPages: 231016 kB
+Mapped: 83540 kB
+Shmem: 36744 kB
+Slab: 12632 kB
+SReclaimable: 7296 kB
+SUnreclaim: 5336 kB
+KernelStack: 3232 kB
+PageTables: 4624 kB
+NFS_Unstable: 0 kB
+Bounce: 0 kB
+WritebackTmp: 0 kB
+CommitLimit: 379272 kB
+Committed_AS: 2100224 kB
+VmallocTotal: 237564 kB
+VmallocUsed: 28128 kB
+VmallocChunk: 178684 kB
+DirectMap4k: 0 kB
+DirectMap4M: 0 kB
+---Mon, 29 Apr 2013 07:33:52 +0000 GMT--- Executing: df 2>/dev/null
+Filesystem Size Used Free Blksize
+/ 370M 436K 369M 4096
+/mnt 370M 436K 369M 4096
+/ 370M 436K 369M 4096
+/system 153M 145M 7M 4096
+/cache 370M 3M 366M 4096
+/data 1G 324M 1G 4096
+/dev 370M 72K 370M 4096
+/mnt/asec 370M 0K 370M 4096
+/mnt/obb 370M 0K 370M 4096
+/mnt/sdcard 1G 163M 1G 4096
+/mnt/sdcard/bstfolder/PublicDocuments 149G 123G 25G 4096
+/mnt/sdcard/bstfolder/Documents 149G 123G 25G 4096
+/mnt/sdcard/bstfolder/Pictures 149G 123G 25G 4096
+/mnt/sdcard/bstfolder/BstSharedFolder 149G 123G 25G 4096
+/mnt/sdcard/bstfolder/PublicPictures 149G 123G 25G 4096
+---Mon, 29 Apr 2013 07:33:52 +0000 GMT--- Executing: mount
+rootfs / rootfs rw 0 0
+proc /proc proc rw,relatime 0 0
+sys /sys sysfs rw,relatime 0 0
+/dev/sda1 /mnt ext4 ro,relatime,barrier=1,data=ordered 0 0
+tmpfs / tmpfs ro,relatime 0 0
+/dev/loop0 /sfs squashfs ro,relatime 0 0
+/dev/loop1 /system ext4 ro,relatime,barrier=1,data=ordered 0 0
+tmpfs /cache tmpfs rw,relatime 0 0
+/dev/sdb1 /data ext4 rw,relatime,barrier=1,data=ordered 0 0
+tmpfs /dev tmpfs rw,relatime,mode=755 0 0
+devpts /dev/pts devpts rw,relatime,mode=600 0 0
+proc /proc proc rw,relatime 0 0
+sysfs /sys sysfs rw,relatime 0 0
+tmpfs /mnt/asec tmpfs rw,relatime,mode=755,gid=1000 0 0
+tmpfs /mnt/obb tmpfs rw,relatime,mode=755,gid=1000 0 0
+/dev/block/vold/8:33 /mnt/sdcard vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
+/dev/block/vold/8:33 /mnt/secure/asec vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
+tmpfs /mnt/sdcard/.android_secure tmpfs ro,relatime,size=0k,mode=000 0 0
+PublicDocuments /mnt/sdcard/bstfolder/PublicDocuments bstfolder rw,nosuid,nodev,relatime,uid=1000,gid=1015,fmask=0702,dmask=0702 0 0
+Documents /mnt/sdcard/bstfolder/Documents bstfolder rw,nosuid,nodev,relatime,uid=1000,gid=1015,fmask=0702,dmask=0702 0 0
+Pictures /mnt/sdcard/bstfolder/Pictures bstfolder rw,nosuid,nodev,relatime,uid=1000,gid=1015,fmask=0702,dmask=0702 0 0
+BstSharedFolder /mnt/sdcard/bstfolder/BstSharedFolder bstfolder rw,nosuid,nodev,relatime,uid=1000,gid=1015,fmask=0702,dmask=0702 0 0
+PublicPictures /mnt/sdcard/bstfolder/PublicPictures bstfolder rw,nosuid,nodev,relatime,uid=1000,gid=1015,fmask=0702,dmask=0702 0 0
+---Mon, 29 Apr 2013 07:33:52 +0000 GMT--- Reading: /proc/loadavg
+2.77 0.77 0.26 2/400 1284
+---Mon, 29 Apr 2013 07:33:52 +0000 GMT--- Reading: /proc/stat
+cpu 1318 219 364 3960 188 0 2 0 0 0
+cpu0 1318 219 364 3960 188 0 2 0 0 0
+intr 23669 6051 0 156 9829 31 627 0 3514 0 10 0 3447 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ctxt 92638
+btime 1367220772
+processes 1284
+procs_running 2
+procs_blocked 0
+softirq 19852 0 5832 0 1839 0 0 89 0 0 12092
+---Mon, 29 Apr 2013 07:33:53 +0000 GMT--- Reading: /proc/stat
+cpu 1320 219 365 4058 188 0 2 0 0 0
+cpu0 1320 219 365 4058 188 0 2 0 0 0
+intr 23890 6152 0 156 9829 31 627 0 3514 0 10 0 3567 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ctxt 93138
+btime 1367220772
+processes 1284
+procs_running 2
+procs_blocked 0
+softirq 20059 0 5925 0 1839 0 0 89 0 0 12206
diff --git a/sources/sample/logs/log_debian7.txt b/sources/sample/logs/log_debian7.txt
new file mode 100644
index 0000000..31904fa
--- /dev/null
+++ b/sources/sample/logs/log_debian7.txt
@@ -0,0 +1,153 @@
+---Mon, 06 May 2013 12:38:18 +0000 GMT--- Executing: lsb_release -a 2>/dev/null
+Distributor ID: Debian
+Description: Debian GNU/Linux 7.0 (wheezy)
+Release: 7.0
+Codename: wheezy
+---Mon, 06 May 2013 12:38:18 +0000 GMT--- Reading: /proc/sys/kernel/hostname
+testowy
+---Mon, 06 May 2013 12:38:18 +0000 GMT--- Executing: uname -r
+3.2.0-4-amd64
+---Mon, 06 May 2013 12:38:18 +0000 GMT--- Executing: uname -v
+#1 SMP Debian 3.2.41-2
+---Mon, 06 May 2013 12:38:18 +0000 GMT--- Executing: uname -m
+x86_64
+---Mon, 06 May 2013 12:38:18 +0000 GMT--- Reading: /proc/uptime
+163.27 99.71
+---Mon, 06 May 2013 12:38:18 +0000 GMT--- Executing: who
+mietekn tty7 May 6 14:36 (:0)
+mietekn pts/0 May 6 14:36 (:0.0)
+---Mon, 06 May 2013 12:38:18 +0000 GMT--- Reading: /proc/cpuinfo
+processor : 0
+vendor_id : GenuineIntel
+cpu family : 6
+model : 58
+model name : Intel(R) Core(TM) i5-3320M CPU @ 2.60GHz
+stepping : 9
+cpu MHz : 2702.529
+cache size : 6144 KB
+fpu : yes
+fpu_exception : yes
+cpuid level : 5
+wp : yes
+flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx rdtscp lm constant_tsc up rep_good nopl pni monitor ssse3 lahf_lm
+bogomips : 5405.05
+clflush size : 64
+cache_alignment : 64
+address sizes : 36 bits physical, 48 bits virtual
+power management:
+
+---Mon, 06 May 2013 12:38:18 +0000 GMT--- Executing: lspci
+00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
+00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
+00:01.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01)
+00:02.0 VGA compatible controller: InnoTek Systemberatung GmbH VirtualBox Graphics Adapter
+00:03.0 Ethernet controller: Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rev 40)
+00:04.0 System peripheral: InnoTek Systemberatung GmbH VirtualBox Guest Service
+00:05.0 Multimedia audio controller: Intel Corporation 82801AA AC'97 Audio Controller (rev 01)
+00:06.0 USB controller: Apple Inc. KeyLargo/Intrepid USB
+00:07.0 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 08)
+---Mon, 06 May 2013 12:38:19 +0000 GMT--- Executing: lsusb
+Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
+Bus 001 Device 002: ID 80ee:0021 VirtualBox USB Tablet
+---Mon, 06 May 2013 12:38:19 +0000 GMT--- Reading: /proc/net/dev
+Inter-| Receive | Transmit
+ face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
+ lo: 548340 347 0 0 0 0 0 0 548340 347 0 0 0 0 0 0
+ eth0: 2710 14 0 0 0 0 0 0 11766 90 0 0 0 0 0 0
+---Mon, 06 May 2013 12:38:19 +0000 GMT--- Executing: ifconfig lo 2>/dev/null
+lo Link encap:Local Loopback
+ inet addr:127.0.0.1 Mask:255.0.0.0
+ inet6 addr: ::1/128 Scope:Host
+ UP LOOPBACK RUNNING MTU:16436 Metric:1
+ RX packets:347 errors:0 dropped:0 overruns:0 frame:0
+ TX packets:347 errors:0 dropped:0 overruns:0 carrier:0
+ collisions:0 txqueuelen:0
+ RX bytes:548340 (535.4 KiB) TX bytes:548340 (535.4 KiB)
+---Mon, 06 May 2013 12:38:19 +0000 GMT--- Executing: ifconfig eth0 2>/dev/null
+eth0 Link encap:Ethernet HWaddr 08:00:27:da:5a:52
+ inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0
+ inet6 addr: fe80::a00:27ff:feda:5a52/64 Scope:Link
+ UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
+ RX packets:14 errors:0 dropped:0 overruns:0 frame:0
+ TX packets:90 errors:0 dropped:0 overruns:0 carrier:0
+ collisions:0 txqueuelen:1000
+ RX bytes:2710 (2.6 KiB) TX bytes:11766 (11.4 KiB)
+ Interrupt:10 Base address:0xd020
+---Mon, 06 May 2013 12:38:19 +0000 GMT--- Reading: /proc/meminfo
+MemTotal: 1027016 kB
+MemFree: 416792 kB
+Buffers: 27908 kB
+Cached: 240008 kB
+SwapCached: 0 kB
+Active: 339608 kB
+Inactive: 213396 kB
+Active(anon): 285704 kB
+Inactive(anon): 312 kB
+Active(file): 53904 kB
+Inactive(file): 213084 kB
+Unevictable: 0 kB
+Mlocked: 0 kB
+SwapTotal: 392188 kB
+SwapFree: 392188 kB
+Dirty: 1032 kB
+Writeback: 0 kB
+AnonPages: 285032 kB
+Mapped: 78396 kB
+Shmem: 972 kB
+Slab: 24632 kB
+SReclaimable: 12076 kB
+SUnreclaim: 12556 kB
+KernelStack: 2272 kB
+PageTables: 18520 kB
+NFS_Unstable: 0 kB
+Bounce: 0 kB
+WritebackTmp: 0 kB
+CommitLimit: 905696 kB
+Committed_AS: 1393264 kB
+VmallocTotal: 34359738367 kB
+VmallocUsed: 5092 kB
+VmallocChunk: 34359733275 kB
+HardwareCorrupted: 0 kB
+AnonHugePages: 0 kB
+HugePages_Total: 0
+HugePages_Free: 0
+HugePages_Rsvd: 0
+HugePages_Surp: 0
+Hugepagesize: 2048 kB
+DirectMap4k: 40896 kB
+DirectMap2M: 1007616 kB
+---Mon, 06 May 2013 12:38:19 +0000 GMT--- Reading: /proc/swaps
+Filename Type Size Used Priority
+/dev/sda5 partition 392188 0 -1
+---Mon, 06 May 2013 12:38:19 +0000 GMT--- Executing: df -k -P 2>/dev/null
+Filesystem 1024-blocks Used Available Capacity Mounted on
+rootfs 7867856 3799840 3668352 51% /
+udev 10240 0 10240 0% /dev
+tmpfs 102704 612 102092 1% /run
+/dev/disk/by-uuid/ba660f60-9c33-4be6-b545-4919e9e0cfcd 7867856 3799840 3668352 51% /
+tmpfs 5120 0 5120 0% /run/lock
+tmpfs 283840 224 283616 1% /run/shm
+/dev/sr0 58094 58094 0 100% /media/cdrom0
+---Mon, 06 May 2013 12:38:19 +0000 GMT--- Executing: df -i -P 2>/dev/null
+Filesystem Inodes IUsed IFree IUse% Mounted on
+rootfs 499712 152037 347675 31% /
+udev 126863 358 126505 1% /dev
+tmpfs 128377 326 128051 1% /run
+/dev/disk/by-uuid/ba660f60-9c33-4be6-b545-4919e9e0cfcd 499712 152037 347675 31% /
+tmpfs 128377 2 128375 1% /run/lock
+tmpfs 128377 6 128371 1% /run/shm
+/dev/sr0 0 0 0 - /media/cdrom0
+---Mon, 06 May 2013 12:38:19 +0000 GMT--- Executing: mount
+sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
+proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
+udev on /dev type devtmpfs (rw,relatime,size=10240k,nr_inodes=126863,mode=755)
+devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
+tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=102704k,mode=755)
+/dev/disk/by-uuid/ba660f60-9c33-4be6-b545-4919e9e0cfcd on / type ext4 (rw,relatime,errors=remount-ro,user_xattr,barrier=1,data=ordered)
+tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
+tmpfs on /run/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=283840k)
+rpc_pipefs on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime)
+binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,nosuid,nodev,noexec,relatime)
+/dev/sr0 on /media/cdrom0 type iso9660 (ro,nosuid,nodev,noexec,relatime,user=mietekn)
+---Mon, 06 May 2013 12:38:19 +0000 GMT--- Reading: /proc/loadavg
+0.34 0.36 0.15 1/283 3745
diff --git a/sources/sample/logs/log_sf.txt b/sources/sample/logs/log_sf.txt
new file mode 100644
index 0000000..a1f6231
--- /dev/null
+++ b/sources/sample/logs/log_sf.txt
@@ -0,0 +1,697 @@
+---Mon, 03 Jun 2013 11:37:11 +0000 GMT--- Reading: /etc/centos-release
+CentOS release 6.3 (Final)
+---Mon, 03 Jun 2013 11:37:11 +0000 GMT--- Reading: /proc/sys/kernel/hostname
+sfp-web-6.v30.ch3.sourceforge.com
+---Mon, 03 Jun 2013 11:37:11 +0000 GMT--- Executing: uname -r
+2.6.32-358.6.1.el6.sog20130514.x86_64
+---Mon, 03 Jun 2013 11:37:11 +0000 GMT--- Executing: uname -v
+#1 SMP Tue May 14 17:31:39 UTC 2013
+---Mon, 03 Jun 2013 11:37:12 +0000 GMT--- Executing: uname -m
+x86_64
+---Mon, 03 Jun 2013 11:37:12 +0000 GMT--- Reading: /proc/uptime
+1694267.18 4577690.73
+---Mon, 03 Jun 2013 11:37:12 +0000 GMT--- Executing: who
+
+---Mon, 03 Jun 2013 11:37:12 +0000 GMT--- Reading: /proc/cpuinfo
+processor : 0
+vendor_id : GenuineIntel
+cpu family : 6
+model : 13
+model name : QEMU Virtual CPU version (cpu64-rhel6)
+stepping : 3
+cpu MHz : 1994.999
+cache size : 4096 KB
+fpu : yes
+fpu_exception : yes
+cpuid level : 4
+wp : yes
+flags : fpu de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pse36 clflush mmx fxsr sse sse2 syscall nx lm unfair_spinlock pni cx16 hypervisor lahf_lm
+bogomips : 3989.99
+clflush size : 64
+cache_alignment : 64
+address sizes : 44 bits physical, 48 bits virtual
+power management:
+
+processor : 1
+vendor_id : GenuineIntel
+cpu family : 6
+model : 13
+model name : QEMU Virtual CPU version (cpu64-rhel6)
+stepping : 3
+cpu MHz : 1994.999
+cache size : 4096 KB
+fpu : yes
+fpu_exception : yes
+cpuid level : 4
+wp : yes
+flags : fpu de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pse36 clflush mmx fxsr sse sse2 syscall nx lm unfair_spinlock pni cx16 hypervisor lahf_lm
+bogomips : 3989.99
+clflush size : 64
+cache_alignment : 64
+address sizes : 44 bits physical, 48 bits virtual
+power management:
+
+processor : 2
+vendor_id : GenuineIntel
+cpu family : 6
+model : 13
+model name : QEMU Virtual CPU version (cpu64-rhel6)
+stepping : 3
+cpu MHz : 1994.999
+cache size : 4096 KB
+fpu : yes
+fpu_exception : yes
+cpuid level : 4
+wp : yes
+flags : fpu de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pse36 clflush mmx fxsr sse sse2 syscall nx lm unfair_spinlock pni cx16 hypervisor lahf_lm
+bogomips : 3989.99
+clflush size : 64
+cache_alignment : 64
+address sizes : 44 bits physical, 48 bits virtual
+power management:
+
+processor : 3
+vendor_id : GenuineIntel
+cpu family : 6
+model : 13
+model name : QEMU Virtual CPU version (cpu64-rhel6)
+stepping : 3
+cpu MHz : 1994.999
+cache size : 4096 KB
+fpu : yes
+fpu_exception : yes
+cpuid level : 4
+wp : yes
+flags : fpu de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pse36 clflush mmx fxsr sse sse2 syscall nx lm unfair_spinlock pni cx16 hypervisor lahf_lm
+bogomips : 3989.99
+clflush size : 64
+cache_alignment : 64
+address sizes : 44 bits physical, 48 bits virtual
+power management:
+
+processor : 4
+vendor_id : GenuineIntel
+cpu family : 6
+model : 13
+model name : QEMU Virtual CPU version (cpu64-rhel6)
+stepping : 3
+cpu MHz : 1994.999
+cache size : 4096 KB
+fpu : yes
+fpu_exception : yes
+cpuid level : 4
+wp : yes
+flags : fpu de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pse36 clflush mmx fxsr sse sse2 syscall nx lm unfair_spinlock pni cx16 hypervisor lahf_lm
+bogomips : 3989.99
+clflush size : 64
+cache_alignment : 64
+address sizes : 44 bits physical, 48 bits virtual
+power management:
+
+processor : 5
+vendor_id : GenuineIntel
+cpu family : 6
+model : 13
+model name : QEMU Virtual CPU version (cpu64-rhel6)
+stepping : 3
+cpu MHz : 1994.999
+cache size : 4096 KB
+fpu : yes
+fpu_exception : yes
+cpuid level : 4
+wp : yes
+flags : fpu de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pse36 clflush mmx fxsr sse sse2 syscall nx lm unfair_spinlock pni cx16 hypervisor lahf_lm
+bogomips : 3989.99
+clflush size : 64
+cache_alignment : 64
+address sizes : 44 bits physical, 48 bits virtual
+power management:
+
+processor : 6
+vendor_id : GenuineIntel
+cpu family : 6
+model : 13
+model name : QEMU Virtual CPU version (cpu64-rhel6)
+stepping : 3
+cpu MHz : 1994.999
+cache size : 4096 KB
+fpu : yes
+fpu_exception : yes
+cpuid level : 4
+wp : yes
+flags : fpu de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pse36 clflush mmx fxsr sse sse2 syscall nx lm unfair_spinlock pni cx16 hypervisor lahf_lm
+bogomips : 3989.99
+clflush size : 64
+cache_alignment : 64
+address sizes : 44 bits physical, 48 bits virtual
+power management:
+
+processor : 7
+vendor_id : GenuineIntel
+cpu family : 6
+model : 13
+model name : QEMU Virtual CPU version (cpu64-rhel6)
+stepping : 3
+cpu MHz : 1994.999
+cache size : 4096 KB
+fpu : yes
+fpu_exception : yes
+cpuid level : 4
+wp : yes
+flags : fpu de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pse36 clflush mmx fxsr sse sse2 syscall nx lm unfair_spinlock pni cx16 hypervisor lahf_lm
+bogomips : 3989.99
+clflush size : 64
+cache_alignment : 64
+address sizes : 44 bits physical, 48 bits virtual
+power management:
+
+---Mon, 03 Jun 2013 11:37:12 +0000 GMT--- Executing: pidof -s mysqld
+
+---Mon, 03 Jun 2013 11:37:12 +0000 GMT--- Executing: lspci
+00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
+00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
+00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II]
+00:01.2 USB controller: Intel Corporation 82371SB PIIX3 USB [Natoma/Triton II] (rev 01)
+00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03)
+00:03.0 Ethernet controller: Red Hat, Inc Virtio network device
+00:04.0 RAM memory: Red Hat, Inc Virtio memory balloon
+---Mon, 03 Jun 2013 11:37:12 +0000 GMT--- Reading: /proc/scsi/scsi
+Attached devices:
+Host: scsi0 Channel: 00 Id: 00 Lun: 00
+ Vendor: ATA Model: QEMU HARDDISK Rev: 0.12
+ Type: Direct-Access ANSI SCSI revision: 05
+---Mon, 03 Jun 2013 11:37:12 +0000 GMT--- Executing: pidof -s explorer.exe
+
+---Mon, 03 Jun 2013 11:37:12 +0000 GMT--- Reading: /home/project-web/phpsysinfo/htdocs/phpsysinfo/data/quotas.txt
+Mon Dec 6 09:00:00 EST 2004
+ 1K Block limits File limits
+User used soft hard grace used soft hard grace
+cherylstaff-- 2755724 0 0 15678 0 0
+brucestaff -- 5738512 0 0 7830 0 0
+---Mon, 03 Jun 2013 11:37:12 +0000 GMT--- Executing: lsusb
+
+---Mon, 03 Jun 2013 11:37:12 +0000 GMT--- Reading: /proc/net/dev
+Inter-| Receive | Transmit
+ face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
+ lo:27320003601847 234655896121 0 0 0 0 0 0 27320003601847 234655896121 0 0 0 0 0 0
+ eth0:4165329584450 11931631683 0 0 0 0 0 0 3108966577870 13127032084 0 0 0 0 0 0
+---Mon, 03 Jun 2013 11:37:12 +0000 GMT--- Executing: ifconfig lo 2>/dev/null
+lo Link encap:Local Loopback
+ inet addr:127.0.0.1 Mask:255.0.0.0
+ inet6 addr: ::1/128 Scope:Host
+ UP LOOPBACK RUNNING MTU:16436 Metric:1
+ RX packets:234655903698 errors:0 dropped:0 overruns:0 frame:0
+ TX packets:234655903698 errors:0 dropped:0 overruns:0 carrier:0
+ collisions:0 txqueuelen:0
+ RX bytes:27320004466384 (24.8 TiB) TX bytes:27320004466384 (24.8 TiB)
+---Mon, 03 Jun 2013 11:37:12 +0000 GMT--- Executing: ifconfig eth0 2>/dev/null
+eth0 Link encap:Ethernet HWaddr 02:00:AC:1D:1E:42
+ inet addr:172.29.30.66 Bcast:172.29.30.255 Mask:255.255.255.0
+ inet6 addr: fe80::acff:fe1d:1e42/64 Scope:Link
+ UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
+ RX packets:11931632533 errors:0 dropped:0 overruns:0 frame:0
+ TX packets:13127033096 errors:0 dropped:0 overruns:0 carrier:0
+ collisions:0 txqueuelen:1000
+ RX bytes:4165329803095 (3.7 TiB) TX bytes:3108966767181 (2.8 TiB)
+---Mon, 03 Jun 2013 11:37:12 +0000 GMT--- Reading: /proc/meminfo
+MemTotal: 8059140 kB
+MemFree: 648372 kB
+Buffers: 22880 kB
+Cached: 4231260 kB
+SwapCached: 2492 kB
+Active: 3013816 kB
+Inactive: 3212256 kB
+Active(anon): 946280 kB
+Inactive(anon): 1026516 kB
+Active(file): 2067536 kB
+Inactive(file): 2185740 kB
+Unevictable: 0 kB
+Mlocked: 0 kB
+SwapTotal: 1015800 kB
+SwapFree: 963348 kB
+Dirty: 13700 kB
+Writeback: 4 kB
+AnonPages: 1969672 kB
+Mapped: 175844 kB
+Shmem: 812 kB
+Slab: 1073848 kB
+SReclaimable: 711992 kB
+SUnreclaim: 361856 kB
+KernelStack: 2928 kB
+PageTables: 33512 kB
+NFS_Unstable: 148 kB
+Bounce: 0 kB
+WritebackTmp: 0 kB
+CommitLimit: 5045368 kB
+Committed_AS: 3170052 kB
+VmallocTotal: 34359738367 kB
+VmallocUsed: 26224 kB
+VmallocChunk: 34359683252 kB
+HardwareCorrupted: 0 kB
+AnonHugePages: 77824 kB
+HugePages_Total: 0
+HugePages_Free: 0
+HugePages_Rsvd: 0
+HugePages_Surp: 0
+Hugepagesize: 2048 kB
+DirectMap4k: 8180 kB
+DirectMap2M: 8380416 kB
+---Mon, 03 Jun 2013 11:37:12 +0000 GMT--- Reading: /proc/swaps
+Filename Type Size Used Priority
+/dev/dm-0 partition 1015800 52452 -1
+---Mon, 03 Jun 2013 11:37:12 +0000 GMT--- Executing: df -k -P 2>/dev/null
+
+---Mon, 03 Jun 2013 11:37:12 +0000 GMT--- Executing: df -i -P 2>/dev/null
+
+---Mon, 03 Jun 2013 11:37:12 +0000 GMT--- Reading: /home/project-web/phpsysinfo/htdocs/phpsysinfo/data/smart0.txt
+smartctl version 5.38 [x86_64-redhat-linux-gnu] Copyright (C) 2002-8 Bruce Allen
+Home page is http://smartmontools.sourceforge.net/
+
+Device: SEAGATE ST3146855LW Version: 0003
+Serial number: 3LN1GA[rest of serial number redacted]
+Device type: disk
+Transport protocol: Parallel SCSI (SPI-4)
+Local Time is: Sat Jan 30 21:59:56 2010 CET
+Device supports SMART and is Enabled
+Temperature Warning Enabled
+SMART Health Status: OK
+
+Current Drive Temperature: 39 C
+Drive Trip Temperature: 68 C
+Elements in grown defect list: 0
+Vendor (Seagate) cache information
+ Blocks sent to initiator = 1490558074
+ Blocks received from initiator = 624662611
+ Blocks read from cache and sent to initiator = 2900209651
+ Number of read and write commands whose size <= segment size = 386699414
+ Number of read and write commands whose size > segment size = 28
+Vendor (Seagate/Hitachi) factory information
+ number of hours powered up = 14959.20
+ number of minutes until next internal SMART test = 44
+
+Error counter log:
+ Errors Corrected by Total Correction Gigabytes Total
+ ECC rereads/ errors algorithm processed uncorrected
+ fast | delayed rewrites corrected invocations [10^9 bytes] errors
+read: 6663270 0 0 6663270 6663270 5100.626 0
+write: 0 0 0 0 0 12594895028.099 0
+verify: 22626 0 0 22626 22626 28.314 0
+
+Non-medium error count: 3
+
+[GLTSD (Global Logging Target Save Disable) set. Enable Save with '-S on']
+
+SMART Self-test log
+Num Test Status segment LifeTime LBA_first_err [SK ASC ASQ]
+ Description number (hours)
+# 1 Background long Interrupted ('-X' switch) - 14371 - [- - -]
+
+Long (extended) Self Test duration: 1367 seconds [22.8 minutes]
+---Mon, 03 Jun 2013 11:37:12 +0000 GMT--- Executing: mount
+proc on /proc type proc (rw)
+---Mon, 03 Jun 2013 11:37:12 +0000 GMT--- Reading: /proc/loadavg
+14.01 16.10 16.01 18/358 6013
+---Mon, 03 Jun 2013 11:37:12 +0000 GMT--- Reading: /home/project-web/phpsysinfo/htdocs/phpsysinfo/data/mdstat.txt
+Personalities : [linear] [raid0] [raid1] [raid5] [hsm]
+read_ahead 1024 sectors
+md0 : active raid5 sdd1[3] sdc6[2] sdb6[1] sda5[0] 633984 blocks
+ level 5, 32k chunk, algorithm 2 [4/4] [UUUU]
+unused devices:
+---Mon, 03 Jun 2013 11:37:13 +0000 GMT--- Reading: /home/project-web/phpsysinfo/htdocs/phpsysinfo/data/bat_info.txt
+present: yes
+design capacity: 50000 mWh
+last full capacity: 50000 mWh
+battery technology: rechargeable
+design voltage: 10000 mV
+design capacity warning: 100 mWh
+design capacity low: 50 mWh
+capacity granularity 1: 1 mWh
+capacity granularity 2: 1 mWh
+model number: 1
+serial number: 0
+battery type: VBOX
+OEM info: innotek
+---Mon, 03 Jun 2013 11:37:13 +0000 GMT--- Reading: /home/project-web/phpsysinfo/htdocs/phpsysinfo/data/bat_state.txt
+present: yes
+capacity state: ok
+charging state: charged
+present rate: 0 mW
+remaining capacity: 50000 mWh
+present voltage: 10000 mV
+---Mon, 03 Jun 2013 11:37:14 +0000 GMT--- Reading: /home/project-web/phpsysinfo/htdocs/phpsysinfo/data/ipmiinfo.txt
+BB +1.2V Vtt | 1.197 | Volts | ok | na | 1.096 | 1.134 | 1.285 | 1.323 | na
+BB +1.5V AUX | 1.490 | Volts | ok | na | 1.334 | 1.373 | 1.622 | 1.669 | na
+BB +1.5V | 1.469 | Volts | ok | na | 1.326 | 1.365 | 1.625 | 1.677 | na
+BB +1.8V | 1.802 | Volts | ok | na | 1.638 | 1.689 | 1.926 | 1.988 | na
+BB +3.3V | 3.320 | Volts | ok | na | 2.941 | 3.027 | 3.578 | 3.681 | na
+BB +3.3V STB | 3.337 | Volts | ok | na | 3.027 | 3.113 | 3.509 | 3.612 | na
+BB +1.5V ESB | 1.490 | Volts | ok | na | 1.357 | 1.404 | 1.591 | 1.638 | na
+BB +5V | 5.122 | Volts | ok | na | 4.446 | 4.576 | 5.408 | 5.564 | na
+BB +12V AUX | 12.090 | Volts | ok | na | 10.416 | 10.726 | 13.144 | 13.578 | na
+BB 0.9V | 0.902 | Volts | ok | na | 0.811 | 0.835 | 0.950 | 0.979 | na
+Baseboard Temp | 29.000 | degrees C | ok | na | 5.000 | 10.000 | 61.000 | 66.000 | na
+P1 Therm Margin | -32.000 | degrees C | ok | na | na | na | na | na | na
+P1 Therm Ctrl % | 0.000 | unspecified | ok | na | na | na | na | 49.530 | na
+Proc 1 Vcc | 1.203 | Volts | ok | na | na | na | na | na | na
+Power Unit | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+BMC Watchdog | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+Scrty Violation | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+F-P Diag Int | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+System Event Log | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+Session Audit | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+System Event | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+BB Vbat | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+SysACPIPowerStat | 0x0 | discrete | 0x0100| na | na | na | na | na | na
+Button | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+SMI Timeout | 0x0 | discrete | 0x0100| na | na | na | na | na | na
+NMI State | 0x0 | discrete | 0x0100| na | na | na | na | na | na
+SMI State | 0x0 | discrete | 0x0100| na | na | na | na | na | na
+Processor 1 Stat | 0x0 | discrete | 0x8000| na | na | na | na | na | na
+Processor 2 Stat | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+PCIe Link0 | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+PCIe Link1 | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+PCIe Link2 | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+PCIe Link3 | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+PCIe Link4 | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+PCIe Link5 | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+PCIe Link6 | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+PCIe Link7 | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+PCIe Link8 | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+PCIe Link9 | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+PCIe Link10 | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+PCIe Link11 | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+PCIe Link12 | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+PCIe Link13 | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+Proc1 VRD Hot | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+CPU1 Vcc OOR | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+CPU Popula Error | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+DIMM A1 | 0x0 | discrete | 0x0400| na | na | na | na | na | na
+DIMM A2 | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+DIMM B1 | 0x0 | discrete | 0x0400| na | na | na | na | na | na
+DIMM B2 | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+DIMM C1 | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+DIMM C2 | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+DIMM D1 | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+DIMM D2 | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+MemA Error | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+MemB Error | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+MemC Error | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+MemD Error | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+B0 Sparing Enb | na | discrete | na | na | na | na | na | na | na
+B0 Spare Redun | na | discrete | na | na | na | na | na | na | na
+B1 Sparing Enb | na | discrete | na | na | na | na | na | na | na
+B1 Spare Redun | na | discrete | na | na | na | na | na | na | na
+B01 Mirror Enbl | na | discrete | na | na | na | na | na | na | na
+B01 MirrorRedun | na | discrete | na | na | na | na | na | na | na
+---Mon, 03 Jun 2013 11:37:14 +0000 GMT--- Executing: ps axo pid,ppid,pmem,args
+PID PPID %MEM COMMAND
+ 1 0 0.0 /sbin/init
+ 2 0 0.0 [kthreadd]
+ 3 2 0.0 [migration/0]
+ 4 2 0.0 [ksoftirqd/0]
+ 5 2 0.0 [migration/0]
+ 6 2 0.0 [watchdog/0]
+ 7 2 0.0 [migration/1]
+ 8 2 0.0 [migration/1]
+ 9 2 0.0 [ksoftirqd/1]
+ 10 2 0.0 [watchdog/1]
+ 11 2 0.0 [migration/2]
+ 12 2 0.0 [migration/2]
+ 13 2 0.0 [ksoftirqd/2]
+ 14 2 0.0 [watchdog/2]
+ 15 2 0.0 [migration/3]
+ 16 2 0.0 [migration/3]
+ 17 2 0.0 [ksoftirqd/3]
+ 18 2 0.0 [watchdog/3]
+ 19 2 0.0 [migration/4]
+ 20 2 0.0 [migration/4]
+ 21 2 0.0 [ksoftirqd/4]
+ 22 2 0.0 [watchdog/4]
+ 23 2 0.0 [migration/5]
+ 24 2 0.0 [migration/5]
+ 25 2 0.0 [ksoftirqd/5]
+ 26 2 0.0 [watchdog/5]
+ 27 2 0.0 [migration/6]
+ 28 2 0.0 [migration/6]
+ 29 2 0.0 [ksoftirqd/6]
+ 30 2 0.0 [watchdog/6]
+ 31 2 0.0 [migration/7]
+ 32 2 0.0 [migration/7]
+ 33 2 0.0 [ksoftirqd/7]
+ 34 2 0.0 [watchdog/7]
+ 35 2 0.0 [events/0]
+ 36 2 0.0 [events/1]
+ 37 2 0.0 [events/2]
+ 38 2 0.0 [events/3]
+ 39 2 0.0 [events/4]
+ 40 2 0.0 [events/5]
+ 41 2 0.0 [events/6]
+ 42 2 0.0 [events/7]
+ 43 2 0.0 [cgroup]
+ 44 2 0.0 [khelper]
+ 45 2 0.0 [netns]
+ 46 2 0.0 [async/mgr]
+ 47 2 0.0 [pm]
+ 48 2 0.0 [sync_supers]
+ 49 2 0.0 [bdi-default]
+ 50 2 0.0 [kintegrityd/0]
+ 51 2 0.0 [kintegrityd/1]
+ 52 2 0.0 [kintegrityd/2]
+ 53 2 0.0 [kintegrityd/3]
+ 54 2 0.0 [kintegrityd/4]
+ 55 2 0.0 [kintegrityd/5]
+ 56 2 0.0 [kintegrityd/6]
+ 57 2 0.0 [kintegrityd/7]
+ 58 2 0.0 [kblockd/0]
+ 59 2 0.0 [kblockd/1]
+ 60 2 0.0 [kblockd/2]
+ 61 2 0.0 [kblockd/3]
+ 62 2 0.0 [kblockd/4]
+ 63 2 0.0 [kblockd/5]
+ 64 2 0.0 [kblockd/6]
+ 65 2 0.0 [kblockd/7]
+ 66 2 0.0 [ata/0]
+ 67 2 0.0 [ata/1]
+ 68 2 0.0 [ata/2]
+ 69 2 0.0 [ata/3]
+ 70 2 0.0 [ata/4]
+ 71 2 0.0 [ata/5]
+ 72 2 0.0 [ata/6]
+ 73 2 0.0 [ata/7]
+ 74 2 0.0 [ata_aux]
+ 75 2 0.0 [ksuspend_usbd]
+ 76 2 0.0 [khubd]
+ 77 2 0.0 [kseriod]
+ 78 2 0.0 [md/0]
+ 79 2 0.0 [md/1]
+ 80 2 0.0 [md/2]
+ 81 2 0.0 [md/3]
+ 82 2 0.0 [md/4]
+ 83 2 0.0 [md/5]
+ 84 2 0.0 [md/6]
+ 85 2 0.0 [md/7]
+ 86 2 0.0 [md_misc/0]
+ 87 2 0.0 [md_misc/1]
+ 88 2 0.0 [md_misc/2]
+ 89 2 0.0 [md_misc/3]
+ 90 2 0.0 [md_misc/4]
+ 91 2 0.0 [md_misc/5]
+ 92 2 0.0 [md_misc/6]
+ 93 2 0.0 [md_misc/7]
+ 94 2 0.0 [khungtaskd]
+ 95 2 0.0 [kswapd0]
+ 96 2 0.0 [ksmd]
+ 97 2 0.0 [khugepaged]
+ 98 2 0.0 [aio/0]
+ 99 2 0.0 [aio/1]
+ 100 2 0.0 [aio/2]
+ 101 2 0.0 [aio/3]
+ 102 2 0.0 [aio/4]
+ 103 2 0.0 [aio/5]
+ 104 2 0.0 [aio/6]
+ 105 2 0.0 [aio/7]
+ 106 2 0.0 [crypto/0]
+ 107 2 0.0 [crypto/1]
+ 108 2 0.0 [crypto/2]
+ 109 2 0.0 [crypto/3]
+ 110 2 0.0 [crypto/4]
+ 111 2 0.0 [crypto/5]
+ 112 2 0.0 [crypto/6]
+ 113 2 0.0 [crypto/7]
+ 118 2 0.0 [kthrotld/0]
+ 119 2 0.0 [kthrotld/1]
+ 120 2 0.0 [kthrotld/2]
+ 121 2 0.0 [kthrotld/3]
+ 122 2 0.0 [kthrotld/4]
+ 123 2 0.0 [kthrotld/5]
+ 124 2 0.0 [kthrotld/6]
+ 125 2 0.0 [kthrotld/7]
+ 127 2 0.0 [kpsmoused]
+ 128 2 0.0 [usbhid_resumer]
+ 159 2 0.0 [kstriped]
+ 257 2 0.0 [scsi_eh_0]
+ 258 2 0.0 [scsi_eh_1]
+ 313 2 0.0 [kdmflush]
+ 315 2 0.0 [kdmflush]
+ 330 4796 1.8 /usr/sbin/httpd
+ 335 2 0.0 [flush-253:1]
+ 349 2 0.0 [jbd2/dm-1-8]
+ 350 2 0.0 [ext4-dio-unwrit]
+ 351 2 0.0 [ext4-dio-unwrit]
+ 352 2 0.0 [ext4-dio-unwrit]
+ 353 2 0.0 [ext4-dio-unwrit]
+ 354 2 0.0 [ext4-dio-unwrit]
+ 355 2 0.0 [ext4-dio-unwrit]
+ 356 2 0.0 [ext4-dio-unwrit]
+ 357 2 0.0 [ext4-dio-unwrit]
+ 442 1 0.0 /sbin/udevd -d
+ 610 2 0.0 [virtio-net]
+ 624 2 0.0 [vballoon]
+ 726 30335 0.0 ping 10.0.2.2
+ 773 2 0.0 [kdmflush]
+ 776 2 0.0 [kdmflush]
+ 779 2 0.0 [kdmflush]
+ 782 442 0.0 /sbin/udevd -d
+ 784 2 0.0 [kdmflush]
+ 812 2 0.0 [flush-253:4]
+ 837 2 0.0 [kjournald]
+ 838 2 0.0 [jbd2/dm-2-8]
+ 839 2 0.0 [ext4-dio-unwrit]
+ 840 2 0.0 [ext4-dio-unwrit]
+ 841 2 0.0 [ext4-dio-unwrit]
+ 842 2 0.0 [ext4-dio-unwrit]
+ 843 2 0.0 [ext4-dio-unwrit]
+ 844 2 0.0 [ext4-dio-unwrit]
+ 845 2 0.0 [ext4-dio-unwrit]
+ 846 2 0.0 [ext4-dio-unwrit]
+ 847 2 0.0 [jbd2/dm-3-8]
+ 848 2 0.0 [ext4-dio-unwrit]
+ 849 2 0.0 [ext4-dio-unwrit]
+ 850 2 0.0 [ext4-dio-unwrit]
+ 851 2 0.0 [ext4-dio-unwrit]
+ 852 2 0.0 [ext4-dio-unwrit]
+ 853 2 0.0 [ext4-dio-unwrit]
+ 854 2 0.0 [ext4-dio-unwrit]
+ 855 2 0.0 [ext4-dio-unwrit]
+ 856 2 0.0 [jbd2/dm-4-8]
+ 857 2 0.0 [ext4-dio-unwrit]
+ 858 2 0.0 [ext4-dio-unwrit]
+ 859 2 0.0 [ext4-dio-unwrit]
+ 860 2 0.0 [ext4-dio-unwrit]
+ 861 2 0.0 [ext4-dio-unwrit]
+ 862 2 0.0 [ext4-dio-unwrit]
+ 863 2 0.0 [ext4-dio-unwrit]
+ 864 2 0.0 [ext4-dio-unwrit]
+ 865 2 0.0 [jbd2/dm-5-8]
+ 866 2 0.0 [ext4-dio-unwrit]
+ 867 2 0.0 [ext4-dio-unwrit]
+ 868 2 0.0 [ext4-dio-unwrit]
+ 869 2 0.0 [ext4-dio-unwrit]
+ 870 2 0.0 [ext4-dio-unwrit]
+ 871 2 0.0 [ext4-dio-unwrit]
+ 872 2 0.0 [ext4-dio-unwrit]
+ 873 2 0.0 [ext4-dio-unwrit]
+ 934 2 0.0 [kauditd]
+ 956 330 0.0 ping 10.0.2.2
+ 1132 1 0.0 auditd
+ 1150 1 0.0 /sbin/portreserve
+ 1158 2 0.0 [rpciod/0]
+ 1159 2 0.0 [rpciod/1]
+ 1160 2 0.0 [rpciod/2]
+ 1161 2 0.0 [rpciod/3]
+ 1162 2 0.0 [rpciod/4]
+ 1163 2 0.0 [rpciod/5]
+ 1164 2 0.0 [rpciod/6]
+ 1165 2 0.0 [rpciod/7]
+ 1174 1 0.0 /sbin/rsyslogd -i /var/run/syslogd.pid -c3
+ 1186 1 0.0 irqbalance
+ 1201 1 0.0 rpcbind
+ 1219 1 0.0 rpc.statd
+ 1241 1 0.0 rpc.idmapd
+ 1364 2 0.0 [flush-253:2]
+ 2117 30665 0.3 python /home/project-web/tmda/cgi-bin/moin.cgi
+ 2133 4796 0.5 /usr/sbin/httpd
+ 2246 4796 0.5 /usr/sbin/httpd
+ 2302 4796 0.4 /usr/sbin/httpd
+ 2317 4796 0.5 /usr/sbin/httpd
+ 2318 4796 0.5 /usr/sbin/httpd
+ 2336 4796 0.5 /usr/sbin/httpd
+ 2337 4796 0.5 /usr/sbin/httpd
+ 2338 4796 0.5 /usr/sbin/httpd
+ 2339 4796 0.4 /usr/sbin/httpd
+ 2460 4796 0.5 /usr/sbin/httpd
+ 2669 4796 0.5 /usr/sbin/httpd
+ 3375 24425 0.3 python /home/project-web/openucf/cgi-bin/moin.cgi
+ 4372 4796 0.6 /usr/sbin/httpd
+ 4429 1 0.0 dbus-daemon --system
+ 4453 2 0.0 [kslowd000]
+ 4454 2 0.0 [kslowd001]
+ 4455 2 0.0 [nfsiod]
+ 4456 2 0.0 [lockd]
+ 4481 4796 0.5 /usr/sbin/httpd
+ 4602 1 0.0 hald
+ 4603 4602 0.0 hald-runner
+ 4632 4603 0.0 hald-addon-input: Listening on /dev/input/event1
+ 4667 1 0.0 /usr/sbin/nscd
+ 4682 1 0.0 /usr/sbin/snmpd -LSnd -Lf /dev/null -p /var/run/snmpd.pid -a -c /etc/snmp/snmpd.sfinc-utils.conf
+ 4694 1 0.0 /usr/sbin/sshd
+ 4702 1 0.0 xinetd -stayalive -pidfile /var/run/xinetd.pid
+ 4710 1 0.0 ntpd -u ntp:ntp -p /var/run/ntpd.pid -g
+ 4726 1 1.4 /usr/local/sbin/omnifuse-projects -odev,allow_other --log-info --json-config=/var/local/config/omnifuse-projects.json --log-file=/var/log/omnifuse-projects.log /chroots/prweb/home/project-web
+ 4741 1 0.0 /usr/local/sbin/omnifuse-users -odev,allow_other --log-info --json-config=/var/local/config/omnifuse-users.json --log-file=/var/log/omnifuse-users.log /chroots/prweb/home/user-web
+ 4765 1 0.0 /usr/sbin/abrtd
+ 4769 2302 0.3 python /home/project-web/openucf/cgi-bin/moin.cgi
+ 4773 1 0.0 abrt-dump-oops -d /var/spool/abrt -rwx /var/log/messages
+ 4780 4796 0.3 /usr/sbin/httpd
+ 4796 1 0.4 /usr/sbin/httpd
+ 4812 1 0.0 crond
+ 4867 2 0.0 [flush-0:19]
+ 4870 1 0.0 /usr/sbin/varnishd -P /var/run/varnish.pid -a :6081,:50025,:50026,:50041 -T 127.0.0.1:6082 -f /etc/varnish/default.vcl -t 120 -u varnish -g varnish -S /etc/varnish/secret -s file,/var/lib/varnish/varnish_storage.bin,1G
+ 4896 1 0.0 sh -c /usr/bin/varnishncsa -P /var/run/varnishncsa.pid -f | /usr/local/sbin/filter-varnish-log
+ 4898 4896 3.0 /usr/bin/varnishncsa -P /var/run/varnishncsa.pid -f
+ 4899 4896 0.0 /usr/bin/perl /usr/local/sbin/filter-varnish-log
+ 4912 1 0.0 /usr/sbin/atd
+ 4921 1 0.0 /usr/bin/monit
+ 4928 24370 0.3 python /home/project-web/openucf/cgi-bin/moin.cgi
+ 4956 1 0.0 /var/ossec/bin/ossec-execd
+ 4960 1 0.0 /var/ossec/bin/ossec-agentd
+ 4964 1 0.0 /var/ossec/bin/ossec-logcollector
+ 4968 1 0.0 /var/ossec/bin/ossec-syscheckd
+ 5079 4796 0.4 /usr/sbin/httpd
+ 5161 4796 0.4 /usr/sbin/httpd
+ 5656 1 0.0 /sbin/mingetty /dev/tty1
+ 5658 1 0.0 /sbin/mingetty /dev/tty2
+ 5660 1 0.0 /sbin/mingetty /dev/tty3
+ 5661 1 0.0 /sbin/agetty /dev/ttyS0 115200 vt100-nav
+ 5663 1 0.0 /sbin/mingetty /dev/tty4
+ 5665 1 0.0 /sbin/mingetty /dev/tty5
+ 5667 1 0.0 /sbin/mingetty /dev/tty6
+ 5676 4796 0.4 /usr/sbin/httpd
+ 5883 4796 1.8 /usr/sbin/httpd
+ 5969 27819 0.3 python /home/project-web/openucf/cgi-bin/moin.cgi
+ 6026 5161 0.0 /bin/ps axo pid,ppid,pmem,args
+ 6043 4796 0.0 /usr/sbin/cronolog --symlink=/var/local/log/error_log /var/local/log/%Y/%m/%d/error.log
+ 6047 4796 0.0 /usr/sbin/cronolog --symlink=/var/local/log/access_log /var/local/log/%Y/%m/%d/access_log
+ 6799 2 0.0 [flush-253:5]
+ 7454 5883 0.0 ping 10.0.2.2
+ 9254 442 0.0 /sbin/udevd -d
+ 9403 1 0.2 /usr/bin/perl /var/local/mastertree/host/sfp-web/scripts/split-varnish-log
+13285 4796 0.6 /usr/sbin/httpd
+13704 4796 0.5 /usr/sbin/httpd
+14612 4796 0.2 /usr/sbin/httpd
+14835 4796 0.2 /usr/sbin/httpd
+16052 4796 0.4 /usr/sbin/httpd
+21740 4870 2.4 /usr/sbin/varnishd -P /var/run/varnish.pid -a :6081,:50025,:50026,:50041 -T 127.0.0.1:6082 -f /etc/varnish/default.vcl -t 120 -u varnish -g varnish -S /etc/varnish/secret -s file,/var/lib/varnish/varnish_storage.bin,1G
+24370 4796 0.5 /usr/sbin/httpd
+24425 4796 0.4 /usr/sbin/httpd
+25544 4796 0.4 /usr/sbin/httpd
+27739 4796 0.5 /usr/sbin/httpd
+27816 4796 0.4 /usr/sbin/httpd
+27819 4796 0.5 /usr/sbin/httpd
+29216 4796 0.5 /usr/sbin/httpd
+30189 4796 1.8 /usr/sbin/httpd
+30335 4796 1.8 /usr/sbin/httpd
+30645 30189 0.0 ping 10.0.2.2
+30665 4796 0.5 /usr/sbin/httpd
+32343 4796 1.8 /usr/sbin/httpd
+32414 32343 0.0 ping 10.0.2.2
diff --git a/sources/sample/main/1-cpuinfo.txt b/sources/sample/main/1-cpuinfo.txt
new file mode 100644
index 0000000..4b49180
--- /dev/null
+++ b/sources/sample/main/1-cpuinfo.txt
@@ -0,0 +1,21 @@
+processor : 0
+vendor_id : GenuineIntel
+cpu family : 6
+model : 23
+model name : Intel(R) Core(TM)2 Duo CPU P8600 @ 2.40GHz
+stepping : 10
+cpu MHz : 2391.032
+cache size : 64 KB
+fdiv_bug : no
+hlt_bug : no
+f00f_bug : no
+coma_bug : no
+fpu : yes
+fpu_exception : yes
+cpuid level : 2
+wp : yes
+flags : fpu vme de pse tsc msr mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 constant_tsc up pni monitor
+bogomips : 4782.06
+clflush size : 64
+power management:
+
diff --git a/sources/sample/main/1-dfiP.txt b/sources/sample/main/1-dfiP.txt
new file mode 100644
index 0000000..d237d93
--- /dev/null
+++ b/sources/sample/main/1-dfiP.txt
@@ -0,0 +1,6 @@
+Filesystem Inode IUsati ILib. IUso% Montato su
+/dev/sda3 3278576 589607 2688969 18% /
+udev 218280 1831 216449 1% /dev
+/dev/sda4 0 0 0 - /home/erendil
+shm 218280 1 218279 1% /dev/shm
+/dev/sda1 18072 52 18020 1% /boot
diff --git a/sources/sample/main/1-dfkP.txt b/sources/sample/main/1-dfkP.txt
new file mode 100644
index 0000000..78279ea
--- /dev/null
+++ b/sources/sample/main/1-dfkP.txt
@@ -0,0 +1,6 @@
+Filesystem 1024-blocks Used Available Capacity Montato su
+/dev/sda3 51613048 13387836 35603404 28% /
+udev 10240 148 10092 2% /dev
+/dev/sda4 2876529360 784104536 2092424824 28% /home/erendil
+shm 1685172 0 1685172 0% /dev/shm
+/dev/sda1 69972 37071 29288 56% /boot
diff --git a/sources/sample/main/1-mount.txt b/sources/sample/main/1-mount.txt
new file mode 100644
index 0000000..f75cdbc
--- /dev/null
+++ b/sources/sample/main/1-mount.txt
@@ -0,0 +1,10 @@
+/dev/sda3 on / type ext3 (rw,noatime)
+proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
+sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
+udev on /dev type tmpfs (rw,nosuid,relatime,size=10240k,mode=755)
+devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620)
+/dev/sda4 on /home/erendil type reiserfs (rw,noatime)
+shm on /dev/shm type tmpfs (rw,noexec,nosuid,nodev)
+usbfs on /proc/bus/usb type usbfs (rw,noexec,nosuid,devmode=0664,devgid=85)
+binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev)
+/dev/sda1 on /boot type ext2 (rw,noatime)
diff --git a/sources/sample/main/README b/sources/sample/main/README
new file mode 100644
index 0000000..5f98c18
--- /dev/null
+++ b/sources/sample/main/README
@@ -0,0 +1,6 @@
+FILE CONTENT OF
+cpuinfo cat /proc/cpuinfo
+df df -P
+mount mount
+dev cat /proc/net/dev
+swaps cat /proc/swaps
diff --git a/sources/sample/main/cpuinfo1.txt b/sources/sample/main/cpuinfo1.txt
new file mode 100644
index 0000000..4b49180
--- /dev/null
+++ b/sources/sample/main/cpuinfo1.txt
@@ -0,0 +1,21 @@
+processor : 0
+vendor_id : GenuineIntel
+cpu family : 6
+model : 23
+model name : Intel(R) Core(TM)2 Duo CPU P8600 @ 2.40GHz
+stepping : 10
+cpu MHz : 2391.032
+cache size : 64 KB
+fdiv_bug : no
+hlt_bug : no
+f00f_bug : no
+coma_bug : no
+fpu : yes
+fpu_exception : yes
+cpuid level : 2
+wp : yes
+flags : fpu vme de pse tsc msr mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 constant_tsc up pni monitor
+bogomips : 4782.06
+clflush size : 64
+power management:
+
diff --git a/sources/sample/main/cpuinfo2.txt b/sources/sample/main/cpuinfo2.txt
new file mode 100644
index 0000000..e2c8f52
--- /dev/null
+++ b/sources/sample/main/cpuinfo2.txt
@@ -0,0 +1,12 @@
+Processor : ARMv6-compatible processor rev 7 (v6l)
+BogoMIPS : 847.05
+Features : swp half thumb fastmult vfp edsp java tls
+CPU implementer : 0x41
+CPU architecture: 7
+CPU variant : 0x0
+CPU part : 0xb76
+CPU revision : 7
+
+Hardware : BCM2708
+Revision : 0002
+Serial : 000000000abc0ab1
diff --git a/sources/sample/main/cpuinfo3.txt b/sources/sample/main/cpuinfo3.txt
new file mode 100644
index 0000000..cde715d
--- /dev/null
+++ b/sources/sample/main/cpuinfo3.txt
@@ -0,0 +1,17 @@
+Processor : ARMv7 Processor rev 10 (v7l)
+processor : 0
+BogoMIPS : 597.12
+
+processor : 1
+BogoMIPS : 597.12
+
+Features : swp half thumb fastmult vfp edsp thumbee neon vfpv3
+CPU implementer : 0x41
+CPU architecture: 7
+CPU variant : 0x2
+CPU part : 0xc09
+CPU revision : 10
+
+Hardware : Tuna
+Revision : 0009
+Serial : 01298fc30100203f
diff --git a/sources/sample/main/cpuinfo4.txt b/sources/sample/main/cpuinfo4.txt
new file mode 100644
index 0000000..ef33a0c
--- /dev/null
+++ b/sources/sample/main/cpuinfo4.txt
@@ -0,0 +1,14 @@
+Processor : ARMv7 Processor rev 1 (v7l)
+processor : 0
+BogoMIPS : 1592.52
+
+Features : swp half thumb fastmult vfp edsp neon vfpv3
+CPU implementer : 0x41
+CPU architecture: 7
+CPU variant : 0x2
+CPU part : 0xc09
+CPU revision : 1
+
+Hardware : SMDKC210
+Revision : 000c
+Serial : xxxxxxxxxxxxxxxx
diff --git a/sources/sample/main/cpuinfo5.txt b/sources/sample/main/cpuinfo5.txt
new file mode 100644
index 0000000..78f54a6
--- /dev/null
+++ b/sources/sample/main/cpuinfo5.txt
@@ -0,0 +1,12 @@
+Processor : ARMv7 Processor rev 0 (v7l)
+BogoMIPS : 366.18
+Features : swp half thumb fastmult vfp edsp neon vfpv3
+CPU implementer : 0x41
+CPU architecture: 7
+CPU variant : 0x0
+CPU part : 0xc08
+CPU revision : 0
+
+Hardware : Goldfish
+Revision : 0000
+Serial : 0000000000000000
diff --git a/sources/sample/main/cpuinfo6.txt b/sources/sample/main/cpuinfo6.txt
new file mode 100644
index 0000000..605fff5
--- /dev/null
+++ b/sources/sample/main/cpuinfo6.txt
@@ -0,0 +1,12 @@
+Processor : Feroceon 88FR131 rev 1 (v5l)
+BogoMIPS : 797.90
+Features : swp half thumb fastmult edsp
+CPU implementer : 0x56
+CPU architecture: 5TE
+CPU variant : 0x2
+CPU part : 0x131
+CPU revision : 1
+
+Hardware : LaCie Internet Space v2
+Revision : 0000
+Serial : 0000000000000000
diff --git a/sources/sample/main/cpuinfo7.txt b/sources/sample/main/cpuinfo7.txt
new file mode 100644
index 0000000..3c8e28f
--- /dev/null
+++ b/sources/sample/main/cpuinfo7.txt
@@ -0,0 +1,24 @@
+Processor: ARM926EJ-S rev 0 (v5l)
+BogoMIPS: 956.82
+Features: swp half thumb fastmult vfp edsp
+CPU implementer: 0x41
+CPU architecture: 5TE
+CPU variant: 0x1
+CPU part: 0x926
+CPU revision: 0
+Cache type: write-back
+Cache clean: cp15 c7 ops
+Cache lockdown: format C
+Cache format: Harvard
+I size: 32768
+I assoc: 4
+I line length: 32
+I sets: 256
+D size: 32768
+D assoc: 4
+D line length: 32
+D sets: 256
+
+Hardware: Feroceon-MV78XX0
+Revision: 0000
+Serial: 0000000000000000
diff --git a/sources/sample/main/cpuinfo8.txt b/sources/sample/main/cpuinfo8.txt
new file mode 100644
index 0000000..2c14878
--- /dev/null
+++ b/sources/sample/main/cpuinfo8.txt
@@ -0,0 +1,17 @@
+system type : Sigma Designs TangoX
+processor : 0
+cpu model : MIPS 24K V7.12 FPU V0.0
+Initial BogoMIPS : 332.59
+wait instruction : yes
+microsecond timers : yes
+tlb_entries : 32
+extra interrupt vector : yes
+hardware watchpoint : yes
+ASEs implemented : mips16
+shadow register sets : 1
+VCED exceptions : not available
+VCEI exceptions : not available
+
+System bus frequency : 333000000 Hz
+CPU frequency : 499500000 Hz
+DSP frequency : 333000000 Hz
diff --git a/sources/sample/main/cpuinfo9.txt b/sources/sample/main/cpuinfo9.txt
new file mode 100644
index 0000000..d471a68
--- /dev/null
+++ b/sources/sample/main/cpuinfo9.txt
@@ -0,0 +1,10 @@
+machine : SH7785LCR
+processor : 0
+cpu family : sh4a
+cpu type : SH7785
+cut : 7.x
+cpu flags : fpu perfctr llsc
+cache type : split (harvard)
+icache size : 32KiB (4-way)
+dcache size : 32KiB (4-way)
+bogomips : 599.99
diff --git a/sources/sample/main/dev1.txt b/sources/sample/main/dev1.txt
new file mode 100644
index 0000000..47a5d34
--- /dev/null
+++ b/sources/sample/main/dev1.txt
@@ -0,0 +1,6 @@
+Inter-| Receive | Transmit
+ face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
+ lo: 1106222 765 0 0 0 0 0 0 1106222 765 0 0 0 0 0 0
+ eth0: 1697868 1725 0 0 0 0 0 0 196192 1367 0 0 0 0 0 0
+ eth1: 479861 421 0 0 0 0 0 0 51152 377 0 0 0 0 0 0
+ pan0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
diff --git a/sources/sample/main/df1.txt b/sources/sample/main/df1.txt
new file mode 100644
index 0000000..36f9e4d
--- /dev/null
+++ b/sources/sample/main/df1.txt
@@ -0,0 +1,24 @@
+Filesystem 1K-blocks Used Available Use% Mounted on
+/dev/ad0s1a 2 1 1 0% /
+/dev/ad0s1f 2 1 1 0% /usr
+/dev/ad0s1e 2 1 1 0% /var
+/dev/ad4s1e 2 1 1 0% /opt
+/dev/ad2s1e 2 1 1 0% /opt/glftpd/site/Games
+/dev/ad5s1e 2 1 1 0% /opt/glftpd/site/Movies
+/dev/ad1s1c 2 1 1 0% /opt/glftpd/site/Movies2
+/dev/ad6s1e 2 1 1 0% /opt/glftpd/site/xbox
+/dev/vinum/opt1 2 1 1 0% /opt1
+procfs 2 1 1 0% /proc
+//ADMINISTRATOR@GODFATHER/GODFATHER C 2 1 1 0% /usr/home/username/godfather
+/dev/sda1 2 1 1 0% /mount/sda1
+/dev/sda2 2 1 1 0% /mount/sda2
+/dev/sda3 2 1 1 0% /mount/sda3
+/dev/sda4 2 1 1 0% /mount/sda4
+/dev/sda5 2 1 1 0% /mount/sda5
+/dev/sda6 2 1 1 0% /mount/sda6
+/dev/sda7 2 1 1 0% /mount/sda7
+/dev/sda8 2 1 1 0% /mount/sda8
+/dev/sda9 2 1 1 0% /mount/sda9
+/dev/sda10 2 1 1 0% /mount/sda10
+/dev/sda11 2 1 1 0% /mount/sda11
+/dev/sda12 2 1 1 0% /mount/sda12
diff --git a/sources/sample/main/mount1.txt b/sources/sample/main/mount1.txt
new file mode 100644
index 0000000..83ead33
--- /dev/null
+++ b/sources/sample/main/mount1.txt
@@ -0,0 +1,23 @@
+/dev/ad0s1a on / type ext2 (ufs, local)
+/dev/ad0s1f on /usr type ext2 (ufs, local, soft-updates)
+/dev/ad0s1e on /var type ext2 (ufs, local, soft-updates)
+/dev/ad4s1e on /opt type ext2 (ufs, local, soft-updates)
+/dev/ad2s1e on /opt/glftpd/site/Games type ext2 (ufs, local, soft-updates)
+/dev/ad5s1e on /opt/glftpd/site/Movies type ext2 (ufs, local, soft-updates)
+/dev/ad1s1c on /opt/glftpd/site/Movies2 type ext2 (ufs, local, soft-updates)
+/dev/ad6s1e on /opt/glftpd/site/xbox type ext2 (ufs, local, soft-updates)
+/dev/vinum/opt1 on /opt1 type ext2 (ufs, local, soft-updates)
+procfs on /proc type ext2 (procfs, local)
+//ADMINISTRATOR@GODFATHER/GODFATHER C on /usr/home/username/godfather type ext2 (smbfs)
+/dev/sda1 on /mount/sda1 type ext2 (rw)
+/dev/sda2 on /mount/sda2 type ext2 (rw)
+/dev/sda3 on /mount/sda3 type ext2 (rw)
+/dev/sda4 on /mount/sda4 type ext2 (rw)
+/dev/sda5 on /mount/sda5 type ext2 (rw)
+/dev/sda6 on /mount/sda6 type ext2 (rw)
+/dev/sda7 on /mount/sda7 type ext2 (rw)
+/dev/sda8 on /mount/sda8 type ext2 (rw)
+/dev/sda9 on /mount/sda9 type ext2 (rw)
+/dev/sda10 on /mount/sda10 type ext2 (rw)
+/dev/sda11 on /mount/sda11 type ext2 (rw)
+/dev/sda12 on /mount/sda12 type ext2 (rw)
diff --git a/sources/sample/main/pmset1.txt b/sources/sample/main/pmset1.txt
new file mode 100644
index 0000000..6dee80c
--- /dev/null
+++ b/sources/sample/main/pmset1.txt
@@ -0,0 +1,2 @@
+Now drawing from 'AC Power'
+ -InternalBattery-0 100%; charged; 0:00 remaining
diff --git a/sources/sample/main/pmset2.txt b/sources/sample/main/pmset2.txt
new file mode 100644
index 0000000..a75ed6c
--- /dev/null
+++ b/sources/sample/main/pmset2.txt
@@ -0,0 +1,2 @@
+Now drawing from 'Battery Power'
+ -InternalBattery-0 100%; discharging; (no estimate)
diff --git a/sources/sample/main/pmset3.txt b/sources/sample/main/pmset3.txt
new file mode 100644
index 0000000..577e09d
--- /dev/null
+++ b/sources/sample/main/pmset3.txt
@@ -0,0 +1,2 @@
+Now drawing from 'AC Power'
+ -Back-UPS XS 900 FW:830.E7 .D USB FW:E7 100%; charging
diff --git a/sources/sample/main/pmset4.txt b/sources/sample/main/pmset4.txt
new file mode 100644
index 0000000..a01e850
--- /dev/null
+++ b/sources/sample/main/pmset4.txt
@@ -0,0 +1,2 @@
+Currently drawing from 'UPS Power'
+ -Back-UPS BR 800 FW:9.o4 .D USB FW:o4 98%; discharging; 0:21 remaining
\ No newline at end of file
diff --git a/sources/sample/main/swaps1.txt b/sources/sample/main/swaps1.txt
new file mode 100644
index 0000000..2bf189a
--- /dev/null
+++ b/sources/sample/main/swaps1.txt
@@ -0,0 +1,2 @@
+Filename Type Size Used Priority
+/dev/sda5 partition 3389672 39216 -1
diff --git a/sources/sample/main/vm_stat1.txt b/sources/sample/main/vm_stat1.txt
new file mode 100644
index 0000000..7588145
--- /dev/null
+++ b/sources/sample/main/vm_stat1.txt
@@ -0,0 +1,12 @@
+Mach Virtual Memory Statistics: (page size of 4096 bytes)
+Pages free: 33312.
+Pages active: 27150.
+Pages inactive: 28122.
+Pages wired down: 9720.
+"Translation faults": 18751279.
+Pages copy-on-write: 72642.
+Pages zero filled: 17475509.
+Pages reactivated: 110441.
+Pageins: 23256.
+Pageouts: 9390.
+Object cache: 21657 hits of 216013 lookups (10% hit rate)
diff --git a/sources/sample/main/vm_stat2.txt b/sources/sample/main/vm_stat2.txt
new file mode 100644
index 0000000..97d287d
--- /dev/null
+++ b/sources/sample/main/vm_stat2.txt
@@ -0,0 +1,13 @@
+Mach Virtual Memory Statistics: (page size of 4096 bytes)
+Pages free: 90518.
+Pages active: 205479.
+Pages inactive: 32417.
+Pages speculative: 134461.
+Pages wired down: 61009.
+"Translation faults": 26323651.
+Pages copy-on-write: 177180.
+Pages zero filled: 15230394.
+Pages reactivated: 3.
+Pageins: 388108.
+Pageouts: 0.
+Object cache: 14 hits of 797355 lookups (0% hit rate)
diff --git a/sources/sample/main/vm_stat3.txt b/sources/sample/main/vm_stat3.txt
new file mode 100644
index 0000000..77d7f4a
--- /dev/null
+++ b/sources/sample/main/vm_stat3.txt
@@ -0,0 +1,23 @@
+Mach Virtual Memory Statistics: (page size of 4096 bytes)
+Pages free: 10618.
+Pages active: 1894043.
+Pages inactive: 988141.
+Pages speculative: 806200.
+Pages throttled: 0.
+Pages wired down: 437176.
+Pages purgeable: 10356.
+"Translation faults": 2938853787.
+Pages copy-on-write: 241916814.
+Pages zero filled: 971743078.
+Pages reactivated: 379509.
+Pages purged: 637333.
+File-backed pages: 1552166.
+Anonymous pages: 2136218.
+Pages stored in compressor: 77894.
+Pages occupied by compressor: 56429.
+Decompressions: 3639.
+Compressions: 82391.
+Pageins: 1973731.
+Pageouts: 23343.
+Swapins: 264.
+Swapouts: 264.
diff --git a/sources/sample/motherboard/hwsensors/hwsensors1.txt b/sources/sample/motherboard/hwsensors/hwsensors1.txt
new file mode 100644
index 0000000..5ad6963
--- /dev/null
+++ b/sources/sample/motherboard/hwsensors/hwsensors1.txt
@@ -0,0 +1,13 @@
+hw.sensors.0=lm0, VCORE_A, volts_dc, 1.73 V
+hw.sensors.1=lm0, VCORE_B, volts_dc, 1.74 V
+hw.sensors.2=lm0, +3.3V, volts_dc, 3.26 V
+hw.sensors.3=lm0, +5V, volts_dc, 4.91 V
+hw.sensors.4=lm0, +12V, volts_dc, 12.28 V
+hw.sensors.5=lm0, -12V, volts_dc, -11.82 V
+hw.sensors.6=lm0, -5V, volts_dc, 3.55 V
+hw.sensors.7=lm0, +5VSB, volts_dc, 4.92 V
+hw.sensors.8=lm0, VBAT, volts_dc, 3.26 V
+hw.sensors.9=lm0, Temp1, temp, 33.00 degC / 91.40 degF
+hw.sensors.10=lm0, Temp2, temp, 22.50 degC / 72.50 degF
+hw.sensors.11=lm0, Temp3, temp, 127.50 degC / 261.50 degF
+hw.sensors.12=lm0, Fan1, fanrpm, 4891 RPM
diff --git a/sources/sample/motherboard/hwsensors/hwsensors2.txt b/sources/sample/motherboard/hwsensors/hwsensors2.txt
new file mode 100644
index 0000000..38da7d0
--- /dev/null
+++ b/sources/sample/motherboard/hwsensors/hwsensors2.txt
@@ -0,0 +1,13 @@
+hw.sensors.0=it0, Fan1, 2445 RPM
+hw.sensors.3=it0, VCORE_A, 1.62 V DC
+hw.sensors.4=it0, VCORE_B, 2.66 V DC
+hw.sensors.5=it0, +3.3V, 3.23 V DC
+hw.sensors.6=it0, +5V, 4.84 V DC
+hw.sensors.7=it0, +12V, 12.42 V DC
+hw.sensors.8=it0, Unused, -2.80 V DC
+hw.sensors.9=it0, -12V, -6.62 V DC
+hw.sensors.10=it0, +5VSB, 4.84 V DC
+hw.sensors.11=it0, VBAT, 0.00 V DC
+hw.sensors.12=it0, Temp 1, 35.00 degC
+hw.sensors.13=it0, Temp 2, 29.00 degC
+hw.sensors.14=it0, Temp 3, 45.00 degC
diff --git a/sources/sample/motherboard/hwsensors/hwsensors3.txt b/sources/sample/motherboard/hwsensors/hwsensors3.txt
new file mode 100644
index 0000000..d76ecd7
--- /dev/null
+++ b/sources/sample/motherboard/hwsensors/hwsensors3.txt
@@ -0,0 +1,15 @@
+hw.sensors.acpitz0.temp0=21.80 degC (zone temperature)
+hw.sensors.it0.temp0=25.00 degC
+hw.sensors.it0.temp1=25.00 degC
+hw.sensors.it0.temp2=28.00 degC
+hw.sensors.it0.fan0=3668 RPM
+hw.sensors.it0.fan2=2033 RPM
+hw.sensors.it0.volt0=1.52 VDC (VCORE_A)
+hw.sensors.it0.volt1=2.54 VDC (VCORE_B)
+hw.sensors.it0.volt2=3.25 VDC (+3.3V)
+hw.sensors.it0.volt3=4.19 VDC (+5V)
+hw.sensors.it0.volt4=12.10 VDC (+12V)
+hw.sensors.it0.volt5=-9.42 VDC (-12V)
+hw.sensors.it0.volt6=-4.68 VDC (-5V)
+hw.sensors.it0.volt7=3.87 VDC (+5VSB)
+hw.sensors.it0.volt8=4.08 VDC (VBAT)
diff --git a/sources/sample/motherboard/hwsensors/hwsensors4.txt b/sources/sample/motherboard/hwsensors/hwsensors4.txt
new file mode 100644
index 0000000..9cc7b58
--- /dev/null
+++ b/sources/sample/motherboard/hwsensors/hwsensors4.txt
@@ -0,0 +1,17 @@
+hw.sensors.cpu0.temp0=35.00 degC
+hw.sensors.cpu1.temp0=35.00 degC
+hw.sensors.cpu2.temp0=35.00 degC
+hw.sensors.cpu3.temp0=35.00 degC
+hw.sensors.acpitz0.temp0=47.00 degC (zone temperature)
+hw.sensors.acpibat0.volt0=10.80 VDC (voltage)
+hw.sensors.acpibat0.volt1=12.46 VDC (current voltage)
+hw.sensors.acpibat0.amphour0=9.39 Ah (last full capacity)
+hw.sensors.acpibat0.amphour1=0.47 Ah (warning capacity)
+hw.sensors.acpibat0.amphour2=0.02 Ah (low capacity)
+hw.sensors.acpibat0.amphour3=9.39 Ah (remaining capacity), OK
+hw.sensors.acpibat0.raw0=0 (battery full), OK
+hw.sensors.acpibat0.raw1=0 (rate)
+hw.sensors.acpiac0.indicator0=On (power supply)
+hw.sensors.acpithinkpad0.temp0=47.00 degC
+hw.sensors.acpithinkpad0.temp1=47.00 degC
+hw.sensors.acpithinkpad0.temp2=47.00 degC
diff --git a/sources/sample/motherboard/hwsensors/hwsensors5.txt b/sources/sample/motherboard/hwsensors/hwsensors5.txt
new file mode 100644
index 0000000..a20467a
--- /dev/null
+++ b/sources/sample/motherboard/hwsensors/hwsensors5.txt
@@ -0,0 +1,33 @@
+hw.sensors.cpu0.temp0=60.00 degC
+hw.sensors.cpu1.temp0=60.00 degC
+hw.sensors.cpu2.temp0=60.00 degC
+hw.sensors.cpu3.temp0=60.00 degC
+hw.sensors.acpitz0.temp0=59.00 degC (zone temperature)
+hw.sensors.acpibat0.volt0=11.10 VDC (voltage)
+hw.sensors.acpibat0.volt1=12.49 VDC (current voltage)
+hw.sensors.acpibat0.power0=0.00 W (rate)
+hw.sensors.acpibat0.watthour0=48.90 Wh (last full capacity)
+hw.sensors.acpibat0.watthour1=2.44 Wh (warning capacity)
+hw.sensors.acpibat0.watthour2=0.20 Wh (low capacity)
+hw.sensors.acpibat0.watthour3=47.90 Wh (remaining capacity), OK
+hw.sensors.acpibat0.raw0=0 (battery idle), OK
+hw.sensors.acpiac0.indicator0=On (power supply)
+hw.sensors.acpithinkpad0.temp0=59.00 degC
+hw.sensors.acpithinkpad0.temp1=59.00 degC
+hw.sensors.acpithinkpad0.temp2=59.00 degC
+hw.sensors.acpithinkpad0.temp3=59.00 degC
+hw.sensors.acpithinkpad0.temp4=59.00 degC
+hw.sensors.acpithinkpad0.temp5=59.00 degC
+hw.sensors.acpithinkpad0.temp6=59.00 degC
+hw.sensors.acpithinkpad0.temp7=59.00 degC
+hw.sensors.acpithinkpad0.fan0=3782 RPM
+hw.sensors.acpidock0.indicator0=Off (not docked)
+hw.sensors.aps0.temp0=45.00 degC
+hw.sensors.aps0.temp1=45.00 degC
+hw.sensors.aps0.indicator0=On (Keyboard Active)
+hw.sensors.aps0.indicator1=Off (Mouse Active)
+hw.sensors.aps0.indicator2=On (Lid Open)
+hw.sensors.aps0.raw0=503 (X_ACCEL)
+hw.sensors.aps0.raw1=519 (Y_ACCEL)
+hw.sensors.aps0.raw2=503 (X_VAR)
+hw.sensors.aps0.raw3=519 (Y_VAR)
diff --git a/sources/sample/motherboard/ipmi-sensors/ipmi-sensors1.txt b/sources/sample/motherboard/ipmi-sensors/ipmi-sensors1.txt
new file mode 100644
index 0000000..e5fa4e8
--- /dev/null
+++ b/sources/sample/motherboard/ipmi-sensors/ipmi-sensors1.txt
@@ -0,0 +1,30 @@
+ID | Name | Type | Reading | Units | Lower NR | Lower C | Lower NC | Upper NC | Upper C | Upper NR | Event
+64 | BIOS | System Firmware Progress | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A
+112 | ACPI State | System ACPI Power State | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | 'S0/G0'
+160 | System Reset | Module/Board | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | 'OK'
+208 | CPU Fan | Fan | 2085.94 | RPM | N/A | N/A | N/A | N/A | 771.96 | N/A | 'OK'
+272 | Rear Fan | Fan | 1463.27 | RPM | N/A | N/A | N/A | N/A | 771.96 | N/A | 'OK'
+336 | System 12V | Voltage | 11.93 | V | N/A | 10.02 | N/A | N/A | 13.16 | N/A | 'OK'
+400 | System 5V | Voltage | 5.05 | V | N/A | 4.75 | N/A | N/A | 5.24 | N/A | 'OK'
+464 | System AUX 5V | Voltage | 4.94 | V | N/A | 4.75 | N/A | N/A | 5.24 | N/A | 'OK'
+528 | System 3.3V | Voltage | 3.22 | V | N/A | 3.14 | N/A | N/A | 3.47 | N/A | 'OK'
+592 | System AUX 3.3V | Voltage | 3.31 | V | N/A | 3.14 | N/A | N/A | 3.47 | N/A | 'OK'
+656 | CPU Vcore | Voltage | 1.16 | V | N/A | 0.84 | N/A | N/A | 1.61 | N/A | 'OK'
+720 | CPU Vterm | Voltage | 1.21 | V | N/A | 1.15 | N/A | N/A | 1.26 | N/A | 'OK'
+784 | Memory Vcore | Voltage | 1.78 | V | N/A | 1.71 | N/A | N/A | 1.91 | N/A | 'OK'
+848 | Memory Vterm | Voltage | 0.89 | V | N/A | 0.85 | N/A | N/A | 0.94 | N/A | 'OK'
+912 | AMB/MCH Vcore | Voltage | 1.50 | V | N/A | 1.43 | N/A | N/A | 1.58 | N/A | 'OK'
+976 | PCI System Err | Module/Board | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A
+1024 | Mem Recover Err | Memory | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A
+1072 | MemUnrecover Er | Memory | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A
+1120 | RCPU Diode 1 | Temperature | N/A | C | N/A | N/A | N/A | N/A | 85.00 | N/A | N/A
+1184 | Ambient | Temperature | 27.00 | C | N/A | N/A | N/A | N/A | 51.00 | N/A | 'OK'
+1248 | Local VRD0 Temp | Temperature | 28.00 | C | N/A | N/A | N/A | N/A | N/A | N/A | 'OK'
+1504 | CPU Dmn 0 Temp | Temperature | 53.00 | C | N/A | N/A | N/A | N/A | 85.00 | N/A | 'OK'
+1632 | Slots Amb | Temperature | 33.00 | C | N/A | N/A | N/A | N/A | 85.00 | N/A | 'OK'
+1696 | 1.8V Amb | Temperature | 46.00 | C | N/A | N/A | N/A | N/A | 85.00 | N/A | 'OK'
+2080 | Therm-Trip | Processor | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | 'State Deasserted'
+2128 | CPU Prochot | Temperature | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | 'Limit Not Exceeded'
+2176 | LOM Link Status | LAN | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | 'State Asserted'
+2224 | LO100 Present | Add In Card | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | 'Device Removed/Device Absent'
+5616 | Watchdog | Watchdog 2 | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A
diff --git a/sources/sample/motherboard/ipmitool/ipmitool1.txt b/sources/sample/motherboard/ipmitool/ipmitool1.txt
new file mode 100644
index 0000000..56e8788
--- /dev/null
+++ b/sources/sample/motherboard/ipmitool/ipmitool1.txt
@@ -0,0 +1,64 @@
+BB +1.2V Vtt | 1.197 | Volts | ok | na | 1.096 | 1.134 | 1.285 | 1.323 | na
+BB +1.5V AUX | 1.490 | Volts | ok | na | 1.334 | 1.373 | 1.622 | 1.669 | na
+BB +1.5V | 1.469 | Volts | ok | na | 1.326 | 1.365 | 1.625 | 1.677 | na
+BB +1.8V | 1.802 | Volts | ok | na | 1.638 | 1.689 | 1.926 | 1.988 | na
+BB +3.3V | 3.320 | Volts | ok | na | 2.941 | 3.027 | 3.578 | 3.681 | na
+BB +3.3V STB | 3.337 | Volts | ok | na | 3.027 | 3.113 | 3.509 | 3.612 | na
+BB +1.5V ESB | 1.490 | Volts | ok | na | 1.357 | 1.404 | 1.591 | 1.638 | na
+BB +5V | 5.122 | Volts | ok | na | 4.446 | 4.576 | 5.408 | 5.564 | na
+BB +12V AUX | 12.090 | Volts | ok | na | 10.416 | 10.726 | 13.144 | 13.578 | na
+BB 0.9V | 0.902 | Volts | ok | na | 0.811 | 0.835 | 0.950 | 0.979 | na
+Baseboard Temp | 29.000 | degrees C | ok | na | 5.000 | 10.000 | 61.000 | 66.000 | na
+P1 Therm Margin | -32.000 | degrees C | ok | na | na | na | na | na | na
+P1 Therm Ctrl % | 0.000 | unspecified | ok | na | na | na | na | 49.530 | na
+Proc 1 Vcc | 1.203 | Volts | ok | na | na | na | na | na | na
+Power Unit | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+BMC Watchdog | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+Scrty Violation | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+F-P Diag Int | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+System Event Log | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+Session Audit | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+System Event | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+BB Vbat | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+SysACPIPowerStat | 0x0 | discrete | 0x0100| na | na | na | na | na | na
+Button | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+SMI Timeout | 0x0 | discrete | 0x0100| na | na | na | na | na | na
+NMI State | 0x0 | discrete | 0x0100| na | na | na | na | na | na
+SMI State | 0x0 | discrete | 0x0100| na | na | na | na | na | na
+Processor 1 Stat | 0x0 | discrete | 0x8000| na | na | na | na | na | na
+Processor 2 Stat | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+PCIe Link0 | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+PCIe Link1 | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+PCIe Link2 | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+PCIe Link3 | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+PCIe Link4 | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+PCIe Link5 | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+PCIe Link6 | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+PCIe Link7 | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+PCIe Link8 | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+PCIe Link9 | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+PCIe Link10 | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+PCIe Link11 | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+PCIe Link12 | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+PCIe Link13 | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+Proc1 VRD Hot | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+CPU1 Vcc OOR | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+CPU Popula Error | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+DIMM A1 | 0x0 | discrete | 0x0400| na | na | na | na | na | na
+DIMM A2 | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+DIMM B1 | 0x0 | discrete | 0x0400| na | na | na | na | na | na
+DIMM B2 | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+DIMM C1 | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+DIMM C2 | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+DIMM D1 | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+DIMM D2 | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+MemA Error | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+MemB Error | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+MemC Error | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+MemD Error | 0x0 | discrete | 0x0000| na | na | na | na | na | na
+B0 Sparing Enb | na | discrete | na | na | na | na | na | na | na
+B0 Spare Redun | na | discrete | na | na | na | na | na | na | na
+B1 Sparing Enb | na | discrete | na | na | na | na | na | na | na
+B1 Spare Redun | na | discrete | na | na | na | na | na | na | na
+B01 Mirror Enbl | na | discrete | na | na | na | na | na | na | na
+B01 MirrorRedun | na | discrete | na | na | na | na | na | na | na
diff --git a/sources/sample/motherboard/ipmiutil/ipmiutil1.txt b/sources/sample/motherboard/ipmiutil/ipmiutil1.txt
new file mode 100644
index 0000000..3ffe92b
--- /dev/null
+++ b/sources/sample/motherboard/ipmiutil/ipmiutil1.txt
@@ -0,0 +1,217 @@
+ipmiutil ver 2.93
+isensor: version 2.93
+-- BMC version 1.51, IPMI version 2.0
+ ID | SDRType | Type |SNum| Name |Status| Reading
+0001 | Compact | Event Log | 72 | SEL | Absent |
+ | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state
+0002 | Compact | Platform Securi | 73 | Intrusion | OK |
+ | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state
+000b | Full | Fan | 30 | Fan1A RPM | OK | 1680.00 RPM
+ | Thresholds| lo-noncr 840.00 | lo-crit 720.00
+000c | Full | Fan | 31 | Fan1B RPM | OK | 1560.00 RPM
+ | Thresholds| lo-noncr 840.00 | lo-crit 720.00
+000d | Full | Fan | 32 | Fan2A RPM | OK | 2880.00 RPM
+ | Thresholds| lo-noncr 840.00 | lo-crit 720.00
+000e | Full | Fan | 33 | Fan2B RPM | OK | 2760.00 RPM
+ | Thresholds| lo-noncr 840.00 | lo-crit 720.00
+000f | Full | Fan | 34 | Fan3A RPM | OK | 2880.00 RPM
+ | Thresholds| lo-noncr 840.00 | lo-crit 720.00
+0010 | Full | Fan | 35 | Fan3B RPM | OK | 2760.00 RPM
+ | Thresholds| lo-noncr 840.00 | lo-crit 720.00
+0011 | Full | Fan | 36 | Fan4A RPM | OK | 2280.00 RPM
+ | Thresholds| lo-noncr 840.00 | lo-crit 720.00
+0012 | Full | Fan | 37 | Fan4B RPM | OK | 2160.00 RPM
+ | Thresholds| lo-noncr 840.00 | lo-crit 720.00
+0013 | Full | Fan | 38 | Fan5A RPM | OK | 2280.00 RPM
+ | Thresholds| lo-noncr 840.00 | lo-crit 720.00
+0014 | Full | Fan | 39 | Fan5B RPM | OK | 2160.00 RPM
+ | Thresholds| lo-noncr 840.00 | lo-crit 720.00
+0015 | Full | Temperature | 04 | Inlet Temp | OK | 18.00 C
+ | Thresholds| hi-crit 47.00 | hi-noncr 42.00 | lo-noncr 3.00 | lo-crit -7.00
+0016 | Compact | Watchdog_2 | 71 | OS Watchdog | OK |
+ | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state
+0017 | Compact | Voltage | 23 | VCORE PG | OK |
+ | Entity ID 3.1 (Processor), Capab: arm=auto thr=none evts=state
+0018 | Compact | Voltage | 19 | 3.3V PG | OK |
+ | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state
+0019 | Compact | Voltage | 1a | 5V PG | OK |
+ | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state
+001a | Compact | Cable/Interconn | 50 | USB Cable Pres | _ |
+ | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state
+001b | Compact | Entity Presence | 70 | Dedicated NIC | Present |
+ | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state
+001c | Compact | Cable/Interconn | 51 | VGA Cable Pres | _ |
+ | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state
+001d | Compact | Entity Presence | 49 | Presence | OK* |
+ | Entity ID 11.2 (Add-in card), Capab: arm=auto thr=none evts=state
+001e | Compact | Entity Presence | 40 | Presence | OK* |
+ | Entity ID 3.1 (Processor), Capab: arm=auto thr=none evts=state
+001f | Compact | Voltage | 25 | PLL PG | OK |
+ | Entity ID 3.1 (Processor), Capab: arm=auto thr=none evts=state
+0020 | Compact | Voltage | 27 | 1.1V PG | OK |
+ | Entity ID 0.1 (unspecified), Capab: arm=auto thr=none evts=state
+0021 | Compact | Voltage | f6 | BP1 5V PG | OK |
+ | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state
+0022 | Compact | Entity Presence | 43 | Presence | OK* |
+ | Entity ID 10.2 (Power supply), Capab: arm=auto thr=none evts=state
+0023 | Compact | Voltage | 2b | VSA PG | OK |
+ | Entity ID 3.1 (Processor), Capab: arm=auto thr=none evts=state
+0024 | Compact | Voltage | 1e | MEM VDDQ PG | OK |
+ | Entity ID 3.1 (Processor), Capab: arm=auto thr=none evts=state
+0025 | Compact | Cable/Interconn | 4c | LCD Cable Pres | _ |
+ | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state
+0026 | Compact | Voltage | 20 | VTT PG | OK |
+ | Entity ID 3.1 (Processor), Capab: arm=auto thr=none evts=state
+0027 | Compact | Entity Presence | 48 | Presence | Present |
+ | Entity ID 11.3 (Add-in card), Capab: arm=auto thr=none evts=state
+0028 | Compact | Processor | 60 | Status | ProcPresent |
+ | Entity ID 3.1 (Processor), Capab: arm=auto thr=none evts=state
+0029 | Compact | Fan | 75 | Fan Redundancy | Redundant |
+ | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state
+002c | Compact | Cable/Interconn | 64 | Riser Config Err | _ |
+ | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state
+002d | Compact | Voltage | 28 | 1.5V PG | OK |
+ | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state
+002e | Compact | Voltage | 2c | PS2 PG Fail | OK |
+ | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state
+002f | Compact | Voltage | 2d | PS1 PG Fail | OK |
+ | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state
+0030 | Compact | Voltage | 14 | MEM VTT PG | OK |
+ | Entity ID 3.1 (Processor), Capab: arm=auto thr=none evts=state
+0031 | Compact | Entity Presence | 42 | Presence | OK* |
+ | Entity ID 10.1 (Power supply), Capab: arm=auto thr=none evts=state
+0032 | Compact | Critical Interr | 90 | PCIe Slot1 | OK |
+ | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state
+0033 | Compact | Critical Interr | 91 | PCIe Slot2 | OK |
+ | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state
+0034 | Compact | Critical Interr | 92 | PCIe Slot3 | OK |
+ | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state
+0035 | Compact | Critical Interr | 93 | PCIe Slot4 | OK |
+ | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state
+0036 | Compact | Memory | c0 | A | OK |
+ | Entity ID 32.1 (Memory device ), Capab: arm=auto thr=none evts=state
+0039 | Compact | Board | fa | vFlash | OK |
+ | Entity ID 12.1 (Front panel bd), Capab: arm=auto thr=none evts=state
+003a | Compact | Battery | 65 | CMOS Battery | OK |
+ | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state
+003b | Compact | Entity Presence | 54 | Presence | OK* |
+ | Entity ID 26.1 (Disk Drive Bay), Capab: arm=auto thr=none evts=state
+003c | Full | Current | 6a | Current 1 | OK | 0.40 A
+ | Thresholds
+003d | Full | Current | 6b | Current 2 | OK | 0.20 A
+ | Thresholds
+003e | Full | Voltage | 6c | Voltage 1 | OK | 228.00 V
+ | Thresholds
+003f | Full | Voltage | 6d | Voltage 2 | OK | 230.00 V
+ | Thresholds
+0040 | Compact | Power Supply | 74 | PS Redundancy | Present |
+ | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state
+0041 | Compact | Power Supply | 62 | Status | Present |
+ | Entity ID 10.1 (Power supply), Capab: arm=auto thr=none evts=state
+0042 | Compact | Power Supply | 63 | Status | Present |
+ | Entity ID 10.2 (Power supply), Capab: arm=auto thr=none evts=state
+0043 | Full | Current | 77 | Pwr Consumption | OK | 84.00 W
+ | Thresholds| hi-crit 728.00 | hi-noncr 658.00
+0044 | Compact | OEM(c0) | 76 | Power Optimized | Asserted |
+ | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state
+0045 | Compact | OEM(c9) | f4 | SD1 | _ |
+ | Entity ID 11.3 (Add-in card), Capab: arm=auto thr=none evts=state
+0046 | Compact | OEM(c9) | f5 | SD2 | _ |
+ | Entity ID 11.3 (Add-in card), Capab: arm=auto thr=none evts=state
+0047 | Compact | OEM(c9) | 78 | Redundancy | _ |
+ | Entity ID 11.3 (Add-in card), Capab: arm=auto thr=none evts=state
+0048 | Compact | Memory | 01 | ECC Corr Err | Unknown |
+ | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state
+0049 | Compact | Memory | 02 | ECC Uncorr Err | Unknown |
+ | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state
+004a | Compact | Critical Interr | 03 | I/O Channel Chk | Unknown |
+ | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state
+004b | Compact | Critical Interr | 04 | PCI Parity Err | Unknown |
+ | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state
+004c | Compact | Critical Interr | 05 | PCI System Err | Unknown |
+ | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state
+004d | Compact | Event Log | 06 | SBE Log Disabled | Unknown |
+ | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state
+004e | Compact | Event Log | 07 | Logging Disabled | Unknown |
+ | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state
+004f | Compact | System Event | 08 | Unknown | Unknown |
+ | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state
+0050 | Compact | Processor | 0a | CPU Protocol Err | Unknown |
+ | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state
+0051 | Compact | Processor | 0b | CPU Bus PERR | Unknown |
+ | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state
+0052 | Compact | Processor | 0c | CPU Init Err | Unknown |
+ | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state
+0053 | Compact | Processor | 0d | CPU Machine Chk | Unknown |
+ | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state
+0054 | Compact | Memory | 11 | Memory Spared | Unknown |
+ | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state
+0055 | Compact | Memory | 12 | Memory Mirrored | Unknown |
+ | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state
+0056 | Compact | Memory | 13 | Memory RAID | Unknown |
+ | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state
+0057 | Compact | Memory | 14 | Memory Added | Unknown |
+ | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state
+0058 | Compact | Memory | 15 | Memory Removed | Unknown |
+ | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state
+0059 | Compact | Memory | 16 | Memory Cfg Err | Unknown |
+ | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state
+005a | Compact | Memory | 17 | Mem Redun Gain | Unknown |
+ | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state
+005b | Compact | Critical Interr | 18 | PCIE Fatal Err | Unknown |
+ | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state
+005c | Compact | Critical Interr | 19 | Chipset Err | Unknown |
+ | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state
+005d | Compact | OEM(c1) | 1a | Err Reg Pointer | Unknown |
+ | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state
+005e | Compact | Memory | 1b | Mem ECC Warning | Unknown |
+ | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state
+005f | Compact | Memory | 1c | Mem CRC Err | Unknown |
+ | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state
+0060 | Compact | Memory | 1d | USB Over-current | Unknown |
+ | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state
+0061 | Compact | System Firmware | 1e | POST Err | Unknown |
+ | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state
+0062 | Compact | Version Change | 1f | Hdwr version err | Unknown |
+ | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state
+0063 | Compact | Memory | 20 | Mem Overtemp | Unknown |
+ | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state
+0064 | Compact | Memory | 21 | Mem Fatal SB CRC | Unknown |
+ | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state
+0065 | Compact | Memory | 22 | Mem Fatal NB CRC | Unknown |
+ | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state
+0066 | Compact | Watchdog_1 | 71 | OS Watchdog Time | Unknown |
+ | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state
+0067 | Compact | Memory | 26 | Non Fatal PCI Er | Unknown |
+ | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state
+0068 | Compact | Memory | 27 | Fatal IO Error | Unknown |
+ | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state
+0069 | Compact | Memory | 28 | MSR Info Log | Unknown |
+ | Entity ID 34.1 (BIOS), Capab: arm=auto thr=none evts=state
+006a | Compact | Drive Slot | a0 | Drive 0 | Unused Faulty |
+ | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state
+006b | Compact | Cable/Interconn | e0 | Cable SAS A | _ |
+ | Entity ID 26.1 (Disk Drive Bay), Capab: arm=auto thr=none evts=state
+006c | Compact | Cable/Interconn | e1 | Cable SAS B | _ |
+ | Entity ID 26.1 (Disk Drive Bay), Capab: arm=auto thr=none evts=state
+006d | Compact | Cable/Interconn | e2 | Cable SAS C | _ |
+ | Entity ID 26.1 (Disk Drive Bay), Capab: arm=auto thr=none evts=state
+006e | Compact | Cable/Interconn | e3 | Cable SAS D | _ |
+ | Entity ID 26.1 (Disk Drive Bay), Capab: arm=auto thr=none evts=state
+006f | Compact | Cable/Interconn | 58 | Power Cable | _ |
+ | Entity ID 26.1 (Disk Drive Bay), Capab: arm=auto thr=none evts=state
+0070 | Compact | Cable/Interconn | 59 | Signal Cable | _ |
+ | Entity ID 26.1 (Disk Drive Bay), Capab: arm=auto thr=none evts=state
+0071 | Compact | Voltage | 66 | PFault Fail Safe | Absent |
+ | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state
+0072 | Compact | Battery | 68 | ROMB Battery | NotAvailable |
+ | Entity ID 11.2 (Add-in card), Capab: arm=auto thr=none evts=state
+0073 | Compact | Battery | 69 | ROMB Battery | NotAvailable |
+ | Entity ID 11.4 (Add-in card), Capab: arm=auto thr=none evts=state
+0074 | Compact | Cable/Interconn | 4d | Riser 1 Presence | _ |
+ | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state
+0075 | Compact | Cable/Interconn | 4e | Riser 2 Presence | _ |
+ | Entity ID 7.1 (System board), Capab: arm=auto thr=none evts=state
+0077 | Full | Temperature | 0e | Temp | OK | 66.00 C
+ | Thresholds| hi-crit 83.00 | hi-noncr 77.00 | lo-noncr 8.00 | lo-crit 3.00
+ipmiutil sensor, completed successfully
diff --git a/sources/sample/motherboard/lmsensors/lmsensors1.txt b/sources/sample/motherboard/lmsensors/lmsensors1.txt
new file mode 100644
index 0000000..054de5c
--- /dev/null
+++ b/sources/sample/motherboard/lmsensors/lmsensors1.txt
@@ -0,0 +1,13 @@
+via686a-isa-6000
+Adapter: ISA adapter
+CPU core: +1.72 V (min = +1.99 V, max = +2.49 V) ALARM
++2.5V: +0.30 V (min = +2.24 V, max = +2.74 V) ALARM
+I/O: +3.35 V (min = +2.95 V, max = +3.62 V)
++5V: +4.82 V (min = +4.47 V, max = +5.49 V)
++12V: +11.45 V (min = +10.79 V, max = +13.18 V)
+CPU Fan: 0 RPM (min = 3000 RPM, div = 2) ALARM
+P/S Fan: 0 RPM (min = 3000 RPM, div = 2)
+SYS Temp: +27.9°C (high = +45°C, hyst = +40°C)
+CPU Temp: +53.1°C (high = +60°C, hyst = +55°C)
+SBr Temp: +24.2°C (high = +65°C, hyst = +60°C)
+
diff --git a/sources/sample/motherboard/lmsensors/lmsensors10.txt b/sources/sample/motherboard/lmsensors/lmsensors10.txt
new file mode 100644
index 0000000..cd514cc
--- /dev/null
+++ b/sources/sample/motherboard/lmsensors/lmsensors10.txt
@@ -0,0 +1,15 @@
+nouveau-pci-0200
+Adapter: PCI adapter
+temp1: +73.0°C (high = +100.0°C, crit = +100.0°C)
+
+applesmc-isa-0300
+Adapter: ISA adapter
+Master : 1493 RPM (min = 1500 RPM)
+TC0D: +49.5°C
+TC0H: +49.2°C
+TC0P: +48.2°C
+TH0P: +48.8°C
+TN0D: +72.8°C
+TN0P: +58.5°C
+TW0P: +56.8°C
+Tm0P: +128.0°C
diff --git a/sources/sample/motherboard/lmsensors/lmsensors2.txt b/sources/sample/motherboard/lmsensors/lmsensors2.txt
new file mode 100644
index 0000000..f1a6456
--- /dev/null
+++ b/sources/sample/motherboard/lmsensors/lmsensors2.txt
@@ -0,0 +1,20 @@
+w83781d-i2c-0-2d
+Adapter: SMBus PIIX4 adapter at 5f00
+VCore 1: +2.82 V (min = +2.66 V, max = +2.94 V)
+VCore 2: +1.49 V (min = +2.66 V, max = +2.94 V) ALARM
++3.3V: +3.50 V (min = +3.14 V, max = +3.46 V) ALARM
++5V: +4.97 V (min = +4.73 V, max = +5.24 V)
++12V: +11.92 V (min = +11.37 V, max = +12.59 V)
+-12V: -11.57 V (min = -12.57 V, max = -11.35 V)
+-5V: -4.89 V (min = -5.25 V, max = -4.74 V)
+fan1: 6026 RPM (min = 2657 RPM, div = 2)
+fan2: 0 RPM (min = 2657 RPM, div = 2) ALARM
+fan3: 0 RPM (min = 2657 RPM, div = 2) ALARM
+temp1: +12°C (high = +127°C, hyst = +0°C)
+temp2: +11.5°C (high = +50°C, hyst = +49°C)
+temp3: +11.0°C (high = +127°C, hyst = +0°C)
+vid: +2.800 V
+alarms:
+beep_enable:
+ Sound alarm disabled
+
diff --git a/sources/sample/motherboard/lmsensors/lmsensors3.txt b/sources/sample/motherboard/lmsensors/lmsensors3.txt
new file mode 100644
index 0000000..a283195
--- /dev/null
+++ b/sources/sample/motherboard/lmsensors/lmsensors3.txt
@@ -0,0 +1,15 @@
+it87-isa-0290
+Adapter: ISA adapter
+VCore: +1.68 V (min = +1.64 V, max = +1.69 V)
+DDRVtt: +2.56 V (min = +2.42 V, max = +2.58 V)
++3.3V: +3.31 V (min = +3.13 V, max = +3.45 V)
++5V: +4.77 V (min = +4.72 V, max = +5.24 V)
++12V: +12.52 V (min = +11.36 V, max = +12.72 V)
++5VSB: +4.99 V (min = +4.72 V, max = +5.24 V)
+CPU: 3515 RPM (min = 1997 RPM, div = 4)
+SYS: 2393 RPM (min = 1997 RPM, div = 4)
+SYS: +34°C (low = +20°C, high = +40°C) sensor = thermistor
+
+max1617-i2c-1-4c
+Adapter: SMBus Via Pro adapter at 5000
+CPU: +44°C (low = +30°C, high = +70°C)
diff --git a/sources/sample/motherboard/lmsensors/lmsensors4.txt b/sources/sample/motherboard/lmsensors/lmsensors4.txt
new file mode 100644
index 0000000..22a2d65
--- /dev/null
+++ b/sources/sample/motherboard/lmsensors/lmsensors4.txt
@@ -0,0 +1,18 @@
+smsc47m1-isa-0680
+Adapter: ISA adapter
+CPU fan: 2507 RPM (min = 640 RPM, div = 8)
+
+adm1025-i2c-0-2d
+Adapter: SMBus I801 adapter at e000
+CPU I/O (+1.5V):
+ +1.51 V (min = +1.35 V, max = +1.65 V)
+CPU Core (+1.75V):
+ +1.72 V (min = +1.66 V, max = +1.84 V)
++3.3V: +3.33 V (min = +2.97 V, max = +3.63 V)
++5V: +5.21 V (min = +4.50 V, max = +5.50 V)
++3.3V standby:
+ +3.27 V (min = +2.97 V, max = +3.63 V)
+CPU Temp: +34.0 C (low = +10 C, high = +60 C)
+M/B Temp: +33.0 C (low = +10 C, high = +45 C)
+vid: +1.750 V (VRM Version 9.0)
+
diff --git a/sources/sample/motherboard/lmsensors/lmsensors5.txt b/sources/sample/motherboard/lmsensors/lmsensors5.txt
new file mode 100644
index 0000000..87e64f5
--- /dev/null
+++ b/sources/sample/motherboard/lmsensors/lmsensors5.txt
@@ -0,0 +1,30 @@
+eeprom-i2c-0-50
+Adapter: SMBus PIIX4 adapter at f0b0
+Unknown EEPROM type (54)
+
+eeprom-i2c-0-54
+Adapter: SMBus PIIX4 adapter at f0b0
+Memory type: SDR SDRAM DIMM
+Memory size (MB): 128
+
+eeprom-i2c-0-55
+Adapter: SMBus PIIX4 adapter at f0b0
+Memory type: SDR SDRAM DIMM
+Memory size (MB): 128
+
+eeprom-i2c-0-56
+Adapter: SMBus PIIX4 adapter at f0b0
+Memory type: SDR SDRAM DIMM
+Memory size (MB): 128
+
+fscpos-i2c-0-73
+Adapter: SMBus PIIX4 adapter at f0b0
+temp1: +38.00 C
+temp2: +28.00 C
+temp3: failed
+fan1: 1440 RPM
+fan2: 0 RPM
+fan3: 3120 RPM
+volt12: +11.91 V
+volt5: +5.12 V
+voltbatt: +3.15 V
diff --git a/sources/sample/motherboard/lmsensors/lmsensors6.txt b/sources/sample/motherboard/lmsensors/lmsensors6.txt
new file mode 100644
index 0000000..2b3a188
--- /dev/null
+++ b/sources/sample/motherboard/lmsensors/lmsensors6.txt
@@ -0,0 +1,29 @@
+it8716-isa-0228
+Adapter: ISA adapter
+VCore: +0.99 V (min = +0.00 V, max = +4.08 V)
+VDDR: +1.89 V (min = +0.00 V, max = +4.08 V)
++3.3V: +3.38 V (min = +0.00 V, max = +4.08 V)
++5V: +5.08 V (min = +0.00 V, max = +6.85 V)
++12V: +12.16 V (min = +0.00 V, max = +16.32 V)
+in5: +3.25 V (min = +0.00 V, max = +4.08 V)
+in6: +0.10 V (min = +0.00 V, max = +4.08 V)
+5VSB: +4.95 V (min = +0.00 V, max = +6.85 V)
+VBat: +3.26 V
+fan1: 1374 RPM (min = 0 RPM)
+fan2: 0 RPM (min = 0 RPM)
+temp1: +42°C (low = +127°C, high = +127°C) sensor = thermistor
+temp2: +37°C (low = +127°C, high = +127°C) sensor = thermistor
+temp3: +28°C (low = +127°C, high = +127°C) sensor = diode
+vid: +1.000 V
+
+k8temp-pci-00c3
+Adapter: PCI adapter
+Core0 Temp:
+ +31°C
+Core0 Temp:
+ +21°C
+Core1 Temp:
+ +29°C
+Core1 Temp:
+ +21°C
+
diff --git a/sources/sample/motherboard/lmsensors/lmsensors7.txt b/sources/sample/motherboard/lmsensors/lmsensors7.txt
new file mode 100644
index 0000000..c1642ce
--- /dev/null
+++ b/sources/sample/motherboard/lmsensors/lmsensors7.txt
@@ -0,0 +1,24 @@
+asb100-i2c-1-2d
+Adapter: SMBus nForce2 adapter at 5500
+VCore 1: +1.60 V (min = +1.25 V, max = +1.87 V)
++3.3V: +3.30 V (min = +2.96 V, max = +3.63 V)
++5V: +5.05 V (min = +4.49 V, max = +5.51 V)
++12V: +11.55 V (min = +9.55 V, max = +14.41 V)
+-12V (reserved):
+ -12.07 V (min = -0.00 V, max = -0.00 V)
+-5V (reserved):
+ -5.06 V (min = -0.00 V, max = -0.00 V)
+CPU Fan: 11065 RPM (min = -1 RPM, div = 2)
+Chassis Fan:
+ 2755 RPM (min = -1 RPM, div = 2)
+Power Fan: 0 RPM (min = -1 RPM, div = 2)
+M/B Temp: +34 C (high = +80 C, hyst = +75 C)
+CPU Temp (Intel):
+ +25 C (high = +80 C, hyst = +75 C)
+Power Temp:
+ -0 C (high = +80 C, hyst = +75 C)
+CPU Temp (AMD):
+ +25 C (high = +80 C, hyst = +75 C)
+vid: +1.575 V (VRM Version 9.0)
+alarms:
+
diff --git a/sources/sample/motherboard/lmsensors/lmsensors8.txt b/sources/sample/motherboard/lmsensors/lmsensors8.txt
new file mode 100644
index 0000000..880f25f
--- /dev/null
+++ b/sources/sample/motherboard/lmsensors/lmsensors8.txt
@@ -0,0 +1,24 @@
+coretemp-isa-0000
+Adapter: ISA adapter
+Core 0: +49.0°C (high = +74.0°C, crit = +100.0°C)
+Core 1: +46.0°C (high = +74.0°C, crit = +100.0°C)
+
+
+fam15h_power-pci-00c4
+Adapter: PCI adapter
+power1: 85.74 W
+
+
+fam15h_power-pci-00c4
+Adapter: PCI adapter
+power1: 71.17 W (crit = 95.04 W)
+
+mcp3021-i2c-0-4d
+Adapter: MPC adapter
+in0: +0.19 V (min = +0.19 V, max = +0.21 V)
+curr1: +0.99 A (min = +0.93 A, max = +1.05 A)
+
+mcp3021-i2c-1-4d
+Adapter: MPC adapter
+in0: +0.40 V (min = +0.40 V, max = +0.41 V)
+curr1: +2.01 A (min = +1.98 A, max = +2.02 A)
diff --git a/sources/sample/motherboard/lmsensors/lmsensors9.txt b/sources/sample/motherboard/lmsensors/lmsensors9.txt
new file mode 100644
index 0000000..f8f646a
--- /dev/null
+++ b/sources/sample/motherboard/lmsensors/lmsensors9.txt
@@ -0,0 +1,14 @@
+power_meter-acpi-0
+Adapter: ACPI interface
+power1: 4.29 MW (interval = 2.00 s)
+
+coretemp-isa-0000
+Adapter: ISA adapter
+Physical id 0: +56.0°C (high = +87.0°C, crit = +97.0°C)
+Core 0: +54.0°C (high = +87.0°C, crit = +97.0°C)
+Core 1: +56.0°C (high = +87.0°C, crit = +97.0°C)
+Core 2: +53.0°C (high = +87.0°C, crit = +97.0°C)
+Core 3: +53.0°C (high = +87.0°C, crit = +97.0°C)
+Core 4: +53.0°C (high = +87.0°C, crit = +97.0°C)
+Core 5: +52.0°C (high = +87.0°C, crit = +97.0°C)
+
diff --git a/sources/sample/motherboard/mbm5/MBM51.csv b/sources/sample/motherboard/mbm5/MBM51.csv
new file mode 100644
index 0000000..ee9a2fb
--- /dev/null
+++ b/sources/sample/motherboard/mbm5/MBM51.csv
@@ -0,0 +1,11 @@
+;;;Case;CPU;Sensor 3;Core 0;Core 1;+3.3;+5.00;+12.00;-12.00;-5.00;Fan 1;Fan 2;Fan 3;
+23/02/2008;15:45:18;2000 MHz;45 C;53 C;0 C;1,68 V;0,00 V;3,23 V;4,92 V;12,28 V;1,54 V;2,29 V;5037 RPM;
+23/02/2008;15:44:48;2000 MHz;45 C;53 C;0 C;1,68 V;0,00 V;3,25 V;4,89 V;12,28 V;1,54 V;2,34 V;5113 RPM;
+23/02/2008;15:44:18;2000 MHz;45 C;53 C;0 C;1,66 V;0,00 V;3,25 V;4,89 V;12,28 V;1,63 V;2,34 V;5113 RPM;
+23/02/2008;15:43:48;2000 MHz;45 C;53 C;0 C;1,66 V;0,00 V;3,23 V;4,89 V;12,28 V;1,54 V;2,29 V;5037 RPM;
+23/02/2008;15:43:18;2000 MHz;45 C;53 C;0 C;1,68 V;0,00 V;3,23 V;4,92 V;12,28 V;1,54 V;2,34 V;5113 RPM;
+23/02/2008;15:42:48;2000 MHz;45 C;53 C;0 C;1,68 V;0,00 V;3,25 V;4,89 V;12,28 V;1,54 V;2,34 V;5037 RPM;
+23/02/2008;15:42:18;2000 MHz;45 C;53 C;0 C;1,66 V;0,00 V;3,23 V;4,89 V;12,40 V;1,63 V;2,34 V;5037 RPM;
+23/02/2008;15:41:48;2000 MHz;45 C;53 C;0 C;1,68 V;0,00 V;3,25 V;4,89 V;12,28 V;1,54 V;2,29 V;5113 RPM;
+23/02/2008;15:41:18;2000 MHz;45 C;53 C;0 C;1,68 V;0,00 V;3,23 V;4,87 V;12,34 V;1,63 V;2,34 V;5113 RPM;
+23/02/2008;15:40:48;2000 MHz;45 C;53 C;0 C;1,68 V;0,00 V;3,23 V;4,89 V;12,28 V;1,46 V;2,29 V;5037 RPM;
diff --git a/sources/sample/plugin_bat/README b/sources/sample/plugin_bat/README
new file mode 100644
index 0000000..1e417a3
--- /dev/null
+++ b/sources/sample/plugin_bat/README
@@ -0,0 +1,4 @@
+FILE CONTENT OF
+ac_state cat /proc/acpi/ac_adapter/AC/state
+battery_info cat /proc/acpi/battery/BAT0/info
+battery_state cat /proc/acpi/battery/BAT0/state
diff --git a/sources/sample/plugin_bat/ac_state1.txt b/sources/sample/plugin_bat/ac_state1.txt
new file mode 100644
index 0000000..9ad8d30
--- /dev/null
+++ b/sources/sample/plugin_bat/ac_state1.txt
@@ -0,0 +1 @@
+state: on-line
diff --git a/sources/sample/plugin_bat/battery_info1.txt b/sources/sample/plugin_bat/battery_info1.txt
new file mode 100644
index 0000000..b3a49a9
--- /dev/null
+++ b/sources/sample/plugin_bat/battery_info1.txt
@@ -0,0 +1,13 @@
+present: yes
+design capacity: 50000 mWh
+last full capacity: 50000 mWh
+battery technology: rechargeable
+design voltage: 10000 mV
+design capacity warning: 100 mWh
+design capacity low: 50 mWh
+capacity granularity 1: 1 mWh
+capacity granularity 2: 1 mWh
+model number: 1
+serial number: 0
+battery type: VBOX
+OEM info: innotek
diff --git a/sources/sample/plugin_bat/battery_state1.txt b/sources/sample/plugin_bat/battery_state1.txt
new file mode 100644
index 0000000..a9d4759
--- /dev/null
+++ b/sources/sample/plugin_bat/battery_state1.txt
@@ -0,0 +1,6 @@
+present: yes
+capacity state: ok
+charging state: charged
+present rate: 0 mW
+remaining capacity: 50000 mWh
+present voltage: 10000 mV
diff --git a/sources/sample/plugin_bat/log_LenovoT530.txt b/sources/sample/plugin_bat/log_LenovoT530.txt
new file mode 100644
index 0000000..574b245
--- /dev/null
+++ b/sources/sample/plugin_bat/log_LenovoT530.txt
@@ -0,0 +1,31 @@
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/BAT0/uevent
+POWER_SUPPLY_NAME=BAT0
+POWER_SUPPLY_STATUS=Unknown
+POWER_SUPPLY_PRESENT=1
+POWER_SUPPLY_TECHNOLOGY=Li-ion
+POWER_SUPPLY_CYCLE_COUNT=0
+POWER_SUPPLY_VOLTAGE_MIN_DESIGN=10800000
+POWER_SUPPLY_VOLTAGE_NOW=12365000
+POWER_SUPPLY_POWER_NOW=0
+POWER_SUPPLY_ENERGY_FULL_DESIGN=56160000
+POWER_SUPPLY_ENERGY_FULL=44350000
+POWER_SUPPLY_ENERGY_NOW=43580000
+POWER_SUPPLY_CAPACITY=98
+POWER_SUPPLY_CAPACITY_LEVEL=Normal
+POWER_SUPPLY_MODEL_NAME=45N1001
+POWER_SUPPLY_MANUFACTURER=SANYO
+POWER_SUPPLY_SERIAL_NUMBER=18990
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/BAT0/voltage_min_design
+10800000
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/BAT0/voltage_now
+12367000
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/BAT0/energy_full
+44350000
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/BAT0/energy_now
+43580000
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/BAT0/capacity
+98
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/BAT0/technology
+Li-ion
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/BAT0/status
+Unknown
diff --git a/sources/sample/plugin_bat/log_android233.txt b/sources/sample/plugin_bat/log_android233.txt
new file mode 100644
index 0000000..948cfc5
--- /dev/null
+++ b/sources/sample/plugin_bat/log_android233.txt
@@ -0,0 +1,37 @@
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/uevent
+POWER_SUPPLY_NAME=battery
+POWER_SUPPLY_STATUS=Charging
+POWER_SUPPLY_HEALTH=Good
+POWER_SUPPLY_PRESENT=1
+POWER_SUPPLY_TECHNOLOGY=Li-ion
+POWER_SUPPLY_VOLTAGE_MAX_DESIGN=4300
+POWER_SUPPLY_VOLTAGE_MIN_DESIGN=2800
+POWER_SUPPLY_VOLTAGE_NOW=4200
+POWER_SUPPLY_CAPACITY=100
+POWER_SUPPLY_BATT_TEMP=300
+POWER_SUPPLY_BATT_TEMP_ADC=82
+POWER_SUPPLY_BATT_VOL=4200
+POWER_SUPPLY_BATT_VOL_ADC=3707
+POWER_SUPPLY_BATT_VF_ADC=0
+POWER_SUPPLY_BATT_VOL_ADC_AVER=3707
+POWER_SUPPLY_BATT_TEMP_ADC_AVER=82
+POWER_SUPPLY_BATT_VOL_AVER=0
+POWER_SUPPLY_BATT_TEMP_AVER=15
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/capacity
+100
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/batt_temp
+300
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/batt_temp_adc
+82
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/batt_vol
+4200
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/voltage_min_design
+2800
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/voltage_max_design
+4300
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/technology
+Li-ion
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/status
+Charging
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/health
+Good
diff --git a/sources/sample/plugin_bat/log_android412.txt b/sources/sample/plugin_bat/log_android412.txt
new file mode 100644
index 0000000..d49a0d6
--- /dev/null
+++ b/sources/sample/plugin_bat/log_android412.txt
@@ -0,0 +1,20 @@
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/uevent
+POWER_SUPPLY_NAME=battery
+POWER_SUPPLY_TYPE=Battery
+POWER_SUPPLY_STATUS=Charging
+POWER_SUPPLY_PRESENT=1
+POWER_SUPPLY_HEALTH=Good
+POWER_SUPPLY_TECHNOLOGY=Li-poly
+POWER_SUPPLY_CAPACITY=100
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/capacity
+100
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/batt_temp
+330
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/batt_vol
+4181
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/technology
+Li-poly
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/status
+Charging
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/health
+Good
diff --git a/sources/sample/plugin_bat/log_android422.txt b/sources/sample/plugin_bat/log_android422.txt
new file mode 100644
index 0000000..3ce6325
--- /dev/null
+++ b/sources/sample/plugin_bat/log_android422.txt
@@ -0,0 +1,33 @@
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/uevent
+POWER_SUPPLY_NAME=battery
+POWER_SUPPLY_STATUS=Charging
+POWER_SUPPLY_CHARGE_TYPE=Fast
+POWER_SUPPLY_HEALTH=Good
+POWER_SUPPLY_PRESENT=1
+POWER_SUPPLY_ONLINE=3
+POWER_SUPPLY_TECHNOLOGY=Li-ion
+POWER_SUPPLY_VOLTAGE_MAX_DESIGN=4350000
+POWER_SUPPLY_VOLTAGE_MIN_DESIGN=3400000
+POWER_SUPPLY_VOLTAGE_NOW=3926715
+POWER_SUPPLY_CAPACITY=14
+POWER_SUPPLY_CURRENT_MAX=1000000
+POWER_SUPPLY_CURRENT_NOW=736500
+POWER_SUPPLY_TEMP=308
+POWER_SUPPLY_ENERGY_FULL=1940000000
+POWER_SUPPLY_CHARGE_NOW=46573
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/capacity
+14
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/batt_temp_adc
+308
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/batt_vfocv
+3920
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/voltage_min_design
+3400000
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/voltage_max_design
+4350000
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/technology
+Li-ion
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/status
+Charging
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/battery/health
+Good
diff --git a/sources/sample/plugin_bat/log_darwin_1.txt b/sources/sample/plugin_bat/log_darwin_1.txt
new file mode 100644
index 0000000..913eeb3
--- /dev/null
+++ b/sources/sample/plugin_bat/log_darwin_1.txt
@@ -0,0 +1,41 @@
+---Sat, 11 May 2013 09:44:41 +0000 GMT--- Executing: ioreg -w0 -l -n AppleSmartBattery -r
++-o AppleSmartBattery
+ {
+ "TimeRemaining" = 0
+ "AvgTimeToEmpty" = 65535
+ "InstantTimeToEmpty" = 65535
+ "ExternalChargeCapable" = Yes
+ "CellVoltage" = (4185,4183,4184,0)
+ "PermanentFailureStatus" = 0
+ "BatteryInvalidWakeSeconds" = 30
+ "AdapterInfo" = 0
+ "MaxCapacity" = 5060
+ "Voltage" = 12552
+ "DesignCycleCount70" = 65535
+ "Manufacturer" = "DP"
+ "Location" = 0
+ "CurrentCapacity" = 5060
+ "LegacyBatteryInfo" = {"Amperage"=234,"Flags"=5,"Capacity"=5060,"Current"=5060,"Voltage"=12552,"Cycle Count"=548}
+ "FirmwareSerialNumber" = 60664
+ "BatteryInstalled" = Yes
+ "PackReserve" = 200
+ "CycleCount" = 548
+ "DesignCapacity" = 5770
+ "OperationStatus" = 58435
+ "ManufactureDate" = 15764
+ "AvgTimeToFull" = 0
+ "BatterySerialNumber" = "9G0520ESBD3MA"
+ "PostDischargeWaitSeconds" = 120
+ "Temperature" = 3062
+ "MaxErr" = 1
+ "ManufacturerData" = <000000000201000201580000024b3663033030310341544c00170000>
+ "FullyCharged" = Yes
+ "InstantAmperage" = 0
+ "DeviceName" = "bq20z451"
+ "IOGeneralInterest" = "IOCommand is not serializable"
+ "Amperage" = 234
+ "IsCharging" = No
+ "DesignCycleCount9C" = 1000
+ "PostChargeWaitSeconds" = 120
+ "ExternalConnected" = Yes
+ }
diff --git a/sources/sample/plugin_bat/log_freebsd_1.txt b/sources/sample/plugin_bat/log_freebsd_1.txt
new file mode 100644
index 0000000..61582b0
--- /dev/null
+++ b/sources/sample/plugin_bat/log_freebsd_1.txt
@@ -0,0 +1,18 @@
+---Sat, 11 May 2013 09:44:41 +0000 GMT--- Executing: acpiconf -i batt
+Design capacity: 50000 mWh
+Last full capacity: 50000 mWh
+Technology: secondary (rechargeable)
+Design voltage: 10000 mV
+Capacity (warn): 100 mWh
+Capacity (low): 50 mWh
+Low/warn granularity: 1 mWh
+Warn/full granularity: 1 mWh
+Model number: 1
+Serial number: 0
+Type: VBOX
+OEM info: innotek
+State: high
+Remaining capacity: 100%
+Remaining time: unknown
+Present rate: 0 mW
+Present voltage: 10000 mV
diff --git a/sources/sample/plugin_bat/log_freebsd_2.txt b/sources/sample/plugin_bat/log_freebsd_2.txt
new file mode 100644
index 0000000..c19ea76
--- /dev/null
+++ b/sources/sample/plugin_bat/log_freebsd_2.txt
@@ -0,0 +1,18 @@
+---Sat, 11 May 2013 09:44:41 +0000 GMT--- Executing: acpiconf -i batt
+Design capacity: 4800 mAh
+Last full capacity: 3824 mAh
+Technology: secondary (rechargeable)
+Design voltage: 14800 mV
+Capacity (warn): 240 mAh
+Capacity (low): 144 mAh
+Low/warn granularity: 264 mAh
+Warn/full granularity: 3780 mAh
+Model number: Primary
+Serial number:
+Type: Lion
+OEM info: ACER
+State: discharging
+Remaining capacity: 95%
+Remaining time: unknown
+Present rate: 0 mA
+Voltage: 16391 mV
diff --git a/sources/sample/plugin_bat/log_test_1.txt b/sources/sample/plugin_bat/log_test_1.txt
new file mode 100644
index 0000000..e758545
--- /dev/null
+++ b/sources/sample/plugin_bat/log_test_1.txt
@@ -0,0 +1,22 @@
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /proc/acpi/battery/BAT0/state
+present: yes
+capacity state: ok
+charging state: charged
+present rate: 0 mA
+remaining capacity: 1009 mAh
+present voltage: 12167 mV
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /proc/acpi/battery/BAT0/info
+present: yes
+design capacity: 4400 mAh
+last full capacity: 1009 mAh
+battery technology: rechargeable
+design voltage: 10800 mV
+design capacity warning: 220 mAh
+design capacity low: 132 mAh
+cycle count: 0
+capacity granularity 1: 264 mAh
+capacity granularity 2: 3780 mAh
+model number: Li_Ion_4000mA
+serial number: 0000
+battery type: Lion
+OEM info: SANYO
diff --git a/sources/sample/plugin_bat/log_test_2.txt b/sources/sample/plugin_bat/log_test_2.txt
new file mode 100644
index 0000000..4859889
--- /dev/null
+++ b/sources/sample/plugin_bat/log_test_2.txt
@@ -0,0 +1,22 @@
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /proc/acpi/battery/BAT0/state
+present: yes
+capacity state: ok
+charging state: charged
+present rate: 0 mW
+remaining capacity: 70380 mWh
+present voltage: 12400 mV
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /proc/acpi/battery/BAT0/info
+present: yes
+design capacity: 82280 mWh
+last full capacity: 72420 mWh
+battery technology: rechargeable
+design voltage: 10800 mV
+design capacity warning: 3621 mWh
+design capacity low: 200 mWh
+cycle count: 0
+capacity granularity 1: 1 mWh
+capacity granularity 2: 1 mWh
+model number: 92P1137
+serial number: 999
+battery type: LION
+OEM info: SANYO
diff --git a/sources/sample/plugin_bat/log_vbox.txt b/sources/sample/plugin_bat/log_vbox.txt
new file mode 100644
index 0000000..e9e6c08
--- /dev/null
+++ b/sources/sample/plugin_bat/log_vbox.txt
@@ -0,0 +1,31 @@
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/BAT0/uevent
+POWER_SUPPLY_NAME=BAT0
+POWER_SUPPLY_STATUS=Unknown
+POWER_SUPPLY_PRESENT=1
+POWER_SUPPLY_TECHNOLOGY=Unknown
+POWER_SUPPLY_CYCLE_COUNT=0
+POWER_SUPPLY_VOLTAGE_MIN_DESIGN=10000000
+POWER_SUPPLY_VOLTAGE_NOW=10000000
+POWER_SUPPLY_POWER_NOW=0
+POWER_SUPPLY_ENERGY_FULL_DESIGN=50000000
+POWER_SUPPLY_ENERGY_FULL=50000000
+POWER_SUPPLY_ENERGY_NOW=49000000
+POWER_SUPPLY_CAPACITY=98
+POWER_SUPPLY_CAPACITY_LEVEL=Normal
+POWER_SUPPLY_MODEL_NAME=1
+POWER_SUPPLY_MANUFACTURER=innotek
+POWER_SUPPLY_SERIAL_NUMBER=0
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/BAT0/voltage_min_design
+10000000
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/BAT0/voltage_now
+10000000
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/BAT0/energy_full
+50000000
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/BAT0/energy_now
+49000000
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/BAT0/capacity
+98
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/BAT0/technology
+Unknown
+---Sun, 12 May 2013 18:32:54 +0000 GMT--- Reading: /sys/class/power_supply/BAT0/status
+Unknown
diff --git a/sources/sample/plugin_dmraid/dmraid1.txt b/sources/sample/plugin_dmraid/dmraid1.txt
new file mode 100644
index 0000000..0abe975
--- /dev/null
+++ b/sources/sample/plugin_dmraid/dmraid1.txt
@@ -0,0 +1,98 @@
+NOTICE: /dev/sde: asr discovering
+NOTICE: /dev/sde: ddf1 discovering
+NOTICE: /dev/sde: hpt37x discovering
+NOTICE: /dev/sde: hpt45x discovering
+NOTICE: /dev/sde: isw discovering
+NOTICE: /dev/sde: isw metadata discovered
+NOTICE: /dev/sde: jmicron discovering
+NOTICE: /dev/sde: lsi discovering
+NOTICE: /dev/sde: nvidia discovering
+NOTICE: /dev/sde: pdc discovering
+NOTICE: /dev/sde: sil discovering
+NOTICE: /dev/sde: via discovering
+NOTICE: /dev/sdf: asr discovering
+NOTICE: /dev/sdf: ddf1 discovering
+NOTICE: /dev/sdf: hpt37x discovering
+NOTICE: /dev/sdf: hpt45x discovering
+NOTICE: /dev/sdf: isw discovering
+NOTICE: /dev/sdf: isw metadata discovered
+NOTICE: /dev/sdf: jmicron discovering
+NOTICE: /dev/sdf: lsi discovering
+NOTICE: /dev/sdf: nvidia discovering
+NOTICE: /dev/sdf: pdc discovering
+NOTICE: /dev/sdf: sil discovering
+NOTICE: /dev/sdf: via discovering
+NOTICE: /dev/sdb: asr discovering
+NOTICE: /dev/sdb: ddf1 discovering
+NOTICE: /dev/sdb: hpt37x discovering
+NOTICE: /dev/sdb: hpt45x discovering
+NOTICE: /dev/sdb: isw discovering
+NOTICE: /dev/sdb: isw metadata discovered
+NOTICE: /dev/sdb: jmicron discovering
+NOTICE: /dev/sdb: lsi discovering
+NOTICE: /dev/sdb: nvidia discovering
+NOTICE: /dev/sdb: pdc discovering
+NOTICE: /dev/sdb: sil discovering
+NOTICE: /dev/sdb: via discovering
+NOTICE: /dev/sda: asr discovering
+NOTICE: /dev/sda: ddf1 discovering
+NOTICE: /dev/sda: hpt37x discovering
+NOTICE: /dev/sda: hpt45x discovering
+NOTICE: /dev/sda: isw discovering
+NOTICE: /dev/sda: isw metadata discovered
+NOTICE: /dev/sda: jmicron discovering
+NOTICE: /dev/sda: lsi discovering
+NOTICE: /dev/sda: nvidia discovering
+NOTICE: /dev/sda: pdc discovering
+NOTICE: /dev/sda: sil discovering
+NOTICE: /dev/sda: via discovering
+NOTICE: /dev/sdc: asr discovering
+NOTICE: /dev/sdc: ddf1 discovering
+NOTICE: /dev/sdc: hpt37x discovering
+NOTICE: /dev/sdc: hpt45x discovering
+NOTICE: /dev/sdc: isw discovering
+NOTICE: /dev/sdc: isw metadata discovered
+NOTICE: /dev/sdc: jmicron discovering
+NOTICE: /dev/sdc: lsi discovering
+NOTICE: /dev/sdc: nvidia discovering
+NOTICE: /dev/sdc: pdc discovering
+NOTICE: /dev/sdc: sil discovering
+NOTICE: /dev/sdc: via discovering
+NOTICE: /dev/sdd: asr discovering
+NOTICE: /dev/sdd: ddf1 discovering
+NOTICE: /dev/sdd: hpt37x discovering
+NOTICE: /dev/sdd: hpt45x discovering
+NOTICE: /dev/sdd: isw discovering
+NOTICE: /dev/sdd: isw metadata discovered
+NOTICE: /dev/sdd: jmicron discovering
+NOTICE: /dev/sdd: lsi discovering
+NOTICE: /dev/sdd: nvidia discovering
+NOTICE: /dev/sdd: pdc discovering
+NOTICE: /dev/sdd: sil discovering
+NOTICE: /dev/sdd: via discovering
+NOTICE: added /dev/sde to RAID set "isw_jffegbfhc"
+NOTICE: added /dev/sdf to RAID set "isw_jffegbfhc"
+NOTICE: added /dev/sdb to RAID set "isw_deagibdgda"
+NOTICE: added /dev/sda to RAID set "isw_deagibdgda"
+NOTICE: added /dev/sdc to RAID set "isw_jffegbfhc"
+NOTICE: added /dev/sdd to RAID set "isw_jffegbfhc"
+*** Group superset isw_deagibdgda
+--> Active Subset
+name : isw_deagibdgda_root
+size : 125040896
+stride : 128
+type : mirror
+status : ok
+subsets: 0
+devs : 2
+spares : 0
+*** Group superset isw_jffegbfhc
+--> Active Superset
+name : isw_jffegbfhc_data
+size : 3131113472
+stride : 128
+type : raid01
+status : ok
+subsets: 2
+devs : 4
+spares : 0
diff --git a/sources/sample/plugin_dmraid/dmraid2.txt b/sources/sample/plugin_dmraid/dmraid2.txt
new file mode 100644
index 0000000..589aa6b
--- /dev/null
+++ b/sources/sample/plugin_dmraid/dmraid2.txt
@@ -0,0 +1,121 @@
+ERROR: ddf1: seeking device "/dev/dm-4" to 18446744073709421056
+ERROR: hpt37x: seeking device "/dev/dm-4" to 4608
+ERROR: hpt45x: seeking device "/dev/dm-4" to 18446744073709547008
+ERROR: pdc: seeking device "/dev/dm-4" to 137438913024
+ERROR: pdc: seeking device "/dev/dm-4" to 137438920192
+ERROR: pdc: seeking device "/dev/dm-4" to 137438927360
+ERROR: pdc: seeking device "/dev/dm-4" to 137438934528
+ERROR: sil: seeking device "/dev/dm-4" to 18446744073709289984
+NOTICE: /dev/dm-5: asr discovering
+NOTICE: /dev/dm-5: ddf1 discovering
+NOTICE: /dev/dm-5: hpt37x discovering
+NOTICE: /dev/dm-5: hpt45x discovering
+NOTICE: /dev/dm-5: isw discovering
+NOTICE: /dev/dm-5: jmicron discovering
+NOTICE: /dev/dm-5: lsi discovering
+NOTICE: /dev/dm-5: nvidia discovering
+NOTICE: /dev/dm-5: pdc discovering
+NOTICE: /dev/dm-5: sil discovering
+NOTICE: /dev/dm-5: via discovering
+NOTICE: /dev/dm-4: asr discovering
+NOTICE: /dev/dm-4: ddf1 discovering
+NOTICE: /dev/dm-4: hpt37x discovering
+NOTICE: /dev/dm-4: hpt45x discovering
+NOTICE: /dev/dm-4: isw discovering
+NOTICE: /dev/dm-4: jmicron discovering
+NOTICE: /dev/dm-4: lsi discovering
+NOTICE: /dev/dm-4: nvidia discovering
+NOTICE: /dev/dm-4: pdc discovering
+NOTICE: /dev/dm-4: sil discovering
+NOTICE: /dev/dm-4: via discovering
+NOTICE: /dev/dm-3: asr discovering
+NOTICE: /dev/dm-3: ddf1 discovering
+NOTICE: /dev/dm-3: hpt37x discovering
+NOTICE: /dev/dm-3: hpt45x discovering
+NOTICE: /dev/dm-3: isw discovering
+NOTICE: /dev/dm-3: jmicron discovering
+NOTICE: /dev/dm-3: lsi discovering
+NOTICE: /dev/dm-3: nvidia discovering
+NOTICE: /dev/dm-3: pdc discovering
+NOTICE: /dev/dm-3: sil discovering
+NOTICE: /dev/dm-3: via discovering
+NOTICE: /dev/dm-2: asr discovering
+NOTICE: /dev/dm-2: ddf1 discovering
+NOTICE: /dev/dm-2: hpt37x discovering
+NOTICE: /dev/dm-2: hpt45x discovering
+NOTICE: /dev/dm-2: isw discovering
+NOTICE: /dev/dm-2: jmicron discovering
+NOTICE: /dev/dm-2: lsi discovering
+NOTICE: /dev/dm-2: nvidia discovering
+NOTICE: /dev/dm-2: pdc discovering
+NOTICE: /dev/dm-2: sil discovering
+NOTICE: /dev/dm-2: via discovering
+NOTICE: /dev/dm-1: asr discovering
+NOTICE: /dev/dm-1: ddf1 discovering
+NOTICE: /dev/dm-1: hpt37x discovering
+NOTICE: /dev/dm-1: hpt45x discovering
+NOTICE: /dev/dm-1: isw discovering
+NOTICE: /dev/dm-1: jmicron discovering
+NOTICE: /dev/dm-1: lsi discovering
+NOTICE: /dev/dm-1: nvidia discovering
+NOTICE: /dev/dm-1: pdc discovering
+NOTICE: /dev/dm-1: sil discovering
+NOTICE: /dev/dm-1: via discovering
+NOTICE: /dev/dm-0: asr discovering
+NOTICE: /dev/dm-0: ddf1 discovering
+NOTICE: /dev/dm-0: hpt37x discovering
+NOTICE: /dev/dm-0: hpt45x discovering
+NOTICE: /dev/dm-0: isw discovering
+NOTICE: /dev/dm-0: jmicron discovering
+NOTICE: /dev/dm-0: lsi discovering
+NOTICE: /dev/dm-0: nvidia discovering
+NOTICE: /dev/dm-0: pdc discovering
+NOTICE: /dev/dm-0: sil discovering
+NOTICE: /dev/dm-0: via discovering
+NOTICE: /dev/sda: asr discovering
+NOTICE: /dev/sda: ddf1 discovering
+NOTICE: /dev/sda: hpt37x discovering
+NOTICE: /dev/sda: hpt45x discovering
+NOTICE: /dev/sda: isw discovering
+NOTICE: /dev/sda: jmicron discovering
+NOTICE: /dev/sda: lsi discovering
+NOTICE: /dev/sda: nvidia discovering
+NOTICE: /dev/sda: pdc discovering
+NOTICE: /dev/sda: sil discovering
+NOTICE: /dev/sda: via discovering
+NOTICE: /dev/sdc: asr discovering
+NOTICE: /dev/sdc: ddf1 discovering
+NOTICE: /dev/sdc: ddf1 metadata discovered
+NOTICE: /dev/sdc: hpt37x discovering
+NOTICE: /dev/sdc: hpt45x discovering
+NOTICE: /dev/sdc: isw discovering
+NOTICE: /dev/sdc: jmicron discovering
+NOTICE: /dev/sdc: lsi discovering
+NOTICE: /dev/sdc: nvidia discovering
+NOTICE: /dev/sdc: pdc discovering
+NOTICE: /dev/sdc: sil discovering
+NOTICE: /dev/sdc: via discovering
+NOTICE: /dev/sdb: asr discovering
+NOTICE: /dev/sdb: ddf1 discovering
+NOTICE: /dev/sdb: ddf1 metadata discovered
+NOTICE: /dev/sdb: hpt37x discovering
+NOTICE: /dev/sdb: hpt45x discovering
+NOTICE: /dev/sdb: isw discovering
+NOTICE: /dev/sdb: jmicron discovering
+NOTICE: /dev/sdb: lsi discovering
+NOTICE: /dev/sdb: nvidia discovering
+NOTICE: /dev/sdb: pdc discovering
+NOTICE: /dev/sdb: sil discovering
+NOTICE: /dev/sdb: via discovering
+NOTICE: added /dev/sdc to RAID set ".ddf1_disks"
+NOTICE: added /dev/sdb to RAID set ".ddf1_disks"
+*** Group superset .ddf1_disks
+--> Active Subset
+name : ddf1_RAID1
+size : 1953253376
+stride : 128
+type : mirror
+status : ok
+subsets: 0
+devs : 2
+spares : 0
diff --git a/sources/sample/plugin_dmraid/dmraid3.txt b/sources/sample/plugin_dmraid/dmraid3.txt
new file mode 100644
index 0000000..632da97
--- /dev/null
+++ b/sources/sample/plugin_dmraid/dmraid3.txt
@@ -0,0 +1,22 @@
+ERROR: pdc: device /dev/hde broken in RAID set "pdc_bfcgjjgge" [1/2]
+ERROR: keeping degraded mirror set "pdc_bfcgjjgge"
+ERROR: pdc: device /dev/hdg broken in RAID set "pdc_dibachbhfh" [1/2]
+ERROR: keeping degraded mirror set "pdc_dibachbhfh"
+*** Set
+name : pdc_bfcgjjgge
+size : 78150656
+stride : 128
+type : mirror
+status : broken
+subsets: 0
+devs : 1
+spares : 0
+*** Set
+name : pdc_dibachbhfh
+size : 78150656
+stride : 128
+type : mirror
+status : broken
+subsets: 0
+devs : 1
+spares : 0
diff --git a/sources/sample/plugin_dmraid/dmraid4.txt b/sources/sample/plugin_dmraid/dmraid4.txt
new file mode 100644
index 0000000..442940d
--- /dev/null
+++ b/sources/sample/plugin_dmraid/dmraid4.txt
@@ -0,0 +1,63 @@
+NOTICE: skipping removable device /dev/sdd
+NOTICE: skipping removable device /dev/sde
+NOTICE: skipping removable device /dev/sdf
+NOTICE: skipping removable device /dev/sdg
+NOTICE: /dev/sdc: asr discovering
+NOTICE: /dev/sdc: ddf1 discovering
+NOTICE: /dev/sdc: hpt37x discovering
+NOTICE: /dev/sdc: hpt45x discovering
+NOTICE: /dev/sdc: isw discovering
+NOTICE: /dev/sdc: isw metadata discovered
+NOTICE: /dev/sdc: jmicron discovering
+NOTICE: /dev/sdc: lsi discovering
+NOTICE: /dev/sdc: nvidia discovering
+NOTICE: /dev/sdc: pdc discovering
+NOTICE: /dev/sdc: sil discovering
+NOTICE: /dev/sdc: via discovering
+NOTICE: /dev/sdb: asr discovering
+NOTICE: /dev/sdb: ddf1 discovering
+NOTICE: /dev/sdb: hpt37x discovering
+NOTICE: /dev/sdb: hpt45x discovering
+NOTICE: /dev/sdb: isw discovering
+NOTICE: /dev/sdb: isw metadata discovered
+NOTICE: /dev/sdb: jmicron discovering
+NOTICE: /dev/sdb: lsi discovering
+NOTICE: /dev/sdb: nvidia discovering
+NOTICE: /dev/sdb: pdc discovering
+NOTICE: /dev/sdb: sil discovering
+NOTICE: /dev/sdb: via discovering
+NOTICE: /dev/sda: asr discovering
+NOTICE: /dev/sda: ddf1 discovering
+NOTICE: /dev/sda: hpt37x discovering
+NOTICE: /dev/sda: hpt45x discovering
+NOTICE: /dev/sda: isw discovering
+NOTICE: /dev/sda: jmicron discovering
+NOTICE: /dev/sda: lsi discovering
+NOTICE: /dev/sda: nvidia discovering
+NOTICE: /dev/sda: pdc discovering
+NOTICE: /dev/sda: sil discovering
+NOTICE: /dev/sda: via discovering
+NOTICE: added /dev/sdc to RAID set "isw_bfdbhjciee"
+NOTICE: added /dev/sdb to RAID set "isw_bccajebghh"
+ERROR: isw: wrong number of devices in RAID set "isw_bccajebghh_DATA" [1/2] on /dev/sdb
+ERROR: isw: wrong number of devices in RAID set "isw_bfdbhjciee_DATA" [1/2] on /dev/sdc
+*** Group superset isw_bccajebghh
+--> *Inconsistent* Subset
+name : isw_bccajebghh_DATA
+size : 1953519872
+stride : 128
+type : mirror
+status : inconsistent
+subsets: 0
+devs : 1
+spares : 0
+*** Group superset isw_bfdbhjciee
+--> *Inconsistent* Subset
+name : isw_bfdbhjciee_DATA
+size : 1953519872
+stride : 128
+type : mirror
+status : inconsistent
+subsets: 0
+devs : 1
+spares : 0
diff --git a/sources/sample/plugin_dmraid/dmraid5.txt b/sources/sample/plugin_dmraid/dmraid5.txt
new file mode 100644
index 0000000..29b7e8b
--- /dev/null
+++ b/sources/sample/plugin_dmraid/dmraid5.txt
@@ -0,0 +1,31 @@
+NOTICE: added /dev/sdd to RAID set "pdc_cifgjhgjdd-1"
+NOTICE: added /dev/sde to RAID set "pdc_cifgjhgjdd-1"
+NOTICE: added /dev/sdc to RAID set "pdc_cifgjhgjdd-0"
+NOTICE: added /dev/sdb to RAID set "pdc_cifgjhgjdd-0"
+*** Active Superset
+name : pdc_cifgjhgjdd
+size : 3517532672
+stride : 128
+type : raid10
+status : ok
+subsets: 2
+devs : 4
+spares : 0
+--> Active Subset
+name : pdc_cifgjhgjdd-0
+size : 3517532672
+stride : 128
+type : stripe
+status : ok
+subsets: 0
+devs : 2
+spares : 0
+--> Active Subset
+name : pdc_cifgjhgjdd-1
+size : 3517532672
+stride : 128
+type : stripe
+status : ok
+subsets: 0
+devs : 2
+spares : 0
diff --git a/sources/sample/plugin_mdstat/README b/sources/sample/plugin_mdstat/README
new file mode 100644
index 0000000..0e83202
--- /dev/null
+++ b/sources/sample/plugin_mdstat/README
@@ -0,0 +1,2 @@
+FILE CONTENT OF
+raid cat /proc/mdstat
diff --git a/sources/sample/plugin_mdstat/raid1.txt b/sources/sample/plugin_mdstat/raid1.txt
new file mode 100644
index 0000000..533509d
--- /dev/null
+++ b/sources/sample/plugin_mdstat/raid1.txt
@@ -0,0 +1,5 @@
+Personalities : [linear] [raid0] [raid1] [raid5] [hsm]
+read_ahead 1024 sectors
+md0 : active raid5 sdd1[3] sdc6[2] sdb6[1] sda5[0] 633984 blocks
+ level 5, 32k chunk, algorithm 2 [4/4] [UUUU]
+unused devices:
diff --git a/sources/sample/plugin_mdstat/raid10.txt b/sources/sample/plugin_mdstat/raid10.txt
new file mode 100644
index 0000000..053b3e1
--- /dev/null
+++ b/sources/sample/plugin_mdstat/raid10.txt
@@ -0,0 +1,6 @@
+Personalities : [raid6] [raid5] [raid4]
+md0 : active raid5 sdb[5] sda[0] sdd[4] sdc[2]
+ 2197329408 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/3] [U_UU]
+ [>....................] recovery = 0.0% (683200/732443136) finish=592.4min speed=20586K/sec
+
+unused devices:
diff --git a/sources/sample/plugin_mdstat/raid11.txt b/sources/sample/plugin_mdstat/raid11.txt
new file mode 100644
index 0000000..a88a371
--- /dev/null
+++ b/sources/sample/plugin_mdstat/raid11.txt
@@ -0,0 +1,6 @@
+Personalities : [raid6] [raid5] [raid4]
+md0 : active raid5 sdb[5] sda[0] sdd[4] sdc[2]
+ 2197329408 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/3] [U_UU]
+ [>....................] recovery = 2.5% (18700800/732443136) finish=742.1min speed=16028K/sec
+
+unused devices:
diff --git a/sources/sample/plugin_mdstat/raid12.txt b/sources/sample/plugin_mdstat/raid12.txt
new file mode 100644
index 0000000..217a9e8
--- /dev/null
+++ b/sources/sample/plugin_mdstat/raid12.txt
@@ -0,0 +1,6 @@
+Personalities : [raid6] [raid5] [raid4]
+md0 : active raid5 sdb[5] sda[0] sdd[4] sdc[2]
+ 2197329408 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/3] [U_UU]
+ [===>.................] recovery = 18.9% (138755104/732443136) finish=482.8min speed=20493K/sec
+
+unused devices:
diff --git a/sources/sample/plugin_mdstat/raid2.txt b/sources/sample/plugin_mdstat/raid2.txt
new file mode 100644
index 0000000..bbdb233
--- /dev/null
+++ b/sources/sample/plugin_mdstat/raid2.txt
@@ -0,0 +1,5 @@
+Personalities : [linear] [raid0] [raid1] [raid5] [hsm]
+read_ahead 1024 sectors
+md0 : active raid5 sdd1[3](F) sdc6[2] sdb6[1] sda5[0] 633984 blocks
+ level 5, 32k chunk, algorithm 2 [4/3] [UUU_]
+unused devices:
diff --git a/sources/sample/plugin_mdstat/raid3.txt b/sources/sample/plugin_mdstat/raid3.txt
new file mode 100644
index 0000000..ad14f7e
--- /dev/null
+++ b/sources/sample/plugin_mdstat/raid3.txt
@@ -0,0 +1,5 @@
+Personalities : [linear] [raid0] [raid1] [raid5] [hsm]
+read_ahead 1024 sectors
+md0 : active raid5 sdc6[2] sdb6[1] sda5[0] 633984 blocks level 5,
+ 32k chunk, algorithm 2 [4/3] [UUU_]
+unused devices:
diff --git a/sources/sample/plugin_mdstat/raid4.txt b/sources/sample/plugin_mdstat/raid4.txt
new file mode 100644
index 0000000..af205e5
--- /dev/null
+++ b/sources/sample/plugin_mdstat/raid4.txt
@@ -0,0 +1,6 @@
+Personalities : [linear] [raid0] [raid1] [raid5] [hsm]
+read_ahead 1024 sectors
+md0 : active raid5 sdd1[4] sdc6[2] sdb6[1] sda5[0] 633984 blocks
+ level 5, 32k chunk, algorithm 2 [4/3] [UUU_] recovery=7%
+finish=4.3min
+unused devices:
diff --git a/sources/sample/plugin_mdstat/raid5.txt b/sources/sample/plugin_mdstat/raid5.txt
new file mode 100644
index 0000000..533509d
--- /dev/null
+++ b/sources/sample/plugin_mdstat/raid5.txt
@@ -0,0 +1,5 @@
+Personalities : [linear] [raid0] [raid1] [raid5] [hsm]
+read_ahead 1024 sectors
+md0 : active raid5 sdd1[3] sdc6[2] sdb6[1] sda5[0] 633984 blocks
+ level 5, 32k chunk, algorithm 2 [4/4] [UUUU]
+unused devices:
diff --git a/sources/sample/plugin_mdstat/raid6.txt b/sources/sample/plugin_mdstat/raid6.txt
new file mode 100644
index 0000000..8a8480c
--- /dev/null
+++ b/sources/sample/plugin_mdstat/raid6.txt
@@ -0,0 +1,6 @@
+Personalities : [raid6] [raid5] [raid4]
+md1 : active raid5 hdc4[3] hdc3[1] hdc2[0]
+ 3906816 blocks level 5, 64k chunk, algorithm 2 [3/2] [UU_]
+ [===>.................] recovery = 16.5% (324080/1953408) finish=8.1min speed=3315K/sec
+
+unused devices:
diff --git a/sources/sample/plugin_mdstat/raid7.txt b/sources/sample/plugin_mdstat/raid7.txt
new file mode 100644
index 0000000..1df749a
--- /dev/null
+++ b/sources/sample/plugin_mdstat/raid7.txt
@@ -0,0 +1,5 @@
+Personalities : [raid6] [raid5] [raid4]
+md0 : active raid5 sdi1[3] sde1[2] sdd1[1] sdc1[0]
+ 2197715712 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]
+
+unused devices:
diff --git a/sources/sample/plugin_mdstat/raid8.txt b/sources/sample/plugin_mdstat/raid8.txt
new file mode 100644
index 0000000..35192da
--- /dev/null
+++ b/sources/sample/plugin_mdstat/raid8.txt
@@ -0,0 +1,11 @@
+Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
+md1 : active raid1 sdb2[2](F) sda2[1]
+ 155181952 blocks super 1.2 [2/1] [_U]
+
+md0 : active raid1 sdb1[2] sda1[1]
+ 975296 blocks super 1.2 [2/2] [UU]
+
+md2 : active raid5 sdf1[3] sdc1[0] sdd1[1] sde1[2]
+ 1464758784 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]
+
+unused devices:
diff --git a/sources/sample/plugin_mdstat/raid9.txt b/sources/sample/plugin_mdstat/raid9.txt
new file mode 100644
index 0000000..8e147f9
--- /dev/null
+++ b/sources/sample/plugin_mdstat/raid9.txt
@@ -0,0 +1,6 @@
+Personalities : [raid6] [raid5] [raid4]
+md0 : active raid6 sda1[0] sdd1[4] sde1[5] sdf1[2] sdb1[1]
+ 2929683456 blocks super 1.2 level 6, 1024k chunk, algorithm 2 [5/5] [UUUUU]
+ bitmap: 0/8 pages [0KB], 65536KB chunk, file: /var/md0_intent
+
+unused devices:
diff --git a/sources/sample/plugin_ps/README b/sources/sample/plugin_ps/README
new file mode 100644
index 0000000..381b936
--- /dev/null
+++ b/sources/sample/plugin_ps/README
@@ -0,0 +1,3 @@
+FILE CONTENT OF
+ps1 ps -eo pid,ppid,pmem,args
+ps2 ps axo pid,ppid,pmem,args
diff --git a/sources/sample/plugin_ps/ps1.txt b/sources/sample/plugin_ps/ps1.txt
new file mode 100644
index 0000000..119dd9a
--- /dev/null
+++ b/sources/sample/plugin_ps/ps1.txt
@@ -0,0 +1,39 @@
+ PID PPID %MEM COMMAND
+ 1 0 0.0 init [2]
+31822 1 0.0 /sbin/syslogd
+31847 1 0.0 /sbin/klogd -x
+31861 1 0.0 /usr/sbin/sshd
+ 1357 1 4.3 amavisd (master)
+ 1918 1 0.3 ddclient - sleeping for 50 seconds
+ 1923 1 1.0 /usr/bin/memcached -m 64 -p 11211 -u root
+ 2001 1 0.1 /usr/lib/postfix/master
+ 2006 1 0.0 /usr/sbin/vsftpd
+ 2010 2001 0.1 qmgr -l -t fifo -u
+ 2037 1 0.0 /usr/sbin/cron
+ 3516 1 0.3 /usr/sbin/munin-node
+ 3576 1 0.2 /usr/bin/fetchmail -f /etc/fetchmailrc --pidfile /var/run/fetchmail/fetchmail.pid --syslog
+ 5266 2001 0.1 tlsmgr -l -t unix -u -c
+32604 1 0.8 /usr/sbin/apache2 -k start
+ 3097 1 0.0 /usr/bin/freshclam -d --quiet
+ 3599 1 8.7 /usr/sbin/clamd
+13505 1 0.0 /bin/sh /usr/bin/mysqld_safe
+13545 13505 2.6 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking --port=3306 --socket=/var/run/mysqld/mysqld.sock
+13546 13505 0.0 logger -p daemon.err -t mysqld_safe -i -t mysqld
+13988 1 0.0 /usr/sbin/dovecot
+13989 13988 0.1 dovecot-auth
+14041 13988 0.1 managesieve-login
+14042 13988 0.1 managesieve-login
+30094 13988 0.1 managesieve-login
+15381 1357 4.5 amavisd (ch19-avail)
+16215 13988 0.2 dovecot-auth -w
+ 6095 2001 0.1 pickup -l -t fifo -u -c
+ 9846 1357 4.4 amavisd (ch1-avail)
+11585 13988 0.1 imap-login
+22385 13988 0.1 imap-login
+22421 32604 1.9 /usr/sbin/apache2 -k start
+22424 32604 1.5 /usr/sbin/apache2 -k start
+22425 32604 1.1 /usr/sbin/apache2 -k start
+22432 32604 1.1 /usr/sbin/apache2 -k start
+22433 32604 0.5 /usr/sbin/apache2 -k start
+25851 13988 0.1 imap-login
+26454 22424 0.0 ps -eo pid,ppid,pmem,args
diff --git a/sources/sample/plugin_ps/ps2.txt b/sources/sample/plugin_ps/ps2.txt
new file mode 100644
index 0000000..8ea7815
--- /dev/null
+++ b/sources/sample/plugin_ps/ps2.txt
@@ -0,0 +1,127 @@
+ PID PPID %MEM COMMAND
+ 1 0 0.0 init [5]
+ 2 0 0.0 [kthreadd]
+ 3 2 0.0 [migration/0]
+ 4 2 0.0 [ksoftirqd/0]
+ 5 2 0.0 [events/0]
+ 6 2 0.0 [khelper]
+ 7 2 0.0 [kintegrityd/0]
+ 8 2 0.0 [kblockd/0]
+ 9 2 0.0 [kacpid]
+ 10 2 0.0 [kacpi_notify]
+ 11 2 0.0 [cqueue]
+ 12 2 0.0 [kseriod]
+ 13 2 0.0 [kondemand/0]
+ 14 2 0.0 [pdflush]
+ 15 2 0.0 [pdflush]
+ 16 2 0.0 [kswapd0]
+ 17 2 0.0 [aio/0]
+ 18 2 0.0 [kpsmoused]
+ 54 2 0.0 [ata/0]
+ 55 2 0.0 [ata_aux]
+ 57 2 0.0 [scsi_eh_0]
+ 58 2 0.0 [scsi_eh_1]
+ 202 2 0.0 [ksuspend_usbd]
+ 203 2 0.0 [khubd]
+ 510 2 0.0 [kjournald]
+ 592 1 0.0 /sbin/udevd --daemon
+ 818 2 0.0 [scsi_eh_2]
+ 819 2 0.0 [usb-storage]
+ 1303 2 0.0 [kauditd]
+ 1326 2 0.0 [kstriped]
+ 1363 2 0.0 [kjournald]
+ 1385 1 0.0 /sbin/mount.ntfs-3g /dev/sda1 /windows/C -v -o rw,noexec,nosuid,nodev,users,gid=100,fmask=133,dmask=022,locale=de_DE.UTF-8
+ 1808 1 0.0 /sbin/acpid
+ 1827 1 0.0 /sbin/klogd -c 1 -x
+ 1843 1 0.0 /sbin/syslog-ng
+ 1853 1 0.0 /bin/dbus-daemon --system
+ 1982 1 0.2 /usr/sbin/hald --daemon=yes
+ 1991 1 0.1 /usr/sbin/console-kit-daemon
+ 2054 1982 0.0 hald-runner
+ 2129 2054 0.0 hald-addon-input: Listening on /dev/input/event4 /dev/input/event3 /dev/input/event2 /dev/input/event1
+ 2223 2054 0.0 hald-addon-storage: no polling on /dev/fd0 because it is explicitly disabled
+ 2234 2054 0.0 hald-addon-storage: polling /dev/sdb (every 2 sec)
+ 2235 2054 0.0 hald-addon-storage: polling /dev/sdc (every 2 sec)
+ 2238 2054 0.0 hald-addon-storage: polling /dev/sr0 (every 2 sec)
+ 2246 2054 0.0 hald-addon-acpi: listening on acpid socket /var/run/acpid.socket
+ 2478 1 0.0 /usr/bin/kdm
+ 2492 2478 3.0 /usr/bin/Xorg -br -nolisten tcp :0 vt7 -auth /var/lib/xdm/authdir/authfiles/A:0-StlX1E
+ 2873 1 0.0 /sbin/dhcpcd --netconfig -L -E -c /etc/sysconfig/network/scripts/dhcpcd-hook -t 0 -h linux-mcr eth0
+ 2911 1 0.0 /sbin/rpcbind
+ 3381 1 0.2 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf
+ 3382 3381 0.3 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf
+ 3383 3381 0.3 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf
+ 3401 1 0.0 /sbin/auditd -s disable
+ 3404 3401 0.0 /sbin/audispd
+ 3422 1 0.0 avahi-daemon: running [linux-mcr.local]
+ 3482 1 0.1 /usr/sbin/cupsd
+ 3671 1 0.0 /usr/sbin/nscd
+ 3701 1 0.0 /usr/sbin/ntpd -p /var/run/ntp/ntpd.pid -g -u ntp:ntp -i /var/lib/ntp -c /etc/ntp.conf
+ 3761 1 0.0 /usr/sbin/smartd
+ 3774 1 0.0 /usr/lib/postfix/master
+ 3800 1 0.0 /usr/sbin/cron
+ 3823 3774 0.0 pickup -l -t fifo -u
+ 3824 3774 0.0 qmgr -l -t fifo -u
+ 3843 1 0.0 /usr/sbin/sshd -o PidFile=/var/run/sshd.init.pid
+ 3959 1 0.0 /sbin/mingetty --noclear tty1
+ 3961 1 0.0 /sbin/mingetty tty2
+ 3963 1 0.0 /sbin/mingetty tty3
+ 3965 1 0.0 /sbin/mingetty tty4
+ 3975 1 0.0 /sbin/mingetty tty5
+ 3976 1 0.0 /sbin/mingetty tty6
+ 4730 2478 0.1 -:0
+ 4752 1 0.0 /bin/dbus-daemon --fork --print-pid 5 --print-address 7 --session
+ 4753 1 0.0 dbus-launch --autolaunch 9fe5b43331dd16711f578ff44a61a184 --binary-syntax --close-stderr
+ 4777 4730 0.0 /bin/sh /usr/bin/startkde
+ 4960 1 0.0 /bin/dbus-daemon --fork --print-pid 5 --print-address 7 --session
+ 4961 1 0.0 dbus-launch --sh-syntax --exit-with-session
+ 4966 1 0.2 kdeinit4: kdeinit4 Running...
+ 4967 4966 0.5 klauncher
+ 4969 1 1.0 kded4
+ 5008 4777 0.0 kwrapper4 ksmserver
+ 5009 4966 1.4 ksmserver
+ 5011 5009 1.7 kwin -session 1015110b9fd8000124791360500000100220000_1247938211_215332
+ 5017 1 1.7 /usr/bin/knotify4
+ 5018 1 1.5 /usr/bin/krunner
+ 5020 1 2.0 /usr/bin/plasma
+ 5024 1 0.5 /usr/bin/nepomukserver
+ 5026 5024 0.6 /usr/bin/nepomukservicestub nepomukstorage
+ 5027 5024 0.4 /usr/bin/nepomukservicestub nepomukfilewatch
+ 5028 5024 0.4 /usr/bin/nepomukservicestub nepomukontologyloader
+ 5030 1 0.4 /usr/bin/kaccess
+ 5044 4966 0.5 /usr/bin/policykit-kde
+ 5046 1 0.2 /usr/bin/pulseaudio --start
+ 5053 1 1.1 beagled /usr/lib/beagle/BeagleDaemon.exe --replace --bg
+ 5059 1 0.6 /usr/bin/kupdateapplet
+ 5060 1 0.7 /usr/bin/kmix
+ 5062 1 0.5 /usr/bin/klipper
+ 5083 1 0.0 /usr/lib/kde4/libexec/kdesud
+ 5309 1 2.3 amarokapp
+ 5312 1 0.2 kdeinit Running...
+ 5316 1 0.1 dcopserver [kdeinit] --nosid --suicide
+ 5318 5312 0.3 klauncher [kdeinit] --new-startup
+ 5320 1 0.5 kded [kdeinit] --new-startup
+ 5342 5312 0.2 kio_file [kdeinit] file /tmp/ksocket-BigMic
+ 5346 5309 0.5 yauap -noexit
+ 5356 5309 0.1 ruby /opt/kde3/share/apps/amarok/scripts/score_default/score_default.rb
+ 5440 1 0.4 knotify [kdeinit]
+ 5465 1 0.4 /usr/bin/kwalletd
+ 5495 1 1.0 beagled-helper /usr/lib/beagle/IndexHelper.exe
+ 5536 1 0.6 kio_uiserver [kdeinit]
+ 5621 1 1.1 /usr/bin/konsole
+ 5623 5621 0.1 /bin/bash
+ 5648 3381 0.3 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf
+ 5661 3381 0.3 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf
+ 5710 5623 0.2 /usr/bin/mc -P /tmp/mc-BigMichi1/mc.pwd.5623
+ 5712 5710 0.1 bash -rcfile .bashrc
+ 6305 4966 0.2 kdeinit4: kio_file [kdeinit] file local:/tmp/ksocket-BigMichi1/klauncherMT4967.slave-socket local:/tmp/ksocket-BigMichi1/konquerordx5442.slave-socket
+ 6313 4966 0.0 /bin/sh /usr/bin/firefox
+ 6318 6313 3.5 /usr/lib/firefox/firefox
+ 6320 1 0.1 /usr/lib/GConf/2/gconfd-2
+ 6332 1 0.1 /usr/lib/gvfs/gvfsd
+ 6338 1 0.1 /usr/lib/gvfs//gvfs-fuse-daemon /home/BigMichi1/.gvfs
+ 6389 3381 0.3 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf
+ 6390 3381 0.3 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf
+ 6395 3381 0.3 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf
+ 6737 3381 0.3 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf
+ 7003 5712 0.0 ps axo pid,ppid,pmem,args
diff --git a/sources/sample/plugin_psstatus/README b/sources/sample/plugin_psstatus/README
new file mode 100644
index 0000000..88a90af
--- /dev/null
+++ b/sources/sample/plugin_psstatus/README
@@ -0,0 +1,2 @@
+FILE CONTENT OF
+psstatus ps=("apache2" "mysqld" "sshd"); for((i=0;i<${#ps};i++)); do echo ${ps[$i]} "|" `pidof -s ${ps[$i]}` ;done
diff --git a/sources/sample/plugin_psstatus/psstatus1.txt b/sources/sample/plugin_psstatus/psstatus1.txt
new file mode 100644
index 0000000..da08b53
--- /dev/null
+++ b/sources/sample/plugin_psstatus/psstatus1.txt
@@ -0,0 +1,7 @@
+apache2 | 15776
+mysqld | 32349
+sshd | 31861
+bash |
+dovecot | 32055
+|
+|
diff --git a/sources/sample/plugin_quotas/README b/sources/sample/plugin_quotas/README
new file mode 100644
index 0000000..0127540
--- /dev/null
+++ b/sources/sample/plugin_quotas/README
@@ -0,0 +1,2 @@
+FILE CONTENT OF
+quotas repquota -au
diff --git a/sources/sample/plugin_quotas/quotas1.txt b/sources/sample/plugin_quotas/quotas1.txt
new file mode 100644
index 0000000..2f29adc
--- /dev/null
+++ b/sources/sample/plugin_quotas/quotas1.txt
@@ -0,0 +1,5 @@
+Mon Dec 6 09:00:00 EST 2004
+ 1K Block limits File limits
+User used soft hard grace used soft hard grace
+cherylstaff-- 2755724 0 0 15678 0 0
+brucestaff -- 5738512 0 0 7830 0 0
diff --git a/sources/sample/plugin_smart/smart0.txt b/sources/sample/plugin_smart/smart0.txt
new file mode 100644
index 0000000..6788e5c
--- /dev/null
+++ b/sources/sample/plugin_smart/smart0.txt
@@ -0,0 +1,43 @@
+smartctl version 5.38 [x86_64-redhat-linux-gnu] Copyright (C) 2002-8 Bruce Allen
+Home page is http://smartmontools.sourceforge.net/
+
+Device: SEAGATE ST3146855LW Version: 0003
+Serial number: 3LN1GA[rest of serial number redacted]
+Device type: disk
+Transport protocol: Parallel SCSI (SPI-4)
+Local Time is: Sat Jan 30 21:59:56 2010 CET
+Device supports SMART and is Enabled
+Temperature Warning Enabled
+SMART Health Status: OK
+
+Current Drive Temperature: 39 C
+Drive Trip Temperature: 68 C
+Elements in grown defect list: 0
+Vendor (Seagate) cache information
+ Blocks sent to initiator = 1490558074
+ Blocks received from initiator = 624662611
+ Blocks read from cache and sent to initiator = 2900209651
+ Number of read and write commands whose size <= segment size = 386699414
+ Number of read and write commands whose size > segment size = 28
+Vendor (Seagate/Hitachi) factory information
+ number of hours powered up = 14959.20
+ number of minutes until next internal SMART test = 44
+
+Error counter log:
+ Errors Corrected by Total Correction Gigabytes Total
+ ECC rereads/ errors algorithm processed uncorrected
+ fast | delayed rewrites corrected invocations [10^9 bytes] errors
+read: 6663270 0 0 6663270 6663270 5100.626 0
+write: 0 0 0 0 0 12594895028.099 0
+verify: 22626 0 0 22626 22626 28.314 0
+
+Non-medium error count: 3
+
+[GLTSD (Global Logging Target Save Disable) set. Enable Save with '-S on']
+
+SMART Self-test log
+Num Test Status segment LifeTime LBA_first_err [SK ASC ASQ]
+ Description number (hours)
+# 1 Background long Interrupted ('-X' switch) - 14371 - [- - -]
+
+Long (extended) Self Test duration: 1367 seconds [22.8 minutes]
diff --git a/sources/sample/plugin_smart/smart1.txt b/sources/sample/plugin_smart/smart1.txt
new file mode 100644
index 0000000..02b4b70
--- /dev/null
+++ b/sources/sample/plugin_smart/smart1.txt
@@ -0,0 +1,86 @@
+smartctl version 5.38 [x86_64-unknown-linux-gnu] Copyright (C) 2002-8 Bruce Allen
+Home page is http://smartmontools.sourceforge.net/
+
+=== START OF INFORMATION SECTION ===
+Device Model: Hitachi HDS722020ALA330
+Serial Number: JK1121[rest of serial number redacted]
+Firmware Version: JKAOA20N
+User Capacity: 2,000,398,934,016 bytes
+Device is: Not in smartctl database [for details use: -P showall]
+ATA Version is: 8
+ATA Standard is: ATA-8-ACS revision 4
+Local Time is: Tue Dec 1 15:21:30 2009 CST
+SMART support is: Available - device has SMART capability.
+SMART support is: Enabled
+
+=== START OF READ SMART DATA SECTION ===
+SMART overall-health self-assessment test result: PASSED
+
+General SMART Values:
+Offline data collection status: (0x84) Offline data collection activity
+ was suspended by an interrupting command from host.
+ Auto Offline Data Collection: Enabled.
+Self-test execution status: ( 0) The previous self-test routine completed
+ without error or no self-test has ever
+ been run.
+Total time to complete Offline
+data collection: (21742) seconds.
+Offline data collection
+capabilities: (0x5b) SMART execute Offline immediate.
+ Auto Offline data collection on/off support.
+ Suspend Offline collection upon new
+ command.
+ Offline surface scan supported.
+ Self-test supported.
+ No Conveyance Self-test supported.
+ Selective Self-test supported.
+SMART capabilities: (0x0003) Saves SMART data before entering
+ power-saving mode.
+ Supports SMART auto save timer.
+Error logging capability: (0x01) Error logging supported.
+ General Purpose Logging supported.
+Short self-test routine
+recommended polling time: ( 1) minutes.
+Extended self-test routine
+recommended polling time: ( 255) minutes.
+SCT capabilities: (0x003d) SCT Status supported.
+ SCT Feature Control supported.
+ SCT Data Table supported.
+
+SMART Attributes Data Structure revision number: 16
+Vendor Specific SMART Attributes with Thresholds:
+ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
+ 1 Raw_Read_Error_Rate 0x000b 100 100 016 Pre-fail Always - 0
+ 2 Throughput_Performance 0x0005 134 134 054 Pre-fail Offline - 98
+ 3 Spin_Up_Time 0x0007 123 123 024 Pre-fail Always - 587 (Average 584)
+ 4 Start_Stop_Count 0x0012 100 100 000 Old_age Always - 16
+ 5 Reallocated_Sector_Ct 0x0033 100 100 005 Pre-fail Always - 0
+ 7 Seek_Error_Rate 0x000b 100 100 067 Pre-fail Always - 0
+ 8 Seek_Time_Performance 0x0005 114 114 020 Pre-fail Offline - 38
+ 9 Power_On_Hours 0x0012 100 100 000 Old_age Always - 292
+ 10 Spin_Retry_Count 0x0013 100 100 060 Pre-fail Always - 0
+ 12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 16
+192 Power-Off_Retract_Count 0x0032 100 100 000 Old_age Always - 16
+193 Load_Cycle_Count 0x0012 100 100 000 Old_age Always - 16
+194 Temperature_Celsius 0x0002 230 230 000 Old_age Always - 27 (Lifetime Min/Max 20/45)
+196 Reallocated_Event_Count 0x0032 100 100 000 Old_age Always - 0
+197 Current_Pending_Sector 0x0022 100 100 000 Old_age Always - 0
+198 Offline_Uncorrectable 0x0008 100 100 000 Old_age Offline - 0
+199 UDMA_CRC_Error_Count 0x000a 200 200 000 Old_age Always - 0
+
+SMART Error Log Version: 0
+No Errors Logged
+
+SMART Self-test log structure revision number 1
+No self-tests have been logged. [To run self-tests, use: smartctl -t]
+
+SMART Selective self-test log data structure revision number 1
+ SPAN MIN_LBA MAX_LBA CURRENT_TEST_STATUS
+ 1 0 0 Not_testing
+ 2 0 0 Not_testing
+ 3 0 0 Not_testing
+ 4 0 0 Not_testing
+ 5 0 0 Not_testing
+Selective self-test flags (0x0):
+ After scanning selected spans, do NOT read-scan remainder of disk.
+If Selective self-test is pending on power-up, resume after 0 minute delay.
diff --git a/sources/sample/plugin_updatenotifier/ubuntu-landscape b/sources/sample/plugin_updatenotifier/ubuntu-landscape
new file mode 100644
index 0000000..35174f6
--- /dev/null
+++ b/sources/sample/plugin_updatenotifier/ubuntu-landscape
@@ -0,0 +1,4 @@
+
+27 packages can be updated.
+15 updates are security updates.
+
diff --git a/sources/sample/plugin_updatenotifier/universal-format b/sources/sample/plugin_updatenotifier/universal-format
new file mode 100644
index 0000000..d6c573e
--- /dev/null
+++ b/sources/sample/plugin_updatenotifier/universal-format
@@ -0,0 +1 @@
+17;5
\ No newline at end of file
diff --git a/sources/sample/processes/processes.txt b/sources/sample/processes/processes.txt
new file mode 100644
index 0000000..cc8f78c
--- /dev/null
+++ b/sources/sample/processes/processes.txt
@@ -0,0 +1,71 @@
+Processes state translation table
+-----Linux (Android)
+[R] R Running
+[S] S Sleeping in an interruptible wait
+[D] D Waiting in uninterruptible disk sleep
+[Z] Z Zombie
+[T] T Stopped (on a signal) or (before Linux 2.6.33) trace stopped
+ t Tracing stop (Linux 2.6.33 onward)
+ W Paging (only before Linux 2.6.0)
+ X Dead (from Linux 2.6.0 onward)
+ x Dead (Linux 2.6.33 to 3.13 only)
+ K Wakekill (Linux 2.6.33 to 3.13 only)
+ W Waking (Linux 2.6.33 to 3.13 only)
+ P Parked (Linux 3.9 to 3.13 only)
+-----FreeBSD
+[D] D Marks a process in disk (or other short term, uninterruptible) wait.
+[S] I Marks a process that is idle (sleeping for longer than about 20 seconds).
+[D] L Marks a process that is waiting to acquire a lock.
+[R] R Marks a runnable process.
+[S] S Marks a process that is sleeping for less than about 20 seconds.
+[T] T Marks a stopped process.
+ W Marks an idle interrupt thread.
+[Z] Z Marks a dead process (a ``zombie'').
+-----NetBSD
+[D] D Marks a process in disk (or other short term, uninterruptible) wait.
+[S] I Marks a process that is idle (sleeping for longer than about 20 seconds).
+[R] O Marks a process running on a processor.
+[R] R Marks a runnable process, or one that is in the process of creation.
+[S] S Marks a process that is sleeping for less than about 20 seconds.
+[T] T Marks a stopped process.
+ U Marks a suspended process.
+[Z] Z Marks a dead process (a ``zombie'').
+-----OpenBSD
+[D] D Marks a process in disk (or other short term, uninterruptible) wait.
+[S] I Marks a process that is idle (sleeping for longer than about 20 seconds).
+[R] R Marks a runnable process.
+[S] S Marks a process that is sleeping for less than about 20 seconds.
+[T] T Marks a stopped process.
+[Z] Z Marks a dead process (a ``zombie'').
+-----Darwin
+[S] I Marks a process that is idle (sleeping for longer than about 20 seconds).
+[R] R Marks a runnable process.
+[S] S Marks a process that is sleeping for less than about 20 seconds.
+[T] T Marks a stopped process.
+[D] U Marks a process in uninterruptible wait.
+[Z] Z Marks a dead process (a ``zombie'').
+[d] D [invalid state]
+-----Minix
+[R] R runnable
+[S] S sleeping (i.e.,suspended on PM or VFS)
+[T] T stopped
+[D] W waiting (on a message)
+[Z] Z zombie
+[d] D [invalid state]
+-----DragonFly
+ B Marks a blocked kernel thread.
+[D] D Marks a process in disk (or other short term, uninterruptible) wait.
+[S] I Marks a process that is idle (sleeping for longer than about 20 seconds).
+ J Marks a process which is in jail(2). The hostname of the prison can be found in /proc//status.
+[R] R Marks a runnable process and is followed by the CPU number.
+[S] S Marks a process that is sleeping for less than about 20 seconds.
+[T] T Marks a stopped process.
+[Z] Z Marks a dead process (a ``zombie'').
+-----SunOS
+[R] O Process is running on a processor.
+[S] S Sleeping: process is waiting for an event to complete.
+[R] R Runnable: process is on run queue.
+[T] T Process is stopped, either by a job control signal or because it is being traced.
+[D] W Waiting: process is waiting for CPU usage to drop to the CPU-caps enforced limits
+[Z] Z Zombie state: process terminated and parent not waiting.
+[d] D [invalid state]
diff --git a/sources/sample/ups/1-upscDell2700.txt b/sources/sample/ups/1-upscDell2700.txt
new file mode 100644
index 0000000..d3b0b88
--- /dev/null
+++ b/sources/sample/ups/1-upscDell2700.txt
@@ -0,0 +1,74 @@
+battery.capacity: 9.00
+battery.charge: 96
+battery.charge.low: 30
+battery.charge.restart: 0
+battery.energysave: no
+battery.runtime: 4963
+battery.runtime.low: 180
+battery.type: PbAc
+device.mfr: DELL
+device.model: Dell UPS Rack/Tower 2700W HV - 230V
+device.serial:
+device.type: ups
+driver.name: usbhid-ups
+driver.parameter.pollfreq: 30
+driver.parameter.pollinterval: 2
+driver.parameter.port: auto
+driver.version: 2.6.3
+driver.version.data: MGE HID 1.27
+driver.version.internal: 0.35
+input.frequency: 50.0
+input.frequency.nominal: 50
+input.transfer.boost.low: 210
+input.transfer.high: 286
+input.transfer.low: 160
+input.transfer.trim.high: 250
+input.voltage: 226.0
+input.voltage.nominal: 230
+outlet.1.autoswitch.charge.low: 0
+outlet.1.delay.shutdown: 2147483647
+outlet.1.delay.start: 0
+outlet.1.desc: PowerShare Outlet 1
+outlet.1.id: 1
+outlet.1.status: on
+outlet.1.switchable: yes
+outlet.2.autoswitch.charge.low: 0
+outlet.2.delay.shutdown: 2147483647
+outlet.2.delay.start: 1
+outlet.2.desc: PowerShare Outlet 2
+outlet.2.id: 2
+outlet.2.status: on
+outlet.2.switchable: yes
+outlet.desc: Main Outlet
+outlet.id: 0
+outlet.switchable: no
+output.current: 1.40
+output.frequency: 50.0
+output.frequency.nominal: 50
+output.voltage: 226.0
+output.voltage.nominal: 230
+ups.beeper.status: enabled
+ups.date: 2012/11/24
+ups.delay.shutdown: 20
+ups.delay.start: 30
+ups.firmware: 01.14.0003
+ups.load: 13
+ups.load.high: 110
+ups.mfr: DELL
+ups.model: Dell UPS Rack/Tower 2700W HV - 230V
+ups.power: 333
+ups.power.nominal: 2700
+ups.productid: ffff
+ups.realpower: 306
+ups.realpower.nominal: 2700
+ups.serial:
+ups.start.battery: yes
+ups.start.reboot: yes
+ups.status: OL CHRG
+ups.test.interval: 7776000
+ups.test.result: No test initiated
+ups.time: 22:45:33
+ups.timer.shutdown: 0
+ups.timer.start: 0
+ups.type: offline / line interactive
+ups.vendorid: 047c
diff --git a/sources/sample/ups/1-upscPW5110.txt b/sources/sample/ups/1-upscPW5110.txt
new file mode 100644
index 0000000..8384161
--- /dev/null
+++ b/sources/sample/ups/1-upscPW5110.txt
@@ -0,0 +1,19 @@
+battery.voltage: 13.5
+driver.name: bcmxcp_usb
+driver.parameter.pollinterval: 2
+driver.parameter.port: auto
+driver.version: 2.2.2
+driver.version.internal: 0.14
+input.frequency: 49.9
+input.voltage: 234
+output.current: 0.3
+output.frequency: 49.9
+output.phases: 1
+output.voltage: 234
+output.voltage.nominal: 240
+ups.firmware: Cont:00.50 Inve:01.50
+ups.load: 16.7
+ups.model: POWERWARE UPS 700VA
+ups.power.nominal: 700
+ups.serial:
+ups.status: OL
\ No newline at end of file
diff --git a/sources/sample/ups/1-upscl.txt b/sources/sample/ups/1-upscl.txt
new file mode 100644
index 0000000..653283f
--- /dev/null
+++ b/sources/sample/ups/1-upscl.txt
@@ -0,0 +1 @@
+PW5110
\ No newline at end of file
diff --git a/sources/sample/ups/apcaccess1.txt b/sources/sample/ups/apcaccess1.txt
new file mode 100644
index 0000000..8625d9f
--- /dev/null
+++ b/sources/sample/ups/apcaccess1.txt
@@ -0,0 +1,53 @@
+APC : 001,052,1303
+DATE : 2014-06-15 09:53:19 +0200
+HOSTNAME : intranet
+VERSION : 3.14.10 (13 September 2011) redhat
+UPSNAME : UPS_1
+CABLE : Custom Cable Smart
+DRIVER : APC Smart UPS (any)
+UPSMODE : Stand Alone
+STARTTIME: 2014-05-21 17:17:39 +0200
+MODEL : SMART-UPS 700
+STATUS : ONLINE
+LINEV : 231.4 Volts
+LOADPCT : 23.9 Percent Load Capacity
+BCHARGE : 100.0 Percent
+TIMELEFT : 6.0 Minutes
+MBATTCHG : 5 Percent
+MINTIMEL : 3 Minutes
+MAXTIME : 0 Seconds
+MAXLINEV : 232.7 Volts
+MINLINEV : 230.1 Volts
+OUTPUTV : 231.4 Volts
+SENSE : High
+DWAKE : 000 Seconds
+DSHUTD : 020 Seconds
+DLOWBATT : 02 Minutes
+LOTRANS : 196.0 Volts
+HITRANS : 253.0 Volts
+RETPCT : 000.0 Percent
+ITEMP : 36.9 C Internal
+ALARMDEL : 5 seconds
+BATTV : 27.7 Volts
+LINEFREQ : 50.0 Hz
+LASTXFER : Line voltage notch or spike
+NUMXFERS : 8
+XONBATT : 2014-06-12 13:25:24 +0200
+TONBATT : 0 seconds
+CUMONBATT: 13 seconds
+XOFFBATT : 2014-06-12 13:25:26 +0200
+SELFTEST : NO
+STESTI : 336
+STATFLAG : 0x07000008 Status Flag
+DIPSW : 0x00 Dip Switch
+REG1 : 0x00 Register 1
+REG2 : 0x00 Register 2
+REG3 : 0x00 Register 3
+MANDATE : 12/01/98
+SERIALNO : NS9876543210
+BATTDATE : 08/01/14
+NOMOUTV : 230 Volts
+NOMBATTV : 24.0 Volts
+EXTBATTS : 0
+FIRMWARE : 50.11.I
+END APC : 2014-06-15 09:54:07 +0200
diff --git a/sources/sample/ups/powersoftplus1.txt b/sources/sample/ups/powersoftplus1.txt
new file mode 100644
index 0000000..93472a7
--- /dev/null
+++ b/sources/sample/ups/powersoftplus1.txt
@@ -0,0 +1,16 @@
+PowerSoft Plus v.0.1.6 - EVER UPS monitoring software
+===========================================================
+Current UPS state : Normal mode
+Alert : -
+-----------------------------------------------------------
+Identifier: UPS Model : SINLINE 1200
+Identifier: UPS Version : Firmware: 1.1
+Battery state : At full capacity
+Battery voltage : 27.2 [Volt]
+Input voltage : 228 [Volt]
+Input frequency : 50.0 [Hz]
+Output voltage : 229 [Volt]
+Output current : 0.4 [A]
+Effective power : 61 [W]
+Output load : 0 [%]
+===========================================================
diff --git a/sources/templates/aqua.css b/sources/templates/aqua.css
new file mode 100644
index 0000000..0ba2879
--- /dev/null
+++ b/sources/templates/aqua.css
@@ -0,0 +1,181 @@
+/*
+ $Id*
+ */
+a {
+ text-decoration: none;
+ color: #c03000;
+}
+
+a:hover {
+ text-decoration: underline;
+}* {
+ margin: 0;
+ padding: 0;
+}
+
+wbr {
+ display: inline-block;
+}
+
+html {
+ height: 100%;
+ background: url("aqua/aq_background.gif");
+}
+
+body {
+ position: relative;
+ width: 940px;
+ _width: 945px; /* ie6 */
+ min-height: 100%;
+ overflow: auto;
+ margin: 0 auto;
+ padding: 20px 20px 0 20px;
+ font: 62.5% arial, tahoma, helvetica, sans-serif;
+ color: #000;
+}
+
+h1 {
+ margin: 0 10px;
+ _margin: 0 15px 0 10px; /* ie6 */
+ padding: 10px 10px;
+ border-top: 1px solid #2971a7;
+ border-bottom: 1px solid #2971a7;
+ font-size: 2em;
+ font-weight: normal;
+ color: #fff;
+ background: #569FD6;
+}
+
+#select {
+ text-align: right;
+ padding: 10px;
+}
+
+#select select {
+ width: 100px;
+}
+
+#vitals, #network, #memory, #filesystem, #hardware, #temp, #voltage, #fan, #power, #current, #ups {
+ float: left;
+ width: 451px;
+ margin: 10px 0 0 8px;
+ _margin: 10px 4px 0 4px; /* ie6 */
+ padding: 1px;
+ border: 2px solid #2971a7;
+ background: #fff;
+}
+
+h2 {
+ padding: 5px 10px;
+ font-family: "trebuchet ms";
+ font-size: 1.2em;
+ font-weight: bold;
+ letter-spacing: 0.0em;
+ text-transform: uppercase;
+ color: #fff;
+}
+
+table {
+ width: 100%;
+ font-size: 1.2em;
+ background-color: #fff;
+}
+
+.plugin {
+ float: left;
+ margin: 10px 0 0 8px;
+ _margin: 10px 4px 0 4px; /* ie6 */
+ padding: 1px;
+ border: 2px solid #2971a7;
+ background: #fff;
+}
+
+.dataTables_wrapper{
+ margin: 0 0 0 0 !important;
+ border: 0px !important;
+}
+
+th, td, h3 {
+ padding: 4px 10px 2px 10px;
+ text-align: left;
+ vertical-align: top;
+}
+
+h3 {
+ font-size: 120%;
+}
+
+
+.even {
+ background: #E4EBF3;
+}
+
+
+#footer {
+ clear: both;
+ color: #000;
+ margin: 12px;
+ padding: 13px 25px;
+ line-height: 18px;
+}
+
+h1 {
+ background: #2971a7;
+}
+
+h2 {
+ background: #2971a7;
+ text-align: center;
+}
+
+#memory, #filesystem {
+ width: 915px;
+}
+
+.bar {
+ background: #2971a7;
+}
+
+.barwarn {
+ background: #a72971;
+}
+
+p {
+ padding: 4px 10px 2px 10px;
+ line-height: 1.6;
+ text-align: left;
+ vertical-align: top;
+}
+
+#filesystemTable thead tr .header {
+ cursor: pointer;
+}
+
+table tfoot td {
+ color: #2E2E2E;
+}
+
+.right {
+ text-align: right;
+ padding-right: 20px;
+}
+
+#pciTable, #ideTable, #scsiTable, #usbTable, #tbTable, #i2cTable {
+ padding: 0px 30px;
+}
+
+.treeimg {
+ display: table-cell;
+ vertical-align: top;
+}
+
+.treespan {
+ display: table-cell;
+ vertical-align: middle;
+}
+
+.treespanbold {
+ font-weight: bold;
+ display: table-cell;
+ vertical-align: middle;
+}
diff --git a/sources/templates/aqua/aq_background.gif b/sources/templates/aqua/aq_background.gif
new file mode 100644
index 0000000..c34fa44
Binary files /dev/null and b/sources/templates/aqua/aq_background.gif differ
diff --git a/sources/templates/blue.css b/sources/templates/blue.css
new file mode 100644
index 0000000..e3e1bf8
--- /dev/null
+++ b/sources/templates/blue.css
@@ -0,0 +1,166 @@
+* {
+ margin: 0;
+ padding: 0;
+}
+
+wbr {
+ display: inline-block;
+}
+
+html {
+ background: url("blue/bg.png") #195287;
+ color: #195287;
+ font-size: 100%;
+ height: 100%;
+}
+
+body {
+ font-family: Helvetica, Verdana, Tahoma, Arial, 'Liberation Sans', FreeSans, sans-serif;
+ font-size: .75em;
+ position: relative;
+ margin: 0 auto;
+ min-height: 100%;
+ padding: 20px 20px 0 20px;
+ overflow: auto;
+ width: 940px;
+ _width: 945px; /* ie6 */
+}
+
+p {
+ padding: 4px 10px 2px 10px;
+ line-height: 1.6;
+ text-align: left;
+ vertical-align: top;
+}
+
+h1 {
+ color: #FFF;
+ font-size: 170%;
+ font-weight: bold;
+ line-height: 1.5em;
+ margin: 0 10px;
+ _margin: 0 15px 0 10px; /* ie6 */
+ padding: 10px 10px;
+ text-align: center;
+ text-shadow: #444444 2px 2px 3px;
+}
+
+h2 {
+ background-image: url('blue/title.png');
+ background-color: #195287;
+ color: #fff;
+ font-size: 130%;
+ font-weight: bold;
+ line-height: 1.5em;
+ padding: 3px 10px;
+ /*text-transform: uppercase;*/
+ text-shadow: #333333 2px 2px 2px;
+}
+
+table {
+ width: 100%;
+}
+
+.plugin {
+ float: left;
+ margin: 10px 0 0 10px;
+ _margin: 10px 5px 0 5px; /* ie6 */
+ padding: 1px;
+ background-color: #F6F6F6;
+}
+
+th, td, h3 {
+ font-size: 100%;
+ padding: 4px 10px 2px 10px;
+ text-align: left;
+ vertical-align: top;
+}
+
+a {
+ text-decoration: none;
+ color: #EFEFEF;
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+#select {
+ text-align: right;
+ color: #FFF
+}
+
+#select select {
+ width: 100px;
+}
+
+#vitals, #network, #memory, #filesystem, #hardware, #temp, #voltage, #fan, #power, #current, #ups {
+ background-color: #fff;
+ float: left;
+ margin: 10px 0 0 10px;
+ _margin: 10px 5px 0 5px; /* ie6 */
+ padding: 1px;
+ width: 451px;
+}
+
+#pciTable, #ideTable, #scsiTable, #usbTable, #tbTable, #i2cTable {
+ padding: 0px 30px;
+}
+
+#memory, #filesystem {
+ width: 915px;
+}
+
+
+#filesystemTable thead tr .header {
+ cursor: pointer;
+}
+
+#footer {
+ clear: both;
+ color: #FFF;
+ margin: 12px;
+ padding: 13px 25px;
+ line-height: 18px;
+ font-size: 80%;
+ text-align: center;
+}
+
+.odd {
+ background-color: #F6F6F6;
+}
+
+.even {
+ background-color: #EFEFEF;
+}
+
+.bar {
+ background-image: url('blue/bar.png');
+ background-color: #195287;
+}
+
+.barwarn {
+ background-image: url('blue/barwarn.png');
+ background-color: #871952;
+}
+
+.right {
+ padding-right: 20px;
+ text-align: right;
+}
+
+.treeimg {
+ display: table-cell;
+ vertical-align: top;
+}
+
+.treespan {
+ display: table-cell;
+ vertical-align: midle;
+}
+
+.treespanbold {
+ font-weight: bold;
+ display: table-cell;
+ vertical-align: middle;
+}
diff --git a/sources/templates/blue/bar.png b/sources/templates/blue/bar.png
new file mode 100644
index 0000000..2b14496
Binary files /dev/null and b/sources/templates/blue/bar.png differ
diff --git a/sources/templates/blue/barwarn.png b/sources/templates/blue/barwarn.png
new file mode 100644
index 0000000..10cf060
Binary files /dev/null and b/sources/templates/blue/barwarn.png differ
diff --git a/sources/templates/blue/bg.png b/sources/templates/blue/bg.png
new file mode 100644
index 0000000..3847206
Binary files /dev/null and b/sources/templates/blue/bg.png differ
diff --git a/sources/templates/blue/title.png b/sources/templates/blue/title.png
new file mode 100644
index 0000000..e46b598
Binary files /dev/null and b/sources/templates/blue/title.png differ
diff --git a/sources/templates/clean.css b/sources/templates/clean.css
new file mode 100644
index 0000000..5471ca4
--- /dev/null
+++ b/sources/templates/clean.css
@@ -0,0 +1,161 @@
+/*
+ $Id: clean.css 518 2011-10-28 08:09:07Z namiltd $
+ */
+a {
+ text-decoration: none;
+ color: #c03000;
+}
+
+a:hover {
+ text-decoration: underline;
+}* {
+ margin: 0;
+ padding: 0;
+}
+
+wbr {
+ display: inline-block;
+}
+
+html {
+ font-size: 100%;
+ height: 100%;
+ color: #333;
+}
+
+body {
+ font-family: Helvetica, Arial, "Lucida Grande", Verdana, sans-serif;
+ font-size: .75em;
+ position: relative;
+ width: 940px;
+ _width: 945px; /* ie6 */
+ min-height: 100%;
+ overflow: auto;
+ margin: 0 auto;
+ padding: 20px 20px 0 20px;
+}
+
+h1 {
+ margin: 0 10px;
+ _margin: 0 15px 0 10px; /* ie6 */
+ padding: 10px 10px;
+ text-align: center;
+ font-family: Helvetica, Arial, "Lucida Grande", Verdana, sans-serif;
+ font-size: 130%;
+ line-height: 1.5em;
+ color: #224970;
+}
+
+#select {
+ text-align: right;
+}
+
+#select select {
+ width: 100px;
+ font-family: Helvetica, Arial, "Lucida Grande", Verdana, sans-serif;
+}
+
+#vitals, #network, #memory, #filesystem, #hardware, #temp, #voltage, #fan, #power, #current, #ups {
+ float: left;
+ width: 451px;
+ margin: 10px 0 0 10px;
+ _margin: 10px 5px 0 5px; /* ie6 */
+ color: #000;
+}
+
+h2 {
+ font-family: Helvetica, Arial, "Lucida Grande", Verdana, sans-serif;
+ font-size: 120%;
+ padding: 3px 10px;
+ text-transform: uppercase;
+ line-height: 1.5em;
+ color: #224970;
+ text-align: left;
+}
+
+table {
+ width: 100%;
+ border-top: solid 2px #DADADA;
+ border-bottom: solid 2px #DADADA;
+ background-color: #F3F8FC;
+}
+
+.plugin {
+ float: left;
+ margin: 10px 0 0 10px;
+ _margin: 10px 5px 0 5px; /* ie6 */
+ padding: 1px;
+}
+
+.treeTable {
+ border: none;
+}
+
+th, td, h3 {
+ padding: 4px 10px 2px 10px;
+ text-align: left;
+ vertical-align: top;
+ font-size: 100%;
+}
+
+#footer {
+ clear: both;
+ color: #000;
+ margin: 12px;
+ padding: 13px 25px;
+ line-height: 18px;
+ font-size: 80%;
+ text-align: center;
+}
+
+#memory, #filesystem {
+ width: 915px;
+}
+
+.bar {
+ background-color: #2F659B;
+}
+
+.barwarn {
+ background-color: #9B2F65;
+}
+
+p {
+ padding: 4px 10px 2px 10px;
+ line-height: 1.6;
+ text-align: left;
+ vertical-align: top;
+}
+
+table th {
+ color: #333300;
+}
+
+#filesystemTable thead tr .header {
+ cursor: pointer;
+}
+
+.right {
+ text-align: right;
+ padding-right: 20px;
+}
+
+#pciTable, #ideTable, #scsiTable, #usbTable, #tbTable, #i2cTable {
+ padding: 0px 30px;
+}
+
+.treeimg {
+ display: table-cell;
+ vertical-align: top;
+}
+
+.treespan {
+ display: table-cell;
+ vertical-align: middle;
+}
+
+.treespanbold {
+ font-weight: bold;
+ display: table-cell;
+ vertical-align: middle;
+}
diff --git a/sources/templates/cleansyn.css b/sources/templates/cleansyn.css
new file mode 100644
index 0000000..cd04a5e
--- /dev/null
+++ b/sources/templates/cleansyn.css
@@ -0,0 +1,162 @@
+/*
+ $Id: cleansyn.css 518 2015-03-21 10:31:07Z namiltd $
+ */
+a {
+ text-decoration: none;
+ color: #363;
+}
+
+a:hover {
+ text-decoration: underline;
+}* {
+ margin: 0;
+ padding: 0;
+}
+
+wbr {
+ display: inline-block;
+}
+
+html {
+ font-size: 100%;
+ height: 100%;
+ color: #ddd;
+}
+
+body {
+ font-family: Helvetica, Arial, "Lucida Grande", Verdana, sans-serif;
+ font-size: .75em;
+ position: relative;
+ width: 940px;
+ _width: 945px; /* ie6 */
+ min-height: 100%;
+ overflow: auto;
+ margin: 0 auto;
+ padding: 20px 20px 0 20px;
+ background-color: #111;
+}
+
+h1 {
+ margin: 0 10px;
+ _margin: 0 15px 0 10px; /* ie6 */
+ padding: 10px 10px;
+ text-align: center;
+ font-family: Helvetica, Arial, "Lucida Grande", Verdana, sans-serif;
+ font-size: 130%;
+ line-height: 1.5em;
+ color: #fff;
+}
+
+#select {
+ text-align: right;
+}
+
+#select select {
+ width: 100px;
+ font-family: Helvetica, Arial, "Lucida Grande", Verdana, sans-serif;
+}
+
+#vitals, #network, #memory, #filesystem, #hardware, #temp, #voltage, #fan, #power, #current, #ups {
+ float: left;
+ width: 451px;
+ margin: 10px 0 0 10px;
+ _margin: 10px 5px 0 5px; /* ie6 */
+ color: #ccc;
+}
+
+h2 {
+ font-family: Helvetica, Arial, "Lucida Grande", Verdana, sans-serif;
+ font-size: 120%;
+ padding: 3px 10px;
+ text-transform: uppercase;
+ line-height: 1.5em;
+ color: #fff;
+ text-align: left;
+}
+
+table {
+ width: 100%;
+ border-top: solid 2px #DADADA;
+ border-bottom: solid 2px #DADADA;
+ background-color: #333;
+}
+
+.plugin {
+ float: left;
+ margin: 10px 0 0 10px;
+ _margin: 10px 5px 0 5px; /* ie6 */
+ padding: 1px;
+}
+
+.treeTable {
+ border: none;
+}
+
+th, td, h3 {
+ padding: 4px 10px 2px 10px;
+ text-align: left;
+ vertical-align: top;
+ font-size: 100%;
+}
+
+#footer {
+ clear: both;
+ color: #bbb;
+ margin: 12px;
+ padding: 13px 25px;
+ line-height: 18px;
+ font-size: 80%;
+ text-align: center;
+}
+
+#memory, #filesystem {
+ width: 915px;
+}
+
+.bar {
+ background-color: #0f0;
+}
+
+.barwarn {
+ background-color: #944;
+}
+
+p {
+ padding: 4px 10px 2px 10px;
+ line-height: 1.6;
+ text-align: left;
+ vertical-align: top;
+}
+
+table th {
+ color: #3a3;
+}
+
+#filesystemTable thead tr .header {
+ cursor: pointer;
+}
+
+.right {
+ text-align: right;
+ padding-right: 20px;
+}
+
+#pciTable, #ideTable, #scsiTable, #usbTable, #tbTable, #i2cTable {
+ padding: 0px 30px;
+}
+
+.treeimg {
+ display: table-cell;
+ vertical-align: top;
+}
+
+.treespan {
+ display: table-cell;
+ vertical-align: middle;
+}
+
+.treespanbold {
+ font-weight: bold;
+ display: table-cell;
+ vertical-align: middle;
+}
diff --git a/sources/templates/cream.css b/sources/templates/cream.css
new file mode 100644
index 0000000..ead9c4e
--- /dev/null
+++ b/sources/templates/cream.css
@@ -0,0 +1,161 @@
+/*
+ $Id
+ */ * {
+ margin: 0;
+ padding: 0;
+}
+
+wbr {
+ display: inline-block;
+}
+
+html {
+ background: url("cream/bg.gif") repeat-x #F8F2E3;
+ color: #444B54;
+ font-size: 100%;
+ height: 100%;
+}
+
+body {
+ font-family: Helvetica, Arial, 'Liberation Sans', FreeSans, sans-serif;
+ font-size: .75em;
+ position: relative;
+ margin: 0 auto;
+ min-height: 100%;
+ padding: 20px 20px 0 20px;
+ overflow: auto;
+ width: 940px;
+ _width: 945px; /* ie6 */
+}
+
+p {
+ padding: 4px 10px 2px 10px;
+ line-height: 1.6;
+ text-align: left;
+ vertical-align: top;
+}
+
+h1 {
+ color: #394047;
+ font-size: 150%;
+ font-weight: normal;
+ line-height: 1.5em;
+ margin: 0 10px;
+ _margin: 0 15px 0 10px; /* ie6 */
+ padding: 10px 10px;
+ text-align: center;
+}
+
+h2 {
+ background-color: #444B54;
+ color: #fff;
+ font-size: 130%;
+ font-weight: bold;
+ line-height: 1.5em;
+ padding: 3px 10px;
+ text-transform: uppercase;
+}
+
+table {
+ width: 100%;
+ background-color: #fff;
+}
+
+.plugin {
+ float: left;
+ margin: 10px 0 0 10px;
+ _margin: 10px 5px 0 5px; /* ie6 */
+ padding: 1px;
+ background: #fff;
+}
+
+
+th, td, h3 {
+ font-size: 100%;
+ padding: 4px 10px 2px 10px;
+ text-align: left;
+ vertical-align: top;
+}
+
+a {
+ text-decoration: none;
+ color: #c03000;
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+#select {
+ text-align: right;
+}
+
+#select select {
+ width: 100px;
+}
+
+#vitals, #network, #memory, #filesystem, #hardware, #temp, #voltage, #fan, #power, #current, #ups {
+ background-color: #fff;
+ float: left;
+ margin: 10px 0 0 10px;
+ _margin: 10px 5px 0 5px; /* ie6 */
+ padding: 1px;
+ width: 451px;
+}
+
+#pciTable, #ideTable, #scsiTable, #usbTable, #tbTable, #i2cTable {
+ padding: 0px 30px;
+}
+
+#memory, #filesystem {
+ width: 915px;
+}
+
+
+#filesystemTable thead tr .header {
+ cursor: pointer;
+}
+
+#footer {
+ clear: both;
+ color: #5C5C5C;
+ margin: 12px;
+ padding: 13px 25px;
+ line-height: 18px;
+ font-size: 80%;
+ text-align: center;
+}
+
+
+.even {
+ background-color: #FBFBF9;
+}
+
+.bar {
+ background-color: #58626D;
+}
+
+.barwarn {
+ background-color: #9B2F65;
+}
+
+.right {
+ padding-right: 20px;
+ text-align: right;
+}
+
+.treeimg {
+ display: table-cell;
+ vertical-align: top;
+}
+
+.treespan {
+ display: table-cell;
+ vertical-align: middle;
+}
+
+.treespanbold {
+ font-weight: bold;
+ display: table-cell;
+ vertical-align: middle;
+}
diff --git a/sources/templates/cream/bg.gif b/sources/templates/cream/bg.gif
new file mode 100644
index 0000000..1ae86ea
Binary files /dev/null and b/sources/templates/cream/bg.gif differ
diff --git a/sources/templates/dark_bootstrap.css b/sources/templates/dark_bootstrap.css
new file mode 100644
index 0000000..f7558bf
--- /dev/null
+++ b/sources/templates/dark_bootstrap.css
@@ -0,0 +1,189 @@
+body {
+ font-size: 13px;
+ padding-top: 80px;
+ color: #c8c8c8;
+ background-color: #272b30;
+}
+
+wbr {
+ display: inline-block;
+}
+
+.progress {
+ margin-bottom: 0;
+}
+
+.table td.rightCell, .table th.rightCell {
+ text-align: right;
+}
+
+.percent {
+ text-align: center;
+}
+
+.panel-primary {
+ background-color: #2e3338;
+ border: none;
+}
+
+.navbar {
+ background-color: #3a3f44;
+ border-color: #2b2e32;
+}
+
+.navbar-brand, .navbar-brand:hover {
+ color: #fff;
+}
+
+.treegrid-span {
+ display: table-cell;
+ *float: left;
+}
+
+.treegrid-spanbold {
+ font-weight: bold;
+ display: table-cell;
+ *float: left;
+}
+
+.treegrid-indent {
+ width: 16px;
+ height: 16px;
+ display: table-cell;
+ *float: left;
+}
+
+.treegrid-expander {
+ width: 0px;
+ height: 16px;
+ display: table-cell;
+ *float: left;
+ cursor: pointer;
+}
+
+.normalicon {
+ width: 16px;
+ height: 16px;
+ position: relative;
+ top: 1px;
+ display: table-cell;
+ *float: left;
+ font-style: normal;
+ font-weight: normal;
+ line-height: 1;
+
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+.normalicon-right:before {
+ content: "\25ba";
+}
+.normalicon-down:before {
+ content: "\25bc";
+}
+/* IE6 fix */
+* html .normalicon-right {
+ background: url('../gfx/right_gray.gif') no-repeat;
+ height: 14px;
+}
+* html .normalicon-down {
+ background: url('../gfx/down_gray.gif') no-repeat;
+ height: 14px;
+}
+/* IE7 fix */
+*+html .normalicon-right {
+ background: url('../gfx/right_gray.gif') no-repeat;
+ height: 14px;
+}
+*+html .normalicon-down {
+ background: url('../gfx/down_gray.gif') no-repeat;
+ height: 14px;
+}
+
+table.sortable thead th {
+ cursor: pointer;
+ position: relative;
+ top: 0;
+ left: 0;
+}
+
+table.sortable thead th:hover {
+ background: #3e444c;
+}
+
+table.table-hover > tbody > tr:hover {
+ background-color: #49515a;
+}
+
+table.borderless td,table.borderless th {
+ border: none!important;
+}
+
+.table .table {
+ background-color: #2e3338;
+}
+
+.logo {
+ cursor: pointer;
+}
+
+.errorbutton {
+ cursor: pointer;
+}
+
+.select {
+ color: #c8c8c8;
+}
+
+.template {
+ cursor: pointer;
+ color: #333;
+}
+
+.language {
+ cursor: pointer;
+ color: #333;
+}
+
+.panel-heading {
+ background-color: #3e444c!important;
+ border-color: #3e444c!important;
+}
+
+.progress {
+ background-color: #1c1e22;
+}
+
+.progress-bar-success {
+ background-color: #62c462;
+}
+
+.progress-bar-info {
+ background-color: #5bc0de;
+}
+
+.progress-bar-warning {
+ background-color: #f89406;
+}
+
+.progress-bar-danger {
+ background-color: #ee5f5b;
+}
+
+.modal-content {
+ background-color: #2e3338;
+}
+
+.list-group-item {
+ background-color: #2e3338;
+}
+
+.reload {
+ background-image: url("../gfx/reload.gif");
+ vertical-align: middle;
+ float: right;
+ cursor: pointer;
+ border: 0px;
+ width: 16px;
+ height: 16px;
+}
diff --git a/sources/templates/green_bootstrap.css b/sources/templates/green_bootstrap.css
new file mode 100644
index 0000000..2c7a7ed
--- /dev/null
+++ b/sources/templates/green_bootstrap.css
@@ -0,0 +1,189 @@
+body {
+ font-size: 13px;
+ padding-top: 80px;
+ color: #333;
+ background-color: #fff;
+}
+
+wbr {
+ display: inline-block;
+}
+
+.progress {
+ margin-bottom: 0;
+}
+
+.table td.rightCell, .table th.rightCell {
+ text-align: right;
+}
+
+.percent {
+ text-align: center;
+}
+
+.panel-primary {
+ background-color: #fff;
+ border: none;
+}
+
+.navbar {
+ background-color: #3bc873;
+ border-color: #33b667;
+}
+
+.navbar-brand, .navbar-brand:hover {
+ color: #fff;
+}
+
+.treegrid-span {
+ display: table-cell;
+ *float: left;
+}
+
+.treegrid-spanbold {
+ font-weight: bold;
+ display: table-cell;
+ *float: left;
+}
+
+.treegrid-indent {
+ width: 16px;
+ height: 16px;
+ display: table-cell;
+ *float: left;
+}
+
+.treegrid-expander {
+ width: 0px;
+ height: 16px;
+ display: table-cell;
+ *float: left;
+ cursor: pointer;
+}
+
+.normalicon {
+ width: 16px;
+ height: 16px;
+ position: relative;
+ top: 1px;
+ display: table-cell;
+ *float: left;
+ font-style: normal;
+ font-weight: normal;
+ line-height: 1;
+
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+.normalicon-right:before {
+ content: "\25ba";
+}
+.normalicon-down:before {
+ content: "\25bc";
+}
+/* IE6 fix */
+* html .normalicon-right {
+ background: url('../gfx/right_black.gif') no-repeat;
+ height: 14px;
+}
+* html .normalicon-down {
+ background: url('../gfx/down_black.gif') no-repeat;
+ height: 14px;
+}
+/* IE7 fix */
+*+html .normalicon-right {
+ background: url('../gfx/right_black.gif') no-repeat;
+ height: 14px;
+}
+*+html .normalicon-down {
+ background: url('../gfx/down_black.gif') no-repeat;
+ height: 14px;
+}
+
+table.sortable thead th {
+ cursor: pointer;
+ position: relative;
+ top: 0;
+ left: 0;
+}
+
+table.sortable thead th:hover {
+ background: #f0f0f0;
+}
+
+.table-hover > tbody > tr:hover {
+ background-color: #f5f5f5;
+}
+
+table.borderless td,table.borderless th {
+ border: none!important;
+}
+
+.table .table {
+ background-color: #fff;
+}
+
+.logo {
+ cursor: pointer;
+}
+
+.errorbutton {
+ cursor: pointer;
+}
+
+.select {
+ color: #333;
+}
+
+.template {
+ cursor: pointer;
+ color: #333;
+}
+
+.language {
+ cursor: pointer;
+ color: #333;
+}
+
+.panel-heading {
+ background-color: #33b770!important;
+ border-color: #33b770!important;
+}
+
+.progress {
+ background-color: #f5f5f5;
+}
+
+.progress-bar-success {
+ background-color: #5bc0de;
+}
+
+.progress-bar-info {
+ background-color: #5cb85c;
+}
+
+.progress-bar-warning {
+ background-color: #f0ad4e;
+}
+
+.progress-bar-danger {
+ background-color: #d9534f;
+}
+
+.modal-content {
+ background-color: #fff;
+}
+
+.list-group-item {
+ background-color: #fff;
+}
+
+.reload {
+ background-image: url("../gfx/reload.gif");
+ vertical-align: middle;
+ float: right;
+ cursor: pointer;
+ border: 0px;
+ width: 16px;
+ height: 16px;
+}
diff --git a/sources/templates/html/error_config.html b/sources/templates/html/error_config.html
new file mode 100644
index 0000000..5619b1d
--- /dev/null
+++ b/sources/templates/html/error_config.html
@@ -0,0 +1,22 @@
+"; ?>
+
+
+
+
+
+
+
+
+ phpSysInfo - Error
+
+
+
+
+
+phpSysInfo - Error
+
+
phpsysinfo.ini does not exist or is not readable by the webserver in the phpsysinfo directory or is misunderstood.
+
Generated by phpSysInfo -
+
+
+
diff --git a/sources/templates/html/index_all.html b/sources/templates/html/index_all.html
new file mode 100644
index 0000000..a6dc45e
--- /dev/null
+++ b/sources/templates/html/index_all.html
@@ -0,0 +1,40 @@
+"; ?>
+
+
+
+
+
+
+
+
+ phpSysInfo - Redirection
+
+
+
+
+
+
+
+REDIRECTING ...
+
+
Loading redirection target
+
In approx. 2 seconds the redirection target page should load.
+ If it doesn't please select the link above.
+
Generated by phpSysInfo -
+
+
+
diff --git a/sources/templates/html/index_bootstrap.html b/sources/templates/html/index_bootstrap.html
new file mode 100644
index 0000000..c51194a
--- /dev/null
+++ b/sources/templates/html/index_bootstrap.html
@@ -0,0 +1,429 @@
+
+
+
+
+
+
+
+
+ phpSysInfo
+
+
+
+
+
+
+
+
+
+ "/>
+
+
+
+
+
+
+
+ phpSysInfo
+
+
+
+
+ Template
+
+".$t."\n";
+endforeach;
+} else {
+ echo " ".$bootstraptemplate." \n";
+}?>
+
+ Language
+
+".$l."\n";
+endforeach;
+} else {
+ echo " ".$language." \n";
+}?>
+
+
+
+
+
+
+
+
+
+
+
System vitals
+
+
+
+
+ Hostname
+
+
+
+ Listening IP
+
+
+
+ Kernel Version
+
+
+
+ Distro Name
+
+
+
+ Uptime
+
+
+
+ Last boot
+
+
+
+ Current Users
+
+
+
+ Load Averages
+
+
+
+ System Language
+
+
+
+ Code Page
+
+
+
+ Processes
+
+
+
+
+
+
+
+
+
+
+
Hardware Information
+
+
+
+
+
+
+
+
+
Memory Usage
+
+
+
+
+ Type
+ Usage
+ Free
+ Used
+ Size
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Mounted Filesystems
+
+
+
+
+ Mountpoint
+ Type
+ Partition
+ Usage
+ Free
+ Used
+ Size
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Network Interface
+
+
+
+
+ Device
+ Receive
+ Send
+ Err/Drop
+
+
+
+
+
+
+
+
+
+
+
+
Voltage
+
+
+
+
+ Label
+ Value
+ Min
+ Max
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Temperatures
+
+
+
+
+ Label
+ Value
+ Limit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Fans
+
+
+
+
+ Label
+ Value
+ Min
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Currents
+
+
+
+
+ Label
+ Value
+ Limit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Power
+
+
+
+
+ Label
+ Value
+ Limit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sources/templates/html/index_dynamic.html b/sources/templates/html/index_dynamic.html
new file mode 100644
index 0000000..9b45806
--- /dev/null
+++ b/sources/templates/html/index_dynamic.html
@@ -0,0 +1,254 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ phpSysInfo
+
+
+
+
+
+
+
+
+
+
+
+ Loading... please wait!
+
+
+ Your navigator does not support JavaScript (or JavaScript is not activated).
+ In approximatively 2 seconds you will be redirected to the static version of phpSysInfo.
+
+ Click here to switch to the static version
+
+
+
+
+
+
Oh, I'm sorry. Something seems to be wrong.
+
+
+
+
+
+
+
+
+ System information
+ :
+ ( )
+
+
+
+ Template
+
+".$t."\n";
+ endforeach;
+} else {
+ echo " ".$template." \n";
+}
+?>
+
+ Language
+
+".$l."\n";
+ endforeach;
+} else {
+ echo " ".$language." \n";
+}
+?>
+
+
+
+
System vitals
+
+
+ Hostname
+
+
+
+ Listening IP
+
+
+
+ Kernel Version
+
+
+
+ Distro Name
+
+
+
+ Uptime
+
+
+
+ Last boot
+
+
+
+ Current Users
+
+
+
+ Load Averages
+
+
+
+ System Language
+
+
+
+ Code Page
+
+
+
+ Code Page
+
+
+
+ Processes
+
+
+
+ Processes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Voltage
+
+
+
+ Label
+ Voltage
+ Min
+ Max
+
+
+
+
+
+
+
+
Temperature
+
+
+
+ Label
+ Value
+ Limit
+
+
+
+
+
+
+
+
Fan
+
+
+
+ Label
+ Value
+ Min
+
+
+
+
+
+
+
+
Current
+
+
+
+ Label
+ Value
+ Limit
+
+
+
+
+
+
+
+
Power
+
+
+
+ Label
+ Value
+ Limit
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sources/templates/idash.css b/sources/templates/idash.css
new file mode 100644
index 0000000..d08006d
--- /dev/null
+++ b/sources/templates/idash.css
@@ -0,0 +1,172 @@
+/* NextGen Remixed by iDash.pl */
+a {
+ text-decoration: none;
+ color: #006;
+}
+
+a:hover {
+ text-decoration: underline;
+ color: #5A7000;
+}
+
+* {
+ margin: 0;
+ padding: 0;
+}
+
+wbr {
+ display: inline-block;
+}
+
+html {
+ height: 100%;
+ background: url("idash/bg.png") repeat-x scroll center top #111;
+}
+
+body {
+ position: relative;
+ width: 940px;
+ _width: 945px; /* ie6 */
+ min-height: 100%;
+ overflow: auto;
+ margin: 0 auto;
+ padding: 20px 20px 0 20px;
+ font: 0.75em tahoma, arial, sans-serif;
+ color: #CCC;
+}
+
+div#container {
+ margin: -20px -10px 0 -10px;
+ padding: 95px 0 0 0;
+}
+
+h1 {
+ position: absolute;
+ top: 35px;
+ left: 10px;
+ margin: 0;
+ padding: 0px 10px;
+ font-size: 2em;
+ font-weight: normal;
+ color: #FFF;
+}
+
+#select {
+ position: absolute;
+ top: 75px;
+ color: #FFF;
+ right: 30px;
+ width: 370px;
+ text-align: right;
+}
+
+#select select {
+ width: 100px;
+}
+
+#vitals, #network, #memory, #filesystem, #hardware, #temp, #voltage, #fan, #power, #current, #ups {
+ float: left;
+ width: 451px;
+ margin: 10px 0 0 10px;
+ _margin: 10px 5px 0 5px; /* ie6 */
+ padding: 1px;
+ border: 1px solid #354242;
+}
+
+h2 {
+ padding: 5px 10px;
+ font-family: "trebuchet ms";
+ font-size: 1.2em;
+ font-weight: bold;
+ letter-spacing: 0.0em;
+ text-transform: uppercase;
+ color: #FFF; /* #7D9100; */
+ background: #354242;
+}
+
+table {
+ width: 100%;
+}
+
+.plugin {
+ float: left;
+ margin: 10px 0 0 10px;
+ _margin: 10px 5px 0 5px; /* ie6 */
+ padding: 1px;
+ border: 1px solid #354242;
+}
+
+.dataTables_wrapper{
+ margin: 0 0 0 0 !important;
+ border: 0px !important;
+}
+
+
+th, td, h3 {
+ padding: 4px 10px 2px 10px;
+ text-align: left;
+ vertical-align: top;
+}
+
+h3 {
+ font-size: 120%;
+}
+
+.even {
+ background: #333;
+}
+
+#footer {
+ color: #777777;
+ clear: both;
+ margin: 12px;
+ padding: 13px 25px;
+ line-height: 18px;
+ text-align: right;
+}
+
+#memory, #filesystem {
+ width: 915px;
+}
+
+.bar {
+ background: #34DA64 url("idash/html.gif");
+}
+
+.barwarn {
+ background: #e69575 url("idash/htmlwarn.gif");
+}
+
+p {
+ padding: 4px 10px 2px 10px;
+ line-height: 1.6;
+ text-align: left;
+ vertical-align: top;
+}
+
+.right {
+ text-align: right;
+ padding-right: 20px;
+}
+
+#pciTable, #ideTable, #scsiTable, #usbTable, #tbTable, #i2cTable {
+ padding: 0px 30px;
+}
+
+#lang_047{color:444}
+
+.treeimg {
+ display: table-cell;
+ vertical-align: top;
+}
+
+.treespan {
+ display: table-cell;
+ vertical-align: middle;
+}
+
+.treespanbold {
+ font-weight: bold;
+ display: table-cell;
+ vertical-align: middle;
+}
diff --git a/sources/templates/idash/bg.png b/sources/templates/idash/bg.png
new file mode 100644
index 0000000..60b8e4c
Binary files /dev/null and b/sources/templates/idash/bg.png differ
diff --git a/sources/templates/idash/html.gif b/sources/templates/idash/html.gif
new file mode 100644
index 0000000..cc6e205
Binary files /dev/null and b/sources/templates/idash/html.gif differ
diff --git a/sources/templates/idash/htmlwarn.gif b/sources/templates/idash/htmlwarn.gif
new file mode 100644
index 0000000..7257e8b
Binary files /dev/null and b/sources/templates/idash/htmlwarn.gif differ
diff --git a/sources/templates/jstyle_blue.css b/sources/templates/jstyle_blue.css
new file mode 100644
index 0000000..57792ff
--- /dev/null
+++ b/sources/templates/jstyle_blue.css
@@ -0,0 +1,157 @@
+/*
+ $Id: jstyle_blue.css 518 2011-10-28 08:09:07Z namiltd $
+ */
+a {
+ text-decoration: none;
+ color: #c03000;
+}
+
+a:hover {
+ text-decoration: underline;
+}* {
+ margin: 0;
+ padding: 0;
+}
+
+wbr {
+ display: inline-block;
+}
+
+html {
+ font-size: 100%;
+ height: 100%;
+ background-color: #f3f1e9;
+ color: #666666;
+}
+
+body {
+ font-family: Verdana, "Bitstream Vera Sans";
+ font-size: .75em;
+ position: relative;
+ width: 940px;
+ _width: 945px; /* ie6 */
+ min-height: 100%;
+ overflow: auto;
+ margin: 0 auto;
+ padding: 20px 20px 0 20px;
+}
+
+h1 {
+ margin: 0 10px;
+ _margin: 0 15px 0 10px; /* ie6 */
+ padding: 10px 10px;
+ text-align: center;
+ color: #fff;
+ font-family: Georgia, serif;
+ font-weight: normal;
+ font-size: 150%;
+ line-height: 1.5em;
+ color: #326ea1;
+}
+
+#select {
+ text-align: right;
+}
+
+#select select {
+ width: 100px;
+}
+
+#vitals, #network, #memory, #filesystem, #hardware, #temp, #voltage, #fan, #power, #current, #ups {
+ float: left;
+ width: 451px;
+ margin: 10px 0 0 10px;
+ _margin: 10px 5px 0 5px; /* ie6 */
+ padding: 1px;
+}
+
+h2 {
+ font-family: Georgia, serif;
+ font-weight: bold;
+ font-size: 130%;
+ padding: 3px 10px;
+ text-transform: uppercase;
+ line-height: 1.5em;
+ color: #326ea1;
+ border-bottom: 2px solid #326ea1;
+}
+
+table {
+ width: 100%;
+}
+
+.plugin {
+ float: left;
+ margin: 10px 0 0 10px;
+ _margin: 10px 5px 0 5px; /* ie6 */
+ padding: 1px;
+}
+
+th, td, h3 {
+ padding: 4px 10px 2px 10px;
+ text-align: left;
+ vertical-align: top;
+ font-size: 100%;
+}
+
+.even {
+ background: #EBE8DA;
+}
+
+#footer {
+ clear: both;
+ color: #5C5C5C;
+ margin: 12px;
+ padding: 13px 25px;
+ line-height: 18px;
+ font-size: 80%;
+ text-align: center;
+}
+
+#memory, #filesystem {
+ width: 915px;
+}
+
+.bar {
+ background-color: #326edf;
+}
+
+.barwarn {
+ background-color: #df326e;
+}
+
+p {
+ padding: 4px 10px 2px 10px;
+ line-height: 1.6;
+ text-align: left;
+ vertical-align: top;
+}
+
+#filesystemTable thead tr .header {
+ cursor: pointer;
+}
+
+.right {
+ text-align: right;
+ padding-right: 20px;
+}
+
+#pciTable, #ideTable, #scsiTable, #usbTable, #tbTable, #i2cTable {
+ padding: 0px 30px;
+}
+
+.treeimg {
+ display: table-cell;
+ vertical-align: top;
+}
+
+.treespan {
+ display: table-cell;
+ vertical-align: middle;
+}
+
+.treespanbold {
+ font-weight: bold;
+ display: table-cell;
+ vertical-align: middle;
+}
diff --git a/sources/templates/jstyle_green.css b/sources/templates/jstyle_green.css
new file mode 100644
index 0000000..467d086
--- /dev/null
+++ b/sources/templates/jstyle_green.css
@@ -0,0 +1,162 @@
+/*
+ $Id: jstyle_green.css 518 2011-10-28 08:09:07Z namiltd $
+ */
+
+* {
+ margin:0;
+ padding:0;
+}
+
+wbr {
+ display: inline-block;
+}
+
+html {
+ background-color:#f3f1e9;
+ color:#666;
+ font-size:100%;
+ height:100%;
+}
+
+body {
+ font-family:Verdana, "Bitstream Vera Sans";
+ font-size:.75em;
+ margin:0 auto;
+ min-height:100%;
+ overflow:auto;
+ padding:20px 20px 0;
+ position:relative;
+ width:940px;
+ _width: 945px; /* ie6 */
+}
+
+h1 {
+ color:#693;
+ font-family:Georgia, serif;
+ font-size:150%;
+ font-weight:400;
+ line-height:1.5em;
+ margin:0 10px;
+ _margin: 0 15px 0 10px; /* ie6 */
+ padding:10px;
+ text-align:center;
+}
+
+h2 {
+ border-bottom:2px solid #693;
+ color:#693;
+ font-family:Georgia, serif;
+ font-size:130%;
+ font-weight:700;
+ line-height:1.5em;
+ padding:3px 10px;
+ text-transform:uppercase;
+}
+
+p {
+ line-height:1.6;
+ padding:4px 10px 2px;
+ text-align:left;
+ vertical-align:top;
+}
+
+table {
+ width:100%;
+}
+.plugin {
+ float: left;
+ margin: 10px 0 0 10px;
+ _margin: 10px 5px 0 5px; /* ie6 */
+ padding: 1px;
+}
+
+th,td,h3 {
+ font-size:100%;
+ padding:4px 10px 2px;
+ text-align:left;
+ vertical-align:top;
+}
+
+a {
+ color:#c03000;
+ text-decoration:none;
+}
+
+a:hover {
+ text-decoration:underline;
+}
+
+/****/
+
+.bar {
+ background-color:#C1DC70;
+}
+
+.barwarn {
+ background-color:#DC8B70;
+}
+
+.even {
+ background:#EBE8DA;
+}
+
+.right {
+ padding-right:20px;
+ text-align:right;
+}
+
+/****/
+
+#filesystemTable thead tr .header {
+ cursor:pointer;
+}
+
+#pciTable, #ideTable, #scsiTable, #usbTable, #tbTable, #i2cTable {
+ padding:0 30px;
+}
+
+#vitals,#network, #memory, #filesystem, #hardware, #temp, #voltage, #fan, #power, #current, #ups {
+ float:left;
+ margin:10px 0 0 10px;
+ _margin: 10px 5px 0 5px; /* ie6 */
+ padding:1px;
+ width:451px;
+}
+
+#memory,#filesystem {
+ width:915px;
+}
+
+#select {
+ text-align:right;
+}
+
+#select select {
+ width:100px;
+}
+
+#footer {
+ clear:both;
+ color:#5C5C5C;
+ font-size:80%;
+ line-height:18px;
+ margin:12px;
+ padding:13px 25px;
+ text-align:center;
+}
+
+.treeimg {
+ display: table-cell;
+ vertical-align: top;
+}
+
+.treespan {
+ display: table-cell;
+ vertical-align: middle;
+}
+
+.treespanbold {
+ font-weight: bold;
+ display: table-cell;
+ vertical-align: middle;
+}
diff --git a/sources/templates/nextgen.css b/sources/templates/nextgen.css
new file mode 100644
index 0000000..d5e46a1
--- /dev/null
+++ b/sources/templates/nextgen.css
@@ -0,0 +1,172 @@
+/*
+ $Id: nextgen.css 518 2011-10-28 08:09:07Z namiltd $
+ */
+a {
+ text-decoration: none;
+ color: #00A;
+}
+
+a:hover {
+ text-decoration: underline;
+ color: #7D9100;
+}
+
+* {
+ margin: 0;
+ padding: 0;
+}
+
+wbr {
+ display: inline-block;
+}
+
+html {
+ height: 100%;
+ background: url("nextgen/nextgen_bg.png") repeat-x scroll center top #F3F1E9;
+}
+
+body {
+ position: relative;
+ width: 940px;
+ _width: 945px; /* ie6 */
+ min-height: 100%;
+ overflow: auto;
+ margin: 0 auto;
+ padding: 20px 20px 0 20px;
+ font: 0.75em arial, tahoma, helvetica, sans-serif;
+ color: #000;
+}
+
+div#container {
+ margin: -20px -10px 0 -10px;
+ padding: 116px 0 0 0;
+}
+
+h1 {
+ position: absolute;
+ top: 35px;
+ left: 10px;
+ margin: 0;
+ padding: 0px 10px;
+ font-size: 2em;
+ font-weight: normal;
+ color: #fff;
+}
+
+#select {
+ position: absolute;
+ top: 75px;
+ color: #FFF;
+ right: 30px;
+ width: 370px;
+ text-align: right;
+}
+
+#select select {
+ width: 100px;
+}
+
+#vitals, #network, #memory, #filesystem, #hardware, #temp, #voltage, #fan, #power, #current, #ups {
+ float: left;
+ width: 451px;
+ margin: 10px 0 0 10px;
+ _margin: 10px 5px 0 5px; /* ie6 */
+ padding: 1px;
+ border: 1px solid #354242;
+}
+
+h2 {
+ padding: 5px 10px;
+ font-family: "trebuchet ms";
+ font-size: 1.2em;
+ font-weight: bold;
+ letter-spacing: 0.0em;
+ text-transform: uppercase;
+ color: #C9DE55; /* #7D9100; */
+ background: #354242;
+}
+
+table {
+ width: 100%;
+}
+
+.plugin {
+ float: left;
+ margin: 10px 0 0 10px;
+ _margin: 10px 5px 0 5px; /* ie6 */
+ padding: 1px;
+ border: 1px solid #354242;
+}
+
+.dataTables_wrapper{
+ margin: 0 0 0 0 !important;
+ border: 0px !important;
+}
+
+
+th, td, h3 {
+ padding: 4px 10px 2px 10px;
+ text-align: left;
+ vertical-align: top;
+}
+
+h3 {
+ font-size: 120%;
+}
+
+.even {
+ background: #DDD;
+}
+
+#footer {
+ color: #777777;
+ clear: both;
+ margin: 12px;
+ padding: 13px 25px;
+ line-height: 18px;
+ text-align: right;
+}
+
+#memory, #filesystem {
+ width: 915px;
+}
+
+.bar {
+ background: #C1DC70 url("../gfx/html.gif");
+}
+
+.barwarn {
+ background: #DC8B70 url("../gfx/htmlwarn.gif");
+}
+
+p {
+ padding: 4px 10px 2px 10px;
+ line-height: 1.6;
+ text-align: left;
+ vertical-align: top;
+}
+
+.right {
+ text-align: right;
+ padding-right: 20px;
+}
+
+#pciTable, #ideTable, #scsiTable, #usbTable, #tbTable, #i2cTable {
+ padding: 0px 30px;
+}
+
+.treeimg {
+ display: table-cell;
+ vertical-align: top;
+}
+
+.treespan {
+ display: table-cell;
+ vertical-align: middle;
+}
+
+.treespanbold {
+ font-weight: bold;
+ display: table-cell;
+ vertical-align: middle;
+}
diff --git a/sources/templates/nextgen/nextgen_bg.png b/sources/templates/nextgen/nextgen_bg.png
new file mode 100644
index 0000000..d6eb330
Binary files /dev/null and b/sources/templates/nextgen/nextgen_bg.png differ
diff --git a/sources/templates/phpsysinfo.css b/sources/templates/phpsysinfo.css
new file mode 100644
index 0000000..24af6e2
--- /dev/null
+++ b/sources/templates/phpsysinfo.css
@@ -0,0 +1,162 @@
+/*
+ $Id: phpsysinfo.css 589 2012-07-01 09:58:44Z namiltd $
+ */
+a {
+ text-decoration: none;
+ color: #c03000;
+}
+
+a:hover {
+ text-decoration: underline;
+}* {
+ margin: 0;
+ padding: 0;
+}
+
+wbr {
+ display: inline-block;
+}
+
+html {
+ height: 100%;
+ background: url("../gfx/html.gif");
+}
+
+body {
+ position: relative;
+ width: 940px;
+ _width: 945px; /* ie6 */
+ min-height: 100%;
+ overflow: auto;
+ margin: 0 auto;
+ padding: 20px 20px 0 20px;
+ font: 0.75em arial, tahoma, helvetica, sans-serif;
+ color: #000;
+ background: #fff url("../gfx/body.gif") repeat-y;
+ _bac\kground: #fff; /* ie6 only */
+}
+
+h1 {
+ margin: 0 10px;
+ _margin: 0 15px 0 10px; /* ie6 */
+ padding: 10px 10px;
+ border-top: 1px solid #8A6E5A;
+ border-bottom: 1px solid #8A6E5A;
+ font-size: 2em;
+ font-weight: normal;
+ color: #fff;
+ background: #8A6E5A;
+}
+
+#select {
+ text-align: right;
+ padding: 10px;
+}
+
+#select select {
+ width: 100px;
+}
+
+#vitals, #network, #memory, #filesystem, #hardware, #temp, #voltage, #fan, #power, #current, #ups {
+ float: left;
+ width: 451px;
+ margin: 10px 0 0 10px;
+ _margin: 10px 5px 0 5px; /* ie6 */
+ padding: 1px;
+ border: 1px solid #5A7E8A;
+}
+
+h2 {
+ padding: 5px 10px;
+ font-family: "trebuchet ms";
+ font-size: 1.2em;
+ font-weight: bold;
+ letter-spacing: 0.0em;
+ text-transform: uppercase;
+ color: #fff;
+ background: #5A7E8A;
+}
+
+table {
+ width: 100%;
+}
+
+.plugin {
+ float: left;
+ margin: 10px 0 0 10px;
+ _margin: 10px 5px 0 5px; /* ie6 */
+ padding: 1px;
+ border: 1px solid #5A7E8A;
+}
+
+.dataTables_wrapper{
+ margin: 0 0 0 0 !important;
+ border: 0px !important;
+}
+
+
+th, td, h3 {
+ padding: 4px 10px 2px 10px;
+ text-align: left;
+ vertical-align: top;
+}
+
+h3 {
+ font-size: 120%;
+}
+
+.even {
+ background: #d6d6d6;
+}
+
+#footer {
+ clear: both;
+ color: #c9c9c9;
+ margin: 12px;
+ padding: 13px 25px;
+ line-height: 18px;
+}
+
+#memory, #filesystem {
+ width: 915px;
+}
+
+.bar {
+ background: #C1DC70 url("../gfx/html.gif");
+}
+
+.barwarn {
+ background: #DC8B70 url("../gfx/htmlwarn.gif");
+}
+
+p {
+ padding: 4px 10px 2px 10px;
+ line-height: 1.6;
+ text-align: left;
+ vertical-align: top;
+}
+
+.right {
+ text-align: right;
+ padding-right: 20px;
+}
+
+#pciTable, #ideTable, #scsiTable, #usbTable, #tbTable, #i2cTable {
+ padding: 0px 30px;
+}
+
+.treeimg {
+ display: table-cell;
+ vertical-align: top;
+}
+
+.treespan {
+ display: table-cell;
+ vertical-align: middle;
+}
+
+.treespanbold {
+ font-weight: bold;
+ display: table-cell;
+ vertical-align: middle;
+}
diff --git a/sources/templates/phpsysinfo_bootstrap.css b/sources/templates/phpsysinfo_bootstrap.css
new file mode 100644
index 0000000..2ce6585
--- /dev/null
+++ b/sources/templates/phpsysinfo_bootstrap.css
@@ -0,0 +1,144 @@
+body {
+ font-size: 13px;
+ padding-top: 80px;
+}
+
+wbr {
+ display: inline-block;
+}
+
+.progress {
+ margin-bottom: 0;
+}
+
+.table td.rightCell, .table th.rightCell {
+ text-align: right;
+}
+
+.percent {
+ text-align: center;
+}
+
+.panel-primary {
+ border: none;
+}
+
+.navbar {
+ background-color: #3b87c8;
+ border-color: #2d6da3;
+}
+
+.navbar-brand, .navbar-brand:hover {
+ color: #fff;
+}
+
+.treegrid-span {
+ display: table-cell;
+ *float: left;
+}
+
+.treegrid-spanbold {
+ font-weight: bold;
+ display: table-cell;
+ *float: left;
+}
+
+.treegrid-indent {
+ width: 16px;
+ height: 16px;
+ display: table-cell;
+ *float: left;
+}
+
+.treegrid-expander {
+ width: 0px;
+ height: 16px;
+ display: table-cell;
+ *float: left;
+ cursor: pointer;
+}
+
+.normalicon {
+ width: 16px;
+ height: 16px;
+ position: relative;
+ top: 1px;
+ display: table-cell;
+ *float: left;
+ font-style: normal;
+ font-weight: normal;
+ line-height: 1;
+
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+.normalicon-right:before {
+ content: "\25ba";
+}
+.normalicon-down:before {
+ content: "\25bc";
+}
+/* IE6 fix */
+* html .normalicon-right {
+ background: url('../gfx/right_black.gif') no-repeat;
+ height: 14px;
+}
+* html .normalicon-down {
+ background: url('../gfx/down_black.gif') no-repeat;
+ height: 14px;
+}
+/* IE7 fix */
+*+html .normalicon-right {
+ background: url('../gfx/right_black.gif') no-repeat;
+ height: 14px;
+}
+*+html .normalicon-down {
+ background: url('../gfx/down_black.gif') no-repeat;
+ height: 14px;
+}
+
+table.sortable thead th {
+ cursor: pointer;
+ position: relative;
+ top: 0;
+ left: 0;
+}
+
+table.sortable thead th:hover {
+ background: #f0f0f0;
+}
+
+table.borderless td,table.borderless th{
+ border: none!important;
+}
+
+.logo {
+ cursor: pointer;
+}
+
+.errorbutton {
+ cursor: pointer;
+}
+
+.template {
+ cursor: pointer;
+}
+
+.language {
+ cursor: pointer;
+}
+
+.panel-heading {
+ background-color: #337ab7!important;
+ border-color: #337ab7!important;
+}
+
+.reload {
+ background-image: url("../gfx/reload.gif");
+ vertical-align: middle;
+ float: right;
+ cursor: pointer;
+ border: 0px;
+ width: 16px;
+ height: 16px;
+}
\ No newline at end of file
diff --git a/sources/templates/phpsysinfo_bootstrap.css.new b/sources/templates/phpsysinfo_bootstrap.css.new
new file mode 100644
index 0000000..3cfc982
--- /dev/null
+++ b/sources/templates/phpsysinfo_bootstrap.css.new
@@ -0,0 +1,189 @@
+body {
+ font-size: 13px;
+ padding-top: 80px;
+ color: #333;
+ background-color: #fff;
+}
+
+wbr {
+ display: inline-block;
+}
+
+.progress {
+ margin-bottom: 0;
+}
+
+.table td.rightCell, .table th.rightCell {
+ text-align: right;
+}
+
+.percent {
+ text-align: center;
+}
+
+.panel-primary {
+ background-color: #fff;
+ border: none;
+}
+
+.navbar {
+ background-color: #3b87c8;
+ border-color: #2d6da3;
+}
+
+.navbar-brand, .navbar-brand:hover {
+ color: #fff;
+}
+
+.treegrid-span {
+ display: table-cell;
+ *float: left;
+}
+
+.treegrid-spanbold {
+ font-weight: bold;
+ display: table-cell;
+ *float: left;
+}
+
+.treegrid-indent {
+ width: 16px;
+ height: 16px;
+ display: table-cell;
+ *float: left;
+}
+
+.treegrid-expander {
+ width: 0px;
+ height: 16px;
+ display: table-cell;
+ *float: left;
+ cursor: pointer;
+}
+
+.normalicon {
+ width: 16px;
+ height: 16px;
+ position: relative;
+ top: 1px;
+ display: table-cell;
+ *float: left;
+ font-style: normal;
+ font-weight: normal;
+ line-height: 1;
+
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+.normalicon-right:before {
+ content: "\25ba";
+}
+.normalicon-down:before {
+ content: "\25bc";
+}
+/* IE6 fix */
+* html .normalicon-right {
+ background: url('../gfx/right_black.gif') no-repeat;
+ height: 14px;
+}
+* html .normalicon-down {
+ background: url('../gfx/down_black.gif') no-repeat;
+ height: 14px;
+}
+/* IE7 fix */
+*+html .normalicon-right {
+ background: url('../gfx/right_black.gif') no-repeat;
+ height: 14px;
+}
+*+html .normalicon-down {
+ background: url('../gfx/down_black.gif') no-repeat;
+ height: 14px;
+}
+
+table.sortable thead th {
+ cursor: pointer;
+ position: relative;
+ top: 0;
+ left: 0;
+}
+
+table.sortable thead th:hover {
+ background: #f0f0f0;
+}
+
+.table-hover > tbody > tr:hover {
+ background-color: #f5f5f5;
+}
+
+table.borderless td,table.borderless th {
+ border: none!important;
+}
+
+.table .table {
+ background-color: #fff;
+}
+
+.logo {
+ cursor: pointer;
+}
+
+.errorbutton {
+ cursor: pointer;
+}
+
+.select {
+ color: #333;
+}
+
+.template {
+ cursor: pointer;
+ color: #333;
+}
+
+.language {
+ cursor: pointer;
+ color: #333;
+}
+
+.panel-heading {
+ background-color: #337ab7!important;
+ border-color: #337ab7!important;
+}
+
+.progress {
+ background-color: #f5f5f5;
+}
+
+.progress-bar-success {
+ background-color: #5cb85c;
+}
+
+.progress-bar-info {
+ background-color: #5bc0de;
+}
+
+.progress-bar-warning {
+ background-color: #f0ad4e;
+}
+
+.progress-bar-danger {
+ background-color: #d9534f;
+}
+
+.modal-content {
+ background-color: #fff;
+}
+
+.list-group-item {
+ background-color: #fff;
+}
+
+.reload {
+ background-image: url("../gfx/reload.gif");
+ vertical-align: middle;
+ float: right;
+ cursor: pointer;
+ border: 0px;
+ width: 16px;
+ height: 16px;
+}
diff --git a/sources/templates/plugin/jquery.dataTables.css b/sources/templates/plugin/jquery.dataTables.css
new file mode 100644
index 0000000..13a684a
--- /dev/null
+++ b/sources/templates/plugin/jquery.dataTables.css
@@ -0,0 +1,14 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * DataTables sorting
+ */
+.sorting_asc {
+ background: url('../../gfx/sort_asc.gif') no-repeat center right;
+}
+
+.sorting_desc {
+ background: url('../../gfx/sort_desc.gif') no-repeat center right;
+}
+
+.sorting {
+ background: url('../../gfx/sort_both.gif') no-repeat center right;
+}
\ No newline at end of file
diff --git a/sources/templates/plugin/jquery.jgrowl.css b/sources/templates/plugin/jquery.jgrowl.css
new file mode 100644
index 0000000..082a044
--- /dev/null
+++ b/sources/templates/plugin/jquery.jgrowl.css
@@ -0,0 +1,132 @@
+
+div.jGrowl {
+ padding: 10px;
+ z-index: 9999;
+ color: #fff;
+ font-size: 12px;
+}
+
+/** Special IE6 Style Positioning **/
+div.ie6 {
+ position: absolute;
+}
+
+div.ie6.top-right {
+ right: auto;
+ bottom: auto;
+ left: expression( ( 0 - jGrowl.offsetWidth + ( document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body.clientWidth ) + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' );
+ top: expression( ( 0 + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' );
+}
+
+div.ie6.top-left {
+ left: expression( ( 0 + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' );
+ top: expression( ( 0 + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' );
+}
+
+div.ie6.bottom-right {
+ left: expression( ( 0 - jGrowl.offsetWidth + ( document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body.clientWidth ) + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' );
+ top: expression( ( 0 - jGrowl.offsetHeight + ( document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' );
+}
+
+div.ie6.bottom-left {
+ left: expression( ( 0 + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' );
+ top: expression( ( 0 - jGrowl.offsetHeight + ( document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' );
+}
+
+div.ie6.center {
+ left: expression( ( 0 + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' );
+ top: expression( ( 0 + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' );
+ width: 100%;
+}
+
+/** Normal Style Positions **/
+div.jGrowl {
+ position: absolute;
+}
+
+body > div.jGrowl {
+ position: fixed;
+}
+
+div.jGrowl.top-left {
+ left: 0px;
+ top: 0px;
+}
+
+div.jGrowl.top-right {
+ right: 0px;
+ top: 0px;
+}
+
+div.jGrowl.bottom-left {
+ left: 0px;
+ bottom: 0px;
+}
+
+div.jGrowl.bottom-right {
+ right: 0px;
+ bottom: 0px;
+}
+
+div.jGrowl.center {
+ top: 0px;
+ width: 50%;
+ left: 25%;
+}
+
+/** Cross Browser Styling **/
+div.center div.jGrowl-notification, div.center div.jGrowl-closer {
+ margin-left: auto;
+ margin-right: auto;
+}
+
+div.jGrowl div.jGrowl-notification, div.jGrowl div.jGrowl-closer {
+ background-color: #000;
+ opacity: .85;
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=85)";
+ filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=85);
+ zoom: 1;
+ width: 235px;
+ padding: 10px;
+ margin-top: 5px;
+ margin-bottom: 5px;
+ font-family: Tahoma, Arial, Helvetica, sans-serif;
+ font-size: 1em;
+ text-align: left;
+ display: none;
+ -moz-border-radius: 5px;
+ -webkit-border-radius: 5px;
+}
+
+div.jGrowl div.jGrowl-notification {
+ min-height: 40px;
+}
+
+div.jGrowl div.jGrowl-notification div.jGrowl-header {
+ font-weight: bold;
+ font-size: .85em;
+}
+
+div.jGrowl div.jGrowl-notification div.jGrowl-close {
+ z-index: 99;
+ float: right;
+ font-weight: bold;
+ font-size: 1em;
+ cursor: pointer;
+}
+
+div.jGrowl div.jGrowl-closer {
+ padding-top: 4px;
+ padding-bottom: 4px;
+ cursor: pointer;
+ font-size: .9em;
+ font-weight: bold;
+ text-align: center;
+}
+
+/** Hide jGrowl when printing **/
+@media print {
+ div.jGrowl {
+ display: none;
+ }
+}
\ No newline at end of file
diff --git a/sources/templates/plugin/jquery.treeTable.css b/sources/templates/plugin/jquery.treeTable.css
new file mode 100644
index 0000000..4e6e853
--- /dev/null
+++ b/sources/templates/plugin/jquery.treeTable.css
@@ -0,0 +1,37 @@
+/*
+ Copyright: Paul Hanlon
+
+ Released under the MIT/BSD licence which means you can do anything you want
+ with it, as long as you keep this copyright notice on the page
+ */
+.collapsed {
+ display: none;
+}
+
+.tablemain {
+ border-collapse: collapse;
+ padding: 0px;
+ text-align: left;
+}
+
+.tablemain td {
+ margin-left: 3px;
+}
+
+.tree td {
+ padding: 0px 2px 0px 0px;
+ cursor: pointer;
+}
+
+.adeimg, .ttimage, .parimg, .preimg {
+ border: none;
+ margin: 0px;
+ padding: 0px;
+ vertical-align: bottom;
+ width: 16px;
+ height: 16px;
+}
+
+.adeimg, .parimg {
+ cursor: pointer;
+}
diff --git a/sources/templates/plugin/nyroModal.full.css b/sources/templates/plugin/nyroModal.full.css
new file mode 100644
index 0000000..a4c59b7
--- /dev/null
+++ b/sources/templates/plugin/nyroModal.full.css
@@ -0,0 +1,105 @@
+div#nyroModalFull {
+ font-size: 12px;
+ color: #777;
+}
+div#nyroModalFull div#nyroModalLoading {
+ border: 4px solid #777;
+ width: 150px;
+ height: 150px;
+ text-indent: -9999em;
+ background: #fff url(../../gfx/ajaxLoader.gif) no-repeat;
+ background-position: center;
+}
+div#nyroModalFull div#nyroModalLoading.error {
+ border: 4px solid #f66;
+ line-height: 20px;
+ padding: 20px;
+ width: 300px;
+ height: 100px;
+ text-indent: 0;
+ background: #fff;
+}
+div#nyroModalFull div#nyroModalWrapper {
+ background: #fff;
+ border: 4px solid #777;
+}
+div#nyroModalFull div#nyroModalWrapper a#closeBut {
+ position: absolute;
+ display: block;
+ top: -13px;
+ right: -13px;
+ width: 12px;
+ height: 12px;
+ text-indent: -9999em;
+ background: url(../../gfx/close.gif) no-repeat;
+ outline: 0;
+}
+div#nyroModalFull div#nyroModalWrapper h1#nyroModalTitle {
+ margin: 0;
+ padding: 0;
+ position: absolute;
+ top: -22px;
+ left: 5px;
+ font-size: 12px;
+ color: #ddd;
+}
+div#nyroModalFull div#nyroModalWrapper div#nyroModalContent {
+ overflow: auto;
+}
+div#nyroModalFull div#nyroModalWrapper div.wrapper div#nyroModalContent {
+ padding: 5px;
+}
+div#nyroModalFull div#nyroModalWrapper div.wrapperImg div#nyroModalContent {
+ position: relative;
+ overflow: hidden;
+ text-align: center;
+}
+div#nyroModalFull div#nyroModalWrapper div.wrapperImg div#nyroModalContent img {
+ vertical-align: baseline;
+}
+div#nyroModalFull div#nyroModalWrapper div.wrapperImg div#nyroModalContent div {
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ background: black;
+ padding: 10px;
+ margin: 10px;
+ border: 1px white dotted;
+ overflow: hidden;
+ opacity: 0.2;
+ filter: alpha(opacity=20);
+}
+div#nyroModalFull div#nyroModalWrapper div.wrapperImg div#nyroModalContent div:hover {
+ opacity: 0.5;
+ filter: alpha(opacity=50);
+ cursor: help;
+}
+div#nyroModalFull div#nyroModalWrapper a.nyroModalPrev, div#nyroModalFull div#nyroModalWrapper a.nyroModalNext {
+ z-index: 105;
+ outline: none;
+ position: absolute;
+ top: 0;
+ height: 100%;
+ width: 40%;
+ cursor: pointer;
+ text-indent: -9999em;
+ background: left 20% no-repeat;
+ background-image: url(data:image/gif;base64,AAAA); /* Trick IE6 */
+}
+div#nyroModalFull div#nyroModalWrapper div.wrapperSwf a.nyroModalPrev, div#nyroModalFull div#nyroModalWrapper div.wrapperSwf a.nyroModalNext, div#nyroModalFull div#nyroModalWrapper div.wrapper a.nyroModalPrev, div#nyroModalFull div#nyroModalWrapper div.wrapper a.nyroModalNext {
+ height: 60%;
+ width: 20%;
+}
+div#nyroModalFull div#nyroModalWrapper div#nyroModalContent a.nyroModalPrev {
+ left: 0;
+}
+div#nyroModalFull div#nyroModalWrapper div#nyroModalContent a.nyroModalPrev:hover {
+ background-image: url(../../gfx/prev.gif);
+}
+div#nyroModalFull div#nyroModalWrapper div#nyroModalContent a.nyroModalNext {
+ right: 0;
+ background-position: right 20%;
+}
+div#nyroModalFull div#nyroModalWrapper div#nyroModalContent a.nyroModalNext:hover {
+ background-image: url(../../gfx/next.gif);
+}
\ No newline at end of file
diff --git a/sources/templates/two.css b/sources/templates/two.css
new file mode 100644
index 0000000..b60559b
--- /dev/null
+++ b/sources/templates/two.css
@@ -0,0 +1,143 @@
+/*
+ $Id: two.css 518 2011-10-28 08:09:07Z namiltd $
+ */
+a {
+ text-decoration: none;
+ color: #c03000;
+}
+
+a:hover {
+ text-decoration: underline;
+}* {
+ margin: 0;
+ padding: 0;
+}
+
+wbr {
+ display: inline-block;
+}
+
+html {
+ font-size: 100%;
+ height: 100%;
+ color: #2B2828;
+ background: url("two/gradient.png") repeat-x #EEF2FE;
+}
+
+body {
+ font-family: Verdana, "Bitstream Vera Sans";
+ font-size: .75em;
+ position: relative;
+ width: 940px;
+ _width: 945px; /* ie6 */
+ min-height: 100%;
+ overflow: auto;
+ margin: 0 auto;
+ padding: 20px 20px 0 20px;
+}
+
+h1 {
+ margin: 0 10px;
+ _margin: 0 15px 0 10px; /* ie6 */
+ padding: 10px 10px;
+ text-align: center;
+ color: #fff;
+ font-weight: normal;
+ font-size: 170%;
+ line-height: 1.5em;
+}
+
+#select {
+ color: #fff;
+ text-align: right;
+ margin-bottom: 45px;
+}
+
+#select select {
+ width: 100px;
+}
+
+h2 {
+ font-weight: bold;
+ font-size: 130%;
+ line-height: 1.5em;
+ color: #8B272A;
+ border-bottom: 2px solid #8B272A;
+}
+
+table {
+ width: 100%;
+}
+
+.plugin {
+ float: left;
+ margin: 10px 0 0 10px;
+ _margin: 10px 5px 0 5px; /* ie6 */
+ padding: 1px;
+}
+
+th, td, h3 {
+ padding: 4px 10px 2px 10px;
+ text-align: left;
+ vertical-align: top;
+ font-size: 100%;
+}
+
+#footer {
+ clear: both;
+ color: #5C5C5C;
+ margin: 12px;
+ padding: 13px 25px;
+ line-height: 18px;
+ font-size: 80%;
+ text-align: center;
+}
+
+.bar {
+ background-color: #8B272A;
+}
+
+.barwarn {
+ background-color: #88278B;
+}
+
+#vitals, #network, #memory, #filesystem, #hardware, #temp, #voltage, #fan, #power, #current, #ups {
+ float: left;
+ width: 451px;
+ margin: 10px 0 0 10px;
+ _margin: 10px 5px 0 5px; /* ie6 */
+ padding: 1px;
+}
+
+#memory, #filesystem {
+ width: 915px;
+}
+
+#filesystemTable thead tr .header {
+ cursor: pointer;
+}
+
+.right {
+ text-align: right;
+ padding-right: 20px;
+}
+
+#pciTable, #ideTable, #scsiTable, #usbTable, #tbTable, #i2cTable {
+ padding: 0px 30px;
+}
+
+.treeimg {
+ display: table-cell;
+ vertical-align: top;
+}
+
+.treespan {
+ display: table-cell;
+ vertical-align: middle;
+}
+
+.treespanbold {
+ font-weight: bold;
+ display: table-cell;
+ vertical-align: middle;
+}
diff --git a/sources/templates/two/gradient.png b/sources/templates/two/gradient.png
new file mode 100644
index 0000000..9a7a470
Binary files /dev/null and b/sources/templates/two/gradient.png differ
diff --git a/sources/templates/vendor/bootstrap.min.css b/sources/templates/vendor/bootstrap.min.css
new file mode 100644
index 0000000..4cf729e
--- /dev/null
+++ b/sources/templates/vendor/bootstrap.min.css
@@ -0,0 +1,6 @@
+/*!
+ * Bootstrap v3.3.6 (http://getbootstrap.com)
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}
+/*# sourceMappingURL=bootstrap.min.css.map */
\ No newline at end of file
diff --git a/sources/tools/MakeRelease.sh b/sources/tools/MakeRelease.sh
new file mode 100644
index 0000000..6cbd4af
--- /dev/null
+++ b/sources/tools/MakeRelease.sh
@@ -0,0 +1,32 @@
+#!/bin/sh -x
+
+if [ $# -ne 1 ]
+then
+ echo "Usage : ./tools/MakeRelease "
+ exit
+fi
+
+sed -i "s/PSI_VERSION = '.*'/PSI_VERSION = '$1'/g" includes/class.CommonFunctions.inc.php
+ARCHIVE_NAME="phpsysinfo-$1.tar.gz"
+
+#copy to temp dir
+rm -rf /tmp/phpsysinfo
+mkdir /tmp/phpsysinfo
+cp -R . /tmp/phpsysinfo
+cd /tmp/phpsysinfo
+
+# remove the svn directories
+find . -type d -name .svn -exec rm -fr {} \;
+#or find . -iname ".svn" -print0 | xargs -0 rm -r
+
+#remove some dirs
+rm -rf tools sample
+
+#remove phpsysinfo.ini
+rm -rf phpsysinfo.ini .cvsignore .project
+
+#create archive
+cd ..
+tar -czf $ARCHIVE_NAME phpsysinfo
+
+md5sum $ARCHIVE_NAME
diff --git a/sources/tools/README b/sources/tools/README
new file mode 100644
index 0000000..71d6c21
--- /dev/null
+++ b/sources/tools/README
@@ -0,0 +1,4 @@
+check.sh - Script for checking *.php files and reformat them
+MakeRelease.sh - Cleanup the code a bit for a release
+phpsysinfo.ini - Configuration file for generating documentation with phpDocumentor
+lint.bat - run php lint on every php file to check for syntax (windows util)
diff --git a/sources/tools/aptana/js.xml b/sources/tools/aptana/js.xml
new file mode 100644
index 0000000..ca19006
--- /dev/null
+++ b/sources/tools/aptana/js.xml
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sources/tools/aptana/php.xml b/sources/tools/aptana/php.xml
new file mode 100644
index 0000000..15fadc4
--- /dev/null
+++ b/sources/tools/aptana/php.xml
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sources/tools/check.sh b/sources/tools/check.sh
new file mode 100644
index 0000000..62d32cb
--- /dev/null
+++ b/sources/tools/check.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+FILES=`find ../ \( \( -iwholename '*tool*' -o -iwholename '*lang*' \) -prune -o -iname '*.php' \) -a -type f`
+
+for entry in ${FILES}; do
+ php -l ${entry}
+ if [ $? -ne 0 ]
+ then
+ exit;
+ fi
+done
+
+for entry in ${FILES}; do
+ echo "running phpcs --standard=PEAR on ${entry}"
+ phpcs --standard=PEAR ${entry}
+done
diff --git a/sources/tools/checkdistro.php b/sources/tools/checkdistro.php
new file mode 100644
index 0000000..0d870e2
--- /dev/null
+++ b/sources/tools/checkdistro.php
@@ -0,0 +1,212 @@
+";
+echo " ";
+echo " ";
+echo "";
+
+define('APP_ROOT', dirname(__FILE__).'/..');
+require_once APP_ROOT.'/includes/interface/class.PSI_Interface_OS.inc.php';
+require_once APP_ROOT.'/includes/os/class.OS.inc.php';
+require_once APP_ROOT.'/includes/to/class.System.inc.php';
+require_once APP_ROOT.'/includes/os/class.Linux.inc.php';
+define('PSI_USE_VHOST', false);
+define('PSI_DEBUG', false);
+define('PSI_LOAD_BAR', false);
+
+$log_file = "";
+$lsb = true; //enable detection lsb_release -a
+$lsbfile = true; //enable detection /etc/lsb-release
+
+class PSI_Error
+{
+ public static function singleton()
+ {
+ }
+}
+
+class Parser
+{
+ public static function lspci()
+ {
+ return array();
+ }
+ public static function df()
+ {
+ return array();
+ }
+}
+
+class CommonFunctions
+{
+ private static function _parse_log_file($string)
+ {
+ global $log_file;
+ if (file_exists($log_file)) {
+ $contents = @file_get_contents($log_file);
+ $contents = preg_replace("/\r\n/", "\n", $contents);
+ if ($contents && preg_match("/^\-\-\-\-\-\-\-\-\-\-".preg_quote($string, '/')."\-\-\-\-\-\-\-\-\-\-\n/m", $contents, $matches, PREG_OFFSET_CAPTURE)) {
+ $findIndex = $matches[0][1];
+ if (preg_match("/\n/m", $contents, $matches, PREG_OFFSET_CAPTURE, $findIndex)) {
+ $startIndex = $matches[0][1]+1;
+ if (preg_match("/^\-\-\-\-\-\-\-\-\-\-/m", $contents, $matches, PREG_OFFSET_CAPTURE, $startIndex)) {
+ $stopIndex = $matches[0][1];
+
+ return substr($contents, $startIndex, $stopIndex-$startIndex);
+ } else {
+ return substr($contents, $startIndex);
+ }
+ }
+ }
+ }
+
+ return false;
+ }
+
+ public static function rfts($strFileName, &$strRet, $intLines = 0, $intBytes = 4096, $booErrorRep = true)
+ {
+ global $lsb;
+ global $lsbfile;
+ if ($lsb || $lsbfile || ($strFileName != "/etc/lsb-release")) {
+ $strRet=self::_parse_log_file($strFileName);
+ if ($strRet && ($intLines == 1) && (strpos($strRet, "\n") !== false)) {
+ $strRet=trim(substr($strRet, 0, strpos($strRet, "\n")));
+ }
+
+ return $strRet;
+ } else {
+ return false;
+ }
+ }
+
+ public static function executeProgram($strProgramname, $strArgs, &$strBuffer, $booErrorRep = true)
+ {
+ global $lsb;
+ $strBuffer = '';
+ if ($strProgramname=='lsb_release') {
+ return $lsb && ($strBuffer = self::_parse_log_file('lsb_release -a'));
+ } else {
+ return $strBuffer = self::_parse_log_file($strProgramname);
+ }
+ }
+
+ public static function fileexists($strFileName)
+ {
+ global $log_file;
+ global $lsb;
+ global $lsbfile;
+ if (file_exists($log_file)
+ && ($lsb || $lsbfile || ($strFileName != "/etc/lsb-release"))
+ && ($contents = @file_get_contents($log_file))
+ && preg_match("/^\-\-\-\-\-\-\-\-\-\-".preg_quote($strFileName, '/')."\-\-\-\-\-\-\-\-\-\-\r?\n/m", $contents)) {
+ return true;
+ }
+
+ return false;
+ }
+
+ public static function gdc()
+ {
+ return array();
+ }
+}
+
+class _Linux extends Linux
+{
+ public function build()
+ {
+ parent::_distro();
+ }
+}
+
+$system = new _Linux();
+if ($handle = opendir(APP_ROOT.'/sample/distrotest')) {
+ echo "";
+ echo "Distrotest sample ";
+ echo "Distro Name ";
+ echo "Distro Icon ";
+ echo "Distro Name (no lsb_release) ";
+ echo "Distro Icon (no lsb_release) ";
+ echo "Distro Name (no lsb_release and no /etc/lsb-release) ";
+ echo "Distro Icon (no lsb_release and no /etc/lsb-release) ";
+ echo "";
+ while (false !== ($entry = readdir($handle))) {
+ if (($entry!=".")&&($entry!="..")) {
+ if ($shandle = opendir(APP_ROOT."/sample/distrotest/$entry")) {
+ while (false !== ($sentry = readdir($shandle))) {
+ if (($sentry!=".")&&($sentry!="..")) {
+ $log_file=APP_ROOT.'/sample/distrotest/'.$entry.'/'.$sentry;
+ echo "";
+ echo "".$entry.'/'.$sentry." ";
+
+ $lsb = true;
+ $lsbfile = true;
+ $sys=$system->getSys();
+ $distro=$sys->getDistribution();
+ $icon=$sys->getDistributionIcon();
+ if ($icon == '') $icon="unknown.png";
+ if ($icon != $entry.'.png')
+ echo "";
+ else
+ echo " ";
+ echo $distro." ";
+ if ($icon != $entry.'.png')
+ echo "";
+ else
+ echo " ";
+ echo " ";
+ echo $icon." ";
+ $sys->setDistribution("");
+ $sys->setDistributionIcon("");
+
+ $lsb = false;
+ $lsbfile = true;
+ $sys=$system->getSys();
+ $distro=$sys->getDistribution();
+ $icon=$sys->getDistributionIcon();
+ if ($icon == '') $icon="unknown.png";
+ if ($icon != $entry.'.png')
+ echo "";
+ else
+ echo " ";
+ echo $distro." ";
+ if ($icon != $entry.'.png')
+ echo "";
+ else
+ echo " ";
+ echo " ";
+ echo $icon." ";
+ $sys->setDistribution("");
+ $sys->setDistributionIcon("");
+
+ $lsb = false;
+ $lsbfile = false;
+ $sys=$system->getSys();
+ $distro=$sys->getDistribution();
+ $icon=$sys->getDistributionIcon();
+ if ($icon == '') $icon="unknown.png";
+ if ($icon != $entry.'.png')
+ echo "";
+ else
+ echo " ";
+ echo $distro." ";
+ if ($icon != $entry.'.png')
+ echo "";
+ else
+ echo " ";
+ echo " ";
+ echo $icon." ";
+ $sys->setDistribution("");
+ $sys->setDistributionIcon("");
+
+ echo " ";
+ }
+ }
+ closedir($shandle);
+ }
+ }
+ }
+ echo "
";
+ closedir($handle);
+}
+echo "";
diff --git a/sources/tools/distrotest.php b/sources/tools/distrotest.php
new file mode 100644
index 0000000..11bdcdc
--- /dev/null
+++ b/sources/tools/distrotest.php
@@ -0,0 +1,45 @@
+/dev/null", "r");
+if (is_resource($fp)) {
+ $contents="";
+ $start=true;
+ while (!feof($fp)) {
+ $contents=fgets($fp, 4096);
+ if ($start && (strlen($contents)>0)) {
+ echo "----------lsb_release -a----------\n";
+ $start=false;
+ }
+ echo $contents;
+ }
+ if ((strlen($contents)>0)&&(substr($contents, -1)!="\n")) {
+ echo "\n";
+ }
+ pclose($fp);
+}
+
+foreach ($filemaskarray as $filemask) {
+ foreach (glob($filemask) as $filename) {
+ echo "----------".$filename."----------\n";
+ echo $contents=file_get_contents($filename);
+ if ((strlen($contents)>0)&&(substr($contents, -1)!="\n")) {
+ echo "\n";
+ }
+ }
+}
diff --git a/sources/tools/lint.bat b/sources/tools/lint.bat
new file mode 100644
index 0000000..b0502ab
--- /dev/null
+++ b/sources/tools/lint.bat
@@ -0,0 +1,10 @@
+@echo off
+echo.
+echo Starting SVN Stat + PHP Lint
+echo ============================
+svn stat |findstr /I /R "\.php$ \.phtml$" >lint.txt
+for /F "tokens=2 delims= " %%i in (lint.txt) do q:\php53\php.exe -l %%i |findstr /I /B /V "No syntax errors"
+del lint.txt
+echo.
+echo ============================
+echo Finished SVN Stat + PHP Lint
diff --git a/sources/tools/speedfan/SpeedFanGet_bin.zip b/sources/tools/speedfan/SpeedFanGet_bin.zip
new file mode 100644
index 0000000..485aec9
Binary files /dev/null and b/sources/tools/speedfan/SpeedFanGet_bin.zip differ
diff --git a/sources/tools/speedfan/SpeedFanGet_src.zip b/sources/tools/speedfan/SpeedFanGet_src.zip
new file mode 100644
index 0000000..7f25b7f
Binary files /dev/null and b/sources/tools/speedfan/SpeedFanGet_src.zip differ
diff --git a/sources/xml.php b/sources/xml.php
new file mode 100644
index 0000000..d6f9b00
--- /dev/null
+++ b/sources/xml.php
@@ -0,0 +1,63 @@
+
+ * @copyright 2009 phpSysInfo
+ * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License
+ * @version SVN: $Id: xml.php 614 2012-07-28 09:02:59Z jacky672 $
+ * @link http://phpsysinfo.sourceforge.net
+ */
+
+ /**
+ * application root path
+ *
+ * @var string
+ */
+define('APP_ROOT', dirname(__FILE__));
+
+/**
+ * internal xml or external
+ * external is needed when running in static mode
+ *
+ * @var boolean
+ */
+define('PSI_INTERNAL_XML', true);
+
+require_once APP_ROOT.'/includes/autoloader.inc.php';
+
+// check what xml part should be generated
+if (isset($_GET['plugin'])) {
+ $plugin = basename(htmlspecialchars($_GET['plugin']));
+ if ($plugin == "complete") {
+ $output = new WebpageXML(true, null);
+ } elseif ($plugin != "") {
+ $output = new WebpageXML(false, $plugin);
+ } else {
+ unset($output);
+ }
+} else {
+ $output = new WebpageXML(false, null);
+}
+// if $output is correct generate output in proper type
+if (isset($output) && is_object($output)) {
+ if (isset($_GET['json']) || isset($_GET['jsonp'])) {
+ if (version_compare("5.2", PHP_VERSION, ">")) {
+ echo ' ';
+ } else {
+ if (defined('PSI_JSON_ISSUE') && (PSI_JSON_ISSUE)) {
+ $json = json_encode(simplexml_load_string(str_replace(">", ">\n", $output->getXMLString()))); // solving json_encode issue
+ } else {
+ $json = json_encode(simplexml_load_string($output->getXMLString()));
+ }
+ echo isset($_GET['jsonp']) ? (!preg_match('/[^A-Za-z0-9_\?]/', $_GET['callback'])?$_GET['callback']:'') . '('.$json.')' : $json;
+ }
+ } else {
+ $output->run();
+ }
+}