From 337643e53e29b9862b92c6d73ce7a27975e79d02 Mon Sep 17 00:00:00 2001 From: aspangaro <alexandre.spangaro@gmail.com> Date: Wed, 4 Nov 2015 22:31:24 +0100 Subject: [PATCH 001/197] Accountancy : Correct errors of display in bank journal --- htdocs/accountancy/journal/bankjournal.php | 70 ++++++++++++++-------- 1 file changed, 46 insertions(+), 24 deletions(-) diff --git a/htdocs/accountancy/journal/bankjournal.php b/htdocs/accountancy/journal/bankjournal.php index c97cde97b14..bed5376064f 100644 --- a/htdocs/accountancy/journal/bankjournal.php +++ b/htdocs/accountancy/journal/bankjournal.php @@ -264,7 +264,7 @@ if ($result) { */ // Write bookkeeping -if ($action == 'writeBookKeeping') +if ($action == 'writebookkeeping') { $error = 0; foreach ( $tabpay as $key => $val ) @@ -406,10 +406,32 @@ if ($action == 'writeBookKeeping') } } // Export -if ($action == 'export_csv') -{ +if ($action == 'export_csv') { $sep = $conf->global->ACCOUNTING_EXPORT_SEPARATORCSV; - $bank_journal = $conf->global->ACCOUNTING_BANK_JOURNAL; + + // Journal + $bank = "SELECT rowid, label, accountancy_journal"; + $bank.= " FROM ".MAIN_DB_PREFIX."bank_account"; + $bank.= " WHERE entity = ".$conf->entity; + $bank.= " AND rowid = '".$id_accountancy_journal."'"; + + $resql = $db->query($bank); + if ($resql) + { + if ($db->num_rows($resql)) + { + $obj = $db->fetch_object($resql); + + $journal = $objp->accountancy_journal; + } + return 1; + } + else + { + dol_print_error($this->db); + return -1; + } + //$journal = $conf->global->ACCOUNTING_BANK_JOURNAL; header('Content-Type: text/csv'); header('Content-Disposition: attachment;filename=journal_banque.csv'); @@ -421,16 +443,16 @@ if ($action == 'export_csv') $sep = ";"; foreach ( $tabpay as $key => $val ) { - $date = dol_print_date($db->jdate($val["date"]), '%d%m%Y'); - - $companystatic->id = $tabcompany[$key]['id']; $companystatic->name = $tabcompany[$key]['name']; + $companystatic->client = $tabcompany[$key]['code_client']; + + $date = dol_print_date($db->jdate($val["date"]), '%d%m%Y'); // Bank foreach ( $tabbq[$key] as $k => $mt ) { print $date . $sep; - print $bank_journal . $sep; + print $journal . $sep; print length_accountg(html_entity_decode($k)) . $sep; print $sep; print ($mt < 0 ? 'C' : 'D') . $sep; @@ -448,7 +470,7 @@ if ($action == 'export_csv') if ($mt) { print $date . $sep; - print $bank_journal . $sep; + print $journal . $sep; if ($val["lib"] == '(SupplierInvoicePayment)') { print length_accountg($conf->global->ACCOUNTING_ACCOUNT_SUPPLIER) . $sep; } else { @@ -470,8 +492,8 @@ if ($action == 'export_csv') if (1) { print $date . $sep; - print $bank_journal . $sep; - print $conf->global->ACCOUNTING_ACCOUNT_SUSPENSE . $sep; + print $journal . $sep; + print length_accountg($conf->global->ACCOUNTING_ACCOUNT_SUSPENSE) . $sep; print $sep; print ($mt < 0 ? 'D' : 'C') . $sep; print ($mt <= 0 ? price(- $mt) : $mt) . $sep; @@ -482,8 +504,7 @@ if ($action == 'export_csv') } } } - } else // Model Classic Export - { + } else { // Model Classic Export foreach ( $tabpay as $key => $val ) { $date = dol_print_date($db->jdate($val["date"]), 'day'); @@ -525,7 +546,7 @@ if ($action == 'export_csv') { print '"' . $date . '"' . $sep; print '"' . $val["ref"] . '"' . $sep; - print '"' . $conf->global->ACCOUNTING_ACCOUNT_SUSPENSE . '"' . $sep; + print '"' . length_accountg($conf->global->ACCOUNTING_ACCOUNT_SUSPENSE) . '"' . $sep; print '"' . $langs->trans("Bank") . '"' . $sep; print '"' . ($mt < 0 ? price(- $mt) : '') . '"' . $sep; print '"' . ($mt >= 0 ? price($mt) : '') . '"'; @@ -535,15 +556,13 @@ if ($action == 'export_csv') } } } -} -else -{ - +} else { $form = new Form($db); llxHeader('', $langs->trans("BankJournal")); $namereport = $langs->trans("BankJournal"); + $namereport.= " " . $journal; $description = $langs->trans("DescBankJournal"); $period = $form->select_date($date_start, 'date_start', 0, 0, 0, '', 1, 0, 1) . ' - ' . $form->select_date($date_end, 'date_end', 0, 0, 0, '', 1, 0, 1); @@ -553,9 +572,11 @@ else $head[$h][1] = $langs->trans("Report"); $head[$h][2] = 'report'; - dol_fiche_head($head, $hselected); + dol_fiche_head($head, 'report'); print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'?id_account='.$id_accountancy_journal.'">'; + print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; + print '<table width="100%" class="border">'; // Title @@ -594,8 +615,8 @@ else print '<input type="button" class="button" style="float: right;" value="' . $langs->trans("Export") . '" onclick="launch_export();" />'; - print '<input type="button" class="button" value="' . $langs->trans("WriteBookKeeping") . '" onclick="writeBookKeeping();" />'; - + print '<input type="button" class="button" value="' . $langs->trans("WriteBookKeeping") . '" onclick="writebookkeeping();" />'; + print ' <script type="text/javascript"> function launch_export() { @@ -603,8 +624,8 @@ else $("div.fiche div.tabBar form input[type=\"submit\"]").click(); $("div.fiche div.tabBar form input[name=\"action\"]").val(""); } - function writeBookKeeping() { - $("div.fiche div.tabBar form input[name=\"action\"]").val("writeBookKeeping"); + function writebookkeeping() { + $("div.fiche div.tabBar form input[name=\"action\"]").val("writebookkeeping"); $("div.fiche div.tabBar form input[type=\"submit\"]").click(); $("div.fiche div.tabBar form input[name=\"action\"]").val(""); } @@ -674,8 +695,9 @@ else print "<tr " . $bc[$var] . ">"; print "<td>" . $date . "</td>"; print "<td>" . $reflabel . "</td>"; - print "<td>" . $conf->global->ACCOUNTING_ACCOUNT_SUSPENSE . "</td>"; + print "<td>" . length_accountg($conf->global->ACCOUNTING_ACCOUNT_SUSPENSE) . "</td>"; print "<td>" . $langs->trans('ThirdParty') . "</td>"; + print "<td> </td>"; print "<td align='right'>" . ($mt < 0 ? price(- $mt) : '') . "</td>"; print "<td align='right'>" . ($mt >= 0 ? price($mt) : '') . "</td>"; print "</tr>"; -- GitLab From 9f27e2323f33e42e27fb55ddaf7dfffced77f87a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garci=CC=81a=20de=20La=20Fuente?= <marcosgdf@gmail.com> Date: Sat, 21 Nov 2015 11:51:23 +0100 Subject: [PATCH 002/197] FIX #3734 Do not show empty links of deleted source objects in stock movement list --- htdocs/product/stock/class/mouvementstock.class.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/htdocs/product/stock/class/mouvementstock.class.php b/htdocs/product/stock/class/mouvementstock.class.php index 2d4a8971f1b..7cc687c9191 100644 --- a/htdocs/product/stock/class/mouvementstock.class.php +++ b/htdocs/product/stock/class/mouvementstock.class.php @@ -508,7 +508,10 @@ class MouvementStock break; } - $origin->fetch($fk_origin); - return $origin->getNomUrl(1); + if ($origin->fetch($fk_origin) > 0) { + return $origin->getNomUrl(1); + } + + return ''; } } -- GitLab From 91ce70a6e98035e8796f2953974a9ba3fe9a17f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Doursenaud?= <rdoursenaud@gpcsolutions.fr> Date: Mon, 23 Nov 2015 17:25:10 +0100 Subject: [PATCH 003/197] FIX #4081 Added missing translation --- htdocs/langs/en_US/users.lang | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/langs/en_US/users.lang b/htdocs/langs/en_US/users.lang index a9d789b8c31..197d56e37ee 100644 --- a/htdocs/langs/en_US/users.lang +++ b/htdocs/langs/en_US/users.lang @@ -119,3 +119,4 @@ HierarchicView=Hierarchical view UseTypeFieldToChange=Use field Type to change OpenIDURL=OpenID URL LoginUsingOpenID=Use OpenID to login +DisabledInMonoUserMode=Disabled in maintenance mode -- GitLab From 973e42d10f5a70fc26f1e133f8006160c9de8169 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Doursenaud?= <rdoursenaud@gpcsolutions.fr> Date: Wed, 25 Nov 2015 19:30:20 +0100 Subject: [PATCH 004/197] FIX #4097 Public holiday calculation The last day was ommitted and never parsed. If this day was a saturday, sunday or public holiday day, it was not computed. --- htdocs/core/lib/date.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/lib/date.lib.php b/htdocs/core/lib/date.lib.php index 924d3da2259..2604d6c9086 100644 --- a/htdocs/core/lib/date.lib.php +++ b/htdocs/core/lib/date.lib.php @@ -566,7 +566,7 @@ function num_public_holiday($timestampStart, $timestampEnd, $countrycode='FR') if ((($timestampEnd - $timestampStart) % 86400) != 0) return 'ErrorDates must use same hours and must be GMT dates'; $i=0; - while ($timestampStart < $timestampEnd && ($i < 50000)) // Loop end when equals (Test on i is a security loop to avoid infinite loop) + while ($timestampStart <= $timestampEnd && ($i < 50000)) // Loop end when equals (Test on i is a security loop to avoid infinite loop) { $ferie=false; $countryfound=0; -- GitLab From 3457a732f52a017e4dab55a43346f0952c9591e7 Mon Sep 17 00:00:00 2001 From: aspangaro <alexandre.spangaro@gmail.com> Date: Wed, 25 Nov 2015 20:19:18 +0100 Subject: [PATCH 005/197] New: Better integration of skype --- htdocs/admin/skype.php | 166 +++++++++++++++++++++++ htdocs/core/class/commonobject.class.php | 1 + htdocs/core/modules/modSkype.class.php | 6 +- htdocs/langs/en_US/admin.lang | 5 + 4 files changed, 175 insertions(+), 3 deletions(-) create mode 100644 htdocs/admin/skype.php diff --git a/htdocs/admin/skype.php b/htdocs/admin/skype.php new file mode 100644 index 00000000000..a1778afd101 --- /dev/null +++ b/htdocs/admin/skype.php @@ -0,0 +1,166 @@ +<?php +/* Copyright (C) 2015 Alexandre Spangaro <aspangaro.dolibarr@gmail.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 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, see <http://www.gnu.org/licenses/>. + */ + +/** + * \file htdocs/admin/skype.php + * \ingroup Skype + * \brief Skype module setup page + */ +require('../main.inc.php'); +require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; + +$langs->load("admin"); + +if (! $user->admin) + accessforbidden(); + +$action = GETPOST('action', 'alpha'); + +/* + * Actions + */ +if (preg_match('/set_(.*)/',$action,$reg)) +{ + $code=$reg[1]; + $value=(GETPOST($code) ? GETPOST($code) : 1); + if (dolibarr_set_const($db, $code, $value, 'chaine', 0, '', $conf->entity) > 0) + { + Header("Location: ".$_SERVER["PHP_SELF"]); + exit; + } + else + { + dol_print_error($db); + } +} + +else if (preg_match('/del_(.*)/',$action,$reg)) +{ + $code=$reg[1]; + if (dolibarr_del_const($db, $code, $conf->entity) > 0) + { + Header("Location: ".$_SERVER["PHP_SELF"]); + exit; + } + else + { + dol_print_error($db); + } +} + +/* + * View + */ +llxHeader('', $langs->trans('Parameters')); + +$form = new Form($db); + +dol_htmloutput_mesg($mesg); + +// Subheader +$linkback = '<a href="' . DOL_URL_ROOT . '/admin/modules.php">' . $langs->trans("BackToModuleList") . '</a>'; +print load_fiche_titre($langs->trans("SkypeSetup"), $linkback); + +// Configuration header +$h = 0; +$head = array (); + +$head[$h][0] = dol_buildpath('/admin/skype.php', 1); +$head[$h][1] = $langs->trans("Configuration"); +$head[$h][2] = 'parameters'; +$h ++; + +dol_fiche_head($head, 'parameters', $langs->trans("Skype"), 0, "skype"); + +if (! $conf->use_javascript_ajax) { + print '<form method="post" action="' . $_SERVER["PHP_SELF"] . '" enctype="multipart/form-data">'; + print '<input type="hidden" name="token" value="' . $_SESSION['newtoken'] . '">'; + print '<input type="hidden" name="action" value="setvar">'; +} + +print '<table class="noborder" width="100%">'; +print '<tr class="liste_titre">'; +print '<td colspan="3">' . $langs->trans('Parameters') . '</td>'; +print "</tr>\n"; + +$var = ! $var; + +print '<tr ' . $bc[$var] . '><td>' . $langs->trans("SkypeDeactivateInUser") . '</td>'; +print '<td align="left">'; +if ($conf->use_javascript_ajax) { + print ajax_constantonoff('SKYPE_DEACTIVATE_IN_USER'); +} +else +{ + if (empty($conf->global->SKYPE_DEACTIVATE_IN_USER)) + { + print '<a href="'.$_SERVER['PHP_SELF'].'?action=set_SKYPE_DEACTIVATE_IN_USER">'.img_picto($langs->trans("Disabled"),'switch_off').'</a>'; + } + else + { + print '<a href="'.$_SERVER['PHP_SELF'].'?action=del_SKYPE_DEACTIVATE_IN_USER">'.img_picto($langs->trans("Enabled"),'switch_on').'</a>'; + } +} +print '</td>'; +print '</tr>'; + +print '<tr ' . $bc[$var] . '><td>' . $langs->trans("SkypeDeactivateInContact") . '</td>'; +print '<td align="left">'; +if ($conf->use_javascript_ajax) { + print ajax_constantonoff('SKYPE_DEACTIVATE_IN_CONTACT'); +} +else +{ + if (empty($conf->global->SKYPE_DEACTIVATE_IN_CONTACT)) + { + print '<a href="'.$_SERVER['PHP_SELF'].'?action=set_SKYPE_DEACTIVATE_IN_CONTACT">'.img_picto($langs->trans("Disabled"),'switch_off').'</a>'; + } + else + { + print '<a href="'.$_SERVER['PHP_SELF'].'?action=del_SKYPE_DEACTIVATE_IN_CONTACT">'.img_picto($langs->trans("Enabled"),'switch_on').'</a>'; + } +} +print '</td>'; +print '</tr>'; + +print '<tr ' . $bc[$var] . '><td>' . $langs->trans("SkypeDeactivateInMember") . '</td>'; +print '<td align="left">'; +if ($conf->use_javascript_ajax) { + print ajax_constantonoff('SKYPE_DEACTIVATE_IN_MEMBER'); +} +else +{ + if (empty($conf->global->SKYPE_DEACTIVATE_IN_MEMBER)) + { + print '<a href="'.$_SERVER['PHP_SELF'].'?action=set_SKYPE_DEACTIVATE_IN_MEMBER">'.img_picto($langs->trans("Disabled"),'switch_off').'</a>'; + } + else + { + print '<a href="'.$_SERVER['PHP_SELF'].'?action=del_SKYPE_DEACTIVATE_IN_MEMBER">'.img_picto($langs->trans("Enabled"),'switch_on').'</a>'; + } +} +print '</td>'; +print '</tr>'; + +print "</table>\n"; + +dol_fiche_end(); + +print '</form>'; + +llxFooter(); +$db->close(); diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 388f51e7dc5..9cb9a3d45ab 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -9,6 +9,7 @@ * Copyright (C) 2012-2015 Marcos García <marcosgdf@gmail.com> * Copyright (C) 2012-2015 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr> * Copyright (C) 2012 Cedric Salvador <csalvador@gpcsolutions.fr> + * Copyright (C) 2015 Alexandre Spangaro <aspangaro.dolibarr@gmail.com> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/htdocs/core/modules/modSkype.class.php b/htdocs/core/modules/modSkype.class.php index 280b871e475..2c7686d9349 100644 --- a/htdocs/core/modules/modSkype.class.php +++ b/htdocs/core/modules/modSkype.class.php @@ -42,8 +42,8 @@ class modSkype extends DolibarrModules $this->db = $db; $this->numero = 3100; - // Family can be 'crm','financial','hr','projects','products','ecm','technic','other' - // It is used to group modules in module setup page + // Family can be 'crm','financial','hr','projects','products','ecm','technic','other' + // It is used to group modules in module setup page $this->family = "crm"; // Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module) $this->name = preg_replace('/^mod/i','',get_class($this)); @@ -61,7 +61,7 @@ class modSkype extends DolibarrModules // Config pages //------------- - $this->config_page_url = array(); + $this->config_page_url = array("skype.php"); // Dependancies //------------- diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index b497bb45fc7..fff2ea5c32f 100755 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -1249,6 +1249,11 @@ AddSubscriptionIntoAccount=Suggest by default to create a bank transaction, in b AdherentLoginRequired= Manage a Login for each member AdherentMailRequired=EMail required to create a new member MemberSendInformationByMailByDefault=Checkbox to send mail confirmation to members (validation or new subscription) is on by default +##### Skype setup ##### +SkypeSetup=Skype module setup +SkypeDeactivateInUser=Deactivate Skype in user card +SkypeDeactivateInContact=Deactivate Skype in contact card +SkypeDeactivateInMember=Deactivate Skype in member card ##### LDAP setup ##### LDAPSetup=LDAP Setup LDAPGlobalParameters=Global parameters -- GitLab From 4cf2941023b2fc550e84980dacb2d9d8e9fb06d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= <frederic.france@free.fr> Date: Wed, 25 Nov 2015 21:53:00 +0100 Subject: [PATCH 006/197] Test travis for php7 --- .travis.yml | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index 7dea8765cb2..0ee41da64fc 100644 --- a/.travis.yml +++ b/.travis.yml @@ -29,7 +29,8 @@ matrix: - php: 7.0 env: - - DB=mysql +# - DB=mysql PHPCS_VERSION=">=1.5.1,<2.0" + - DB=mysql PHPCS_VERSION=">=2.0" # - DB=postgres before_script: @@ -44,11 +45,15 @@ before_script: - which phpunit - phpunit --version - echo Install phpcs then show installed rules - - pyrus install pear/PHP_CodeSniffer + - composer self-update + - composer require squizlabs/php_codesniffer:${PHPCS_VERSION} + - composer install - phpenv rehash - - which phpcs - - phpcs --version - - phpcs -i + - ln -s `pwd` htdocs/includes/squizlabs/php_codesniffer/CodeSniffer/Standards/PHPCompatibility + - htdocs/includes/squizlabs/php_codesniffer/scripts/phpcs --version +# - which phpcs +# - phpcs --version +# - phpcs -i - echo Create dir $(pwd)/htdocs/documents - sudo mkdir -p $(pwd)/htdocs/documents/admin/temp; - sudo touch $(pwd)/htdocs/documents/dolibarr.log; @@ -139,7 +144,7 @@ script: - phpunit -d memory_limit=-1 --configuration test/phpunit/phpunittest.xml test/phpunit/AllTests.php - date # - phpcs -p --warning-severity=0 -s --report-summary --standard=dev/codesniffer/ruleset.xml --tab-width=4 --ignore=/build/html/,/dev/vagrant/,/documents/,/includes/,/test/report/ htdocs/core/class/dolgraph.class.php 2>&1 - - phpcs -p --warning-severity=0 -s --report-checkstyle --report-summary --standard=dev/codesniffer/ruleset.xml --tab-width=4 --ignore=/htdocs/conf/conf.php,/build/html/,/dev/vagrant/,/documents/,/includes/,/test/report/ . 2>&1 + - htdocs/includes/squizlabs/php_codesniffer/scripts/phpcs -p --warning-severity=0 -s --report-checkstyle --report-summary --standard=dev/codesniffer/ruleset.xml --tab-width=4 --ignore=/htdocs/conf/conf.php,/build/html/,/dev/vagrant/,/documents/,/includes/,/test/report/ . 2>&1 - date after_script: -- GitLab From a6d8f943df769e3ae000ea16ac593884b2109459 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Thu, 26 Nov 2015 02:12:37 +0100 Subject: [PATCH 007/197] Fix several bugs into leave requets module --- htdocs/core/class/html.form.class.php | 5 ++- htdocs/core/menus/init_menu_auguria.sql | 10 +++-- htdocs/holiday/card.php | 58 ++++++++++++++----------- htdocs/holiday/list.php | 2 +- 4 files changed, 43 insertions(+), 32 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index da22c014e50..549959bd561 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -1259,10 +1259,11 @@ class Form * @param string $show_every 0=default list, 1=add also a value "Everybody" at beginning of list * @param string $enableonlytext If option $enableonly is set, we use this text to explain into label why record is disabled. Not used if enableonly is empty. * @param string $morecss More css + * @param int $noactive Show only active users (this will also happened whatever is this option if USER_HIDE_INACTIVE_IN_COMBOBOX is on). * @return string HTML select string * @see select_dolgroups */ - function select_dolusers($selected='', $htmlname='userid', $show_empty=0, $exclude='', $disabled=0, $include='', $enableonly='', $force_entity=0, $maxlength=0, $showstatus=0, $morefilter='', $show_every=0, $enableonlytext='', $morecss='') + function select_dolusers($selected='', $htmlname='userid', $show_empty=0, $exclude='', $disabled=0, $include='', $enableonly='', $force_entity=0, $maxlength=0, $showstatus=0, $morefilter='', $show_every=0, $enableonlytext='', $morecss='', $noactive=0) { global $conf,$user,$langs; @@ -1322,7 +1323,7 @@ class Form if (! empty($user->societe_id)) $sql.= " AND u.fk_soc = ".$user->societe_id; if (is_array($exclude) && $excludeUsers) $sql.= " AND u.rowid NOT IN ('".$excludeUsers."')"; if (is_array($include) && $includeUsers) $sql.= " AND u.rowid IN ('".$includeUsers."')"; - if (! empty($conf->global->USER_HIDE_INACTIVE_IN_COMBOBOX)) $sql.= " AND u.statut <> 0"; + if (! empty($conf->global->USER_HIDE_INACTIVE_IN_COMBOBOX) || $noactive) $sql.= " AND u.statut <> 0"; if (! empty($morefilter)) $sql.=" ".$morefilter; $sql.= " ORDER BY u.lastname ASC"; diff --git a/htdocs/core/menus/init_menu_auguria.sql b/htdocs/core/menus/init_menu_auguria.sql index 8444a855650..71d393955e7 100644 --- a/htdocs/core/menus/init_menu_auguria.sql +++ b/htdocs/core/menus/init_menu_auguria.sql @@ -300,11 +300,13 @@ insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, left insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->adherent->enabled && $conf->categorie->enabled', __HANDLER__, 'left', 5200__+MAX_llx_menu__, 'members', 'cat', 13__+MAX_llx_menu__, '/categories/index.php?leftmenu=cat&type=3', 'MembersCategoriesShort', 0, 'categories', '$user->rights->categorie->lire', '', 2, 3, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->adherent->enabled && $conf->categorie->enabled', __HANDLER__, 'left', 5201__+MAX_llx_menu__, 'members', '', 5200__+MAX_llx_menu__, '/categories/card.php?action=create&type=3', 'NewCategory', 1, 'categories', '$user->rights->categorie->creer', '', 2, 0, __ENTITY__); -- HRM - Holiday -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->holiday->enabled', __HANDLER__, 'left', 5000__+MAX_llx_menu__, 'hrm', 'hrm', 15__+MAX_llx_menu__, '/holiday/list.php?&leftmenu=hrm', 'CPTitreMenu', 0, 'holiday', '$user->rights->holiday->write', '', 0, 1, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->holiday->enabled', __HANDLER__, 'left', 5000__+MAX_llx_menu__, 'hrm', 'hrm', 15__+MAX_llx_menu__, '/holiday/list.php?&leftmenu=hrm', 'CPTitreMenu', 0, 'holiday', '$user->rights->holiday->read', '', 0, 1, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->holiday->enabled', __HANDLER__, 'left', 5001__+MAX_llx_menu__, 'hrm', '', 5000__+MAX_llx_menu__, '/holiday/card.php?&action=request', 'MenuAddCP', 1, 'holiday', '$user->rights->holiday->write', '', 0, 1, __ENTITY__); -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->holiday->enabled', __HANDLER__, 'left', 5002__+MAX_llx_menu__, 'hrm', '', 5000__+MAX_llx_menu__, '/holiday/define_holiday.php?&action=request', 'MenuConfCP', 1, 'holiday', '$user->rights->holiday->define_holiday', '', 0, 2, __ENTITY__); -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->holiday->enabled', __HANDLER__, 'left', 5003__+MAX_llx_menu__, 'hrm', '', 5000__+MAX_llx_menu__, '/holiday/view_log.php?&action=request', 'MenuLogCP', 1, 'holiday', '$user->rights->holiday->view_log', '', 0, 3, __ENTITY__); -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->holiday->enabled', __HANDLER__, 'left', 5004__+MAX_llx_menu__, 'hrm', '', 5000__+MAX_llx_menu__, '/holiday/month_report.php?&action=request', 'MenuReportMonth', 1, 'holiday', '$user->rights->holiday->month_report', '', 0, 4, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->holiday->enabled', __HANDLER__, 'left', 5002__+MAX_llx_menu__, 'hrm', '', 5000__+MAX_llx_menu__, '/holiday/list.php?&leftmenu=hrm', 'List', 1, 'holiday', '$user->rights->holiday->read', '', 0, 1, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->holiday->enabled', __HANDLER__, 'left', 5003__+MAX_llx_menu__, 'hrm', '', 5002__+MAX_llx_menu__, '/holiday/list.php?select_statut=2&leftmenu=hrm', 'ListToApprove', 2, 'trips', '$user->rights->holiday->read', '', 0, 1, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->holiday->enabled', __HANDLER__, 'left', 5004__+MAX_llx_menu__, 'hrm', '', 5000__+MAX_llx_menu__, '/holiday/define_holiday.php?&action=request', 'MenuConfCP', 1, 'holiday', '$user->rights->holiday->define_holiday', '', 0, 2, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->holiday->enabled', __HANDLER__, 'left', 5005__+MAX_llx_menu__, 'hrm', '', 5000__+MAX_llx_menu__, '/holiday/view_log.php?&action=request', 'MenuLogCP', 1, 'holiday', '$user->rights->holiday->define_holiday', '', 0, 3, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->holiday->enabled', __HANDLER__, 'left', 5006__+MAX_llx_menu__, 'hrm', '', 5000__+MAX_llx_menu__, '/holiday/month_report.php?&action=request', 'MenuReportMonth', 1, 'holiday', '$user->rights->holiday->define_holiday', '', 0, 4, __ENTITY__); -- HRM - Expense reports insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->deplacement->enabled', __HANDLER__, 'left', 2100__+MAX_llx_menu__, 'accountancy', 'tripsandexpenses', 15__+MAX_llx_menu__, '/compta/deplacement/index.php?leftmenu=tripsandexpenses', 'TripsAndExpenses', 0, 'trips', '$user->rights->deplacement->lire', '', 0, 5, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->deplacement->enabled', __HANDLER__, 'left', 2101__+MAX_llx_menu__, 'accountancy', '', 2100__+MAX_llx_menu__, '/compta/deplacement/card.php?action=create&leftmenu=tripsandexpenses', 'New', 1, 'trips', '$user->rights->deplacement->creer', '', 0, 1, __ENTITY__); diff --git a/htdocs/holiday/card.php b/htdocs/holiday/card.php index ebda47dd196..ca0b1d04d7a 100644 --- a/htdocs/holiday/card.php +++ b/htdocs/holiday/card.php @@ -124,22 +124,31 @@ if ($action == 'create') // If no validator designated if ($valideur < 1) { - header('Location: card.php?action=request&error=Valideur'); - exit; + setEventMessage($langs->transnoentitiesnoconv('InvalidValidatorCP'), 'errors'); + $error++; } - $cp->fk_user = $userid; - $cp->description = $description; - $cp->date_debut = $date_debut; - $cp->date_fin = $date_fin; - $cp->fk_validator = $valideur; - $cp->halfday = $halfday; - $cp->fk_type = $type; - - $verif = $cp->create($user); + if ($type < 1) + { + setEventMessage($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv("Type")), 'errors'); + $error++; + } + if (! $error) + { + $cp->fk_user = $userid; + $cp->description = $description; + $cp->date_debut = $date_debut; + $cp->date_fin = $date_fin; + $cp->fk_validator = $valideur; + $cp->halfday = $halfday; + $cp->fk_type = $type; + + $verif = $cp->create($user); + } + // If no SQL error we redirect to the request card - if ($verif > 0) + if (! $error && $verif > 0) { $db->commit(); @@ -149,10 +158,6 @@ if ($action == 'create') else { $db->rollback(); - - // Otherwise we display the request form with the SQL error message - header('Location: card.php?action=request&error=SQL_Create&msg='.$cp->error); - exit; } } } @@ -802,6 +807,7 @@ if (empty($id) || $action == 'add' || $action == 'request' || $action == 'create $arraytypeleaves[$val['rowid']]=$labeltoshow; } print $form->selectarray('type', $arraytypeleaves, (GETPOST('type')?GETPOST('type'):''), 1); + if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1); print '</td>'; print '</tr>'; @@ -810,10 +816,10 @@ if (empty($id) || $action == 'add' || $action == 'request' || $action == 'create print '<td class="fieldrequired">'.$langs->trans("DateDebCP").' ('.$langs->trans("FirstDayOfHoliday").')</td>'; print '<td>'; // Si la demande ne vient pas de l'agenda - if(!isset($_GET['datep'])) { + if (! GETPOST('date_debut_')) { $form->select_date(-1,'date_debut_'); } else { - $tmpdate = dol_mktime(0, 0, 0, GETPOST('datepmonth'), GETPOST('datepday'), GETPOST('datepyear')); + $tmpdate = dol_mktime(0, 0, 0, GETPOST('date_debut_month'), GETPOST('date_debut_day'), GETPOST('date_debut_year')); $form->select_date($tmpdate,'date_debut_'); } print ' '; @@ -826,10 +832,10 @@ if (empty($id) || $action == 'add' || $action == 'request' || $action == 'create print '<td class="fieldrequired">'.$langs->trans("DateFinCP").' ('.$langs->trans("LastDayOfHoliday").')</td>'; print '<td>'; // Si la demande ne vient pas de l'agenda - if(!isset($_GET['datep'])) { + if (! GETPOST('date_fin_')) { $form->select_date(-1,'date_fin_'); } else { - $tmpdate = dol_mktime(0, 0, 0, GETPOST('datefmonth'), GETPOST('datefday'), GETPOST('datefyear')); + $tmpdate = dol_mktime(0, 0, 0, GETPOST('date_fin_month'), GETPOST('date_fin_day'), GETPOST('date_fin_year')); $form->select_date($tmpdate,'date_fin_'); } print ' '; @@ -846,7 +852,7 @@ if (empty($id) || $action == 'add' || $action == 'request' || $action == 'create $valideurarray = array(); foreach($valideurobjects as $val) $valideurarray[$val->id]=$val->id; print '<td>'; - print $form->select_dolusers($user->fk_user, "valideur", 1, "", 0, $valideurarray); // By default, hierarchical parent + print $form->select_dolusers((GETPOST('valideur')>0?GETPOST('valideur'):$user->fk_user), "valideur", 1, "", 0, $valideurarray, 0, 0, 0, 0, '', 0, '', '', 1); // By default, hierarchical parent print '</td>'; print '</tr>'; @@ -973,7 +979,6 @@ else $head=holiday_prepare_head($cp); - dol_fiche_head($head,'card',$langs->trans("CPTitreMenu"),0,'holiday'); if ($action == 'edit' && $cp->statut == 1) { @@ -983,6 +988,8 @@ else print '<input type="hidden" name="holiday_id" value="'.$id.'" />'."\n"; } + dol_fiche_head($head,'card',$langs->trans("CPTitreMenu"),0,'holiday'); + print '<table class="border" width="100%">'; print '<tbody>'; @@ -1157,19 +1164,20 @@ else print '</tbody>'; print '</table>'; + dol_fiche_end(); + if ($action == 'edit' && $cp->statut == 1) { - print '<br><div align="center">'; + print '<div align="center">'; if ($canedit && $cp->statut == 1) { - print '<input type="submit" value="'.$langs->trans("UpdateButtonCP").'" class="button">'; + print '<input type="submit" value="'.$langs->trans("Save").'" class="button">'; } print '</div>'; print '</form>'; } - dol_fiche_end(); if (! $edit) { diff --git a/htdocs/holiday/list.php b/htdocs/holiday/list.php index 4e10fbf925c..b329cffda35 100644 --- a/htdocs/holiday/list.php +++ b/htdocs/holiday/list.php @@ -406,7 +406,7 @@ if (! empty($holiday->holiday)) if($holiday_payes == '2') { print '<tr>'; - print '<td colspan="9" '.$bc[false].'">'.$langs->trans('None').'</td>'; + print '<td colspan="10" '.$bc[false].'">'.$langs->trans('None').'</td>'; print '</tr>'; } -- GitLab From 9a2259c6811e76cc0771a52c18980ddefeba0c1f Mon Sep 17 00:00:00 2001 From: aspangaro <alexandre.spangaro@gmail.com> Date: Thu, 26 Nov 2015 06:19:24 +0100 Subject: [PATCH 008/197] Correct button 'Export' and 'Write bookkeeping' on finance journal --- htdocs/accountancy/journal/bankjournal.php | 52 +++++++++++----------- htdocs/core/lib/report.lib.php | 9 ++-- htdocs/langs/en_US/accountancy.lang | 6 +-- 3 files changed, 34 insertions(+), 33 deletions(-) diff --git a/htdocs/accountancy/journal/bankjournal.php b/htdocs/accountancy/journal/bankjournal.php index bed5376064f..db3dc3a0aae 100644 --- a/htdocs/accountancy/journal/bankjournal.php +++ b/htdocs/accountancy/journal/bankjournal.php @@ -55,7 +55,7 @@ $langs->load("bank"); $langs->load('bills'); $langs->load("accountancy"); -$id_accountancy_journal = GETPOST('id_account'); +$id_accountancy_journal = GETPOST('id_account','int'); $date_startmonth = GETPOST('date_startmonth'); $date_startday = GETPOST('date_startday'); @@ -66,17 +66,12 @@ $date_endyear = GETPOST('date_endyear'); $action = GETPOST('action'); // Security check -if ($user->societe_id > 0) +if ($user->societe_id > 0 && empty($id_accountancy_journal)) accessforbidden(); /* * View */ -if (empty($id_accountancy_journal)) -{ - accessforbidden(); -} - $year_current = strftime("%Y", dol_now()); $pastmonth = strftime("%m", dol_now()) - 1; $pastmonthyear = $year_current; @@ -431,7 +426,7 @@ if ($action == 'export_csv') { dol_print_error($this->db); return -1; } - //$journal = $conf->global->ACCOUNTING_BANK_JOURNAL; + $journal = $conf->global->ACCOUNTING_BANK_JOURNAL; header('Content-Type: text/csv'); header('Content-Disposition: attachment;filename=journal_banque.csv'); @@ -559,14 +554,15 @@ if ($action == 'export_csv') { } else { $form = new Form($db); - llxHeader('', $langs->trans("BankJournal")); + llxHeader('', $langs->trans("FinanceJournal")); - $namereport = $langs->trans("BankJournal"); - $namereport.= " " . $journal; - $description = $langs->trans("DescBankJournal"); + $nom = $langs->trans("FinanceJournal"); + $builddate = time(); + $description = $langs->trans("DescFinanceJournal") . '<br>'; $period = $form->select_date($date_start, 'date_start', 0, 0, 0, '', 1, 0, 1) . ' - ' . $form->select_date($date_end, 'date_end', 0, 0, 0, '', 1, 0, 1); - - // Report + //report_header($nom, $nomlink, $period, $periodlink, $description, $builddate, $exportlink, array('action' => ''), ''); + + // Report header $h=0; $head[$h][0] = $_SERVER["PHP_SELF"].'?id_account='.$id_accountancy_journal; $head[$h][1] = $langs->trans("Report"); @@ -575,33 +571,37 @@ if ($action == 'export_csv') { dol_fiche_head($head, 'report'); print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'?id_account='.$id_accountancy_journal.'">'; - print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; - print '<table width="100%" class="border">'; - // Title + // Ligne de titre print '<tr>'; print '<td valign="top" width="110">'.$langs->trans("ReportName").'</td>'; - print '<td colspan="3">'.$namereport.'</td>'; + print '<td>'; + print $nom; print '</td>'; print '</tr>'; - // Period report + // Ligne de la periode d'analyse du rapport print '<tr>'; print '<td>'.$langs->trans("ReportPeriod").'</td>'; - if (! $periodlink) print '<td colspan="3">'; - else print '<td>'; - if ($period) print $period; - if ($periodlink) print '</td><td colspan="2">'.$periodlink; + print '<td>'; + print $period; print '</td>'; print '</tr>'; - // Description + // Ligne de description print '<tr>'; print '<td valign="top">'.$langs->trans("ReportDescription").'</td>'; print '<td colspan="3">'.$description.'</td>'; print '</tr>'; + // Ligne d'export + print '<tr>'; + print '<td>'.$langs->trans("GeneratedOn").'</td>'; + print '<td>'; + print dol_print_date($builddate); + print '</td></tr>'; + print '<tr>'; print '<td colspan="4" align="center"><input type="submit" class="button" name="submit" value="'.$langs->trans("Refresh").'"></td>'; print '</tr>'; @@ -611,8 +611,8 @@ if ($action == 'export_csv') { print '</form>'; print '</div>'; - // End report - + //End Report header + print '<input type="button" class="button" style="float: right;" value="' . $langs->trans("Export") . '" onclick="launch_export();" />'; print '<input type="button" class="button" value="' . $langs->trans("WriteBookKeeping") . '" onclick="writebookkeeping();" />'; diff --git a/htdocs/core/lib/report.lib.php b/htdocs/core/lib/report.lib.php index dc509384335..533ae7434d6 100644 --- a/htdocs/core/lib/report.lib.php +++ b/htdocs/core/lib/report.lib.php @@ -35,22 +35,25 @@ * @param string $exportlink Link for export or '' * @param array $moreparam Array with list of params to add into form * @param string $calcmode Calculation mode +* @param string $varlink Add a variable into the address of the page * @return void */ -function report_header($nom,$variante,$period,$periodlink,$description,$builddate,$exportlink='',$moreparam=array(),$calcmode='') +function report_header($nom,$variante,$period,$periodlink,$description,$builddate,$exportlink='',$moreparam=array(),$calcmode='', $varlink='') { global $langs; print "\n\n<!-- debut cartouche rapport -->\n"; + + if(! empty($varlink)) $varlink = '?'.$varlink; $h=0; - $head[$h][0] = $_SERVER["PHP_SELF"]; + $head[$h][0] = $_SERVER["PHP_SELF"].$varlink; $head[$h][1] = $langs->trans("Report"); $head[$h][2] = 'report'; dol_fiche_head($head, 'report'); - print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">'; + print '<form method="POST" action="'.$_SERVER["PHP_SELF"].$varlink.'">'; foreach($moreparam as $key => $value) { print '<input type="hidden" name="'.$key.'" value="'.$value.'">'; diff --git a/htdocs/langs/en_US/accountancy.lang b/htdocs/langs/en_US/accountancy.lang index 57ce6b09201..e55f6d667f1 100644 --- a/htdocs/langs/en_US/accountancy.lang +++ b/htdocs/langs/en_US/accountancy.lang @@ -112,10 +112,8 @@ SellsJournal=Sells journal PurchasesJournal=Purchases journal DescSellsJournal=Sells journal DescPurchasesJournal=Purchases journal -BankJournal=Bank journal -DescBankJournal=Bank journal including all the types of payments other than cash -CashJournal=Cash journal -DescCashJournal=Cash journal including the type of payment cash +FinanceJournal=Finance journal +DescFinanceJournal=Finance journal including all the types of payments by bank account CashPayment=Cash Payment -- GitLab From 37da315af64a8c41ef76d4db66da6a2515e373dc Mon Sep 17 00:00:00 2001 From: aspangaro <alexandre.spangaro@gmail.com> Date: Thu, 26 Nov 2015 06:30:09 +0100 Subject: [PATCH 009/197] Remove old code --- htdocs/accountancy/journal/bankjournal.php | 83 ++-------------------- 1 file changed, 5 insertions(+), 78 deletions(-) diff --git a/htdocs/accountancy/journal/bankjournal.php b/htdocs/accountancy/journal/bankjournal.php index db3dc3a0aae..4653127a993 100644 --- a/htdocs/accountancy/journal/bankjournal.php +++ b/htdocs/accountancy/journal/bankjournal.php @@ -55,7 +55,7 @@ $langs->load("bank"); $langs->load('bills'); $langs->load("accountancy"); -$id_accountancy_journal = GETPOST('id_account','int'); +$id_bank_account = GETPOST('id_account','int'); $date_startmonth = GETPOST('date_startmonth'); $date_startday = GETPOST('date_startday'); @@ -66,7 +66,7 @@ $date_endyear = GETPOST('date_endyear'); $action = GETPOST('action'); // Security check -if ($user->societe_id > 0 && empty($id_accountancy_journal)) +if ($user->societe_id > 0 && empty($id_bank_account)) accessforbidden(); /* @@ -98,7 +98,7 @@ $sql .= " FROM " . MAIN_DB_PREFIX . "bank as b"; $sql .= " JOIN " . MAIN_DB_PREFIX . "bank_account as ba on b.fk_account=ba.rowid"; $sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "bank_url as bu1 ON bu1.fk_bank = b.rowid AND bu1.type='company'"; $sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "societe as soc on bu1.url_id=soc.rowid"; -$sql .= " WHERE ba.rowid=".$id_accountancy_journal; +$sql .= " WHERE ba.rowid=".$id_bank_account; if (! empty($conf->multicompany->enabled)) { $sql .= " AND ba.entity = " . $conf->entity; } @@ -403,29 +403,6 @@ if ($action == 'writebookkeeping') // Export if ($action == 'export_csv') { $sep = $conf->global->ACCOUNTING_EXPORT_SEPARATORCSV; - - // Journal - $bank = "SELECT rowid, label, accountancy_journal"; - $bank.= " FROM ".MAIN_DB_PREFIX."bank_account"; - $bank.= " WHERE entity = ".$conf->entity; - $bank.= " AND rowid = '".$id_accountancy_journal."'"; - - $resql = $db->query($bank); - if ($resql) - { - if ($db->num_rows($resql)) - { - $obj = $db->fetch_object($resql); - - $journal = $objp->accountancy_journal; - } - return 1; - } - else - { - dol_print_error($this->db); - return -1; - } $journal = $conf->global->ACCOUNTING_BANK_JOURNAL; header('Content-Type: text/csv'); @@ -560,59 +537,9 @@ if ($action == 'export_csv') { $builddate = time(); $description = $langs->trans("DescFinanceJournal") . '<br>'; $period = $form->select_date($date_start, 'date_start', 0, 0, 0, '', 1, 0, 1) . ' - ' . $form->select_date($date_end, 'date_end', 0, 0, 0, '', 1, 0, 1); - //report_header($nom, $nomlink, $period, $periodlink, $description, $builddate, $exportlink, array('action' => ''), ''); + $varlink = 'id_account='.$id_bank_account; + report_header($nom, $nomlink, $period, $periodlink, $description, $builddate, $exportlink, array('action' => ''), '', $varlink); - // Report header - $h=0; - $head[$h][0] = $_SERVER["PHP_SELF"].'?id_account='.$id_accountancy_journal; - $head[$h][1] = $langs->trans("Report"); - $head[$h][2] = 'report'; - - dol_fiche_head($head, 'report'); - - print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'?id_account='.$id_accountancy_journal.'">'; - print '<table width="100%" class="border">'; - - // Ligne de titre - print '<tr>'; - print '<td valign="top" width="110">'.$langs->trans("ReportName").'</td>'; - print '<td>'; - print $nom; - print '</td>'; - print '</tr>'; - - // Ligne de la periode d'analyse du rapport - print '<tr>'; - print '<td>'.$langs->trans("ReportPeriod").'</td>'; - print '<td>'; - print $period; - print '</td>'; - print '</tr>'; - - // Ligne de description - print '<tr>'; - print '<td valign="top">'.$langs->trans("ReportDescription").'</td>'; - print '<td colspan="3">'.$description.'</td>'; - print '</tr>'; - - // Ligne d'export - print '<tr>'; - print '<td>'.$langs->trans("GeneratedOn").'</td>'; - print '<td>'; - print dol_print_date($builddate); - print '</td></tr>'; - - print '<tr>'; - print '<td colspan="4" align="center"><input type="submit" class="button" name="submit" value="'.$langs->trans("Refresh").'"></td>'; - print '</tr>'; - - print '</table>'; - - print '</form>'; - - print '</div>'; - //End Report header - print '<input type="button" class="button" style="float: right;" value="' . $langs->trans("Export") . '" onclick="launch_export();" />'; print '<input type="button" class="button" value="' . $langs->trans("WriteBookKeeping") . '" onclick="writebookkeeping();" />'; -- GitLab From cb6038e125fd21cb393d8053d14a6f674088fa54 Mon Sep 17 00:00:00 2001 From: aspangaro <alexandre.spangaro@gmail.com> Date: Thu, 26 Nov 2015 07:10:13 +0100 Subject: [PATCH 010/197] Better code for admin skype --- htdocs/admin/skype.php | 38 +++++++++++++++++--------------------- 1 file changed, 17 insertions(+), 21 deletions(-) diff --git a/htdocs/admin/skype.php b/htdocs/admin/skype.php index a1778afd101..db942beb8ad 100644 --- a/htdocs/admin/skype.php +++ b/htdocs/admin/skype.php @@ -25,10 +25,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; $langs->load("admin"); -if (! $user->admin) - accessforbidden(); - -$action = GETPOST('action', 'alpha'); +if (! $user->admin) accessforbidden(); /* * Actions @@ -65,16 +62,15 @@ else if (preg_match('/del_(.*)/',$action,$reg)) /* * View */ +$help_url=''; llxHeader('', $langs->trans('Parameters')); -$form = new Form($db); - -dol_htmloutput_mesg($mesg); - -// Subheader $linkback = '<a href="' . DOL_URL_ROOT . '/admin/modules.php">' . $langs->trans("BackToModuleList") . '</a>'; print load_fiche_titre($langs->trans("SkypeSetup"), $linkback); +$var=true; +$form = new Form($db); + // Configuration header $h = 0; $head = array (); @@ -86,12 +82,6 @@ $h ++; dol_fiche_head($head, 'parameters', $langs->trans("Skype"), 0, "skype"); -if (! $conf->use_javascript_ajax) { - print '<form method="post" action="' . $_SERVER["PHP_SELF"] . '" enctype="multipart/form-data">'; - print '<input type="hidden" name="token" value="' . $_SESSION['newtoken'] . '">'; - print '<input type="hidden" name="action" value="setvar">'; -} - print '<table class="noborder" width="100%">'; print '<tr class="liste_titre">'; print '<td colspan="3">' . $langs->trans('Parameters') . '</td>'; @@ -99,9 +89,11 @@ print "</tr>\n"; $var = ! $var; -print '<tr ' . $bc[$var] . '><td>' . $langs->trans("SkypeDeactivateInUser") . '</td>'; +print '<tr ' . $bc[$var] . '>'; +print '<td>' . $langs->trans("SkypeDeactivateInUser") . '</td>'; print '<td align="left">'; -if ($conf->use_javascript_ajax) { +if ($conf->use_javascript_ajax) +{ print ajax_constantonoff('SKYPE_DEACTIVATE_IN_USER'); } else @@ -118,9 +110,11 @@ else print '</td>'; print '</tr>'; -print '<tr ' . $bc[$var] . '><td>' . $langs->trans("SkypeDeactivateInContact") . '</td>'; +print '<tr ' . $bc[$var] . '>'; +print '<td>' . $langs->trans("SkypeDeactivateInContact") . '</td>'; print '<td align="left">'; -if ($conf->use_javascript_ajax) { +if ($conf->use_javascript_ajax) +{ print ajax_constantonoff('SKYPE_DEACTIVATE_IN_CONTACT'); } else @@ -137,9 +131,11 @@ else print '</td>'; print '</tr>'; -print '<tr ' . $bc[$var] . '><td>' . $langs->trans("SkypeDeactivateInMember") . '</td>'; +print '<tr ' . $bc[$var] . '>'; +print '<td>' . $langs->trans("SkypeDeactivateInMember") . '</td>'; print '<td align="left">'; -if ($conf->use_javascript_ajax) { +if ($conf->use_javascript_ajax) +{ print ajax_constantonoff('SKYPE_DEACTIVATE_IN_MEMBER'); } else -- GitLab From 208bf2545fd1519c639097db6241f793a78a9adf Mon Sep 17 00:00:00 2001 From: fmarcet <fmarcet@2byte.es> Date: Thu, 26 Nov 2015 17:14:03 +0100 Subject: [PATCH 011/197] Fix: Bug when idprof is mandatory on thrid creation and we use multicompany --- htdocs/societe/class/societe.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index 8e5622cde77..351b813959b 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -2348,7 +2348,7 @@ class Societe extends CommonObject } //Verify duplicate entries - $sql = "SELECT COUNT(*) as idprof FROM ".MAIN_DB_PREFIX."societe WHERE ".$field." = '".$value."'"; + $sql = "SELECT COUNT(*) as idprof FROM ".MAIN_DB_PREFIX."societe WHERE ".$field." = '".$value."' AND entity IN (".getEntity('societe',1).")"; if($socid) $sql .= " AND rowid <> ".$socid; $resql = $this->db->query($sql); if ($resql) -- GitLab From 1b9039af36f318fec9d39ccba8884d3bcad71006 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= <frederic.france@free.fr> Date: Thu, 26 Nov 2015 20:30:11 +0100 Subject: [PATCH 012/197] Update list.php --- htdocs/resource/list.php | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/htdocs/resource/list.php b/htdocs/resource/list.php index 29ae4a42803..9a19809d5d7 100644 --- a/htdocs/resource/list.php +++ b/htdocs/resource/list.php @@ -22,15 +22,10 @@ */ -// Change this following line to use the correct relative path (../, ../../, etc) -$res=0; -$res=@include("../main.inc.php"); // For root directory -if (! $res) $res=@include("../../main.inc.php"); // For "custom" directory -if (! $res) die("Include of main fails"); +require '../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/resource/class/resource.class.php'; -require 'class/resource.class.php'; - -// Load traductions files requiredby by page +// Load translations files requiredby by page $langs->load("resource"); $langs->load("companies"); $langs->load("other"); @@ -52,7 +47,7 @@ $object = new Resource($db); $hookmanager->initHooks(array('resource_list')); -if (empty($sortorder)) $sortorder="DESC"; +if (empty($sortorder)) $sortorder="ASC"; if (empty($sortfield)) $sortfield="t.rowid"; if (empty($arch)) $arch = 0; @@ -89,8 +84,6 @@ llxHeader('',$pagetitle,''); $form=new Form($db); -print_fiche_titre($pagetitle,'','title_generic'); - // Confirmation suppression resource line if ($action == 'delete_resource') { @@ -102,6 +95,8 @@ $ret = $object->fetch_all($sortorder, $sortfield, $limit, $offset); if($ret == -1) { dol_print_error($db,$object->error); exit; +} else { + print_barre_liste($pagetitle, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $ret+1, $object->num_all,'title_generic.png'); } if(!$ret) { print '<div class="warning">'.$langs->trans('NoResourceInDatabase').'</div>'; -- GitLab From e6033369a8501e5fbe2473c6f068792641743996 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= <frederic.france@free.fr> Date: Thu, 26 Nov 2015 20:33:07 +0100 Subject: [PATCH 013/197] Update resource.class.php --- htdocs/resource/class/resource.class.php | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/htdocs/resource/class/resource.class.php b/htdocs/resource/class/resource.class.php index 3c3f0ee6e49..e42b8983c7a 100644 --- a/htdocs/resource/class/resource.class.php +++ b/htdocs/resource/class/resource.class.php @@ -22,7 +22,6 @@ */ -// Put here all includes required by your class file require_once DOL_DOCUMENT_ROOT."/core/class/commonobject.class.php"; require_once DOL_DOCUMENT_ROOT."/core/lib/functions2.lib.php"; @@ -403,7 +402,13 @@ class Resource extends CommonObject } $sql.= " GROUP BY t.rowid"; $sql.= $this->db->order($sortfield,$sortorder); - if ($limit) $sql.= $this->db->plimit($limit+1,$offset); + $this->num_all = 0; + if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) + { + $result = $this->db->query($sql); + $this->num_all = $this->db->num_rows($result); + } + if ($limit) $sql.= $this->db->plimit($limit, $offset); dol_syslog(get_class($this)."::fetch_all", LOG_DEBUG); $resql=$this->db->query($sql); -- GitLab From 4539d84609ee9209accd6bdb14e10e3019ad05ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= <frederic.france@free.fr> Date: Fri, 27 Nov 2015 00:35:07 +0100 Subject: [PATCH 014/197] Update .travis.yml --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 0ee41da64fc..49aaecd5c32 100644 --- a/.travis.yml +++ b/.travis.yml @@ -53,6 +53,7 @@ before_script: - htdocs/includes/squizlabs/php_codesniffer/scripts/phpcs --version # - which phpcs # - phpcs --version + - htdocs/includes/squizlabs/php_codesniffer/scripts/phpcs -i # - phpcs -i - echo Create dir $(pwd)/htdocs/documents - sudo mkdir -p $(pwd)/htdocs/documents/admin/temp; -- GitLab From cbcb79b1eb513ed65dbcaf0fed2347252035f290 Mon Sep 17 00:00:00 2001 From: phf <phf@atm-consulting.fr> Date: Fri, 27 Nov 2015 16:58:28 +0100 Subject: [PATCH 015/197] FIX jquery select of project generate js error on change event --- htdocs/core/class/html.formprojet.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/html.formprojet.class.php b/htdocs/core/class/html.formprojet.class.php index b44a30dcd05..2b7f76dedf9 100644 --- a/htdocs/core/class/html.formprojet.class.php +++ b/htdocs/core/class/html.formprojet.class.php @@ -148,7 +148,7 @@ class FormProjets if (! empty($conf->use_javascript_ajax)) { include_once DOL_DOCUMENT_ROOT . '/core/lib/ajax.lib.php'; - $comboenhancement = ajax_combobox($htmlname, '', 0, $forcefocus); + $comboenhancement = ajax_combobox($htmlname, array(), 0, $forcefocus); $out.=$comboenhancement; $nodatarole=($comboenhancement?' data-role="none"':''); $minmax='minwidth100 maxwidth300'; -- GitLab From 88e76dcf64a895e0ceae27da0bac3990b1b4bbd3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sat, 28 Nov 2015 14:40:23 +0100 Subject: [PATCH 016/197] Fix utf8 encoded twice --- dev/skeletons/skeleton_list.php | 2 +- htdocs/commande/list.php | 2 +- htdocs/compta/facture/list.php | 2 +- htdocs/contact/list.php | 2 +- htdocs/contrat/list.php | 2 +- htdocs/don/list.php | 2 +- htdocs/fourn/commande/list.php | 2 +- htdocs/fourn/facture/list.php | 2 +- htdocs/holiday/list.php | 2 +- htdocs/user/index.php | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/dev/skeletons/skeleton_list.php b/dev/skeletons/skeleton_list.php index 686549f19a8..dec170ae169 100644 --- a/dev/skeletons/skeleton_list.php +++ b/dev/skeletons/skeleton_list.php @@ -271,7 +271,7 @@ if ($resql) if ($sall) { foreach($fieldstosearchall as $key => $val) $fieldstosearchall[$key]=$langs->trans($val); - print $langs->trans("FilterOnInto", $sall, join(', ',$fieldstosearchall)); + print $langs->trans("FilterOnInto", $all) . join(', ',$fieldstosearchall); } if (! empty($moreforfilter)) diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php index fa695dbaa50..a257d808131 100644 --- a/htdocs/commande/list.php +++ b/htdocs/commande/list.php @@ -280,7 +280,7 @@ if ($resql) if ($sall) { foreach($fieldstosearchall as $key => $val) $fieldstosearchall[$key]=$langs->trans($val); - print $langs->trans("FilterOnInto", $sall, join(', ',$fieldstosearchall)); + print $langs->trans("FilterOnInto", $sall) . join(', ',$fieldstosearchall); } $moreforfilter=''; diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php index e7d90118d12..9372f50f4aa 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -296,7 +296,7 @@ if ($resql) if ($sall) { foreach($fieldstosearchall as $key => $val) $fieldstosearchall[$key]=$langs->trans($val); - print $langs->trans("FilterOnInto", $sall, join(', ',$fieldstosearchall)); + print $langs->trans("FilterOnInto", $sall) . join(', ',$fieldstosearchall); } // If the user can view prospects other than his' diff --git a/htdocs/contact/list.php b/htdocs/contact/list.php index d10e34227d6..dc2734b28a1 100644 --- a/htdocs/contact/list.php +++ b/htdocs/contact/list.php @@ -393,7 +393,7 @@ if ($result) } if ($search_firstlast_only) { - print $langs->trans("FilterOnInto", $search_firstlast_only, $langs->trans("Lastname").", ".$langs->trans("Firstname")); + print $langs->trans("FilterOnInto", $search_firstlast_only) . $langs->trans("Lastname").", ".$langs->trans("Firstname"); } if (! empty($conf->categorie->enabled)) diff --git a/htdocs/contrat/list.php b/htdocs/contrat/list.php index 6d16e051327..dbf5803a4c6 100644 --- a/htdocs/contrat/list.php +++ b/htdocs/contrat/list.php @@ -168,7 +168,7 @@ if ($resql) if ($sall) { foreach($fieldstosearchall as $key => $val) $fieldstosearchall[$key]=$langs->trans($val); - print $langs->trans("FilterOnInto", $sall, join(', ',$fieldstosearchall)); + print $langs->trans("FilterOnInto", $all) . join(', ',$fieldstosearchall); } // If the user can view prospects other than his' diff --git a/htdocs/don/list.php b/htdocs/don/list.php index 14389887faa..36c74826952 100644 --- a/htdocs/don/list.php +++ b/htdocs/don/list.php @@ -149,7 +149,7 @@ if ($resql) if ($search_all) { foreach($fieldstosearchall as $key => $val) $fieldstosearchall[$key]=$langs->trans($val); - print $langs->trans("FilterOnInto", $search_all, join(', ',$fieldstosearchall)); + print $langs->trans("FilterOnInto", $search_all) . join(', ',$fieldstosearchall); } print "<table class=\"noborder\" width=\"100%\">"; diff --git a/htdocs/fourn/commande/list.php b/htdocs/fourn/commande/list.php index dea0f72b628..e7e83242ec7 100644 --- a/htdocs/fourn/commande/list.php +++ b/htdocs/fourn/commande/list.php @@ -223,7 +223,7 @@ if ($resql) if ($sall) { foreach($fieldstosearchall as $key => $val) $fieldstosearchall[$key]=$langs->trans($val); - print $langs->trans("FilterOnInto", $sall, join(', ',$fieldstosearchall)); + print $langs->trans("FilterOnInto", $sall) . join(', ',$fieldstosearchall); } print '<table class="noborder" width="100%">'; diff --git a/htdocs/fourn/facture/list.php b/htdocs/fourn/facture/list.php index a46c5e6ca38..6b69adceb3e 100644 --- a/htdocs/fourn/facture/list.php +++ b/htdocs/fourn/facture/list.php @@ -273,7 +273,7 @@ if ($resql) if ($search_all) { foreach($fieldstosearchall as $key => $val) $fieldstosearchall[$key]=$langs->trans($val); - print $langs->transnoentities("FilterOnInto", $search_all, join(', ',$fieldstosearchall)); + print $langs->trans("FilterOnInto", $search_all) . join(', ',$fieldstosearchall); } print '<table class="liste" width="100%">'; diff --git a/htdocs/holiday/list.php b/htdocs/holiday/list.php index 2f008e5ccd1..5c6829734af 100644 --- a/htdocs/holiday/list.php +++ b/htdocs/holiday/list.php @@ -275,7 +275,7 @@ print '<input type="hidden" name="sortorder" value="'.$sortorder.'">'; if ($sall) { foreach($fieldstosearchall as $key => $val) $fieldstosearchall[$key]=$langs->trans($val); - print $langs->trans("FilterOnInto", $sall, join(', ',$fieldstosearchall)); + print $langs->trans("FilterOnInto", $sall) . join(', ',$fieldstosearchall); } print '<table class="noborder" width="100%;">'; diff --git a/htdocs/user/index.php b/htdocs/user/index.php index 5961d03246e..ce597483d76 100644 --- a/htdocs/user/index.php +++ b/htdocs/user/index.php @@ -263,7 +263,7 @@ if ($result) if ($sall) { foreach($fieldstosearchall as $key => $val) $fieldstosearchall[$key]=$langs->trans($val); - print $langs->trans("FilterOnInto", $sall, join(', ',$fieldstosearchall)); + print $langs->trans("FilterOnInto", $sall) . join(', ',$fieldstosearchall); } $varpage=empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage; -- GitLab From d12e3ca91fee9a149b8904bc2369bfb6d2aaed5d Mon Sep 17 00:00:00 2001 From: aspangaro <alexandre.spangaro@gmail.com> Date: Sat, 28 Nov 2015 14:43:16 +0100 Subject: [PATCH 017/197] Finish work on better integration of skype --- htdocs/admin/skype.php | 162 ----------------------- htdocs/contact/card.php | 8 +- htdocs/core/class/commonobject.class.php | 4 +- htdocs/core/lib/functions.lib.php | 12 +- htdocs/core/modules/modSkype.class.php | 2 +- htdocs/langs/en_US/admin.lang | 7 +- htdocs/theme/common/skype_callbutton.png | Bin 989 -> 1377 bytes htdocs/theme/common/skype_chatbutton.png | Bin 916 -> 1244 bytes htdocs/user/card.php | 12 +- 9 files changed, 16 insertions(+), 191 deletions(-) delete mode 100644 htdocs/admin/skype.php diff --git a/htdocs/admin/skype.php b/htdocs/admin/skype.php deleted file mode 100644 index db942beb8ad..00000000000 --- a/htdocs/admin/skype.php +++ /dev/null @@ -1,162 +0,0 @@ -<?php -/* Copyright (C) 2015 Alexandre Spangaro <aspangaro.dolibarr@gmail.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 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, see <http://www.gnu.org/licenses/>. - */ - -/** - * \file htdocs/admin/skype.php - * \ingroup Skype - * \brief Skype module setup page - */ -require('../main.inc.php'); -require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; - -$langs->load("admin"); - -if (! $user->admin) accessforbidden(); - -/* - * Actions - */ -if (preg_match('/set_(.*)/',$action,$reg)) -{ - $code=$reg[1]; - $value=(GETPOST($code) ? GETPOST($code) : 1); - if (dolibarr_set_const($db, $code, $value, 'chaine', 0, '', $conf->entity) > 0) - { - Header("Location: ".$_SERVER["PHP_SELF"]); - exit; - } - else - { - dol_print_error($db); - } -} - -else if (preg_match('/del_(.*)/',$action,$reg)) -{ - $code=$reg[1]; - if (dolibarr_del_const($db, $code, $conf->entity) > 0) - { - Header("Location: ".$_SERVER["PHP_SELF"]); - exit; - } - else - { - dol_print_error($db); - } -} - -/* - * View - */ -$help_url=''; -llxHeader('', $langs->trans('Parameters')); - -$linkback = '<a href="' . DOL_URL_ROOT . '/admin/modules.php">' . $langs->trans("BackToModuleList") . '</a>'; -print load_fiche_titre($langs->trans("SkypeSetup"), $linkback); - -$var=true; -$form = new Form($db); - -// Configuration header -$h = 0; -$head = array (); - -$head[$h][0] = dol_buildpath('/admin/skype.php', 1); -$head[$h][1] = $langs->trans("Configuration"); -$head[$h][2] = 'parameters'; -$h ++; - -dol_fiche_head($head, 'parameters', $langs->trans("Skype"), 0, "skype"); - -print '<table class="noborder" width="100%">'; -print '<tr class="liste_titre">'; -print '<td colspan="3">' . $langs->trans('Parameters') . '</td>'; -print "</tr>\n"; - -$var = ! $var; - -print '<tr ' . $bc[$var] . '>'; -print '<td>' . $langs->trans("SkypeDeactivateInUser") . '</td>'; -print '<td align="left">'; -if ($conf->use_javascript_ajax) -{ - print ajax_constantonoff('SKYPE_DEACTIVATE_IN_USER'); -} -else -{ - if (empty($conf->global->SKYPE_DEACTIVATE_IN_USER)) - { - print '<a href="'.$_SERVER['PHP_SELF'].'?action=set_SKYPE_DEACTIVATE_IN_USER">'.img_picto($langs->trans("Disabled"),'switch_off').'</a>'; - } - else - { - print '<a href="'.$_SERVER['PHP_SELF'].'?action=del_SKYPE_DEACTIVATE_IN_USER">'.img_picto($langs->trans("Enabled"),'switch_on').'</a>'; - } -} -print '</td>'; -print '</tr>'; - -print '<tr ' . $bc[$var] . '>'; -print '<td>' . $langs->trans("SkypeDeactivateInContact") . '</td>'; -print '<td align="left">'; -if ($conf->use_javascript_ajax) -{ - print ajax_constantonoff('SKYPE_DEACTIVATE_IN_CONTACT'); -} -else -{ - if (empty($conf->global->SKYPE_DEACTIVATE_IN_CONTACT)) - { - print '<a href="'.$_SERVER['PHP_SELF'].'?action=set_SKYPE_DEACTIVATE_IN_CONTACT">'.img_picto($langs->trans("Disabled"),'switch_off').'</a>'; - } - else - { - print '<a href="'.$_SERVER['PHP_SELF'].'?action=del_SKYPE_DEACTIVATE_IN_CONTACT">'.img_picto($langs->trans("Enabled"),'switch_on').'</a>'; - } -} -print '</td>'; -print '</tr>'; - -print '<tr ' . $bc[$var] . '>'; -print '<td>' . $langs->trans("SkypeDeactivateInMember") . '</td>'; -print '<td align="left">'; -if ($conf->use_javascript_ajax) -{ - print ajax_constantonoff('SKYPE_DEACTIVATE_IN_MEMBER'); -} -else -{ - if (empty($conf->global->SKYPE_DEACTIVATE_IN_MEMBER)) - { - print '<a href="'.$_SERVER['PHP_SELF'].'?action=set_SKYPE_DEACTIVATE_IN_MEMBER">'.img_picto($langs->trans("Disabled"),'switch_off').'</a>'; - } - else - { - print '<a href="'.$_SERVER['PHP_SELF'].'?action=del_SKYPE_DEACTIVATE_IN_MEMBER">'.img_picto($langs->trans("Enabled"),'switch_on').'</a>'; - } -} -print '</td>'; -print '</tr>'; - -print "</table>\n"; - -dol_fiche_end(); - -print '</form>'; - -llxFooter(); -$db->close(); diff --git a/htdocs/contact/card.php b/htdocs/contact/card.php index e49b52b8a90..8022c17de67 100644 --- a/htdocs/contact/card.php +++ b/htdocs/contact/card.php @@ -5,7 +5,7 @@ * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2007 Franky Van Liedekerke <franky.van.liedekerke@telenet.be> * Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro> - * Copyright (C) 2013 Alexandre Spangaro <aspangaro.dolibarr@gmail.com> + * Copyright (C) 2013-2015 Alexandre Spangaro <aspangaro.dolibarr@gmail.com> * Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es> * Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr> * @@ -1156,12 +1156,6 @@ else print '<tr><td>'.$langs->trans("No_Email").'</td><td>'.yn($object->no_email).'</td></tr>'; } - // Skype - if (! empty($conf->skype->enabled)) - { - print '<tr><td>'.$langs->trans("Skype").'</td><td>'.dol_print_skype($object->skype,0,$object->fk_soc,1).'</td></tr>'; - } - print '<tr><td>'.$langs->trans("ContactVisibility").'</td><td>'; print $object->LibPubPriv($object->priv); print '</td></tr>'; diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 9cb9a3d45ab..bba17f50d11 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -530,7 +530,9 @@ abstract class CommonObject } if (! empty($conf->skype->enabled)) { - if ($this->skype) $out.=($outdone?'<br>':'').dol_print_skype($this->skype,$this->id,$object->id,'AC_SKYPE'); + $out.='<div style="clear: both;"></div>'; + if ($this->skype) $out.=dol_print_skype($this->skype,$this->id,$object->id,'AC_SKYPE'); + $outdone++; } $out.='<!-- END Part to show address block -->'; diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index e9251da148e..82d5c52c575 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -1520,14 +1520,18 @@ function dol_print_skype($skype,$cid=0,$socid=0,$addlink=0,$max=64) if (! empty($addlink)) { - $newskype='<a href="skype:'; + $newskype =img_picto($langs->trans("Skype"), 'object_skype.png'); + $newskype.= ' '; + $newskype.=dol_trunc($skype,$max); + $newskype.= ' '; + $newskype.='<a href="skype:'; $newskype.=dol_trunc($skype,$max); $newskype.='?call" alt="'.$langs->trans("Call").' '.$skype.'" title="'.$langs->trans("Call").' '.$skype.'">'; - $newskype.='<img src="../theme/common/skype_callbutton.png" border="0">'; - $newskype.='</a> <a href="skype:'; + $newskype.='<img src="'.DOL_URL_ROOT.'/theme/common/skype_callbutton.png" border="0">'; + $newskype.='</a> <a href="skype:'; $newskype.=dol_trunc($skype,$max); $newskype.='?chat" alt="'.$langs->trans("Chat").' '.$skype.'" title="'.$langs->trans("Chat").' '.$skype.'">'; - $newskype.='<img src="../theme/common/skype_chatbutton.png" border="0">'; + $newskype.='<img src="'.DOL_URL_ROOT.'/theme/common/skype_chatbutton.png" border="0">'; $newskype.='</a>'; if (($cid || $socid) && ! empty($conf->agenda->enabled) && $user->rights->agenda->myactions->create) diff --git a/htdocs/core/modules/modSkype.class.php b/htdocs/core/modules/modSkype.class.php index 2c7686d9349..d6017b06c16 100644 --- a/htdocs/core/modules/modSkype.class.php +++ b/htdocs/core/modules/modSkype.class.php @@ -61,7 +61,7 @@ class modSkype extends DolibarrModules // Config pages //------------- - $this->config_page_url = array("skype.php"); + $this->config_page_url = array(); // Dependancies //------------- diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index fff2ea5c32f..232eb3e573f 100755 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -540,7 +540,7 @@ Module2800Desc=FTP Client Module2900Name=GeoIPMaxmind Module2900Desc=GeoIP Maxmind conversions capabilities Module3100Name=Skype -Module3100Desc=Add a Skype button into card of adherents / third parties / contacts +Module3100Desc=Add a Skype button into card of users / third parties / contacts / members Module4000Name=HRM Module4000Desc=Human resources management Module5000Name=Multi-company @@ -1249,11 +1249,6 @@ AddSubscriptionIntoAccount=Suggest by default to create a bank transaction, in b AdherentLoginRequired= Manage a Login for each member AdherentMailRequired=EMail required to create a new member MemberSendInformationByMailByDefault=Checkbox to send mail confirmation to members (validation or new subscription) is on by default -##### Skype setup ##### -SkypeSetup=Skype module setup -SkypeDeactivateInUser=Deactivate Skype in user card -SkypeDeactivateInContact=Deactivate Skype in contact card -SkypeDeactivateInMember=Deactivate Skype in member card ##### LDAP setup ##### LDAPSetup=LDAP Setup LDAPGlobalParameters=Global parameters diff --git a/htdocs/theme/common/skype_callbutton.png b/htdocs/theme/common/skype_callbutton.png index dd76442627a8c261aef378eb4df40442c8a9f1a2..ceccf2858d2cc06e1dbeeefeda95a6ed3f3b19af 100644 GIT binary patch literal 1377 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4rT@h1`S>QU<L*T$r9IylHmNblJdl&R0hYC z{G?O`&)mfH)S%SFl*+=BsWuD@%u1Od5hW46K32*3xq68pHF_1f1q>iyV_#8_n4Fzj zqL7rDo|$K>^nUk#C56lsTcvPQUjyF)=hTc$kE){7;3~h6<f`ms%M>MhI|Z8xtBTx$ z+|-gpg^Jvqyke^gTP3i$R(Zu%AYpwa1+bEmY+EIWqau6*6rA&mQWZ?~jCGR@3=I{` z%=8RROwG&;brg&Y42|>+jPwo6bPY|cOwFu}%oU(O$xgwhC?(A*$i)q6S5Zoutx`rw zNr9EVetCJhUb(Seeo?x<p{1oI$P6PR-J+B<-Qvo;lEez#ykcdT2`;I{$wiq3C7Jno z3Lp~`lk!VTY?YLt##ZDOz>Uo-h6Yn|ey)B+Vu8M)o&m^95WnUY`1;~knwtw(U0f2B zif}JhgNs8d3sUuiQj7CTi;`1=Qqz<{ZYr>HE=o--$uA1Y&(DE{Vn9ZINq%ugeu08> zu$h8JcxGNoetEGbSiP^Wm1kaYNn&1ds;7&sQblfoUS?*BmARvniGhWqi>0ZhrJ<p# zsilj#p^KT5v9p1jp{1d@Axy7JesXDUYF-IUZwf-MD^9(jqyP#IE0@%w%(B!Jx1#)9 z1+bT`GI6`b38#5by(zfe;*3+TzMX=NJ}6?5A{r(X<l+Wmg3}}@ecCA?5`Jo4img(S zlD%EyEbnRt28P=KJ|V7}ecLp9w`uil*X-M_x%f)hu1D@`t{6<-V?F=4+3dp!yY6eu zJf<`4pvjB_TGJ0D?s;Ug@sa8Bt4(KK1@C=fxA?UEk~6{E?<ekkWH@n$*@j0NGmmTb zZ=ZYpo#uocQ?I=3KmV%k%<JGyH#GZqYEIs3Ib)yi(i1upcWU)+)9l}2I^$sDnOBLs z?y1i|uQlUH?1ASg2cKu|x~(z$l-`uR8gtLsZM?5JVRz8>`_cQK8%#S8zUYA2^2=7! z_lE3v;Iit9@1~oMOV8RaKBGBdr^bw9HXH71PS_Q+_eJ&TSFWqB{Qv(yn2Ylq0|SF+ zNswRge<}e69*+5;3=9l2JzX3_DsF|G3*|fPz{7IkX2Gd5xu?#Y;o0}Ub5>r+)vwdP zrc|=IJXPPw_;TCc=Nq_~y3Q$ZDkc~OFmU{+OJMx@s5>^~NK(OL|G8&EPyaib_h)kM z9Os;<P~jr^Y6ng8XMYr|4)}O0I3Ki?nz@}d%9b-_!L{p7t8S-<PjEPWK&Skt$eQUk s3-XfJaxD;6t9k6^zPeIMXfLY-gHy55Hiy{@<Uxg=r>mdKI;Vst0El8HzyJUM literal 989 zcmeAS@N?(olHy`uVBq!ia0y~yU{GgZU=ZM7V_;yIdM8bRfq{96r;B5V$MLgMqdi0d zC5|886B^{HHgo36H@os?PWh>#bdi_mCELT<Q@!jw_+4iNwoG+3U-+Ue^XaOkJGY-O z@o1`9!LiFD=~-@hnc7*Uu<KWKO!xmw{}!S6I!gc2f&3XWi}zXDpZh+yxFw@mr9t(< zo?{B8S-nAfz4Vv5hupqqwCKyWg0-HX(*K&Q+jp65w{Dp9lI^E^jE+jE&I(UdogY2- z$@0w;;#an&z0#@mes?SH=&U76>VFhkcrea(kohok(SNT38J15sY6==mr(}v6&TNsM zyJXe2i~q#qUpN)Zi<;ch{2FLpd4Eel#?luZ#;2vP1b4q>FEik2V`yBXnY5{5zsH0# z^JR5H7yF!(-aMtif0@|t@}%n$fA{(AeYuoj?o_2O+v3iwOPj>F$3gRdq2m1BhysC} zr*9{pe9Mxo&~luY!PBAlE8Dba%@t>ya%&HFov}L;6Y;S6R?@V3&Skdm6c?_Tn{>9w zkSTqKq(X0Z?pFmtmQN0X9wo}#IgT_REZph6IWT@<`5F~Vcae#YuGM+zh<on1;ibvH zTl4?axs$SXX*}8HA+`94%Yw2)3w*XQUa1o3W)!=?@@0W^%I9q*+lxH1*G1(gxB9<+ zy=z7F1=SzCTfX&QXjNlZonfCaF(PB8r&@1znVG*th20BAb=woIjc;vA-^3ngu{pKz zS45xV^d!X}&I)oX&p1b&eZ+9H-A(jjf4qAp`=wXan}Y>i&K%=p)@PW1@TMl${IAxB zj>Z+MO?PfgKj(P%Xo8zgpWv#A?3xdvtT|hCS8U`nie?u%xT;K@^Qf%I(&;zesP6WB zZJh8yVO!hst*mz#z8@^^FIutF<I0^Gt4_Jax7BGVh0l@|2~JxYdR55w@0ZY@VIOY! z9s0@_R_v3ve)hrgkE|14F4JYW()i1M-^RUXUKKh%c-GD6U#*z>TCQZ`4SOHq^}in} zu!eVt)VRy|XTMX4K3S?)!JE<`lfbqzX4&-Xv0U$;KiO#cXYSk(&p(wuKMk|a$<NMS z8*s@ns=2ps&z8yS&U%L5x6CL%oIa~NlIO@t!S>pKw_Gu=6>HlMXd5v7I%vCZ7jvc7 z&0{g=QvE+jgsDxfNnBa+JN0S1)`mkmzZ--twyn{rU9(Tb%PKQ*sfUH^v7>y<@Aq3A zx^YeL)idkc_n-ZFdsAzJGUrxx9rII7*Hqk-C%$R?Ah|{M=*;MrZR%O!XH)#YAN=pl zr{uIHa8_$m|KaVqIj0*k*up+p+Q>7nULMN#_22zZ!j6mcQ`a1Iy1~G}z~JfX=d#Wz Gp$P!|LedBT diff --git a/htdocs/theme/common/skype_chatbutton.png b/htdocs/theme/common/skype_chatbutton.png index 750b49fa2213b1ac6bf9cc8c0e9b6e51253ecf85..d8135bb85a50e5b8a1d459a81365a0b1039df613 100644 GIT binary patch literal 1244 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4rT@h1`S>QU<L*T$r9IylHmNblJdl&R0hYC z{G?O`&)mfH)S%SFl*+=BsWuD@%xRe+5hW46K32*3xq68pHF_1f1q>iyV_#8_n4Fzj zqL7rDo|$K>^nUk#C56lsTcvPQUjyF)=hTc$kE){7;3~h6<f`ms%M>MhI|Z8xtBTx$ z+|-gpg^Jvqyke^gTP3i$R(Zu%AYpwa1+bEmY+EIWqau6*6rA&mQWZ?~jCGR@3=I{` z%=8RROwG&;brg&Y42|>+jPwo6bPY|cOwFu}%oU(O$xgwhC?(A*$i)q6S5Zoutx`rw zNr9EVetCJhUb(Seeo?x<p{1oI$P6PR-J+B<-Qvo;lEez#ykcdT2`;I{$wiq3C7Jno z3Lp~`lk!VTY?YLt##ZDO`1-;P&MSrnRC0c<ennz|zM-Cher_(vUtkXxmjtCEoPkw! zaY$uBs(w&vaeir0a%xa&nlh4A_$>k{Eb#TU@-NCv&&*5Aami0E%}vcK@pQ3Os>m(S zOUX>Ja<Mcuva~ccv2?UFbu~3Kv~+PXbhUJHG&Hj`F>rJ=fti6#uc4WfxwDIzqot{( zo1vkrsiUQdxr>pptErQViG_=!0ZgxFUU5lcUUDkT-ptGtE2v&eyn3yii&7Iy@{2<9 z^K)P+ARr^ZB)>Q#zd*q`*i1nqJTosPzr0uz6g}Xuw{l4>$}CGwaVyHtRRD*tRVEhu z3HuwOH-(%q)3;Nw(FY|Cq{IRf3UYA+F~R8?l*a885Sb@6FU3}=NXg!A>6WOY3=9lu z0X`wFYHJ>S|MSm&>r=h;kAwEU$U62~d);G)ZBLKA{I0&{(aBdo{{H)a>h%xZ^^ey* z_;UH(&)rYIZF=-obM2$}L$AL4{#SSIo&NgAYae`>cKu_^h4*$_pB{brJ@(+sz`ZZb zHa+?E_n*n8C;$Kd=L_BbnSp^psU*lR_&*`Qz<c3vAp-+Lj;D)bNX4z3es{hD1{^Gm z$5qe1-23bQe4o&i=$X>WEV~nI9{4YKHp%d$shyMHo(a2LlpZ*{Eay0&WZ|0GeeHh4 zI_ZVwhePiBT>fj;9=pjz_1<2~wt~4Ay;iwp8ChG2)xIg~yjv9gcAG7W1j8*Yp#{I} RFL{H?8&6k1mvv4FO#q_z&Ncu5 literal 916 zcmeAS@N?(olHy`uVBq!ia0y~yV9;e?U=ZM7V_;xt`uFW60|Rrkr;B5V$MLJvB0WL^ zC64E7O%<CJ`Dn%CAid150)m{Zxgk^ZZ9M{5a`m0^9lu`ia%=4HocZNZ(6YXl9B$S| zo{<aN_&F!OJ~Q`@+SxOEWA^=f{_XBd1*=(K7BJgeJg-SV_xEi1{^D~Qfk(?)Z?djy z2tE)kHNW^pZ;8W2g+(X)7Pe-EFYwIeFk9KXy8F#ciTl>wN0|?}2`KfxW&il!`PUYK zxad!<Ok6onW?uF=<}@|wY+2V4{tx@|Rp+yZ37((*aM5Xp-iY8wg2!JuoYqOTZCI{% zSKlb7p}-=gd-m_ll$<$V{9S(w<ksI=)#*O_?a|9RGCH2e8Ur@4&Ux^|JHXQWC7Zxf z?_idK(|L=6qW7!)I%DV1`IJv9U%KcNyXcCRNrFz*F*<j+?(Oc_&-(KKe@bJq@FTki zHYXU_E6z;*KC|MRX+Z$bwARHu(-!gM)GE(<5Xhl@a=wS>Umw>KHOC)ltabj$@+ddq z-)qg5N0o`?;+J+lP&Qy@Kd=9AhV=f{x(f$4PCmf>rLoXJK}cC`e&-RE{x@k}tKSx; zm1UI7DSG`|W8s?Sn&P!jrl((iCHMKbg|cw#qyy(O;|k?Yw-nZ!f1m!j-_$Rne}`_; z{ex<IZQiXrxGcIgM_cmimdBpjp=Ez`xj(Kf;mQ0em$K>Qr8du&b<Gbmm)vhC52{y9 zH}sS8X4G#GHSx-K^vJ)qRKLwOWb0zR-Rq_cX<K>jjP+Og-LAuz_2TE!&iEC-+`Q5j zPx!|;%}1#u=G2*x2#1|l_@92|+0%L3LGyZEm&)6tm!eBwN-!HqG*w--|2=Q}#G=)G zQ@&Jf+QO5SJbiU*$>e!2S9rFFZT?~_erdhM?J9ejFJ52Qd2LJ%656w4Uh>n^OHauz zcMtO29(?Db^`o5C8PdMzE<10?<ytvcMqFBV()pZ?j_Zr|h?#hPR<7J<(R{urI;FO` z<XCql_l{cUBU|+!&-v!=%U_**Sk}$cCX{`P@Zw*u4Pt*?@V%%ZyHPOt%(>Pcy-kwG zi(+dgZfTw^<IP&WWGCCY`wZ`<fB1f?qCdr>xc|fE?795S7pkrl9(B6Y@h;N$mhTRZ zT-Mye;A8(REm<;+_wfAr`St&6RiQ^p&$z>U#5@{m?EV!;Y_N>~wDZ<U^Po?2ejIL@ gG`IYW_sjdN@xhll{|hc;U|?YIboFyt=akR{08sI?@&Et; diff --git a/htdocs/user/card.php b/htdocs/user/card.php index 62c2e5c9498..9cd92248b87 100644 --- a/htdocs/user/card.php +++ b/htdocs/user/card.php @@ -193,7 +193,7 @@ if (empty($reshook)) { $object->office_phone = GETPOST("office_phone", 'alpha'); $object->office_fax = GETPOST("office_fax", 'alpha'); $object->user_mobile = GETPOST("user_mobile"); - $object->skype = GETPOST("skype"); + $object->skype = GETPOST("skype", 'alpha'); $object->email = GETPOST("email", 'alpha'); $object->job = GETPOST("job", 'alpha'); $object->signature = GETPOST("signature"); @@ -330,7 +330,7 @@ if (empty($reshook)) { $object->office_phone = GETPOST("office_phone", 'alpha'); $object->office_fax = GETPOST("office_fax", 'alpha'); $object->user_mobile = GETPOST("user_mobile"); - $object->skype = GETPOST("skype"); + $object->skype = GETPOST("skype", 'alpha'); $object->email = GETPOST("email", 'alpha'); $object->job = GETPOST("job", 'alpha'); $object->signature = GETPOST("signature"); @@ -1325,14 +1325,6 @@ else print '</td></tr>'."\n"; } - // Skype - if (! empty($conf->skype->enabled)) - { - print '<tr><td>'.$langs->trans("Skype").'</td>'; - print '<td>'.dol_print_skype($object->skype,0,0,1).'</td>'; - print "</tr>\n"; - } - // Signature print '<tr><td class="tdtop">'.$langs->trans('Signature').'</td><td>'; print dol_htmlentitiesbr($object->signature); -- GitLab From 0a3ab4617ccf36db218e64a4a94b2de8e3dc6de5 Mon Sep 17 00:00:00 2001 From: aspangaro <alexandre.spangaro@gmail.com> Date: Sat, 28 Nov 2015 14:52:13 +0100 Subject: [PATCH 018/197] Fix adherent width colomn of create type form --- htdocs/adherents/type.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/htdocs/adherents/type.php b/htdocs/adherents/type.php index af708ef2f20..e2fc32f3bcb 100644 --- a/htdocs/adherents/type.php +++ b/htdocs/adherents/type.php @@ -242,15 +242,14 @@ if ($action == 'create') print '<form action="'.$_SERVER['PHP_SELF'].'" method="POST">'; print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; + print '<input type="hidden" name="action" value="add">'; dol_fiche_head(''); print '<table class="border" width="100%">'; print '<tbody>'; - print '<input type="hidden" name="action" value="add">'; - - print '<tr><td class="fieldrequired">'.$langs->trans("Label").'</td><td><input type="text" name="libelle" size="40"></td></tr>'; + print '<tr><td width="25%" class="fieldrequired">'.$langs->trans("Label").'</td><td><input type="text" name="libelle" size="40"></td></tr>'; print '<tr><td>'.$langs->trans("SubscriptionRequired").'</td><td>'; print $form->selectyesno("cotisation",1,1); -- GitLab From 8bf66d2f5856ca1bf53a79ef05607951c5d0d87e Mon Sep 17 00:00:00 2001 From: aspangaro <alexandre.spangaro@gmail.com> Date: Sat, 28 Nov 2015 15:09:08 +0100 Subject: [PATCH 019/197] Remove skype also in member card - already present in dol_banner --- htdocs/adherents/card.php | 7 ------- htdocs/adherents/card_subscriptions.php | 6 ------ 2 files changed, 13 deletions(-) diff --git a/htdocs/adherents/card.php b/htdocs/adherents/card.php index f998c2f08a3..503eddfbbb7 100644 --- a/htdocs/adherents/card.php +++ b/htdocs/adherents/card.php @@ -1400,7 +1400,6 @@ else $rowspan=17; if (empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED)) $rowspan++; if (! empty($conf->societe->enabled)) $rowspan++; - if (! empty($conf->skype->enabled)) $rowspan++; $linkback = '<a href="'.DOL_URL_ROOT.'/adherents/list.php">'.$langs->trans("BackToList").'</a>'; @@ -1445,12 +1444,6 @@ else print '</td></tr>'; } - // Skype - if (! empty($conf->skype->enabled)) - { - print '<tr><td>'.$langs->trans("Skype").'</td><td class="valeur">'.dol_print_skype($object->skype,0,$object->fk_soc,1).'</td></tr>'; - } - print '</table>'; print '</div>'; diff --git a/htdocs/adherents/card_subscriptions.php b/htdocs/adherents/card_subscriptions.php index 9d86f618618..38c6f254bda 100644 --- a/htdocs/adherents/card_subscriptions.php +++ b/htdocs/adherents/card_subscriptions.php @@ -610,12 +610,6 @@ if ($rowid > 0) print '</td></tr>'; } - // Skype - if (! empty($conf->skype->enabled)) - { - print '<tr><td>'.$langs->trans("Skype").'</td><td class="valeur">'.dol_print_skype($object->skype,0,$object->fk_soc,1).'</td></tr>'; - } - print '</table>'; print '</div>'; -- GitLab From 826c4de26b0c18577c2420eff12bb780c7339ca7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sat, 28 Nov 2015 15:28:59 +0100 Subject: [PATCH 020/197] Uniformize and debug module expense report. --- htdocs/expensereport/card.php | 136 ++++++++++-------- .../class/expensereport.class.php | 7 +- htdocs/expensereport/list.php | 4 +- 3 files changed, 85 insertions(+), 62 deletions(-) diff --git a/htdocs/expensereport/card.php b/htdocs/expensereport/card.php index f456bc0db8b..f5d38bc001c 100644 --- a/htdocs/expensereport/card.php +++ b/htdocs/expensereport/card.php @@ -51,6 +51,8 @@ $date = dol_mktime(0, 0, 0, GETPOST('datemonth'), GETPOST('dateday'), GETPOST('d $fk_projet=GETPOST('fk_projet'); $vatrate=GETPOST('vatrate'); $ref=GETPOST("ref",'alpha'); +$comments=GETPOST('comments'); +$fk_c_type_fees=GETPOST('fk_c_type_fees','int'); // If socid provided by ajax company selector if (! empty($_REQUEST['socid_id'])) @@ -92,7 +94,19 @@ $hideref = (GETPOST('hideref', 'int') ? GETPOST('hideref', 'int') : (! empty($co * Actions */ -if ($cancel) $action=''; +if ($cancel) +{ + $action=''; + $fk_projet=''; + $date_start=''; + $date_end=''; + $date=''; + $comments=''; + $vatrate=''; + $value_unit=''; + $qty=1; + $fk_c_type_fees=-1; +} if ($action == 'confirm_delete' && GETPOST("confirm") == "yes" && $id > 0 && $user->rights->expensereport->supprimer) { @@ -863,7 +877,7 @@ if ($action == "addline") if($object_ligne->value_unit==0) { $error++; - setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("UP")), null, 'errors'); + setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("PriceUTTC")), null, 'errors'); } // S'il y'a eu au moins une erreur @@ -1615,7 +1629,19 @@ else $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'projet as pjt ON fde.fk_projet=pjt.rowid'; $sql.= ' WHERE fde.fk_expensereport = '.$object->id; - $resql = $db->query($sql); + print '<div style="clear: both;">'; + + $actiontouse='updateligne'; + if (($object->fk_statut==0 || $object->fk_statut==99) && $action != 'editline') $actiontouse='addline'; + + print '<form name="expensereport" action="'.$_SERVER["PHP_SELF"].'" method="post">'; + print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; + print '<input type="hidden" name="action" value="'.$actiontouse.'">'; + print '<input type="hidden" name="id" value="'.$object->id.'">'; + print '<input type="hidden" name="fk_expensereport" value="'.$object->id.'" />'; + print '<table class="noborder" width="100%">'; + + $resql = $db->query($sql); if ($resql) { $num_lignes = $db->num_rows($resql); @@ -1623,34 +1649,21 @@ else if ($num_lignes) { - print '<div style="clear: both;">'; - - print '<form name="updateligne" action="'.$_SERVER["PHP_SELF"].'" method="post">'; - print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; - print '<input type="hidden" name="action" value="updateligne">'; - print '<input type="hidden" name="id" value="'.$object->id.'">'; - - print '<table class="noborder" width="100%">'; - print '<tr class="liste_titre">'; - if ($action != 'editline') print '<td style="text-align:center;">'.$langs->trans('Piece').'</td>'; + print '<td style="text-align:center;">'.$langs->trans('Piece').'</td>'; print '<td style="text-align:center;">'.$langs->trans('Date').'</td>'; - print '<td style="text-align:center;">'.$langs->trans('Project').'</td>'; + print '<td>'.$langs->trans('Project').'</td>'; print '<td style="text-align:center;">'.$langs->trans('Type').'</td>'; print '<td style="text-align:left;">'.$langs->trans('Description').'</td>'; print '<td style="text-align:right;">'.$langs->trans('VAT').'</td>'; - print '<td style="text-align:right;">'.$langs->trans('UnitPriceTTC').'</td>'; + print '<td style="text-align:right;">'.$langs->trans('PriceUTTC').'</td>'; print '<td style="text-align:right;">'.$langs->trans('Qty').'</td>'; if ($action != 'editline') { print '<td style="text-align:right;">'.$langs->trans('AmountHT').'</td>'; print '<td style="text-align:right;">'.$langs->trans('AmountTTC').'</td>'; } - // Ajout des boutons de modification/suppression - if ($object->fk_statut < 2 || $object->fk_statut==99) - { - print '<td style="text-align:right;"></td>'; - } + print '<td style="text-align:right;"></td>'; print '</tr>'; @@ -1663,14 +1676,11 @@ else if ($action != 'editline' || $objp->rowid != GETPOST('rowid')) { print '<tr '.$bc[$var].'>'; - if ($action != 'editline') - { - print '<td style="text-align:center;">'; - print img_picto($langs->trans("Document"), "object_generic"); - print ' <span>'.$piece_comptable.'</span></td>'; - } - print '<td style="text-align:center;">'.dol_print_date($db->jdate($objp->date), 'day').'</td>'; print '<td style="text-align:center;">'; + print img_picto($langs->trans("Document"), "object_generic"); + print ' <span>'.$piece_comptable.'</span></td>'; + print '<td style="text-align:center;">'.dol_print_date($db->jdate($objp->date), 'day').'</td>'; + print '<td>'; if ($objp->projet_id > 0) { $projecttmp->id=$objp->projet_id; @@ -1683,6 +1693,7 @@ else print '<td style="text-align:right;">'.vatrate($objp->vatrate,true).'</td>'; print '<td style="text-align:right;">'.price($objp->value_unit).'</td>'; print '<td style="text-align:right;">'.$objp->qty.'</td>'; + if ($action != 'editline') { print '<td style="text-align:right;">'.price($objp->total_ht).'</td>'; @@ -1690,17 +1701,18 @@ else } // Ajout des boutons de modification/suppression + print '<td style="text-align:right;" class="nowrap">'; if($object->fk_statut<2 OR $object->fk_statut==99) { - print '<td style="text-align:right;" class="nowrap">'; print '<a href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=editline&rowid='.$objp->rowid.'#'.$objp->rowid.'">'; print img_edit(); print '</a> '; print '<a href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=delete_line&rowid='.$objp->rowid.'">'; print img_delete(); print '</a>'; - print '</td>'; } + print '</td>'; + print '</tr>'; } @@ -1708,6 +1720,9 @@ else { //modif ligne!!!!! print '<tr '.$bc[$var].'>'; + + print '<td></td>'; + // Select date print '<td style="text-align:center;">'; $form->select_date($objp->date,'date'); @@ -1743,6 +1758,12 @@ else print '<input type="text" size="4" name="qty" value="'.$objp->qty.'" />'; print '</td>'; + if ($action != 'editline') + { + print '<td style="text-align:right;">'.$langs->trans('AmountHT').'</td>'; + print '<td style="text-align:right;">'.$langs->trans('AmountTTC').'</td>'; + } + print '<td style="text-align:center;">'; print '<input type="hidden" name="rowid" value="'.$objp->rowid.'">'; print '<input type="submit" class="button" name="save" value="'.$langs->trans('Save').'">'; @@ -1754,12 +1775,6 @@ else } $db->free($resql); - - print '</table>'; - - print '</form>'; - - print '</div>'; } else { @@ -1772,27 +1787,23 @@ else // Add a line if (($object->fk_statut==0 || $object->fk_statut==99) && $action != 'editline') { - print load_fiche_titre($langs->trans("AddLine"),'',''); - - print '<form method="post" action="'.$_SERVER['PHP_SELF'].'" name="addline">'; - print '<input type="hidden" name="id" value="'.$object->id.'">'; - print '<input type="hidden" name="fk_expensereport" value="'.$object->id.'" />'; - print '<input type="hidden" name="action" value="addline" />'; - - print '<table class="noborder" width="100%">'; print '<tr class="liste_titre">'; - print '<td style="text-align:center;">'.$langs->trans('Date').'</td>'; + print '<td colspan="2"></td>'; + //print '<td style="text-align:center;">'.$langs->trans('Date').'</td>'; print '<td>'.$langs->trans('Project').'</td>'; - print '<td>'.$langs->trans('Type').'</td>'; + print '<td align="center">'.$langs->trans('Type').'</td>'; print '<td>'.$langs->trans('Description').'</td>'; print '<td style="text-align:right;">'.$langs->trans('VAT').'</td>'; print '<td style="text-align:right;">'.$langs->trans('PriceUTTC').'</td>'; print '<td style="text-align:right;">'.$langs->trans('Qty').'</td>'; - print '<td style="text-align:center;"></td>'; + print '<td colspan="3"></td>'; print '</tr>'; + print '<tr '.$bc[true].'>'; + print '<td></td>'; + // Select date print '<td style="text-align:center;">'; $form->select_date($date?$date:-1,'date'); @@ -1800,17 +1811,17 @@ else // Select project print '<td>'; - $formproject->select_projects(-1, GETPOST('fk_projet'), 'fk_projet', 0, 0, 1, 1); + $formproject->select_projects(-1, $fk_projet, 'fk_projet', 0, 0, 1, 1); print '</td>'; // Select type - print '<td>'; - select_type_fees_id(GETPOST('fk_c_type_fees'),'fk_c_type_fees',1); + print '<td align="center">'; + select_type_fees_id($fk_c_type_fees,'fk_c_type_fees',1); print '</td>'; // Add comments - print '<td style="text-align:left;">'; - print '<textarea class="flat_ndf centpercent" name="comments">'.GETPOST('comments').'</textarea>'; + print '<td>'; + print '<textarea class="flat_ndf centpercent" name="comments">'.$comments.'</textarea>'; print '</td>'; // Select VAT @@ -1819,28 +1830,37 @@ else if (! empty($conf->global->EXPENSEREPORT_NO_DEFAULT_VAT)) $conf->global->MAIN_VAT_DEFAULT_IF_AUTODETECT_FAILS = 'none'; print '<select class="flat" name="vatrate">'; print '<option name="none" value="" selected>'; - print $form->load_tva('vatrate', (isset($_POST["vatrate"])?$_POST["vatrate"]:$defaultvat), $mysoc, '', 0, 0, '', true); + print $form->load_tva('vatrate', ($vatrate!=''?$vatrate:$defaultvat), $mysoc, '', 0, 0, '', true); print '</select>'; print '</td>'; // Unit price print '<td style="text-align:right;">'; - print '<input type="text" size="6" name="value_unit" value="'.GETPOST('value_unit').'">'; + print '<input type="text" size="5" name="value_unit" value="'.$value_unit.'">'; print '</td>'; // Quantity print '<td style="text-align:right;">'; - print '<input type="text" size="4" name="qty" value="'.GETPOST('qty').'">'; + print '<input type="text" size="2" name="qty" value="'.($qty?$qty:1).'">'; print '</td>'; + if ($action != 'editline') + { + print '<td style="text-align:right;"></td>'; + print '<td style="text-align:right;"></td>'; + } + print '<td style="text-align:center;"><input type="submit" value="'.$langs->trans("Add").'" name="bouton" class="button"></td>'; + print '</tr>'; - - print '</table>'; - - print '</form>'; } // Fin si c'est payé/validé + print '</table>'; + + print '</form>'; + + print '</div>'; + } else { diff --git a/htdocs/expensereport/class/expensereport.class.php b/htdocs/expensereport/class/expensereport.class.php index 0dba68b5b5c..8b79d0b5d9f 100644 --- a/htdocs/expensereport/class/expensereport.class.php +++ b/htdocs/expensereport/class/expensereport.class.php @@ -1801,9 +1801,10 @@ class ExpenseReportLine * @param int $selected preselect status * @param string $htmlname Name of HTML select * @param int $useempty 1=Add empty line + * @param int $useshortlabel Use short labels * @return string HTML select with status */ -function select_expensereport_statut($selected='',$htmlname='fk_statut',$useempty=1) +function select_expensereport_statut($selected='',$htmlname='fk_statut',$useempty=1, $useshortlabel=0) { global $db, $langs; @@ -1811,7 +1812,9 @@ function select_expensereport_statut($selected='',$htmlname='fk_statut',$useempt print '<select class="flat" name="'.$htmlname.'">'; if ($useempty) print '<option value="-1"> </option>'; - foreach ($tmpep->statuts as $key => $val) + $arrayoflabels=$tmpep->statuts; + if ($useshortlabel) $arrayoflabels=$tmpep->statuts_short; + foreach ($arrayoflabels as $key => $val) { if ($selected != '' && $selected == $key) { diff --git a/htdocs/expensereport/list.php b/htdocs/expensereport/list.php index 4a12d25f8f2..c37d0d81dad 100644 --- a/htdocs/expensereport/list.php +++ b/htdocs/expensereport/list.php @@ -1,6 +1,6 @@ <?php /* Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org> - * Copyright (C) 2004-2008 Laurent Destailleur <eldy@users.sourceforge.net> + * Copyright (C) 2004-2015 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2004 Eric Seigne <eric.seigne@ryxeo.com> * Copyright (C) 2005-2009 Regis Houssin <regis@dolibarr.fr> * Copyright (C) 2015 Alexandre Spangaro <aspangaro.dolibarr@gmail.com> @@ -257,7 +257,7 @@ if ($resql) // Status print '<td class="liste_titre" align="right">'; - select_expensereport_statut($search_status,'search_status'); + select_expensereport_statut($search_status,'search_status',1,1); print '</td>'; print '<td class="liste_titre" align="right">'; -- GitLab From 3485e351a48f91c3d4a1d0fe6a4887fdbd143f85 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sat, 28 Nov 2015 15:46:20 +0100 Subject: [PATCH 021/197] Fix do not jump to top of page when clicking on "Link to order" --- htdocs/core/class/html.form.class.php | 4 ++-- htdocs/expensereport/document.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index b683bcb0f6c..bada8627ee0 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -4954,7 +4954,7 @@ class Form if (((! is_array($restrictlinksto)) || in_array('order',$restrictlinksto)) && ! empty($conf->commande->enabled)) { - $linktoelem.=($linktoelem?' ':'').'<a href="#" id="linktoorder">' . $langs->trans('LinkedOrder') . '</a>'; + $linktoelem.=($linktoelem?' ':'').'<a href="#linktoorder" id="linktoorder">' . $langs->trans('LinkedOrder') . '</a>'; print ' <script type="text/javascript" language="javascript"> @@ -5020,7 +5020,7 @@ class Form if (((! is_array($restrictlinksto)) || in_array('supplier_order',$restrictlinksto)) && ! empty($conf->fournisseur->enabled)) { - $linktoelem.=($linktoelem?' ':'').'<a href="#" id="linktoorder">' . $langs->trans('LinkedOrder') . '</a>'; + $linktoelem.=($linktoelem?' ':'').'<a href="#linktoorder" id="linktoorder">' . $langs->trans('LinkedOrder') . '</a>'; print ' <script type="text/javascript" language="javascript"> diff --git a/htdocs/expensereport/document.php b/htdocs/expensereport/document.php index 86ff064db7d..f16d6ca14e1 100644 --- a/htdocs/expensereport/document.php +++ b/htdocs/expensereport/document.php @@ -108,7 +108,7 @@ if ($object->id) // Ref print '<tr><td width="30%">'.$langs->trans("Ref").'</td><td>'; - print $form->showrefnav($object, 'id', $linkback, 1, 'rowid', 'ref', ''); + print $form->showrefnav($object, 'ref', $linkback, 1, 'ref', 'ref', ''); print '</td></tr>'; // Societe -- GitLab From 5b22eee938574192e9211edbfb55d0615f420a3f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sat, 28 Nov 2015 16:11:15 +0100 Subject: [PATCH 022/197] FIX #4099 --- htdocs/core/lib/date.lib.php | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/htdocs/core/lib/date.lib.php b/htdocs/core/lib/date.lib.php index 931f30ce998..ac44d6e5975 100644 --- a/htdocs/core/lib/date.lib.php +++ b/htdocs/core/lib/date.lib.php @@ -540,9 +540,10 @@ function dol_get_first_day_week($day,$month,$year,$gm=false) * @param int $timestampStart Timestamp de debut * @param int $timestampEnd Timestamp de fin * @param string $countrycode Country code + * @param int $lastday Last day is included, 0: no, 1:yes * @return int Nombre de jours feries */ -function num_public_holiday($timestampStart, $timestampEnd, $countrycode='FR') +function num_public_holiday($timestampStart, $timestampEnd, $countrycode='FR', $lastday=0) { $nbFerie = 0; @@ -550,7 +551,8 @@ function num_public_holiday($timestampStart, $timestampEnd, $countrycode='FR') if ((($timestampEnd - $timestampStart) % 86400) != 0) return 'ErrorDates must use same hours and must be GMT dates'; $i=0; - while ($timestampStart < $timestampEnd && ($i < 50000)) // Loop end when equals (Test on i is a security loop to avoid infinite loop) + while (( ($lastday == 0 && $timestampStart < $timestampEnd) || ($lastday && $timestampStart <= $timestampEnd) ) + && ($i < 50000)) // Loop end when equals (Test on i is a security loop to avoid infinite loop) { $ferie=false; $countryfound=0; @@ -718,7 +720,7 @@ function num_public_holiday($timestampStart, $timestampEnd, $countrycode='FR') * * @param int $timestampStart Timestamp start UTC * @param int $timestampEnd Timestamp end UTC - * @param int $lastday Last day is included, 0: non, 1:oui + * @param int $lastday Last day is included, 0: no, 1:yes * @return int Number of days */ function num_between_day($timestampStart, $timestampEnd, $lastday=0) @@ -766,7 +768,7 @@ function num_open_day($timestampStart, $timestampEnd, $inhour=0, $lastday=0, $ha if ($timestampStart < $timestampEnd) { $numdays = num_between_day($timestampStart, $timestampEnd, $lastday); - $numholidays = num_public_holiday($timestampStart, $timestampEnd, $country_code); + $numholidays = num_public_holiday($timestampStart, $timestampEnd, $country_code, $lastday); $nbOpenDay = $numdays - $numholidays; $nbOpenDay.= " " . $langs->trans("Days"); if ($inhour == 1 && $nbOpenDay <= 3) $nbOpenDay = $nbOpenDay*24 . $langs->trans("HourShort"); -- GitLab From 3e403720e6589c8c9f33932ff00d75abe38d3119 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sat, 28 Nov 2015 17:35:52 +0100 Subject: [PATCH 023/197] FIX User is selected when choosing menu "My projects" Graph of opportunities is moved into an include file. --- htdocs/projet/graph_opportunities.inc.php | 85 ++++++++++++++++++++++ htdocs/projet/index.php | 86 +---------------------- htdocs/projet/list.php | 15 ++-- 3 files changed, 94 insertions(+), 92 deletions(-) create mode 100644 htdocs/projet/graph_opportunities.inc.php diff --git a/htdocs/projet/graph_opportunities.inc.php b/htdocs/projet/graph_opportunities.inc.php new file mode 100644 index 00000000000..6cae34bddfa --- /dev/null +++ b/htdocs/projet/graph_opportunities.inc.php @@ -0,0 +1,85 @@ +<?php +if (! empty($conf->global->PROJECT_USE_OPPORTUNITIES)) +{ + $sql = "SELECT COUNT(p.rowid) as nb, SUM(p.opp_amount) as opp_amount, p.fk_opp_status as opp_status"; + $sql.= " FROM ".MAIN_DB_PREFIX."projet as p"; + $sql.= " WHERE p.entity = ".$conf->entity; + $sql.= " AND p.fk_statut = 1"; + if ($mine || empty($user->rights->projet->all->lire)) $sql.= " AND p.rowid IN (".$projectsListId.")"; + if ($socid) $sql.= " AND (p.fk_soc IS NULL OR p.fk_soc = 0 OR p.fk_soc = ".$socid.")"; + $sql.= " GROUP BY p.fk_opp_status"; + $resql = $db->query($sql); + if ($resql) + { + $num = $db->num_rows($resql); + $i = 0; + + $totalnb=0; + $totalamount=0; + $ponderated_opp_amount=0; + $valsnb=array(); + $valsamount=array(); + $dataseries=array(); + // -1=Canceled, 0=Draft, 1=Validated, (2=Accepted/On process not managed for customer orders), 3=Closed (Sent/Received, billed or not) + while ($i < $num) + { + $obj = $db->fetch_object($resql); + if ($obj) + { + //if ($row[1]!=-1 && ($row[1]!=3 || $row[2]!=1)) + { + $valsnb[$obj->opp_status]=$obj->nb; + $valsamount[$obj->opp_status]=$obj->opp_amount; + $totalnb+=$obj->nb; + $totalamount+=$obj->opp_amount; + $ponderated_opp_amount = $ponderated_opp_amount + price2num($listofoppstatus[$obj->opp_status] * $obj->opp_amount / 100); + } + $total+=$row[0]; + } + $i++; + } + $db->free($resql); + + print '<table class="noborder nohover" width="100%">'; + print '<tr class="liste_titre"><td colspan="2">'.$langs->trans("Statistics").' - '.$langs->trans("OpportunitiesStatusForOpenedProjects").'</td></tr>'."\n"; + $var=true; + $listofstatus=array_keys($listofoppstatus); + foreach ($listofstatus as $status) + { + $labelstatus = ''; + + $code = dol_getIdFromCode($db, $status, 'c_lead_status', 'rowid', 'code'); + if ($code) $labelstatus = $langs->trans("OppStatus".$code); + if (empty($labelstatus)) $labelstatus=$listofopplabel[$status]; + + //$labelstatus .= ' ('.$langs->trans("Coeff").': '.price2num($listofoppstatus[$status]).')'; + $labelstatus .= ' - '.price2num($listofoppstatus[$status]).'%'; + + $dataseries[]=array('label'=>$labelstatus,'data'=>(isset($valsamount[$status])?(float) $valsamount[$status]:0)); + if (! $conf->use_javascript_ajax) + { + $var=!$var; + print "<tr ".$bc[$var].">"; + print '<td>'.$labelstatus.'</td>'; + print '<td align="right"><a href="list.php?statut='.$status.'">'.price((isset($valsamount[$status])?(float) $valsamount[$status]:0), 0, '', 1, -1, -1, $conf->currency).'</a></td>'; + print "</tr>\n"; + } + } + if ($conf->use_javascript_ajax) + { + print '<tr class="impair"><td align="center" colspan="2">'; + $data=array('series'=>$dataseries); + dol_print_graph('stats',400,180,$data,1,'pie',0,'',0); + print '</td></tr>'; + } + //if ($totalinprocess != $total) + //print '<tr class="liste_total"><td>'.$langs->trans("Total").' ('.$langs->trans("CustomersOrdersRunning").')</td><td align="right">'.$totalinprocess.'</td></tr>'; + print '<tr class="liste_total"><td>'.$langs->trans("OpportunityTotalAmount").'</td><td align="right">'.price($totalamount, 0, '', 1, -1, -1, $conf->currency).'</td></tr>'; + print '<tr class="liste_total"><td>'.$langs->trans("OpportunityPonderatedAmount").'</td><td align="right">'.price($ponderated_opp_amount, 0, '', 1, -1, -1, $conf->currency).'</td></tr>'; + print "</table><br>"; + } + else + { + dol_print_error($db); + } +} diff --git a/htdocs/projet/index.php b/htdocs/projet/index.php index 11ae9e78906..b91b8763611 100644 --- a/htdocs/projet/index.php +++ b/htdocs/projet/index.php @@ -128,91 +128,7 @@ if (count($listofsearchfields)) /* * Statistics */ - -if (! empty($conf->global->PROJECT_USE_OPPORTUNITIES)) -{ - $sql = "SELECT COUNT(p.rowid) as nb, SUM(p.opp_amount) as opp_amount, p.fk_opp_status as opp_status"; - $sql.= " FROM ".MAIN_DB_PREFIX."projet as p"; - $sql.= " WHERE p.entity = ".$conf->entity; - $sql.= " AND p.fk_statut = 1"; - if ($mine || empty($user->rights->projet->all->lire)) $sql.= " AND p.rowid IN (".$projectsListId.")"; - if ($socid) $sql.= " AND (p.fk_soc IS NULL OR p.fk_soc = 0 OR p.fk_soc = ".$socid.")"; - $sql.= " GROUP BY p.fk_opp_status"; - $resql = $db->query($sql); - if ($resql) - { - $num = $db->num_rows($resql); - $i = 0; - - $totalnb=0; - $totalamount=0; - $ponderated_opp_amount=0; - $valsnb=array(); - $valsamount=array(); - $dataseries=array(); - // -1=Canceled, 0=Draft, 1=Validated, (2=Accepted/On process not managed for customer orders), 3=Closed (Sent/Received, billed or not) - while ($i < $num) - { - $obj = $db->fetch_object($resql); - if ($obj) - { - //if ($row[1]!=-1 && ($row[1]!=3 || $row[2]!=1)) - { - $valsnb[$obj->opp_status]=$obj->nb; - $valsamount[$obj->opp_status]=$obj->opp_amount; - $totalnb+=$obj->nb; - $totalamount+=$obj->opp_amount; - $ponderated_opp_amount = $ponderated_opp_amount + price2num($listofoppstatus[$obj->opp_status] * $obj->opp_amount / 100); - } - $total+=$row[0]; - } - $i++; - } - $db->free($resql); - - print '<table class="noborder nohover" width="100%">'; - print '<tr class="liste_titre"><td colspan="2">'.$langs->trans("Statistics").' - '.$langs->trans("OpportunitiesStatusForOpenedProjects").'</td></tr>'."\n"; - $var=true; - $listofstatus=array_keys($listofoppstatus); - foreach ($listofstatus as $status) - { - $labelstatus = ''; - - $code = dol_getIdFromCode($db, $status, 'c_lead_status', 'rowid', 'code'); - if ($code) $labelstatus = $langs->trans("OppStatus".$code); - if (empty($labelstatus)) $labelstatus=$listofopplabel[$status]; - - //$labelstatus .= ' ('.$langs->trans("Coeff").': '.price2num($listofoppstatus[$status]).')'; - $labelstatus .= ' - '.price2num($listofoppstatus[$status]).'%'; - - $dataseries[]=array('label'=>$labelstatus,'data'=>(isset($valsamount[$status])?(float) $valsamount[$status]:0)); - if (! $conf->use_javascript_ajax) - { - $var=!$var; - print "<tr ".$bc[$var].">"; - print '<td>'.$labelstatus.'</td>'; - print '<td align="right"><a href="list.php?statut='.$status.'">'.price((isset($valsamount[$status])?(float) $valsamount[$status]:0), 0, '', 1, -1, -1, $conf->currency).'</a></td>'; - print "</tr>\n"; - } - } - if ($conf->use_javascript_ajax) - { - print '<tr class="impair"><td align="center" colspan="2">'; - $data=array('series'=>$dataseries); - dol_print_graph('stats',400,180,$data,1,'pie',0,''); - print '</td></tr>'; - } - //if ($totalinprocess != $total) - //print '<tr class="liste_total"><td>'.$langs->trans("Total").' ('.$langs->trans("CustomersOrdersRunning").')</td><td align="right">'.$totalinprocess.'</td></tr>'; - print '<tr class="liste_total"><td>'.$langs->trans("OpportunityTotalAmount").'</td><td align="right">'.price($totalamount, 0, '', 1, -1, -1, $conf->currency).'</td></tr>'; - print '<tr class="liste_total"><td>'.$langs->trans("OpportunityPonderatedAmount").'</td><td align="right">'.price($ponderated_opp_amount, 0, '', 1, -1, -1, $conf->currency).'</td></tr>'; - print "</table><br>"; - } - else - { - dol_print_error($db); - } -} +include DOL_DOCUMENT_ROOT.'/projet/graph_opportunities.inc.php'; // List of draft projects diff --git a/htdocs/projet/list.php b/htdocs/projet/list.php index 7481a6bf05c..c4e8b8f5783 100644 --- a/htdocs/projet/list.php +++ b/htdocs/projet/list.php @@ -276,15 +276,16 @@ if ($resql) $moreforfilter.=$formother->select_salesrepresentatives($search_sale, 'search_sale', $user, 0, 1, 'maxwidth300'); $moreforfilter.='</div>'; } + // If the user can view prospects other than his' + if ($mine) $search_user=$user->id; + $moreforfilter.='<div class="divsearchfield">'; + $moreforfilter.=$langs->trans('ProjectsWithThisUserAsContact'). ': '; + $includeonly=''; + if (empty($user->rights->user->user->lire)) $includeonly=array($user->id); + $moreforfilter.=$form->select_dolusers($search_user, 'search_user', 1, '', 0, $includeonly, '', 0, 0, 0, '', 0, '', 'maxwidth300'); + $moreforfilter.='</div>'; - if (($user->rights->societe->client->voir || $socid) && !$mine) - { - $moreforfilter.='<div class="divsearchfield">'; - $moreforfilter.=$langs->trans('ProjectsWithThisUserAsContact'). ': '; - $moreforfilter.=$form->select_dolusers($search_user, 'search_user', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); - $moreforfilter.='</div>'; - } if (! empty($moreforfilter)) { print '<div class="liste_titre liste_titre_bydiv centpercent">'; -- GitLab From 212fce2ab7771464235b2fb9393329595f6210b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= <frederic.france@free.fr> Date: Sat, 28 Nov 2015 17:36:03 +0100 Subject: [PATCH 024/197] Create composer.json.phpcs --- composer.json.phpcs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 composer.json.phpcs diff --git a/composer.json.phpcs b/composer.json.phpcs new file mode 100644 index 00000000000..5f5ea2d1fdf --- /dev/null +++ b/composer.json.phpcs @@ -0,0 +1,18 @@ +{ + "name": "dolibarr/dolibarr", + "type": "project", + "description": "Dolibarr ERP & CRM is a modern and easy to use web software to manage your business", + "keywords": ["erp","crm","invoice","sme","proposal","order","stock"], + "homepage": "http://www.dolibarr.org", + "license": "GPL-3.0+", + "support": { + "issues": "https://github.com/Dolibarr/dolibarr/issues", + "forum": "http://www.dolibarr.org/forum", + "wiki": "http://wiki.dolibarr.org", + "irc": "irc://chat.freenode.net/dolibarr", + "source": "https://github.com/Dolibarr/dolibarr" + }, + "config": { + "vendor-dir": "htdocs/includes" + } +} -- GitLab From d178c1bf3786f4329811fc523d92f372d7b90016 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= <frederic.france@free.fr> Date: Sat, 28 Nov 2015 17:38:48 +0100 Subject: [PATCH 025/197] Update .travis.yml --- .travis.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.travis.yml b/.travis.yml index 49aaecd5c32..a31aff2eda7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -45,6 +45,8 @@ before_script: - which phpunit - phpunit --version - echo Install phpcs then show installed rules + - cp composer.json composer.json.old + - cp composer.json.phpcs composer.json - composer self-update - composer require squizlabs/php_codesniffer:${PHPCS_VERSION} - composer install -- GitLab From e3443365d27661f645cfb1428e75142e3d1cd937 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= <frederic.france@free.fr> Date: Sat, 28 Nov 2015 19:08:52 +0100 Subject: [PATCH 026/197] Navigation to loan list --- htdocs/loan/index.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/htdocs/loan/index.php b/htdocs/loan/index.php index 25d0f015253..76524a87960 100644 --- a/htdocs/loan/index.php +++ b/htdocs/loan/index.php @@ -83,6 +83,12 @@ if ($filtre) { } $sql.= " GROUP BY l.rowid, l.label, l.capital, l.datestart, l.dateend"; $sql.= $db->order($sortfield,$sortorder); +$numall = 0; +if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) +{ + $result = $db->query($sql); + $numall = $db->num_rows($result); +} $sql.= $db->plimit($limit+1, $offset); //print $sql; @@ -93,13 +99,13 @@ if ($resql) $i = 0; $var=true; - print load_fiche_titre($langs->trans("Loans")); - $param=""; if ($optioncss != '') $param.='&optioncss='.$optioncss; print '<form method="GET" action="'.$_SERVER["PHP_SELF"].'">'."\n"; if ($optioncss != '') print '<input type="hidden" name="optioncss" value="'.$optioncss.'">'; + print_barre_liste($langs->trans("Loans"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $numall,'title_generic.png'); + print '<table class="noborder" width="100%">'; print '<tr class="liste_titre">'; print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],"l.rowid","",$param,"",$sortfield,$sortorder); -- GitLab From 5d5cfd498a7d27288c0d4d9b15f18c2b11e5a33a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sat, 28 Nov 2015 19:54:16 +0100 Subject: [PATCH 027/197] Add holiday date functions into PHPUnit --- htdocs/core/lib/date.lib.php | 3 ++ test/phpunit/DateLibTest.php | 77 +++++++++++++++++++++++++++++++++++- 2 files changed, 79 insertions(+), 1 deletion(-) diff --git a/htdocs/core/lib/date.lib.php b/htdocs/core/lib/date.lib.php index ac44d6e5975..b06baaa9288 100644 --- a/htdocs/core/lib/date.lib.php +++ b/htdocs/core/lib/date.lib.php @@ -542,6 +542,7 @@ function dol_get_first_day_week($day,$month,$year,$gm=false) * @param string $countrycode Country code * @param int $lastday Last day is included, 0: no, 1:yes * @return int Nombre de jours feries + * @see num_between_day, num_open_day */ function num_public_holiday($timestampStart, $timestampEnd, $countrycode='FR', $lastday=0) { @@ -722,6 +723,7 @@ function num_public_holiday($timestampStart, $timestampEnd, $countrycode='FR', $ * @param int $timestampEnd Timestamp end UTC * @param int $lastday Last day is included, 0: no, 1:yes * @return int Number of days + * @see also num_public_holiday, num_open_day */ function num_between_day($timestampStart, $timestampEnd, $lastday=0) { @@ -751,6 +753,7 @@ function num_between_day($timestampStart, $timestampEnd, $lastday=0) * @param int $halfday Tag to define half day when holiday start and end * @param string $country_code Country code (company country code if not defined) * @return int Number of days or hours + * @see also num_between_day, num_public_holiday */ function num_open_day($timestampStart, $timestampEnd, $inhour=0, $lastday=0, $halfday=0, $country_code='') { diff --git a/test/phpunit/DateLibTest.php b/test/phpunit/DateLibTest.php index 5f33a9f5095..02d85164d79 100644 --- a/test/phpunit/DateLibTest.php +++ b/test/phpunit/DateLibTest.php @@ -167,7 +167,82 @@ class DateLibTest extends PHPUnit_Framework_TestCase return $result; } - + /** + * testNumPublicHoliday + * + * @return void + */ + public function testNumPublicHoliday() + { + global $conf,$user,$langs,$db; + $conf=$this->savconf; + $user=$this->savuser; + $langs=$this->savlangs; + $db=$this->savdb; + + // With same hours - Tuesday/Wednesday jan 2013 + $date1=dol_mktime(0, 0, 0, 1, 1, 2013); + $date2=dol_mktime(0, 0, 0, 1, 2, 2013); + + $result=num_public_holiday($date1,$date2,'FR',1); + print __METHOD__." result=".$result."\n"; + $this->assertEquals(1,$result,'NumPublicHoliday for Tuesday/Wednesday jan 2013 for FR'); // 1 closed days + + $result=num_public_holiday($date1,$date2,'XX',1); + print __METHOD__." result=".$result."\n"; + $this->assertEquals(0,$result,'NumPublicHoliday for Tuesday/Wednesday jan 2013 for XX'); // no closed days (country unknown) + + // With same hours - Friday/Sunday jan 2013 + $date1=dol_mktime(0, 0, 0, 1, 4, 2013); + $date2=dol_mktime(0, 0, 0, 1, 6, 2013); + + $result=num_public_holiday($date1,$date2,'FR',1); + print __METHOD__." result=".$result."\n"; + $this->assertEquals(2,$result,'NumPublicHoliday for FR'); // 1 opened day, 2 closed days + + $result=num_public_holiday($date1,$date2,'XX',1); + print __METHOD__." result=".$result."\n"; + $this->assertEquals(2,$result,'NumPublicHoliday for XX'); // 1 opened day, 2 closed days (even if country unknown) + } + + /** + * testNumOpenDay + * + * @return void + */ + public function testNumOpenDay() + { + global $conf,$user,$langs,$db; + $conf=$this->savconf; + $user=$this->savuser; + $langs=$this->savlangs; + $db=$this->savdb; + + // With same hours - Tuesday/Wednesday jan 2013 + $date1=dol_mktime(0, 0, 0, 1, 1, 2013); + $date2=dol_mktime(0, 0, 0, 1, 2, 2013); + + $result=num_open_day($date1,$date2,0,1,0,'FR'); + print __METHOD__." result=".$result."\n"; + $this->assertEquals(1,$result,'NumOpenDay Tuesday/Wednesday jan 2013 for FR'); // 1 opened days + + $result=num_open_day($date1,$date2,0,1,0,'XX'); + print __METHOD__." result=".$result."\n"; + $this->assertEquals(2,$result,'NumOpenDay Tuesday/Wednesday jan 2013 for XX'); // 2 opened days (country unknown) + + // With same hours - Friday/Sunday jan 2013 + $date1=dol_mktime(0, 0, 0, 1, 4, 2013); + $date2=dol_mktime(0, 0, 0, 1, 6, 2013); + + $result=num_open_day($date1,$date2,0,1,0,'FR'); + print __METHOD__." result=".$result."\n"; + $this->assertEquals(1,$result,'NumOpenDay for FR'); // 1 opened day, 2 closed + + $result=num_open_day($date1,$date2,'XX',1); + print __METHOD__." result=".$result."\n"; + $this->assertEquals(1,$result,'NumOpenDay for XX'); // 1 opened day, 2 closes (even if country unknown) + } + /** * testConvertTime2Seconds * -- GitLab From 5df193ec9325a8ff47cc5a2a7444020365e68c42 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sat, 28 Nov 2015 20:25:50 +0100 Subject: [PATCH 028/197] Uniformize code --- htdocs/comm/index.php | 7 +++- htdocs/core/search.php | 5 +++ .../interface_90_all_Demo.class.php-NORUN | 2 +- htdocs/fourn/commande/index.php | 2 +- htdocs/langs/en_US/supplier_proposal.lang | 38 ++++++++++--------- htdocs/langs/fr_FR/supplier_proposal.lang | 32 ++++++++-------- htdocs/supplier_proposal/card.php | 4 +- .../class/supplier_proposal.class.php | 22 +++++------ htdocs/supplier_proposal/index.php | 2 +- htdocs/supplier_proposal/list.php | 34 ++++++++++++++--- 10 files changed, 91 insertions(+), 57 deletions(-) diff --git a/htdocs/comm/index.php b/htdocs/comm/index.php index 86f48d10817..d55c05102d5 100644 --- a/htdocs/comm/index.php +++ b/htdocs/comm/index.php @@ -97,7 +97,12 @@ if (! empty($conf->ficheinter->enabled) && $user->rights->ficheinter->lire) // Search contract if (! empty($conf->contrat->enabled) && $user->rights->contrat->lire) { - $listofsearchfields['search_contract']=array('text'=>'Contrat'); + $listofsearchfields['search_contract']=array('text'=>'Contrat'); +} +// Search contract +if (! empty($conf->supplier_proposal->enabled) && $user->rights->supplier_proposal->lire) +{ + $listofsearchfields['search_supplier_proposal']=array('text'=>'SupplierProposalShort'); } if (count($listofsearchfields)) diff --git a/htdocs/core/search.php b/htdocs/core/search.php index 0307a8c77d1..5f66c34721d 100644 --- a/htdocs/core/search.php +++ b/htdocs/core/search.php @@ -74,6 +74,11 @@ if (GETPOST('search_supplier_invoice') != '') header("Location: ".DOL_URL_ROOT.'/fourn/facture/list.php?sall='.urlencode(GETPOST('search_supplier_invoice'))); exit; } +if (GETPOST('search_supplier_proposal') != '') +{ + header("Location: ".DOL_URL_ROOT.'/supplier_proposal/list.php?sall='.urlencode(GETPOST('search_supplier_proposal'))); + exit; +} if (GETPOST('search_donation') != '') { header("Location: ".DOL_URL_ROOT.'/don/list.php?sall='.urlencode(GETPOST('search_donation'))); diff --git a/htdocs/core/triggers/interface_90_all_Demo.class.php-NORUN b/htdocs/core/triggers/interface_90_all_Demo.class.php-NORUN index bd1328e6eae..f25a99f3b59 100644 --- a/htdocs/core/triggers/interface_90_all_Demo.class.php-NORUN +++ b/htdocs/core/triggers/interface_90_all_Demo.class.php-NORUN @@ -150,7 +150,7 @@ class InterfaceDemo extends DolibarrTriggers case 'LINEPROPAL_UPDATE': case 'LINEPROPAL_DELETE': - // Askpricesupplier + // SupplierProposal case 'SUPPLIER_PROPOSAL_CREATE': case 'SUPPLIER_PROPOSAL_CLONE': case 'SUPPLIER_PROPOSAL_MODIFY': diff --git a/htdocs/fourn/commande/index.php b/htdocs/fourn/commande/index.php index c9de3c6a340..1bdec7b9a8d 100644 --- a/htdocs/fourn/commande/index.php +++ b/htdocs/fourn/commande/index.php @@ -131,7 +131,7 @@ if ($resql) { print '<tr class="impair"><td align="center" colspan="2">'; $data=array('series'=>$dataseries); - dol_print_graph('stats',300,180,$data,1,'pie',1); + dol_print_graph('stats',300,180,$data,1,'pie',1,'',0); print '</td></tr>'; } //if ($totalinprocess != $total) diff --git a/htdocs/langs/en_US/supplier_proposal.lang b/htdocs/langs/en_US/supplier_proposal.lang index b0e2887feb0..7bd743881c1 100644 --- a/htdocs/langs/en_US/supplier_proposal.lang +++ b/htdocs/langs/en_US/supplier_proposal.lang @@ -11,10 +11,12 @@ DraftRequests=Draft requests LastModifiedRequests=Last %s modified price requests RequestsOpened=Open price requests SupplierProposalArea=Supplier proposals area -Askpricesupplier=Supplier proposals +SupplierProposal=Supplier proposal +SupplierProposalShort=Supplier proposal +SupplierProposals=Supplier proposals NewAskPrice=New price request NewAsk=New request -ShowAskpricesupplier=Show price request +ShowSupplierProposal=Show price request AddSupplierProposal=Create a price request SupplierProposalRefFourn=Supplier ref SupplierProposalDate=Delivery date @@ -25,22 +27,22 @@ DateAsk=Date of request DeleteAsk=Delete request ValidateAsk=Validate request AddAsk=Create a request -AskpricesupplierDraft=Drafts -AskpricesupplierOpened=Open -AskpricesupplierStatusDraft=Draft (needs to be validated) -AskpricesupplierStatusValidated=Validated (request is open) -AskpricesupplierStatusOpened=Validated (request is open) -AskpricesupplierStatusClosed=Closed -AskpricesupplierStatusSigned=Accepted -AskpricesupplierStatusNotSigned=Refused -AskpricesupplierStatusBilled=Billed -AskpricesupplierStatusDraftShort=Draft -AskpricesupplierStatusValidatedShort=Validated -AskpricesupplierStatusOpenedShort=Open -AskpricesupplierStatusClosedShort=Closed -AskpricesupplierStatusSignedShort=Accepted -AskpricesupplierStatusNotSignedShort=Refused -AskpricesupplierStatusBilledShort=Billed +SupplierProposalDraft=Drafts +SupplierProposalOpened=Open +SupplierProposalStatusDraft=Draft (needs to be validated) +SupplierProposalStatusValidated=Validated (request is open) +SupplierProposalStatusOpened=Validated (request is open) +SupplierProposalStatusClosed=Closed +SupplierProposalStatusSigned=Accepted +SupplierProposalStatusNotSigned=Refused +SupplierProposalStatusBilled=Billed +SupplierProposalStatusDraftShort=Draft +SupplierProposalStatusValidatedShort=Validated +SupplierProposalStatusOpenedShort=Open +SupplierProposalStatusClosedShort=Closed +SupplierProposalStatusSignedShort=Accepted +SupplierProposalStatusNotSignedShort=Refused +SupplierProposalStatusBilledShort=Billed CopyAskFrom=Create price request by copying existing a request CreateEmptyAsk=Create blank request CloneAsk=Clone price request diff --git a/htdocs/langs/fr_FR/supplier_proposal.lang b/htdocs/langs/fr_FR/supplier_proposal.lang index 2bbf73507ba..3d3037b58a8 100644 --- a/htdocs/langs/fr_FR/supplier_proposal.lang +++ b/htdocs/langs/fr_FR/supplier_proposal.lang @@ -11,10 +11,10 @@ DraftRequests=Demandes brouillons LastModifiedRequests=Les %s dernières demandes de prix modifiées RequestsOpened=Demandes de prix ouvertes SupplierProposalArea=Espace des demandes de prix fournisseurs -Askpricesupplier=Demande de prix fournisseur +SupplierProposal=Demande de prix fournisseur NewAskPrice=Nouvelle demande de prix NewAsk=Nouvelle demande -ShowAskpricesupplier=Afficher la demande de prix +ShowSupplierProposal=Afficher la demande de prix AddSupplierProposal=Créer une demande de prix SupplierProposalRefFourn=Réf. fournisseur SupplierProposalDate=Date de livraison @@ -25,20 +25,20 @@ DateAsk=Date de demande DeleteAsk=Supprimer demande ValidateAsk=Valider demande AddAsk=Créer une demande -AskpricesupplierDraft=Brouillons -AskpricesupplierOpened=Ouvertes -AskpricesupplierStatusDraft=Brouillon (à valider) -AskpricesupplierStatusValidated=Validée (demande ouverte) -AskpricesupplierStatusOpened=Validée (demande ouverte) -AskpricesupplierStatusClosed=Fermée -AskpricesupplierStatusSigned=Acceptée -AskpricesupplierStatusNotSigned=Refusée -AskpricesupplierStatusDraftShort=Brouillon -AskpricesupplierStatusValidatedShort=Validée -AskpricesupplierStatusOpenedShort=Ouverte -AskpricesupplierStatusClosedShort=Fermée -AskpricesupplierStatusSignedShort=Acceptée -AskpricesupplierStatusNotSignedShort=Refusée +SupplierProposalDraft=Brouillons +SupplierProposalOpened=Ouvertes +SupplierProposalStatusDraft=Brouillon (à valider) +SupplierProposalStatusValidated=Validée (demande ouverte) +SupplierProposalStatusOpened=Validée (demande ouverte) +SupplierProposalStatusClosed=Fermée +SupplierProposalStatusSigned=Acceptée +SupplierProposalStatusNotSigned=Refusée +SupplierProposalStatusDraftShort=Brouillon +SupplierProposalStatusValidatedShort=Validée +SupplierProposalStatusOpenedShort=Ouverte +SupplierProposalStatusClosedShort=Fermée +SupplierProposalStatusSignedShort=Acceptée +SupplierProposalStatusNotSignedShort=Refusée CopyAskFrom=Créer demande/devis par recopie d'une demande existante CreateEmptyAsk=Créer demande/devis vierge CloneAsk=Cloner demande de prix diff --git a/htdocs/supplier_proposal/card.php b/htdocs/supplier_proposal/card.php index 878d1c0df01..2a64fa5d4c5 100644 --- a/htdocs/supplier_proposal/card.php +++ b/htdocs/supplier_proposal/card.php @@ -1607,8 +1607,8 @@ if ($action == 'create') $form_close .= '<input type="hidden" name="action" value="setstatut">'; $form_close .= '<select id="statut" name="statut" class="flat">'; $form_close .= '<option value="0"> </option>'; - $form_close .= '<option value="2">' . $langs->trans('AskpricesupplierStatusSigned') . '</option>'; - $form_close .= '<option value="3">' . $langs->trans('AskpricesupplierStatusNotSigned') . '</option>'; + $form_close .= '<option value="2">' . $langs->trans('SupplierProposalStatusSigned') . '</option>'; + $form_close .= '<option value="3">' . $langs->trans('SupplierProposalStatusNotSigned') . '</option>'; $form_close .= '</select>'; $form_close .= '</td></tr>'; $form_close .= '<tr><td width="150" align="left">' . $langs->trans('Note') . '</td><td align="left"><textarea cols="70" rows="' . ROWS_3 . '" wrap="soft" name="note">'; diff --git a/htdocs/supplier_proposal/class/supplier_proposal.class.php b/htdocs/supplier_proposal/class/supplier_proposal.class.php index 57fc7e50838..799a94a4104 100644 --- a/htdocs/supplier_proposal/class/supplier_proposal.class.php +++ b/htdocs/supplier_proposal/class/supplier_proposal.class.php @@ -151,16 +151,16 @@ class SupplierProposal extends CommonObject $this->remise_absolue = 0; $langs->load("supplier_proposal"); - $this->labelstatut[0]=(! empty($conf->global->SUPPLIER_PROPOSAL_STATUS_DRAFT_LABEL) ? $conf->global->SUPPLIER_PROPOSAL_STATUS_DRAFT_LABEL : $langs->trans("AskpricesupplierStatusDraft")); - $this->labelstatut[1]=(! empty($conf->global->SUPPLIER_PROPOSAL_STATUS_VALIDATED_LABEL) ? $conf->global->SUPPLIER_PROPOSAL_STATUS_VALIDATED_LABEL : $langs->trans("AskpricesupplierStatusValidated")); - $this->labelstatut[2]=(! empty($conf->global->SUPPLIER_PROPOSAL_STATUS_SIGNED_LABEL) ? $conf->global->SUPPLIER_PROPOSAL_STATUS_SIGNED_LABEL : $langs->trans("AskpricesupplierStatusSigned")); - $this->labelstatut[3]=(! empty($conf->global->SUPPLIER_PROPOSAL_STATUS_NOTSIGNED_LABEL) ? $conf->global->SUPPLIER_PROPOSAL_STATUS_NOTSIGNED_LABEL : $langs->trans("AskpricesupplierStatusNotSigned")); - $this->labelstatut[4]=(! empty($conf->global->SUPPLIER_PROPOSAL_STATUS_BILLED_LABEL) ? $conf->global->SUPPLIER_PROPOSAL_STATUS_BILLED_LABEL : $langs->trans("AskpricesupplierStatusBilled")); - $this->labelstatut_short[0]=(! empty($conf->global->SUPPLIER_PROPOSAL_STATUS_DRAFTSHORT_LABEL) ? $conf->global->SUPPLIER_PROPOSAL_STATUS_DRAFTSHORT_LABEL : $langs->trans("AskpricesupplierStatusDraftShort")); + $this->labelstatut[0]=(! empty($conf->global->SUPPLIER_PROPOSAL_STATUS_DRAFT_LABEL) ? $conf->global->SUPPLIER_PROPOSAL_STATUS_DRAFT_LABEL : $langs->trans("SupplierProposalStatusDraft")); + $this->labelstatut[1]=(! empty($conf->global->SUPPLIER_PROPOSAL_STATUS_VALIDATED_LABEL) ? $conf->global->SUPPLIER_PROPOSAL_STATUS_VALIDATED_LABEL : $langs->trans("SupplierProposalStatusValidated")); + $this->labelstatut[2]=(! empty($conf->global->SUPPLIER_PROPOSAL_STATUS_SIGNED_LABEL) ? $conf->global->SUPPLIER_PROPOSAL_STATUS_SIGNED_LABEL : $langs->trans("SupplierProposalStatusSigned")); + $this->labelstatut[3]=(! empty($conf->global->SUPPLIER_PROPOSAL_STATUS_NOTSIGNED_LABEL) ? $conf->global->SUPPLIER_PROPOSAL_STATUS_NOTSIGNED_LABEL : $langs->trans("SupplierProposalStatusNotSigned")); + $this->labelstatut[4]=(! empty($conf->global->SUPPLIER_PROPOSAL_STATUS_BILLED_LABEL) ? $conf->global->SUPPLIER_PROPOSAL_STATUS_BILLED_LABEL : $langs->trans("SupplierProposalStatusBilled")); + $this->labelstatut_short[0]=(! empty($conf->global->SUPPLIER_PROPOSAL_STATUS_DRAFTSHORT_LABEL) ? $conf->global->SUPPLIER_PROPOSAL_STATUS_DRAFTSHORT_LABEL : $langs->trans("SupplierProposalStatusDraftShort")); $this->labelstatut_short[1]=(! empty($conf->global->SUPPLIER_PROPOSAL_STATUS_VALIDATEDSHORT_LABEL) ? $conf->global->SUPPLIER_PROPOSAL_STATUS_VALIDATEDSHORT_LABEL : $langs->trans("Opened")); - $this->labelstatut_short[2]=(! empty($conf->global->SUPPLIER_PROPOSAL_STATUS_SIGNEDSHORT_LABEL) ? $conf->global->SUPPLIER_PROPOSAL_STATUS_SIGNEDSHORT_LABEL : $langs->trans("AskpricesupplierStatusSignedShort")); - $this->labelstatut_short[3]=(! empty($conf->global->SUPPLIER_PROPOSAL_STATUS_NOTSIGNEDSHORT_LABEL) ? $conf->global->SUPPLIER_PROPOSAL_STATUS_NOTSIGNEDSHORT_LABEL : $langs->trans("AskpricesupplierStatusNotSignedShort")); - $this->labelstatut_short[4]=(! empty($conf->global->SUPPLIER_PROPOSAL_STATUS_BILLEDSHORT_LABEL) ? $conf->global->SUPPLIER_PROPOSAL_STATUS_BILLEDSHORT_LABEL : $langs->trans("AskpricesupplierStatusBilledShort")); + $this->labelstatut_short[2]=(! empty($conf->global->SUPPLIER_PROPOSAL_STATUS_SIGNEDSHORT_LABEL) ? $conf->global->SUPPLIER_PROPOSAL_STATUS_SIGNEDSHORT_LABEL : $langs->trans("SupplierProposalStatusSignedShort")); + $this->labelstatut_short[3]=(! empty($conf->global->SUPPLIER_PROPOSAL_STATUS_NOTSIGNEDSHORT_LABEL) ? $conf->global->SUPPLIER_PROPOSAL_STATUS_NOTSIGNEDSHORT_LABEL : $langs->trans("SupplierProposalStatusNotSignedShort")); + $this->labelstatut_short[4]=(! empty($conf->global->SUPPLIER_PROPOSAL_STATUS_BILLEDSHORT_LABEL) ? $conf->global->SUPPLIER_PROPOSAL_STATUS_BILLEDSHORT_LABEL : $langs->trans("SupplierProposalStatusBilledShort")); } @@ -627,7 +627,7 @@ class SupplierProposal extends CommonObject } else { - dol_syslog(get_class($this)."::updateline Erreur -2 Askpricesupplier en mode incompatible pour cette action"); + dol_syslog(get_class($this)."::updateline Erreur -2 SupplierProposal en mode incompatible pour cette action"); return -2; } } @@ -2259,7 +2259,7 @@ class SupplierProposal extends CommonObject global $langs; $result=''; - $label=$langs->trans("ShowAskpricesupplier").': '.$this->ref; + $label=$langs->trans("ShowSupplierProposal").': '.$this->ref; $linkclose = '" title="'.dol_escape_htmltag($label, 1).'" class="classfortooltip">'; if ($option == '') { $link = '<a href="'.DOL_URL_ROOT.'/supplier_proposal/card.php?id='.$this->id. $get_params .$linkclose; diff --git a/htdocs/supplier_proposal/index.php b/htdocs/supplier_proposal/index.php index 4c363ba32ac..9339f801583 100644 --- a/htdocs/supplier_proposal/index.php +++ b/htdocs/supplier_proposal/index.php @@ -133,7 +133,7 @@ if ($resql) { print '<tr '.$bc[false].'><td align="center" colspan="2">'; $data=array('series'=>$dataseries); - dol_print_graph('stats',300,180,$data,1,'pie',1); + dol_print_graph('stats',300,180,$data,1,'pie',1,'',0); print '</td></tr>'; } diff --git a/htdocs/supplier_proposal/list.php b/htdocs/supplier_proposal/list.php index cfea07b1e48..a1f66e832f0 100644 --- a/htdocs/supplier_proposal/list.php +++ b/htdocs/supplier_proposal/list.php @@ -25,9 +25,9 @@ */ /** - * \file htdocs/comm/propal/list.php - * \ingroup propal - * \brief Page of commercial proposals card and list + * \file htdocs/supplier_proposal/list.php + * \ingroup supplier_proposal + * \brief Page of supplier proposals card and list */ require '../main.inc.php'; @@ -96,6 +96,16 @@ if (GETPOST("button_removefilter") || GETPOST("button_removefilter_x")) // Both if($object_statut != '') $viewstatut=$object_statut; +// List of fields to search into when doing a "search in all" +$fieldstosearchall = array( + 'p.ref'=>'Ref', + 's.nom'=>'Supplier', + 'pd.description'=>'Description', + 'p.note_private'=>"NotePrivate", + 'p.note_public'=>'NotePublic', +); + + // Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array $hookmanager->initHooks(array('supplier_proposallist')); @@ -175,7 +185,7 @@ if ($search_montant_ht) $sql.= " AND p.total_ht='".$db->escape(price2num(trim($search_montant_ht)))."'"; } if ($sall) { - $sql .= natural_search(array('s.nom', 'p.note_private', 'p.note_public', 'pd.description'), $sall); + $sql .= natural_search(array_keys($fieldstosearchall), $sall); } if ($socid) $sql.= ' AND s.rowid = '.$socid; if ($viewstatut <> '') @@ -240,7 +250,19 @@ if ($result) // Lignes des champs de filtre print '<form method="GET" action="'.$_SERVER["PHP_SELF"].'">'; - + if ($optioncss != '') print '<input type="hidden" name="optioncss" value="'.$optioncss.'">'; + print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; + print '<input type="hidden" name="action" value="list">'; + print '<input type="hidden" name="sortfield" value="'.$sortfield.'">'; + print '<input type="hidden" name="sortorder" value="'.$sortorder.'">'; + + if ($sall) + { + foreach($fieldstosearchall as $key => $val) $fieldstosearchall[$key]=$langs->trans($val); + //sort($fieldstosearchall); + print $langs->trans("FilterOnInto", $sall) . join(', ',$fieldstosearchall); + } + $i = 0; $moreforfilter=''; @@ -276,7 +298,7 @@ if ($result) print '<table class="tagtable liste'.($moreforfilter?" listwithfilterbefore":"").'">'; print '<tr class="liste_titre">'; print_liste_field_titre($langs->trans('Ref'),$_SERVER["PHP_SELF"],'p.ref','',$param,'',$sortfield,$sortorder); - print_liste_field_titre($langs->trans('Company'),$_SERVER["PHP_SELF"],'s.nom','',$param,'',$sortfield,$sortorder); + print_liste_field_titre($langs->trans('Supplier'),$_SERVER["PHP_SELF"],'s.nom','',$param,'',$sortfield,$sortorder); print_liste_field_titre($langs->trans('SupplierProposalDate'),$_SERVER["PHP_SELF"],'p.date_livraison','',$param, 'align="center"',$sortfield,$sortorder); print_liste_field_titre($langs->trans('AmountHT'),$_SERVER["PHP_SELF"],'p.total_ht','',$param, 'align="right"',$sortfield,$sortorder); print_liste_field_titre($langs->trans('Author'),$_SERVER["PHP_SELF"],'u.login','',$param,'align="center"',$sortfield,$sortorder); -- GitLab From 6d7e3604988f0c13594fa75e597ca595b12afdbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= <frederic.france@free.fr> Date: Sat, 28 Nov 2015 20:33:18 +0100 Subject: [PATCH 029/197] Update list.php --- htdocs/expensereport/list.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/htdocs/expensereport/list.php b/htdocs/expensereport/list.php index c37d0d81dad..10b19d66da3 100644 --- a/htdocs/expensereport/list.php +++ b/htdocs/expensereport/list.php @@ -177,6 +177,12 @@ if (empty($user->rights->expensereport->readall) && empty($user->rights->expense } $sql.= $db->order($sortfield,$sortorder); +$nbtotalofrecords = 0; +if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) +{ + $result = $db->query($sql); + $nbtotalofrecords = $db->num_rows($result); +} $sql.= $db->plimit($limit+1, $offset); //print $sql; -- GitLab From 79263d06e950b957871c3a4dbbe31b9eb4ced6ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= <frederic.france@free.fr> Date: Sat, 28 Nov 2015 20:37:09 +0100 Subject: [PATCH 030/197] Update index.php --- htdocs/loan/index.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/htdocs/loan/index.php b/htdocs/loan/index.php index 76524a87960..e99691d8ff9 100644 --- a/htdocs/loan/index.php +++ b/htdocs/loan/index.php @@ -100,7 +100,10 @@ if ($resql) $var=true; $param=""; - if ($optioncss != '') $param.='&optioncss='.$optioncss; + if ($search_ref) $param.="&search_ref=".$search_ref; + if ($search_label) $param.="&search_label=".$search_user; + if ($search_amount) $param.="&search_amount=".$search_amount_ht; + if ($optioncss != '') $param.='&optioncss='.$optioncss; print '<form method="GET" action="'.$_SERVER["PHP_SELF"].'">'."\n"; if ($optioncss != '') print '<input type="hidden" name="optioncss" value="'.$optioncss.'">'; -- GitLab From 7b6d8dd23e114d5b6de4ed39232c7775d4099525 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sun, 29 Nov 2015 01:13:23 +0100 Subject: [PATCH 031/197] Fix for smartphone --- htdocs/core/class/html.formfile.class.php | 4 +++- htdocs/core/lib/ajax.lib.php | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/htdocs/core/class/html.formfile.class.php b/htdocs/core/class/html.formfile.class.php index 689f5c1d8a5..2df95872454 100644 --- a/htdocs/core/class/html.formfile.class.php +++ b/htdocs/core/class/html.formfile.class.php @@ -526,7 +526,9 @@ class FormFile include_once DOL_DOCUMENT_ROOT.'/core/class/html.formadmin.class.php'; $formadmin=new FormAdmin($this->db); $defaultlang=$codelang?$codelang:$langs->getDefaultLang(); - $out.= $formadmin->select_language($defaultlang); + $morecss='maxwidth150'; + if (! empty($conf->browser->phone)) $morecss='maxwidth100'; + $out.= $formadmin->select_language($defaultlang, 'lang_id', 0, 0, 0, 0, 0, $morecss); } else { diff --git a/htdocs/core/lib/ajax.lib.php b/htdocs/core/lib/ajax.lib.php index 97ca06be08a..44de58ed4a8 100644 --- a/htdocs/core/lib/ajax.lib.php +++ b/htdocs/core/lib/ajax.lib.php @@ -345,7 +345,7 @@ function ajax_combobox($htmlname, $events=array(), $minLengthToAutocomplete=0, $ { global $conf; - //if (! empty($conf->browser->phone)) return ''; // combobox disabled for smartphones (does not works) + if (! empty($conf->browser->phone)) return ''; // select2 disabled for smartphones with standard browser (does not works, popup appears outside screen) if (! empty($conf->dol_use_jmobile)) return ''; // select2 works with jmobile but it breaks the autosize feature of jmobile. if (! empty($conf->global->MAIN_DISABLE_AJAX_COMBOX)) return ''; if (empty($conf->use_javascript_ajax)) return ''; -- GitLab From 263be5aa0abdce4fd49f745683f3299bcd572f84 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sun, 29 Nov 2015 01:16:56 +0100 Subject: [PATCH 032/197] Avoid 2 lines on mall screen --- htdocs/core/class/html.formfile.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/class/html.formfile.class.php b/htdocs/core/class/html.formfile.class.php index 2df95872454..7664f5717f8 100644 --- a/htdocs/core/class/html.formfile.class.php +++ b/htdocs/core/class/html.formfile.class.php @@ -178,11 +178,11 @@ class FormFile $out .= '<div>'; $out .= '<div class="float" style="padding-right: 10px;">'; - $out .= '<label for="link">'.$langs->trans("URLToLink") . '</label>: '; + $out .= '<label for="link">'.$langs->trans("URLToLink") . ':</label> '; $out .= '<input type="text" name="link" size="'.$maxlength.'" id="link">'; $out .= '</div>'; $out .= '<div class="float" style="padding-right: 10px;">'; - $out .= '<label for="label">'.$langs->trans("Label") . '</label>: '; + $out .= '<label for="label">'.$langs->trans("Label") . ':</label> '; $out .= '<input type="text" name="label" id="label">'; $out .= '<input type="hidden" name="objecttype" value="' . $object->element . '">'; $out .= '<input type="hidden" name="objectid" value="' . $object->id . '">'; -- GitLab From ebe4867ab12a67271c9195b5a8a6211cc0c35312 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sun, 29 Nov 2015 01:23:41 +0100 Subject: [PATCH 033/197] Remove useless information tomake screen lighter --- htdocs/core/class/html.formfile.class.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/core/class/html.formfile.class.php b/htdocs/core/class/html.formfile.class.php index 7664f5717f8..c539efa5a9b 100644 --- a/htdocs/core/class/html.formfile.class.php +++ b/htdocs/core/class/html.formfile.class.php @@ -178,12 +178,12 @@ class FormFile $out .= '<div>'; $out .= '<div class="float" style="padding-right: 10px;">'; - $out .= '<label for="link">'.$langs->trans("URLToLink") . ':</label> '; - $out .= '<input type="text" name="link" size="'.$maxlength.'" id="link">'; + if (! empty($conf->global->OPTIMIZEFORTEXTBROWSER)) $out .= '<label for="link">'.$langs->trans("URLToLink") . ':</label> '; + $out .= '<input type="text" name="link" size="'.$maxlength.'" id="link" placeholder="'.dol_escape_htmltag($langs->trans("URLToLink")).'">'; $out .= '</div>'; $out .= '<div class="float" style="padding-right: 10px;">'; - $out .= '<label for="label">'.$langs->trans("Label") . ':</label> '; - $out .= '<input type="text" name="label" id="label">'; + if (! empty($conf->global->OPTIMIZEFORTEXTBROWSER)) $out .= '<label for="label">'.$langs->trans("Label") . ':</label> '; + $out .= '<input type="text" name="label" id="label" placeholder="'.dol_escape_htmltag($langs->trans("Label")).'">'; $out .= '<input type="hidden" name="objecttype" value="' . $object->element . '">'; $out .= '<input type="hidden" name="objectid" value="' . $object->id . '">'; $out .= '</div>'; -- GitLab From 480623a6d5ae6716b0973430ed1d608a403ce1e9 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sun, 29 Nov 2015 13:03:46 +0100 Subject: [PATCH 034/197] Uniformize GUI. All lists must have a search on status at end and last column is dedicaded to future "mass action checkbox". --- htdocs/contrat/card.php | 23 +++++++------ htdocs/contrat/services.php | 44 ++++++++++++++++++++++--- htdocs/core/menus/standard/eldy.lib.php | 4 +-- htdocs/langs/en_US/contracts.lang | 2 ++ 4 files changed, 56 insertions(+), 17 deletions(-) diff --git a/htdocs/contrat/card.php b/htdocs/contrat/card.php index 3514ab6acfc..5ddb0b343fa 100644 --- a/htdocs/contrat/card.php +++ b/htdocs/contrat/card.php @@ -1565,13 +1565,14 @@ else if ($objp->fk_product) print '<select id="fournprice" name="fournprice"></select>'; print '<input id="buying_price" type="text" size="5" name="buying_price" value="'.price($objp->pa_ht,0,'',0).'"></td>'; } - print '<td align="center" rowspan="2" valign="middle"><input type="submit" class="button" name="save" value="'.$langs->trans("Modify").'">'; + print '<td align="center">'; + print '<input type="submit" class="button" name="save" value="'.$langs->trans("Modify").'">'; print '<br><input type="submit" class="button" name="cancel" value="'.$langs->trans("Cancel").'">'; print '</td>'; - $colspan=5; + $colspan=6; if (! empty($conf->margin->enabled) && ! empty($conf->global->MARGIN_SHOW_ON_CONTRACT)) $colspan++; - if($conf->global->PRODUCT_USE_UNITS) $colspan++; + if($conf->global->PRODUCT_USE_UNITS) $colspan++; // Ligne dates prevues print "<tr ".$bc[$var].">"; @@ -1746,22 +1747,23 @@ else } } - print '<tr '.$bc[$var].'><td>'.$langs->trans("DateServiceActivate").'</td><td>'; + print '<tr '.$bc[$var].'>'; + print '<td class="nohover">'.$langs->trans("DateServiceActivate").'</td><td>'; print $form->select_date($dateactstart,'',$usehm,$usehm,'',"active",1,0,1); print '</td>'; - print '<td>'.$langs->trans("DateEndPlanned").'</td><td>'; + print '<td class="nohover">'.$langs->trans("DateEndPlanned").'</td><td>'; print $form->select_date($dateactend,"end",$usehm,$usehm,'',"active",1,0,1); print '</td>'; - print '<td align="center" rowspan="2" valign="middle">'; + print '<td align="center nohover" rowspan="2" valign="middle">'; print '<input type="submit" class="button" name="activate" value="'.$langs->trans("Activate").'"><br>'; print '<input type="submit" class="button" name="cancel" value="'.$langs->trans("Cancel").'">'; print '</td>'; print '</tr>'; - print '<tr '.$bc[$var].'><td>'.$langs->trans("Comment").'</td><td colspan="'.($conf->margin->enabled?4:3).'"><input size="80" type="text" name="comment" value="'.$_POST["comment"].'"></td></tr>'; + print '<tr '.$bc[$var].'><td class="nohover">'.$langs->trans("Comment").'</td><td class="nohover" colspan="'.($conf->margin->enabled?4:3).'"><input size="80" type="text" name="comment" value="'.$_POST["comment"].'"></td></tr>'; print '</table>'; @@ -1798,7 +1800,7 @@ else $now=dol_now(); if ($dateactend > $now) $dateactend=$now; - print '<tr '.$bc[$var].'><td colspan="2">'; + print '<tr '.$bc[$var].'><td colspan="2" class="nohover">'; if ($objp->statut >= 4) { if ($objp->statut == 4) @@ -1809,11 +1811,12 @@ else } print '</td>'; - print '<td align="right" rowspan="2"><input type="submit" class="button" name="close" value="'.$langs->trans("Close").'"><br>'; + print '<td align="right" rowspan="2" class="nohover">'; + print '<input type="submit" class="button" name="close" value="'.$langs->trans("Close").'"><br>'; print '<input type="submit" class="button" name="cancel" value="'.$langs->trans("Cancel").'">'; print '</td></tr>'; - print '<tr '.$bc[$var].'><td>'.$langs->trans("Comment").'</td><td><input size="70" type="text" class="flat" name="comment" value="'.GETPOST('comment').'"></td></tr>'; + print '<tr '.$bc[$var].'><td class="nohover">'.$langs->trans("Comment").'</td><td class="nohover"><input size="70" type="text" class="flat" name="comment" value="'.GETPOST('comment').'"></td></tr>'; print '</table>'; print '</form>'; diff --git a/htdocs/contrat/services.php b/htdocs/contrat/services.php index fdc130b010e..1ce7c91343e 100644 --- a/htdocs/contrat/services.php +++ b/htdocs/contrat/services.php @@ -1,6 +1,6 @@ <?php /* Copyright (C) 2001-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org> - * Copyright (C) 2004-2011 Laurent Destailleur <eldy@users.sourceforge.net> + * Copyright (C) 2004-2015 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr> * @@ -48,6 +48,7 @@ $filter=GETPOST("filter"); $search_name=GETPOST("search_name"); $search_contract=GETPOST("search_contract"); $search_service=GETPOST("search_service"); +$search_status=GETPOST("search_status","alpha"); $statut=GETPOST('statut')?GETPOST('statut'):1; $socid=GETPOST('socid','int'); @@ -65,6 +66,23 @@ $contratid = GETPOST('id','int'); if (! empty($user->societe_id)) $socid=$user->societe_id; $result = restrictedArea($user, 'contrat',$contratid); +if ($search_status != '') +{ + $tmp=explode('&', $search_status); + $mode=$tmp[0]; + if (empty($tmp[1])) $filter=''; + else + { + if ($tmp[1] == 'filter=notexpired') $filter='notexpired'; + if ($tmp[1] == 'filter=expired') $filter='expired'; + } +} +else +{ + $search_status = $mode; + if ($filter == 'expired') $search_status.='&filter=expired'; + if ($filter == 'notexpired') $search_status.='&filter=notexpired'; +} $staticcontrat=new Contrat($db); $staticcontratligne=new ContratLigne($db); @@ -75,6 +93,7 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both $search_name=""; $search_contract=""; $search_service=""; + $search_status=-1; $op1month=""; $op1day=""; $op1year=""; @@ -83,6 +102,8 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both $op2day=""; $op2year=""; $filter_op2=""; + $mode=''; + $filter=''; } /* @@ -117,6 +138,7 @@ if ($mode == "0") $sql.= " AND cd.statut = 0"; if ($mode == "4") $sql.= " AND cd.statut = 4"; if ($mode == "5") $sql.= " AND cd.statut = 5"; if ($filter == "expired") $sql.= " AND cd.date_fin_validite < '".$db->idate($now)."'"; +if ($filter == "notexpired") $sql.= " AND cd.date_fin_validite >= '".$db->idate($now)."'"; if ($search_name) $sql.= " AND s.nom LIKE '%".$db->escape($search_name)."%'"; if ($search_contract) $sql.= " AND c.rowid = '".$db->escape($search_contract)."'"; if ($search_service) $sql.= " AND (p.ref LIKE '%".$db->escape($search_service)."%' OR p.description LIKE '%".$db->escape($search_service)."%' OR cd.description LIKE '%".$db->escape($search_service)."%')"; @@ -169,6 +191,7 @@ if ($resql) if ($mode == "" || $mode < 5) print_liste_field_titre($langs->trans("DateEndPlannedShort"),$_SERVER["PHP_SELF"], "cd.date_fin_validite",$param,'',' align="center"',$sortfield,$sortorder); else print_liste_field_titre($langs->trans("DateEndRealShort"),$_SERVER["PHP_SELF"], "cd.date_cloture",$param,'',' align="center"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"], "cd.statut,c.statut",$param,"","align=\"right\"",$sortfield,$sortorder); + print_liste_field_titre('',$_SERVER["PHP_SELF"],"",'','','',$sortfield,$sortorder,'maxwidthsearch '); print "</tr>\n"; print '<tr class="liste_titre">'; @@ -179,11 +202,11 @@ if ($resql) print '</td>'; // Service label print '<td class="liste_titre">'; - print '<input type="text" class="flat" size="18" name="search_service" value="'.dol_escape_htmltag($search_service).'">'; + print '<input type="text" class="flat" size="12" name="search_service" value="'.dol_escape_htmltag($search_service).'">'; print '</td>'; // Third party print '<td class="liste_titre">'; - print '<input type="text" class="flat" size="24" name="search_name" value="'.dol_escape_htmltag($search_name).'">'; + print '<input type="text" class="flat" size="12" name="search_name" value="'.dol_escape_htmltag($search_name).'">'; print '</td>'; print '<td class="liste_titre" align="center">'; $arrayofoperators=array('<'=>'<','>'=>'>'); @@ -199,6 +222,16 @@ if ($resql) $filter_date2=dol_mktime(0,0,0,$op2month,$op2day,$op2year); print $form->select_date($filter_date2,'op2',0,0,1,'',1,0,1); print '</td>'; + print '<td align="right">'; + $arrayofstatus=array( + '0'=>$langs->trans("ServiceStatusInitial"), + '4'=>$langs->trans("ServiceStatusRunning"), + '4&filter=notexpired'=>$langs->trans("ServiceStatusNotLate"), + '4&filter=expired'=>$langs->trans("ServiceStatusLate"), + '5'=>$langs->trans("ServiceStatusClosed") + ); + print $form->selectarray('search_status',$arrayofstatus,(strstr($search_status, ',')?-1:$search_status),1); + print '</td>'; print '<td class="liste_titre" align="right"><input type="image" class="liste_titre" name="button_search" src="'.img_picto($langs->trans("Search"),'search.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("Search")).'" title="'.dol_escape_htmltag($langs->trans("Search")).'">'; print '<input type="image" class="liste_titre" name="button_removefilter" src="'.img_picto($langs->trans("Search"),'searchclear.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'" title="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'">'; print "</td></tr>\n"; @@ -272,6 +305,7 @@ if ($resql) print $staticcontratligne->LibStatut($obj->statut,5,($obj->date_fin_validite && $db->jdate($obj->date_fin_validite) < $now)?1:0); } print '</td>'; + print '<td></td>'; print "</tr>\n"; $i++; } @@ -286,6 +320,6 @@ else } -$db->close(); - llxFooter(); + +$db->close(); diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index 4a48898b74e..7cd22e29218 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -730,8 +730,8 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu if (! empty($conf->contrat->enabled)) { $langs->load("contracts"); - $newmenu->add("/contrat/index.php?leftmenu=contracts", $langs->trans("Contracts"), 0, $user->rights->contrat->lire, '', $mainmenu, 'contracts', 2000); - $newmenu->add("/contrat/card.php?action=create&leftmenu=contracts", $langs->trans("NewContract"), 1, $user->rights->contrat->creer); + $newmenu->add("/contrat/index.php?leftmenu=contracts", $langs->trans("ContractsSubscriptions"), 0, $user->rights->contrat->lire, '', $mainmenu, 'contracts', 2000); + $newmenu->add("/contrat/card.php?action=create&leftmenu=contracts", $langs->trans("NewContractSubscription"), 1, $user->rights->contrat->creer); $newmenu->add("/contrat/list.php?leftmenu=contracts", $langs->trans("List"), 1, $user->rights->contrat->lire); $newmenu->add("/contrat/services.php?leftmenu=contracts", $langs->trans("MenuServices"), 1, $user->rights->contrat->lire); if (empty($leftmenu) || $leftmenu=="contracts") $newmenu->add("/contrat/services.php?leftmenu=contracts&mode=0", $langs->trans("MenuInactiveServices"), 2, $user->rights->contrat->lire); diff --git a/htdocs/langs/en_US/contracts.lang b/htdocs/langs/en_US/contracts.lang index 23ce68fe65d..a78fc8d285d 100644 --- a/htdocs/langs/en_US/contracts.lang +++ b/htdocs/langs/en_US/contracts.lang @@ -19,6 +19,7 @@ ServiceStatusLateShort=Expired ServiceStatusClosed=Closed ServicesLegend=Services legend Contracts=Contracts +ContractsSubscriptions=Contracts/Subscriptions ContractsAndLine=Contracts and line of contracts Contract=Contract ContractLine=Contract line @@ -30,6 +31,7 @@ MenuRunningServices=Running services MenuExpiredServices=Expired services MenuClosedServices=Closed services NewContract=New contract +NewContractSubscription=New contract/subscription AddContract=Create contract SearchAContract=Search a contract DeleteAContract=Delete a contract -- GitLab From b0e938fab4f88ae1a1190db36947ac4ad7ef7a14 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sun, 29 Nov 2015 13:15:02 +0100 Subject: [PATCH 035/197] Fix missing td cell --- htdocs/fourn/facture/tpl/linkedobjectblock.tpl.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/fourn/facture/tpl/linkedobjectblock.tpl.php b/htdocs/fourn/facture/tpl/linkedobjectblock.tpl.php index 29357b49dc3..32f0e8b4f86 100644 --- a/htdocs/fourn/facture/tpl/linkedobjectblock.tpl.php +++ b/htdocs/fourn/facture/tpl/linkedobjectblock.tpl.php @@ -65,7 +65,7 @@ foreach($linkedObjectBlock as $key => $objectlink) } ?> <tr class="liste_total"> - <td align="left" colspan="2"><?php echo $langs->trans("TotalHT"); ?></td> + <td align="left" colspan="3"><?php echo $langs->trans("TotalHT"); ?></td> <td align="right"><?php if ($user->rights->fournisseur->facture->lire) { echo price($total); -- GitLab From bb627e32d35244c31a2feda09b00bbb3f6f76d48 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sun, 29 Nov 2015 14:09:22 +0100 Subject: [PATCH 036/197] Fix: Form should use POST. GET has too much bad side effects. --- htdocs/commande/list.php | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php index a257d808131..c895e58fa5c 100644 --- a/htdocs/commande/list.php +++ b/htdocs/commande/list.php @@ -251,7 +251,9 @@ if ($resql) if ($viewstatut == -3) $title.=' - '.$langs->trans('StatusOrderValidated').', '.(empty($conf->expedition->enabled)?'':$langs->trans("StatusOrderSent").', ').$langs->trans('StatusOrderToBill'); - $param='&socid='.$socid.'&viewstatut='.$viewstatut; + $param=''; + if ($socid > 0) $param.='&socid='.$socid; + if ($viewstatut != '') $param.='&viewstatut='.$viewstatut; if ($ordermonth) $param.='&ordermonth='.$ordermonth; if ($orderyear) $param.='&orderyear='.$orderyear; if ($deliverymonth) $param.='&deliverymonth='.$deliverymonth; @@ -262,14 +264,13 @@ if ($resql) if ($search_user > 0) $param.='&search_user='.$search_user; if ($search_sale > 0) $param.='&search_sale='.$search_sale; if ($search_total_ht != '') $param.='&search_total_ht='.$search_total_ht; - if ($optioncss != '') $param.='&optioncss='.$optioncss; + if ($optioncss != '') $param.='&optioncss='.$optioncss; $num = $db->num_rows($resql); print_barre_liste($title, $page,$_SERVER["PHP_SELF"],$param,$sortfield,$sortorder,'',$num,$nbtotalofrecords,'title_commercial.png'); - $i = 0; - + // Lignes des champs de filtre - print '<form method="GET" action="'.$_SERVER["PHP_SELF"].'">'; + print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">'; if ($optioncss != '') print '<input type="hidden" name="optioncss" value="'.$optioncss.'">'; print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; print '<input type="hidden" name="action" value="list">'; @@ -376,7 +377,8 @@ if ($resql) $total=0; $subtotal=0; $productstat_cache=array(); - + $i=0; + $generic_commande = new Commande($db); $generic_product = new Product($db); while ($i < min($num,$limit)) @@ -413,8 +415,8 @@ if ($resql) $text_info=''; $nbprod=0; - $num = count($generic_commande->lines); // Loop on each line of order - for ($lig=0; $lig < $num; $lig++) + $numlines = count($generic_commande->lines); // Loop on each line of order + for ($lig=0; $lig < $numlines; $lig++) { if ($generic_commande->lines[$lig]->product_type == 0 && $generic_commande->lines[$lig]->fk_product > 0) // If line is a product and not a service { @@ -497,6 +499,7 @@ if ($resql) $text_info = $langs->trans('NonShippable').'<br>'.$text_info; } } + print '<td>'; if ($nbprod) { -- GitLab From 4a0ea9777239108a32bf6aad2f4a1b513f3b612f Mon Sep 17 00:00:00 2001 From: fappels <francis.appels@yahoo.com> Date: Sun, 29 Nov 2015 15:34:43 +0100 Subject: [PATCH 037/197] FIX #3953 rounding of buying price fix javascript for rounding of buying price --- htdocs/core/tpl/objectline_create.tpl.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/tpl/objectline_create.tpl.php b/htdocs/core/tpl/objectline_create.tpl.php index 962ecd8acaa..fd5a81240ef 100644 --- a/htdocs/core/tpl/objectline_create.tpl.php +++ b/htdocs/core/tpl/objectline_create.tpl.php @@ -554,7 +554,7 @@ jQuery(document).ready(function() { /* Define default price at loading */ var defaultprice = $("#fournprice_predef").find('option:selected').attr("price"); - $("#buying_price").val(Math.round(defaultprice,<?php print ($conf->global->MAIN_MAX_DECIMALS_UNIT ? $conf->global->MAIN_MAX_DECIMALS_UNIT : 5); ?>)); + $("#buying_price").val(parseFloat(defaultprice).toFixed(<?php print ($conf->global->MAIN_MAX_DECIMALS_UNIT ? $conf->global->MAIN_MAX_DECIMALS_UNIT : 5); ?>)); $("#fournprice_predef").change(function() { console.log("change on fournprice_predef"); -- GitLab From c55d11869b12a544f164370ddd8ff8896ccb25cc Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sun, 29 Nov 2015 15:42:20 +0100 Subject: [PATCH 038/197] Billing of supplier or customer order is a process that can be done in parallel with shipment or reception, so we show the status on another field into lists. --- .../comm/propal/tpl/linkedobjectblock.tpl.php | 2 +- htdocs/commande/class/commande.class.php | 20 +++++++----- htdocs/commande/list.php | 17 ++++++++-- htdocs/commande/tpl/linkedobjectblock.tpl.php | 2 +- .../facture/tpl/linkedobjectblock.tpl.php | 2 +- htdocs/contrat/tpl/linkedobjectblock.tpl.php | 2 +- htdocs/core/class/html.form.class.php | 2 +- htdocs/core/class/html.formorder.class.php | 2 +- htdocs/core/menus/standard/eldy.lib.php | 6 ++-- .../expedition/tpl/linkedobjectblock.tpl.php | 2 +- .../fichinter/tpl/linkedobjectblock.tpl.php | 2 +- .../class/fournisseur.commande.class.php | 31 +++++++++++-------- htdocs/fourn/commande/card.php | 24 +++++++++++--- htdocs/fourn/commande/list.php | 26 +++++++++++----- .../commande/tpl/linkedobjectblock.tpl.php | 2 +- .../facture/tpl/linkedobjectblock.tpl.php | 2 +- .../install/mysql/migration/3.8.0-3.9.0.sql | 4 +++ htdocs/langs/en_US/deliveries.lang | 1 + htdocs/langs/en_US/orders.lang | 1 + .../tpl/linkedobjectblock.tpl.php | 2 +- 20 files changed, 105 insertions(+), 47 deletions(-) diff --git a/htdocs/comm/propal/tpl/linkedobjectblock.tpl.php b/htdocs/comm/propal/tpl/linkedobjectblock.tpl.php index 6f53fd37a95..d38c9918af8 100644 --- a/htdocs/comm/propal/tpl/linkedobjectblock.tpl.php +++ b/htdocs/comm/propal/tpl/linkedobjectblock.tpl.php @@ -34,7 +34,7 @@ $langs = $GLOBALS['langs']; $linkedObjectBlock = $GLOBALS['linkedObjectBlock']; echo '<br>'; -print load_fiche_titre($langs->trans('RelatedCommercialProposals')); +print load_fiche_titre($langs->trans('RelatedCommercialProposals'), '', ''); ?> <table class="noborder allwidth"> <tr class="liste_titre"> diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index d1351ba273a..1ee2cad12ec 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -1062,7 +1062,7 @@ class Commande extends CommonOrder $this->demand_reason_id = $object->demand_reason_id; $this->date_livraison = $object->date_livraison; $this->shipping_method_id = $object->shipping_method_id; - $this->warehouse_id = $object->warehouse_id; + $this->warehouse_id = $object->warehouse_id; $this->fk_delivery_address = $object->fk_delivery_address; $this->contact_id = $object->contactid; $this->ref_client = $object->ref_client; @@ -2887,7 +2887,8 @@ class Commande extends CommonOrder if ($statut==self::STATUS_VALIDATED) return $langs->trans('StatusOrderValidated'); if ($statut==self::STATUS_ACCEPTED) return $langs->trans('StatusOrderSentShort'); if ($statut==self::STATUS_CLOSED && (! $billed && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return $langs->trans('StatusOrderToBill'); - if ($statut==self::STATUS_CLOSED && ($billed || ! empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return $langs->trans('StatusOrderProcessed'); + if ($statut==self::STATUS_CLOSED && ($billed && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return $langs->trans('StatusOrderProcessed').' - '.$langs->trans("Billed"); + if ($statut==self::STATUS_CLOSED && (! empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return $langs->trans('StatusOrderProcessed'); } elseif ($mode == 1) { @@ -2896,7 +2897,8 @@ class Commande extends CommonOrder if ($statut==self::STATUS_VALIDATED) return $langs->trans('StatusOrderValidatedShort'); if ($statut==self::STATUS_ACCEPTED) return $langs->trans('StatusOrderSentShort'); if ($statut==self::STATUS_CLOSED && (! $billed && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return $langs->trans('StatusOrderToBillShort'); - if ($statut==self::STATUS_CLOSED && ($billed || ! empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return $langs->trans('StatusOrderProcessed'); + if ($statut==self::STATUS_CLOSED && ($billed && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return $langs->trans('StatusOrderProcessed').' - '.$langs->trans("Billed"); + if ($statut==self::STATUS_CLOSED && (! empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return $langs->trans('StatusOrderProcessed'); } elseif ($mode == 2) { @@ -2905,7 +2907,8 @@ class Commande extends CommonOrder if ($statut==self::STATUS_VALIDATED) return img_picto($langs->trans('StatusOrderValidated'),'statut1').' '.$langs->trans('StatusOrderValidatedShort'); if ($statut==self::STATUS_ACCEPTED) return img_picto($langs->trans('StatusOrderSent'),'statut3').' '.$langs->trans('StatusOrderSentShort'); if ($statut==self::STATUS_CLOSED && (! $billed && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return img_picto($langs->trans('StatusOrderToBill'),'statut7').' '.$langs->trans('StatusOrderToBillShort'); - if ($statut==self::STATUS_CLOSED && ($billed || ! empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return img_picto($langs->trans('StatusOrderProcessed'),'statut6').' '.$langs->trans('StatusOrderProcessedShort'); + if ($statut==self::STATUS_CLOSED && ($billed && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return img_picto($langs->trans('StatusOrderProcessed').' - '.$langs->trans("Billed"),'statut6').' '.$langs->trans('StatusOrderProcessed').' - '.$langs->trans("Billed"); + if ($statut==self::STATUS_CLOSED && (! empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return img_picto($langs->trans('StatusOrderProcessed'),'statut6').' '.$langs->trans('StatusOrderProcessedShort'); } elseif ($mode == 3) { @@ -2914,7 +2917,8 @@ class Commande extends CommonOrder if ($statut==self::STATUS_VALIDATED) return img_picto($langs->trans('StatusOrderValidated'),'statut1'); if ($statut==self::STATUS_ACCEPTED) return img_picto($langs->trans('StatusOrderSentShort'),'statut3'); if ($statut==self::STATUS_CLOSED && (! $billed && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return img_picto($langs->trans('StatusOrderToBill'),'statut7'); - if ($statut==self::STATUS_CLOSED && ($billed || ! empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return img_picto($langs->trans('StatusOrderProcessed'),'statut6'); + if ($statut==self::STATUS_CLOSED && ($billed && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return img_picto($langs->trans('StatusOrderProcessed').' - '.$langs->trans("Billed"),'statut6'); + if ($statut==self::STATUS_CLOSED && (! empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return img_picto($langs->trans('StatusOrderProcessed'),'statut6'); } elseif ($mode == 4) { @@ -2923,7 +2927,8 @@ class Commande extends CommonOrder if ($statut==self::STATUS_VALIDATED) return img_picto($langs->trans('StatusOrderValidated'),'statut1').' '.$langs->trans('StatusOrderValidated'); if ($statut==self::STATUS_ACCEPTED) return img_picto($langs->trans('StatusOrderSentShort'),'statut3').' '.$langs->trans('StatusOrderSent'); if ($statut==self::STATUS_CLOSED && (! $billed && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return img_picto($langs->trans('StatusOrderToBill'),'statut7').' '.$langs->trans('StatusOrderToBill'); - if ($statut==self::STATUS_CLOSED && ($billed || ! empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return img_picto($langs->trans('StatusOrderProcessed'),'statut6').' '.$langs->trans('StatusOrderProcessed'); + if ($statut==self::STATUS_CLOSED && ($billed && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return img_picto($langs->trans('StatusOrderToBill').' - '.$langs->trans("Billed"),'statut6').' '.$langs->trans('StatusOrderToBill').' - '.$langs->trans("Billed"); + if ($statut==self::STATUS_CLOSED && (! empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return img_picto($langs->trans('StatusOrderProcessed'),'statut6').' '.$langs->trans('StatusOrderProcessed'); } elseif ($mode == 5) { @@ -2932,7 +2937,8 @@ class Commande extends CommonOrder if ($statut==self::STATUS_VALIDATED) return '<span class="hideonsmartphone">'.$langs->trans('StatusOrderValidatedShort').' </span>'.img_picto($langs->trans('StatusOrderValidated'),'statut1'); if ($statut==self::STATUS_ACCEPTED) return '<span class="hideonsmartphone">'.$langs->trans('StatusOrderSentShort').' </span>'.img_picto($langs->trans('StatusOrderSent'),'statut3'); if ($statut==self::STATUS_CLOSED && (! $billed && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return '<span class="hideonsmartphone">'.$langs->trans('StatusOrderToBillShort').' </span>'.img_picto($langs->trans('StatusOrderToBill'),'statut7'); - if ($statut==self::STATUS_CLOSED && ($billed || ! empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return '<span class="hideonsmartphone">'.$langs->trans('StatusOrderProcessedShort').' </span>'.img_picto($langs->trans('StatusOrderProcessed'),'statut6'); + if ($statut==self::STATUS_CLOSED && ($billed && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return '<span class="hideonsmartphone">'.$langs->trans('StatusOrderToBillShort').' - '.$langs->trans("Billed").' </span>'.img_picto($langs->trans('StatusOrderToBill').' - '.$langs->trans("Billed"),'statut6'); + if ($statut==self::STATUS_CLOSED && (! empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return '<span class="hideonsmartphone">'.$langs->trans('StatusOrderProcessedShort').' </span>'.img_picto($langs->trans('StatusOrderProcessed'),'statut6'); } } diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php index c895e58fa5c..44c5a870ec4 100644 --- a/htdocs/commande/list.php +++ b/htdocs/commande/list.php @@ -41,6 +41,7 @@ require_once DOL_DOCUMENT_ROOT .'/product/class/product.class.php'; $langs->load('orders'); $langs->load('deliveries'); $langs->load('companies'); +$langs->load('compta'); $orderyear=GETPOST("orderyear","int"); $ordermonth=GETPOST("ordermonth","int"); @@ -56,6 +57,7 @@ $search_user=GETPOST('search_user','int'); $search_sale=GETPOST('search_sale','int'); $search_total_ht=GETPOST('search_total_ht','alpha'); $optioncss = GETPOST('optioncss','alpha'); +$billed = GETPOST('billed','int'); // Security check $id = (GETPOST('orderid')?GETPOST('orderid'):GETPOST('id','int')); @@ -90,6 +92,8 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter.x") || GETP $ordermonth=''; $deliverymonth=''; $deliveryyear=''; + $viewstatut=''; + $billed=''; } // Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array @@ -151,6 +155,7 @@ if ($socid > 0) $sql.= ' AND s.rowid = '.$socid; if (!$user->rights->societe->client->voir && !$socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; if ($search_ref) $sql .= natural_search('c.ref', $search_ref); if ($sall) $sql .= natural_search(array_keys($fieldstosearchall), $sall); +if ($billed != '' && $billed >= 0) $sql.=' AND c.facture = '.$billed; if ($viewstatut <> '') { if ($viewstatut < 4 && $viewstatut > -3) @@ -336,7 +341,8 @@ if ($resql) $reshook=$hookmanager->executeHooks('printFieldListTitle',$parameters); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; print_liste_field_titre($langs->trans('Status'),$_SERVER["PHP_SELF"],'c.fk_statut','',$param,'align="right"',$sortfield,$sortorder); - print_liste_field_titre('',$_SERVER["PHP_SELF"],"",'','','',$sortfield,$sortorder,'maxwidthsearch '); + print_liste_field_titre($langs->trans('Billed'),$_SERVER["PHP_SELF"],'c.facture','',$param,'align="center"',$sortfield,$sortorder,''); + print_liste_field_titre('',$_SERVER["PHP_SELF"],"",'',$param,'',$sortfield,$sortorder,'maxwidthsearch '); print '</tr>'; print '<tr class="liste_titre">'; @@ -366,9 +372,12 @@ if ($resql) print '<input class="flat" type="text" size="6" name="search_total_ht" value="'.$search_total_ht.'">'; print '</td>'; print '<td align="right">'; - $liststatus=array('0'=>$langs->trans("StatusOrderDraftShort"), '1'=>$langs->trans("StatusOrderValidated"), '2'=>$langs->trans("StatusOrderSentShort"), '3'=>$langs->trans("StatusOrderToBill"), '4'=>$langs->trans("StatusOrderProcessed"), '-1'=>$langs->trans("StatusOrderCanceledShort")); + $liststatus=array('0'=>$langs->trans("StatusOrderDraftShort"), '1'=>$langs->trans("StatusOrderValidated"), '2'=>$langs->trans("StatusOrderSentShort"), '3'=>$langs->trans("StatusOrderDelivered"), '-1'=>$langs->trans("StatusOrderCanceledShort")); print $form->selectarray('viewstatut', $liststatus, $viewstatut, -4); print '</td>'; + print '<td align="center">'; + print $form->selectyesno('billed', $billed, 1, 0, 1); + print '</td>'; print '<td class="liste_titre" align="right"><input type="image" class="liste_titre" name="button_search" src="'.img_picto($langs->trans("Search"),'search.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("Search")).'" title="'.dol_escape_htmltag($langs->trans("Search")).'">'; print '<input type="image" class="liste_titre" name="button_removefilter" src="'.img_picto($langs->trans("Search"),'searchclear.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'" title="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'">'; print "</td></tr>\n"; @@ -575,6 +584,9 @@ if ($resql) // Statut print '<td align="right" class="nowrap">'.$generic_commande->LibStatut($objp->fk_statut,$objp->facturee,5).'</td>'; + // Billed + print '<td align="center">'.yn($objp->facturee).'</td>'; + print '<td></td>'; print '</tr>'; @@ -593,6 +605,7 @@ if ($resql) print '<td align="right" class="nowrap">'.price($total).'</td>'; print '<td></td>'; print '<td></td>'; + print '<td></td>'; print '</tr>'; } diff --git a/htdocs/commande/tpl/linkedobjectblock.tpl.php b/htdocs/commande/tpl/linkedobjectblock.tpl.php index bf399c250d9..231f6034b00 100644 --- a/htdocs/commande/tpl/linkedobjectblock.tpl.php +++ b/htdocs/commande/tpl/linkedobjectblock.tpl.php @@ -30,7 +30,7 @@ $linkedObjectBlock = $GLOBALS['linkedObjectBlock']; $langs->load("orders"); echo '<br>'; -print load_fiche_titre($langs->trans('RelatedCustomerOrders')); +print load_fiche_titre($langs->trans('RelatedCustomerOrders'), '', ''); ?> <table class="noborder allwidth"> diff --git a/htdocs/compta/facture/tpl/linkedobjectblock.tpl.php b/htdocs/compta/facture/tpl/linkedobjectblock.tpl.php index b0c28efe4c0..d89dbceb689 100644 --- a/htdocs/compta/facture/tpl/linkedobjectblock.tpl.php +++ b/htdocs/compta/facture/tpl/linkedobjectblock.tpl.php @@ -30,7 +30,7 @@ $linkedObjectBlock = $GLOBALS['linkedObjectBlock']; $langs->load("bills"); echo '<br>'; -print load_fiche_titre($langs->trans("RelatedCustomerInvoices")); +print load_fiche_titre($langs->trans("RelatedCustomerInvoices"), '', ''); ?> <table class="noborder allwidth"> <tr class="liste_titre"> diff --git a/htdocs/contrat/tpl/linkedobjectblock.tpl.php b/htdocs/contrat/tpl/linkedobjectblock.tpl.php index 412d07cb726..c5e4dd92a05 100644 --- a/htdocs/contrat/tpl/linkedobjectblock.tpl.php +++ b/htdocs/contrat/tpl/linkedobjectblock.tpl.php @@ -26,7 +26,7 @@ $linkedObjectBlock = $GLOBALS['linkedObjectBlock']; $langs->load("contracts"); echo '<br>'; -print load_fiche_titre($langs->trans('RelatedContracts')); +print load_fiche_titre($langs->trans('RelatedContracts'), '', ''); ?> <table class="noborder allwidth"> <tr class="liste_titre"> diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index bada8627ee0..0ee1495c85f 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -5094,7 +5094,7 @@ class Form * @param string $value Pre-selected value * @param int $option 0 return yes/no, 1 return 1/0 * @param bool $disabled true or false - * @param useempty $useempty 1=Add empty line + * @param int $useempty 1=Add empty line * @return mixed See option */ function selectyesno($htmlname,$value='',$option=0,$disabled=false,$useempty='') diff --git a/htdocs/core/class/html.formorder.class.php b/htdocs/core/class/html.formorder.class.php index c08568ad8b6..0bb318df8da 100644 --- a/htdocs/core/class/html.formorder.class.php +++ b/htdocs/core/class/html.formorder.class.php @@ -57,7 +57,7 @@ class FormOrder { print '<select class="flat" name="'.$hmlname.'">'; print '<option value="-1"> </option>'; - $statustohow=array('0'=>'0','1'=>'1','2'=>'2','3'=>'3','4'=>'4','5'=>'5','6'=>'6,7','9'=>'9'); // 7 is same label than 6. 8 does not exist. + $statustohow=array('0'=>'0','1'=>'1','2'=>'2','3'=>'3','4'=>'4','5'=>'5','6'=>'6,7','9'=>'9'); // 7 is same label than 6. 8 does not exists (billed is another field) foreach($statustohow as $key => $value) { diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index 7cd22e29218..03b3dc785bb 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -698,8 +698,8 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu if (empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/list.php?leftmenu=orders&viewstatut=0", $langs->trans("StatusOrderDraftShort"), 2, $user->rights->commande->lire); if (empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/list.php?leftmenu=orders&viewstatut=1", $langs->trans("StatusOrderValidated"), 2, $user->rights->commande->lire); if (empty($leftmenu) || $leftmenu=="orders" && ! empty($conf->expedition->enabled)) $newmenu->add("/commande/list.php?leftmenu=orders&viewstatut=2", $langs->trans("StatusOrderSentShort"), 2, $user->rights->commande->lire); - if (empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/list.php?leftmenu=orders&viewstatut=3", $langs->trans("StatusOrderToBill"), 2, $user->rights->commande->lire); // The translation key is StatusOrderToBill but it means StatusDelivered. TODO We should renamed this later - if (empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/list.php?leftmenu=orders&viewstatut=4", $langs->trans("StatusOrderProcessed"), 2, $user->rights->commande->lire); + if (empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/list.php?leftmenu=orders&viewstatut=3", $langs->trans("StatusOrderDelivered"), 2, $user->rights->commande->lire); + //if (empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/list.php?leftmenu=orders&viewstatut=4", $langs->trans("StatusOrderProcessed"), 2, $user->rights->commande->lire); if (empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/list.php?leftmenu=orders&viewstatut=-1", $langs->trans("StatusOrderCanceledShort"), 2, $user->rights->commande->lire); $newmenu->add("/commande/stats/index.php?leftmenu=orders", $langs->trans("Statistics"), 1, $user->rights->commande->lire); } @@ -720,7 +720,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu if (empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=5", $langs->trans("StatusOrderReceivedAll"), 2, $user->rights->fournisseur->commande->lire); if (empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=6,7", $langs->trans("StatusOrderCanceled"), 2, $user->rights->fournisseur->commande->lire); if (empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=9", $langs->trans("StatusOrderRefused"), 2, $user->rights->fournisseur->commande->lire); - if (empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&billed=1", $langs->trans("StatusOrderBilled"), 2, $user->rights->fournisseur->commande->lire); + // Billed is another field. We should add instead a dedicated filter on list. if (empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&billed=1", $langs->trans("StatusOrderBilled"), 2, $user->rights->fournisseur->commande->lire); $newmenu->add("/commande/stats/index.php?leftmenu=orders_suppliers&mode=supplier", $langs->trans("Statistics"), 1, $user->rights->fournisseur->commande->lire); diff --git a/htdocs/expedition/tpl/linkedobjectblock.tpl.php b/htdocs/expedition/tpl/linkedobjectblock.tpl.php index 4f420957660..8b7066adc09 100644 --- a/htdocs/expedition/tpl/linkedobjectblock.tpl.php +++ b/htdocs/expedition/tpl/linkedobjectblock.tpl.php @@ -29,7 +29,7 @@ $linkedObjectBlock = $GLOBALS['linkedObjectBlock']; $langs->load("sendings"); echo '<br>'; -print load_fiche_titre($langs->trans('RelatedShippings')); +print load_fiche_titre($langs->trans('RelatedShippings'), '', ''); ?> <table class="noborder allwidth"> diff --git a/htdocs/fichinter/tpl/linkedobjectblock.tpl.php b/htdocs/fichinter/tpl/linkedobjectblock.tpl.php index 0dc4a66c083..0518d40cd91 100644 --- a/htdocs/fichinter/tpl/linkedobjectblock.tpl.php +++ b/htdocs/fichinter/tpl/linkedobjectblock.tpl.php @@ -26,7 +26,7 @@ $linkedObjectBlock = $GLOBALS['linkedObjectBlock']; $langs->load("interventions"); echo '<br>'; -print load_fiche_titre($langs->trans('RelatedInterventions')); +print load_fiche_titre($langs->trans('RelatedInterventions'), '', ''); ?> <table class="noborder allwidth"> diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index eb9e15b2313..1888cdc8adc 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -63,6 +63,9 @@ class CommandeFournisseur extends CommonOrder // -> 7=Canceled/Never received -> (reopen) 3=Process runing // -> 6=Canceled -> (reopen) 2=Approved // -> 9=Refused -> (reopen) 1=Validated + // Note: billed or not is on another field "billed" + var $statuts; // List of status + var $socid; var $fourn_id; var $date; @@ -138,7 +141,7 @@ class CommandeFournisseur extends CommonOrder $this->statuts[5] = 'StatusOrderReceivedAll'; $this->statuts[6] = 'StatusOrderCanceled'; // Approved->Canceled $this->statuts[7] = 'StatusOrderCanceled'; // Process running->canceled - $this->statuts[8] = 'StatusOrderBilled'; // Everything is finish, order received totally and bill received + //$this->statuts[8] = 'StatusOrderBilled'; // Everything is finish, order received totally and bill received $this->statuts[9] = 'StatusOrderRefused'; } @@ -510,8 +513,10 @@ class CommandeFournisseur extends CommonOrder global $langs; $langs->load('orders'); - if($statut==5 && $this->billed == 1) $statut = 8; - + $billedtext=''; + //if ($statut==5 && $this->billed == 1) $statut = 8; + if ($this->billed == 1) $billedtext=$langs->trans("Billed"); + // List of language codes for status $statutshort[0] = 'StatusOrderDraftShort'; $statutshort[1] = 'StatusOrderValidatedShort'; @@ -521,7 +526,7 @@ class CommandeFournisseur extends CommonOrder $statutshort[5] = 'StatusOrderReceivedAllShort'; $statutshort[6] = 'StatusOrderCanceledShort'; $statutshort[7] = 'StatusOrderCanceledShort'; - $statutshort[8] = 'StatusOrderBilledShort'; + //$statutshort[8] = 'StatusOrderBilledShort'; $statutshort[9] = 'StatusOrderRefusedShort'; if ($mode == 0) @@ -550,15 +555,15 @@ class CommandeFournisseur extends CommonOrder } if ($mode == 4) { - if ($statut==0) return img_picto($langs->trans($this->statuts[$statut]),'statut0').' '.$langs->trans($this->statuts[$statut]); - if ($statut==1) return img_picto($langs->trans($this->statuts[$statut]),'statut1').' '.$langs->trans($this->statuts[$statut]); - if ($statut==2) return img_picto($langs->trans($this->statuts[$statut]),'statut3').' '.$langs->trans($this->statuts[$statut]); - if ($statut==3) return img_picto($langs->trans($this->statuts[$statut]),'statut3').' '.$langs->trans($this->statuts[$statut]); - if ($statut==4) return img_picto($langs->trans($this->statuts[$statut]),'statut3').' '.$langs->trans($this->statuts[$statut]); - if ($statut==5) return img_picto($langs->trans($this->statuts[$statut]),'statut6').' '.$langs->trans($this->statuts[$statut]); - if ($statut==6 || $statut==7) return img_picto($langs->trans($this->statuts[$statut]),'statut5').' '.$langs->trans($this->statuts[$statut]); - if ($statut==8) return img_picto($langs->trans($this->statuts[$statut]),'statut6').' '.$langs->trans($this->statuts[$statut]); - if ($statut==9) return img_picto($langs->trans($this->statuts[$statut]),'statut5').' '.$langs->trans($this->statuts[$statut]); + if ($statut==0) return img_picto($langs->trans($this->statuts[$statut]),'statut0').' '.$langs->trans($this->statuts[$statut]).($billedtext?' - '.$billedtext:''); + if ($statut==1) return img_picto($langs->trans($this->statuts[$statut]),'statut1').' '.$langs->trans($this->statuts[$statut]).($billedtext?' - '.$billedtext:''); + if ($statut==2) return img_picto($langs->trans($this->statuts[$statut]),'statut3').' '.$langs->trans($this->statuts[$statut]).($billedtext?' - '.$billedtext:''); + if ($statut==3) return img_picto($langs->trans($this->statuts[$statut]),'statut3').' '.$langs->trans($this->statuts[$statut]).($billedtext?' - '.$billedtext:''); + if ($statut==4) return img_picto($langs->trans($this->statuts[$statut]),'statut3').' '.$langs->trans($this->statuts[$statut]).($billedtext?' - '.$billedtext:''); + if ($statut==5) return img_picto($langs->trans($this->statuts[$statut]),'statut6').' '.$langs->trans($this->statuts[$statut]).($billedtext?' - '.$billedtext:''); + if ($statut==6 || $statut==7) return img_picto($langs->trans($this->statuts[$statut]),'statut5').' '.$langs->trans($this->statuts[$statut]).($billedtext?' - '.$billedtext:''); + if ($statut==8) return img_picto($langs->trans($this->statuts[$statut]),'statut6').' '.$langs->trans($this->statuts[$statut]).($billedtext?' - '.$billedtext:''); + if ($statut==9) return img_picto($langs->trans($this->statuts[$statut]),'statut5').' '.$langs->trans($this->statuts[$statut]).($billedtext?' - '.$billedtext:''); } if ($mode == 5) { diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php index 9a1a6ec67d4..baa11ed9c07 100644 --- a/htdocs/fourn/commande/card.php +++ b/htdocs/fourn/commande/card.php @@ -196,7 +196,7 @@ if (empty($reshook)) if ($action == 'reopen') // no test on permission here, permission to use will depends on status { - if (in_array($object->statut, array(1, 2, 3, 5, 6, 7, 9))) + if (in_array($object->statut, array(1, 2, 3, 5, 6, 7, 9)) || ($object->statut == 4 && $object->billed)) { if ($object->statut == 1) $newstatus=0; // Validated->Draft else if ($object->statut == 2) $newstatus=0; // Approved->Draft @@ -205,13 +205,20 @@ if (empty($reshook)) else if ($object->statut == 6) $newstatus=2; // Canceled->Approved else if ($object->statut == 7) $newstatus=3; // Canceled->Process running else if ($object->statut == 9) $newstatus=1; // Refused->Validated - + else $newstatus = 2; + $db->begin(); $result = $object->setStatus($user, $newstatus); if ($result > 0) { - if ($newstatus == 0) + $sql = 'UPDATE '.MAIN_DB_PREFIX.'commande_fournisseur'; + $sql.= ' SET billed = 0'; + $sql.= ' WHERE rowid = '.$object->id; + + $resql=$db->query($sql); + + if ($newstatus == 0) { $sql = 'UPDATE '.MAIN_DB_PREFIX.'commande_fournisseur'; $sql.= ' SET fk_user_approve = null, fk_user_approve2 = null, date_approve = null, date_approve2 = null'; @@ -719,6 +726,14 @@ if (empty($reshook)) if ($result > 0) { if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { + $outputlangs = $langs; + $newlang = ''; + if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id')) $newlang = GETPOST('lang_id','alpha'); + if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang = $object->thirdparty->default_lang; + if (! empty($newlang)) { + $outputlangs = new Translate("", $conf); + $outputlangs->setDefaultLang($newlang); + } $object->generateDocument($object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref); } $action = ''; @@ -780,6 +795,7 @@ if (empty($reshook)) $result = $object->Livraison($user, $date_liv, GETPOST("type"), GETPOST("comment")); if ($result > 0) { + $langs->load("deliveries"); setEventMessages($langs->trans("DeliveryStateSaved"), null); $action = ''; } @@ -2725,7 +2741,7 @@ elseif (! empty($object->id)) print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=reopen">'.$langs->trans("Disapprove").'</a>'; } } - if (in_array($object->statut, array(3, 5, 6, 7, 9))) + if (in_array($object->statut, array(3, 5, 6, 7, 9)) || ($object->statut == 4 && $object->billed)) { if ($user->rights->fournisseur->commande->commander) { diff --git a/htdocs/fourn/commande/list.php b/htdocs/fourn/commande/list.php index e7e83242ec7..a3e0d8c9c33 100644 --- a/htdocs/fourn/commande/list.php +++ b/htdocs/fourn/commande/list.php @@ -53,6 +53,8 @@ $socid = GETPOST('socid','int'); $sortorder = GETPOST('sortorder','alpha'); $sortfield = GETPOST('sortfield','alpha'); +$status=GETPOST('statut','alpha'); +$billed=GETPOST('billed','int'); $viewstatut=GETPOST('viewstatut'); // Security check @@ -70,6 +72,7 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both $search_ht=''; $search_ttc=''; $search_status=''; + $billed=''; } if ($search_status == '') $search_status=-1; @@ -102,11 +105,13 @@ if ($socid > 0) $fourn->fetch($socid); $title .= ' - '.$fourn->name; } -if (GETPOST('statut','alpha')) +if ($status) { - if (GETPOST('statut','alpha') == '1,2,3') $title.=' - '.$langs->trans("StatusOrderToProcessShort"); - else $title.=' - '.$langs->trans($commandestatic->statuts[GETPOST('statut','alpha')]); + if ($status == '1,2,3') $title.=' - '.$langs->trans("StatusOrderToProcessShort"); + if ($status == '6,7') $title.=' - '.$langs->trans("StatusOrderCanceled"); + else $title.=' - '.$langs->trans($commandestatic->statuts[$status]); } +if ($billed) $title.=' - '.$langs->trans("Billed"); llxHeader('',$title); @@ -122,7 +127,7 @@ $offset = $conf->liste_limit * $page ; */ $sql = "SELECT s.rowid as socid, s.nom as name, cf.date_commande as dc,"; -$sql.= " cf.rowid,cf.ref, cf.ref_supplier, cf.fk_statut, cf.total_ht, cf.tva as total_tva, cf.total_ttc, cf.fk_user_author,cf.date_livraison,"; +$sql.= " cf.rowid, cf.ref, cf.ref_supplier, cf.fk_statut, cf.billed, cf.total_ht, cf.tva as total_tva, cf.total_ttc, cf.fk_user_author, cf.date_livraison,"; $sql.= " p.rowid as project_id, p.ref as project_ref,"; $sql.= " u.firstname,"; $sql.= " u.lastname,"; @@ -168,9 +173,9 @@ if (GETPOST('statut', 'alpha') !== '') $sql .= " AND cf.fk_statut IN (".GETPOST('statut', 'alpha').")"; } -if (GETPOST('billed', 'int') !== '') +if ($billed !== '') { - $sql .= " AND cf.billed IN (".GETPOST('billed', 'int').")"; + $sql .= " AND cf.billed = ".$billed; } if ($search_refsupp) @@ -209,6 +214,7 @@ if ($resql) if ($search_refsupp) $param.="&search_refsupp=".$search_refsupp; if ($socid) $param.="&socid=".$socid; if ($search_status >= 0) $param.="&search_status=".$search_status; + if ($billed != '') $param.="billed=".$billed; if ($optioncss != '') $param.='&optioncss='.$optioncss; print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords); @@ -238,6 +244,7 @@ if ($resql) print_liste_field_titre($langs->trans("OrderDate"),$_SERVER["PHP_SELF"],"dc","",$param,'align="center"',$sortfield,$sortorder); print_liste_field_titre($langs->trans('DateDeliveryPlanned'),$_SERVER["PHP_SELF"],'cf.date_livraison','',$param, 'align="right"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],"cf.fk_statut","",$param,'align="right"',$sortfield,$sortorder); + print_liste_field_titre($langs->trans('Billed'),$_SERVER["PHP_SELF"],'cf.billed','',$param,'align="center"',$sortfield,$sortorder,''); print_liste_field_titre('',$_SERVER["PHP_SELF"],"",'','','',$sortfield,$sortorder,'maxwidthsearch '); print "</tr>\n"; @@ -259,6 +266,9 @@ if ($resql) print '<td class="liste_titre" align="right">'; $formorder->selectSupplierOrderStatus((strstr($search_status, ',')?-1:$search_status),1,'search_status'); print '</td>'; + print '<td align="center">'; + print $form->selectyesno('billed', $billed, 1, 0, 1); + print '</td>'; print '<td class="liste_titre" align="right"><input type="image" class="liste_titre" name="button_search" src="'.img_picto($langs->trans("Search"),'search.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("Search")).'" title="'.dol_escape_htmltag($langs->trans("Search")).'">'; print '<input type="image" class="liste_titre" name="button_removefilter" src="'.img_picto($langs->trans("Search"),'searchclear.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'" title="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'">'; print "</td></tr>\n"; @@ -344,10 +354,12 @@ if ($resql) print dol_print_date($db->jdate($obj->date_livraison), 'day'); print '</td>'; - // Statut print '<td align="right">'.$commandestatic->LibStatut($obj->fk_statut, 5).'</td>'; + // Billed + print '<td align="center">'.yn($obj->billed).'</td>'; + print '<td></td>'; print "</tr>\n"; diff --git a/htdocs/fourn/commande/tpl/linkedobjectblock.tpl.php b/htdocs/fourn/commande/tpl/linkedobjectblock.tpl.php index c72386e3728..96b014e2cab 100644 --- a/htdocs/fourn/commande/tpl/linkedobjectblock.tpl.php +++ b/htdocs/fourn/commande/tpl/linkedobjectblock.tpl.php @@ -29,7 +29,7 @@ $linkedObjectBlock = $GLOBALS['linkedObjectBlock']; $langs->load("orders"); echo '<br>'; -print load_fiche_titre($langs->trans('RelatedSupplierOrders')); +print load_fiche_titre($langs->trans('RelatedSupplierOrders'), '', ''); ?> <table class="noborder allwidth"> <tr class="liste_titre"> diff --git a/htdocs/fourn/facture/tpl/linkedobjectblock.tpl.php b/htdocs/fourn/facture/tpl/linkedobjectblock.tpl.php index 32f0e8b4f86..10a83ade2f9 100644 --- a/htdocs/fourn/facture/tpl/linkedobjectblock.tpl.php +++ b/htdocs/fourn/facture/tpl/linkedobjectblock.tpl.php @@ -30,7 +30,7 @@ $linkedObjectBlock = $GLOBALS['linkedObjectBlock']; $langs->load("bills"); echo '<br>'; -print load_fiche_titre($langs->trans("RelatedSupplierInvoices")); +print load_fiche_titre($langs->trans("RelatedSupplierInvoices"), '', ''); ?> <table class="noborder allwidth"> diff --git a/htdocs/install/mysql/migration/3.8.0-3.9.0.sql b/htdocs/install/mysql/migration/3.8.0-3.9.0.sql index 99a042c8c31..c15288d834b 100755 --- a/htdocs/install/mysql/migration/3.8.0-3.9.0.sql +++ b/htdocs/install/mysql/migration/3.8.0-3.9.0.sql @@ -26,6 +26,10 @@ ALTER TABLE llx_don ADD COLUMN fk_country integer NOT NULL DEFAULT 0 after country; +UPDATE llx_commande_fourn set billed=1 where statut = 8; +UPDATE llx_commande_fourn set statut=5 where statut = 8 and billed=1; + + ALTER TABLE llx_askpricesupplier RENAME TO llx_supplier_proposal; ALTER TABLE llx_askpricesupplierdet RENAME TO llx_supplier_proposaldet; ALTER TABLE llx_askpricesupplier_extrafields RENAME TO llx_supplier_proposal_extrafields; diff --git a/htdocs/langs/en_US/deliveries.lang b/htdocs/langs/en_US/deliveries.lang index c96a506281d..4eb1c792b65 100644 --- a/htdocs/langs/en_US/deliveries.lang +++ b/htdocs/langs/en_US/deliveries.lang @@ -7,6 +7,7 @@ DeliveryOrders=Delivery orders DeliveryDate=Delivery date DeliveryDateShort=Deliv. date CreateDeliveryOrder=Generate delivery order +DeliveryStateSaved=Delivery state saved QtyDelivered=Qty delivered SetDeliveryDate=Set shipping date ValidateDeliveryReceipt=Validate delivery receipt diff --git a/htdocs/langs/en_US/orders.lang b/htdocs/langs/en_US/orders.lang index 72985a9c0db..513fb091918 100644 --- a/htdocs/langs/en_US/orders.lang +++ b/htdocs/langs/en_US/orders.lang @@ -31,6 +31,7 @@ StatusOrderSentShort=In process StatusOrderSent=Shipment in process StatusOrderOnProcessShort=Ordered StatusOrderProcessedShort=Processed +StatusOrderDelivered=Delivered StatusOrderToBillShort=Delivered StatusOrderToBill2Short=To bill StatusOrderApprovedShort=Approved diff --git a/htdocs/supplier_proposal/tpl/linkedobjectblock.tpl.php b/htdocs/supplier_proposal/tpl/linkedobjectblock.tpl.php index 76cf756128a..f0fa870d3de 100644 --- a/htdocs/supplier_proposal/tpl/linkedobjectblock.tpl.php +++ b/htdocs/supplier_proposal/tpl/linkedobjectblock.tpl.php @@ -29,7 +29,7 @@ $langs = $GLOBALS['langs']; $linkedObjectBlock = $GLOBALS['linkedObjectBlock']; echo '<br>'; -print load_fiche_titre($langs->trans('RelatedSupplierProposal')); +print load_fiche_titre($langs->trans('RelatedSupplierProposal'), '', ''); ?> <table class="noborder allwidth"> <tr class="liste_titre"> -- GitLab From 1b62cd4481fb01f8dde6890f4259f482f9127e59 Mon Sep 17 00:00:00 2001 From: Sof <virtualsof@yahoo.fr> Date: Sun, 29 Nov 2015 16:05:14 +0100 Subject: [PATCH 039/197] FIX: Multiple syntax errors --- htdocs/theme/eldy/style.css.php | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index c7795841429..88d2ae2d5a9 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -323,7 +323,7 @@ legend { margin-bottom: 8px; } fieldset { border: 1px solid #AAAAAA !important; box-shadow: 2px 2px 3px #DDD; } -.button, sbmtConnexion { +.button, input[name="sbmtConnexion"] { font-family: <?php print $fontlist ?>; border-color: #c5c5c5; border-color: rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.25); @@ -847,7 +847,7 @@ div.mainmenu { div.mainmenu.home{ background-image: url(<?php echo dol_buildpath($path.'/theme/'.$theme.'/img/menus/home.png',1) ?>); - background-position-x: middle; + background-position-x: center; } div.mainmenu.accountancy { @@ -1017,7 +1017,7 @@ form#login { border-radius: 5px; border:solid 1px rgba(80,80,80,.4); - border-top:solid 1px f8f8f8; + border-top:solid 1px #f8f8f8; } .login_main_message { text-align: center; @@ -1472,7 +1472,7 @@ img.toolbarbutton { } /* hide the toggler-button when the pane is 'slid open' */ -.ui-layout-resizer-sliding ui-layout-toggler { +.ui-layout-resizer-sliding .ui-layout-toggler { display: none; } @@ -1645,7 +1645,7 @@ a.tab:link, a.tab:visited, a.tab:hover, a.tab#active { -moz-box-shadow: 0 -1px 4px rgba(0,0,0,.1); -webkit-box-shadow: 0 -1px 4px rgba(0,0,0,.1); box-shadow: 0 -1px 4px rgba(0,0,0,.1); - margin-bottom: 0 0.2em 0 0.2em !important; + margin: 0 0.2em 0 0.2em !important; border-right: 1px solid #AAA !important; border-left: 1px solid #AAA !important; @@ -1976,7 +1976,7 @@ tr.nocellnopadd td.nobordernopadding, tr.nocellnopadd td.nocellnopadd padding-<?php print $left; ?>: 0px; padding-<?php print $right; ?>: 16px; padding-bottom: 4px; - margin-right: 0px 0px; + margin-right: 0px; } .notopnoleftnoright { border-collapse: collapse; @@ -3333,7 +3333,7 @@ ul.filedirelem li { border: solid 1px #DDDDDD; } -ui-layout-north { +.ui-layout-north { } @@ -3430,7 +3430,7 @@ div.dolEventError h1, div.dolEventError h2 { /* Maps */ /* ============================================================================== */ -.divmap, #google-visualization-geomap-embed-0, #google-visualization-geomap-embed-1, google-visualization-geomap-embed-2 { +.divmap, #google-visualization-geomap-embed-0, #google-visualization-geomap-embed-1, #google-visualization-geomap-embed-2 { -moz-box-shadow: 0px 0px 10px #AAA; -webkit-box-shadow: 0px 0px 10px #AAA; box-shadow: 0px 0px 10px #AAA; @@ -3755,7 +3755,7 @@ a.ui-link { { white-space: normal; overflow: hidden; - text-overflow: hidden; + text-overflow: clip; /* "hidden" : do not exists as a text-overflow value (https://developer.mozilla.org/fr/docs/Web/CSS/text-overflow) */ } /* Warning: setting this may make screen not beeing refreshed after a combo selection */ -- GitLab From d518b24d554e2ed4dae4f6e5804d2a150d1bf3c4 Mon Sep 17 00:00:00 2001 From: Ion Agorria <ion@agorria.com> Date: Sun, 29 Nov 2015 16:19:30 +0100 Subject: [PATCH 040/197] Only print : when both $h and $m are set --- htdocs/core/class/html.form.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 0ee1495c85f..6b1eaa69aa3 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -4231,7 +4231,7 @@ class Form $retstring.='<option value="'.$hour.'"'.(($hour == $shour)?' selected':'').'>'.$hour.(empty($conf->dol_optimize_smallscreen)?'':'H').'</option>'; } $retstring.='</select>'; - if (empty($conf->dol_optimize_smallscreen)) $retstring.=":"; + if ($m && empty($conf->dol_optimize_smallscreen)) $retstring.=":"; } if ($m) -- GitLab From a12e959833445dab03d3b027506a5b1870245e1f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sun, 29 Nov 2015 16:33:50 +0100 Subject: [PATCH 041/197] Do not show billed status after order status --- htdocs/commande/card.php | 67 ++++++++++++------------ htdocs/commande/class/commande.class.php | 54 ++++++++++--------- htdocs/commande/list.php | 8 +-- 3 files changed, 68 insertions(+), 61 deletions(-) diff --git a/htdocs/commande/card.php b/htdocs/commande/card.php index fbaba482c50..7da702dea23 100644 --- a/htdocs/commande/card.php +++ b/htdocs/commande/card.php @@ -2281,7 +2281,15 @@ if ($action == 'create' && $user->rights->commande->creer) $reshook = $hookmanager->executeHooks('addMoreActionsButtons', $parameters, $object, $action); // Note that $action and $object may have been // modified by hook if (empty($reshook)) { - // Valid + // Send + if ($object->statut > Commande::STATUS_DRAFT) { + if ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) || $user->rights->commande->order_advance->send)) { + print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '&action=presend&mode=init">' . $langs->trans('SendByMail') . '</a></div>'; + } else + print '<div class="inline-block divButAction"><a class="butActionRefused" href="#">' . $langs->trans('SendByMail') . '</a></div>'; + } + + // Valid if ($object->statut == Commande::STATUS_DRAFT && $object->total_ttc >= 0 && $numlines > 0 && ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->commande->creer)) || (! empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->commande->order_advance->validate))) @@ -2300,14 +2308,29 @@ if ($action == 'create' && $user->rights->commande->creer) { print '<a class="butAction" href="' . DOL_URL_ROOT . '/comm/action/card.php?action=create&origin=' . $object->element . '&originid=' . $object->id . '&socid=' . $object->socid . '">' . $langs->trans("AddAction") . '</a>'; } - // Send - if ($object->statut > Commande::STATUS_DRAFT) { - if ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) || $user->rights->commande->order_advance->send)) { - print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '&action=presend&mode=init">' . $langs->trans('SendByMail') . '</a></div>'; - } else - print '<div class="inline-block divButAction"><a class="butActionRefused" href="#">' . $langs->trans('SendByMail') . '</a></div>'; + + // Create intervention + if ($conf->ficheinter->enabled) { + $langs->load("interventions"); + + if ($object->statut > Commande::STATUS_DRAFT && $object->statut < Commande::STATUS_CLOSED && $object->getNbOfServicesLines() > 0) { + if ($user->rights->ficheinter->creer) { + print '<div class="inline-block divButAction"><a class="butAction" href="' . DOL_URL_ROOT . '/fichinter/card.php?action=create&origin=' . $object->element . '&originid=' . $object->id . '&socid=' . $object->socid . '">' . $langs->trans('AddIntervention') . '</a></div>'; + } else { + print '<div class="inline-block divButAction"><a class="butActionRefused" href="#" title="' . dol_escape_htmltag($langs->trans("NotAllowed")) . '">' . $langs->trans('AddIntervention') . '</a></div>'; + } + } } + // Create contract + if ($conf->contrat->enabled && ($object->statut == Commande::STATUS_VALIDATED || $object->statut == Commande::STATUS_ACCEPTED)) { + $langs->load("contracts"); + + if ($user->rights->contrat->creer) { + print '<div class="inline-block divButAction"><a class="butAction" href="' . DOL_URL_ROOT . '/contrat/card.php?action=create&origin=' . $object->element . '&originid=' . $object->id . '&socid=' . $object->socid . '">' . $langs->trans('AddContract') . '</a></div>'; + } + } + // Ship $numshipping = 0; if (! empty($conf->expedition->enabled)) { @@ -2327,31 +2350,14 @@ if ($action == 'create' && $user->rights->commande->creer) } } - // Create intervention - if ($conf->ficheinter->enabled) { - $langs->load("interventions"); - - if ($object->statut > Commande::STATUS_DRAFT && $object->statut < Commande::STATUS_CLOSED && $object->getNbOfServicesLines() > 0) { - if ($user->rights->ficheinter->creer) { - print '<div class="inline-block divButAction"><a class="butAction" href="' . DOL_URL_ROOT . '/fichinter/card.php?action=create&origin=' . $object->element . '&originid=' . $object->id . '&socid=' . $object->socid . '">' . $langs->trans('AddIntervention') . '</a></div>'; - } else { - print '<div class="inline-block divButAction"><a class="butActionRefused" href="#" title="' . dol_escape_htmltag($langs->trans("NotAllowed")) . '">' . $langs->trans('AddIntervention') . '</a></div>'; - } - } - } - // Reopen a closed order if (($object->statut == Commande::STATUS_CLOSED || $object->statut == Commande::STATUS_CANCELED) && $user->rights->commande->creer) { print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER['PHP_SELF'] . '?id=' . $object->id . '&action=reopen">' . $langs->trans('ReOpen') . '</a></div>'; } - // Create contract - if ($conf->contrat->enabled && ($object->statut == Commande::STATUS_VALIDATED || $object->statut == Commande::STATUS_ACCEPTED)) { - $langs->load("contracts"); - - if ($user->rights->contrat->creer) { - print '<div class="inline-block divButAction"><a class="butAction" href="' . DOL_URL_ROOT . '/contrat/card.php?action=create&origin=' . $object->element . '&originid=' . $object->id . '&socid=' . $object->socid . '">' . $langs->trans('AddContract') . '</a></div>'; - } + // Set to shipped + if (($object->statut == Commande::STATUS_VALIDATED || $object->statut == Commande::STATUS_ACCEPTED) && $user->rights->commande->cloturer) { + print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '&action=shipped">' . $langs->trans('ClassifyShipped') . '</a></div>'; } // Create bill and Classify billed @@ -2360,16 +2366,11 @@ if ($action == 'create' && $user->rights->commande->creer) if (! empty($conf->facture->enabled) && $user->rights->facture->creer && empty($conf->global->WORKFLOW_DISABLE_CREATE_INVOICE_FROM_ORDER)) { print '<div class="inline-block divButAction"><a class="butAction" href="' . DOL_URL_ROOT . '/compta/facture.php?action=create&origin=' . $object->element . '&originid=' . $object->id . '&socid=' . $object->socid . '">' . $langs->trans("CreateBill") . '</a></div>'; } - if ($user->rights->commande->creer && $object->statut > Commande::STATUS_ACCEPTED && empty($conf->global->WORKFLOW_DISABLE_CLASSIFY_BILLED_FROM_ORDER) && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT)) { + if ($user->rights->commande->creer && $object->statut >= Commande::STATUS_VALIDATED && empty($conf->global->WORKFLOW_DISABLE_CLASSIFY_BILLED_FROM_ORDER) && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT)) { print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '&action=classifybilled">' . $langs->trans("ClassifyBilled") . '</a></div>'; } } - // Set to shipped - if (($object->statut == Commande::STATUS_VALIDATED || $object->statut == Commande::STATUS_ACCEPTED) && $user->rights->commande->cloturer) { - print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '&action=shipped">' . $langs->trans('ClassifyShipped') . '</a></div>'; - } - // Clone if ($user->rights->commande->creer) { print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER['PHP_SELF'] . '?id=' . $object->id . '&socid=' . $object->socid . '&action=clone&object=order">' . $langs->trans("ToClone") . '</a></div>'; diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index 1ee2cad12ec..8176d1f3c63 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -2865,79 +2865,85 @@ class Commande extends CommonOrder */ function getLibStatut($mode) { - return $this->LibStatut($this->statut,$this->facturee,$mode); + if ($this->facturee && empty($this->billed)) $this->billed=$this->facturee; // For backward compatibility + return $this->LibStatut($this->statut,$this->billed,$mode); } /** * Return label of status * - * @param int $statut Id statut - * @param int $billed If invoiced - * @param int $mode 0=libelle long, 1=libelle court, 2=Picto + Libelle court, 3=Picto, 4=Picto + Libelle long, 5=Libelle court + Picto - * @return string Label of status + * @param int $statut Id statut + * @param int $billed If invoiced + * @param int $mode 0=libelle long, 1=libelle court, 2=Picto + Libelle court, 3=Picto, 4=Picto + Libelle long, 5=Libelle court + Picto + * @param int $donotshowbilled Do not show billed status after order status + * @return string Label of status */ - function LibStatut($statut,$billed,$mode) + function LibStatut($statut,$billed,$mode,$donotshowbilled=0) { global $langs, $conf; + + $billedtext = ''; + if (empty($donotshowbilled)) $billedtext .= ($billed?' - '.$langs->trans("Billed"):''); + //print 'x'.$statut.'-'.$billed; if ($mode == 0) { if ($statut==self::STATUS_CANCELED) return $langs->trans('StatusOrderCanceled'); if ($statut==self::STATUS_DRAFT) return $langs->trans('StatusOrderDraft'); - if ($statut==self::STATUS_VALIDATED) return $langs->trans('StatusOrderValidated'); - if ($statut==self::STATUS_ACCEPTED) return $langs->trans('StatusOrderSentShort'); + if ($statut==self::STATUS_VALIDATED) return $langs->trans('StatusOrderValidated').$billedtext; + if ($statut==self::STATUS_ACCEPTED) return $langs->trans('StatusOrderSentShort').$billedtext; if ($statut==self::STATUS_CLOSED && (! $billed && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return $langs->trans('StatusOrderToBill'); - if ($statut==self::STATUS_CLOSED && ($billed && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return $langs->trans('StatusOrderProcessed').' - '.$langs->trans("Billed"); + if ($statut==self::STATUS_CLOSED && ($billed && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return $langs->trans('StatusOrderProcessed').$billedtext; if ($statut==self::STATUS_CLOSED && (! empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return $langs->trans('StatusOrderProcessed'); } elseif ($mode == 1) { if ($statut==self::STATUS_CANCELED) return $langs->trans('StatusOrderCanceledShort'); if ($statut==self::STATUS_DRAFT) return $langs->trans('StatusOrderDraftShort'); - if ($statut==self::STATUS_VALIDATED) return $langs->trans('StatusOrderValidatedShort'); - if ($statut==self::STATUS_ACCEPTED) return $langs->trans('StatusOrderSentShort'); + if ($statut==self::STATUS_VALIDATED) return $langs->trans('StatusOrderValidatedShort').$billedtext; + if ($statut==self::STATUS_ACCEPTED) return $langs->trans('StatusOrderSentShort').$billedtext; if ($statut==self::STATUS_CLOSED && (! $billed && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return $langs->trans('StatusOrderToBillShort'); - if ($statut==self::STATUS_CLOSED && ($billed && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return $langs->trans('StatusOrderProcessed').' - '.$langs->trans("Billed"); + if ($statut==self::STATUS_CLOSED && ($billed && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return $langs->trans('StatusOrderProcessed').$billedtext; if ($statut==self::STATUS_CLOSED && (! empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return $langs->trans('StatusOrderProcessed'); } elseif ($mode == 2) { if ($statut==self::STATUS_CANCELED) return img_picto($langs->trans('StatusOrderCanceled'),'statut5').' '.$langs->trans('StatusOrderCanceledShort'); if ($statut==self::STATUS_DRAFT) return img_picto($langs->trans('StatusOrderDraft'),'statut0').' '.$langs->trans('StatusOrderDraftShort'); - if ($statut==self::STATUS_VALIDATED) return img_picto($langs->trans('StatusOrderValidated'),'statut1').' '.$langs->trans('StatusOrderValidatedShort'); - if ($statut==self::STATUS_ACCEPTED) return img_picto($langs->trans('StatusOrderSent'),'statut3').' '.$langs->trans('StatusOrderSentShort'); + if ($statut==self::STATUS_VALIDATED) return img_picto($langs->trans('StatusOrderValidated'),'statut1').' '.$langs->trans('StatusOrderValidatedShort').$billedtext; + if ($statut==self::STATUS_ACCEPTED) return img_picto($langs->trans('StatusOrderSent'),'statut3').' '.$langs->trans('StatusOrderSentShort').$billedtext; if ($statut==self::STATUS_CLOSED && (! $billed && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return img_picto($langs->trans('StatusOrderToBill'),'statut7').' '.$langs->trans('StatusOrderToBillShort'); - if ($statut==self::STATUS_CLOSED && ($billed && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return img_picto($langs->trans('StatusOrderProcessed').' - '.$langs->trans("Billed"),'statut6').' '.$langs->trans('StatusOrderProcessed').' - '.$langs->trans("Billed"); + if ($statut==self::STATUS_CLOSED && ($billed && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return img_picto($langs->trans('StatusOrderProcessed').$billedtext,'statut6').' '.$langs->trans('StatusOrderProcessed').$billedtext; if ($statut==self::STATUS_CLOSED && (! empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return img_picto($langs->trans('StatusOrderProcessed'),'statut6').' '.$langs->trans('StatusOrderProcessedShort'); } elseif ($mode == 3) { if ($statut==self::STATUS_CANCELED) return img_picto($langs->trans('StatusOrderCanceled'),'statut5'); if ($statut==self::STATUS_DRAFT) return img_picto($langs->trans('StatusOrderDraft'),'statut0'); - if ($statut==self::STATUS_VALIDATED) return img_picto($langs->trans('StatusOrderValidated'),'statut1'); - if ($statut==self::STATUS_ACCEPTED) return img_picto($langs->trans('StatusOrderSentShort'),'statut3'); + if ($statut==self::STATUS_VALIDATED) return img_picto($langs->trans('StatusOrderValidated').$billedtext,'statut1'); + if ($statut==self::STATUS_ACCEPTED) return img_picto($langs->trans('StatusOrderSentShort').$billedtext,'statut3'); if ($statut==self::STATUS_CLOSED && (! $billed && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return img_picto($langs->trans('StatusOrderToBill'),'statut7'); - if ($statut==self::STATUS_CLOSED && ($billed && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return img_picto($langs->trans('StatusOrderProcessed').' - '.$langs->trans("Billed"),'statut6'); + if ($statut==self::STATUS_CLOSED && ($billed && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return img_picto($langs->trans('StatusOrderProcessed').$billedtext,'statut6'); if ($statut==self::STATUS_CLOSED && (! empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return img_picto($langs->trans('StatusOrderProcessed'),'statut6'); } elseif ($mode == 4) { if ($statut==self::STATUS_CANCELED) return img_picto($langs->trans('StatusOrderCanceled'),'statut5').' '.$langs->trans('StatusOrderCanceled'); if ($statut==self::STATUS_DRAFT) return img_picto($langs->trans('StatusOrderDraft'),'statut0').' '.$langs->trans('StatusOrderDraft'); - if ($statut==self::STATUS_VALIDATED) return img_picto($langs->trans('StatusOrderValidated'),'statut1').' '.$langs->trans('StatusOrderValidated'); - if ($statut==self::STATUS_ACCEPTED) return img_picto($langs->trans('StatusOrderSentShort'),'statut3').' '.$langs->trans('StatusOrderSent'); + if ($statut==self::STATUS_VALIDATED) return img_picto($langs->trans('StatusOrderValidated').$billedtext,'statut1').' '.$langs->trans('StatusOrderValidated').$billedtext; + if ($statut==self::STATUS_ACCEPTED) return img_picto($langs->trans('StatusOrderSentShort').$billedtext,'statut3').' '.$langs->trans('StatusOrderSent').$billedtext; if ($statut==self::STATUS_CLOSED && (! $billed && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return img_picto($langs->trans('StatusOrderToBill'),'statut7').' '.$langs->trans('StatusOrderToBill'); - if ($statut==self::STATUS_CLOSED && ($billed && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return img_picto($langs->trans('StatusOrderToBill').' - '.$langs->trans("Billed"),'statut6').' '.$langs->trans('StatusOrderToBill').' - '.$langs->trans("Billed"); + if ($statut==self::STATUS_CLOSED && ($billed && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return img_picto($langs->trans('StatusOrderToBill').$billedtext,'statut6').' '.$langs->trans('StatusOrderToBill').$billedtext; if ($statut==self::STATUS_CLOSED && (! empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return img_picto($langs->trans('StatusOrderProcessed'),'statut6').' '.$langs->trans('StatusOrderProcessed'); } elseif ($mode == 5) { if ($statut==self::STATUS_CANCELED) return '<span class="hideonsmartphone">'.$langs->trans('StatusOrderCanceledShort').' </span>'.img_picto($langs->trans('StatusOrderCanceled'),'statut5'); if ($statut==self::STATUS_DRAFT) return '<span class="hideonsmartphone">'.$langs->trans('StatusOrderDraftShort').' </span>'.img_picto($langs->trans('StatusOrderDraft'),'statut0'); - if ($statut==self::STATUS_VALIDATED) return '<span class="hideonsmartphone">'.$langs->trans('StatusOrderValidatedShort').' </span>'.img_picto($langs->trans('StatusOrderValidated'),'statut1'); - if ($statut==self::STATUS_ACCEPTED) return '<span class="hideonsmartphone">'.$langs->trans('StatusOrderSentShort').' </span>'.img_picto($langs->trans('StatusOrderSent'),'statut3'); + if ($statut==self::STATUS_VALIDATED) return '<span class="hideonsmartphone">'.$langs->trans('StatusOrderValidatedShort').$billedtext.' </span>'.img_picto($langs->trans('StatusOrderValidated').$billedtext,'statut1'); + if ($statut==self::STATUS_ACCEPTED) return '<span class="hideonsmartphone">'.$langs->trans('StatusOrderSentShort').$billedtext.' </span>'.img_picto($langs->trans('StatusOrderSent').$billedtext,'statut3'); if ($statut==self::STATUS_CLOSED && (! $billed && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return '<span class="hideonsmartphone">'.$langs->trans('StatusOrderToBillShort').' </span>'.img_picto($langs->trans('StatusOrderToBill'),'statut7'); - if ($statut==self::STATUS_CLOSED && ($billed && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return '<span class="hideonsmartphone">'.$langs->trans('StatusOrderToBillShort').' - '.$langs->trans("Billed").' </span>'.img_picto($langs->trans('StatusOrderToBill').' - '.$langs->trans("Billed"),'statut6'); + if ($statut==self::STATUS_CLOSED && ($billed && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return '<span class="hideonsmartphone">'.$langs->trans('StatusOrderToBillShort').$billedtext.' </span>'.img_picto($langs->trans('StatusOrderToBill').$billedtext,'statut6'); if ($statut==self::STATUS_CLOSED && (! empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) return '<span class="hideonsmartphone">'.$langs->trans('StatusOrderProcessedShort').' </span>'.img_picto($langs->trans('StatusOrderProcessed'),'statut6'); } } diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php index 44c5a870ec4..b35aa1628f3 100644 --- a/htdocs/commande/list.php +++ b/htdocs/commande/list.php @@ -136,7 +136,7 @@ llxHeader('',$langs->trans("Orders"),$help_url); $sql = 'SELECT'; if ($sall || $search_product_category > 0) $sql = 'SELECT DISTINCT'; $sql.= ' s.nom as name, s.rowid as socid, s.client, s.code_client, c.rowid, c.ref, c.total_ht, c.tva as total_tva, c.total_ttc, c.ref_client,'; -$sql.= ' c.date_valid, c.date_commande, c.note_private, c.date_livraison as date_delivery, c.fk_statut, c.facture as facturee'; +$sql.= ' c.date_valid, c.date_commande, c.note_private, c.date_livraison as date_delivery, c.fk_statut, c.facture as billed'; $sql.= ' FROM '.MAIN_DB_PREFIX.'societe as s'; $sql.= ', '.MAIN_DB_PREFIX.'commande as c'; if ($sall || $search_product_category > 0) $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'commandedet as pd ON c.rowid=pd.fk_commande'; @@ -559,7 +559,7 @@ if ($resql) { if ($user->rights->facture->creer) { - if (($objp->fk_statut > 0 && $objp->fk_statut < 3) || ($objp->fk_statut == 3 && $objp->facturee == 0)) + if (($objp->fk_statut > 0 && $objp->fk_statut < 3) || ($objp->fk_statut == 3 && $objp->billed == 0)) { print ' <a href="'.DOL_URL_ROOT.'/commande/orderstoinvoice.php?socid='.$companystatic->id.'">'; print img_picto($langs->trans("CreateInvoiceForThisCustomer").' : '.$companystatic->name, 'object_bill', 'hideonsmartphone').'</a>'; @@ -582,10 +582,10 @@ if ($resql) print '<td align="right" class="nowrap">'.price($objp->total_ht).'</td>'; // Statut - print '<td align="right" class="nowrap">'.$generic_commande->LibStatut($objp->fk_statut,$objp->facturee,5).'</td>'; + print '<td align="right" class="nowrap">'.$generic_commande->LibStatut($objp->fk_statut, $objp->billed, 5, 1).'</td>'; // Billed - print '<td align="center">'.yn($objp->facturee).'</td>'; + print '<td align="center">'.yn($objp->billed).'</td>'; print '<td></td>'; -- GitLab From 136724c083520350d4da95295d93487b85c6c34f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= <frederic.france@free.fr> Date: Mon, 30 Nov 2015 12:07:33 +0100 Subject: [PATCH 042/197] cleaning tarvis.yml --- .travis.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index a31aff2eda7..a865cf2b4de 100644 --- a/.travis.yml +++ b/.travis.yml @@ -29,8 +29,7 @@ matrix: - php: 7.0 env: -# - DB=mysql PHPCS_VERSION=">=1.5.1,<2.0" - - DB=mysql PHPCS_VERSION=">=2.0" + - DB=mysql # - DB=postgres before_script: @@ -48,10 +47,9 @@ before_script: - cp composer.json composer.json.old - cp composer.json.phpcs composer.json - composer self-update - - composer require squizlabs/php_codesniffer:${PHPCS_VERSION} + - composer require squizlabs/php_codesniffer:">=2.0" - composer install - phpenv rehash - - ln -s `pwd` htdocs/includes/squizlabs/php_codesniffer/CodeSniffer/Standards/PHPCompatibility - htdocs/includes/squizlabs/php_codesniffer/scripts/phpcs --version # - which phpcs # - phpcs --version -- GitLab From 94101412e98eba899b5562028bfd109673b536b1 Mon Sep 17 00:00:00 2001 From: Romain DESCHAMPS <r.deschamps@patas-monkey.com> Date: Mon, 30 Nov 2015 12:20:14 +0100 Subject: [PATCH 043/197] Progress column not wide enough for 100% Progress column not wide enough for 100% --- htdocs/core/modules/project/doc/pdf_baleine.modules.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/modules/project/doc/pdf_baleine.modules.php b/htdocs/core/modules/project/doc/pdf_baleine.modules.php index f684f0f786d..4b49397716f 100644 --- a/htdocs/core/modules/project/doc/pdf_baleine.modules.php +++ b/htdocs/core/modules/project/doc/pdf_baleine.modules.php @@ -79,7 +79,7 @@ class pdf_baleine extends ModelePDFProjects $this->posxref=$this->marge_gauche+1; $this->posxlabel=$this->marge_gauche+25; $this->posxworkload=$this->marge_gauche+100; - $this->posxprogress=$this->marge_gauche+140; + $this->posxprogress=$this->marge_gauche+130; $this->posxdatestart=$this->marge_gauche+150; $this->posxdateend=$this->marge_gauche+170; } -- GitLab From 5dab92836b53cc11fee3eb9c1eb2e9f876b7c496 Mon Sep 17 00:00:00 2001 From: Sof <virtualsof@yahoo.fr> Date: Mon, 30 Nov 2015 12:27:58 +0100 Subject: [PATCH 044/197] FIX: Warning: implode(): Invalid arguments passed Declare array type before implode to avoid warning --- htdocs/core/class/extrafields.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index 5cdc9f39a14..aed58a6556d 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -1551,7 +1551,7 @@ class ExtraFields else if (in_array($key_type,array('checkbox'))) { $value_arr=GETPOST($keysuffix."options_".$key.$keyprefix); - $value_key=implode(',', $value_arr); + $value_key=implode(',', (array)$value_arr); } else if (in_array($key_type,array('price','double'))) { -- GitLab From 9e988ee03eeb535087c2dbd6b77ded80664ebb13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= <frederic.france@free.fr> Date: Mon, 30 Nov 2015 12:35:19 +0100 Subject: [PATCH 045/197] Update .travis.yml --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index a865cf2b4de..1769f2f0504 100644 --- a/.travis.yml +++ b/.travis.yml @@ -47,7 +47,7 @@ before_script: - cp composer.json composer.json.old - cp composer.json.phpcs composer.json - composer self-update - - composer require squizlabs/php_codesniffer:">=2.0" + - composer require squizlabs/php_codesniffer:"^2.0.0" - composer install - phpenv rehash - htdocs/includes/squizlabs/php_codesniffer/scripts/phpcs --version -- GitLab From 09b61fd185d656ea2e82f461ffdddd76daefe54f Mon Sep 17 00:00:00 2001 From: Sof <virtualsof@yahoo.fr> Date: Mon, 30 Nov 2015 18:06:15 +0100 Subject: [PATCH 046/197] Update extrafields.class.php --- htdocs/core/class/extrafields.class.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index aed58a6556d..6a397c1245f 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -1551,7 +1551,9 @@ class ExtraFields else if (in_array($key_type,array('checkbox'))) { $value_arr=GETPOST($keysuffix."options_".$key.$keyprefix); - $value_key=implode(',', (array)$value_arr); + // Make sure we get an array even if there's only one checkbox + $value_arr=(array)$value_arr + $value_key=implode(',', $value_arr); } else if (in_array($key_type,array('price','double'))) { -- GitLab From 292d3ba9591f7f7b0f4b8d0f2cd6739a5254ae66 Mon Sep 17 00:00:00 2001 From: Sof <virtualsof@yahoo.fr> Date: Mon, 30 Nov 2015 20:28:36 +0100 Subject: [PATCH 047/197] FIX: Cannot set property '_renderItem of undefined http://stackoverflow.com/questions/9513251/cannot-set-property-renderitem-of-undefined-jquery-ui-autocomplete-with-html --- htdocs/core/lib/ajax.lib.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/lib/ajax.lib.php b/htdocs/core/lib/ajax.lib.php index 44de58ed4a8..fa150e6fbb7 100644 --- a/htdocs/core/lib/ajax.lib.php +++ b/htdocs/core/lib/ajax.lib.php @@ -170,8 +170,8 @@ function ajax_autocompleter($selected, $htmlname, $url, $urloption='', $minLengt } ,delay: 500 }).data("ui-autocomplete")._renderItem = function( ul, item ) { - return $("<li></li>") - .data( "item.autocomplete", item ) + return $("<li>") + .data( "ui-autocomplete-item", item ) // jQuery UI > 1.10.0 .append( \'<a><span class="tag">\' + item.label + "</span></a>" ) .appendTo(ul); }; -- GitLab From daa83997640f5df599d4ba7a52283bddc3752857 Mon Sep 17 00:00:00 2001 From: Sof <virtualsof@yahoo.fr> Date: Mon, 30 Nov 2015 20:31:42 +0100 Subject: [PATCH 048/197] FIX: Cannot set property '_renderItem of undefined http://stackoverflow.com/questions/9513251/cannot-set-property-renderitem-of-undefined-jquery-ui-autocomplete-with-html --- htdocs/core/js/lib_head.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/js/lib_head.js b/htdocs/core/js/lib_head.js index eab995d062b..ad799e72bd0 100644 --- a/htdocs/core/js/lib_head.js +++ b/htdocs/core/js/lib_head.js @@ -864,8 +864,8 @@ function confirmConstantAction(action, url, code, input, box, entity, yesButton, .addClass( "ui-widget ui-widget-content ui-corner-left dolibarrcombobox" ); input.data("ui-autocomplete")._renderItem = function( ul, item ) { - return $("<li></li>") - .data( "item.autocomplete", item ) + return $("<li>") + .data( "ui-autocomplete-item", item ) // jQuery UI > 1.10.0 .append( "<a>" + item.label + "</a>" ) .appendTo( ul ); }; -- GitLab From b1122b55d464a170c0c846c20b91d1ad67e93be6 Mon Sep 17 00:00:00 2001 From: aspangaro <alexandre.spangaro@gmail.com> Date: Mon, 30 Nov 2015 21:07:27 +0100 Subject: [PATCH 049/197] Fix : accountancy code on finance journal is not a constant --- htdocs/accountancy/journal/bankjournal.php | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/htdocs/accountancy/journal/bankjournal.php b/htdocs/accountancy/journal/bankjournal.php index 4653127a993..d3ce707ac4c 100644 --- a/htdocs/accountancy/journal/bankjournal.php +++ b/htdocs/accountancy/journal/bankjournal.php @@ -114,6 +114,11 @@ $chargestatic = new ChargeSociales($db); $paymentvatstatic = new TVA($db); $paymentsalstatic = new PaymentSalary($db); +// Get code of finance journal +$bank_code_journal = new Account($db); +$result=$bank_code_journal->fetch($id_bank_account); +$journal=$bank_code_journal->accountancy_journal; + dol_syslog("accountancy/journal/bankjournal.php:: sql=" . $sql, LOG_DEBUG); $result = $db->query($sql); if ($result) { @@ -280,7 +285,7 @@ if ($action == 'writebookkeeping') $bookkeeping->sens = ($mt >= 0) ? 'D' : 'C'; $bookkeeping->debit = ($mt >= 0 ? $mt : 0); $bookkeeping->credit = ($mt < 0 ? - $mt : 0); - $bookkeeping->code_journal = $conf->global->ACCOUNTING_BANK_JOURNAL; + $bookkeeping->code_journal = $journal; $bookkeeping->fk_user_author = $user->id; if ($tabtype[$key] == 'payment') { @@ -331,7 +336,7 @@ if ($action == 'writebookkeeping') $bookkeeping->sens = ($mt < 0) ? 'D' : 'C'; $bookkeeping->debit = ($mt < 0 ? - $mt : 0); $bookkeeping->credit = ($mt >= 0) ? $mt : 0; - $bookkeeping->code_journal = $conf->global->ACCOUNTING_BANK_JOURNAL; + $bookkeeping->code_journal = $journal; $bookkeeping->fk_user_author = $user->id; if ($tabtype[$key] == 'sc') { @@ -403,7 +408,6 @@ if ($action == 'writebookkeeping') // Export if ($action == 'export_csv') { $sep = $conf->global->ACCOUNTING_EXPORT_SEPARATORCSV; - $journal = $conf->global->ACCOUNTING_BANK_JOURNAL; header('Content-Type: text/csv'); header('Content-Disposition: attachment;filename=journal_banque.csv'); @@ -533,7 +537,7 @@ if ($action == 'export_csv') { llxHeader('', $langs->trans("FinanceJournal")); - $nom = $langs->trans("FinanceJournal"); + $nom = $langs->trans("FinanceJournal" . ' - ' . $journal); $builddate = time(); $description = $langs->trans("DescFinanceJournal") . '<br>'; $period = $form->select_date($date_start, 'date_start', 0, 0, 0, '', 1, 0, 1) . ' - ' . $form->select_date($date_end, 'date_end', 0, 0, 0, '', 1, 0, 1); -- GitLab From de730c976259c3cedf2cc684e1e520b93dc44ed2 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Mon, 30 Nov 2015 21:20:45 +0100 Subject: [PATCH 050/197] NEW Introduce cost price on product. --- htdocs/core/class/html.form.class.php | 15 ++++--- htdocs/core/lib/product.lib.php | 10 +++-- .../fourn/class/fournisseur.product.class.php | 16 ++++---- .../install/mysql/migration/3.8.0-3.9.0.sql | 2 + htdocs/install/mysql/tables/llx_product.sql | 5 ++- .../tables/llx_product_fournisseur_price.sql | 8 ++-- htdocs/langs/en_US/products.lang | 4 ++ htdocs/product/class/product.class.php | 3 +- htdocs/product/fournisseurs.php | 40 +++++++++++++++++-- htdocs/user/card.php | 10 ++++- 10 files changed, 83 insertions(+), 30 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index bada8627ee0..593d4100c22 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -77,7 +77,7 @@ class Form * @param string $preselected Name of Value to show/edit (not used in this function) * @param object $object Object * @param boolean $perm Permission to allow button to edit parameter. Set it to 0 to have a not edited field. - * @param string $typeofdata Type of data ('string' by default, 'email', 'numeric:99', 'text' or 'textarea:rows:cols', 'day' or 'datepicker', 'ckeditor:dolibarr_zzz:width:height:savemethod:1:rows:cols', 'select;xxx[:class]'...) + * @param string $typeofdata Type of data ('string' by default, 'email', 'amount:99', 'numeric:99', 'text' or 'textarea:rows:cols', 'day' or 'datepicker', 'ckeditor:dolibarr_zzz:width:height:savemethod:1:rows:cols', 'select;xxx[:class]'...) * @param string $moreparam More param to add on a href URL * @return string HTML edit field */ @@ -122,7 +122,7 @@ class Form * @param string $value Value to show/edit * @param object $object Object * @param boolean $perm Permission to allow button to edit parameter - * @param string $typeofdata Type of data ('string' by default, 'amount', 'email', 'numeric:99', 'text' or 'textarea:rows:cols', 'day' or 'datepicker', 'ckeditor:dolibarr_zzz:width:height:savemethod:toolbarstartexpanded:rows:cols', 'select:xxx'...) + * @param string $typeofdata Type of data ('string' by default, 'email', 'amount:99', 'numeric:99', 'text' or 'textarea:rows:cols', 'day' or 'datepicker', 'ckeditor:dolibarr_zzz:width:height:savemethod:toolbarstartexpanded:rows:cols', 'select:xxx'...) * @param string $editvalue When in edit mode, use this value as $value instead of value (for example, you can provide here a formated price instead of value). Use '' to use same than $value * @param object $extObject External object * @param mixed $custommsg String or Array of custom messages : eg array('success' => 'MyMessage', 'error' => 'MyMessage') @@ -154,11 +154,16 @@ class Form $ret.='<input type="hidden" name="id" value="'.$object->id.'">'; $ret.='<table class="nobordernopadding" cellpadding="0" cellspacing="0">'; $ret.='<tr><td>'; - if (preg_match('/^(string|email|numeric|amount)/',$typeofdata)) + if (preg_match('/^(string|email)/',$typeofdata)) { $tmp=explode(':',$typeofdata); $ret.='<input type="text" id="'.$htmlname.'" name="'.$htmlname.'" value="'.($editvalue?$editvalue:$value).'"'.($tmp[1]?' size="'.$tmp[1].'"':'').'>'; } + else if (preg_match('/^(numeric|amount)/',$typeofdata)) + { + $tmp=explode(':',$typeofdata); + $ret.='<input type="text" id="'.$htmlname.'" name="'.$htmlname.'" value="'.price(price2num($editvalue?$editvalue:$value)).'"'.($tmp[1]?' size="'.$tmp[1].'"':'').'>'; + } else if (preg_match('/^text/',$typeofdata) || preg_match('/^note/',$typeofdata)) { $tmp=explode(':',$typeofdata); @@ -203,8 +208,8 @@ class Form } else { - if ($typeofdata == 'email') $ret.=dol_print_email($value,0,0,0,0,1); - elseif ($typeofdata == 'amount') $ret.=($value != '' ? price($value,'',$langs,0,-1,-1,$conf->currency) : ''); + if (preg_match('/^(email)/',$typeofdata)) $ret.=dol_print_email($value,0,0,0,0,1); + elseif (preg_match('/^(amount|numeric)/',$typeofdata)) $ret.=($value != '' ? price($value,'',$langs,0,-1,-1,$conf->currency) : ''); elseif (preg_match('/^text/',$typeofdata) || preg_match('/^note/',$typeofdata)) $ret.=dol_htmlentitiesbr($value); elseif ($typeofdata == 'day' || $typeofdata == 'datepicker') $ret.=dol_print_date($value,'day'); elseif ($typeofdata == 'dayhour' || $typeofdata == 'datehourpicker') $ret.=dol_print_date($value,'dayhour'); diff --git a/htdocs/core/lib/product.lib.php b/htdocs/core/lib/product.lib.php index 5ca0389455f..73c74cfb97e 100644 --- a/htdocs/core/lib/product.lib.php +++ b/htdocs/core/lib/product.lib.php @@ -1,5 +1,5 @@ <?php -/* Copyright (C) 2006-2008 Laurent Destailleur <eldy@users.sourceforge.net> +/* Copyright (C) 2006-2015 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2007 Rodolphe Quiedeville <rodolphe@quiedeville.org> * Copyright (C) 2009-2010 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2015 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr> @@ -46,14 +46,16 @@ function product_prepare_head($object) $h++; $head[$h][0] = DOL_URL_ROOT."/product/price.php?id=".$object->id; - $head[$h][1] = $langs->trans("CustomerPrices"); + $head[$h][1] = $langs->trans("SellingPrices"); $head[$h][2] = 'price'; $h++; - if (! empty($conf->fournisseur->enabled) && $user->rights->fournisseur->lire) + if ((! empty($conf->fournisseur->enabled) && $user->rights->fournisseur->lire) + || (! empty($conf->margin->enabled) && $user->rights->margin->liretous) + ) { $head[$h][0] = DOL_URL_ROOT."/product/fournisseurs.php?id=".$object->id; - $head[$h][1] = $langs->trans("SuppliersPrices"); + $head[$h][1] = $langs->trans("BuyingPrices"); $head[$h][2] = 'suppliers'; $h++; } diff --git a/htdocs/fourn/class/fournisseur.product.class.php b/htdocs/fourn/class/fournisseur.product.class.php index d7344787623..424f9ad65d4 100644 --- a/htdocs/fourn/class/fournisseur.product.class.php +++ b/htdocs/fourn/class/fournisseur.product.class.php @@ -353,7 +353,7 @@ class ProductFournisseur extends Product function fetch_product_fournisseur_price($rowid, $ignore_expression = 0) { $sql = "SELECT pfp.rowid, pfp.price, pfp.quantity, pfp.unitprice, pfp.remise_percent, pfp.remise, pfp.tva_tx, pfp.fk_availability,"; - $sql.= " pfp.fk_soc, pfp.ref_fourn, pfp.fk_product, pfp.charges, pfp.unitcharges, pfp.fk_supplier_price_expression, pfp.delivery_time_days"; // , pfp.recuperableonly as fourn_tva_npr"; FIXME this field not exist in llx_product_fournisseur_price + $sql.= " pfp.fk_soc, pfp.ref_fourn, pfp.fk_product, pfp.charges, pfp.cost_price, pfp.unitcharges, pfp.fk_supplier_price_expression, pfp.delivery_time_days"; // , pfp.recuperableonly as fourn_tva_npr"; FIXME this field not exist in llx_product_fournisseur_price $sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur_price as pfp"; $sql.= " WHERE pfp.rowid = ".$rowid; @@ -368,12 +368,12 @@ class ProductFournisseur extends Product $this->fourn_ref = $obj->ref_fourn; // deprecated $this->ref_supplier = $obj->ref_fourn; $this->fourn_price = $obj->price; - $this->fourn_charges = $obj->charges; + $this->fourn_charges = $obj->charges; // deprecated $this->fourn_qty = $obj->quantity; $this->fourn_remise_percent = $obj->remise_percent; $this->fourn_remise = $obj->remise; $this->fourn_unitprice = $obj->unitprice; - $this->fourn_unitcharges = $obj->unitcharges; + $this->fourn_unitcharges = $obj->unitcharges; // deprecated $this->fourn_tva_tx = $obj->tva_tx; $this->product_id = $obj->fk_product; // deprecated $this->fk_product = $obj->fk_product; @@ -456,9 +456,9 @@ class ProductFournisseur extends Product $prodfourn->fourn_qty = $record["quantity"]; $prodfourn->fourn_remise_percent = $record["remise_percent"]; $prodfourn->fourn_remise = $record["remise"]; - $prodfourn->fourn_unitprice = $record["unitprice"]; - $prodfourn->fourn_charges = $record["charges"]; - $prodfourn->fourn_unitcharges = $record["unitcharges"]; + $prodfourn->fourn_unitprice = $record["unitprice"]; + $prodfourn->fourn_charges = $record["charges"]; // deprecated + $prodfourn->fourn_unitcharges = $record["unitcharges"]; // deprecated $prodfourn->fourn_tva_tx = $record["tva_tx"]; $prodfourn->fourn_id = $record["fourn_id"]; $prodfourn->fourn_name = $record["supplier_name"]; @@ -591,8 +591,8 @@ class ProductFournisseur extends Product $this->fourn_remise_percent = $record["remise_percent"]; $this->fourn_remise = $record["remise"]; $this->fourn_unitprice = $fourn_unitprice; - $this->fourn_charges = $record["charges"]; - $this->fourn_unitcharges = $record["unitcharges"]; + $this->fourn_charges = $record["charges"]; // deprecated + $this->fourn_unitcharges = $record["unitcharges"]; // deprecated $this->fourn_tva_tx = $record["tva_tx"]; $this->fourn_id = $record["fourn_id"]; $this->fourn_name = $record["supplier_name"]; diff --git a/htdocs/install/mysql/migration/3.8.0-3.9.0.sql b/htdocs/install/mysql/migration/3.8.0-3.9.0.sql index 99a042c8c31..1a0bb08d44c 100755 --- a/htdocs/install/mysql/migration/3.8.0-3.9.0.sql +++ b/htdocs/install/mysql/migration/3.8.0-3.9.0.sql @@ -97,6 +97,8 @@ ALTER TABLE llx_commande ADD COLUMN fk_warehouse integer DEFAULT NULL AFTER fk_s ALTER TABLE llx_commande_fournisseur ADD COLUMN billed smallint DEFAULT 0 AFTER fk_statut; ALTER TABLE llx_commande_fournisseur ADD INDEX billed (billed); +ALTER TABLE llx_product ADD COLUMN cost_price double(24,8) DEFAULT NULL; + ALTER TABLE llx_ecm_directories MODIFY COLUMN fullpath varchar(750); ALTER TABLE llx_ecm_directories DROP INDEX idx_ecm_directories; ALTER TABLE llx_ecm_directories ADD UNIQUE INDEX uk_ecm_directories (label, fk_parent, entity); diff --git a/htdocs/install/mysql/tables/llx_product.sql b/htdocs/install/mysql/tables/llx_product.sql index e34ae887ffc..570bc651b2a 100755 --- a/htdocs/install/mysql/tables/llx_product.sql +++ b/htdocs/install/mysql/tables/llx_product.sql @@ -44,8 +44,9 @@ create table llx_product price_min double(24,8) DEFAULT 0, price_min_ttc double(24,8) DEFAULT 0, price_base_type varchar(3) DEFAULT 'HT', - tva_tx double(6,3), -- Default VAT rate of product - recuperableonly integer NOT NULL DEFAULT '0', -- French NPR VAT + cost_price double(24,8) DEFAULT NULL, -- Cost price without tax. Can be used for margin calculation. + tva_tx double(6,3), -- Default VAT rate of product + recuperableonly integer NOT NULL DEFAULT '0', -- French NPR VAT localtax1_tx double(6,3) DEFAULT 0, -- Spanish local VAT 1 localtax2_tx double(6,3) DEFAULT 0, -- Spanish local VAT 2 fk_user_author integer DEFAULT NULL, -- user making creation diff --git a/htdocs/install/mysql/tables/llx_product_fournisseur_price.sql b/htdocs/install/mysql/tables/llx_product_fournisseur_price.sql index fb5184715d1..e7cf555d24e 100755 --- a/htdocs/install/mysql/tables/llx_product_fournisseur_price.sql +++ b/htdocs/install/mysql/tables/llx_product_fournisseur_price.sql @@ -34,12 +34,12 @@ create table llx_product_fournisseur_price remise_percent double NOT NULL DEFAULT 0, remise double NOT NULL DEFAULT 0, unitprice double(24,8) DEFAULT 0, - charges double(24,8) DEFAULT 0, - unitcharges double(24,8) DEFAULT 0, + charges double(24,8) DEFAULT 0, -- to store transport cost. Constant PRODUCT_CHARGES must be set to see it. + unitcharges double(24,8) DEFAULT 0, -- deprecated tva_tx double(6,3) NOT NULL, info_bits integer NOT NULL DEFAULT 0, fk_user integer, - fk_supplier_price_expression integer, -- Link to the rule for dynamic price calculation - import_key varchar(14), -- Import key + fk_supplier_price_expression integer, -- Link to the rule for dynamic price calculation + import_key varchar(14), -- Import key delivery_time_days integer )ENGINE=innodb; diff --git a/htdocs/langs/en_US/products.lang b/htdocs/langs/en_US/products.lang index ddda0152245..b74db95d722 100644 --- a/htdocs/langs/en_US/products.lang +++ b/htdocs/langs/en_US/products.lang @@ -76,6 +76,8 @@ SellingPriceHT=Selling price (net of tax) SellingPriceTTC=Selling price (inc. tax) PublicPrice=Public price CurrentPrice=Current price +CostPriceDescription=This price (net of tax) can be used to store the average amount this product cost to your company. It may be any price you calculate yourself, for example from the average buying price plus average transportation and acquiring cost. +CostPriceUsage=In a future version, this value could be used for margin calculation. NewPrice=New price MinPrice=Min. selling price MinPriceHT=Min. selling price (net of tax) @@ -190,6 +192,8 @@ ClonePricesProduct=Clone main informations and prices CloneCompositionProduct=Clone packaged product/service ProductIsUsed=This product is used NewRefForClone=Ref. of new product/service +SellingPrices=Selling prices +BuyingPrices=Buying prices CustomerPrices=Customer prices SuppliersPrices=Supplier prices SuppliersPricesOfProductsOrServices=Supplier prices (of products or services) diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index aaf5aaf1baa..dcd889a0a77 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -1563,7 +1563,7 @@ class Product extends CommonObject } $sql = "SELECT rowid, ref, ref_ext, label, description, url, note, customcode, fk_country, price, price_ttc,"; - $sql.= " price_min, price_min_ttc, price_base_type, tva_tx, recuperableonly as tva_npr, localtax1_tx, localtax2_tx, tosell,"; + $sql.= " price_min, price_min_ttc, price_base_type, cost_price, tva_tx, recuperableonly as tva_npr, localtax1_tx, localtax2_tx, tosell,"; $sql.= " tobuy, fk_product_type, duration, seuil_stock_alerte, canvas,"; $sql.= " weight, weight_units, length, length_units, surface, surface_units, volume, volume_units, barcode, fk_barcode_type, finished,"; $sql.= " accountancy_code_buy, accountancy_code_sell, stock, pmp,"; @@ -1606,6 +1606,7 @@ class Product extends CommonObject $this->price_min = $obj->price_min; $this->price_min_ttc = $obj->price_min_ttc; $this->price_base_type = $obj->price_base_type; + $this->cost_price = $obj->cost_price; $this->tva_tx = $obj->tva_tx; //! French VAT NPR $this->tva_npr = $obj->tva_npr; diff --git a/htdocs/product/fournisseurs.php b/htdocs/product/fournisseurs.php index 96aa9aa6311..dab8d8dcf5d 100644 --- a/htdocs/product/fournisseurs.php +++ b/htdocs/product/fournisseurs.php @@ -46,6 +46,7 @@ $rowid=GETPOST('rowid','int'); $action=GETPOST('action', 'alpha'); $cancel=GETPOST('cancel', 'alpha'); $socid=GETPOST('socid', 'int'); +$cost_price=GETPOST('cost_price', 'int'); $backtopage=GETPOST('backtopage','alpha'); $error=0; @@ -91,17 +92,37 @@ if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'e if (empty($reshook)) { + if ($action == 'setcost_price') + { + if ($id) + { + $result=$object->fetch($id); + $result=$object->setValueFrom('cost_price', price2num($cost_price)); + if ($result > 0) + { + $object->cost_price = price2num($cost_price); + setEventMessage($langs->trans("RecordSaved")); + } + else + { + $error++; + setEventMessages($object->error, $object->errors, 'errors'); + } + } + $action=''; + } + if ($action == 'remove_pf') { - if ($rowid) + if ($rowid) // id of product supplier price to remove { $action = ''; - $result=$product->remove_product_fournisseur_price($rowid); + $result=$object->remove_product_fournisseur_price($rowid); if($result > 0){ setEventMessage($langs->trans("PriceRemoved")); }else{ $error++; - setEventMessages($product->error, $product->errors, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } } @@ -282,6 +303,17 @@ if ($id > 0 || $ref) } print '</td></tr>'; + // Cost price. Can be used for margin module for option "calculate margin on explicit cost price + // Accountancy sell code + print '<tr><td>'; + $textdesc =$langs->trans("CostPriceDescription"); + $textdesc.="<br>".$langs->trans("CostPriceUsage"); + $text=$form->textwithpicto($langs->trans("CostPrice"), $textdesc, 1, 'help', ''); + print $form->editfieldkey($text,'cost_price',$object->cost_price,$object,$user->rights->produit->creer||$user->rights->service->creer,'amount:6'); + print '</td><td colspan="2">'; + print $form->editfieldval($text,'cost_price',$object->cost_price,$object,$user->rights->produit->creer||$user->rights->service->creer,'amount:6'); + print '</td></tr>'; + print '</table>'; print '</div>'; @@ -463,7 +495,7 @@ if ($id > 0 || $ref) print '<td><input class="flat" name="delivery_time_days" size="4" value="'.($rowid ? $object->delivery_time_days : '').'"> '.$langs->trans('days').'</td>'; print '</tr>'; - // Charges ???? + // Option to define a transport cost on supplier price if ($conf->global->PRODUCT_CHARGES) { if (! empty($conf->margin->enabled)) diff --git a/htdocs/user/card.php b/htdocs/user/card.php index 9cd92248b87..c7d745a2c94 100644 --- a/htdocs/user/card.php +++ b/htdocs/user/card.php @@ -1016,14 +1016,20 @@ if (($action == 'create') || ($action == 'adduserldap')) $langs->load("salaries"); // THM - print '<tr><td>'.$langs->trans("THM").'</td>'; + print '<tr><td>'; + $text=$langs->trans("THM"); + print $form->textwithpicto($text, $langs->trans("THMDescription"), 1, 'help', 'classthm'); + print '</td>'; print '<td>'; print '<input size="8" type="text" name="thm" value="'.GETPOST('thm').'">'; print '</td>'; print "</tr>\n"; // TJM - print '<tr><td>'.$langs->trans("TJM").'</td>'; + print '<tr><td>'; + $text=$langs->trans("TJM"); + print $form->textwithpicto($text, $langs->trans("TJMDescription"), 1, 'help', 'classtjm'); + print '</td>'; print '<td>'; print '<input size="8" type="text" name="tjm" value="'.GETPOST('tjm').'">'; print '</td>'; -- GitLab From 357bc7a00c18a753dec2f59b059f4ee5a47dd719 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Mon, 30 Nov 2015 21:40:14 +0100 Subject: [PATCH 051/197] Fix color link --- htdocs/langs/en_US/products.lang | 2 +- htdocs/theme/eldy/style.css.php | 2 +- htdocs/theme/md/style.css.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/langs/en_US/products.lang b/htdocs/langs/en_US/products.lang index b74db95d722..8471e3b0a14 100644 --- a/htdocs/langs/en_US/products.lang +++ b/htdocs/langs/en_US/products.lang @@ -76,7 +76,7 @@ SellingPriceHT=Selling price (net of tax) SellingPriceTTC=Selling price (inc. tax) PublicPrice=Public price CurrentPrice=Current price -CostPriceDescription=This price (net of tax) can be used to store the average amount this product cost to your company. It may be any price you calculate yourself, for example from the average buying price plus average transportation and acquiring cost. +CostPriceDescription=This price (net of tax) can be used to store the average amount this product cost to your company. It may be any price you calculate yourself, for example from the average buying price plus average production and distribution cost. CostPriceUsage=In a future version, this value could be used for margin calculation. NewPrice=New price MinPrice=Min. selling price diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index c7795841429..bb6a92c61dc 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -3044,7 +3044,7 @@ li.cal_event { border: none; list-style-type: none; } /* CSS for treeview */ .treeview ul { background-color: transparent !important; margin-top: 0; } .treeview li { background-color: transparent !important; padding: 0 0 0 16px !important; min-height: 20px; } -.treeview .hover { color: black !important; } +.treeview .hover { color: rgb(<?php print $colortextlink; ?>) !important; text-decoration: underline !important; } diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index e316f078b24..6dae9fd3e9c 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -2908,7 +2908,7 @@ li.cal_event { border: none; list-style-type: none; } /* CSS for treeview */ .treeview ul { background-color: transparent !important; margin-top: 0; } .treeview li { background-color: transparent !important; padding: 0 0 0 16px !important; min-height: 20px; } -.treeview .hover { color: black !important; } +.treeview .hover { color: rgb(<?php print $colortextlink; ?>) !important; text-decoration: underline !important; } -- GitLab From 6df4948a737c8f1a572980e75b0b84f13ca87176 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Tue, 1 Dec 2015 00:05:30 +0100 Subject: [PATCH 052/197] Fix text --- dev/skeletons/modMyModule.class.php | 4 ++-- htdocs/langs/en_US/mails.lang | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/dev/skeletons/modMyModule.class.php b/dev/skeletons/modMyModule.class.php index 86d9636809a..a54aac470e5 100644 --- a/dev/skeletons/modMyModule.class.php +++ b/dev/skeletons/modMyModule.class.php @@ -1,6 +1,6 @@ <?php /* Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org> - * Copyright (C) 2004-2012 Laurent Destailleur <eldy@users.sourceforge.net> + * Copyright (C) 2004-2015 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com> * * This program is free software; you can redistribute it and/or modify @@ -46,7 +46,7 @@ class modMyModule extends DolibarrModules // Id for module (must be unique). // Use here a free id (See in Home -> System information -> Dolibarr for list of used modules id). - $this->numero = 100000; + $this->numero = 500000; // TODO Go on page http://wiki.dolibarr.org/index.php/List_of_modules_id to reserve id number for your module // Key text used to identify module (for permissions, menus, etc...) $this->rights_class = 'mymodule'; diff --git a/htdocs/langs/en_US/mails.lang b/htdocs/langs/en_US/mails.lang index db8b013240f..df5ad878657 100644 --- a/htdocs/langs/en_US/mails.lang +++ b/htdocs/langs/en_US/mails.lang @@ -84,7 +84,7 @@ EachInvoiceWillBeAttachedToEmail=A document using default invoice document templ MailTopicSendRemindUnpaidInvoices=Reminder of invoice %s (%s) SendRemind=Send reminder by EMails RemindSent=%s reminder(s) sent -AllRecipientSelectedForRemind=All thirdparties selected and if an email is set (note that one mail per invoice will be sent) +AllRecipientSelectedForRemind=All thirdparties selected and if an email is set. NoRemindSent=No EMail reminder sent ResultOfMassSending=Result of mass EMail reminders sending -- GitLab From 882b66c58657016131e0ef654eedabd420c6fe45 Mon Sep 17 00:00:00 2001 From: aspangaro <alexandre.spangaro@gmail.com> Date: Tue, 1 Dec 2015 06:56:26 +0100 Subject: [PATCH 053/197] HRM - Add bank tab in user to pay salary or expense report --- htdocs/core/lib/usergroups.lib.php | 10 + .../install/mysql/migration/3.8.0-3.9.0.sql | 19 +- .../install/mysql/tables/llx_societe_rib.sql | 14 +- htdocs/install/mysql/tables/llx_user_rib.sql | 37 ++ htdocs/user/bank.php | 390 ++++++++++++++++++ htdocs/user/class/userbankaccount.class.php | 284 +++++++++++++ 6 files changed, 744 insertions(+), 10 deletions(-) create mode 100644 htdocs/install/mysql/tables/llx_user_rib.sql create mode 100644 htdocs/user/bank.php create mode 100644 htdocs/user/class/userbankaccount.class.php diff --git a/htdocs/core/lib/usergroups.lib.php b/htdocs/core/lib/usergroups.lib.php index b653cfbf5c0..e8961645c62 100644 --- a/htdocs/core/lib/usergroups.lib.php +++ b/htdocs/core/lib/usergroups.lib.php @@ -1,6 +1,7 @@ <?php /* Copyright (C) 2006-2012 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2010-2012 Regis Houssin <regis.houssin@capnetworks.com> + * Copyright (C) 2015 Alexandre Spangaro <aspangaro.dolibarr@gmail.com> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -93,6 +94,15 @@ function user_prepare_head($object) // $this->tabs = array('entity:-tabname); to remove a tab complete_head_from_modules($conf,$langs,$object,$head,$h,'user'); + if (! empty($conf->hrm->enabled)) + { + // Bank + $head[$h][0] = DOL_URL_ROOT.'/user/bank.php?id='.$object->id; + $head[$h][1] = $langs->trans("Bank"); + $head[$h][2] = 'bank'; + $h++; + } + //Info on users is visible only by internal user if (empty($user->societe_id)) { diff --git a/htdocs/install/mysql/migration/3.8.0-3.9.0.sql b/htdocs/install/mysql/migration/3.8.0-3.9.0.sql index c15288d834b..cf3aa3fdf98 100755 --- a/htdocs/install/mysql/migration/3.8.0-3.9.0.sql +++ b/htdocs/install/mysql/migration/3.8.0-3.9.0.sql @@ -205,7 +205,24 @@ CREATE TABLE IF NOT EXISTS llx_establishment ( status smallint DEFAULT 1 ) ENGINE=InnoDB; - +CREATE TABLE IF NOT EXISTS llx_user_rib ( + rowid integer AUTO_INCREMENT PRIMARY KEY, + fk_user integer NOT NULL, + entity integer DEFAULT 1 NOT NULL, -- multi company id + datec datetime, + tms timestamp, + label varchar(30), + bank varchar(255), -- bank name + code_banque varchar(128), -- bank code + code_guichet varchar(6), -- desk code + number varchar(255), -- account number + cle_rib varchar(5), -- key of bank account + bic varchar(11), -- 11 according to ISO 9362 + iban_prefix varchar(34), -- full iban. 34 according to ISO 13616 + domiciliation varchar(255), + proprio varchar(60), + owner_address varchar(255) +)ENGINE=innodb; ALTER TABLE llx_projet_task_time ADD COLUMN invoice_id integer DEFAULT NULL; ALTER TABLE llx_projet_task_time ADD COLUMN invoice_line_id integer DEFAULT NULL; diff --git a/htdocs/install/mysql/tables/llx_societe_rib.sql b/htdocs/install/mysql/tables/llx_societe_rib.sql index e8f995130d4..e003b6d706e 100644 --- a/htdocs/install/mysql/tables/llx_societe_rib.sql +++ b/htdocs/install/mysql/tables/llx_societe_rib.sql @@ -19,10 +19,11 @@ -- -- ============================================================================= -create table llx_societe_rib +create table llx_user_rib ( rowid integer AUTO_INCREMENT PRIMARY KEY, - fk_soc integer NOT NULL, + fk_user integer NOT NULL, + entity integer DEFAULT 1 NOT NULL, -- multi company id datec datetime, tms timestamp, label varchar(30), @@ -31,15 +32,10 @@ create table llx_societe_rib code_guichet varchar(6), -- desk code number varchar(255), -- account number cle_rib varchar(5), -- key of bank account - bic varchar(20), -- 11 according to ISO 9362 (we keep 20 for backward compatibility) + bic varchar(11), -- 11 according to ISO 9362 iban_prefix varchar(34), -- full iban. 34 according to ISO 13616 domiciliation varchar(255), proprio varchar(60), owner_address varchar(255), - default_rib smallint NOT NULL DEFAULT 0, - - rum varchar(32), -- RUM value to use for SEPA generation - frstrecur varchar(16) default 'FRST', -- 'FRST' or 'RECUR' - - import_key varchar(14) -- import key + default_rib smallint NOT NULL DEFAULT 0 )ENGINE=innodb; diff --git a/htdocs/install/mysql/tables/llx_user_rib.sql b/htdocs/install/mysql/tables/llx_user_rib.sql new file mode 100644 index 00000000000..05738ce4582 --- /dev/null +++ b/htdocs/install/mysql/tables/llx_user_rib.sql @@ -0,0 +1,37 @@ +-- ============================================================================= +-- Copyright (C) 2015 Alexandre Spangaro <aspangaro.dolibarr@gmail.com> +-- +-- This program is free software; you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation; either version 3 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, see <http://www.gnu.org/licenses/>. +-- +-- ============================================================================= + +create table llx_user_rib +( + rowid integer AUTO_INCREMENT PRIMARY KEY, + fk_user integer NOT NULL, + entity integer DEFAULT 1 NOT NULL, -- multi company id + datec datetime, + tms timestamp, + label varchar(30), + bank varchar(255), -- bank name + code_banque varchar(128), -- bank code + code_guichet varchar(6), -- desk code + number varchar(255), -- account number + cle_rib varchar(5), -- key of bank account + bic varchar(11), -- 11 according to ISO 9362 + iban_prefix varchar(34), -- full iban. 34 according to ISO 13616 + domiciliation varchar(255), + proprio varchar(60), + owner_address varchar(255) +)ENGINE=innodb; diff --git a/htdocs/user/bank.php b/htdocs/user/bank.php new file mode 100644 index 00000000000..0325fcd0a50 --- /dev/null +++ b/htdocs/user/bank.php @@ -0,0 +1,390 @@ +<?php +/* Copyright (C) 2002-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org> + * Copyright (C) 2003 Jean-Louis Bergamo <jlb@j1b.org> + * Copyright (C) 2004-2015 Laurent Destailleur <eldy@users.sourceforge.net> + * Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com> + * Copyright (C) 2013 Peter Fontaine <contact@peterfontaine.fr> + * Copyright (C) 2015 Marcos García <marcosgdf@gmail.com> + * Copyright (C) 2015 Alexandre Spangaro <aspangaro.dolibarr@gmail.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 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, see <http://www.gnu.org/licenses/>. + */ + +/** + * \file htdocs/user/bank.php + * \ingroup HRM + * \brief BAN tab for users + */ + +require '../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/usergroups.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/bank.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/user/class/userbankaccount.class.php'; + +$langs->load("companies"); +$langs->load("commercial"); +$langs->load("banks"); +$langs->load("bills"); + +$id = GETPOST('id','int'); +$action = GETPOST("action"); + +// Security check +$socid=0; +if ($user->societe_id > 0) $socid = $user->societe_id; +$feature2 = (($socid && $user->rights->user->self->creer)?'':'user'); +if ($user->id == $id) $feature2=''; // A user can always read its own card +$result = restrictedArea($user, 'user', $id, 'user&user', $feature2); + +$object = new User($db); +if ($id > 0 || ! empty($ref)) +{ + $result = $object->fetch($id, $ref); +} + +/* + * Actions + */ + +if ($action == 'update' && ! $_POST["cancel"]) +{ + // Modification + $account = new UserBankAccount($db); + + $account->fetch($id); + + $account->userid = $object->id; + + $account->bank = $_POST["bank"]; + $account->label = $_POST["label"]; + $account->courant = $_POST["courant"]; + $account->clos = $_POST["clos"]; + $account->code_banque = $_POST["code_banque"]; + $account->code_guichet = $_POST["code_guichet"]; + $account->number = $_POST["number"]; + $account->cle_rib = $_POST["cle_rib"]; + $account->bic = $_POST["bic"]; + $account->iban = $_POST["iban"]; + $account->domiciliation = $_POST["domiciliation"]; + $account->proprio = $_POST["proprio"]; + $account->owner_address = $_POST["owner_address"]; + + $result = $account->update($user); + if (! $result) + { + setEventMessage($account->error, 'errors'); + $_GET["action"]='edit'; // Force chargement page edition + } + else + { + $url=DOL_URL_ROOT.'/user/bank.php?id='.$object->id; + header('Location: '.$url); + exit; + } +} + +/* + * View + */ + +$form = new Form($db); + +llxHeader(); + +$head = user_prepare_head($object); + +$account = new UserBankAccount($db); +if (! $id) + $account->fetch(0,$object->id); +else + $account->fetch($id); +if (empty($account->userid)) $account->userid=$object->id; + + +if ($id && $action == 'edit' && $user->rights->user->user->creer) +{ + print '<form action="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'" method="post">'; + print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; + print '<input type="hidden" name="action" value="update">'; + print '<input type="hidden" name="id" value="'.$_GET["id"].'">'; +} +if ($id && $action == 'create' && $user->rights->user->user->creer) +{ + print '<form action="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'" method="post">'; + print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; + print '<input type="hidden" name="action" value="add">'; +} + + +// View +if ($id && $action != 'edit') +{ + $title = $langs->trans("User"); + dol_fiche_head($head, 'bank', $title, 0, 'user'); + + $linkback = '<a href="'.DOL_URL_ROOT.'/user/index.php">'.$langs->trans("BackToList").'</a>'; + + dol_banner_tab($object,'id',$linkback,$user->rights->user->user->lire || $user->admin); + + print '<div class="fichecenter">'; + + print '<div class="underbanner clearboth"></div>'; + print '<table class="border centpercent">'; + + print '<tr><td class="titlefield">'.$langs->trans("LabelRIB").'</td>'; + print '<td colspan="4">'.$account->label.'</td></tr>'; + + print '<tr><td>'.$langs->trans("BankName").'</td>'; + print '<td colspan="4">'.$account->bank.'</td></tr>'; + + // Show fields of bank account + $fieldlists='BankCode DeskCode AccountNumber BankAccountNumberKey'; + if (! empty($conf->global->BANK_SHOW_ORDER_OPTION)) + { + if (is_numeric($conf->global->BANK_SHOW_ORDER_OPTION)) + { + if ($conf->global->BANK_SHOW_ORDER_OPTION == '1') $fieldlists='BankCode DeskCode BankAccountNumberKey AccountNumber'; + } + else $fieldlists=$conf->global->BANK_SHOW_ORDER_OPTION; + } + $fieldlistsarray=explode(' ',$fieldlists); + + foreach($fieldlistsarray as $val) + { + if ($val == 'BankCode') + { + if ($account->useDetailedBBAN() == 1) + { + print '<tr><td>'.$langs->trans("BankCode").'</td>'; + print '<td colspan="3">'.$account->code_banque.'</td>'; + print '</tr>'; + } + } + if ($val == 'DeskCode') + { + if ($account->useDetailedBBAN() == 1) + { + print '<tr><td>'.$langs->trans("DeskCode").'</td>'; + print '<td colspan="3">'.$account->code_guichet.'</td>'; + print '</tr>'; + } + } + + if ($val == 'BankCode') + { + if ($account->useDetailedBBAN() == 2) + { + print '<tr><td>'.$langs->trans("BankCode").'</td>'; + print '<td colspan="3">'.$account->code_banque.'</td>'; + print '</tr>'; + } + } + + if ($val == 'AccountNumber') + { + print '<tr><td>'.$langs->trans("BankAccountNumber").'</td>'; + print '<td colspan="3">'.$account->number.'</td>'; + print '</tr>'; + } + + if ($val == 'BankAccountNumberKey') + { + if ($account->useDetailedBBAN() == 1) + { + print '<tr><td>'.$langs->trans("BankAccountNumberKey").'</td>'; + print '<td colspan="3">'.$account->cle_rib.'</td>'; + print '</tr>'; + } + } + } + + print '<tr><td valign="top">'.$langs->trans("IBAN").'</td>'; + print '<td colspan="4">'.$account->iban . ' '; + if (! empty($account->iban)) { + if (! checkIbanForAccount($account)) { + print img_picto($langs->trans("IbanNotValid"),'warning'); + } else { + print img_picto($langs->trans("IbanValid"),'info'); + } + } + print '</td></tr>'; + + print '<tr><td valign="top">'.$langs->trans("BIC").'</td>'; + print '<td colspan="4">'.$account->bic.' '; + if (! empty($account->bic)) { + if (! checkSwiftForAccount($account)) { + print img_picto($langs->trans("SwiftNotValid"),'warning'); + } else { + print img_picto($langs->trans("SwiftValid"),'info'); + } + } + print '</td></tr>'; + + print '<tr><td valign="top">'.$langs->trans("BankAccountDomiciliation").'</td><td colspan="4">'; + print $account->domiciliation; + print "</td></tr>\n"; + + print '<tr><td valign="top">'.$langs->trans("BankAccountOwner").'</td><td colspan="4">'; + print $account->proprio; + print "</td></tr>\n"; + + print '<tr><td valign="top">'.$langs->trans("BankAccountOwnerAddress").'</td><td colspan="4">'; + print $account->owner_address; + print "</td></tr>\n"; + + print '</table>'; + + // Check BBAN + if ($account->label && ! checkBanForAccount($account)) + { + print '<div class="warning">'.$langs->trans("RIBControlError").'</div>'; + } + + print "</div>"; + + dol_fiche_end(); + + /* + * Barre d'actions + */ + print '<div class="tabsAction">'; + + if ($user->rights->user->user->creer) + { + print '<a class="butAction" href="bank.php?id='.$object->id.'&action=edit">'.$langs->trans("Edit").'</a>'; + } + + print '</div>'; +} + +// Edit +if ($id && $action == 'edit' && $user->rights->user->user->creer) +{ + $title = $langs->trans("User"); + dol_fiche_head($head, 'bank', $title, 0, 'user'); + + $linkback = '<a href="'.DOL_URL_ROOT.'/user/index.php">'.$langs->trans("BackToList").'</a>'; + + dol_banner_tab($object,'id',$linkback,$user->rights->user->user->lire || $user->admin); + + print '<div class="fichecenter">'; + + print '<div class="underbanner clearboth"></div>'; + print '<table class="border centpercent">'; + + print '<tr><td valign="top" width="35%" class="fieldrequired">'.$langs->trans("LabelRIB").'</td>'; + print '<td colspan="4"><input size="30" type="text" name="label" value="'.$account->label.'"></td></tr>'; + + print '<tr><td class="fieldrequired">'.$langs->trans("BankName").'</td>'; + print '<td><input size="30" type="text" name="bank" value="'.$account->bank.'"></td></tr>'; + + // Show fields of bank account + $fieldlists='BankCode DeskCode AccountNumber BankAccountNumberKey'; + if (! empty($conf->global->BANK_SHOW_ORDER_OPTION)) + { + if (is_numeric($conf->global->BANK_SHOW_ORDER_OPTION)) + { + if ($conf->global->BANK_SHOW_ORDER_OPTION == '1') $fieldlists='BankCode DeskCode BankAccountNumberKey AccountNumber'; + } + else $fieldlists=$conf->global->BANK_SHOW_ORDER_OPTION; + } + $fieldlistsarray=explode(' ',$fieldlists); + + foreach($fieldlistsarray as $val) + { + if ($val == 'BankCode') + { + if ($account->useDetailedBBAN() == 1) + { + print '<tr><td>'.$langs->trans("BankCode").'</td>'; + print '<td><input size="8" type="text" class="flat" name="code_banque" value="'.$account->code_banque.'"></td>'; + print '</tr>'; + } + } + + if ($val == 'DeskCode') + { + if ($account->useDetailedBBAN() == 1) + { + print '<tr><td>'.$langs->trans("DeskCode").'</td>'; + print '<td><input size="8" type="text" class="flat" name="code_guichet" value="'.$account->code_guichet.'"></td>'; + print '</tr>'; + } + } + + if ($val == 'BankCode') + { + if ($account->useDetailedBBAN() == 2) + { + print '<tr><td>'.$langs->trans("BankCode").'</td>'; + print '<td><input size="8" type="text" class="flat" name="code_banque" value="'.$account->code_banque.'"></td>'; + print '</tr>'; + } + } + + if ($val == 'AccountNumber') + { + print '<td class="fieldrequired">'.$langs->trans("BankAccountNumber").'</td>'; + print '<td><input size="18" type="text" class="flat" name="number" value="'.$account->number.'"></td>'; + print '</tr>'; + } + + if ($val == 'BankAccountNumberKey') + { + if ($account->useDetailedBBAN() == 1) + { + print '<td>'.$langs->trans("BankAccountNumberKey").'</td>'; + print '<td><input size="3" type="text" class="flat" name="cle_rib" value="'.$account->cle_rib.'"></td>'; + print '</tr>'; + } + } + } + + // IBAN + print '<tr><td valign="top" class="fieldrequired">'.$langs->trans("IBAN").'</td>'; + print '<td colspan="4"><input size="30" type="text" name="iban" value="'.$account->iban.'"></td></tr>'; + + print '<tr><td valign="top" class="fieldrequired">'.$langs->trans("BIC").'</td>'; + print '<td colspan="4"><input size="12" type="text" name="bic" value="'.$account->bic.'"></td></tr>'; + + print '<tr><td valign="top">'.$langs->trans("BankAccountDomiciliation").'</td><td colspan="4">'; + print '<textarea name="domiciliation" rows="4" cols="40">'; + print $account->domiciliation; + print "</textarea></td></tr>"; + + print '<tr><td valign="top">'.$langs->trans("BankAccountOwner").'</td>'; + print '<td colspan="4"><input size="30" type="text" name="proprio" value="'.$account->proprio.'"></td></tr>'; + print "</td></tr>\n"; + + print '<tr><td valign="top">'.$langs->trans("BankAccountOwnerAddress").'</td><td colspan="4">'; + print "<textarea name=\"owner_address\" rows=\"4\" cols=\"40\">"; + print $account->owner_address; + print "</textarea></td></tr>"; + + print '</table>'; + + print '</div>'; + + dol_fiche_end(); + + print '<div align="center">'; + print '<input class="button" value="'.$langs->trans("Modify").'" type="submit">'; + print ' '; + print '<input class="button" name="cancel" value="'.$langs->trans("Cancel").'" type="submit">'; + print '</div>'; +} + +llxFooter(); + +$db->close(); diff --git a/htdocs/user/class/userbankaccount.class.php b/htdocs/user/class/userbankaccount.class.php new file mode 100644 index 00000000000..1f48be28187 --- /dev/null +++ b/htdocs/user/class/userbankaccount.class.php @@ -0,0 +1,284 @@ +<?php +/* Copyright (C) 2004 Rodolphe Quiedeville <rodolphe@quiedeville.org> + * Copyright (C) 2010-2013 Laurent Destailleur <eldy@users.sourceforge.net> + * Copyright (C) 2012 Regis Houssin <regis.houssin@capnetworks.com> + * Copyright (C) 2013 Peter Fontaine <contact@peterfontaine.fr> + * Copyright (C) 2015 Alexandre Spangaro <aspangaro.dolibarr@gmail.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 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, see <http://www.gnu.org/licenses/>. + */ + +/** + * \file htdocs/user/class/userbankaccount.class.php + * \ingroup user + * \brief File of class to manage bank accounts description of users + */ + +require_once DOL_DOCUMENT_ROOT .'/compta/bank/class/account.class.php'; + + +/** + * Class to manage bank accounts description of third parties + */ +class UserBankAccount extends Account +{ + var $socid; + + var $default_rib; + + var $datec; + var $datem; + + + /** + * Constructor + * + * @param DoliDB $db Database handler + */ + function __construct($db) + { + $this->db = $db; + + $this->socid = 0; + $this->clos = 0; + $this->solde = 0; + $this->error_number = 0; + $this->default_rib = 0; + return 1; + } + + + /** + * Create bank information record + * + * @param Object $user User + * @return int <0 if KO, >= 0 if OK + */ + function create($user='') + { + $now=dol_now(); + + $sql = "INSERT INTO ".MAIN_DB_PREFIX."user_rib (fk_user, datec)"; + $sql.= " VALUES (".$this->userid.", '".$this->db->idate($now)."')"; + $resql=$this->db->query($sql); + if ($resql) + { + if ($this->db->affected_rows($resql)) + { + $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."user_rib"); + return 1; + } + } + else + { + print $this->db->error(); + return 0; + } + } + + /** + * Update bank account + * + * @param User $user Object user + * @return int <=0 if KO, >0 if OK + */ + function update($user='') + { + global $conf; + + if (! $this->id) + { + $this->create(); + } + + $sql = "UPDATE ".MAIN_DB_PREFIX."user_rib SET"; + $sql.= " bank = '" .$this->db->escape($this->bank)."'"; + $sql.= ",code_banque='".$this->code_banque."'"; + $sql.= ",code_guichet='".$this->code_guichet."'"; + $sql.= ",number='".$this->number."'"; + $sql.= ",cle_rib='".$this->cle_rib."'"; + $sql.= ",bic='".$this->bic."'"; + $sql.= ",iban_prefix = '".$this->iban."'"; + $sql.= ",domiciliation='".$this->db->escape($this->domiciliation)."'"; + $sql.= ",proprio = '".$this->db->escape($this->proprio)."'"; + $sql.= ",owner_address = '".$this->db->escape($this->owner_address)."'"; + + if (trim($this->label) != '') + $sql.= ",label = '".$this->db->escape($this->label)."'"; + else + $sql.= ",label = NULL"; + $sql.= " WHERE rowid = ".$this->id; + + $result = $this->db->query($sql); + if ($result) + { + return 1; + } + else + { + dol_print_error($this->db); + return 0; + } + } + + /** + * Load record from database + * + * @param int $id Id of record + * @param int $socid Id of company. If this is filled, function will return the default RIB of company + * @return int <0 if KO, >0 if OK + */ + function fetch($id, $socid=0) + { + if (empty($id) && empty($socid)) return -1; + + $sql = "SELECT rowid, fk_user, entity, bank, number, code_banque, code_guichet, cle_rib, bic, iban_prefix as iban, domiciliation, proprio,"; + $sql.= " owner_address, default_rib, label, datec, tms as datem"; + $sql.= " FROM ".MAIN_DB_PREFIX."user_rib"; + if ($id) $sql.= " WHERE rowid = ".$id; + if ($socid) $sql.= " WHERE fk_user = ".$userid; + + $resql = $this->db->query($sql); + if ($resql) + { + if ($this->db->num_rows($resql)) + { + $obj = $this->db->fetch_object($resql); + + $this->id = $obj->rowid; + $this->socid = $obj->fk_soc; + $this->bank = $obj->bank; + $this->code_banque = $obj->code_banque; + $this->code_guichet = $obj->code_guichet; + $this->number = $obj->number; + $this->cle_rib = $obj->cle_rib; + $this->bic = $obj->bic; + $this->iban = $obj->iban; + $this->domiciliation = $obj->domiciliation; + $this->proprio = $obj->proprio; + $this->owner_address = $obj->owner_address; + $this->label = $obj->label; + $this->datec = $this->db->jdate($obj->datec); + $this->datem = $this->db->jdate($obj->datem); + } + $this->db->free($resql); + + return 1; + } + else + { + dol_print_error($this->db); + return -1; + } + } + + /** + * Delete a rib from database + * + * @param User $user User deleting + * @return int <0 if KO, >0 if OK + */ + function delete($user) + { + global $conf; + + $sql = "DELETE FROM ".MAIN_DB_PREFIX."user_rib"; + $sql.= " WHERE rowid = ".$this->id; + + dol_syslog(get_class($this)."::delete", LOG_DEBUG); + $result = $this->db->query($sql); + if ($result) { + return 1; + } + else { + dol_print_error($this->db); + return -1; + } + } + + /** + * Return RIB + * + * @param boolean $displayriblabel Prepend or Hide Label + * @return string RIB + */ + function getRibLabel($displayriblabel = true) + { + global $langs,$conf; + + if ($this->code_banque || $this->code_guichet || $this->number || $this->cle_rib) + { + if ($this->label && $displayriblabel) $rib = $this->label." : "; + + // Show fields of bank account + $fieldlists='BankCode DeskCode AccountNumber BankAccountNumberKey'; + if (! empty($conf->global->BANK_SHOW_ORDER_OPTION)) + { + if (is_numeric($conf->global->BANK_SHOW_ORDER_OPTION)) + { + if ($conf->global->BANK_SHOW_ORDER_OPTION == '1') $fieldlists='BankCode DeskCode BankAccountNumberKey AccountNumber'; + } + else $fieldlists=$conf->global->BANK_SHOW_ORDER_OPTION; + } + $fieldlistsarray=explode(' ',$fieldlists); + + foreach($fieldlistsarray as $val) + { + if ($val == 'BankCode') + { + if ($this->useDetailedBBAN() == 1) + { + $rib.=$this->code_banque.' '; + } + } + + if ($val == 'DeskCode') + { + if ($this->useDetailedBBAN() == 1) + { + $rib.=$this->code_guichet.' '; + } + } + + if ($val == 'BankCode') + { + if ($this->useDetailedBBAN() == 2) + { + $rib.=$this->code_banque.' '; + } + } + + if ($val == 'AccountNumber') + { + $rib.=$this->number.' '; + } + + if ($val == 'BankAccountNumberKey') + { + if ($this->useDetailedBBAN() == 1) + { + $rib.=$this->cle_rib.' '; + } + } + } + } + else + { + $rib=''; + } + + return $rib; + } +} + -- GitLab From 46611908ae92be42086f9b73e1d422252ef6ed3a Mon Sep 17 00:00:00 2001 From: abb <bafbes@gmail.com> Date: Tue, 1 Dec 2015 11:10:05 +0100 Subject: [PATCH 054/197] add constant FICHINTER_EMPTY_LINE_DESC to allow empty line descriptions in interventions --- htdocs/fichinter/card.php | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/htdocs/fichinter/card.php b/htdocs/fichinter/card.php index 9dd3577b91d..0b343524f9c 100644 --- a/htdocs/fichinter/card.php +++ b/htdocs/fichinter/card.php @@ -6,6 +6,7 @@ * Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro> * Copyright (C) 2014-2015 Ferran Marcet <fmarcet@2byte.es> * Copyright (C) 201 Charlie Benke <charlies@patas-monkey.com> + * Copyright (C) 2015 Abbes Bahfir <bafbes@gmail.com> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -466,8 +467,8 @@ if (empty($reshook)) // Add line else if ($action == "addline" && $user->rights->ficheinter->creer) { - if (!GETPOST('np_desc')) - { + if (!GETPOST('np_desc')&&($conf->global->FICHINTER_EMPTY_LINE_DESC!=1)) + { $mesg='<div class="error">'.$langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Description")).'</div>'; $error++; } @@ -1566,16 +1567,18 @@ else if ($id > 0 || ! empty($ref)) $var=true; - print '<tr '.$bcnd[$var].">\n"; - print '<td>'; - // editeur wysiwyg - require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; - $doleditor=new DolEditor('np_desc',GETPOST('np_desc','alpha'),'',100,'dolibarr_details','',false,true,$conf->global->FCKEDITOR_ENABLE_DETAILS,ROWS_2,70); - $doleditor->Create(); - print '</td>'; - - // Date intervention - print '<td align="center" class="nowrap">'; + print '<tr '.$bcnd[$var] . ">\n"; + print '<td>'; + // editeur wysiwyg + if ($conf->global->FICHINTER_EMPTY_LINE_DESC != 1) { + require_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php'; + $doleditor = new DolEditor('np_desc', GETPOST('np_desc', 'alpha'), '', 100, 'dolibarr_details', '', false, true, $conf->global->FCKEDITOR_ENABLE_DETAILS, ROWS_2, 70); + $doleditor->Create(); + } + print '</td>'; + + // Date intervention + print '<td align="center" class="nowrap">'; $now=dol_now(); $timearray=dol_getdate($now); if (! GETPOST('diday','int')) $timewithnohour=dol_mktime(0,0,0,$timearray['mon'],$timearray['mday'],$timearray['year']); -- GitLab From 09a6cc962545b23f8ff5bc743eaa115ede959421 Mon Sep 17 00:00:00 2001 From: aspangaro <alexandre.spangaro@gmail.com> Date: Tue, 1 Dec 2015 20:17:14 +0100 Subject: [PATCH 055/197] wrong table --- htdocs/install/mysql/tables/llx_societe_rib.sql | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/htdocs/install/mysql/tables/llx_societe_rib.sql b/htdocs/install/mysql/tables/llx_societe_rib.sql index e003b6d706e..e8f995130d4 100644 --- a/htdocs/install/mysql/tables/llx_societe_rib.sql +++ b/htdocs/install/mysql/tables/llx_societe_rib.sql @@ -19,11 +19,10 @@ -- -- ============================================================================= -create table llx_user_rib +create table llx_societe_rib ( rowid integer AUTO_INCREMENT PRIMARY KEY, - fk_user integer NOT NULL, - entity integer DEFAULT 1 NOT NULL, -- multi company id + fk_soc integer NOT NULL, datec datetime, tms timestamp, label varchar(30), @@ -32,10 +31,15 @@ create table llx_user_rib code_guichet varchar(6), -- desk code number varchar(255), -- account number cle_rib varchar(5), -- key of bank account - bic varchar(11), -- 11 according to ISO 9362 + bic varchar(20), -- 11 according to ISO 9362 (we keep 20 for backward compatibility) iban_prefix varchar(34), -- full iban. 34 according to ISO 13616 domiciliation varchar(255), proprio varchar(60), owner_address varchar(255), - default_rib smallint NOT NULL DEFAULT 0 + default_rib smallint NOT NULL DEFAULT 0, + + rum varchar(32), -- RUM value to use for SEPA generation + frstrecur varchar(16) default 'FRST', -- 'FRST' or 'RECUR' + + import_key varchar(14) -- import key )ENGINE=innodb; -- GitLab From e1c8e6d8f63a68f3a68e45037743a0ac87b36df5 Mon Sep 17 00:00:00 2001 From: aspangaro <alexandre.spangaro@gmail.com> Date: Tue, 1 Dec 2015 20:27:29 +0100 Subject: [PATCH 056/197] Remove useless code --- htdocs/user/class/userbankaccount.class.php | 27 --------------------- 1 file changed, 27 deletions(-) diff --git a/htdocs/user/class/userbankaccount.class.php b/htdocs/user/class/userbankaccount.class.php index 1f48be28187..c89d7162c2a 100644 --- a/htdocs/user/class/userbankaccount.class.php +++ b/htdocs/user/class/userbankaccount.class.php @@ -35,8 +35,6 @@ class UserBankAccount extends Account { var $socid; - var $default_rib; - var $datec; var $datem; @@ -54,7 +52,6 @@ class UserBankAccount extends Account $this->clos = 0; $this->solde = 0; $this->error_number = 0; - $this->default_rib = 0; return 1; } @@ -183,30 +180,6 @@ class UserBankAccount extends Account } } - /** - * Delete a rib from database - * - * @param User $user User deleting - * @return int <0 if KO, >0 if OK - */ - function delete($user) - { - global $conf; - - $sql = "DELETE FROM ".MAIN_DB_PREFIX."user_rib"; - $sql.= " WHERE rowid = ".$this->id; - - dol_syslog(get_class($this)."::delete", LOG_DEBUG); - $result = $this->db->query($sql); - if ($result) { - return 1; - } - else { - dol_print_error($this->db); - return -1; - } - } - /** * Return RIB * -- GitLab From 5360ea65bf2e04079c33133389387e1e9b433d95 Mon Sep 17 00:00:00 2001 From: Bahfir Abbes <bafbes@gmail.com> Date: Tue, 1 Dec 2015 21:26:04 +0100 Subject: [PATCH 057/197] Update card.php --- htdocs/fichinter/card.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/fichinter/card.php b/htdocs/fichinter/card.php index 0b343524f9c..33c2e48b599 100644 --- a/htdocs/fichinter/card.php +++ b/htdocs/fichinter/card.php @@ -467,7 +467,7 @@ if (empty($reshook)) // Add line else if ($action == "addline" && $user->rights->ficheinter->creer) { - if (!GETPOST('np_desc')&&($conf->global->FICHINTER_EMPTY_LINE_DESC!=1)) + if (!GETPOST('np_desc') && $conf->global->FICHINTER_EMPTY_LINE_DESC!=1 ) { $mesg='<div class="error">'.$langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Description")).'</div>'; $error++; -- GitLab From eb504ffacc7ac1c305d78c8f0d6a5e9cdb4617b9 Mon Sep 17 00:00:00 2001 From: ricardomm <GitRepositorio> Date: Wed, 2 Dec 2015 11:53:23 +0100 Subject: [PATCH 058/197] minor fix accessing $db --- htdocs/product/class/product.class.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index 4253d2c0e48..429990f7010 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -3314,23 +3314,23 @@ class Product extends CommonObject if (! empty($conf->commande->enabled)) { $result=$this->load_stats_commande(0,'1,2'); - if ($result < 0) dol_print_error($db,$this->error); + if ($result < 0) dol_print_error($this->db,$this->error); $stock_commande_client=$this->stats_commande['qty']; } if (! empty($conf->expedition->enabled)) { $result=$this->load_stats_sending(0,'1,2'); - if ($result < 0) dol_print_error($db,$this->error); + if ($result < 0) dol_print_error($this->db,$this->error); $stock_sending_client=$this->stats_expedition['qty']; } if (! empty($conf->fournisseur->enabled)) { $result=$this->load_stats_commande_fournisseur(0,'1,2,3,4'); - if ($result < 0) dol_print_error($db,$this->error); + if ($result < 0) dol_print_error($this->db,$this->error); $stock_commande_fournisseur=$this->stats_commande_fournisseur['qty']; $result=$this->load_stats_reception(0,'4'); - if ($result < 0) dol_print_error($db,$this->error); + if ($result < 0) dol_print_error($this->db,$this->error); $stock_reception_fournisseur=$this->stats_reception['qty']; } -- GitLab From bd632cf2b0205c4e7a5c08c631a088ae31986378 Mon Sep 17 00:00:00 2001 From: Florian HENRY <florian.henry@open-concept.pro> Date: Wed, 2 Dec 2015 12:12:26 +0100 Subject: [PATCH 059/197] FIX : Use "WHERE true" instead of "WHERE 1" #4132 --- htdocs/core/class/extrafields.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index a9aba7d48d5..627114f6acb 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -765,7 +765,7 @@ class ExtraFields } else { - $sqlwhere.= ' WHERE 1'; + $sqlwhere.= ' WHERE 1=1'; } if (in_array($InfoFieldList[0],array('tablewithentity'))) $sqlwhere.= ' AND entity = '.$conf->entity; // Some tables may have field, some other not. For the moment we disable it. $sql.=$sqlwhere; -- GitLab From e1d5b4483aee4c71245caafdc9b35c821200c688 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Doursenaud?= <rdoursenaud@gpcsolutions.fr> Date: Wed, 2 Dec 2015 18:31:38 +0100 Subject: [PATCH 060/197] Fix #4137 Salaries parameter saving Button was outside of the form. --- htdocs/admin/salaries.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/admin/salaries.php b/htdocs/admin/salaries.php index 58e85dbf8d3..2d32db71af7 100644 --- a/htdocs/admin/salaries.php +++ b/htdocs/admin/salaries.php @@ -113,11 +113,11 @@ print '</tr>'; print "</table>\n"; -print '</form>'; - dol_fiche_end(); print '<div style="text-align:center"><input type="submit" class="button" value="'.$langs->trans('Modify').'" name="button"></div>'; +print '</form>'; + llxFooter(); $db->close(); -- GitLab From 134adcf6373aa859f79dc125be805fb4579516fa Mon Sep 17 00:00:00 2001 From: Bahfir Abbes <bafbes@gmail.com> Date: Wed, 2 Dec 2015 18:55:51 +0100 Subject: [PATCH 061/197] Update products.lang --- htdocs/langs/en_US/products.lang | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/langs/en_US/products.lang b/htdocs/langs/en_US/products.lang index ddda0152245..54d809dadda 100644 --- a/htdocs/langs/en_US/products.lang +++ b/htdocs/langs/en_US/products.lang @@ -309,3 +309,4 @@ PropalMergePdfProductChooseFile=Select PDF files IncludingProductWithTag=Including product/service with tag DefaultPriceRealPriceMayDependOnCustomer=Default price, real price may depend on customer WarningSelectOneDocument=Please select at least one document +DefaultUnitToShow=Units -- GitLab From 7841c97387a0a1050cc6e82cb9e1c2ac970552b5 Mon Sep 17 00:00:00 2001 From: Bahfir Abbes <bafbes@gmail.com> Date: Wed, 2 Dec 2015 19:34:02 +0100 Subject: [PATCH 062/197] Update products.lang --- htdocs/langs/fr_FR/products.lang | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/langs/fr_FR/products.lang b/htdocs/langs/fr_FR/products.lang index 455cb209986..b9f5a664fe5 100644 --- a/htdocs/langs/fr_FR/products.lang +++ b/htdocs/langs/fr_FR/products.lang @@ -297,3 +297,4 @@ PropalMergePdfProductChooseFile=Sélectionnez les fichiers PDF IncludingProductWithTag=Incluant un produit ayant le tag/catégorie DefaultPriceRealPriceMayDependOnCustomer=Prix par défaut, le prix réel peut dépendre du client WarningSelectOneDocument=Sélectionnez au moins un document +DefaultUnitToShow=Unités -- GitLab From 0c5c762c1c4833688f9b6c1c15462f13aca2a3e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Doursenaud?= <rdoursenaud@gpcsolutions.fr> Date: Wed, 2 Dec 2015 21:12:23 +0100 Subject: [PATCH 063/197] [Qual] More robust sorting Only allow valid values and discard others. Do not use user supplied data in SQL query. --- htdocs/core/db/DoliDB.class.php | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/htdocs/core/db/DoliDB.class.php b/htdocs/core/db/DoliDB.class.php index f1909a91ea0..4103b095330 100644 --- a/htdocs/core/db/DoliDB.class.php +++ b/htdocs/core/db/DoliDB.class.php @@ -221,7 +221,7 @@ abstract class DoliDB implements Database * Define sort criteria of request * * @param string $sortfield List of sort fields, separated by comma. Example: 't1.fielda, t2.fieldb' - * @param string $sortorder Sort order + * @param 'ASC'|'DESC' $sortorder Sort order * @return string String to provide syntax of a sort sql string */ function order($sortfield=null,$sortorder=null) @@ -236,9 +236,11 @@ abstract class DoliDB implements Database else $return.=','; $return.=preg_replace('/[^0-9a-z_\.]/i','',$val); - if (! empty($sortorder)) - { - $return.=' '.preg_replace('/[^0-9a-z]/i','',$sortorder); + // Only ASC and DESC values are valid SQL + if ($sortorder === 'ASC') { + $return .= ' ASC'; + } elseif ($sortorder === 'DESC') { + $return .= ' DESC'; } } return $return; -- GitLab From 574b270da0c835d2ef974787b76540ca8c7bbb36 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Wed, 2 Dec 2015 01:38:15 +0100 Subject: [PATCH 064/197] Work on the "mass action" feature. Can run mass action on result of a select. --- htdocs/compta/facture.php | 6 +- htdocs/compta/facture/class/facture.class.php | 8 +- htdocs/compta/facture/list.php | 433 +++++++++++++++++- htdocs/compta/facture/mergepdftool.php | 4 +- htdocs/core/class/html.form.class.php | 68 ++- htdocs/core/class/html.formmail.class.php | 4 +- htdocs/fourn/facture/card.php | 4 +- htdocs/langs/en_US/bills.lang | 1 + htdocs/langs/en_US/mails.lang | 7 +- htdocs/langs/en_US/main.lang | 1 + htdocs/langs/en_US/other.lang | 6 +- 11 files changed, 512 insertions(+), 30 deletions(-) diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php index 86a49f9f232..d5e99af0df6 100644 --- a/htdocs/compta/facture.php +++ b/htdocs/compta/facture.php @@ -3886,9 +3886,9 @@ else if ($id > 0 || ! empty($ref)) $formmail->withtocc = $liste; // List suggested for CC $formmail->withtoccc = $conf->global->MAIN_EMAIL_USECCC; if (empty($object->ref_client)) { - $formmail->withtopic = $outputlangs->transnoentities($topicmail, '__FACREF__'); + $formmail->withtopic = $outputlangs->transnoentities($topicmail, '__REF__'); } else if (! empty($object->ref_client)) { - $formmail->withtopic = $outputlangs->transnoentities($topicmail, '__FACREF__ (__REFCLIENT__)'); + $formmail->withtopic = $outputlangs->transnoentities($topicmail, '__REF__ (__REFCLIENT__)'); } $formmail->withfile = 2; @@ -3896,7 +3896,7 @@ else if ($id > 0 || ! empty($ref)) $formmail->withdeliveryreceipt = 1; $formmail->withcancel = 1; // Tableau des substitutions - $formmail->substit['__FACREF__'] = $object->ref; + $formmail->substit['__REF__'] = $object->ref; $formmail->substit['__SIGNATURE__'] = $user->signature; $formmail->substit['__REFCLIENT__'] = $object->ref_client; $formmail->substit['__THIRDPARTY_NAME__'] = $object->thirdparty->name; diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index b27bc9d2294..b58d2052b99 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -3687,11 +3687,9 @@ class Facture extends CommonInvoice $now = dol_now(); - //Paid invoices have status STATUS_CLOSED - if (!$this->statut != Facture::STATUS_VALIDATED) { - return false; - } - + // Paid invoices have status STATUS_CLOSED + if ($this->statut != Facture::STATUS_VALIDATED) return false; + return $this->date_lim_reglement < ($now - $conf->facture->client->warning_delay); } } diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php index 9372f50f4aa..cce908dc368 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -60,6 +60,7 @@ $id=(GETPOST('id','int')?GETPOST('id','int'):GETPOST('facid','int')); // For ba $ref=GETPOST('ref','alpha'); $socid=GETPOST('socid','int'); $action=GETPOST('action','alpha'); +$massaction=GETPOST('massaction','alpha'); $confirm=GETPOST('confirm','alpha'); $lineid=GETPOST('lineid','int'); $userid=GETPOST('userid','int'); @@ -70,6 +71,9 @@ $search_societe=GETPOST('search_societe','alpha'); $search_montant_ht=GETPOST('search_montant_ht','alpha'); $search_montant_ttc=GETPOST('search_montant_ttc','alpha'); $search_status=GETPOST('search_status','int'); +$search_paymentmode=GETPOST('search_paymentmode','int'); +$option = GETPOST('option'); +if ($option == 'late') $filter = 'paye:0'; $sortfield = GETPOST("sortfield",'alpha'); $sortorder = GETPOST("sortorder",'alpha'); @@ -94,6 +98,7 @@ $day_lim = GETPOST('day_lim','int'); $month_lim = GETPOST('month_lim','int'); $year_lim = GETPOST('year_lim','int'); $filtre = GETPOST('filtre'); +$toselect = GETPOST('toselect', 'array'); // Security check $fieldid = (! empty($ref)?'facnumber':'rowid'); @@ -122,9 +127,290 @@ if (empty($user->socid)) $fieldstosearchall["f.note_private"]="NotePrivate"; * Actions */ +if (GETPOST('cancel')) { $action='list'; $massaction=''; } + $parameters=array('socid'=>$socid); $reshook=$hookmanager->executeHooks('doActions',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); +if (empty($reshook)) +{ + // Mass actions + if (! empty($massaction) && count($toselect) < 1) + { + $error++; + setEventMessage("NoLineChecked","warnings"); + } + + if (! $error && $massaction == 'confirm_presend') + { + $resaction = ''; + $nbsent = 0; + $nbignored = 0; + $langs->load("mails"); + include_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; + + if (!isset($user->email)) + { + $error++; + setEventMessages($langs->trans("NoSenderEmailDefined"), null, 'warnings'); + } + + if (! $error) + { + $thirdparty=new Societe($db); + $objecttmp=new Facture($db); + $listofobjectid=array(); + $listofobjectthirdparties=array(); + $listofobjectref=array(); + foreach($toselect as $toselectid) + { + $objecttmp=new Facture($db); // must create new instance because instance is saved into $listofobjectref array for future use + $result=$objecttmp->fetch($toselectid); + if ($result > 0) + { + $listoinvoicesid[$toselectid]=$toselectid; + $thirdpartyid=$objecttmp->fk_soc?$objecttmp->fk_soc:$objecttmp->socid; + $listofobjectthirdparties[$thirdpartyid]=$thirdpartyid; + $listofobjectref[$thirdpartyid][$toselectid]=$objecttmp; + } + } + //var_dump($listofobjectthirdparties);exit; + + foreach ($listofobjectthirdparties as $thirdpartyid) + { + $result = $thirdparty->fetch($thirdpartyid); + if ($result < 0) + { + dol_print_error($db); + exit; + } + + // Define recipient $sendto and $sendtocc + if (trim($_POST['sendto'])) + { + // Recipient is provided into free text + $sendto = trim($_POST['sendto']); + $sendtoid = 0; + } + elseif ($_POST['receiver'] != '-1') + { + // Recipient was provided from combo list + if ($_POST['receiver'] == 'thirdparty') // Id of third party + { + $sendto = $thirdparty->email; + $sendtoid = 0; + } + else // Id du contact + { + $sendto = $thirdparty->contact_get_property((int) $_POST['receiver'],'email'); + $sendtoid = $_POST['receiver']; + } + } + if (trim($_POST['sendtocc'])) + { + $sendtocc = trim($_POST['sendtocc']); + } + elseif ($_POST['receivercc'] != '-1') + { + // Recipient was provided from combo list + if ($_POST['receivercc'] == 'thirdparty') // Id of third party + { + $sendtocc = $thirdparty->email; + } + else // Id du contact + { + $sendtocc = $thirdparty->contact_get_property((int) $_POST['receivercc'],'email'); + } + } + + //var_dump($listofobjectref[$thirdpartyid]); // Array of invoice for this thirdparty + + $attachedfiles=array('paths'=>array(), 'names'=>array(), 'mimes'=>array()); + $listofqualifiedinvoice=array(); + $listofqualifiedref=array(); + foreach($listofobjectref[$thirdpartyid] as $objectid => $object) + { + //var_dump($object); + //var_dump($thirdpartyid.' - '.$objectid.' - '.$object->statut); + + if ($object->statut != Facture::STATUS_VALIDATED) + { + $nbignored++; + continue; // Payment done or started or canceled + } + + // Read document + // TODO Use future field $object->fullpathdoc to know where is stored default file + // TODO If not defined, use $object->modelpdf (or defaut invoice config) to know what is template to use to regenerate doc. + $filename=dol_sanitizeFileName($object->ref).'.pdf'; + $filedir=$conf->facture->dir_output . '/' . dol_sanitizeFileName($object->ref); + $file = $filedir . '/' . $filename; + $mime = dol_mimetype($file); + + if (dol_is_file($file)) + { + if (empty($sendto)) // For the case, no recipient were set (multi thirdparties send) + { + $object->fetch_thirdparty(); + $sendto = $object->thirdparty->email; + } + + if (empty($sendto)) + { + //print "No recipient for thirdparty ".$object->thirdparty->name; + $nbignored++; + continue; + } + + if (dol_strlen($sendto)) + { + // Create form object + $attachedfiles=array( + 'paths'=>array_merge($attachedfiles['paths'],array($file)), + 'names'=>array_merge($attachedfiles['names'],array($filename)), + 'mimes'=>array_merge($attachedfiles['mimes'],array($mime)) + ); + } + + $listofqualifiedinvoice[$objectid]=$object; + $listofqualifiedref[$objectid]=$object->ref; + } + else + { + $nbignored++; + $langs->load("other"); + $resaction.='<div class="error">'.$langs->trans('ErrorCantReadFile',$file).'</div>'; + dol_syslog('Failed to read file: '.$file, LOG_WARNING); + continue; + } + + //var_dump($listofqualifiedref); + } + + if (count($listofqualifiedinvoice) > 0) + { + $langs->load("commercial"); + $from = $user->getFullName($langs) . ' <' . $user->email .'>'; + $replyto = $from; + $subject = GETPOST('subject'); + $message = GETPOST('message'); + $sendtocc = GETPOST('sentocc'); + $sendtobcc = (empty($conf->global->MAIN_MAIL_AUTOCOPY_INVOICE_TO)?'':$conf->global->MAIN_MAIL_AUTOCOPY_INVOICE_TO); + + $substitutionarray=array( + '__ID__' => join(', ',array_keys($listofqualifiedinvoice)), + '__EMAIL__' => $thirdparty->email, + '__CHECK_READ__' => '<img src="'.DOL_MAIN_URL_ROOT.'/public/emailing/mailing-read.php?tag='.$thirdparty->tag.'&securitykey='.urlencode($conf->global->MAILING_EMAIL_UNSUBSCRIBE_KEY).'" width="1" height="1" style="width:1px;height:1px" border="0"/>', + //'__LASTNAME__' => $obj2->lastname, + //'__FIRSTNAME__' => $obj2->firstname, + '__FACREF__' => join(', ',$listofqualifiedref), // For backward compatibility + '__REF__' => join(', ',$listofqualifiedref), + '__REFCLIENT__' => $thirdparty->name + ); + + $subject=make_substitutions($subject, $substitutionarray); + $message=make_substitutions($message, $substitutionarray); + + $filepath = $attachedfiles['paths']; + $filename = $attachedfiles['names']; + $mimetype = $attachedfiles['mimes']; + + //var_dump($filepath); + + // Send mail + require_once(DOL_DOCUMENT_ROOT.'/core/class/CMailFile.class.php'); + $mailfile = new CMailFile($subject,$sendto,$from,$message,$filepath,$mimetype,$filename,$sendtocc,$sendtobcc,$deliveryreceipt,-1); + if ($mailfile->error) + { + $resaction.='<div class="error">'.$mailfile->error.'</div>'; + } + else + { + $result=$mailfile->sendfile(); + if ($result) + { + $resaction.=$langs->trans('MailSuccessfulySent',$mailfile->getValidAddress($from,2),$mailfile->getValidAddress($sendto,2)); // Must not contain " + + $error=0; + + foreach($listofqualifiedinvoice as $invid => $object) + { + $actiontypecode='AC_FAC'; + $actionmsg=$langs->transnoentities('MailSentBy').' '.$from.' '.$langs->transnoentities('To').' '.$sendto; + if ($message) + { + if ($sendtocc) $actionmsg = dol_concatdesc($actionmsg, $langs->transnoentities('Bcc') . ": " . $sendtocc); + $actionmsg = dol_concatdesc($actionmsg, $langs->transnoentities('MailTopic') . ": " . $subject); + $actionmsg = dol_concatdesc($actionmsg, $langs->transnoentities('TextUsedInTheMessageBody') . ":"); + $actionmsg = dol_concatdesc($actionmsg, $message); + } + + // Initialisation donnees + $object->sendtoid = 0; + $object->actiontypecode = $actiontypecode; + $object->actionmsg = $actionmsg; // Long text + $object->actionmsg2 = $actionmsg2; // Short text + $object->fk_element = $invid; + $object->elementtype = $object->element; + + // Appel des triggers + include_once(DOL_DOCUMENT_ROOT . "/core/class/interfaces.class.php"); + $interface=new Interfaces($db); + $result=$interface->run_triggers('BILL_SENTBYMAIL',$object,$user,$langs,$conf); + if ($result < 0) { $error++; $this->errors=$interface->errors; } + // Fin appel triggers + + if (! $error) + { + $resaction.=$langs->trans("MailSent").': '.$sendto."<br>\n"; + } + else + { + dol_print_error($db); + } + $nbsent++; + } + } + else + { + $langs->load("other"); + if ($mailfile->error) + { + $resaction.=$langs->trans('ErrorFailedToSendMail',$from,$sendto); + $resaction.='<br><div class="error">'.$mailfile->error.'</div>'; + } + else + { + $resaction.='<div class="warning">No mail sent. Feature is disabled by option MAIN_DISABLE_ALL_MAILS</div>'; + } + } + } + } + } + + $resaction.=($resaction?'<br>':$resaction); + $resaction.='<strong>'.$langs->trans("ResultOfMailSending").':</strong><br>'."\n"; + $resaction.=$langs->trans("NbSelected").': '.count($toselect)."\n<br>"; + $resaction.=$langs->trans("NbIgnored").': '.($nbignored?$nbignored:0)."\n<br>"; + $resaction.=$langs->trans("NbSent").': '.($nbsent?$nbsent:0)."\n<br>"; + + if ($nbsent) + { + $action=''; // Do not show form post if there was at least one successfull sent + setEventMessages($langs->trans("EMailSentToNRecipients", $nbsent.'/'.count($toselect)), null, 'mesgs'); + setEventMessages($resaction, null, 'mesgs'); + } + else + { + //setEventMessages($langs->trans("EMailSentToNRecipients", 0), null, 'warnings'); // May be object has no generated PDF file + setEventMessages($resaction, null, 'warnings'); + } + } + + $action='list'; + $massaction=''; + } +} // Do we click on purge search criteria ? if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both test are required to be compatible with all browsers @@ -139,9 +425,13 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both $search_montant_ht=''; $search_montant_ttc=''; $search_status=''; + $search_paymentmode=''; $day=''; $year=''; $month=''; + $toselect=''; + $option=''; + $filter=''; } @@ -160,7 +450,7 @@ $facturestatic=new Facture($db); $sql = 'SELECT'; if ($sall || $search_product_category > 0) $sql = 'SELECT DISTINCT'; -$sql.= ' f.rowid as facid, f.facnumber, f.ref_client, f.type, f.note_private, f.increment, f.total as total_ht, f.tva as total_tva, f.total_ttc,'; +$sql.= ' f.rowid as facid, f.facnumber, f.ref_client, f.type, f.note_private, f.increment, f.fk_mode_reglement, f.total as total_ht, f.tva as total_tva, f.total_ttc,'; $sql.= ' f.datef as df, f.date_lim_reglement as datelimite,'; $sql.= ' f.paye as paye, f.fk_statut,'; $sql.= ' s.nom as name, s.rowid as socid, s.code_client, s.client '; @@ -203,6 +493,7 @@ if ($search_societe) $sql .= natural_search('s.nom', $search_societe); if ($search_montant_ht != '') $sql.= natural_search('f.total', $search_montant_ht, 1); if ($search_montant_ttc != '') $sql.= natural_search('f.total_ttc', $search_montant_ttc, 1); if ($search_status != '' && $search_status >= 0) $sql.= " AND f.fk_statut = ".$db->escape($search_status); +if ($search_paymentmode > 0) $sql .= " AND f.fk_mode_reglement = ".$search_paymentmode.""; if ($month > 0) { if ($year > 0 && empty($day)) @@ -229,6 +520,8 @@ else if ($year_lim > 0) { $sql.= " AND f.date_lim_reglement BETWEEN '".$db->idate(dol_get_first_day($year_lim,1,false))."' AND '".$db->idate(dol_get_last_day($year_lim,12,false))."'"; } +if ($option == 'late') $sql.=" AND f.date_lim_reglement < '".$db->idate(dol_now() - $conf->facture->client->warning_delay)."'"; +if ($filter == 'paye:0') $sql.= " AND f.fk_statut = 1"; if ($search_sale > 0) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$search_sale; if ($search_user > 0) { @@ -265,6 +558,8 @@ if ($resql) { $num = $db->num_rows($resql); + $arrayofselected=is_array($toselect)?$toselect:array(); + if ($socid) { $soc = new Societe($db); @@ -282,10 +577,113 @@ if ($resql) if ($search_montant_ht != '') $param.='&search_montant_ht='.$search_montant_ht; if ($search_montant_ttc != '') $param.='&search_montant_ttc='.$search_montant_ttc; if ($search_status != '') $param.='&search_status='.$search_status; - print_barre_liste($langs->trans('BillsCustomers').' '.($socid?' '.$soc->name:''),$page,$_SERVER["PHP_SELF"],$param,$sortfield,$sortorder,'',$num,$nbtotalofrecords,'title_accountancy.png'); - + if ($search_paymentmode > 0) $param.='search_paymentmode='.$search_paymentmode; + $param.=(! empty($option)?"&option=".$option:""); + + $massactionbutton=$form->selectMassAction('', $massaction ? array() : array('presend'=>$langs->trans("SendByMail"))); + $i = 0; - print '<form method="GET" action="'.$_SERVER["PHP_SELF"].'">'."\n"; + print '<form method="POST" name="searchFormList" action="'.$_SERVER["PHP_SELF"].'">'."\n"; + + print_barre_liste($langs->trans('BillsCustomers').' '.($socid?' '.$soc->name:''),$page,$_SERVER["PHP_SELF"],$param,$sortfield,$sortorder,$massactionbutton,$num,$nbtotalofrecords,'title_accountancy.png'); + + if ($massaction == 'presend') + { + $langs->load("mails"); + + if (! GETPOST('cancel')) + { + $objecttmp=new Facture($db); + $listofselectedid=array(); + $listofselectedthirdparties=array(); + $listofselectedref=array(); + foreach($arrayofselected as $toselectid) + { + $result=$objecttmp->fetch($toselectid); + if ($result > 0) + { + $listofselectedid[$toselectid]=$toselectid; + $thirdpartyid=$objecttmp->fk_soc?$objecttmp->fk_soc:$objecttmp->socid; + $listofselectedthirdparties[$thirdpartyid]=$thirdpartyid; + $listofselectedref[$thirdpartyid][$toselectid]=$objecttmp->ref; + } + } + } + + print '<input type="hidden" name="massaction" value="confirm_presend">'; + + include_once DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php'; + $formmail = new FormMail($db); + + dol_fiche_head(null, '', $langs->trans("SendByMail")); + + $topicmail="SendBillRef"; + $modelmail="facture_send"; + + // Cree l'objet formulaire mail + include_once DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php'; + $formmail = new FormMail($db); + $formmail->withform=-1; + $formmail->fromtype = 'user'; + $formmail->fromid = $user->id; + $formmail->fromname = $user->getFullName($langs); + $formmail->frommail = $user->email; + if (! empty($conf->global->MAIN_EMAIL_ADD_TRACK_ID) && ($conf->global->MAIN_EMAIL_ADD_TRACK_ID & 1)) // If bit 1 is set + { + $formmail->trackid='inv'.$object->id; + } + if (! empty($conf->global->MAIN_EMAIL_ADD_TRACK_ID) && ($conf->global->MAIN_EMAIL_ADD_TRACK_ID & 2)) // If bit 2 is set + { + include DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; + $formmail->frommail=dolAddEmailTrackId($formmail->frommail, 'inv'.$object->id); + } + $formmail->withfrom=1; + $liste=$langs->trans("AllRecipientSelected"); + if (count($listofselectedthirdparties) == 1) + { + $liste=array(); + $thirdpartyid=array_shift($listofselectedthirdparties); + $soc=new Societe($db); + $soc->fetch($thirdpartyid); + foreach ($soc->thirdparty_and_contact_email_array(1) as $key=>$value) + { + $liste[$key]=$value; + } + $formmail->withtoreadonly=0; + } + else + { + $formmail->withtoreadonly=1; + } + $formmail->withto=$liste; + $formmail->withtofree=0; + $formmail->withtocc=1; + $formmail->withtoccc=$conf->global->MAIN_EMAIL_USECCC; + $formmail->withtopic=$langs->transnoentities($topicmail, '__REF__', '__REFCLIENT__'); + $formmail->withfile=$langs->trans("EachInvoiceWillBeAttachedToEmail"); + $formmail->withbody=1; + $formmail->withdeliveryreceipt=1; + $formmail->withcancel=1; + // Tableau des substitutions + $formmail->substit['__REF__']='__REF__'; // We want to keep the tag + $formmail->substit['__SIGNATURE__']=$user->signature; + $formmail->substit['__REFCLIENT__']='__REFCLIENT__'; // We want to keep the tag + $formmail->substit['__PERSONALIZED__']=''; + $formmail->substit['__CONTACTCIVNAME__']=''; + + // Tableau des parametres complementaires du post + $formmail->param['action']=$action; + $formmail->param['models']=$modelmail; + $formmail->param['models_id']=GETPOST('modelmailselected','int'); + $formmail->param['facid']=join(',',$arrayofselected); + //$formmail->param['returnurl']=$_SERVER["PHP_SELF"].'?id='.$object->id; + + print $formmail->get_form(); + + dol_fiche_end(); + } + + if ($optioncss != '') print '<input type="hidden" name="optioncss" value="'.$optioncss.'">'; print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; print '<input type="hidden" name="action" value="list">'; @@ -347,8 +745,9 @@ if ($resql) print_liste_field_titre($langs->trans('Date'),$_SERVER['PHP_SELF'],'f.datef','',$param,'align="center"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("DateDue"),$_SERVER['PHP_SELF'],"f.date_lim_reglement",'',$param,'align="center"',$sortfield,$sortorder); print_liste_field_titre($langs->trans('ThirdParty'),$_SERVER['PHP_SELF'],'s.nom','',$param,'',$sortfield,$sortorder); + print_liste_field_titre($langs->trans("PaymentModeShort"),$_SERVER["PHP_SELF"],"f.fk_reglement_mode","",$param,"",$sortfield,$sortorder); print_liste_field_titre($langs->trans('AmountHT'),$_SERVER['PHP_SELF'],'f.total','',$param,'align="right"',$sortfield,$sortorder); - print_liste_field_titre($langs->trans('AmountVAT'),$_SERVER['PHP_SELF'],'f.tva','',$param,'align="right"',$sortfield,$sortorder); + print_liste_field_titre($langs->trans('Taxes'),$_SERVER['PHP_SELF'],'f.tva','',$param,'align="right"',$sortfield,$sortorder); print_liste_field_titre($langs->trans('AmountTTC'),$_SERVER['PHP_SELF'],'f.total_ttc','',$param,'align="right"',$sortfield,$sortorder); print_liste_field_titre($langs->trans('Received'),$_SERVER['PHP_SELF'],'am','',$param,'align="right"',$sortfield,$sortorder); print_liste_field_titre($langs->trans('Status'),$_SERVER['PHP_SELF'],'fk_statut,paye,am','',$param,'align="right"',$sortfield,$sortorder); @@ -372,8 +771,12 @@ if ($resql) if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print '<input class="flat" type="text" size="1" maxlength="2" name="day_lim" value="'.$day_lim.'">'; print '<input class="flat" type="text" size="1" maxlength="2" name="month_lim" value="'.$month_lim.'">'; $formother->select_year($year_lim?$year_lim:-1,'year_lim',1, 20, 5); + print '<br><input type="checkbox" name="option" value="late"'.($option == 'late'?' checked':'').'> '.$langs->trans("Late"); print '</td>'; print '<td class="liste_titre" align="left"><input class="flat" type="text" size="8" name="search_societe" value="'.$search_societe.'"></td>'; + print '<td class="liste_titre" align="left">'; + $form->select_types_paiements($search_paymentmode, 'search_paymentmode', '', 0, 0, 1, 10); + print '</td>'; print '<td class="liste_titre" align="right"><input class="flat" type="text" size="6" name="search_montant_ht" value="'.$search_montant_ht.'"></td>'; print '<td class="liste_titre"></td>'; print '<td class="liste_titre" align="right"><input class="flat" type="text" size="6" name="search_montant_ttc" value="'.$search_montant_ttc.'"></td>'; @@ -407,8 +810,8 @@ if ($resql) $facturestatic->id=$objp->facid; $facturestatic->ref=$objp->facnumber; $facturestatic->type=$objp->type; - $facturestatic->statut = $objp->fk_statut; - $facturestatic->date_lim_reglement = $db->jdate($objp->datelimite); + $facturestatic->statut=$objp->fk_statut; + $facturestatic->date_lim_reglement=$db->jdate($objp->datelimite); $notetoshow=dol_string_nohtmltag(($user->societe_id>0?$objp->note_public:$objp->note),1); $paiement = $facturestatic->getSommePaiement(); @@ -463,6 +866,11 @@ if ($resql) print $thirdparty->getNomUrl(1,'customer'); print '</td>'; + // Payment mode + print '<td>'; + $form->form_modes_reglement($_SERVER['PHP_SELF'], $objp->fk_mode_reglement, 'none'); + print '</td>'; + print '<td align="right">'.price($objp->total_ht,0,$langs).'</td>'; print '<td align="right">'.price($objp->total_tva,0,$langs).'</td>'; @@ -471,12 +879,17 @@ if ($resql) print '<td align="right">'.(! empty($paiement)?price($paiement,0,$langs):' ').'</td>'; - // Affiche statut de la facture + // Status print '<td align="right" class="nowrap">'; print $facturestatic->LibStatut($objp->paye,$objp->fk_statut,5,$paiement,$objp->type); print "</td>"; - print "<td></td>"; + // Checkbox + print '<td class="nowrap" align="center">'; + $selected=0; + if (in_array($objp->facid, $arrayofselected)) $selected=1; + print '<input id="cb'.$objp->facid.'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$objp->facid.'"'.($selected?' checked="checked"':'').'>'; + print '</td>' ; print "</tr>\n"; $total_ht+=$objp->total_ht; @@ -490,7 +903,7 @@ if ($resql) { // Print total print '<tr class="liste_total">'; - print '<td class="liste_total" colspan="5" align="left">'.$langs->trans('Total').'</td>'; + print '<td class="liste_total" colspan="6" align="left">'.$langs->trans('Total').'</td>'; print '<td class="liste_total" align="right">'.price($total_ht,0,$langs).'</td>'; print '<td class="liste_total" align="right">'.price($total_tva,0,$langs).'</td>'; print '<td class="liste_total" align="right">'.price($total_ttc,0,$langs).'</td>'; diff --git a/htdocs/compta/facture/mergepdftool.php b/htdocs/compta/facture/mergepdftool.php index 968ab8543c2..f79621a4d87 100644 --- a/htdocs/compta/facture/mergepdftool.php +++ b/htdocs/compta/facture/mergepdftool.php @@ -590,13 +590,13 @@ if ($resql) $formmail->withtoreadonly=1; $formmail->withtocc=1; $formmail->withtoccc=$conf->global->MAIN_EMAIL_USECCC; - $formmail->withtopic=$langs->transnoentities($topicmail, '__FACREF__', '__REFCLIENT__'); + $formmail->withtopic=$langs->transnoentities($topicmail, '__REF__', '__REFCLIENT__'); $formmail->withfile=$langs->trans("EachInvoiceWillBeAttachedToEmail"); $formmail->withbody=1; $formmail->withdeliveryreceipt=1; $formmail->withcancel=1; // Tableau des substitutions - //$formmail->substit['__FACREF__']=''; + //$formmail->substit['__REF__']=''; $formmail->substit['__SIGNATURE__']=$user->signature; //$formmail->substit['__REFCLIENT__']=''; $formmail->substit['__PERSONALIZED__']=''; diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 593d4100c22..3e58a43f43a 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -482,6 +482,72 @@ class Form return $this->textwithtooltip($text, $htmltext, 2, $direction, $img, $extracss, $notabs, '', $noencodehtmltext); } + /** + * Generate select HTML to choose massaction + * + * @parama string $selected Selected value + * @param int $arrayofaction array('code'=>'label', ...) + * @param string Select list + */ + function selectMassAction($selected, $arrayofaction) + { + global $conf,$langs,$hookmanager; + + if (count($arrayofaction) == 0) return; + + $disabled=0; + $ret='<div class="centpercent center"><select class="flat hideobject massaction massactionselect" name="massaction"'.($disabled?' disabled="disabled"':'').'>'; + $ret.='<option value="0"'.($disabled?' disabled="disabled"':'').'>-- '.$langs->trans("SelectAction").' --</option>'; + foreach($arrayofaction as $code => $label) + { + $ret.='<option value="'.$code.'"'.($disabled?' disabled="disabled"':'').'>'.$label.'</option>'; + } + $ret.='</select>'; + $ret.='<input type="submit" name="confirmmassaction" disabled="disabled" class="button hideobject massaction massactionconfirmed" value="'.dol_escape_htmltag($langs->trans("Confirm")).'">'; + $ret.='</div>'; + + $ret.='<!-- JS CODE TO ENABLE mass action select --> + <script type="text/javascript"> + jQuery(document).ready(function () { + function initCheckForSelect() + { + atleastoneselected=0; + jQuery(".checkforselect").each(function( index ) { + /* console.log( index + ": " + $( this ).text() ); */ + if ($(this).is(\':checked\')) atleastoneselected++; + }); + console.log(atleastoneselected); + if (atleastoneselected) + { + jQuery(".massaction").show(); + } + else + { + jQuery(".massaction").hide(); + } + } + initCheckForSelect(); + jQuery(".checkforselect").click(function() { + initCheckForSelect(); + }); + jQuery(".massactionselect").change(function() { + console.log( $( this ).val() ); + if ($(this).val() != \'0\') + { + jQuery(".massactionconfirmed").prop(\'disabled\', false); + } + else + { + jQuery(".massactionconfirmed").prop(\'disabled\', true); + } + }); + }); + </script> + '; + + return $ret; + } + /** * Return combo list of activated countries, into language of user * @@ -2648,7 +2714,7 @@ class Form * @param int $maxlength Max length of label * @return void */ - function select_types_paiements($selected='',$htmlname='paiementtype',$filtertype='',$format=0, $empty=0, $noadmininfo=0,$maxlength=0) + function select_types_paiements($selected='', $htmlname='paiementtype', $filtertype='', $format=0, $empty=0, $noadmininfo=0, $maxlength=0) { global $langs,$user; diff --git a/htdocs/core/class/html.formmail.class.php b/htdocs/core/class/html.formmail.class.php index 1f0cb5c6e28..c9e8ab7899d 100644 --- a/htdocs/core/class/html.formmail.class.php +++ b/htdocs/core/class/html.formmail.class.php @@ -648,7 +648,7 @@ class FormMail extends Form } if ($this->param["models"]=='facture_send') { - $url=getPaypalPaymentUrl(0,'invoice',$this->substit['__FACREF__']); + $url=getPaypalPaymentUrl(0,'invoice',$this->substit['__REF__']); $this->substit['__PERSONALIZED__']=str_replace('\n',"\n",$langs->transnoentitiesnoconv("PredefinedMailContentLink",$url)); } } @@ -692,7 +692,7 @@ class FormMail extends Form else $this->withfckeditor=0; } - $doleditor=new DolEditor('message',$defaultmessage,'',280,$this->ckeditortoolbar,'In',true,true,$this->withfckeditor,8,72); + $doleditor=new DolEditor('message',$defaultmessage,'',280,$this->ckeditortoolbar,'In',true,true,$this->withfckeditor,8,'95%'); $out.= $doleditor->Create(1); } $out.= "</td></tr>\n"; diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index fe6582fd355..82cdbe03b64 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -2338,13 +2338,13 @@ else $formmail->withto=GETPOST("sendto")?GETPOST("sendto"):$liste; $formmail->withtocc=$liste; $formmail->withtoccc=$conf->global->MAIN_EMAIL_USECCC; - $formmail->withtopic=$outputlangs->trans('SendBillRef','__FACREF__'); + $formmail->withtopic=$outputlangs->trans('SendBillRef','__REF__'); $formmail->withfile=2; $formmail->withbody=1; $formmail->withdeliveryreceipt=1; $formmail->withcancel=1; // Tableau des substitutions - $formmail->substit['__FACREF__']=$object->ref; + $formmail->substit['__REF__']=$object->ref; $formmail->substit['__SIGNATURE__']=$user->signature; $formmail->substit['__PERSONALIZED__']=''; $formmail->substit['__CONTACTCIVNAME__']=''; diff --git a/htdocs/langs/en_US/bills.lang b/htdocs/langs/en_US/bills.lang index c347c7a0336..a567fd4f062 100644 --- a/htdocs/langs/en_US/bills.lang +++ b/htdocs/langs/en_US/bills.lang @@ -74,6 +74,7 @@ PaymentsAlreadyDone=Payments already done PaymentsBackAlreadyDone=Payments back already done PaymentRule=Payment rule PaymentMode=Payment type +PaymentModeShort=Payment type PaymentTerm=Payment term PaymentConditions=Payment terms PaymentConditionsShort=Payment terms diff --git a/htdocs/langs/en_US/mails.lang b/htdocs/langs/en_US/mails.lang index df5ad878657..bda203ce05f 100644 --- a/htdocs/langs/en_US/mails.lang +++ b/htdocs/langs/en_US/mails.lang @@ -84,9 +84,12 @@ EachInvoiceWillBeAttachedToEmail=A document using default invoice document templ MailTopicSendRemindUnpaidInvoices=Reminder of invoice %s (%s) SendRemind=Send reminder by EMails RemindSent=%s reminder(s) sent -AllRecipientSelectedForRemind=All thirdparties selected and if an email is set. +AllRecipientSelected=All thirdparties selected and if an email is set. NoRemindSent=No EMail reminder sent -ResultOfMassSending=Result of mass EMail reminders sending +ResultOfMailSending=Result of mass EMail sending +NbSelected=Nb selected +NbIgnored=Nb ignored +NbSent=Nb sent # Libelle des modules de liste de destinataires mailing MailingModuleDescContactCompanies=Contacts/addresses of all third parties (customer, prospect, supplier, ...) diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index 070bc5c3d56..db1cebac45d 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -698,6 +698,7 @@ Deductible=Deductible from=from toward=toward Access=Access +SelectAction=Select action HelpCopyToClipboard=Use Ctrl+C to copy to clipboard SaveUploadedFileWithMask=Save file on server with name "<strong>%s</strong>" (otherwise "%s") OriginFileName=Original filename diff --git a/htdocs/langs/en_US/other.lang b/htdocs/langs/en_US/other.lang index 1ff53d36797..d2faa9baae5 100644 --- a/htdocs/langs/en_US/other.lang +++ b/htdocs/langs/en_US/other.lang @@ -58,13 +58,13 @@ Miscellaneous=Miscellaneous NbOfActiveNotifications=Number of notifications (nb of recipient emails) PredefinedMailTest=This is a test mail.\nThe two lines are separated by a carriage return.\n\n__SIGNATURE__ PredefinedMailTestHtml=This is a <b>test</b> mail (the word test must be in bold).<br>The two lines are separated by a carriage return.<br><br>__SIGNATURE__ -PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ -PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nWe would like to warn you that the invoice __FACREF__ seems to not being payed. So this is the invoice in attachment again, as a reminder.\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __REF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nWe would like to warn you that the invoice __REF__ seems to not being payed. So this is the invoice in attachment again, as a reminder.\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nYou will find here the commercial proposal __PROPREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierProposal=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nYou will find here the order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nYou will find here our order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ -PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __REF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendShipping=__CONTACTCIVNAME__\n\nYou will find here the shipping __SHIPPINGREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendFichInter=__CONTACTCIVNAME__\n\nYou will find here the intervention __FICHINTERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentThirdparty=__CONTACTCIVNAME__\n\n__PERSONALIZED__\n\n__SIGNATURE__ -- GitLab From 9aaab2c1dc4049c10041d7a669702fce3a4d8472 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Wed, 2 Dec 2015 23:20:19 +0100 Subject: [PATCH 065/197] Work on select fields on project list --- htdocs/projet/list.php | 67 ++++++++++++++++++++++++++++++++--------- htdocs/societe/list.php | 10 +++--- 2 files changed, 58 insertions(+), 19 deletions(-) diff --git a/htdocs/projet/list.php b/htdocs/projet/list.php index c4e8b8f5783..a50595db609 100644 --- a/htdocs/projet/list.php +++ b/htdocs/projet/list.php @@ -84,8 +84,58 @@ $syear = GETPOST('syear','int'); if ($search_status == '') $search_status=-1; // -1 or 1 -// Purge criteria -if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both test are required to be compatible with all browsers +// Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array +$contextpage='projectlist'; + +// Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array +$hookmanager->initHooks(array($contextpage)); +$extrafields = new ExtraFields($db); + +// fetch optionals attributes and labels +$extralabels = $extrafields->fetch_name_optionals_label('project'); +$search_array_options=$extrafields->getOptionalsFromPost($extralabels,'','search_'); + +// List of fields to search into when doing a "search in all" +$fieldstosearchall = array( + 'p.ref'=>"Ref", + 'p.title'=>"Label", + 's.nom'=>"ThirdPartyName", + "p.note_public"=>"NotePublic" +); +if (empty($user->socid)) $fieldstosearchall["p.note_private"]="NotePrivate"; + +$arrayfields=array( + 'p.ref'=>array('label'=>$langs->trans("Ref"), 'checked'=>1), + 'p.label'=>array('label'=>$langs->trans("Label"), 'checked'=>1), + 's.nom'=>array('label'=>$langs->trans("ThirdParty"), 'checked'=>1), + 'commerical'=>array('label'=>$langs->trans("SaleRepresentative"), 'checked'=>1), + 'p.date_start'=>array('label'=>$langs->trans("DateStart"), 'checked'=>1, 'position'=>100), + 'p.date_end'=>array('label'=>$langs->trans("DateEnd"), 'checked'=>1, 'position'=>101), + 'p.visibility'=>array('label'=>$langs->trans("Visibility"), 'checked'=>1, 'position'=>102), + 'p.opportunity_amount'=>array('label'=>$langs->trans("OpportunityAmount"), 'checked'=>1, 'enabled'=>$conf->global->PROJECT_USE_OPPORTUNITIES, 'position'=>103), + 'p.opportunity_status'=>array('label'=>$langs->trans("OpportunityStatus"), 'checked'=>1, 'enabled'=>$conf->global->PROJECT_USE_OPPORTUNITIES, 'position'=>104), + 'p.datec'=>array('label'=>$langs->trans("DateCreation"), 'checked'=>0, 'position'=>500), + 'p.tms'=>array('label'=>$langs->trans("DateModificationShort"), 'checked'=>0, 'position'=>500), + 'p.status'=>array('label'=>$langs->trans("Status"), 'checked'=>1, 'position'=>1000), +); +// Extra fields +if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) +{ + foreach($extrafields->attribute_label as $key => $val) + { + $arrayfields["ef.".$key]=array('label'=>$extrafields->attribute_label[$key], 'checked'=>$extrafields->attribute_list[$key], 'position'=>$extrafields->attribute_pos[$key], 'enabled'=>$extrafields->attribute_perms[$key]); + } +} + + +/* + * Actions + */ + +include DOL_DOCUMENT_ROOT.'/core/actions_changeselectedfields.inc.php'; + +// Do we click on purge search criteria ? +if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter.x") || GETPOST("button_removefilter")) // Both test are required to be compatible with all browsers { $search_all=''; $search_ref=""; @@ -103,20 +153,9 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both $sday=""; $smonth=""; $syear=""; + $search_array_options=array(); } -// Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array -$hookmanager->initHooks(array('projectlist')); -$extrafields = new ExtraFields($db); - -// List of fields to search into when doing a "search in all" -$fieldstosearchall = array( - 'p.ref'=>"Ref", - 'p.title'=>"Label", - 's.nom'=>"ThirdPartyName", - "p.note_public"=>"NotePublic" -); -if (empty($user->socid)) $fieldstosearchall["p.note_private"]="NotePrivate"; /* diff --git a/htdocs/societe/list.php b/htdocs/societe/list.php index 8477eb97788..ef64761ab6f 100644 --- a/htdocs/societe/list.php +++ b/htdocs/societe/list.php @@ -634,14 +634,14 @@ if ($resql) if (! empty($arrayfields['s.town']['checked'])) { print '<td class="liste_titre">'; - print '<input class="flat" size="8" type="text" name="search_town" value="'.dol_escape_htmltag($search_town).'">'; + print '<input class="flat" size="6" type="text" name="search_town" value="'.dol_escape_htmltag($search_town).'">'; print '</td>'; } // Zip if (! empty($arrayfields['s.zip']['checked'])) { print '<td class="liste_titre">'; - print '<input class="flat" size="8" type="text" name="search_zip" value="'.dol_escape_htmltag($search_zip).'">'; + print '<input class="flat" size="4" type="text" name="search_zip" value="'.dol_escape_htmltag($search_zip).'">'; print '</td>'; } // Country @@ -966,21 +966,21 @@ if ($resql) // Date creation if (! empty($arrayfields['s.datec']['checked'])) { - print '<td align="center">'; + print '<td align="center" class="nowrap">'; print dol_print_date($db->jdate($obj->date_creation), 'dayhour'); print '</td>'; } // Date modification if (! empty($arrayfields['s.tms']['checked'])) { - print '<td align="center">'; + print '<td align="center" class="nowrap">'; print dol_print_date($db->jdate($obj->date_update), 'dayhour'); print '</td>'; } // Status if (! empty($arrayfields['s.status']['checked'])) { - print '<td align="center">'.$companystatic->getLibStatut(3).'</td>'; + print '<td align="center" class="nowrap">'.$companystatic->getLibStatut(3).'</td>'; } // Action column print '<td></td>'; -- GitLab From c664a492e631ace92ee325d1bf875ecf935c52bd Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Thu, 3 Dec 2015 10:01:40 +0100 Subject: [PATCH 066/197] Removed a not used field making mysql error (reserved word). Also this field is not required by dolibarr core. --- htdocs/install/mysql/tables/llx_product.sql | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/htdocs/install/mysql/tables/llx_product.sql b/htdocs/install/mysql/tables/llx_product.sql index e34ae887ffc..3259fa360b9 100755 --- a/htdocs/install/mysql/tables/llx_product.sql +++ b/htdocs/install/mysql/tables/llx_product.sql @@ -31,7 +31,6 @@ create table llx_product datec datetime, tms timestamp, - virtual tinyint DEFAULT 0 NOT NULL, -- Not used. Used by external modules. Value 0 for physical product, 1 for virtual product fk_parent integer DEFAULT 0, -- Not used. Used by external modules. Virtual product id label varchar(255) NOT NULL, @@ -76,7 +75,7 @@ create table llx_product fifo double(24,8), -- To store valuation of stock calculated using fifo method, for this product lifo double(24,8), -- To store valuation of stock calculated using lifo method, for this product canvas varchar(32) DEFAULT NULL, - finished tinyint DEFAULT NULL, + finished tinyint DEFAULT NULL, -- 1=manufactured product, 0=matiere premiere hidden tinyint DEFAULT 0, -- Not used. Deprecated. import_key varchar(14), -- Import key fk_price_expression integer, -- Link to the rule for dynamic price calculation -- GitLab From cb8227f0861d7b7836fa233ed6acfb3fdb3e8b47 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Thu, 3 Dec 2015 10:04:13 +0100 Subject: [PATCH 067/197] Fix syntax error --- htdocs/core/class/extrafields.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index 6a397c1245f..399d148220c 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -1552,7 +1552,7 @@ class ExtraFields { $value_arr=GETPOST($keysuffix."options_".$key.$keyprefix); // Make sure we get an array even if there's only one checkbox - $value_arr=(array)$value_arr + $value_arr=(array) $value_arr; $value_key=implode(',', $value_arr); } else if (in_array($key_type,array('price','double'))) -- GitLab From 281eaf2987df657006059d1d24acf73fda0a1607 Mon Sep 17 00:00:00 2001 From: Florian HENRY <florian.henry@open-concept.pro> Date: Thu, 3 Dec 2015 10:27:23 +0100 Subject: [PATCH 068/197] FIX : Use "WHERE true" instead of "WHERE 1" #4132 --- htdocs/core/class/extrafields.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index 5d04b9c9317..8df0e0fcbc2 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -818,7 +818,7 @@ class ExtraFields } else { - $sqlwhere.= ' WHERE 1'; + $sqlwhere.= ' WHERE 1=1'; } if (in_array($InfoFieldList[0],array('tablewithentity'))) $sqlwhere.= ' AND entity = '.$conf->entity; // Some tables may have field, some other not. For the moment we disable it. $sql.=$sqlwhere; -- GitLab From 33e73afda6aaf1fd225e803cd4fcd24ec46a8412 Mon Sep 17 00:00:00 2001 From: Florian HENRY <florian.henry@open-concept.pro> Date: Thu, 3 Dec 2015 10:51:03 +0100 Subject: [PATCH 069/197] FIX : Cannot change the date of a contract #4088 --- htdocs/contrat/card.php | 37 ++++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/htdocs/contrat/card.php b/htdocs/contrat/card.php index 5ddb0b343fa..e0d08dbc1fa 100644 --- a/htdocs/contrat/card.php +++ b/htdocs/contrat/card.php @@ -830,7 +830,7 @@ if (empty($reshook)) setEventMessages($object->error, $object->errors, 'errors'); } - $result = $object->setValueFrom('ref',GETPOST('ref','alpha'));; + $result = $object->setValueFrom('ref',GETPOST('ref','alpha')); if ($result < 0) { setEventMessages($object->error, $object->errors, 'errors'); $action = 'editref'; @@ -843,6 +843,30 @@ if (empty($reshook)) header("Location: " . $_SERVER['PHP_SELF'] . "?id=" . $id); exit; } + } + elseif ($action=='setdate_contrat') + { + $cancelbutton = GETPOST('cancel'); + + if (!$cancelbutton) { + $result = $object->fetch($id); + if ($result < 0) { + setEventMessages($object->error, $object->errors, 'errors'); + } + $datacontrat=dol_mktime(GETPOST('date_contrathour'), GETPOST('date_contratmin'), 0, GETPOST('date_contratmonth'), GETPOST('date_contratday'), GETPOST('date_contratyear')); + $result = $object->setValueFrom('date_contrat',$datacontrat,'',null,'date'); + if ($result < 0) { + setEventMessages($object->error, $object->errors, 'errors'); + $action = 'editdate_contrat'; + } else { + header("Location: " . $_SERVER['PHP_SELF'] . "?id=" . $object->id); + exit; + } + } + else { + header("Location: " . $_SERVER['PHP_SELF'] . "?id=" . $id); + exit; + } } // Generation doc (depuis lien ou depuis cartouche doc) @@ -1278,8 +1302,15 @@ else print "</td></tr>"; // Date - print '<tr><td>'.$langs->trans("Date").'</td>'; - print '<td colspan="3">'.dol_print_date($object->date_contrat,"dayhour")."</td></tr>\n"; + print '<tr>'; + print '<td width="20%">'; + print $form->editfieldkey("Date",'date_contrat',$object->date_contrat,$object,$user->rights->contrat->creer); + print '</td><td>'; + print $form->editfieldval("Date",'date_contrat',$object->date_contrat,$object,$user->rights->contrat->creer,'datehourpicker'); + print '</td>'; + print '</tr>'; + /* print '<tr><td>'.$langs->trans("Date").'</td>'; + print '<td colspan="3">'.dol_print_date($object->date_contrat,"dayhour")."</td></tr>\n";*/ // Projet if (! empty($conf->projet->enabled)) -- GitLab From b4160c7f81536d2f91afbfca528eac6f49017355 Mon Sep 17 00:00:00 2001 From: Florian HENRY <florian.henry@open-concept.pro> Date: Thu, 3 Dec 2015 10:58:06 +0100 Subject: [PATCH 070/197] Cannot change the date of a contract #4088 --- htdocs/comm/card.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/htdocs/comm/card.php b/htdocs/comm/card.php index a9164676716..7b2cee3b91d 100644 --- a/htdocs/comm/card.php +++ b/htdocs/comm/card.php @@ -762,7 +762,7 @@ if ($id > 0) { $contratstatic=new Contrat($db); - $sql = "SELECT s.nom, s.rowid, c.rowid as id, c.ref as ref, c.statut, c.datec as dc"; + $sql = "SELECT s.nom, s.rowid, c.rowid as id, c.ref as ref, c.statut, c.datec as dc, c.date_contrat as dcon"; $sql.= " FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."contrat as c"; $sql.= " WHERE c.fk_soc = s.rowid "; $sql.= " AND s.rowid = ".$object->id; @@ -779,7 +779,7 @@ if ($id > 0) print '<table class="noborder" width="100%">'; print '<tr class="liste_titre">'; - print '<td colspan="4"><table width="100%" class="nobordernopadding"><tr><td>'.$langs->trans("LastContracts",($num<=$MAXLIST?"":$MAXLIST)).'</td>'; + print '<td colspan="5"><table width="100%" class="nobordernopadding"><tr><td>'.$langs->trans("LastContracts",($num<=$MAXLIST?"":$MAXLIST)).'</td>'; print '<td align="right"><a href="'.DOL_URL_ROOT.'/contrat/list.php?socid='.$object->id.'">'.$langs->trans("AllContracts").' <span class="badge">'.$num.'</span></a></td></tr></table></td>'; print '</tr>'; } @@ -797,6 +797,7 @@ if ($id > 0) print $contrat->getNomUrl(1,12); print "</td>\n"; print '<td align="right" width="80">'.dol_print_date($db->jdate($objp->dc),'day')."</td>\n"; + print '<td align="right" width="80">'.dol_print_date($db->jdate($objp->dcon),'day')."</td>\n"; print '<td width="20"> </td>'; print '<td align="right" class="nowrap">'; $contrat->fetch_lines(); -- GitLab From ee08c4afc4ee134683638fbc2e8c11b401850f03 Mon Sep 17 00:00:00 2001 From: Florian HENRY <florian.henry@open-concept.pro> Date: Thu, 3 Dec 2015 11:03:40 +0100 Subject: [PATCH 071/197] Display the ref_supplier inside the contract list of /comm/card.php #4090 --- htdocs/comm/card.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/htdocs/comm/card.php b/htdocs/comm/card.php index 7b2cee3b91d..e5615aa66ba 100644 --- a/htdocs/comm/card.php +++ b/htdocs/comm/card.php @@ -762,7 +762,7 @@ if ($id > 0) { $contratstatic=new Contrat($db); - $sql = "SELECT s.nom, s.rowid, c.rowid as id, c.ref as ref, c.statut, c.datec as dc, c.date_contrat as dcon"; + $sql = "SELECT s.nom, s.rowid, c.rowid as id, c.ref as ref, c.statut, c.datec as dc, c.date_contrat as dcon, c.ref_supplier as refsup"; $sql.= " FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."contrat as c"; $sql.= " WHERE c.fk_soc = s.rowid "; $sql.= " AND s.rowid = ".$object->id; @@ -779,7 +779,7 @@ if ($id > 0) print '<table class="noborder" width="100%">'; print '<tr class="liste_titre">'; - print '<td colspan="5"><table width="100%" class="nobordernopadding"><tr><td>'.$langs->trans("LastContracts",($num<=$MAXLIST?"":$MAXLIST)).'</td>'; + print '<td colspan="6"><table width="100%" class="nobordernopadding"><tr><td>'.$langs->trans("LastContracts",($num<=$MAXLIST?"":$MAXLIST)).'</td>'; print '<td align="right"><a href="'.DOL_URL_ROOT.'/contrat/list.php?socid='.$object->id.'">'.$langs->trans("AllContracts").' <span class="badge">'.$num.'</span></a></td></tr></table></td>'; print '</tr>'; } @@ -796,6 +796,7 @@ if ($id > 0) $contrat->ref=$objp->ref?$objp->ref:$objp->id; print $contrat->getNomUrl(1,12); print "</td>\n"; + print '<td class="nowrap">'.dol_trunc($objp->refsup,12)."</td>\n"; print '<td align="right" width="80">'.dol_print_date($db->jdate($objp->dc),'day')."</td>\n"; print '<td align="right" width="80">'.dol_print_date($db->jdate($objp->dcon),'day')."</td>\n"; print '<td width="20"> </td>'; -- GitLab From 10a925f7b4f0625b8c1353c44140588ee4794f47 Mon Sep 17 00:00:00 2001 From: Florian HENRY <florian.henry@open-concept.pro> Date: Thu, 3 Dec 2015 11:52:41 +0100 Subject: [PATCH 072/197] FIX: WHERE 1=1 --- htdocs/core/class/extrafields.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index 8df0e0fcbc2..5f3caf18369 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -986,7 +986,7 @@ class ExtraFields $sqlwhere .= ' WHERE ' . $InfoFieldList[4]; } } else { - $sqlwhere .= ' WHERE 1'; + $sqlwhere .= ' WHERE 1=1'; } if (in_array($InfoFieldList[0], array ( 'tablewithentity' -- GitLab From a7d03af4afdbd2cfe8bd3990ce98e9f9d330b0b4 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Thu, 3 Dec 2015 12:47:21 +0100 Subject: [PATCH 073/197] Fix sending emails from mergepedtool was just doing wrong things. --- htdocs/compta/facture/mergepdftool.php | 359 +++++++++++++++++-------- 1 file changed, 251 insertions(+), 108 deletions(-) diff --git a/htdocs/compta/facture/mergepdftool.php b/htdocs/compta/facture/mergepdftool.php index ea0eedfa36a..b84dd1a62c6 100644 --- a/htdocs/compta/facture/mergepdftool.php +++ b/htdocs/compta/facture/mergepdftool.php @@ -70,6 +70,11 @@ $diroutputpdf=$conf->facture->dir_output . '/unpaid/temp'; if (! $user->rights->societe->client->voir || $socid) $diroutputpdf.='/private/'.$user->id; // If user has no permission to see all, output dir is specific to user $resultmasssend=''; +if (GETPOST('buttonsendremind')) +{ + $action='presend'; + $mode='sendmassremind'; +} if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both test must be present to be compatible with all browsers { @@ -122,15 +127,90 @@ if ($action == 'presend' && GETPOST('sendmail')) $nbsent = 0; $nbignored = 0; - for ($i = 0; $i < $countToSend; $i++) + $arrayofinvoices=GETPOST('toSend','array'); + + $thirdparty=new Societe($db); + $invoicetmp=new Facture($db); + $listofinvoicesid=array(); + $listofinvoicesthirdparties=array(); + $listofinvoicesref=array(); + foreach($arrayofinvoices as $invoiceid) { - $object = new Facture($db); - $result = $object->fetch($_POST['toSend'][$i]); - - if ($result > 0) // Invoice was found + $invoicetmp=new Facture($db); // must create new instance because instance is saved into $listofinvoicesref array for future use + $result=$invoicetmp->fetch($invoiceid); + if ($result > 0) + { + $listoinvoicesid[$invoiceid]=$invoiceid; + $thirdpartyid=$invoicetmp->fk_soc?$invoicetmp->fk_soc:$invoicetmp->socid; + $listofinvoicesthirdparties[$thirdpartyid]=$thirdpartyid; + $listofinvoicesref[$thirdpartyid][$invoiceid]=$invoicetmp; + } + } + //var_dump($listofinvoicesref);exit; + + foreach ($listofinvoicesthirdparties as $thirdpartyid) + { + $result = $thirdparty->fetch($thirdpartyid); + if ($result < 0) + { + dol_print_error($db); + exit; + } + + // Define recipient $sendto and $sendtocc + if (trim($_POST['sendto'])) + { + // Recipient is provided into free text + $sendto = trim($_POST['sendto']); + $sendtoid = 0; + } + elseif ($_POST['receiver'] != '-1') { + // Recipient was provided from combo list + if ($_POST['receiver'] == 'thirdparty') // Id of third party + { + $sendto = $thirdparty->email; + $sendtoid = 0; + } + else // Id du contact + { + $sendto = $thirdparty->contact_get_property((int) $_POST['receiver'],'email'); + $sendtoid = $_POST['receiver']; + } + } + if (trim($_POST['sendtocc'])) + { + $sendtocc = trim($_POST['sendtocc']); + } + elseif ($_POST['receivercc'] != '-1') + { + // Recipient was provided from combo list + if ($_POST['receivercc'] == 'thirdparty') // Id of third party + { + $sendtocc = $thirdparty->email; + } + else // Id du contact + { + $sendtocc = $thirdparty->contact_get_property((int) $_POST['receivercc'],'email'); + } + } + + //var_dump($listofinvoicesref[$thirdpartyid]); + + $attachedfiles=array('paths'=>array(), 'names'=>array(), 'mimes'=>array()); + $listofqualifiedinvoice=array(); + $listofqualifiedref=array(); + foreach($listofinvoicesref[$thirdpartyid] as $invoiceid => $invoice) + { + //var_dump($invoice); + $object = $invoice; + //$object = new Facture($db); + //$result = $object->fetch(); + //var_dump($thirdpartyid.' - '.$invoiceid.' - '.$object->statut); + if ($object->statut != Facture::STATUS_VALIDATED) { + $nbignored++; continue; // Payment done or started or canceled } @@ -144,115 +224,140 @@ if ($action == 'presend' && GETPOST('sendmail')) if (dol_is_file($file)) { - $object->fetch_thirdparty(); - $sendto = $object->thirdparty->email; + if (empty($sendto)) // For the case, no recipient were set (multi thirdparties send) + { + $object->fetch_thirdparty(); + $sendto = $object->thirdparty->email; + } - if (empty($sendto)) $nbignored++; + if (empty($sendto)) + { + $nbignored++; + continue; + } if (dol_strlen($sendto)) { - $langs->load("commercial"); - $from = $user->getFullName($langs) . ' <' . $user->email .'>'; - $replyto = $from; - $subject = GETPOST('subject'); - $message = GETPOST('message'); - $sendtocc = GETPOST('sentocc'); - $sendtobcc = (empty($conf->global->MAIN_MAIL_AUTOCOPY_INVOICE_TO)?'':$conf->global->MAIN_MAIL_AUTOCOPY_INVOICE_TO); - - $substitutionarray=array( - '__ID__' => $object->id, - '__EMAIL__' => $object->thirdparty->email, - '__CHECK_READ__' => '<img src="'.DOL_MAIN_URL_ROOT.'/public/emailing/mailing-read.php?tag='.$obj2->tag.'&securitykey='.urlencode($conf->global->MAILING_EMAIL_UNSUBSCRIBE_KEY).'" width="1" height="1" style="width:1px;height:1px" border="0"/>', - //'__LASTNAME__' => $obj2->lastname, - //'__FIRSTNAME__' => $obj2->firstname, - '__FACREF__' => $object->ref, // For backward compatibility - '__REF__' => $object->ref, - '__REFCLIENT__' => $object->thirdparty->name + // Create form object + $attachedfiles=array( + 'paths'=>array_merge($attachedfiles['paths'],array($file)), + 'names'=>array_merge($attachedfiles['names'],array($filename)), + 'mimes'=>array_merge($attachedfiles['mimes'],array($mime)) ); + } - $subject=make_substitutions($subject, $substitutionarray); - $message=make_substitutions($message, $substitutionarray); + $listofqualifiedinvoice[$invoiceid]=$invoice; + $listofqualifiedref[$invoiceid]=$invoice->ref; + } + else + { + $nbignored++; + $langs->load("other"); + $resultmasssend.='<div class="error">'.$langs->trans('ErrorCantReadFile',$file).'</div>'; + dol_syslog('Failed to read file: '.$file, LOG_WARNING); + continue; + } + + //var_dump($listofqualifiedref); + } - $actiontypecode='AC_FAC'; - $actionmsg=$langs->transnoentities('MailSentBy').' '.$from.' '.$langs->transnoentities('To').' '.$sendto; - if ($message) - { - if ($sendtocc) $actionmsg = dol_concatdesc($actionmsg, $langs->transnoentities('Bcc') . ": " . $sendtocc); - $actionmsg = dol_concatdesc($actionmsg, $langs->transnoentities('MailTopic') . ": " . $subject); - $actionmsg = dol_concatdesc($actionmsg, $langs->transnoentities('TextUsedInTheMessageBody') . ":"); - $actionmsg = dol_concatdesc($actionmsg, $message); - } + if (count($listofqualifiedinvoice) > 0) + { + $langs->load("commercial"); + $from = $user->getFullName($langs) . ' <' . $user->email .'>'; + $replyto = $from; + $subject = GETPOST('subject'); + $message = GETPOST('message'); + $sendtocc = GETPOST('sentocc'); + $sendtobcc = (empty($conf->global->MAIN_MAIL_AUTOCOPY_INVOICE_TO)?'':$conf->global->MAIN_MAIL_AUTOCOPY_INVOICE_TO); + + $substitutionarray=array( + '__ID__' => join(', ',array_keys($listofqualifiedinvoice)), + '__EMAIL__' => $thirdparty->email, + '__CHECK_READ__' => '<img src="'.DOL_MAIN_URL_ROOT.'/public/emailing/mailing-read.php?tag='.$thirdparty->tag.'&securitykey='.urlencode($conf->global->MAILING_EMAIL_UNSUBSCRIBE_KEY).'" width="1" height="1" style="width:1px;height:1px" border="0"/>', + //'__LASTNAME__' => $obj2->lastname, + //'__FIRSTNAME__' => $obj2->firstname, + '__FACREF__' => join(', ',$listofqualifiedref), // For backward compatibility + '__REF__' => join(', ',$listofqualifiedref), + '__REFCLIENT__' => $thirdparty->name + ); + + $subject=make_substitutions($subject, $substitutionarray); + $message=make_substitutions($message, $substitutionarray); + + $filepath = $attachedfiles['paths']; + $filename = $attachedfiles['names']; + $mimetype = $attachedfiles['mimes']; + + //var_dump($filepath); + + // Send mail + require_once(DOL_DOCUMENT_ROOT.'/core/class/CMailFile.class.php'); + $mailfile = new CMailFile($subject,$sendto,$from,$message,$filepath,$mimetype,$filename,$sendtocc,$sendtobcc,$deliveryreceipt,-1); + if ($mailfile->error) + { + $resultmasssend.='<div class="error">'.$mailfile->error.'</div>'; + } + else + { + $result=$mailfile->sendfile(); + if ($result) + { + $resultmasssend.=$langs->trans('MailSuccessfulySent',$mailfile->getValidAddress($from,2),$mailfile->getValidAddress($sendto,2)); // Must not contain " - // Create form object - $attachedfiles=array('paths'=>array($file), 'names'=>array($filename), 'mimes'=>array($mime)); - $filepath = $attachedfiles['paths']; - $filename = $attachedfiles['names']; - $mimetype = $attachedfiles['mimes']; - - // Send mail - require_once(DOL_DOCUMENT_ROOT.'/core/class/CMailFile.class.php'); - $mailfile = new CMailFile($subject,$sendto,$from,$message,$filepath,$mimetype,$filename,$sendtocc,$sendtobcc,$deliveryreceipt,-1); - if ($mailfile->error) - { - $resultmasssend.='<div class="error">'.$mailfile->error.'</div>'; - } - else + $error=0; + + foreach($listofqualifiedinvoice as $invid => $object) { - $result=$mailfile->sendfile(); - if ($result) + $actiontypecode='AC_FAC'; + $actionmsg=$langs->transnoentities('MailSentBy').' '.$from.' '.$langs->transnoentities('To').' '.$sendto; + if ($message) { - $resultmasssend.=$langs->trans('MailSuccessfulySent',$mailfile->getValidAddress($from,2),$mailfile->getValidAddress($sendto,2)); // Must not contain " - - $error=0; - - // Initialisation donnees - $object->sendtoid = 0; - $object->actiontypecode = $actiontypecode; - $object->actionmsg = $actionmsg; // Long text - $object->actionmsg2 = $actionmsg2; // Short text - $object->fk_element = $object->id; - $object->elementtype = $object->element; - - // Appel des triggers - include_once(DOL_DOCUMENT_ROOT . "/core/class/interfaces.class.php"); - $interface=new Interfaces($db); - $result=$interface->run_triggers('BILL_SENTBYMAIL',$object,$user,$langs,$conf); - if ($result < 0) { $error++; $this->errors=$interface->errors; } - // Fin appel triggers - - if (! $error) - { - $resultmasssend.=$langs->trans("MailSent").': '.$sendto."<br>\n"; - } - else - { - dol_print_error($db); - } - $nbsent++; - + if ($sendtocc) $actionmsg = dol_concatdesc($actionmsg, $langs->transnoentities('Bcc') . ": " . $sendtocc); + $actionmsg = dol_concatdesc($actionmsg, $langs->transnoentities('MailTopic') . ": " . $subject); + $actionmsg = dol_concatdesc($actionmsg, $langs->transnoentities('TextUsedInTheMessageBody') . ":"); + $actionmsg = dol_concatdesc($actionmsg, $message); + } + + // Initialisation donnees + $object->sendtoid = 0; + $object->actiontypecode = $actiontypecode; + $object->actionmsg = $actionmsg; // Long text + $object->actionmsg2 = $actionmsg2; // Short text + $object->fk_element = $invid; + $object->elementtype = $invoice->element; + + // Appel des triggers + include_once(DOL_DOCUMENT_ROOT . "/core/class/interfaces.class.php"); + $interface=new Interfaces($db); + $result=$interface->run_triggers('BILL_SENTBYMAIL',$object,$user,$langs,$conf); + if ($result < 0) { $error++; $this->errors=$interface->errors; } + // Fin appel triggers + + if (! $error) + { + $resultmasssend.=$langs->trans("MailSent").': '.$sendto."<br>\n"; } else { - $langs->load("other"); - if ($mailfile->error) - { - $resultmasssend.=$langs->trans('ErrorFailedToSendMail',$from,$sendto); - $resultmasssend.='<br><div class="error">'.$mailfile->error.'</div>'; - } - else - { - $resultmasssend.='<div class="warning">No mail sent. Feature is disabled by option MAIN_DISABLE_ALL_MAILS</div>'; - } + dol_print_error($db); } + $nbsent++; + } + } + else + { + $langs->load("other"); + if ($mailfile->error) + { + $resultmasssend.=$langs->trans('ErrorFailedToSendMail',$from,$sendto); + $resultmasssend.='<br><div class="error">'.$mailfile->error.'</div>'; + } + else + { + $resultmasssend.='<div class="warning">No mail sent. Feature is disabled by option MAIN_DISABLE_ALL_MAILS</div>'; } } - } - else - { - $nbignored++; - $langs->load("other"); - $resultmasssend.='<div class="error">'.$langs->trans('ErrorCantReadFile',$file).'</div>'; - dol_syslog('Failed to read file: '.$file, LOG_WARNING); } } } @@ -417,7 +522,6 @@ $search_societe = GETPOST("search_societe"); $search_paymentmode = GETPOST("search_paymentmode"); $search_montant_ht = GETPOST("search_montant_ht"); $search_montant_ttc = GETPOST("search_montant_ttc"); -$search_status = GETPOST("search_status"); $late = GETPOST("late"); // Do we click on purge search criteria ? @@ -429,7 +533,6 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both $search_paymentmode=''; $search_montant_ht=''; $search_montant_ttc=''; - $search_status=''; } $sortfield = GETPOST("sortfield",'alpha'); @@ -485,7 +588,6 @@ if ($search_paymentmode) $sql .= " AND f.fk_mode_reglement = ".$search_paymentmo if ($search_montant_ht) $sql .= " AND f.total = '".$db->escape($search_montant_ht)."'"; if ($search_montant_ttc) $sql .= " AND f.total_ttc = '".$db->escape($search_montant_ttc)."'"; if (GETPOST('sf_ref')) $sql .= " AND f.facnumber LIKE '%".$db->escape(GETPOST('sf_ref'))."%'"; -if ($search_status) $sql .= " AND f.fk_statut = ".$search_status; if ($month > 0) { if ($year > 0) @@ -531,7 +633,6 @@ if ($resql) if ($search_societe) $param.='&search_paymentmode='.urlencode($search_paymentmode); if ($search_montant_ht) $param.='&search_montant_ht='.urlencode($search_montant_ht); if ($search_montant_ttc) $param.='&search_montant_ttc='.urlencode($search_montant_ttc); - if ($search_status) $param.='&search_status='.urlencode($search_status); if ($late) $param.='&late='.urlencode($late); if ($mode) $param.='&mode='.urlencode($mode); $urlsource=$_SERVER['PHP_SELF'].'?sortfield='.$sortfield.'&sortorder='.$sortorder; @@ -551,6 +652,31 @@ if ($resql) print_fiche_titre($titre,$link); //print_barre_liste($titre,$page,$_SERVER["PHP_SELF"],$param,$sortfield,$sortorder,'',0); // We don't want pagination on this page + $arrayofinvoices=GETPOST('toSend','array'); + if ($action == 'presend' && count($arrayofinvoices) == 0 && ! GETPOST('cancel')) + { + setEventMessages($langs->trans("InvoiceNotChecked"), null, 'errors'); + $action='list'; + $mode='sendmassremind'; + } + else + { + $invoicetmp=new Facture($db); + $listofinvoicesid=array(); + $listofinvoicesthirdparties=array(); + $listofinvoicesref=array(); + foreach($arrayofinvoices as $invoiceid) + { + $result=$invoicetmp->fetch($invoiceid); + if ($result > 0) + { + $listofinvoicesid[$invoiceid]=$invoiceid; + $thirdpartyid=$invoicetmp->fk_soc?$invoicetmp->fk_soc:$invoicetmp->socid; + $listofinvoicesthirdparties[$thirdpartyid]=$thirdpartyid; + $listofinvoicesref[$thirdpartyid][$invoiceid]=$invoicetmp->ref; + } + } + } print '<form id="form_unpaid" method="POST" action="'.$_SERVER["PHP_SELF"].'?sortfield='. $sortfield .'&sortorder='. $sortorder .'">'; if (GETPOST('modelselected')) { @@ -575,10 +701,25 @@ if ($resql) $formmail->fromname = $user->getFullName($langs); $formmail->frommail = $user->email; $formmail->withfrom=1; - $liste=array(); - $formmail->withto=$langs->trans("AllRecipientSelectedForRemind"); + $liste=$langs->trans("AllRecipientSelectedForRemind"); + if (count($listofinvoicesthirdparties) == 1) + { + $liste=array(); + $thirdpartyid=array_shift($listofinvoicesthirdparties); + $soc=new Societe($db); + $soc->fetch($thirdpartyid); + foreach ($soc->thirdparty_and_contact_email_array(1) as $key=>$value) + { + $liste[$key]=$value; + } + $formmail->withtoreadonly=0; + } + else + { + $formmail->withtoreadonly=1; + } + $formmail->withto=$liste; $formmail->withtofree=0; - $formmail->withtoreadonly=1; $formmail->withtocc=1; $formmail->withtoccc=$conf->global->MAIN_EMAIL_USECCC; $formmail->withtopic=$langs->transnoentities($topicmail, '__FACREF__', '__REFCLIENT__'); @@ -597,7 +738,7 @@ if ($resql) $formmail->param['action']=$action; $formmail->param['models']=$modelmail; $formmail->param['models_id']=GETPOST('modelmailselected','int'); - $formmail->param['facid']=$object->id; + $formmail->param['facid']=join(',',$arrayofinvoices); $formmail->param['returnurl']=$_SERVER["PHP_SELF"].'?id='.$object->id; print $formmail->get_form(); @@ -822,7 +963,9 @@ if ($resql) { // Checkbox to send remind print '<td class="nowrap" align="center">'; - if ($objp->email) print '<input class="flat checkforsend" type="checkbox" name="toSend[]" value="'.$objp->facid.'">'; + $selected=0; + if (in_array($objp->facid, $arrayofinvoices)) $selected=1; + if ($objp->email) print '<input class="flat checkforsend" type="checkbox" name="toSend[]" value="'.$objp->facid.'"'.($selected?' checked="checked"':'').'>'; else print img_picto($langs->trans("NoEMail"), 'warning.png'); print '</td>' ; } @@ -869,7 +1012,7 @@ if ($resql) if ($action != 'presend') { print '<div class="tabsAction">'; - print '<a href="'.$_SERVER["PHP_SELF"].'?mode=sendremind&action=presend" class="butAction" name="buttonsendremind" value="'.dol_escape_htmltag($langs->trans("SendRemind")).'">'.$langs->trans("SendRemind").'</a>'; + print '<input type="submit" class="butAction" name="buttonsendremind" value="'.dol_escape_htmltag($langs->trans("SendRemind")).'">'; print '</div>'; print '<br>'; } -- GitLab From eb98bd1e788ea181448244e42f7825abc50fdaa2 Mon Sep 17 00:00:00 2001 From: fmarcet <fmarcet@2byte.es> Date: Thu, 3 Dec 2015 14:02:26 +0100 Subject: [PATCH 074/197] FIX: Not delete a product when have customer price --- htdocs/product/class/product.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index 41c73a227a4..22dde9accc7 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -806,7 +806,7 @@ class Product extends CommonObject } // Delete all child tables - $elements = array('product_fournisseur_price','product_price','product_lang','categorie_product','product_stock'); + $elements = array('product_fournisseur_price','product_price','product_lang','categorie_product','product_stock','product_customer_price'); foreach($elements as $table) { if (! $error) -- GitLab From e4f0b9ba156046d55bd21c1bb51a901db99c3131 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Thu, 3 Dec 2015 14:46:34 +0100 Subject: [PATCH 075/197] Fix detection of last version on sourceforge --- htdocs/admin/tools/update.php | 41 +++++++++++++++-------------------- 1 file changed, 17 insertions(+), 24 deletions(-) diff --git a/htdocs/admin/tools/update.php b/htdocs/admin/tools/update.php index e1166e96c3d..f524508e708 100644 --- a/htdocs/admin/tools/update.php +++ b/htdocs/admin/tools/update.php @@ -23,6 +23,7 @@ */ require '../../main.inc.php'; +include_once DOL_DOCUMENT_ROOT . '/core/lib/admin.lib.php'; include_once DOL_DOCUMENT_ROOT . '/core/lib/files.lib.php'; include_once DOL_DOCUMENT_ROOT . '/core/lib/geturl.lib.php'; @@ -172,30 +173,22 @@ $result = getURLContent('http://sourceforge.net/projects/dolibarr/rss'); $sfurl = simplexml_load_string($result['content']); if ($sfurl) { - $title=$sfurl->channel[0]->item[0]->title; - - function word_limiter($text, $limit = 30, $chars = '0123456789.') - { - if (strlen( $text ) > $limit) - { - $words = str_word_count($text, 2, $chars); - $words = array_reverse($words, TRUE); - foreach($words as $length => $word) { - if ($length + strlen( $word ) >= $limit) - { - array_shift($words); - } else { - break; - } - } - $words = array_reverse($words); - $text = implode(" ", $words) . ''; - } - return $text; - } - - $str = $title; - print $langs->trans("LastStableVersion").' : <b>'. word_limiter( $str ).'</b><br>'; + $i=0; + $version='0.0'; + while (! empty($sfurl->channel[0]->item[$i]->title) && $i < 10000) + { + $title=$sfurl->channel[0]->item[$i]->title; + if (preg_match('/([0-9]+\.([0-9\.]+))/', $title, $reg)) + { + $newversion=$reg[1]; + $newversionarray=explode('.',$newversion); + $versionarray=explode('.',$version); + //var_dump($newversionarray);var_dump($versionarray); + if (versioncompare($newversionarray, $versionarray) > 0) $version=$newversion; + } + $i++; + } + print $langs->trans("LastStableVersion").' : <b>'. ($version?$version:$langs->trans("Unknown")) .'</b><br>'; } else { -- GitLab From 6be9a04a5648d5bd1f7a4d221cae423660e963db Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Thu, 3 Dec 2015 14:52:13 +0100 Subject: [PATCH 076/197] Fix detection of last version on sourceforge --- htdocs/admin/system/about.php | 62 +++++++++++++++++------------------ htdocs/admin/tools/update.php | 4 ++- 2 files changed, 34 insertions(+), 32 deletions(-) diff --git a/htdocs/admin/system/about.php b/htdocs/admin/system/about.php index e9d3f96ad55..3b2492fad65 100644 --- a/htdocs/admin/system/about.php +++ b/htdocs/admin/system/about.php @@ -59,39 +59,39 @@ $result = getURLContent('http://sourceforge.net/projects/dolibarr/rss'); $sfurl = simplexml_load_string($result['content']); if ($sfurl) { - $title=$sfurl->channel[0]->item[0]->title; - - function word_limiter($text, $limit = 30, $chars = '0123456789.') - { - if (strlen( $text ) > $limit) - { - $words = str_word_count($text, 2, $chars); - $words = array_reverse($words, TRUE); - foreach($words as $length => $word) { - if ($length + strlen( $word ) >= $limit) - { - array_shift($words); - } else { - break; - } - } - $words = array_reverse($words); - $text = implode(" ", $words) . ''; - } - return $text; - } - - $str = word_limiter($title); - $str = preg_replace('/[^0-9\.]/', '', $str); - print ' ('.$langs->trans("LastStableVersion").': <b>'.$str.'</b>'; - if (DOL_VERSION == $str) - { - $youuselaststable=1; - print $langs->trans("YouUseLastStableVersion"); - } - print ')'; + $i=0; + $version='0.0'; + while (! empty($sfurl->channel[0]->item[$i]->title) && $i < 10000) + { + $title=$sfurl->channel[0]->item[$i]->title; + if (preg_match('/([0-9]+\.([0-9\.]+))/', $title, $reg)) + { + $newversion=$reg[1]; + $newversionarray=explode('.',$newversion); + $versionarray=explode('.',$version); + //var_dump($newversionarray);var_dump($versionarray); + if (versioncompare($newversionarray, $versionarray) > 0) $version=$newversion; + } + $i++; + } + + // Show version + if ($version != '0.0') + { + print ' ('.$langs->trans("LastStableVersion").': <b>'.$version.'</b>'; + if (DOL_VERSION == $version) + { + $youuselaststable=1; + print $langs->trans("YouUseLastStableVersion"); + } + print ')'; + } print ' / <a href="http://www.gnu.org/copyleft/gpl.html">GNU-GPL v3+</a></li>'; } +else +{ + print $langs->trans("LastStableVersion").' : <b>' .$langs->trans("UpdateServerOffline").'</b><br>'; +} print '</ul>'; diff --git a/htdocs/admin/tools/update.php b/htdocs/admin/tools/update.php index f524508e708..cb4890f77f1 100644 --- a/htdocs/admin/tools/update.php +++ b/htdocs/admin/tools/update.php @@ -188,7 +188,9 @@ if ($sfurl) } $i++; } - print $langs->trans("LastStableVersion").' : <b>'. ($version?$version:$langs->trans("Unknown")) .'</b><br>'; + + // Show version + print $langs->trans("LastStableVersion").' : <b>'. (($version != '0.0')?$version:$langs->trans("Unknown")) .'</b><br>'; } else { -- GitLab From 43ab23ca28161ad87ccd3e5bbc32ab05444c625a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Thu, 3 Dec 2015 14:54:39 +0100 Subject: [PATCH 077/197] Fix doxygen --- htdocs/core/class/html.form.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 541ea766076..18580c4b6cc 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -485,9 +485,9 @@ class Form /** * Generate select HTML to choose massaction * - * @parama string $selected Selected value + * @param string $selected Selected value * @param int $arrayofaction array('code'=>'label', ...) - * @param string Select list + * @return string Select list */ function selectMassAction($selected, $arrayofaction) { -- GitLab From fb692f4cd50baae47edda578f1a50351d25d1ff1 Mon Sep 17 00:00:00 2001 From: Bahfir Abbes <bafbes@gmail.com> Date: Thu, 3 Dec 2015 19:10:15 +0100 Subject: [PATCH 078/197] Update card.php --- htdocs/fichinter/card.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/fichinter/card.php b/htdocs/fichinter/card.php index 33c2e48b599..403f1411dc8 100644 --- a/htdocs/fichinter/card.php +++ b/htdocs/fichinter/card.php @@ -467,7 +467,7 @@ if (empty($reshook)) // Add line else if ($action == "addline" && $user->rights->ficheinter->creer) { - if (!GETPOST('np_desc') && $conf->global->FICHINTER_EMPTY_LINE_DESC!=1 ) + if (!GETPOST('np_desc') && empty($conf->global->FICHINTER_EMPTY_LINE_DESC) ) { $mesg='<div class="error">'.$langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Description")).'</div>'; $error++; @@ -1570,7 +1570,7 @@ else if ($id > 0 || ! empty($ref)) print '<tr '.$bcnd[$var] . ">\n"; print '<td>'; // editeur wysiwyg - if ($conf->global->FICHINTER_EMPTY_LINE_DESC != 1) { + if (empty($conf->global->FICHINTER_EMPTY_LINE_DESC)) { require_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php'; $doleditor = new DolEditor('np_desc', GETPOST('np_desc', 'alpha'), '', 100, 'dolibarr_details', '', false, true, $conf->global->FCKEDITOR_ENABLE_DETAILS, ROWS_2, 70); $doleditor->Create(); -- GitLab From ebc1105b5c14e2de73b82eca6c713c7aa7a6b9b7 Mon Sep 17 00:00:00 2001 From: AlainRnet <alainrihs@sunrise.ch> Date: Thu, 3 Dec 2015 21:09:09 +0100 Subject: [PATCH 079/197] Update fraise.modules.php following discussion with eldy (https://github.com/Dolibarr/dolibarr/pull/4079#issuecomment-161601400) to mix a french forum membre to select mailing member by type, I try to update this selector to integrate selection by type. Thanks in advance for feedback --- .../core/modules/mailings/fraise.modules.php | 125 +++++++++++------- 1 file changed, 78 insertions(+), 47 deletions(-) diff --git a/htdocs/core/modules/mailings/fraise.modules.php b/htdocs/core/modules/mailings/fraise.modules.php index 2716bdc1e4c..ca9f2b11f0d 100644 --- a/htdocs/core/modules/mailings/fraise.modules.php +++ b/htdocs/core/modules/mailings/fraise.modules.php @@ -28,16 +28,16 @@ include_once DOL_DOCUMENT_ROOT.'/core/class/html.form.class.php'; /** - * Class to generate target according to rule Fraise + * Class to generate target according to rule Fraise */ class mailing_fraise extends MailingTargets { - // CHANGE THIS: Put here a name not already used - var $name='FundationMembers'; // Identifiant du module mailing - // CHANGE THIS: Put here a description of your selector module. - // This label is used if no translation found for key MailingModuleDescXXX where XXX=name is found + // CHANGE THIS: Put here a name not already used + var $name='FundationMembers'; // Identifiant du module mailing + // CHANGE THIS: Put here a description of your selector module. + // This label is used if no translation found for key MailingModuleDescXXX where XXX=name is found var $desc='Foundation members with emails (by status)'; - // CHANGE THIS: Set to 1 if selector is available for admin users only + // CHANGE THIS: Set to 1 if selector is available for admin users only var $require_admin=0; var $require_module=array('adherent'); @@ -46,11 +46,11 @@ class mailing_fraise extends MailingTargets var $db; - /** - * Constructor - * - * @param DoliDB $db Database handler - */ + /** + * Constructor + * + * @param DoliDB $db Database handler + */ function __construct($db) { $this->db=$db; @@ -58,37 +58,37 @@ class mailing_fraise extends MailingTargets /** - * On the main mailing area, there is a box with statistics. - * If you want to add a line in this report you must provide an - * array of SQL request that returns two field: - * One called "label", One called "nb". - * - * @return string[] Array with SQL requests - */ + * On the main mailing area, there is a box with statistics. + * If you want to add a line in this report you must provide an + * array of SQL request that returns two field: + * One called "label", One called "nb". + * + * @return array Array with SQL requests + */ function getSqlArrayForStats() - { + { global $langs; $langs->load("members"); - // Array for requests for statistics board - $statssql=array(); + // Array for requests for statistics board + $statssql=array(); $statssql[0] ="SELECT '".$this->db->escape($langs->trans("FundationMembers"))."' as label, count(*) as nb"; - $statssql[0].=" FROM ".MAIN_DB_PREFIX."adherent where statut = 1"; + $statssql[0].=" FROM ".MAIN_DB_PREFIX."adherent where statut = 1"; - return $statssql; - } + return $statssql; + } /** - * Return here number of distinct emails returned by your selector. - * For example if this selector is used to extract 500 different - * emails from a text file, this function must return 500. - * - * @param string $sql Requete sql de comptage - * @return int Nb of recipients - */ + * Return here number of distinct emails returned by your selector. + * For example if this selector is used to extract 500 different + * emails from a text file, this function must return 500. + * + * @param string $sql Requete sql de comptage + * @return int Nb of recipients + */ function getNbOfRecipients($sql='') { $sql = "SELECT count(distinct(a.email)) as nb"; @@ -108,7 +108,7 @@ class mailing_fraise extends MailingTargets */ function formFilter() { - global $langs; + global $conf, $langs; $langs->load("members"); $form=new Form($this->db); @@ -121,6 +121,36 @@ class mailing_fraise extends MailingTargets $s.='<option value="1a">'.$langs->trans("MemberStatusActiveShort").' ('.$langs->trans("MemberStatusPaidShort").')</option>'; $s.='<option value="1b">'.$langs->trans("MemberStatusActiveShort").' ('.$langs->trans("MemberStatusActiveLateShort").')</option>'; $s.='<option value="0">'.$langs->trans("MemberStatusResiliatedShort").'</option>'; + $s.='</select> '; + $s.=$langs->trans("Type").': '; + $s.='<select name="filter" class="flat">'; + $sql = "SELECT rowid, libelle, statut"; + $sql.= " FROM ".MAIN_DB_PREFIX."adherent_type"; + $sql.= " WHERE entity = ".$conf->entity; + $sql.= " ORDER BY rowid"; + $resql = $this->db->query($sql); + if ($resql) + { + $num = $this->db->num_rows($resql); + + $s.='<option value="0"> </option>'; + if (! $num) $s.='<option value="0" disabled="disabled">'.$langs->trans("NoCategoriesDefined").'</option>'; + + $i = 0; + while ($i < $num) + { + $obj = $this->db->fetch_object($resql); + + $s.='<option value="'.$obj->rowid.'">'.dol_trunc($obj->libelle,38,'middle'); + $s.='</option>'; + $i++; + } + } + else + { + dol_print_error($this->db); + } + $s.='</select>'; $s.='<br>'; $s.=$langs->trans("DateEndSubscription").': '; @@ -135,7 +165,7 @@ class mailing_fraise extends MailingTargets /** * Renvoie url lien vers fiche de la source du destinataire du mailing * - * @param int $id ID + * @param int $id ID * @return string Url lien */ function url($id) @@ -147,9 +177,9 @@ class mailing_fraise extends MailingTargets /** * Ajoute destinataires dans table des cibles * - * @param int $mailing_id Id of emailing - * @param array $filtersarray Param to filter sql request. Deprecated. Should use $_POST instead. - * @return int < 0 si erreur, nb ajout si ok + * @param int $mailing_id Id of emailing + * @param array $filtersarray Param to filter sql request. Deprecated. Should use $_POST instead. + * @return int < 0 si erreur, nb ajout si ok */ function add_to_target($mailing_id,$filtersarray=array()) { @@ -162,7 +192,7 @@ class mailing_fraise extends MailingTargets $langs->load("members"); $langs->load("companies"); - $cibles = array(); + $cibles = array(); $now=dol_now(); $dateendsubscriptionafter=dol_mktime($_POST['subscriptionafterhour'],$_POST['subscriptionaftermin'],$_POST['subscriptionaftersec'],$_POST['subscriptionaftermonth'],$_POST['subscriptionafterday'],$_POST['subscriptionafteryear']); @@ -171,8 +201,8 @@ class mailing_fraise extends MailingTargets // La requete doit retourner: id, email, fk_contact, name, firstname $sql = "SELECT a.rowid as id, a.email as email, null as fk_contact, "; $sql.= " a.lastname, a.firstname,"; - $sql.= " a.datefin, a.civility as civility_id, a.login, a.societe"; // Other fields - $sql.= " FROM ".MAIN_DB_PREFIX."adherent as a"; + $sql.= " a.datefin, a.civility as civility_id, a.login, a.societe"; // Other fields + $sql.= " FROM ".MAIN_DB_PREFIX."adherent as a, ".MAIN_DB_PREFIX."adherent_type as ta"; $sql.= " WHERE a.email <> ''"; // Note that null != '' is false $sql.= " AND a.email NOT IN (SELECT email FROM ".MAIN_DB_PREFIX."mailing_cibles WHERE fk_mailing=".$mailing_id.")"; if (isset($_POST["filter"]) && $_POST["filter"] == '-1') $sql.= " AND a.statut=-1"; @@ -181,6 +211,8 @@ class mailing_fraise extends MailingTargets if (isset($_POST["filter"]) && $_POST["filter"] == '0') $sql.= " AND a.statut=0"; if ($dateendsubscriptionafter > 0) $sql.=" AND datefin > '".$this->db->idate($dateendsubscriptionafter)."'"; if ($dateendsubscriptionbefore > 0) $sql.=" AND datefin < '".$this->db->idate($dateendsubscriptionbefore)."'"; + $sql.= " AND a.fk_adherent_type = ta.rowid"; + if ($_POST['filter']) $sql.= " AND ta.rowid='".$_POST['filter']."'"; $sql.= " ORDER BY a.email"; //print $sql; @@ -202,11 +234,11 @@ class mailing_fraise extends MailingTargets if ($old <> $obj->email) { $cibles[$j] = array( - 'email' => $obj->email, - 'fk_contact' => $obj->fk_contact, - 'lastname' => $obj->lastname, - 'firstname' => $obj->firstname, - 'other' => + 'email' => $obj->email, + 'fk_contact' => $obj->fk_contact, + 'lastname' => $obj->lastname, + 'firstname' => $obj->firstname, + 'other' => ($langs->transnoentities("Login").'='.$obj->login).';'. ($langs->transnoentities("UserTitle").'='.($obj->civility_id?$langs->transnoentities("Civility".$obj->civility_id):'')).';'. ($langs->transnoentities("DateEnd").'='.dol_print_date($this->db->jdate($obj->datefin),'day')).';'. @@ -214,7 +246,7 @@ class mailing_fraise extends MailingTargets 'source_url' => $this->url($obj->id), 'source_id' => $obj->id, 'source_type' => 'member' - ); + ); $old = $obj->email; $j++; } @@ -230,7 +262,6 @@ class mailing_fraise extends MailingTargets } return parent::add_to_target($mailing_id, $cibles); - } + } } - -- GitLab From b45d4a2a513459af9552c491400d87b97c7c444f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Doursenaud?= <rdoursenaud@gpcsolutions.fr> Date: Thu, 3 Dec 2015 22:29:44 +0100 Subject: [PATCH 080/197] [Qual] OOP detection of PHP MySQL driver --- htdocs/core/db/mysqli.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/db/mysqli.class.php b/htdocs/core/db/mysqli.class.php index 068cd410326..8b68fa921ac 100644 --- a/htdocs/core/db/mysqli.class.php +++ b/htdocs/core/db/mysqli.class.php @@ -69,7 +69,7 @@ class DoliDBMysqli extends DoliDB //print "Name DB: $host,$user,$pass,$name<br>"; - if (! function_exists("mysqli_connect")) + if (! class_exists('mysqli')) { $this->connected = false; $this->ok = false; -- GitLab From d2b221cfd1ebb60a0d53b8b74b27b9cc9a730550 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Fri, 4 Dec 2015 10:22:27 +0100 Subject: [PATCH 081/197] Upgrade PHPCS rules --- dev/codesniffer/ruleset.xml | 148 ++++++++++++++++-------------------- 1 file changed, 66 insertions(+), 82 deletions(-) diff --git a/dev/codesniffer/ruleset.xml b/dev/codesniffer/ruleset.xml index 9f20324da3f..321560ff6f9 100755 --- a/dev/codesniffer/ruleset.xml +++ b/dev/codesniffer/ruleset.xml @@ -12,10 +12,16 @@ <!-- List of all tests --> + + <!-- Rules from Internal Standard --> + <rule ref="Internal.NoCodeFound"> <severity>0</severity> </rule> + + <!-- Rules from Generic Standard --> + <rule ref="Generic.CodeAnalysis.EmptyStatement" /> <rule ref="Generic.CodeAnalysis.EmptyStatement.DetectedCATCH"> @@ -41,9 +47,6 @@ <severity>0</severity> </rule> - <!-- The closing ?> tag MUST be omitted from files containing only PHP. --> - <!-- <rule ref="Zend.Files.ClosingTag"/> --> - <!-- <rule ref="Generic.CodeAnalysis.ForLoopShouldBeWhileLoop" /> --> <rule ref="Generic.CodeAnalysis.ForLoopWithTestFunctionCall" /> @@ -161,8 +164,6 @@ <severity>0</severity> </rule> - <rule ref="Generic.VersionControl.SubversionProperties" /> - <!-- Disallow usage of tab --> <!-- <rule ref="Generic.WhiteSpace.DisallowTabIndent" /> --> @@ -170,123 +171,92 @@ <!-- Disabled as this does not support tab --> <!-- <rule ref="Generic.WhiteSpace.ScopeIndent" /> --> - <rule ref="PEAR.Classes.ClassDeclaration" /> + + + <!-- Rules from PEAR Standard --> + + <rule ref="PEAR.Classes.ClassDeclaration" /> <!-- Check for duplicate class names --> <!-- <rule ref="Generic.Classes.DuplicateClassName" /> --> <rule ref="PEAR.Commenting.ClassComment" /> - <rule ref="PEAR.Commenting.ClassComment.MissingTag"> - <severity>0</severity> - </rule> - <rule ref="PEAR.Commenting.ClassComment.Missing@authorTag"> - <severity>0</severity> - </rule> - <rule ref="PEAR.Commenting.ClassComment.Missing@categoryTag"> - <severity>0</severity> - </rule> - <rule ref="PEAR.Commenting.ClassComment.Missing@licenseTag"> - <severity>0</severity> - </rule> - <rule ref="PEAR.Commenting.ClassComment.Missing@linkTag"> - <severity>0</severity> - </rule> - <rule ref="PEAR.Commenting.ClassComment.Missing@packageTag"> - <severity>0</severity> - </rule> - <rule ref="PEAR.Commenting.FunctionComment.SpacingAfterParamType"> - <severity>0</severity> - </rule> - <rule ref="PEAR.Commenting.FunctionComment.SpacingAfterParamName"> - <severity>0</severity> - </rule> + <!-- TODO Remove this and fix reported errors --> <rule ref="PEAR.Commenting.ClassComment.Missing"> <severity>0</severity> </rule> - <rule ref="PEAR.Commenting.FunctionComment.MissingReturn"> - <severity>0</severity> - </rule> - <rule ref="PEAR.Commenting.FunctionComment.ReturnNotRequired"> - <severity>0</severity> - </rule> - <rule ref="PEAR.Commenting.FunctionComment.Missing"> - <severity>0</severity> - </rule> - - <rule ref="PEAR.Commenting.ClassComment.Missing@authorTag"> - <severity>0</severity> - </rule> - <rule ref="PEAR.Commenting.ClassComment.Missing@categoryTag"> - <severity>0</severity> - </rule> - <rule ref="PEAR.Commenting.ClassComment.Missing@licenseTag"> - <severity>0</severity> - </rule> - <rule ref="PEAR.Commenting.ClassComment.Missing@linkTag"> - <severity>0</severity> - </rule> - <rule ref="PEAR.Commenting.ClassComment.Missing@packageTag"> - <severity>0</severity> - </rule> + <rule ref="PEAR.Commenting.ClassComment.MissingTag" /> + <rule ref="PEAR.Commenting.ClassComment.MissingAuthorTag"> <severity>0</severity> </rule> + <rule ref="PEAR.Commenting.ClassComment.MissingCategoryTag"> <severity>0</severity> </rule> + <rule ref="PEAR.Commenting.ClassComment.MissingLicenseTag"> <severity>0</severity> </rule> + <rule ref="PEAR.Commenting.ClassComment.MissingLinkTag"> <severity>0</severity> </rule> + <rule ref="PEAR.Commenting.ClassComment.MissingPackageTag"> <severity>0</severity> </rule> - - <rule ref="PEAR.Commenting.FunctionComment.SpacingAfterParamType"> + + + + <!-- + <rule ref="PEAR.Commenting.FileComment" /> + <rule ref="PEAR.Commenting.FileComment.WrongStyle"> <severity>0</severity> </rule> - <rule ref="PEAR.Commenting.FunctionComment.SpacingAfterParamName"> + <rule ref="PEAR.Commenting.FileComment.MissingVersion"> <severity>0</severity> </rule> - <!-- TODO Remove this and fix reported errors --> - <rule ref="PEAR.Commenting.ClassComment.Missing"> + <rule ref="PEAR.Commenting.FileComment.MissingTag"> <severity>0</severity> </rule> - <rule ref="PEAR.Commenting.FunctionComment.MissingReturn"> - <severity>0</severity> + --> + + <rule ref="PEAR.Commenting.FunctionComment" /> + + <rule ref="PEAR.Commenting.FunctionComment.Empty"> + <severity>5</severity> </rule> - <rule ref="PEAR.Commenting.FunctionComment.ReturnNotRequired"> + + <rule ref="PEAR.Commenting.FunctionComment.MissingReturn"> <severity>0</severity> </rule> <rule ref="PEAR.Commenting.FunctionComment.Missing"> <severity>0</severity> </rule> - - <!-- - <rule ref="PEAR.Commenting.FileComment" /> - <rule ref="PEAR.Commenting.FileComment.WrongStyle"> + + <rule ref="PEAR.Commenting.FunctionComment.SpacingAfterParamType" /> + + <rule ref="PEAR.Commenting.FunctionComment.SpacingAfterParamName"> <severity>0</severity> </rule> - <rule ref="PEAR.Commenting.FileComment.MissingVersion"> + + <rule ref="PEAR.Commenting.FunctionComment.SpacingAfterParamType"> <severity>0</severity> </rule> - <rule ref="PEAR.Commenting.FileComment.MissingTag"> + + <rule ref="PEAR.Commenting.FunctionComment.SpacingAfterParamName" /> + + <rule ref="PEAR.Commenting.FunctionComment.ReturnNotRequired"> <severity>0</severity> </rule> - --> + <rule ref="PEAR.Commenting.FunctionComment.WrongStyle"> <severity>0</severity> </rule> - <rule ref="PEAR.Commenting.FunctionComment.Empty"> - <severity>5</severity> - </rule> - - <rule ref="PEAR.Commenting.FunctionComment" /> <rule ref="PEAR.Commenting.FunctionComment.SpacingBeforeParamType"> <severity>0</severity> </rule> @@ -319,6 +289,15 @@ <rule ref="PEAR.Functions.FunctionCallSignature" /> + <rule ref="PEAR.Functions.FunctionCallSignature.CloseBracketLine"> + <severity>0</severity> + </rule> + <rule ref="PEAR.Functions.FunctionCallSignature.ContentAfterOpenBracket"> + <severity>0</severity> + </rule> + <rule ref="PEAR.Functions.FunctionCallSignature.EmptyLine"> + <severity>0</severity> + </rule> <rule ref="PEAR.Functions.FunctionCallSignature.Indent"> <severity>0</severity> </rule> @@ -334,12 +313,6 @@ <rule ref="PEAR.Functions.FunctionCallSignature.SpaceAfterCloseBracket"> <severity>0</severity> </rule> - <rule ref="PEAR.Functions.FunctionCallSignature.CloseBracketLine"> - <severity>0</severity> - </rule> - <rule ref="PEAR.Functions.FunctionCallSignature.ContentAfterOpenBracket"> - <severity>0</severity> - </rule> <rule ref="PEAR.Functions.ValidDefaultValue" /> @@ -371,15 +344,20 @@ <rule ref="PEAR.NamingConventions.ValidFunctionName.FunctionNoCaptial"> <severity>0</severity> </rule> + <rule ref="PEAR.NamingConventions.ValidFunctionName.NotCamelCaps"> <severity>0</severity> </rule> <rule ref="PEAR.NamingConventions.ValidFunctionName.PrivateNoUnderscore"> <severity>0</severity> </rule> - <rule ref="PEAR.NamingConventions.ValidVariableName" /> + <!-- This is not in PSR2 --> + <rule ref="PEAR.NamingConventions.ValidVariableName.PrivateNoUnderscore"> + <severity>0</severity> + </rule> + <rule ref="PEAR.WhiteSpace.ObjectOperatorIndent" /> <!-- Need to be commented to be disabled @@ -395,4 +373,10 @@ <!-- Already found as a Generic rule --> <!-- <rule ref="PEAR.WhiteSpace.ScopeIndent" /> --> + + <!-- Rules from Zend Standard--> + + <!-- The closing ?> tag MUST be omitted from files containing only PHP. --> + <rule ref="Zend.Files.ClosingTag"/> + </ruleset> -- GitLab From 4dd1cb3e77fdc27e30d20847f596f46d944d91ee Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Fri, 4 Dec 2015 12:12:12 +0100 Subject: [PATCH 082/197] Theme MD looks ready for 3.9 now. --- htdocs/core/lib/project.lib.php | 18 ++++++++------ htdocs/main.inc.php | 4 +-- htdocs/projet/index.php | 2 +- htdocs/theme/eldy/style.css.php | 13 +++++----- htdocs/theme/md/graph-color.php | 2 +- htdocs/theme/md/style.css.php | 44 +++++++++++++++++++++++---------- 6 files changed, 51 insertions(+), 32 deletions(-) diff --git a/htdocs/core/lib/project.lib.php b/htdocs/core/lib/project.lib.php index 0569e90d903..5eeb13ca937 100644 --- a/htdocs/core/lib/project.lib.php +++ b/htdocs/core/lib/project.lib.php @@ -874,11 +874,11 @@ function searchTaskInChild(&$inc, $parent, &$lines, &$taskrole) * @param DoliDB $db Database handler * @param Form $form Object form * @param int $socid Id thirdparty - * @param int $projectsListId Id of project i have permission on - * @param int $mytasks Limited to task i am contact to + * @param int $projectsListId Id of project I have permission on + * @param int $mytasks Limited to task I am contact to * @param int $statut -1=No filter on statut, 0 or 1 = Filter on status * @param array $listofoppstatus List of opportunity status - * @param array $hiddenfields List of fields to not show + * @param array $hiddenfields List of info to not show ('projectlabel', 'declaredprogress', '...', ) * @return void */ function print_projecttasks_array($db, $form, $socid, $projectsListId, $mytasks=0, $statut=-1, $listofoppstatus=array(),$hiddenfields=array()) @@ -993,7 +993,7 @@ function print_projecttasks_array($db, $form, $socid, $projectsListId, $mytasks= if (empty($conf->global->PROJECT_HIDE_TASKS)) { print_liste_field_titre($langs->trans("Tasks"),"","","","",'align="right"',$sortfield,$sortorder); - print_liste_field_titre($langs->trans("PlannedWorkload"),"","","","",'align="right"',$sortfield,$sortorder); + if (! in_array('plannedworkload', $hiddenfields)) print_liste_field_titre($langs->trans("PlannedWorkload"),"","","","",'align="right"',$sortfield,$sortorder); if (! in_array('declaredprogress', $hiddenfields)) print_liste_field_titre($langs->trans("ProgressDeclared"),"","","","",'align="right"',$sortfield,$sortorder); } print_liste_field_titre($langs->trans("Status"),"","","","",'align="right"',$sortfield,$sortorder); @@ -1016,7 +1016,7 @@ function print_projecttasks_array($db, $form, $socid, $projectsListId, $mytasks= print '<td>'; $projectstatic->ref=$objp->ref; print $projectstatic->getNomUrl(1); - print ' - '.dol_trunc($objp->title,24); + if (! in_array('projectlabel', $hiddenfields)) print ' - '.dol_trunc($objp->title,24); print '</td>'; print '<td>'; if ($objp->fk_soc > 0) @@ -1044,8 +1044,10 @@ function print_projecttasks_array($db, $form, $socid, $projectsListId, $mytasks= $plannedworkload=$objp->planned_workload; $total_plannedworkload+=$plannedworkload; - print '<td align="right">'.($plannedworkload?convertSecondToTime($plannedworkload):'').'</td>'; - + if (! in_array('plannedworkload', $hiddenfields)) + { + print '<td align="right">'.($plannedworkload?convertSecondToTime($plannedworkload):'').'</td>'; + } if (! in_array('declaredprogress', $hiddenfields)) { $declaredprogressworkload=$objp->declared_progess_workload; @@ -1078,7 +1080,7 @@ function print_projecttasks_array($db, $form, $socid, $projectsListId, $mytasks= if (empty($conf->global->PROJECT_HIDE_TASKS)) { print '<td class="liste_total" align="right">'.$total_task.'</td>'; - print '<td class="liste_total" align="right">'.($total_plannedworkload?convertSecondToTime($total_plannedworkload):'').'</td>'; + if (! in_array('plannedworkload', $hiddenfields)) print '<td class="liste_total" align="right">'.($total_plannedworkload?convertSecondToTime($total_plannedworkload):'').'</td>'; if (! in_array('declaredprogress', $hiddenfields)) print '<td class="liste_total" align="right">'.($total_plannedworkload?round(100*$total_declaredprogressworkload/$total_plannedworkload,0).'%':'').'</td>'; } print '<td class="liste_total"></td>'; diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index d173282fdb9..d27df85f4ac 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -1749,9 +1749,9 @@ function left_menu($menu_array_before, $helppagename='', $notused='', $menu_arra $bugbaseurl.= urlencode("- **URL**: " . $_SERVER["REQUEST_URI"] . "\n"); $bugbaseurl.= urlencode("\n"); $bugbaseurl.= urlencode("# Report\n"); - print '<p id="blockvmenuhelpbugreport" class="blockvmenuhelp">'; + print '<div id="blockvmenuhelpbugreport" class="blockvmenuhelp">'; print '<a class="help" target="_blank" href="'.$bugbaseurl.'">'.$langs->trans("FindBug").'</a>'; - print '</p>'; + print '</div>'; } print "</div>\n"; diff --git a/htdocs/projet/index.php b/htdocs/projet/index.php index b91b8763611..8b3d2b76c25 100644 --- a/htdocs/projet/index.php +++ b/htdocs/projet/index.php @@ -132,7 +132,7 @@ include DOL_DOCUMENT_ROOT.'/projet/graph_opportunities.inc.php'; // List of draft projects -print_projecttasks_array($db,$form,$socid,$projectsListId,0,0,$listofoppstatus,array('declaredprogress')); +print_projecttasks_array($db, $form, $socid, $projectsListId, 0, 0, $listofoppstatus, array('projectlabel', 'plannedworkload', 'declaredprogress')); print '</div><div class="fichetwothirdright"><div class="ficheaddleft">'; diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 360cd3631e8..f0f031114e5 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -190,6 +190,10 @@ $colortexttitle=join(',',colorStringToArray($colortexttitle)); $colortext=join(',',colorStringToArray($colortext)); $colortextlink=join(',',colorStringToArray($colortextlink)); +if (! empty($conf->dol_optimize_smallscreen)) $fontsize=11; + +$nbtopmenuentries=$menumanager->showmenu('topnb'); + print '/*'."\n"; print 'colorbackbody='.$colorbackbody."\n"; print 'colorbackvmenu1='.$colorbackvmenu1."\n"; @@ -211,14 +215,9 @@ print 'dol_use_jmobile='.$dol_use_jmobile."\n"; print 'dol_screenwidth='.$_SESSION['dol_screenwidth']."\n"; print 'dol_screenheight='.$_SESSION['dol_screenheight']."\n"; print 'fontsize='.$fontsize."\n"; +print 'nbtopmenuentries='.$nbtopmenuentries."\n"; print '*/'."\n"; -if (! empty($conf->dol_optimize_smallscreen)) $fontsize=11; - - -$nbtopmenuentries=$menumanager->showmenu('topnb'); -//print $nb; - ?> /* ============================================================================== */ @@ -2455,7 +2454,7 @@ input.liste_titre { } .noborder tr.liste_total, .noborder tr.liste_total td, tr.liste_total, form.liste_total { - background: #F0F0F0; + /* background: #F0F0F0; */ } .noborder tr.liste_total td, tr.liste_total td, form.liste_total div { color: #552266; diff --git a/htdocs/theme/md/graph-color.php b/htdocs/theme/md/graph-color.php index 0c091a1ede3..4346d007158 100644 --- a/htdocs/theme/md/graph-color.php +++ b/htdocs/theme/md/graph-color.php @@ -28,7 +28,7 @@ global $theme_bordercolor, $theme_datacolor, $theme_bgcolor, $theme_bgcoloronglet; $theme_bordercolor = array(235,235,224); -$theme_datacolor = array(array(190,190,220), array(200,160,180), array(125,135,150), array(170,140,190), array(190,190,170), array(190,170,190), array(170,190,190), array(150,135,125), array(85,135,150), array(150,135,80), array(150,80,150)); +$theme_datacolor = array(array(140,140,220), array(190,120,120), array(0,160,140), array(190,190,100), array(115,125,150), array(100,170,20), array(250,190,30), array(150,135,125), array(85,135,150), array(150,135,80), array(150,80,150)); $theme_bgcolor = array(hexdec('F4'),hexdec('F4'),hexdec('F4')); $theme_bgcoloronglet = array(hexdec('DE'),hexdec('E7'),hexdec('EC')); diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 6dae9fd3e9c..cac83da19b9 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -185,6 +185,10 @@ $colortexttitle=join(',',colorStringToArray($colortexttitle)); $colortext=join(',',colorStringToArray($colortext)); $colortextlink=join(',',colorStringToArray($colortextlink)); +if (! empty($conf->dol_optimize_smallscreen)) $fontsize=11; + +$nbtopmenuentries=$menumanager->showmenu('topnb'); + print '/*'."\n"; print 'colorbackbody='.$colorbackbody."\n"; print 'colorbackvmenu1='.$colorbackvmenu1."\n"; @@ -205,12 +209,9 @@ print 'dol_no_mouse_hover='.$dol_no_mouse_hover."\n"; print 'dol_use_jmobile='.$dol_use_jmobile."\n"; print 'dol_screenwidth='.$_SESSION['dol_screenwidth']."\n"; print 'dol_screenheight='.$_SESSION['dol_screenheight']."\n"; +print 'nbtopmenuentries='.$nbtopmenuentries."\n"; print '*/'."\n"; -if (! empty($conf->dol_optimize_smallscreen)) $fontsize=11; - -$nbtopmenuentries=$menumanager->showmenu('topnb'); - ?> /* ============================================================================== */ @@ -1933,11 +1934,11 @@ table.liste, table.noborder, table.formdoc, div.noborder { border-style: solid; margin: 0px 0px 2px 0px; - + /* -moz-box-shadow: 2px 2px 4px #CCC; -webkit-box-shadow: 2px 2px 4px #CCC; box-shadow: 2px 2px 4px #CCC; - + */ -moz-border-radius: 0.1em; -webkit-border-radius: 0.1em; border-radius: 0.1em; @@ -1953,14 +1954,14 @@ table.noborder tr, div.noborder form { border-left-width: 1px; border-left-color: #BBBBBB; border-left-style: solid; - height: 26px; + min-height: 26px; } table.liste th, table.noborder th { padding: 5px 2px 5px 3px; /* t r b l */ } table.noborder th, table.noborder td, div.noborder form, div.noborder form div { - padding: 1px 2px 1px 3px; /* t r b l */ + padding: 4px 2px 4px 3px; /* t r b l */ } table.nobordernopadding { @@ -2211,7 +2212,7 @@ table.dataTable td { } tr.even td, tr.pair td, tr.odd td, tr.impair td, form.odd div.tagtd, form.impair div.tagtd, form.pair div.tagtd, div.impair div.tagtd, div.pair div.tagtd, div.liste_titre div.tagtd { padding: 5px 2px 5px 3px; - border-bottom: 1px solid #f4f4f4; + border-bottom: 1px solid #eee; } tr.even td .nobordernopadding tr td, tr.pair td .nobordernopadding tr td, tr.impair td .nobordernopadding tr td, tr.odd td .nobordernopadding tr td { border-bottom: 0px !important; @@ -2309,14 +2310,15 @@ input.liste_titre { } .noborder tr.liste_total, .noborder tr.liste_total td, tr.liste_total, form.liste_total { - background: #F0F0F0; + /* background: #F0F0F0; */ } .noborder tr.liste_total td, tr.liste_total td, form.liste_total div { - border-top: 1px solid #f4f4f4; + /* border-top: 1px solid #f4f4f4; */ color: #332266; font-weight: normal; white-space: nowrap; padding: 4px; + height: 20px; } @@ -3734,7 +3736,23 @@ border-top-right-radius: 6px; -/* CSS style used for small screen */ +::-webkit-scrollbar { + width: 10px; +} +::-webkit-scrollbar-button { + background: #aaa +} +::-webkit-scrollbar-track-piece { + background: #fff +} +::-webkit-scrollbar-thumb { + background: #ddd +} + + + + +/***** CSS style used for small screen *****/ .imgopensurveywizard { @@ -3750,7 +3768,7 @@ border-top-right-radius: 6px; } } -@media only screen and (max-width: <?php echo ($nbtopmenuentries * 85) + 200; ?>px) +@media only screen and (max-width: <?php echo round($nbtopmenuentries * $fontsize * 7, 0) + 200; ?>px) { .mainmenuaspan { display: none; -- GitLab From e6ebc9c2937f59aa9f5c77db0b82bb7520efc635 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Fri, 4 Dec 2015 12:24:36 +0100 Subject: [PATCH 083/197] More complete tooltip help --- htdocs/core/lib/project.lib.php | 2 +- htdocs/langs/fr_FR/projects.lang | 1 + htdocs/theme/md/style.css.php | 3 +++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/htdocs/core/lib/project.lib.php b/htdocs/core/lib/project.lib.php index 5eeb13ca937..97bea63e436 100644 --- a/htdocs/core/lib/project.lib.php +++ b/htdocs/core/lib/project.lib.php @@ -1075,7 +1075,7 @@ function print_projecttasks_array($db, $form, $socid, $projectsListId, $mytasks= if (! empty($conf->global->PROJECT_USE_OPPORTUNITIES)) { print '<td class="liste_total" align="right">'.price($total_opp_amount, 0, '', 1, -1, -1, $conf->currency).'</td>'; - print '<td class="liste_total" align="right">'.$form->textwithpicto(price($ponderated_opp_amount, 0, '', 1, -1, -1, $conf->currency), $langs->trans("OpportunityPonderatedAmount"), 1).'</td>'; + print '<td class="liste_total" align="right">'.$form->textwithpicto(price($ponderated_opp_amount, 0, '', 1, -1, -1, $conf->currency), $langs->trans("OpportunityPonderatedAmountDesc"), 1).'</td>'; } if (empty($conf->global->PROJECT_HIDE_TASKS)) { diff --git a/htdocs/langs/fr_FR/projects.lang b/htdocs/langs/fr_FR/projects.lang index 97f36381257..256e1bc4129 100644 --- a/htdocs/langs/fr_FR/projects.lang +++ b/htdocs/langs/fr_FR/projects.lang @@ -178,6 +178,7 @@ TaskAssignedToEnterTime=Tâche assignée. La saisie de temps sur cette tâche de OpenedProjectsByThirdparties=Projets ouverts par tiers OpportunityTotalAmount=Montant total des opportunités OpportunityPonderatedAmount=Montant pondéré des opportunités +OpportunityPonderatedAmountDesc=Montant pondéré par la probabilité (dépendante du statut) des opportunités OppStatusPROSP=Prospection OppStatusQUAL=Qualification OppStatusPROPO=Proposition diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index cac83da19b9..261a288ddc3 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -2214,6 +2214,9 @@ tr.even td, tr.pair td, tr.odd td, tr.impair td, form.odd div.tagtd, form.impair padding: 5px 2px 5px 3px; border-bottom: 1px solid #eee; } +tr.even:last-child td, tr.pair:last-child td, tr.odd:last-child td, tr.impair:last-child td { + border-bottom: 0px !important; +} tr.even td .nobordernopadding tr td, tr.pair td .nobordernopadding tr td, tr.impair td .nobordernopadding tr td, tr.odd td .nobordernopadding tr td { border-bottom: 0px !important; } -- GitLab From 6598ac67457f182cddb9914b5ab279240cd17a94 Mon Sep 17 00:00:00 2001 From: aspangaro <alexandre.spangaro@gmail.com> Date: Fri, 4 Dec 2015 12:48:36 +0100 Subject: [PATCH 084/197] Add rights to see tab (hrm->employee->read) --- htdocs/core/lib/usergroups.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/lib/usergroups.lib.php b/htdocs/core/lib/usergroups.lib.php index e8961645c62..5083ec3b495 100644 --- a/htdocs/core/lib/usergroups.lib.php +++ b/htdocs/core/lib/usergroups.lib.php @@ -94,7 +94,7 @@ function user_prepare_head($object) // $this->tabs = array('entity:-tabname); to remove a tab complete_head_from_modules($conf,$langs,$object,$head,$h,'user'); - if (! empty($conf->hrm->enabled)) + if (! empty($conf->hrm->enabled) && $user->rights->hrm->employee->read) { // Bank $head[$h][0] = DOL_URL_ROOT.'/user/bank.php?id='.$object->id; -- GitLab From bcadc33e315661695ea9b8e34f20cf557a18b607 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Fri, 4 Dec 2015 15:37:28 +0100 Subject: [PATCH 085/197] Debug visibility on task/projects --- htdocs/core/boxes/box_task.php | 2 +- htdocs/core/lib/project.lib.php | 6 +-- htdocs/core/menus/init_menu_auguria.sql | 4 +- htdocs/core/menus/standard/eldy.lib.php | 4 +- htdocs/core/search.php | 2 +- htdocs/projet/activity/perday.php | 14 +++--- htdocs/projet/activity/perweek.php | 39 ++++++++------- htdocs/projet/card.php | 2 +- htdocs/projet/class/task.class.php | 27 ++++++----- htdocs/projet/contact.php | 2 +- htdocs/projet/document.php | 2 +- htdocs/projet/element.php | 2 +- htdocs/projet/ganttview.php | 2 +- htdocs/projet/list.php | 7 +-- htdocs/projet/note.php | 2 +- htdocs/projet/tasks.php | 6 +-- htdocs/projet/tasks/contact.php | 2 + htdocs/projet/tasks/document.php | 4 +- htdocs/projet/tasks/{index.php => list.php} | 53 +++++++++++++-------- htdocs/projet/tasks/note.php | 4 +- htdocs/projet/tasks/task.php | 4 +- htdocs/projet/tasks/time.php | 4 +- htdocs/theme/eldy/style.css.php | 4 ++ htdocs/theme/md/style.css.php | 4 ++ 24 files changed, 115 insertions(+), 87 deletions(-) rename htdocs/projet/tasks/{index.php => list.php} (84%) diff --git a/htdocs/core/boxes/box_task.php b/htdocs/core/boxes/box_task.php index 97767dd15d1..384e30f8b12 100644 --- a/htdocs/core/boxes/box_task.php +++ b/htdocs/core/boxes/box_task.php @@ -104,7 +104,7 @@ class box_task extends ModeleBoxes $this->info_box_contents[$i][] = array( 'td' => 'align="right"', 'text' => $objp->nb." ".$langs->trans("Tasks"), - 'url' => DOL_URL_ROOT."/projet/tasks/index.php?leftmenu=projects&viewstatut=".$objp->fk_statut, + 'url' => DOL_URL_ROOT."/projet/tasks/list.php?leftmenu=projects&viewstatut=".$objp->fk_statut, ); $totalnb += $objp->nb; $this->info_box_contents[$i][] = array('td' => 'align="right"', 'text' => ConvertSecondToTime($objp->plannedtot,'all',25200,5)); diff --git a/htdocs/core/lib/project.lib.php b/htdocs/core/lib/project.lib.php index 97bea63e436..733a83a500f 100644 --- a/htdocs/core/lib/project.lib.php +++ b/htdocs/core/lib/project.lib.php @@ -794,14 +794,14 @@ function projectLinesPerWeek(&$inc, $firstdaytoshow, $fuser, $parent, $lines, &$ $dayWorkLoad = $projectstatic->weekWorkLoadPerTask[$tmpday][$lines[$i]->id]; $alreadyspent=''; if ($dayWorkLoad > 0) $alreadyspent=convertSecondToTime($dayWorkLoad,'allhourmin'); - $tableCell ='<td align="center">'; - $tableCell.='<span class="timesheetalreadyrecorded"><input type="text" class="center" size="2" disabled id="timespent['.$inc.']['.$idw.']" name="task['.$lines[$i]->id.']['.$idw.']" value="'.$alreadyspent.'"></span>'; + $tableCell ='<td align="center" class="hide'.$idw.'">'; + $tableCell.='<span class="timesheetalreadyrecorded"><input type="text" class="center smallpadd" size="2" disabled id="timespent['.$inc.']['.$idw.']" name="task['.$lines[$i]->id.']['.$idw.']" value="'.$alreadyspent.'"></span>'; //$placeholder=' placeholder="00:00"'; $placeholder=''; //if (! $disabledtask) //{ $tableCell.='+'; - $tableCell.='<input type="text" alt="'.$langs->trans("AddHereTimeSpentForDay",$tmparray['day'],$tmparray['mon']).'" title="'.$langs->trans("AddHereTimeSpentForDay",$tmparray['day'],$tmparray['mon']).'" '.($disabledtask?'disabled':$placeholder).' class="center" size="2" id="timeadded['.$inc.']['.$idw.']" name="task['.$lines[$i]->id.']['.$idw.']" value="" cols="2" maxlength="5"'; + $tableCell.='<input type="text" alt="'.$langs->trans("AddHereTimeSpentForDay",$tmparray['day'],$tmparray['mon']).'" title="'.$langs->trans("AddHereTimeSpentForDay",$tmparray['day'],$tmparray['mon']).'" '.($disabledtask?'disabled':$placeholder).' class="center smallpadd" size="2" id="timeadded['.$inc.']['.$idw.']" name="task['.$lines[$i]->id.']['.$idw.']" value="" cols="2" maxlength="5"'; $tableCell.=' onkeypress="return regexEvent(this,event,\'timeChar\')"'; $tableCell.= 'onblur="regexEvent(this,event,\''.$modeinput.'\'); updateTotal('.$idw.',\''.$modeinput.'\')" />'; //} diff --git a/htdocs/core/menus/init_menu_auguria.sql b/htdocs/core/menus/init_menu_auguria.sql index 6e21ae19c0f..9f583ed4c04 100644 --- a/htdocs/core/menus/init_menu_auguria.sql +++ b/htdocs/core/menus/init_menu_auguria.sql @@ -259,12 +259,12 @@ insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, left insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->projet->enabled', __HANDLER__, 'left', 3700__+MAX_llx_menu__, 'project', '', 7__+MAX_llx_menu__, '/projet/activity/index.php?leftmenu=projects', 'Activities', 0, 'projects', '$user->rights->projet->lire', '', 2, 0, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->projet->enabled', __HANDLER__, 'left', 3701__+MAX_llx_menu__, 'project', '', 3700__+MAX_llx_menu__, '/projet/tasks.php?leftmenu=projects&action=create', 'NewTask', 1, 'projects', '$user->rights->projet->creer', '', 2, 1, __ENTITY__); -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->projet->enabled', __HANDLER__, 'left', 3702__+MAX_llx_menu__, 'project', '', 3700__+MAX_llx_menu__, '/projet/tasks/index.php?leftmenu=projects', 'List', 1, 'projects', '$user->rights->projet->lire', '', 2, 2, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->projet->enabled', __HANDLER__, 'left', 3702__+MAX_llx_menu__, 'project', '', 3700__+MAX_llx_menu__, '/projet/tasks/list.php?leftmenu=projects', 'List', 1, 'projects', '$user->rights->projet->lire', '', 2, 2, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->projet->enabled', __HANDLER__, 'left', 3703__+MAX_llx_menu__, 'project', '', 3700__+MAX_llx_menu__, '/projet/activity/perweek.php?leftmenu=projects', 'NewTimeSpent', 1, 'projects', '$user->rights->projet->lire', '', 2, 3, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->projet->enabled', __HANDLER__, 'left', 3800__+MAX_llx_menu__, 'project', '', 7__+MAX_llx_menu__, '/projet/activity/index.php?leftmenu=projects&mode=mine', 'MyActivities', 0, 'projects', '$user->rights->projet->lire', '', 2, 0, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->projet->enabled', __HANDLER__, 'left', 3801__+MAX_llx_menu__, 'project', '', 3800__+MAX_llx_menu__, '/projet/tasks.php?leftmenu=projects&action=create&mode=mine', 'NewTask', 1, 'projects', '$user->rights->projet->creer', '', 2, 1, __ENTITY__); -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->projet->enabled', __HANDLER__, 'left', 3802__+MAX_llx_menu__, 'project', '', 3800__+MAX_llx_menu__, '/projet/tasks/index.php?leftmenu=projects&mode=mine', 'List', 1, 'projects', '$user->rights->projet->lire', '', 2, 2, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->projet->enabled', __HANDLER__, 'left', 3802__+MAX_llx_menu__, 'project', '', 3800__+MAX_llx_menu__, '/projet/tasks/list.php?leftmenu=projects&mode=mine', 'List', 1, 'projects', '$user->rights->projet->lire', '', 2, 2, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->projet->enabled', __HANDLER__, 'left', 3803__+MAX_llx_menu__, 'project', '', 3800__+MAX_llx_menu__, '/projet/activity/perweek.php?leftmenu=projects&mode=mine', 'NewTimeSpent', 1, 'projects', '$user->rights->projet->lire', '', 2, 3, __ENTITY__); -- Tools insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->mailing->enabled', __HANDLER__, 'left', 3900__+MAX_llx_menu__, 'tools', 'mailing', 8__+MAX_llx_menu__, '/comm/mailing/index.php?leftmenu=mailing', 'EMailings', 0, 'mails', '$user->rights->mailing->lire', '', 0, 0, __ENTITY__); diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index 03b3dc785bb..a04448b60d6 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -1213,13 +1213,13 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu // Project affected to user $newmenu->add("/projet/activity/index.php?mode=mine", $langs->trans("MyActivities"), 0, $user->rights->projet->lire); $newmenu->add("/projet/tasks.php?action=create&mode=mine", $langs->trans("NewTask"), 1, $user->rights->projet->creer); - $newmenu->add("/projet/tasks/index.php?mode=mine", $langs->trans("List"), 1, $user->rights->projet->lire); + $newmenu->add("/projet/tasks/list.php?mode=mine", $langs->trans("List"), 1, $user->rights->projet->lire); $newmenu->add("/projet/activity/perweek.php?mode=mine", $langs->trans("NewTimeSpent"), 1, $user->rights->projet->creer); // All project i have permission on $newmenu->add("/projet/activity/index.php", $langs->trans("Activities"), 0, $user->rights->projet->lire && $user->rights->projet->lire); $newmenu->add("/projet/tasks.php?action=create", $langs->trans("NewTask"), 1, $user->rights->projet->creer && $user->rights->projet->creer); - $newmenu->add("/projet/tasks/index.php", $langs->trans("List"), 1, $user->rights->projet->lire && $user->rights->projet->lire); + $newmenu->add("/projet/tasks/list.php", $langs->trans("List"), 1, $user->rights->projet->lire && $user->rights->projet->lire); $newmenu->add("/projet/activity/perweek.php", $langs->trans("NewTimeSpent"), 1, $user->rights->projet->creer && $user->rights->projet->creer); } } diff --git a/htdocs/core/search.php b/htdocs/core/search.php index 5f66c34721d..ccb8838e42f 100644 --- a/htdocs/core/search.php +++ b/htdocs/core/search.php @@ -126,7 +126,7 @@ if (GETPOST('search_project') != '') } if (GETPOST('search_task') != '') { - header("Location: ".DOL_URL_ROOT.'/projet/tasks/index.php?mode=search&search_all='.urlencode(GETPOST('search_task'))); + header("Location: ".DOL_URL_ROOT.'/projet/tasks/list.php?mode=search&search_all='.urlencode(GETPOST('search_task'))); exit; } diff --git a/htdocs/projet/activity/perday.php b/htdocs/projet/activity/perday.php index 93305dbc63c..5af9e9d57c3 100644 --- a/htdocs/projet/activity/perday.php +++ b/htdocs/projet/activity/perday.php @@ -245,10 +245,10 @@ if ($id) $project->fetch_thirdparty(); } -$onlyopened=1; // or -1 -$tasksarray=$taskstatic->getTasksArray(0,0,($project->id?$project->id:$projectsListId),$socid,0,'',$onlyopened); // We want to see all task of opened project i am allowed to see, not only mine. Later only mine will be editable later. -$projectsrole=$taskstatic->getUserRolesForProjectsOrTasks($usertoprocess,0,($project->id?$project->id:$projectsListId),0); -$tasksrole=$taskstatic->getUserRolesForProjectsOrTasks(0,$usertoprocess,($project->id?$project->id:$projectsListId),0); +$onlyopenedproject=1; // or -1 +$tasksarray=$taskstatic->getTasksArray(0, 0, ($project->id?$project->id:0), $socid, 0, '', $onlyopenedproject); // We want to see all task of opened project i am allowed to see, not only mine. Later only mine will be editable later. +$projectsrole=$taskstatic->getUserRolesForProjectsOrTasks($usertoprocess, 0, ($project->id?$project->id:0), 0, $onlyopenedproject); +$tasksrole=$taskstatic->getUserRolesForProjectsOrTasks(0, $usertoprocess, ($project->id?$project->id:0), 0, $onlyopenedproject); //var_dump($tasksarray); //var_dump($projectsrole); //var_dump($taskrole); @@ -284,11 +284,11 @@ $head=project_timesheet_prepare_head($mode); dol_fiche_head($head, 'inputperday', '', 0, 'task'); // Show description of content -if ($mine) print $langs->trans("MyTasksDesc").($onlyopened?' '.$langs->trans("OnlyOpenedProject"):'').'<br>'; +if ($mine) print $langs->trans("MyTasksDesc").($onlyopenedproject?' '.$langs->trans("OnlyOpenedProject"):'').'<br>'; else { - if ($user->rights->projet->all->lire && ! $socid) print $langs->trans("ProjectsDesc").($onlyopened?' '.$langs->trans("OnlyOpenedProject"):'').'<br>'; - else print $langs->trans("ProjectsPublicTaskDesc").($onlyopened?' '.$langs->trans("AlsoOnlyOpenedProject"):'').'<br>'; + if ($user->rights->projet->all->lire && ! $socid) print $langs->trans("ProjectsDesc").($onlyopenedproject?' '.$langs->trans("OnlyOpenedProject"):'').'<br>'; + else print $langs->trans("ProjectsPublicTaskDesc").($onlyopenedproject?' '.$langs->trans("AlsoOnlyOpenedProject"):'').'<br>'; } if ($mine) { diff --git a/htdocs/projet/activity/perweek.php b/htdocs/projet/activity/perweek.php index a8f531cc790..8a65dfe4162 100644 --- a/htdocs/projet/activity/perweek.php +++ b/htdocs/projet/activity/perweek.php @@ -215,19 +215,18 @@ $taskstatic = new Task($db); $title=$langs->trans("TimeSpent"); if ($mine) $title=$langs->trans("MyTimeSpent"); -//$projectsListId = $projectstatic->getProjectsAuthorizedForUser($user,$mine,1); -$projectsListId = $projectstatic->getProjectsAuthorizedForUser($usertoprocess,0,1); // Return all project i have permission on. I want my tasks and some of my task may be on a public projet that is not my project - +$projectsListId = $projectstatic->getProjectsAuthorizedForUser($usertoprocess,0,1); // Return all project i have permission on (assigned to me+public). I want my tasks and some of my task may be on a public projet that is not my project +//var_dump($projectsListId); if ($id) { $project->fetch($id); $project->fetch_thirdparty(); } -$onlyopened=1; // or -1 -$tasksarray=$taskstatic->getTasksArray(0,0,($project->id?$project->id:$projectsListId),$socid,0,'',$onlyopened); // We want to see all task of opened project i am allowed to see, not only mine. Later only mine will be editable later. -$projectsrole=$taskstatic->getUserRolesForProjectsOrTasks($usertoprocess,0,($project->id?$project->id:$projectsListId),0); -$tasksrole=$taskstatic->getUserRolesForProjectsOrTasks(0,$usertoprocess,($project->id?$project->id:$projectsListId),0); +$onlyopenedproject=1; // or -1 +$tasksarray=$taskstatic->getTasksArray(0, 0, ($project->id?$project->id:0), $socid, 0, '', $onlyopenedproject); // We want to see all task of opened project i am allowed to see, not only mine. Later only mine will be editable later. +$projectsrole=$taskstatic->getUserRolesForProjectsOrTasks($usertoprocess, 0, ($project->id?$project->id:0), 0, $onlyopenedproject); +$tasksrole=$taskstatic->getUserRolesForProjectsOrTasks(0, $usertoprocess, ($project->id?$project->id:0), 0, $onlyopenedproject); //var_dump($tasksarray); //var_dump($projectsrole); //var_dump($taskrole); @@ -261,11 +260,11 @@ $head=project_timesheet_prepare_head($mode); dol_fiche_head($head, 'inputperweek', '', 0, 'task'); // Show description of content -if ($mine) print $langs->trans("MyTasksDesc").($onlyopened?' '.$langs->trans("OnlyOpenedProject"):'').'<br>'; +if ($mine) print $langs->trans("MyTasksDesc").($onlyopenedproject?' '.$langs->trans("OnlyOpenedProject"):'').'<br>'; else { - if ($user->rights->projet->all->lire && ! $socid) print $langs->trans("ProjectsDesc").($onlyopened?' '.$langs->trans("OnlyOpenedProject"):'').'<br>'; - else print $langs->trans("ProjectsPublicTaskDesc").($onlyopened?' '.$langs->trans("AlsoOnlyOpenedProject"):'').'<br>'; + if ($user->rights->projet->all->lire && ! $socid) print $langs->trans("ProjectsDesc").($onlyopenedproject?' '.$langs->trans("OnlyOpenedProject"):'').'<br>'; + else print $langs->trans("ProjectsPublicTaskDesc").($onlyopenedproject?' '.$langs->trans("AlsoOnlyOpenedProject"):'').'<br>'; } if ($mine) { @@ -317,7 +316,7 @@ $startday=dol_mktime(12, 0, 0, $startdayarray['first_month'], $startdayarray['fi for($i=0;$i<7;$i++) { - print '<td width="7%" align="center">'.dol_print_date($startday + ($i * 3600 * 24), '%a').'<br>'.dol_print_date($startday + ($i * 3600 * 24), 'day').'</td>'; + print '<td width="7%" align="center" class="hide'.$i.'">'.dol_print_date($startday + ($i * 3600 * 24), '%a').'<br>'.dol_print_date($startday + ($i * 3600 * 24), 'day').'</td>'; } print '<td class="liste_total"></td>'; @@ -328,18 +327,22 @@ $restrictviewformytask=(empty($conf->global->PROJECT_TIME_SHOW_TASK_NOT_ASSIGNED if (count($tasksarray) > 0) { + //var_dump($tasksarray); + //var_dump($tasksrole); + $j=0; + $level=0; projectLinesPerWeek($j, $firstdaytoshow, $usertoprocess, 0, $tasksarray, $level, $projectsrole, $tasksrole, $mine, $restrictviewformytask); print '<tr class="liste_total"> <td class="liste_total" colspan="7" align="right">'.$langs->trans("Total").'</td> - <td class="liste_total" width="7%" align="center"><div id="totalDay[0]"> </div></td> - <td class="liste_total" width="7%" align="center"><div id="totalDay[1]"> </div></td> - <td class="liste_total" width="7%" align="center"><div id="totalDay[2]"> </div></td> - <td class="liste_total" width="7%" align="center"><div id="totalDay[3]"> </div></td> - <td class="liste_total" width="7%" align="center"><div id="totalDay[4]"> </div></td> - <td class="liste_total" width="7%" align="center"><div id="totalDay[5]"> </div></td> - <td class="liste_total" width="7%" align="center"><div id="totalDay[6]"> </div></td> + <td class="liste_total hide0" width="7%" align="center"><div id="totalDay[0]"> </div></td> + <td class="liste_total hide1" width="7%" align="center"><div id="totalDay[1]"> </div></td> + <td class="liste_total hide2" width="7%" align="center"><div id="totalDay[2]"> </div></td> + <td class="liste_total hide3" width="7%" align="center"><div id="totalDay[3]"> </div></td> + <td class="liste_total hide4" width="7%" align="center"><div id="totalDay[4]"> </div></td> + <td class="liste_total hide5" width="7%" align="center"><div id="totalDay[5]"> </div></td> + <td class="liste_total hide6" width="7%" align="center"><div id="totalDay[6]"> </div></td> <td class="liste_total"></td> </tr>'; } diff --git a/htdocs/projet/card.php b/htdocs/projet/card.php index c05cb6948a5..51939d8e9fc 100644 --- a/htdocs/projet/card.php +++ b/htdocs/projet/card.php @@ -708,7 +708,7 @@ else // Define a complementary filter for search of next/prev ref. if (! $user->rights->projet->all->lire) { - $objectsListId = $object->getProjectsAuthorizedForUser($user,$mine,0); + $objectsListId = $object->getProjectsAuthorizedForUser($user,0,0); $object->next_prev_filter=" rowid in (".(count($objectsListId)?join(',',array_keys($objectsListId)):'0').")"; } print $form->showrefnav($object, 'ref', $linkback, 1, 'ref', 'ref'); diff --git a/htdocs/projet/class/task.class.php b/htdocs/projet/class/task.class.php index c6c5f65f63d..0b490aff863 100644 --- a/htdocs/projet/class/task.class.php +++ b/htdocs/projet/class/task.class.php @@ -557,10 +557,10 @@ class Task extends CommonObject * @param string $filteronprojstatus Filter on project status * @param string $morewherefilter Add more filter into where SQL request * @param string $filteronprojuser Filter on user that is a contact of project - * @param string $filterontaskuse Filter on user assigned to task + * @param string $filterontaskuser Filter on user assigned to task * @return array Array of tasks */ - function getTasksArray($usert=0, $userp=0, $projectid=0, $socid=0, $mode=0, $filteronprojref='', $filteronprojstatus=-1, $morewherefilter='',$filteronprojuser=0,$filterontaskuse=0) + function getTasksArray($usert=0, $userp=0, $projectid=0, $socid=0, $mode=0, $filteronprojref='', $filteronprojstatus=-1, $morewherefilter='',$filteronprojuser=0,$filterontaskuser=0) { global $conf; @@ -587,11 +587,11 @@ class Task extends CommonObject } else return 'BadValueForParameterMode'; - if ($filteronprojuser) + if ($filteronprojuser > 0) { // TODO } - if ($filterontaskuser) + if ($filterontaskuser > 0) { // TODO } @@ -665,15 +665,16 @@ class Task extends CommonObject } /** - * Return list of roles for a user for each projects or each tasks (or a particular project or task). + * Return list of roles for a user for each projects or each tasks (or a particular project or a particular task). * - * @param User $userp Return roles on project for this internal user (task id can't be defined) - * @param User $usert Return roles on task for this internal user - * @param int $projectid Project id list separated with , to filter on project - * @param int $taskid Task id to filter on a task - * @return array Array (projectid => 'list of roles for project' or taskid => 'list of roles for task') + * @param User $userp Return roles on project for this internal user. If set, usert and taskid must not be defined. + * @param User $usert Return roles on task for this internal user. If set userp must not be defined. + * @param int $projectid Project id list separated with , to filter on project + * @param int $taskid Task id to filter on a task + * @param string $filteronprojstatus Filter on project status if userp is set. Not used if userp not defined. + * @return array Array (projectid => 'list of roles for project' or taskid => 'list of roles for task') */ - function getUserRolesForProjectsOrTasks($userp,$usert,$projectid='',$taskid=0) + function getUserRolesForProjectsOrTasks($userp, $usert, $projectid='', $taskid=0, $filteronprojstatus=-1) { $arrayroles = array(); @@ -694,10 +695,12 @@ class Task extends CommonObject /* Liste des taches et role sur les projets ou taches */ $sql = "SELECT pt.rowid as pid, ec.element_id, ctc.code, ctc.source"; if ($userp) $sql.= " FROM ".MAIN_DB_PREFIX."projet as pt"; - if ($usert) $sql.= " FROM ".MAIN_DB_PREFIX."projet_task as pt"; + if ($usert) $sql.= " FROM ".MAIN_DB_PREFIX."projet as p, ".MAIN_DB_PREFIX."projet_task as pt"; $sql.= ", ".MAIN_DB_PREFIX."element_contact as ec"; $sql.= ", ".MAIN_DB_PREFIX."c_type_contact as ctc"; $sql.= " WHERE pt.rowid = ec.element_id"; + if ($userp && $filteronprojstatus > -1) $sql.= " AND pt.fk_statut = ".$filteronprojstatus; + if ($usert && $filteronprojstatus > -1) $sql.= " AND pt.fk_projet = p.rowid AND p.fk_statut = ".$filteronprojstatus; if ($userp) $sql.= " AND ctc.element = 'project'"; if ($usert) $sql.= " AND ctc.element = 'project_task'"; $sql.= " AND ctc.rowid = ec.fk_c_type_contact"; diff --git a/htdocs/projet/contact.php b/htdocs/projet/contact.php index d20ad16c9fa..f2d44e74dca 100644 --- a/htdocs/projet/contact.php +++ b/htdocs/projet/contact.php @@ -161,7 +161,7 @@ if ($id > 0 || ! empty($ref)) // Define a complementary filter for search of next/prev ref. if (! $user->rights->projet->all->lire) { - $objectsListId = $object->getProjectsAuthorizedForUser($user,$mine,0); + $objectsListId = $object->getProjectsAuthorizedForUser($user,0,0); $object->next_prev_filter=" rowid in (".(count($objectsListId)?join(',',array_keys($objectsListId)):'0').")"; } print $form->showrefnav($object, 'ref', $linkback, 1, 'ref', 'ref', ''); diff --git a/htdocs/projet/document.php b/htdocs/projet/document.php index 44332ff558c..ce033f0e193 100644 --- a/htdocs/projet/document.php +++ b/htdocs/projet/document.php @@ -115,7 +115,7 @@ if ($object->id > 0) // Define a complementary filter for search of next/prev ref. if (! $user->rights->projet->all->lire) { - $projectsListId = $object->getProjectsAuthorizedForUser($user,$mine,0); + $projectsListId = $object->getProjectsAuthorizedForUser($user,0,0); $object->next_prev_filter=" rowid in (".(count($projectsListId)?join(',',array_keys($projectsListId)):'0').")"; } print $form->showrefnav($object, 'ref', $linkback, 1, 'ref', 'ref'); diff --git a/htdocs/projet/element.php b/htdocs/projet/element.php index 6ef8edcc459..ff3e3c32218 100644 --- a/htdocs/projet/element.php +++ b/htdocs/projet/element.php @@ -125,7 +125,7 @@ print '<tr><td width="30%">'.$langs->trans("Ref").'</td><td>'; // Define a complementary filter for search of next/prev ref. if (! $user->rights->projet->all->lire) { - $projectsListId = $object->getProjectsAuthorizedForUser($user,$mine,0); + $projectsListId = $object->getProjectsAuthorizedForUser($user,0,0); $object->next_prev_filter=" rowid in (".(count($projectsListId)?join(',',array_keys($projectsListId)):'0').")"; } print $form->showrefnav($object, 'ref', $linkback, 1, 'ref', 'ref'); diff --git a/htdocs/projet/ganttview.php b/htdocs/projet/ganttview.php index 4bafee55e82..091059d76e3 100644 --- a/htdocs/projet/ganttview.php +++ b/htdocs/projet/ganttview.php @@ -109,7 +109,7 @@ if ($id > 0 || ! empty($ref)) // Define a complementary filter for search of next/prev ref. if (! $user->rights->projet->all->lire) { - $projectsListId = $object->getProjectsAuthorizedForUser($user,$mine,0); + $projectsListId = $object->getProjectsAuthorizedForUser($user,0,0); $object->next_prev_filter=" rowid in (".(count($projectsListId)?join(',',array_keys($projectsListId)):'0').")"; } print $form->showrefnav($object, 'ref', $linkback, 1, 'ref', 'ref', '', $param); diff --git a/htdocs/projet/list.php b/htdocs/projet/list.php index a50595db609..3f9aea52444 100644 --- a/htdocs/projet/list.php +++ b/htdocs/projet/list.php @@ -60,8 +60,6 @@ $offset = $conf->liste_limit * $page ; $pageprev = $page - 1; $pagenext = $page + 1; -$mine = $_REQUEST['mode']=='mine' ? 1 : 0; - $search_all=GETPOST("search_all"); $search_ref=GETPOST("search_ref"); $search_label=GETPOST("search_label"); @@ -75,6 +73,9 @@ $search_user=GETPOST('search_user','int'); $search_sale=GETPOST('search_sale','int'); $optioncss = GETPOST('optioncss','alpha'); +$mine = $_REQUEST['mode']=='mine' ? 1 : 0; +if ($mine) $search_user = $user->id; + $day = GETPOST('day','int'); $month = GETPOST('month','int'); $year = GETPOST('year','int'); @@ -306,7 +307,7 @@ if ($resql) if (empty($conf->global->PROJECT_LIST_HIDE_STARTDATE)) $colspan++; - // If the user can view prospects other than his' + // If the user can view thirdparties other than his' if ($user->rights->societe->client->voir || $socid) { $langs->load("commercial"); diff --git a/htdocs/projet/note.php b/htdocs/projet/note.php index fe6137223d5..45c4cffd65b 100644 --- a/htdocs/projet/note.php +++ b/htdocs/projet/note.php @@ -88,7 +88,7 @@ if ($id > 0 || ! empty($ref)) // Define a complementary filter for search of next/prev ref. if (! $user->rights->projet->all->lire) { - $projectsListId = $object->getProjectsAuthorizedForUser($user,$mine,0); + $projectsListId = $object->getProjectsAuthorizedForUser($user,0,0); $object->next_prev_filter=" rowid in (".(count($projectsListId)?join(',',array_keys($projectsListId)):'0').")"; } print $form->showrefnav($object, 'ref', $linkback, 1, 'ref', 'ref'); diff --git a/htdocs/projet/tasks.php b/htdocs/projet/tasks.php index b73f3456324..63c2bd72f28 100644 --- a/htdocs/projet/tasks.php +++ b/htdocs/projet/tasks.php @@ -146,7 +146,7 @@ if ($action == 'createtask' && $user->rights->projet->creer) } else if (empty($projectid)) { - header("Location: ".DOL_URL_ROOT.'/projet/tasks/index.php'.(empty($mode)?'':'?mode='.$mode)); + header("Location: ".DOL_URL_ROOT.'/projet/tasks/list.php'.(empty($mode)?'':'?mode='.$mode)); exit; } $id = $projectid; @@ -162,7 +162,7 @@ if ($action == 'createtask' && $user->rights->projet->creer) else if (empty($id)) { // We go back on task list - header("Location: ".DOL_URL_ROOT.'/projet/tasks/index.php'.(empty($mode)?'':'?mode='.$mode)); + header("Location: ".DOL_URL_ROOT.'/projet/tasks/list.php'.(empty($mode)?'':'?mode='.$mode)); exit; } } @@ -215,7 +215,7 @@ if ($id > 0 || ! empty($ref)) // Define a complementary filter for search of next/prev ref. if (! $user->rights->projet->all->lire) { - $projectsListId = $object->getProjectsAuthorizedForUser($user,$mine,0); + $projectsListId = $object->getProjectsAuthorizedForUser($user,0,0); $object->next_prev_filter=" rowid in (".(count($projectsListId)?join(',',array_keys($projectsListId)):'0').")"; } print $form->showrefnav($object, 'ref', $linkback, 1, 'ref', 'ref', '', $param); diff --git a/htdocs/projet/tasks/contact.php b/htdocs/projet/tasks/contact.php index 59dab34b33e..787bc8e120a 100644 --- a/htdocs/projet/tasks/contact.php +++ b/htdocs/projet/tasks/contact.php @@ -173,6 +173,8 @@ if ($id > 0 || ! empty($ref)) { if ($object->fetch($id, $ref) > 0) { + $id = $object->id; // So when doing a search from ref, id is also set correctly. + $result=$projectstatic->fetch($object->fk_project); if (! empty($projectstatic->socid)) $projectstatic->fetch_thirdparty(); diff --git a/htdocs/projet/tasks/document.php b/htdocs/projet/tasks/document.php index 1afc949cfa0..97a09ad1f87 100644 --- a/htdocs/projet/tasks/document.php +++ b/htdocs/projet/tasks/document.php @@ -143,7 +143,7 @@ if ($object->id > 0) // Define a complementary filter for search of next/prev ref. if (! $user->rights->projet->all->lire) { - $projectsListId = $projectstatic->getProjectsAuthorizedForUser($user,$mine,0); + $projectsListId = $projectstatic->getProjectsAuthorizedForUser($user,0,0); $projectstatic->next_prev_filter=" rowid in (".(count($projectsListId)?join(',',array_keys($projectsListId)):'0').")"; } print $form->showrefnav($projectstatic,'project_ref','',1,'ref','ref','',$param.'&withproject=1'); @@ -203,7 +203,7 @@ if ($object->id > 0) print '</td><td colspan="3">'; if (empty($withproject) || empty($projectstatic->id)) { - $projectsListId = $projectstatic->getProjectsAuthorizedForUser($user,$mine,1); + $projectsListId = $projectstatic->getProjectsAuthorizedForUser($user,0,1); $object->next_prev_filter=" fk_projet in (".$projectsListId.")"; } else $object->next_prev_filter=" fk_projet = ".$projectstatic->id; diff --git a/htdocs/projet/tasks/index.php b/htdocs/projet/tasks/list.php similarity index 84% rename from htdocs/projet/tasks/index.php rename to htdocs/projet/tasks/list.php index cd8e3af37bd..e3540afc1aa 100644 --- a/htdocs/projet/tasks/index.php +++ b/htdocs/projet/tasks/list.php @@ -1,6 +1,6 @@ <?php /* Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org> - * Copyright (C) 2006-2014 Laurent Destailleur <eldy@users.sourceforge.net> + * Copyright (C) 2006-2015 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2006-2010 Regis Houssin <regis.houssin@capnetworks.com> * * This program is free software; you can redistribute it and/or modify @@ -18,7 +18,7 @@ */ /** - * \file htdocs/projet/tasks/index.php + * \file htdocs/projet/tasks/list.php * \ingroup project * \brief List all task of a project */ @@ -43,6 +43,9 @@ $search_task_label=GETPOST('search_task_label'); $search_project_user=GETPOST('search_project_user'); $search_task_user=GETPOST('search_task_user'); +$mine = $_REQUEST['mode']=='mine' ? 1 : 0; +if ($mine) $search_task_user = $user->id; + // Security check $socid=0; if ($user->societe_id > 0) $socid = $user->societe_id; @@ -54,8 +57,6 @@ $page = GETPOST("page"); $page = is_numeric($page) ? $page : 0; $page = $page == -1 ? 0 : $page; -$mine = $_REQUEST['mode']=='mine' ? 1 : 0; - // Purge criteria if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter.x") || GETPOST("button_removefilter")) // Both test are required to be compatible with all browsers { @@ -64,6 +65,8 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter.x") || GETP $search_status=""; $search_task_ref=""; $search_task_label=""; + $search_task_user=-1; + $search_project_user=-1; } if (empty($search_status) && $search_status == '') $search_status=1; @@ -88,6 +91,10 @@ $fieldstosearchall = array( $form=new Form($db); $projectstatic = new Project($db); $taskstatic = new Task($db); +$puser=new User($db); +$tuser=new User($db); +if ($search_project_user > 0) $puser->fetch($search_project_user); +if ($search_task_user > 0) $tuser->fetch($search_task_user); $title=$langs->trans("Activities"); if ($mine) $title=$langs->trans("MyActivities"); @@ -112,6 +119,7 @@ else // Get list of project id allowed to user (in a string list separated by coma) $projectsListId = $projectstatic->getProjectsAuthorizedForUser($user,$mine,1,$socid); +//var_dump($projectsListId); // Get list of tasks in tasksarray and taskarrayfiltered // We need all tasks (even not limited to a user because a task assigned to a user can have a parent that is not assigned to him and we need such parents). @@ -119,9 +127,9 @@ $morewherefilter=''; if ($search_all) $morewherefilter.=natural_search(array_keys($fieldstosearchall), $search_all); if ($search_task_ref) $morewherefilter.=natural_search('t.ref', $search_task_ref); if ($search_task_label) $morewherefilter.=natural_search('t.label', $search_task_label); + $tasksarray=$taskstatic->getTasksArray(0, 0, $projectstatic->id, $socid, 0, $search_project, $search_status, $morewherefilter, $search_project_user, $search_task_user); -// We load also tasks limited to a particular user -$tasksrole=($mine ? $taskstatic->getUserRolesForProjectsOrTasks(0,$user,$projectstatic->id,0) : ''); +$tasksrole=$taskstatic->getUserRolesForProjectsOrTasks(0, ($tuser->id?$tuser:null), $projectstatic->id, 0, $search_status); // We load also tasks limited to a particular user print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">'; if ($optioncss != '') print '<input type="hidden" name="optioncss" value="'.$optioncss.'">'; @@ -130,7 +138,6 @@ print '<input type="hidden" name="action" value="list">'; print '<input type="hidden" name="sortfield" value="'.$sortfield.'">'; print '<input type="hidden" name="sortorder" value="'.$sortorder.'">'; print '<input type="hidden" name="type" value="'.$type.'">'; -print '<input type="hidden" name="mode" value="'.GETPOST('mode').'">'; if ($search_all) { @@ -140,20 +147,23 @@ if ($search_all) // If the user can view users -if ($user->rights->user->user->lire) -{ - $moreforfilter.='<div class="divsearchfield">'; - $moreforfilter.=$langs->trans('ProjectsWithThisUserAsContact'). ' '; - $moreforfilter.=$form->select_dolusers($search_project_user, 'search_project_user', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); - $moreforfilter.='</div>'; -} -if ($user->rights->user->user->lire) -{ - $moreforfilter.='<div class="divsearchfield">'; - $moreforfilter.=$langs->trans('TasksWithThisUserAsContact'). ' '; - $moreforfilter.=$form->select_dolusers($search_task_user, 'search_task_user', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); - $moreforfilter.='</div>'; -} +//if ($mine) $search_project_user=$user->id; // We want by default all project. "mine" is a filter for task contact on this page +$moreforfilter.='<div class="divsearchfield">'; +$moreforfilter.=$langs->trans('ProjectsWithThisUserAsContact'). ' '; +$includeonly=''; +if (empty($user->rights->user->user->lire)) $includeonly=array($user->id); +$moreforfilter.=$form->select_dolusers($search_project_user, 'search_project_user', 1, '', 0, $includeonly, '', 0, 0, 0, '', 0, '', 'maxwidth300'); +$moreforfilter.='</div>'; + +// If the user can view users +if ($mine) $search_task_user=$user->id; +$moreforfilter.='<div class="divsearchfield">'; +$moreforfilter.=$langs->trans('TasksWithThisUserAsContact'). ': '; +$includeonly=''; +if (empty($user->rights->user->user->lire)) $includeonly=array($user->id); +$moreforfilter.=$form->select_dolusers($search_task_user, 'search_task_user', 1, '', 0, $includeonly, '', 0, 0, 0, '', 0, '', 'maxwidth300'); +$moreforfilter.='</div>'; + if (! empty($moreforfilter)) { print '<div class="liste_titre liste_titre_bydiv centpercent">'; @@ -217,6 +227,7 @@ else { // Show all lines in taskarray (recursive function to go down on tree) $j=0; $level=0; + //var_dump($tasksarray); $nboftaskshown=projectLinesa($j, 0, $tasksarray, $level, true, 1, $tasksrole, $projectsListId, 0); } diff --git a/htdocs/projet/tasks/note.php b/htdocs/projet/tasks/note.php index ba575be30ad..e62e58df58b 100644 --- a/htdocs/projet/tasks/note.php +++ b/htdocs/projet/tasks/note.php @@ -123,7 +123,7 @@ if ($object->id > 0) // Define a complementary filter for search of next/prev ref. if (! $user->rights->projet->all->lire) { - $projectsListId = $projectstatic->getProjectsAuthorizedForUser($user,$mine,0); + $projectsListId = $projectstatic->getProjectsAuthorizedForUser($user,0,0); $projectstatic->next_prev_filter=" rowid in (".(count($projectsListId)?join(',',array_keys($projectsListId)):'0').")"; } print $form->showrefnav($projectstatic,'project_ref','',1,'ref','ref','',$param.'&withproject=1'); @@ -175,7 +175,7 @@ if ($object->id > 0) print '<tr><td width="30%">'.$langs->trans("Ref").'</td><td>'; if (empty($withproject) || empty($projectstatic->id)) { - $projectsListId = $projectstatic->getProjectsAuthorizedForUser($user,$mine,1); + $projectsListId = $projectstatic->getProjectsAuthorizedForUser($user,0,1); $object->next_prev_filter=" fk_projet in (".$projectsListId.")"; } else $object->next_prev_filter=" fk_projet = ".$projectstatic->id; diff --git a/htdocs/projet/tasks/task.php b/htdocs/projet/tasks/task.php index 9cbe8c1289f..32ede58a534 100644 --- a/htdocs/projet/tasks/task.php +++ b/htdocs/projet/tasks/task.php @@ -227,7 +227,7 @@ if ($id > 0 || ! empty($ref)) // Define a complementary filter for search of next/prev ref. if (! $user->rights->projet->all->lire) { - $projectsListId = $projectstatic->getProjectsAuthorizedForUser($user,$mine,0); + $projectsListId = $projectstatic->getProjectsAuthorizedForUser($user,0,0); $projectstatic->next_prev_filter=" rowid in (".(count($projectsListId)?join(',',array_keys($projectsListId)):'0').")"; } print $form->showrefnav($projectstatic,'project_ref','',1,'ref','ref','',$param.'&withproject=1'); @@ -402,7 +402,7 @@ if ($id > 0 || ! empty($ref)) print '</td><td colspan="3">'; if (! GETPOST('withproject') || empty($projectstatic->id)) { - $projectsListId = $projectstatic->getProjectsAuthorizedForUser($user,$mine,1); + $projectsListId = $projectstatic->getProjectsAuthorizedForUser($user,0,1); $object->next_prev_filter=" fk_projet in (".$projectsListId.")"; } else $object->next_prev_filter=" fk_projet = ".$projectstatic->id; diff --git a/htdocs/projet/tasks/time.php b/htdocs/projet/tasks/time.php index 6c250d0fe57..51dafba2a6d 100644 --- a/htdocs/projet/tasks/time.php +++ b/htdocs/projet/tasks/time.php @@ -237,7 +237,7 @@ if ($id > 0 || ! empty($ref)) // Define a complementary filter for search of next/prev ref. if (! $user->rights->projet->all->lire) { - $projectsListId = $projectstatic->getProjectsAuthorizedForUser($user,$mine,0); + $projectsListId = $projectstatic->getProjectsAuthorizedForUser($user,0,0); $projectstatic->next_prev_filter=" rowid in (".(count($projectsListId)?join(',',array_keys($projectsListId)):'0').")"; } print $form->showrefnav($projectstatic,'project_ref','',1,'ref','ref','',$param.'&withproject=1'); @@ -296,7 +296,7 @@ if ($id > 0 || ! empty($ref)) print '</td><td colspan="3">'; if (! GETPOST('withproject') || empty($projectstatic->id)) { - $projectsListId = $projectstatic->getProjectsAuthorizedForUser($user,$mine,1); + $projectsListId = $projectstatic->getProjectsAuthorizedForUser($user,0,1); $object->next_prev_filter=" fk_projet in (".$projectsListId.")"; } else $object->next_prev_filter=" fk_projet = ".$projectstatic->id; diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index f0f031114e5..5587efa2431 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -282,6 +282,10 @@ input.removedassigned { vertical-align: text-bottom; margin-bottom: -3px; } +input.smallpadd { + padding-left: 0px !important; + padding-right: 0px !important; +} <?php } ?> select.flat, form.flat select { diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 261a288ddc3..56df547b9b1 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -276,6 +276,10 @@ input.removedassigned { vertical-align: text-bottom; margin-bottom: -3px; } +input.smallpadd { + padding-left: 1px !important; + padding-right: 1px !important; +} <?php } ?> select.flat, form.flat select { -- GitLab From 955fad910d14b6df467bde90379fe9ff67562ef9 Mon Sep 17 00:00:00 2001 From: Florian HENRY <florian.henry@open-concept.pro> Date: Fri, 4 Dec 2015 17:32:17 +0100 Subject: [PATCH 086/197] FIX : Bug: $this is not accessible in static context in Mailing::libStatutDest #4050 --- htdocs/comm/mailing/class/mailing.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/comm/mailing/class/mailing.class.php b/htdocs/comm/mailing/class/mailing.class.php index a69909a1ef3..be12b3b3f30 100644 --- a/htdocs/comm/mailing/class/mailing.class.php +++ b/htdocs/comm/mailing/class/mailing.class.php @@ -556,11 +556,11 @@ class Mailing extends CommonObject if ($mode == 0) { - return $langs->trans($this->statut_dest[$statut]); + return $langs->trans('MailingStatusError'); } if ($mode == 1) { - return $langs->trans($this->statut_dest[$statut]); + return $langs->trans('MailingStatusSent'); } if ($mode == 2) { -- GitLab From 1dfd3f396e0924ca9b92a624cacc6f537fc75663 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Doursenaud?= <rdoursenaud@gpcsolutions.fr> Date: Fri, 4 Dec 2015 14:06:53 +0100 Subject: [PATCH 087/197] Fixed md theme name --- htdocs/theme/md/graph-color.php | 4 ++-- htdocs/theme/md/style.css.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/theme/md/graph-color.php b/htdocs/theme/md/graph-color.php index 4346d007158..3450180e153 100644 --- a/htdocs/theme/md/graph-color.php +++ b/htdocs/theme/md/graph-color.php @@ -17,8 +17,8 @@ */ /** - * \file htdocs/theme/eldy/graph-color.php - * \brief File to declare colors to use to build graphics with theme Eldy + * \file htdocs/theme/md/graph-color.php + * \brief File to declare colors to use to build graphics with theme Material Design * \ingroup core * * To include file, do this: diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 56df547b9b1..a7a191f45bb 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -61,7 +61,7 @@ $right=($langs->trans("DIRECTION")=='rtl'?'left':'right'); $left=($langs->trans("DIRECTION")=='rtl'?'right':'left'); $path=''; // This value may be used in future for external module to overwrite theme -$theme='eldy'; // Value of theme +$theme='md'; // Value of theme if (! empty($conf->global->MAIN_OVERWRITE_THEME_RES)) { $path='/'.$conf->global->MAIN_OVERWRITE_THEME_RES; $theme=$conf->global->MAIN_OVERWRITE_THEME_RES; } // Define image path files and other constants -- GitLab From a8f67808de3707f66f5f65803f933512ba16fb9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Doursenaud?= <rdoursenaud@gpcsolutions.fr> Date: Fri, 4 Dec 2015 17:58:37 +0100 Subject: [PATCH 088/197] NEW Used matching icons for Material Design theme Icons from https://www.google.com/design/icons/ Licenced under CC BY 4.0 --- htdocs/theme/md/img/calendar.png | Bin 250 -> 106 bytes htdocs/theme/md/img/close.png | Bin 301 -> 148 bytes htdocs/theme/md/img/close_title.png | Bin 240 -> 148 bytes htdocs/theme/md/img/delete.png | Bin 202 -> 130 bytes htdocs/theme/md/img/disable.png | Bin 245 -> 248 bytes htdocs/theme/md/img/edit.png | Bin 818 -> 148 bytes htdocs/theme/md/img/edit_add.png | Bin 220 -> 97 bytes htdocs/theme/md/img/edit_remove.png | Bin 122 -> 81 bytes htdocs/theme/md/img/editdelete.png | Bin 245 -> 202 bytes htdocs/theme/md/img/error.png | Bin 489 -> 201 bytes htdocs/theme/md/img/file.png | Bin 505 -> 109 bytes htdocs/theme/md/img/filenew.png | Bin 397 -> 166 bytes htdocs/theme/md/img/filter.png | Bin 237 -> 106 bytes htdocs/theme/md/img/folder-open.png | Bin 801 -> 104 bytes htdocs/theme/md/img/folder.png | Bin 935 -> 99 bytes htdocs/theme/md/img/grip.png | Bin 90 -> 83 bytes htdocs/theme/md/img/grip_title.png | Bin 90 -> 83 bytes htdocs/theme/md/img/helpdoc.png | Bin 307 -> 267 bytes htdocs/theme/md/img/high.png | Bin 611 -> 197 bytes htdocs/theme/md/img/history.png | Bin 1362 -> 270 bytes htdocs/theme/md/img/info.png | Bin 657 -> 254 bytes htdocs/theme/md/img/info_black.png | Bin 312 -> 207 bytes htdocs/theme/md/img/lock.png | Bin 646 -> 206 bytes htdocs/theme/md/img/menus/README.md | 12 ------------ htdocs/theme/md/img/menus/agenda.png | Bin 700 -> 131 bytes htdocs/theme/md/img/menus/agenda_over.png | Bin 541 -> 0 bytes htdocs/theme/md/img/menus/bank.png | Bin 827 -> 158 bytes htdocs/theme/md/img/menus/bank_over.png | Bin 620 -> 0 bytes htdocs/theme/md/img/menus/chart.png | Bin 1321 -> 127 bytes htdocs/theme/md/img/menus/commercial.png | Bin 845 -> 133 bytes htdocs/theme/md/img/menus/commercial_over.png | Bin 638 -> 0 bytes htdocs/theme/md/img/menus/company.png | Bin 572 -> 105 bytes htdocs/theme/md/img/menus/company_over.png | Bin 406 -> 0 bytes htdocs/theme/md/img/menus/ecm.png | Bin 912 -> 178 bytes htdocs/theme/md/img/menus/ecm_over.png | Bin 647 -> 0 bytes htdocs/theme/md/img/menus/externalsite.png | Bin 531 -> 124 bytes .../theme/md/img/menus/externalsite_over.png | Bin 404 -> 0 bytes htdocs/theme/md/img/menus/ftp.png | Bin 788 -> 92 bytes htdocs/theme/md/img/menus/ftp_over.png | Bin 563 -> 0 bytes htdocs/theme/md/img/menus/generic1.png | Bin 570 -> 133 bytes htdocs/theme/md/img/menus/generic1_over.png | Bin 486 -> 0 bytes htdocs/theme/md/img/menus/generic2.png | Bin 570 -> 133 bytes htdocs/theme/md/img/menus/generic2_over.png | Bin 548 -> 0 bytes htdocs/theme/md/img/menus/generic3.png | Bin 570 -> 133 bytes htdocs/theme/md/img/menus/generic3_over.png | Bin 486 -> 0 bytes htdocs/theme/md/img/menus/generic4.png | Bin 570 -> 133 bytes htdocs/theme/md/img/menus/generic4_over.png | Bin 486 -> 0 bytes htdocs/theme/md/img/menus/globe.png | Bin 1175 -> 390 bytes htdocs/theme/md/img/menus/globe_over.png | Bin 844 -> 0 bytes htdocs/theme/md/img/menus/holiday.png | Bin 1086 -> 308 bytes htdocs/theme/md/img/menus/home.png | Bin 679 -> 94 bytes htdocs/theme/md/img/menus/home_over.png | Bin 484 -> 0 bytes htdocs/theme/md/img/menus/mail.png | Bin 718 -> 211 bytes htdocs/theme/md/img/menus/mail_over.png | Bin 534 -> 0 bytes htdocs/theme/md/img/menus/members.png | Bin 1044 -> 145 bytes htdocs/theme/md/img/menus/members_over.png | Bin 720 -> 0 bytes htdocs/theme/md/img/menus/money.png | Bin 1259 -> 179 bytes htdocs/theme/md/img/menus/money_over.png | Bin 940 -> 0 bytes htdocs/theme/md/img/menus/pointofsale.png | Bin 542 -> 131 bytes htdocs/theme/md/img/menus/pointofsale_over.png | Bin 424 -> 0 bytes htdocs/theme/md/img/menus/products.png | Bin 510 -> 84 bytes htdocs/theme/md/img/menus/products_over.png | Bin 358 -> 0 bytes htdocs/theme/md/img/menus/project.png | Bin 449 -> 156 bytes htdocs/theme/md/img/menus/project_over.png | Bin 360 -> 0 bytes htdocs/theme/md/img/menus/shop.png | Bin 679 -> 259 bytes htdocs/theme/md/img/menus/shop_over.png | Bin 502 -> 0 bytes htdocs/theme/md/img/menus/tools.png | Bin 1052 -> 239 bytes htdocs/theme/md/img/menus/tools_over.png | Bin 706 -> 0 bytes htdocs/theme/md/img/next.png | Bin 622 -> 118 bytes htdocs/theme/md/img/object_account.png | Bin 453 -> 182 bytes htdocs/theme/md/img/object_accounting.png | Bin 170 -> 161 bytes htdocs/theme/md/img/object_action.png | Bin 528 -> 113 bytes htdocs/theme/md/img/object_action_rdv.png | Bin 675 -> 118 bytes htdocs/theme/md/img/object_address.png | Bin 358 -> 227 bytes htdocs/theme/md/img/object_bill.png | Bin 394 -> 146 bytes htdocs/theme/md/img/object_billa.png | Bin 395 -> 146 bytes htdocs/theme/md/img/object_billd.png | Bin 341 -> 146 bytes htdocs/theme/md/img/object_billr.png | Bin 399 -> 146 bytes htdocs/theme/md/img/object_bookmark.png | Bin 201 -> 131 bytes htdocs/theme/md/img/object_building.png | Bin 563 -> 122 bytes htdocs/theme/md/img/object_calendar.png | Bin 199 -> 106 bytes htdocs/theme/md/img/object_calendarday.png | Bin 223 -> 165 bytes htdocs/theme/md/img/object_calendarperuser.png | Bin 198 -> 106 bytes htdocs/theme/md/img/object_calendarweek.png | Bin 188 -> 156 bytes .../theme/md/img/object_category-expanded.png | Bin 295 -> 104 bytes htdocs/theme/md/img/object_category.png | Bin 281 -> 99 bytes htdocs/theme/md/img/object_commercial.png | Bin 304 -> 147 bytes htdocs/theme/md/img/object_company.png | Bin 492 -> 122 bytes htdocs/theme/md/img/object_contact.png | Bin 666 -> 280 bytes htdocs/theme/md/img/object_contact_all.png | Bin 810 -> 170 bytes htdocs/theme/md/img/object_contract.png | Bin 359 -> 134 bytes htdocs/theme/md/img/object_cron.png | Bin 433 -> 284 bytes htdocs/theme/md/img/object_dir.png | Bin 301 -> 99 bytes htdocs/theme/md/img/object_email.png | Bin 368 -> 189 bytes htdocs/theme/md/img/object_energie.png | Bin 376 -> 158 bytes htdocs/theme/md/img/object_generic.png | Bin 361 -> 109 bytes htdocs/theme/md/img/object_globe.png | Bin 366 -> 305 bytes htdocs/theme/md/img/object_group.png | Bin 655 -> 170 bytes htdocs/theme/md/img/object_holiday.png | Bin 771 -> 251 bytes htdocs/theme/md/img/object_intervention.png | Bin 340 -> 270 bytes htdocs/theme/md/img/object_invoice.png | Bin 394 -> 146 bytes htdocs/theme/md/img/object_label.png | Bin 769 -> 158 bytes htdocs/theme/md/img/object_list.png | Bin 179 -> 83 bytes htdocs/theme/md/img/object_margin.png | Bin 571 -> 92 bytes htdocs/theme/md/img/object_opensurvey.png | Bin 743 -> 103 bytes htdocs/theme/md/img/object_order.png | Bin 357 -> 146 bytes htdocs/theme/md/img/object_payment.png | Bin 339 -> 221 bytes htdocs/theme/md/img/object_phoning.png | Bin 577 -> 200 bytes htdocs/theme/md/img/object_printer.png | Bin 296 -> 167 bytes htdocs/theme/md/img/object_product.png | Bin 559 -> 150 bytes htdocs/theme/md/img/object_project.png | Bin 926 -> 158 bytes htdocs/theme/md/img/object_projectpub.png | Bin 929 -> 158 bytes htdocs/theme/md/img/object_projecttask.png | Bin 941 -> 216 bytes htdocs/theme/md/img/object_propal.png | Bin 284 -> 146 bytes htdocs/theme/md/img/object_reduc.png | Bin 361 -> 221 bytes htdocs/theme/md/img/object_resource.png | Bin 199 -> 227 bytes htdocs/theme/md/img/object_sending.png | Bin 273 -> 173 bytes htdocs/theme/md/img/object_service.png | Bin 365 -> 161 bytes htdocs/theme/md/img/object_stock.png | Bin 554 -> 91 bytes .../theme/md/img/object_supplier_proposal.png | Bin 284 -> 146 bytes htdocs/theme/md/img/object_task.png | Bin 176 -> 216 bytes htdocs/theme/md/img/object_task_time.png | Bin 199 -> 116 bytes htdocs/theme/md/img/object_technic.png | Bin 433 -> 256 bytes htdocs/theme/md/img/object_trip.png | Bin 337 -> 221 bytes htdocs/theme/md/img/object_user.png | Bin 581 -> 164 bytes htdocs/theme/md/img/off.png | Bin 568 -> 248 bytes htdocs/theme/md/img/on.png | Bin 603 -> 230 bytes htdocs/theme/md/img/play.png | Bin 653 -> 131 bytes htdocs/theme/md/img/previous.png | Bin 620 -> 114 bytes htdocs/theme/md/img/printer.png | Bin 329 -> 167 bytes htdocs/theme/md/img/puce.png | Bin 504 -> 193 bytes htdocs/theme/md/img/recent.png | Bin 447 -> 165 bytes htdocs/theme/md/img/refresh.png | Bin 722 -> 205 bytes htdocs/theme/md/img/reload.png | Bin 704 -> 205 bytes htdocs/theme/md/img/rightarrow.png | Bin 156 -> 142 bytes htdocs/theme/md/img/searchclear.png | Bin 356 -> 143 bytes htdocs/theme/md/img/setup.png | Bin 702 -> 256 bytes htdocs/theme/md/img/split.png | Bin 195 -> 153 bytes htdocs/theme/md/img/star.png | Bin 381 -> 175 bytes htdocs/theme/md/img/switch_off.png | Bin 1252 -> 292 bytes htdocs/theme/md/img/switch_on.png | Bin 1228 -> 257 bytes htdocs/theme/md/img/tick.png | Bin 227 -> 140 bytes htdocs/theme/md/img/title_accountancy.png | Bin 1019 -> 218 bytes htdocs/theme/md/img/title_bank.png | Bin 796 -> 216 bytes htdocs/theme/md/img/title_commercial.png | Bin 828 -> 176 bytes htdocs/theme/md/img/title_companies.png | Bin 562 -> 146 bytes htdocs/theme/md/img/title_generic.png | Bin 789 -> 197 bytes htdocs/theme/md/img/title_home.png | Bin 721 -> 126 bytes htdocs/theme/md/img/title_hrm.png | Bin 1028 -> 447 bytes htdocs/theme/md/img/title_products.png | Bin 678 -> 107 bytes htdocs/theme/md/img/title_project.png | Bin 604 -> 237 bytes htdocs/theme/md/img/title_setup.png | Bin 1105 -> 453 bytes htdocs/theme/md/img/unlock.png | Bin 686 -> 212 bytes htdocs/theme/md/img/vcard.png | Bin 566 -> 230 bytes htdocs/theme/md/img/view.png | Bin 708 -> 204 bytes htdocs/theme/md/img/warning.png | Bin 480 -> 169 bytes 156 files changed, 12 deletions(-) delete mode 100644 htdocs/theme/md/img/menus/README.md delete mode 100644 htdocs/theme/md/img/menus/agenda_over.png delete mode 100644 htdocs/theme/md/img/menus/bank_over.png delete mode 100644 htdocs/theme/md/img/menus/commercial_over.png delete mode 100644 htdocs/theme/md/img/menus/company_over.png delete mode 100644 htdocs/theme/md/img/menus/ecm_over.png delete mode 100644 htdocs/theme/md/img/menus/externalsite_over.png delete mode 100644 htdocs/theme/md/img/menus/ftp_over.png delete mode 100644 htdocs/theme/md/img/menus/generic1_over.png delete mode 100644 htdocs/theme/md/img/menus/generic2_over.png delete mode 100644 htdocs/theme/md/img/menus/generic3_over.png delete mode 100644 htdocs/theme/md/img/menus/generic4_over.png delete mode 100644 htdocs/theme/md/img/menus/globe_over.png delete mode 100644 htdocs/theme/md/img/menus/home_over.png delete mode 100644 htdocs/theme/md/img/menus/mail_over.png delete mode 100644 htdocs/theme/md/img/menus/members_over.png delete mode 100644 htdocs/theme/md/img/menus/money_over.png delete mode 100644 htdocs/theme/md/img/menus/pointofsale_over.png delete mode 100644 htdocs/theme/md/img/menus/products_over.png delete mode 100644 htdocs/theme/md/img/menus/project_over.png delete mode 100644 htdocs/theme/md/img/menus/shop_over.png delete mode 100644 htdocs/theme/md/img/menus/tools_over.png diff --git a/htdocs/theme/md/img/calendar.png b/htdocs/theme/md/img/calendar.png index bbe6c27f041005fec8f47099cdfc7ebb1053af89..98a013a40148fb41b2ab42dcdd6d609ee7d4016f 100644 GIT binary patch literal 106 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sg7<#%mhEy;nEAakdcdDsr zo9w{&<^#(ly*m@ax;8NE(s0_5_CPd|$%yGQi=V2y<O(i^`)O^nxl}VF85kHCJYD@< J);T3K0RV=j9u)up literal 250 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd7G?$phPQVgfdp969eo`c7}lRKXYG2)z`!6` z;u=vBoS#-wo>-L1;Fyx1l&avFo0y&&l$w}QS$HzlhJk@WF2E<mb&g^3%$fhw(#{wg z&rC~8V_;yIIdkTjGiUz){|{onWlLdTVBjhV@(cbC0}Pwa=$vO@VDRyDaSY+Oo;*X7 zgY6K{<S7RZ%t+j1C}Cmj^Lj-F`=SsPH%n&c%1TR*mc@)(tjP*X0!nupEt%fzFiX3c qn}uQNr2`666SFi}49>JLG2E9nGT$JRVa>q6z~JfX=d#Wzp$P!Qk5>}_ diff --git a/htdocs/theme/md/img/close.png b/htdocs/theme/md/img/close.png index ec4338e8bca2ad6905cee379100a8b0becfa5c9d..f2b546002f285e85f71d736d5e31b80a5d1c2b2a 100644 GIT binary patch literal 148 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgM0>h8hEy;fonXz?U?9Ny zJWuRnTHQ4j_qwLm4++f)3xk(Pq$QgFaji5neq?Z2P?%3NP&d*uqoYh+y6^1w*LTmV z&*Z2OtrR+<@VWH(O!>KKtQ%)^zA=v7@pGDRPo?@izpp6;3=9kmp00i_>zopr04K9F ATL1t6 literal 301 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`7G?$phPP=3j~Eyj7>k44ofy`glX=O&z`$AH z5n0T@z%2~Ij105pNH8!ku$OrHy0YJ47Ub1te%Qkt$H2g#8{iY-I$^?u|Ns9_APyv) zIqL<ox+KUin1O+jiJ66!jf0bmM?}){^%+HwJCeNJT^Ro}>E2^tV2Jm0aSY+Oo-B~S z!05(yEO@oplXXH#FVaLrM5fF-bU@+w355>=8muY}K5T4`mIvFLxEpGYl`|>W&4@d2 zfK{x0W%RKHtk;eoJ8+f5#Jyqe!HJ1iSB0KFD&Zo@BOwtY$r$)g`0n-3aZec-7#KWV L{an^LB{Ts5d@y7v diff --git a/htdocs/theme/md/img/close_title.png b/htdocs/theme/md/img/close_title.png index bebb74d98611e818118d81d55d5dfc5eb62f15cb..f2b546002f285e85f71d736d5e31b80a5d1c2b2a 100644 GIT binary patch literal 148 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgM0>h8hEy;fonXz?U?9Ny zJWuRnTHQ4j_qwLm4++f)3xk(Pq$QgFaji5neq?Z2P?%3NP&d*uqoYh+y6^1w*LTmV z&*Z2OtrR+<@VWH(O!>KKtQ%)^zA=v7@pGDRPo?@izpp6;3=9kmp00i_>zopr04K9F ATL1t6 literal 240 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4rT@h290TVA2Tp87zg--xK5Zb;s5{t6Nmr| z3=9y(jNKmIAhSw>{DK)67@3$^SlKu@xp+h*EnlBeWME*3^K@|x;kX{#=g4=+frmNW zYqu`jlt2Hs%4`!AE$(`A#IVTu!(5df|3`;D9-3?uzJUASx=QnQO{QC^(`Om4+x?_y z;c6D<C)@vsPdzy4_F_iMby6EPbIp9icjp1)flUv^!&I34eBCD4GB7YOc)I$ztaD0e F0swe7Ttff= diff --git a/htdocs/theme/md/img/delete.png b/htdocs/theme/md/img/delete.png index 8ad73597be74e4690e6a5b354ceb560c5542ab0b..2482989b0cc5112cf6608b337b1480f45f866081 100644 GIT binary patch literal 130 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgczU`xhEy;nFAy|Hx^cXK zf#W-4WJCk=;d-45jG+^moSDT|G~|Ub9cDC{(U6(Q+?L84A=0a*bu1vHV`azuL`JWQ f^T`hu*Ksj1_&zJ}lV9<9BLm1(S3j3^P6<r_#X%>= literal 202 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4h9AW1}o(vUIqpRrjj7PV21zE6P30yFfcTG zx;Tb#$g&<(jAAwvVLNcMMle!brkX{EPi0fN?s0~2PIryG$M@c!I`i$suaj1jr=MQ1 z-ncp-ey7jd@_5mR>(YPij^FSX<+S}CyEG{E!u@^ALtp=imS4Z+@z1{!$LwS#o3R|5 zb76&x&;=FNlf1p64}^QUv^M7M(wTH6GUxW;%N$BS*wb!!mv<h~Sr2lgr>mdKI;Vst E05*q9ivR!s diff --git a/htdocs/theme/md/img/disable.png b/htdocs/theme/md/img/disable.png index f8c84994d473348e27391c7095c451fdfac9e0fb..9bab123aca7f214c66ac06f8a1635eed9d8ee9e9 100644 GIT binary patch literal 248 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sg?DuqW45?t8dciU4P=dhG zkN4MoGZ3m;IAeu*kf&JCOV_S10$uY|^!6>e(8zDUhWq~QGdBMW`aiC+`?4-CPtR&9 z``+8Lx%#U%3;i^-z4cM<_Uw5(PRF`@$W;C7>-kurFU&!IfvA*cP_phN*#gn*O$VHM zmj*6Le~@-6!q@H4VdE83y*j)bb+%?0l`-v#FfG*Bm8rayaaG2H1lh?;zKZG_sM|m6 z+`cKT@4wRhdpnL-B{TMHQ)LP%JIB^Mxp(LFFWfwVtNT<Q2ih<&Ffe$!`njxgN@xNA DZ|rBK literal 245 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4rT@h290TVA2Tp8xCZ!yxc>kDKd5-^oUQks zzyE&i-urX+-k-bn{@Atmd(S;@VPJUw{`>pt>~l_rmO;h$o`3&;?3h>fQm^Em@8ADt z_Z)lw{r|n^@7M0V_t)xT5(5JRV@Z%-FoVOh8)*y-3~`<=jv*Y^dyhK`9a7+Nxajbx zeTkse+Q)zUUopvS-*;Dd;;yMx-5pn6b1nV)eeZ9srH=P|1DJoTuR35;rhM#7iN@-z zS(XoDWRrJ2f3h=c+Jl{|)A%a%@7rbUT|Z6!Cj)ynOaG)3s)rdE7#KWV{an^LB{Ts5 DgkW}% diff --git a/htdocs/theme/md/img/edit.png b/htdocs/theme/md/img/edit.png index 4e916fe1fb095017458fcdd1093c1efb8cc8afca..7012f52be5ae6acc556b223c8a822b5883ce62ac 100644 GIT binary patch literal 148 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgM0>h8hEy;fJ$sk4!9alJ zVdvF|=~0teJ}x(N+|b?aJ@2ffK;iSR%}?)2nej!*>#CIgT65UwwzvCcjxRHNzo)1s zDj5iHsxC4RJfPh5!$<8<e~Xk8@4~hK1^G8jv-3QAcX_$YVqjok@O1TaS?83{1OTt0 BGsFM@ literal 818 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4rT@h290TVA2Tp8u$OrHy0Ty8WabexoHgIz zEdv7sXMsm#F#`kF2M}g-T4OSUfq{V~-O<;Pfnj4m_n$;o1_s9F0G|+7QC<!y0ZvJA z5m`|IF*!{&S!n}3O?5L5%YZTuJM+3A{V;FGkkIgwDEH!MpM->j^z?M^<Q~7=g~7!u za@sa#bsua9)^7|kXb3T$R+GD?EOc|F!{#cdU3Jb~O_h6Eo%go7>}_$|-{Q5u!)Jf5 z&!VQ>#mzaZTGLmzWvuBf-`<k9rLT5NfBk_@-veF#?QJd1eG6Lp7q(Aa)H-Qd_tYhQ z)0a+Nuw~AYjmuW9-?nZ0tWCF<Y&g1V@7*2yPHsPZZO@U5JC5AkdFt8j)6e#vezNb( z^L=NZA6z=+^3tA1r`J9?w)OFu4Uf-mczk}t<MW%YU$}Dc{ELGZUL3vj>e%Ji$F96S zdF{>V>u=89cy;FH+w-^HoxlC=(w+C0?!Lcr_x-(lPj5VUfBWH^TaVsffAHbP!;iNg zf4cYd^P3wd-`+X%{O+|Ej~+gJ@#XQ$FOOe+dGhM(v)5mrz4`j`?YEcjzP)<){nh*L zuRr{F`|-!SPd~rBef;I!!w;W-e*E(5^VeTrzWx68<M+>>e}4Y@^XvED|NsB<tA4z} zz`)R0666>Be}DnQq!W+*85kIrdb&7<a9mH$$k@=t^pLGIpG{%=zFkV{Hb+jmoplyJ zvv$>qUJk*)uUCT^inX=5k`9^FP8CgYxO3}N*C7jYeOFdVLxJtfHZ9Uvd?wa&R=41h zwR&gIYkj{mX;MNSL!r0#raxPL-l&jiIe4e5iN(^7u{zydk;DA-q?6aq-8wUa`HXJo z_3Z|xhDIh01>KW{7CSdH$IMlz`aDT!u~YM(Seb({i7Xim3?*x<n-40bePdu?VDNPH Kb6Mw<&;$S#bnv|Z diff --git a/htdocs/theme/md/img/edit_add.png b/htdocs/theme/md/img/edit_add.png index ae205e9d77050e9de7990790a6328bb58b008ad7..84a1e05229a10ad64bf63c1fd77dbae9aef24c84 100644 GIT binary patch literal 97 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgXn49fhEy;nOJpQ4w6Gjx zRFIMB;%NvH_`%4Ln8Q3tly}d24)@asm>8H!WF1$`>tJVKU|{fc^>bP0l+XkK={6U- literal 220 zcmeAS@N?(olHy`uVBq!ia0y~yVBi5^7G?$ph9%LCR~Q%=*h@TpUD>bju!v~Ozu#B- zpMimav%n*=n1O-o0|+xZtudLwz`($g?&#~tz_78O`%fY(0|SFffKP}k0|NsC2M7oV zNJvOXSb~6)r4tx<fx!R&|NEsKSA#4q3Gxg6j{pop_s^YUU|>-8ba4#fxSo7tZ*}>% vcXxRlR!NI*)zz)7jFO5|byy|k#K_3Nw8>C*?=sG9AnQC`{an^LB{Ts5>DEDH diff --git a/htdocs/theme/md/img/edit_remove.png b/htdocs/theme/md/img/edit_remove.png index bc4bdb360faaf5046d321966748582f0d44e9551..0725e5fc1558c11c816567ff93a962450a1376f1 100644 GIT binary patch literal 81 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgNO-z9hEy;nD{%HOF}E>C iEMV;H;%E+JV5nHef6)74>|+K71_n=8KbLh*2~7Z!920N= literal 122 zcmeAS@N?(olHy`uVBq!ia0y~yVBi5^7G?$ph9%LCR~Q%=_yc@GTrEMs$<he~{{R0U z{V>Uhfq{XwB*-uL|NsC08Gdi$3ua(o5cPC%4B?1QE=goybgP;2m{q5#LW5!JI~J~> UyM~Jx7#J8lUHx3vIVCg!04)z9f&c&j diff --git a/htdocs/theme/md/img/editdelete.png b/htdocs/theme/md/img/editdelete.png index f8c84994d473348e27391c7095c451fdfac9e0fb..1fd90502328debaba9b7e16e00a2b47a9848e03b 100644 GIT binary patch literal 202 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgO!Rbd45?t8dhQ};vw?`) z!_Cd+yPP*#mv9_4t+~8LN$FkKTY;C(T#6@Dmn^zp8B}-TshxBC(MyUcp=)YB8XkA@ zd~}k1{+8gyAz6!V8_0y!*rh2g&hsqhaBR0<sk-6g=I2XaJ-+|(RK|`^G0qA*CLiWr z^z?nkqkv86>iH~7(@y)ysqk#xb=FWZg;Q6VnU}TvFT<mNC2ch)-bOJnFfe$!`njxg HN@xNAuhmiA literal 245 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4rT@h290TVA2Tp8xCZ!yxc>kDKd5-^oUQks zzyE&i-urX+-k-bn{@Atmd(S;@VPJUw{`>pt>~l_rmO;h$o`3&;?3h>fQm^Em@8ADt z_Z)lw{r|n^@7M0V_t)xT5(5JRV@Z%-FoVOh8)*y-3~`<=jv*Y^dyhK`9a7+Nxajbx zeTkse+Q)zUUopvS-*;Dd;;yMx-5pn6b1nV)eeZ9srH=P|1DJoTuR35;rhM#7iN@-z zS(XoDWRrJ2f3h=c+Jl{|)A%a%@7rbUT|Z6!Cj)ynOaG)3s)rdE7#KWV{an^LB{Ts5 DgkW}% diff --git a/htdocs/theme/md/img/error.png b/htdocs/theme/md/img/error.png index f41dd8a3bc02959bdf97c4334d9df8eb5b3209d7..0d9cf16f4a2139bea02e90c58b9108e8456db13c 100644 GIT binary patch literal 201 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgOz?DZ45?t8dN$Cj!9m3B z;d|X|ZPBUTXN_8?2{~R66WUnH!f85L;mC<66Q0||TKu^lsCQSgMrU8<oYO0|G|l+& z_S#9aO0lPQOC#0a-PlmHwX)?2mtI5InMFC-I&RDc;)~D!cQH2TWOZMluXmTZRFP|4 zWTi;?n?FU*zMg+_RMT_XTGqW@Zfn24%P#!%;Fw_@!_$sktmdLqJ}@vaFnGH9xvX<a GXaWGW98uE% literal 489 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4rT@h290TVA2Tp8Fct^7J29*~C-ahlf#Gd{ zPl)SNHMJ+Is*lvwpQ@`r)YW^fqx;stATc5=JtF*rvGFTYvsY$jug%O}TA07Jw|nK} z@Xp8gt)E9xe(rmJ->?4up92EkhX;HL3wjsf`!OQuV@yC(P1T2l@WZ*;ACkjACnp~$ z%>SI8_BA{Gdv@0Myv%R;xt~f)ru6sjXlt1{X~O5`#;sE)eQjy^(OSKD-kfjU?Vo$Q zfAu&2nB4zq=Csc<r~Q~Sd;7Xo9~UqDy=d;|Rm;DvS#fapj!zrbec7<~^r3yfwr%{q zW7E%r`#+pL_2Jy9zt^w4zkmDNz1!~}+<E`_{`)5nem!~g_4Ugy@7{cU_vY7^&n)xS zM1n%0B*-tA!Qt7BG!Q4r+uensgH_gpfq{Xuz$3Dlfr0A-2s1jZF`2=@z`$PO>FdgV zorj5^g-iMKiCGK`3>ls-jv*Y^lM@t}Uc6XP5IQxmA}VT?M@(%lZ!L@e$!T*BhjFgE za>Cc+R;1vvn4=e?&!4#}qqTO~v!~g)&mS&fn<!TB@pItyFD2Ur8D5JNZrC0)!PL-9 sfYH;tqqCFq)8|hG#T$(lS&K2;bK==`O4R-@0|Nttr>mdKI;Vst0AmH~YXATM diff --git a/htdocs/theme/md/img/file.png b/htdocs/theme/md/img/file.png index 73c66e9b2b33cb54953d608d06896218ebe6dc44..7b72fee88a86fb273f9f2a9e0a54126784e2357e 100644 GIT binary patch literal 109 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sgn0UH4hEy;nE3nQ<`O(iJ zy+Qj||FRX08<f~47&Ub%oZ`?pwC;_4nTN6K;x500(4r|VN7xwpoK_hxRSdn%z`(%Z M>FVdQ&MBb@05wt}#Q*>R literal 505 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4rT@h290TVA2Tp8u$OrHy0TwoW)(M6KI8pE zhk=2Cv%n*=n1O-o0|+xZtudLwz`($g?&#~tz_78O`%fY(0|Uc{0G|+70|NsmC#Q&r zi0tg_+}zxPf`b0emd?)3nKNhZ+qQns_KnBqH=J0~esWpYsg-@F*GxXWcIw%UbIxv> zb8g$>^V^qR*uCoFzI7M(Z@7GT`^)32-kjU=?#kYGSN6TTy6@b%b5~CuxPJcRy?ggQ z+&uc>_VJImj(@y;{L|gjj~?86{@~`P2j@RMxbXSm#V?PqetB~B>(d)wpWXcW{MNVU zx4yl+_wD8V?=SDYdiCo2>xbXpJo@qG(T}%}f4+P6^ZoN*A7B0Y`1;qUH@`l=`Stnj zudnaFef|3T+sEJEKK=gw`OlB9e|~=b`}^m=KfnL{`Sb7ZpMQV<{`>du|G$6#|Nqy! z_*<HRfq}Us$S?T+e}?O)cpVuS7-~IT978y+CnqEYu`ub?^Qj3WFckg$``0&8p+@6+ zcj&qK&5Y;1rl+T-xjeF3S-erP&^Fe@LNLZZTspZ>;`;T&r(D8)C60Y9+-z_qOth(J z@7*_Fw@yuESrAihUF<6wscENi{hE)zXO!0@_Cuio6Q&CYK6(DMtw8cYLnkN0M1D~Q Uv!8Lf3=9kmp00i_>zopr01Y4<A^-pY diff --git a/htdocs/theme/md/img/filenew.png b/htdocs/theme/md/img/filenew.png index 8680cce82bff07a3c3aa496e6280d871bcc50e27..93165497458917b4b2fdb26a301e2195f801f9a9 100644 GIT binary patch literal 166 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sg<a)X|hEy;nE3mFGzG7f< zAd#uem0$AT;fL&P^$x8O2kKQS8WcH~^h{7<>o8*KN;p-Zz3adOhBoeooD$a=0^1ic zDX1*rND+*4eb5lX;H1zSEhwaL&gztCEQ6B;zj2e{L)#cnR>swmAs!w%49(vCn~nv= S?_*$KVDNPHb6Mw<&;$T_{4;?7 literal 397 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4rT@h1`S>QU<L*T_7YEDSN1C$qI^d36<Rsf z3=9mM1s;*b3=CW!K$y{KjmZoK1_qXNM_)$<hK>E)e-c?47#NZRd_r6~Bn$-%g9Hqt zEUUj)x6E0)_1xOM=eF)WxAoYyy~nN{J9q8axqIiX-8*;f`L%1$uiblo@80u!&!69W z{{H#%_s`$IfByda`}g0$;Q#+A4F8WY{QocU|9{l~|2_ZzZ~g!O-2eaoQ*ze-Wnf@X zED7=p{!aif%s+TRk%57s!PCVtMB;Mjx!Zg#3Op<Uat1898X6aQDsKM&e`=|cp0)qk zlNT1*sXpt}+q^6B_O;Y9olj0NGnRg4-}R)`v`Wo7gn@-ATA6`^!CYeP1mPmLQwuU> z)|z~KY|}66qqK?n<t`x`>+lu%1+Dk_@_2U|Io}fq{O!&$&)Q()!4SvtpG;H!2^-Jx T{}ao=z`)??>gTe~DWM4fI~KsJ diff --git a/htdocs/theme/md/img/filter.png b/htdocs/theme/md/img/filter.png index ee34a22c78e0cd31d74739b7cb8a1bda9aa6e608..43d05a50940d1b364d1dc00f731a952503ab19a4 100644 GIT binary patch literal 106 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sg7<#%mhEy;nOKeeST*%1o z<Dg-6;DbE7je~W$tV1*B5zR%G84T5X822l&2M92obmV6UJEUeDEAZ_i0|Nttr>mdK II;Vst0Q`R&bpQYW literal 237 zcmeAS@N?(olHy`uVBq!ia0y~yVBlk5VBq3lVPIg;yRh7cfq{W3$=lt9;eUJonf(k5 z44efXk;M!Q+`=Ht$S`Y;1Oo#Ddx@v7EBk#eCSE;pf6mh<7#J8NOI#yLobz*YQ}ap~ zoQqNuOHxx5$}>wc6x=<11Hv2m#2FYEB0XIkLnJP*J+qP5HG#qPVgH{aEN&YbW$!VS zEW2#j_$mG{58H(Av#xt|FtrBXoijN`&m$l+Mg70=EM_nHqnhg$-Mp*2#p-_U^D5>g n_ZEn`e$_jqsHdjGzy6<yCU5ih<`bn13=9mOu6{1-oD!M<bcIY^ diff --git a/htdocs/theme/md/img/folder-open.png b/htdocs/theme/md/img/folder-open.png index 1db8369b3d571114205b1df33c74356590be04e2..b0292d92aaec99817b1a0dff1c1c354cd715f10c 100644 GIT binary patch literal 104 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sg=zF?2hEy;nOK=oSdT1|W z_8@?HlFFJl_I?#j60ZLPMH3khy9+*4uxJcE8OZjFnW0iF=9s^P`V$5Q1_n=8KbLh* G2~7Yi+8sIo literal 801 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4mJh`26+$Niwq15>?NMQuIyKt7{#~*kE~~D zW?*38EbxddW?<m@0K$w;YfNS^Ffg#BJNh~@Fl_AS{*%bcz`(S@)5S4F<9zAl)7~P5 z49EBH|9SSsmdE=(ZR8L4DJ$K6$;8=&N2qfG2dCCz@BfanR%L6emoH$CjC5qR)le~9 z#22aLY3I<nsb<S7tJm)=He2sD-amIHUtr0K_b-co-m!~s`tSR}IcxvZysp;A4;QSC z_p2+--t;Xo^V28m*q>XDH46vGWvET^7Sd66pLx>fRCkkhq28Ulvi7nocx5m0*7b)@ z`t)+@PqVaNpBScA`u|yRq3lsmZ1J9j!S^FR{P)m`zq79(Hg@gy{V|`uoRU;py16CV z^XHr^yEF{NRxwtb`aZ|z{*C+6mbXLnzol-Ok)C)qMl&jDt82@H=cxrR*EEODY>vA1 zOes}#tHMN%1Kc&w*Uh>sd-2obI{B4Cr(A*>UidF-bd^jg<qj}mI$ZJ~qGgiN_Wlb2 zR~oOM72JIz?(M_93JTkpXYjNL32fyMk$e!rFoQSPoI$Je-m3tolJ}e+rmST0x7-)N zWMp|jhjFIT1arpYj53$mE=$UU9lFQjQEVYFd*-{2!0&y{RnD~^8vK@e-Bol+J`f~z zBEuoBFyVRbmESybET<fHSl?ze>-d{9K9f#mwr(wvxf3h7;#TSnnY))7x9Tid(U8FS z`<0i(3q7lk0q17T`@8SshmWrxzFcYkJwtPTn%G*A+0nPZ-46MZ^Q>VFTLtTbh}q5i z#15NnHU0Xsd*ey>ez`ld=2lhvhChG4B6sGrWhtK*W`rkID@bfVSjb!V;Dg@+(})en z)t`mEzgPe7$<4_NwY9t7&yUub%9Jyksp08_CRG=Y726hW-MlgB_dbpeZr0Dg-d_B8 zaJF-}y4@a`Amh)Q8MOcDeVTrv=hCz+jT+Z2yHuklPni7rRj;-3;pT9?n3#XxK28ms zV9s#*mv!o=c8gB7q}tfGv9`;%oL#ze<;IH>=NN6~Iq>f~dmYpHcNVURrL`{^7#J8l MUHx3vIVCg!02{n^DgXcg diff --git a/htdocs/theme/md/img/folder.png b/htdocs/theme/md/img/folder.png index 04a24af2e22a3ef25a986218506e1cbf0147db71..fb51c4b100c90c3e1bcb801cd16e0226cd598516 100644 GIT binary patch literal 99 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgXnDFghEy;nOK=oSdT1|W z_8@?HlFFJl_I?#j60ZLziu7t(H3pvyWc$U;P<ekwSMlMy+6)W~44$rjF6*2UngF|d B9Yg>C literal 935 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4rT@h290TVA2Tp8u$OrHy0YJ7m*JJs7M6Ts z$H2hAS>O>_%)r3)0fZTy)|kv-U|?WLcl32+VA$Bt{U?!?fr0UQfKP}k0|NsW7as$M zG&hehFTWU{fP{dcxTu&c1BW6rw;BVN79+P7Bd<0yuNDihmZGwrvZ{fouAiEglTUCp zt7-?gRwt)c507>yuTB@APB*_^kAQx!pnjjAL7%u)7puV*0gJ6-Hd}@5b_&=WR`lO* z<g-B9`KXl3aRsl_N+DN`BaT}{9Wze8Zjg3gFY~E$=scIuxsK6W<C5FsbEX8QZ*$JL z7*>8Hvg&|;&7<Om)s<}<t6O$?wp<PCz8X34cJ$<1F;niix4if7{}|BqF@D06%vpD{ zXTHl>a6fDD_uM5va@YT@TluhZ?Wd-`?Ojv%waq=(Gx@-T83!lNIy!CciD~msw=BHX zzViN*1;^*EI5%P4-FeF{G_HBrvhqR8+DH9sAGNIi+OpwQ+pa&IJHK@7`7>qxqse<; zOxgE-?zX3kR-9e7{>G9GS5|Dkx_kH8CA%MO*!`&ez~31Mf6hAdd-s9c`wrb-aP;-! z<L_4;c)I+;@8wtjt-1DP>)F@4&b--m=IxG)?>1iiu>0DFt&jiie)4bs(?3U!UOjjI z&aqRE4xD*&?&_<vH$Ppt{Nl!qC%5jrJ@e+*&8I)Fe))g%$Nwi!-adK%_r;5^Z{K}? z_wLK9w?Ci#{`cnl{|_I2e*gaa<M01}|Ni^`|Njjo3l9bchPfp{e!>3-F<?0TXO9m9 z1H&p$7sn8e>&Y{knIsfK(j5ZS=iHW@aq*TU&m-d-7B_DG5-&YJBP56S(XQ}mPqz8b zn>9};i)~8U2LE22)$2OFJw6o%G8V;VuYUE~>++|)b4o(2pBo(Ud!4z;<4eJns{zb~ zi+@XVO}3r;)#U2b(8jL4zokxdKf0^qvvsS(of(mr)xVW(d7A3hD#5ffadZ0ld6ub8 z;oil4oD;I=&7C_}RPf#N?9@!YM@o&B#SDwHLT)ZuHSH?{0|SGntDnm{r-UW|eySwS diff --git a/htdocs/theme/md/img/grip.png b/htdocs/theme/md/img/grip.png index 8053007e9ddc69c0e5adb53ad1cc5fe511ab7a43..e054bf182766231d586066a18ae451228e5025e2 100644 GIT binary patch literal 83 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgNO`(AhEy;nO9&odWOrfw lztMS-&!X+6$_xw)D-@JpuFqdt%)r3F;OXk;vd$@?2>{)q6%zme literal 90 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4i*LmhOLfIqZk+%6g^!WLnJOI|2f|vZD1In sVfpd@k^d`H9Ow4@Z=by}#e<1qBDaF+p=geW3=9kmp00i_>zopr0P)-!mH+?% diff --git a/htdocs/theme/md/img/grip_title.png b/htdocs/theme/md/img/grip_title.png index d6ecce335cba5efbb3ddf5d2f6f1e329619f8c68..e054bf182766231d586066a18ae451228e5025e2 100644 GIT binary patch literal 83 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgNO`(AhEy;nO9&odWOrfw lztMS-&!X+6$_xw)D-@JpuFqdt%)r3F;OXk;vd$@?2>{)q6%zme literal 90 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4i*LmhOLfIqZk+%6g^!WLnJOI|2W?uZ4{vM sv;I)MiIActqfUblUvRSLbQXrr*|$?px~8sSU|?YIboFyt=akR{0Gmu0N&o-= diff --git a/htdocs/theme/md/img/helpdoc.png b/htdocs/theme/md/img/helpdoc.png index 435fbc77985db9e7d9c970dbdcc40d469c3551a7..1d194e23ec2bf3e3c45233091d06f25c21006610 100644 GIT binary patch delta 239 zcmdnY)Xg+OrT&tqi(^Oy<J3Mwzg7nkSO4XA_5U?^8yG$iTXH#rdtnK0*a0gY9}dMG ztmY5+c(NS|1Q&Ot7*)>nJoadQ^oMtkpPhYLqU1FzR<%n(oTp}UWM);;2hX2I_Tg@J z5oh;Is0hzVQDS{C>*SA_9EltH?-V~Mz23;a`{j~#B|D$qteKx-F*%RR`Q)>g?b3Qj zMJ1&4Kb=;7zNdS=^Fr|lXFrC%*l8_v{<(z6t;oLJM;2Npz5LI+mBX-mjj_>8`#=ko xGbdC#V;cQk+RJur(P+}(%F-(8n{!J3i`(q_hYWw0GB7YOc)I$ztaD0e0swABZ6E*u delta 280 zcmeBX+RQXTrT&+vi(^Oy<J605`GN{1j(_w|&N+9;@`8ujLxsmnvp$F=guFj6v*7`& zghbB?iNzJnag5;$u1Z$UK6$Lc+2UXG=bWBH--GLK3(K7smzH2>p4c9`=5EUWC1I!D zdCAQ6-6GPoZDn_}Ri&tVv}s7~7f;d7S^?$_WnqV{)guc&iSgEldpF!T%kt+#u<4Jd z)-ya^4>&AiwX5de=i%tSjK3$9>r>p#Uu<1Qi`^F=k(bv0-{1Cgr&+`Lx@yK3r@l0J zWN|&{RcqK8!kO??i7|(1!OJX0hnolEm}@u|yi8D6TA%kmY1v|llC!aI_mqX_Xil}S nQ2eyP<Nk>N|C5{lvPz`{36_1IRkxCXfq}u()z4*}Q$iB}fa`xZ diff --git a/htdocs/theme/md/img/high.png b/htdocs/theme/md/img/high.png index c0eaee6542fc0d716f1fd9ecaf7e30a7c96ecd36..482dc3c31dd0f83d885c384b8d5a19d35ffdb6e3 100644 GIT binary patch literal 197 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sg^mw{BhEy=FJ+sjFSO7!o z#mUPyE#hu?B`|fW0h@;evq}%+r*z=}1163O6QuN(Df)i?#qzM`+p}M@gVkSciL=QL zjqTbIaPham$93CZhfT|SBXMSviL{7qM?*(*ljk*M!<!j4x$bhN*XEoqQ#rS$<ld4C ztIw^^*0ei1_2|a+cP}nieh{a1_n^kreZBwA^7|bq7H+)OQpdo+z~JfX=d#Wzp$P!h Cz*2bt literal 611 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4mJh`26+$Niwq1*TAnVBAsXjvCwcn|CrY%Q zFQ0jCt+Dg+CBX}}DlA>Pbehx72nRhww?%<MQ(hbsh<tG^{(*hL+f%*S!s2fA4cjw1 z+!o~ZOpg#YcTr)ywaWPZ^FyM`p2p7mUi)d@WSIqL*Q9U0<$i8zS@kV1nM)>VJKsHe z@06&vewA+ijsJ&QmQCEfGsbN5mXh1ozE1pf?%e9Ez59OKa`gSH(0wQQ^Wd3OvG2!r zEc1IR`}|Sp@r!+1c4f@6cv+dMDz^K>alYGice=G&bfzDE_-D@JE$rOOF3#+$*7hiQ zJ})o-vUrc-G@og|M4txr6|YvU(343s@Bbd^)cLN`aDt(nO|_p~UY_8bS=)SK?Thbj zJMK4I&5|XIXYQTTJSlsVJ59|jW-L9b)LS7}b?GmM*t3j`qD2z|rd+k&7;%5aH+{WO z&Vv&YUv#}bqg9ySCF0$+C8vjnKe=WLi)5$68K2it;Wcr}TZ{y_Rw_Cj*k!T&dv&n0 zTmGkMR_5^zl|3AxM-Lvfleyg_-OJR*_^<f-x9s~7eHYF9zkRE_V0wM)l^NA>wi9PB zcs!X!R?veX`s(+J-+96cEJm-GE(c%nTAHSN>YQHmw1fFes=T7gpL3a-1lRoKsrktg zmA@chb>mOFACJ{1Fr4_u7~(c}#i8|U%1ZV;d5~lBp*d}D)ZGJaqMJT)FS_Vbx1TdI zf5FcxSs?}$2Ps|;#SSNri8UU}jVBqOo-WiVAP{tDx{wo7qX@^7hsQh^oKDT%zw7v% WOU7s8Oc@v$7(8A5T-G@yGywqJbsJ#- diff --git a/htdocs/theme/md/img/history.png b/htdocs/theme/md/img/history.png index 0fa4283476b0da9b026b8b26a2226ae30a9abd2f..148928d397d562a0d193a81e4c28c830410d6e9a 100644 GIT binary patch literal 270 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgT=jHu45?t;dU|P+XaYmS z#pd1Bixc`AcB^UZ*vraUuDfHm%AJLd%+I6?-@V&cpIWr`-sJuMlX^B?SGKP$xTM6n zHcUa|tM@8D+dOIAV`8$K*0TDP2X3G5)?pCbyI-wii+_PnOYklo29{z*eG|97$bEv+ zk!m;C9CjCTE;4L#Hn<h;D6r)ghtwTo-k!Jpzcz<SGZfndrm|1t-gasJ-i>ifRHr?j z>h`$P<e1AuKCZrwk0<M2^D-L8UVOa!VbYpO>KdP;+w|_PlT>XCEUSL8yu5FwK4%pp Yo4@0FcKz9!3=9kmp00i_>zopr00s_eumAu6 literal 1362 zcmeAS@N?(olHy`uVBq!ia0y~yU=Rag4rT@hhR<1ZI2jn2o(A}YxH2#>u(Go7aB~Up z@(K&`i3$rS$xG>KD(b7KSZc{yYAIN$t6J$OTI(uV>ndC8Dck6&*sAN;8YtTusM;E+ z*=y)J7;Cs18Ms@TdfV#z+S&Tr8~VFjhqyS0I~l|UyCelWC5O0FCPh@md(>q{HKm76 ztk0d>k-cF-=jIt@Ck`Jvxn|PUT~n{`o_6EJw)<C)zrL~k+sn(}AMX18^wjrfr@z0w z`}589-(TMS`SRk=*Y|%v-TU|X{=eTp{=dKR|I35_-(LRz`NmpLnSp_Ujg6I$hnt^= zM}U`Ch@VGPR9H+{P(n;ZMnX(MR!T`)SV>+=RY@M^H3f)Y9E?pIjn$oP4P8t$T+Pkh zEG^v4&D||cJ#0<9?DTzXY<=x){Vgs1?G621&HUZ11Dza#T&;rKT|gf6G>!1Ei12iY z^mL2#HjnahOAK^`_%|ioCo3wVEH$n?Ev6<bzAiJWAvL(SDrb6g`uvvkCEW$f`iqvg zW^7o{w0TC^mf6+YmrOmdto7igxrf(HJaPEYnavZ<ZtOX`dFr_n2hMNpzqkz)MA!Du zy1sYj&Al@o9$WD6_@ajw_ddLS^3n0dk54Usa(da*bIYHfTm9nBxtG^=yu5$q^`#B3 zudaQ4ef#U{J73?}{`$tQ*EjdPxwP)>wRLZw+<yDy?z?N7-(BDG?&kInclUpMc>Lp| zQ=eYm{(S%7=Z9xLKRW#7@u4q|Pkz0B;Oo<K-=3WM_VV(#m)Ag%^6d2Y=O@0uy!id? z-S6)n{dj!%$GZnVKEM6>^3=~a*MGi$^z-BMU#~Cz`ta!Y%d@}VUjF^@F(~dn+<`>j zpYQMgeE;<K!_~i^?*0A#?(g@{e}8@Z`|JC^ch~=YyatNduP^_7d;9Ol`+q+_|NHsn z-_LLVe*gIQ`{%zuKmWfz|Nq_D|DT_N;{EIG|6jqe|Kr*JA20v^`0)Sd-Tyz|{Qvp> z|L@QLe}Db|=hy!~zyJUJ{r}&e|NsC0W$@U@z`)>C666=mKq+8(z_(~20|VnNPZ!4! ziE!3~C-W{lNH9F8w@J2^OE2tvtYab?$-xrHQNW<$*Pyk|hKW6{lR5u@q)OF;hLBJW zPR>&cw|JOjDy#a<Qrq~rH0S(>+6evbO;c@)el;$7`u_3~GmjE&=eI`{W>+3#+3RRi z$?jTw@!`JqSXJ4p>rS7(es`MA#A_$Lj!s_J$-O1@v9axoy#{A?#L7MK56dcZyEK>c zY@<5k<*nhZPn>TYdVg2x9nVwm#dQlyclGXCs%6XkarSvW4(3VT{}=65<KQn`|MHeu z|96fHva8N`U)XW2BuIoy<w#kko5~C;s}l(;BUm^e?-O6*qZH_HI{6i2!m&t+<rjbc zE4EORNw|}^+cz{yd{INJX4Y@_=hL19vYeY?IxpqXCGNiq=jS$lp3ESyi)FFUxknZc z7XGMMaDQWCM;+^rg~jhS2()TUbDVLUL1iru$Lm8ykx82l{1VA1jPv4X+rIO~hjNDO zB|$QddR&fW1shFgeXHVMwYi~N<Kg`MHlbOM*zSFOzJHG4?!AADHhy@LViTiyGTdO_ zgXNRXE-PQE{MLWRy%n>6oZ4DwJDKUfcE8)@C$lsAE(O0zt7V^_rMIo-#&h?x8uj@< zRz9>_lV`RfJ$(C}ROys;ii`dkOBD9L@BhzyJ@D<dk2CyUfRc)*tDnm{r-UW|5?H`e diff --git a/htdocs/theme/md/img/info.png b/htdocs/theme/md/img/info.png index 12e6cd655d6630345cd24c74b5e85bec38524c1a..bb6095bd00a792c96a465b2f14ddacb5bd269a72 100644 GIT binary patch literal 254 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sg9QAZ@45?t8deOg+(UIZU z#qGk`ckd*!3D)O1$*{HyBxx%38Kp~}6}=#4x^+g0)s<tvbN9bmwWL<he0$f~)Jax; z^A6Q7UA#@)Hrzbhx%bA2V|QJ{eUD#V|9*P1t4_G(&d|xZJTIy(7@o|#wx{=oR_cKm zgDFO0XBwt1nD{3sc!N)GUDDT!PNjD>EN5{nb6B>;v#-ocw_)+_d$(t^$$itx6>r_Q ztFe2tk8k+HyzDiSvu{*d{Qjg=9&oMhL!6qX@#ZZCS3j+^uTS*wySzZTi-CcG!PC{x JWt~$(69CG7Yu5k( literal 657 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4rT@h290TVA2Tp8u$OrHy0Ty65Mh*+;T3QB z&%nUIS>O>_%)r3)0fZTy)|kv-U|?WLcl32+VA$Bt{U?!?fq{`Dz$e62!Z1kDGFj6p z*~u#?D!V$lx+l4MX>!Y)<d&t`)jiqOQ?h%O7Pm|(p0c&NXKD46rPWjRw)D(tnX<HH z%G#beOMB*Q?OD2a%ABQB=B%BvbnTR-Tc<4DJ7w*$IZOA>S$l5I-fK(O9$UI~>(af~ zmL9vecI&yd$L_5?_I&H!V_Wy0+q(DK)???k9(%s^+`X;m-fzA3eed35dyk#ld+gfY zbJzBsySMk;^S#&J@4ff^*tu)Ru020@?fJQT_s-pWe(v7)bI-q@d;b62`~TPOJ->GE z{k7-MuRZ^M?fL&}@4sJr|Nq+e|M#B1zxV$Cz3=~@fB*md|Nr+O@csSw_wT>|fB*mg zcM$mh{r~sx|NsC04<ZiikhNi8V2CIQ@(Tuu(Eu}4%s#}yz`(G=)5S4_<9ad&d*gx& z3nmx{G&6S8HvhR&>+JML@y>z=0nBM94>UN$3tYdhuW%sH<MeIo11H6g@P7DqMeyp! zFJDRw*o$PDY;2E8+_-xuX02#rjCOu{ez01ed2}>)p~CeG7mxbQoOt-&m16+{DVrAd zcH1b=o;R1TpQB^-x<n=Q1FKh`I?q|y*0rH$)hr2Z?kk}W#V*x&&ADXY&eYg6#l=F% h{7yiutP3N<Cl-Szi%eWO85kHCJYD@<);T3K0RZE8h-m-- diff --git a/htdocs/theme/md/img/info_black.png b/htdocs/theme/md/img/info_black.png index 741dabd5e193196549a2a1296760643eb9b11c00..12a575454126e6c2a8af2bde64a37fa266b8381f 100644 GIT binary patch literal 207 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgO!IVc45?t8dhQ@+vx9)! z!|TnPZ#f&-F5x(8Rumj9C|KRStmEqjK|$GRh7Z2`dDlHEn7?>Y>}mlYNoDTD^Trc| zDnF^ZoPDA(bKVLynfAcHAL6Xz|5m;$vi!s`yX(X9Nxt44|2?lpEWSRg?)tUoj{*<6 zeVDH7e<*Lqo|TU$7zy{-ad@3e@sV?p*}LoPWyKjSliFrAwd}6*XjyjTg{NUS0|Ntt Mr>mdKI;Vst07K1IkpKVy literal 312 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4i*LmhOLfIqZk+%7>k44ofy`glX=O&z`&H` z?e4<xzrFv=eg*~x&H|6fVg?3oVGw3ym^DX&fq{X&#M9T6{XQEjhm>lPMBN((28KPJ zE{-7*muoK=dNC&ous+DY<`5;ib%Ril#05VA9Tvq6;UA<d8=rStI_cOnwVEwz?d?@M zrq|nZ^!>Xu$C{_Jzdze6`Oh&RzrrA|L*&DYjE}Jsos&ELg(pWSeZDZkE3j>8?(VXj zpF)hQ%pM#*apr5&^|n=Bd~WlWS{H4W<g1GowR!4Uo4x;ePNC>?y;F;>-AuZ6_tN>6 zm6_(RjJp4=`QOR7)2Kf=^StW4y`0~}u1&wPX9BzVKb<MdH?I4}?AxRJ>cr6_?F<YI N44$rjF6*2UngGumdfNa1 diff --git a/htdocs/theme/md/img/lock.png b/htdocs/theme/md/img/lock.png index 3d99cf1eaef689386c6bcae4b7e3f237d53bf43b..317c034b9b4780f4e94966b8acf30c7ea75852ea 100644 GIT binary patch literal 206 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgO!ahe45?t8d&<!3hy#Pe z#deKHwnx0AH(s-wKEc*~*4pVCzP^(c6ZCdg_#VI_7?dr^(_<EV#(?M1@3+$}%ibRA z>^i2xp~jmUo_7A-omXe|MBmm}u%@e3yEe05oa}h<g+i6dsh2uV*OHV4r*Fyc4DhS` z^eD9UlJ&3L75=g}t}XZf9=7jQ@SFdas|zb9@3;_^zV+PSyZl8AZPCXzXa8hiU|{fc L^>bP0l+XkKJf2o2 literal 646 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4mJh`26+$Niwq1*zMd|QAsXjXC!Y2WDU@iN zUwkfKM)v*mB^{?+UAh;As=8iN(s9|6AsVqo>()>4ExayKAp$L$6K78oY)oo&(_<1e z{c^)6&Zx9RX4%flG@JBu@3SX%-r~Oh>EX|~xU{tNncLo8xbo%8)Q>AyZcm;(dA9Mx z4Rtqf|9)DN{Mc8NW6Gwv`}Wznum~O$naFTq&6KLCe#>vOv$LDu`||y~TyBQN<*Rr9 z?pnEWWw2)G$$vGQ-&$D<N&c{~nX~)uMZ>7r;Lis(t?^!)o9n;)@WVgd^X3(lmVPxo za3?q9>C>kP63_k|a{BZ6#EIYcJC8W{uH0zzC-cO%+}*Lx6UA0Ci9GlxtmPvdKRd@N z?_TlVqsd>xzWh7dkgv{vtk!tO*`2Ku5+$nsFV`|JT)rjXew6g5Y2N4Ne(>8ihc7lG zk3+=B@ObY!pO!uH*$1`WhN~v>uj%^p@p(I+yk+U@U5R%ytZqk6@w45s$WZh1_0+r< zg>wbJ_MZOwvwEFbdc#H83tD_JYb^wH7Ts`2Kc&T6SYR$=^iHhszH*+UXRlS<Y$NGL zPX+D;Th>o>5;^(X!>my}UQw)f^Nx2LCp1LJiOf)9VJJSXv5zxOXz$FU(Xq;g;_5;l zf9zw)o;~4WKq7-ewbdfuEt3;oU)SoKDe^gS{!P~(Gh0#^KQXC3tN*-s)64~Cb9j~* zJ=tuxQ)UP21u31z1^h=@9SpuT^v_$mE9%&jb$(pu+FZ>PmrQ!_WPu6$ymX`Yk`q~% zCv46Z`uZ^Y)yWSm?;W&Ulo$QqHu0^q$-D{WiJS%h8tWNqLu_toe*L_Xfq{X+)78&q Iol`;+03hKn;{X5v diff --git a/htdocs/theme/md/img/menus/README.md b/htdocs/theme/md/img/menus/README.md deleted file mode 100644 index 12cd9da537a..00000000000 --- a/htdocs/theme/md/img/menus/README.md +++ /dev/null @@ -1,12 +0,0 @@ - -Tutorial to create a new image for menu: - -1) First find an image. -2) With Gimp, open image and check there is a alpha channel. If not add one. -3) Convert image into back and white (Menu Image - Mode - Grey levels). -4) Use the degrade tool with option: -* Erase color -* Opacity: 50 +/- -* Offset: 0 -* Shape: Linear -Il est possible aussi d'augmenter la transparence globale depuis le calque. diff --git a/htdocs/theme/md/img/menus/agenda.png b/htdocs/theme/md/img/menus/agenda.png index 0798d15f938689a6b894e2da42fd7cbe5d73aea4..35d8b1b3169f715eea352ee2bc07a4e0888b0f02 100644 GIT binary patch literal 131 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4i*Lm2CurW#URSl#WBR<baKK1mOt!FNk>jx z{9ym#|LOlf4y^wFZ-vwcZT80L5@Nzk%nKTqFvtr@1=w0UnFQEI#0&a(=?9py2%Heq h|M%O7CyaqXc>hH1)4rL17#J8BJYD@<);T3K0Ra3VDd7MB literal 700 zcmeAS@N?(olHy`uVBq!ia0y~yV9;k^V9@4ZV_;x-vF+k61_lPk;vjb?hIQv;UNSH+ zuqAoByD)&kPv_nB3=9mM1s;*b3=G`DAk4@xYmNj10|R@Br>`sfJsvSe1?41X-Y5nJ zCL2!|$B>A_Z*T6+7IBm~{?Y%)f=-PUh8jw0jDmq5mVVIHaOBVsi&`eManr^P8#W01 zG0qA4(S9RhiNPYn6-(9P1Op!Lo_L2f$++?9joo{_)ABbL@bm0`WBmKh_qy+A&KMWl zu3o+RR95tq8@oQl{_th6pZ4iZNaO?gWHpBVL_YJ+P4{OxpP5{7_v}wTt^XYCforSn zq-xH-;jMd6X)S+4xUluFtl}~Kn8P{Cr>=MF*eEOPdO+X3t9VPtoPO5*5otg2T@QpS zAC=TG{^K?C^0Hf@`xKsLyB>(=y`I?ffXi=+YVNf+$r<MhWVRb_xp^r~Uhi?lj`zoH z_B~3?c>jT+yfD*viLZTLg3VELp<9t52A%#DLJQoI4{eV=|NUWIK#k?adyo8fth1Fq z;vB>A-tUp?-RewT^B>iWtD>%FabA5@E4=Vr`|=+%FRAN>h5RVwNm&t^{b0Z7pZ^9| zGoNmM9K)S;Rq99i1D_Yhvfe+#*xv;FSah}LW$seX`N|cots7q7y0&s<kwP--TL0N5 z))RKDe-N;I*{QpdAF{K~KXC5)U*q-vY45w%=+^aHSN!?S_V2Q0^4h>X`!_zcS6{Z< z<aX<8$^AY>I&X4}%zh;uuFqVUaBDJSyyur}vDei(Ke+xaC}-Y!A!di%Igf)sZL((H zES<LF&?>9x5i8Q9duFrhY?az_S9o*xjop1`kA_(Ac4xi4W_CH(=?U9Dxu=ttM;(?- zPB1+4+q-B}ugsQjN%bC!|5?3g-E*anHGW6w{{Zb%|CmelF0BeotGohAc%H6)F6*2U FngBD}LTLa1 diff --git a/htdocs/theme/md/img/menus/agenda_over.png b/htdocs/theme/md/img/menus/agenda_over.png deleted file mode 100644 index bdebed8fa264b115bcbfa4df01a32e5f84793462..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 541 zcmeAS@N?(olHy`uVBq!ia0y~yV9;k^V9@4ZV_;x-vF+k61_lPk;vjb?hIQv;UNSH+ zuqAoByD)&kPv_nB3=9mM1s;*b3=G`DAk4@xYmNj10|R@Br>`sfJsvSeIng&Z&HES_ z80UJrIEF+Vemmo0ZnJ?vTm7ni=F(GmozykvF6ePEJHfV8c#HIuya$4FIA7&V5In(h zeR_9_Vn^<VyAfYK_b?oj|CWEhUax~=<uO^IKA!mx^BMNd+Y!E$={{osPYkmKV}{eg z`|LlSi5>92R&!+Hdxj~-uNN3^31whoxU}@}q2#u&9~T<`U*i>M#?NqTifQ~(9{ZFZ z_FYERvw7w}JbYNZ#+LC0qs0=7Ph1Y?Gykz3_$c<!+bm{M?eC)zUuU&XpJTYc`GWAo z*IN}A`5Uz>E%M5~J~`GSdYbBkS6=N!k0MuZ6}NjBo2tAssHju_Y|hr4>c!dnq8aKq z7yg`PXZDBfK%J|7|1AH0zWCyW8`Pw7wQY~Ld@uYK)L-Pdh3SsizWJJq?#ra*ec<J1 zuQ+p{|9XH)1?z*W2FA;hxnrM4%OCCF-m~&m{k9W=W<oYU<2D>R%%`};CH3>X>(0w< z8~R%xxaS_(tsNz<r~JMuNlo{O;nJ_Su7BHcOvt?NpN+&1p&yOQ|KCmGmHBa3;emIG s@x9g3ayN@qbOnWOvDety{@DIu|IyVmbbl;7`Uw=Xp00i_>zopr0G^)Ww*UYD diff --git a/htdocs/theme/md/img/menus/bank.png b/htdocs/theme/md/img/menus/bank.png index fbaee7cc6bd21fb4f562365a376918f52633026f..b83e7cd310aa66c2d1fff8988bbb7dabea41b332 100644 GIT binary patch literal 158 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4i*Lm2CurW#S9D#sh%#5Ar_~T6Bfw)dHyf{ z>;HTIPyLTMqLKD{{^$Qk>p3d;QZ_#fKJ&%?-~Ye=S3J1)f5(5H8&lc;?f)fjz2ld? zK<viP|0n<d*gX0F+=-?FtQr>`<QsBy^}elOn`C-H?1J4#-gQ^F7?`Iod-wWeO%?+K O1B0ilpUXO@geCx1B}cpf literal 827 zcmeAS@N?(olHy`uVBq!ia0y~yV9;k^V9@4ZV_;x-vF+k61_lPk;vjb?hIQv;UNSH+ zuqAoByD)&kPv_nB3=9mM1s;*b3=G`DAk4@xYmNj10|R@Br>`sfJsvSeIce^ebvqdt zn09-*IEF+Vemm1TLnKh7ZGX;`9}&qSqWAf)IBgVQHEoUPFl*9l>d@)Xh*&DHg@a?7 z*e%Yk){KRVB35|Ri0lgtG0<3%u{e`yx1!wvk25)wBxlz@G)hTVvtA#2lX<%F_j|_a z|9?Kev-$bG%p#fgs;NAsI=ml1uvA63=Gk;6_Mju*L)K<}P!D2x-@=&Byj0|1e;cRt zan^sV7g%)|KRIOUHg9iCjNQ*tCRH51Coa<^sXg`HrLUIP@31%K_Y3~<2svXdI*0$d z(dVZ#-ZR88?!S7UV@-FZV|(0&)U@f$=8f(LOccb8Ur*GDn0zzxKwPZ)L?>n6sg6q+ zY?ya79+r9?)RF5sxl;cp^Bl%^lF8Le)~`Iv+{c_fxv$dxCF{K3OLj3`;EZ8k)^^rx zX2Y54t?>t369fySPDp*P57hP!GgEDyHvj!ag9mdN><h$p@XTQnV{$KfueS6mlYx7( zdZXk4LtB@8i4Td%`{Gv$zhq1hDv+Czd*dy8-ijqJ*sFSk7B9Xvga7m&=jnglbuYb4 zzVXb(tv~U<n%}d(VsF&L>-RQ<?^0*qWBRN4KzKr-)XGmQR@WatUbpTG>-7rFUi+2T z5A-)UF#PknZ*=Td<IGHh|9(pgBgGhQ+q~Jm^u1K_?A57u!UoT@w_erzJ%5$W@lCP} z^B5-c{{HE(xxL<6=kv7Vf4r6+Q+(-sO6_~-=`APUZ9dhuNAR;Vm!$T(vmNo<GQ-$* zu2r72#%VE!jhR@+#T(4;C%t7(=<Tn!J~x9sf=x!`^YjM0<h<2iLSKIWw3GRU_<?ez z)|(<v|LkK}zjp=K7S+y4H@G4~*D;iJ-_4gYmfs_KgJDh3{VwT06<$dp4Y}bKHRfVD zanbI_Uh03GJ7s68j<@&JIwk88FJ~~}_AmO`>>9gNKb3!nLu$Bo9?Uv;eT&IH&!wvW Z85UPbE%{{rE(MhCJzf1=);T3K0RYs`VeJ3_ diff --git a/htdocs/theme/md/img/menus/bank_over.png b/htdocs/theme/md/img/menus/bank_over.png deleted file mode 100644 index d395710a8777d9c9612301f716557ccffc9188f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 620 zcmeAS@N?(olHy`uVBq!ia0y~yV9;k^V9@4ZV_;x-vF+k61_lPk;vjb?hIQv;UNSH+ zuqAoByD)&kPv_nB3=9mM1s;*b3=G`DAk4@xYmNj10|R@Br>`sfJsvSeIeDI!Sqm5# z7~gohIEF+VejDlN*Bl^FYx?dq?<(~P!Z+j?g=1$uV!Tqt^!i-t>>Y*4uNZwkuv`-E zc<1|pEjLCY{QTJoe|)&Mw2EE$KPl2j@`0n==V$-7c`RCa!?8K>Wb~(LHO(7l7uWDN z#4GL(NXq?mU3CA05AmnmlDQNNo?OY}`l;D4Z=yfL9<!yldqU(+GT#i_nfb|?p>N`M zhLYKfelkz=QsBRsAGQ4@!;U|vA0Je2Fl<m}$QKG{nD^SJj_-kwO@hLwS)M%%6%5}_ zzX?d4)ZbbV*Q?GS#r>(6!TghB`zmEuAx@d(Fikz>Ns$+m?P^wjRpnQySCX7uqh6`A z-&G}DC3aGu%=tqG-SL5+Hm>^a(HESxyy%YUtG`N5x=*Do`ozy5uDP|H!Eb6$la}fF z^tZd`RQW$O&RiO8sM$N6)wXWt^w3j&;ens}FZ~nJ*`2Z{@OjB91$m9Tb<8`?uJ~`% zwuhy8mC1V3ntXwnmg1+(c@wWjNIsEGb>QdT@}K#EOPb8(6Kt*T;+i~JlPs1osy^SX zS!)~h>6Wyq=H)deg%fyGH#8aMo?UXr(msG~O4|y*=E$afFK(W`alorg=2q#8&r-3S zJNG1BmuR(Cy}!ET6X&h0!hI9ZYVJOodvbka*tz(beIGA|Hb(H)X;0j~Y2y>|2jVx3 W?@yn8Xqgfyp?JFbxvX<aXaWGD6b1(X diff --git a/htdocs/theme/md/img/menus/chart.png b/htdocs/theme/md/img/menus/chart.png index 6efce90a78859b6f4649304a8481fd193e6cb609..18559b692d133323891fb18891dadb79bc027169 100644 GIT binary patch literal 127 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4i*Lm2CurW#S9D#Zk{fVAr_~T6C~C=sDJQ( z`u~rO;s5^znm!2UW6}>a6<}PknsNFKhKz=d>>Jrib}n4d*p~TH)bXo+fawq66N38x fe)HYB!_TmgN3XhW(Zv%C3=9mOu6{1-oD!M<&S)(t literal 1321 zcmeAS@N?(olHy`uVBq!ia0y~yV9;k^V9@4ZV_;x-vF+k61_lPk;vjb?hIQv;UNSH+ zuqAoByD)&kPv_nB3=9mM1s;*b3=G`DAk4@xYmNj10|R@Br>`sfeMUZRODWzB2Y)ay zu&nfSaSVw#{C1{ycTA{A>;BSJpZt8B1Zr3uU3&cHbh!Ls=5ui=cy;9dgZYJe=jNt7 za0n1N*eGNmz>~$}rpm9>>AC#%z0EQy^UuATeLHrlUnJ)YZdb>vE2Ce(*?a9)^?dIB z^~bOOe|>2YclKJ>AjZDib@CPNms}qt-;VcurE=AsuV(GnjwRb0zBh=wO}n$@@608^ z+s;o5O6wQ;;ol&9Y1vc1_o}u37A}zwW89~+#rb6wbJlIf9eYLQo1XFsbDjNi(Uj>a zx3{|5Gc2~gez)Yt*NIH|yC+{^ylOT{f+0_GR?7<MyJd{*DzaN@w@xYgoal0I+wZk^ zQZ`Kd`|+RA2etyC8D77(Ui-ybuxv_E>eL6nzud}e_xQE?+AqNmRs|du8Mi0RoBl=W z!|b>Djlq-Ft?Bw)EA%w%(7J8cRrV(Rjz~%IEoW(7!hC@9LFjFJ=KFu1KT!R8u=;%D zE!Kc`w<xnUXYH&fnnX%IZ+`zd<1+gRH$(Pkw{k3x+-2Sz^*ZFz?gN{*oo86y=)Eyg zfAZ(MOj}+aa{7J4Lodbe(YprI2e}WJ6Z)5!H*z0{e2{(ndBfMYW*ZHDFkC*r@<QZ| zy9^bQ5$kj9Wxp705U<dTQ*V5qQ_mGsop3Nuu#z`ZI3)8?*{{8uHzYS_7sfBI_P8|p zK=&j*dxIZhUj-i7+<J00FXXP{ujsPAqu;kL7JITU^IF$^BPILmTG9_r98f#QAJrXs z<Jm(t6Y)I-D|SjnYyD8Ww4`4x=yuq-fJOe|-}RKYrdsB0ZcT8{oc!A9bL9dRsVgr+ zu1mM7OueGq8<>0CbroOh*4QV?&ZQ4N`)zrd<3HO>Nkg@`E^a}Yll1x3M-INf)|w|^ z=Wf_^aZ#M|slO-c?JAyJKKq*KOP0+26&o}k&HOxBBO|tKS);P<*41m0zfFB9FgZlN z<ixe<w`cRsII8yR$J`+OBT6&lb{J;6X3aZq-lZy4v1Gy5hjx3HY};n?;A7nMm!Chg ztbXw8UBq?uSz98_%jZvC(l3>CKJT*r(cHFuwlWTEywlyJHY@I}y1iXGSBY7waL3b# zRGw>#w|LGs6@SS#`)h+)tcdD!HNDhhr^Vj9FqmX6+;IJH<~zYR2|He1R{Pz!V6Vxo zEsG4-8*=~i3tA?#Kd?x!No}%8;aRqsA1|?FS8q$0_-c__PDOcf|3tQR-eEgeF51?Z z7CA@XVfLgOYD&3nYd7w54OD)xTr>KKlc-<Fb6Iyish?jzB=c9=m8jl++kad0_Kbwz z8Qr%}7M=aPc1h_2n}XWN-pI4+X}9MXnbejjmo{8kk@#EaL(7s_$Fub+bD8TH*Lm*R zx=QJ4Os4IkxXlNI3yyxT&aKybsq<mV68nbL+w!LciCMkhbN}A4X63xQxl-m8(NX&L z7ISpBbuTe};D39&mnPe}+xs?5W*7b*o%mieh*`?F+3r5`c}8|s*{;La?&rpDtCid_ zgZ=efyTF-x412ct6&keXS#f$7KM%RozwJEp@0|D3x9B_k-+N}cT6crJUgrM~FO>g8 zpKR=U>zTDKkHK8-*3Ug}?;g1L?B>JoZv`@ir#GISw2x)ox>paI#Fp?LxbjWV)4fr7 n+x&@J)N|gddulV^U02Vz@6EhB)>W@Rf=W40S3j3^P6<r_by9wZ diff --git a/htdocs/theme/md/img/menus/commercial.png b/htdocs/theme/md/img/menus/commercial.png index df9b443ceecb364cede57efc36815cf7112e3653..ba06d79a766a3bd14329bab3baa73ae130736da7 100644 GIT binary patch literal 133 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4i*Lm2CurW#S9D#KAtX)Ar_~T6BbzikpJ`l zYrRCpSNjPY*jkDNDm){Y1rm~jmp!b%@PGP$PR5k~0t;oX+W+rlSuEu?uPxkVWqsoX l0S}i?)gSNAPb^?!cx2encz4wjRt5$J22WQ%mvv4FO#tn`FfsrD literal 845 zcmeAS@N?(olHy`uVBq!ia0y~yV9;k^V9@4ZV_;x-vF+k61_lPk;vjb?hIQv;UNSH+ zuqAoByD)&kPv_nB3=9mM1s;*b3=G`DAk4@xYmNj10|R@Br>`sfJsvSeIc4QGF?9w8 zrn8<djv*0;-_AUr9qcG@++OqFHs8>ogIOz-{+V6niqg^e$FR6!qSBXTaxDFe7AXAS zuMj#id4c%B$?W_}T?%q<9Q~74eof1X>OI1eUH?P*;@1nDI{mf3g?@iBV`OjJb9ZL# z@7mAL&Yts0^3t3&H7X-1E9=AOS0(q24=^U^eh{tD{iARtc1lp<C%>g3Za;(FG)tA% z{5`}{7o{1xZqoafjp;f|GA{G(SyOn{_rawYGhXgL3KM>{mlj@s5PaaXmRz1d#lo|- z%##i%PrtZ~_s3IZX|{9Bkq;y$ux-l@yU+GUaHsHx#SVdTPRoBEaDBj3a7}?-gVDX= z_PPW8jMa^C39HZ8PW{<_K#X@qXH=|w(DDY;106p;DK3zIv87?%1-I)D?lV1ac+9q) zV^QMu2lpfGZYiAF#r9vYg7wRl9eJy|45U57D!uP45!=V^v&$|~yF_G1%+hzl52BQp z9_ep9`sw4XjEr>$UQaz=F1hH8$%YVV^;Da?9#gM)CG0=Gem!$|17~g?qrruY)CZpY zAEXZ$Kd>#hs_e}y+sm|%`Ne03J4;SpZp*lQU&HQxy2Xkr)z}|O*VTT;CLCM(bUFij zZPHJX3EPkSI=t@gvgmt@<bSMT{gZb+Z}a&{Evb!7uJ_cg-k89Bx}1sgW4dsE^(1rQ z_eH5c<+?-b8SZagr22C4cE$*mUlXJ3Sf|uh_*~YG_;TvNvlY7cRoOnAetLZCYkx+| z`k<($iH-5{0lK1FU-L8WdcA1dpH&PF^KBnDExmX}X?ckq*9Y##RK^GDHjn2lIkQbJ zK;=PrNZ@uqse4DVy8nGzamS4{!Zv-zY4$Zg?`k~oP5hC5V3vL0(Vt2aHa^i=d*+*> zwu$@=!GH<ki}Vf%pV{_B$nI0%gWf0hZ`mq6&oxYp3Vv*`o4wF7L#VAFLg@7C$4xcj zJGHE{OY>`A=m|}~U&i~P<%yMXVvf-7|LU8Re{rX2s7{@lmRbhN37)QgF6*2UngBw+ BePjRt diff --git a/htdocs/theme/md/img/menus/commercial_over.png b/htdocs/theme/md/img/menus/commercial_over.png deleted file mode 100644 index 5fc4f661821e26f0bfe1d79c6168b36c47e1ecc3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 638 zcmeAS@N?(olHy`uVBq!ia0y~yV9;k^V9@4ZV_;x-vF+k61_lPk;vjb?hIQv;UNSH+ zuqAoByD)&kPv_nB3=9mM1s;*b3=G`DAk4@xYmNj10|R@Br>`sfJsvSeIgKqL=hrhZ zF#hv&aSVw#d^PfIVY2~G?U!Hn_ZE~e*)T~@;q@|q!FHBIQc?K=?+cbv^99luIIq~B zntNXSb`6Jg$#eP6+%FXqpQtZaP?EVSSCC+B^5b~#yxUAG7^g6}F|@g>ziRDJX;)j+ z_{U5jQ2D99P=)v9x4YCo%zAb^b?tqp6(Ld#SDR{&N-Y<9VA}Bh#4LRV+y2?Tb1uZ5 z%UaA-Y#&p}#=y&;`*t;h&F7kFS;0aVB|J`TPXCwo-n-V@!2ZMe_~<odfBsI13E1g> zqnxkvBG<%~o@<KdZ(uvX-f+FOdb3e}SX*q^2j=OAcYfQxEW~Tosn1Qe;^!vEa%^7m z%T3B=N8a%@(?4u=HC|-9@$I_6Y+27{{r6K&o7)|DBW|I4W}<KMzgI2p(i6`<jXU&A z?)BDUF7J>PzBBCEXY~aLt-f<cn}73$FMb~4slGSbCSPE`=aMJ2Y4xcI?>G(rAJL!B zx~I=0K6z`?qBq_R`O1f~=Pa;^pC%I(-E3~WB!9A0jjTtA_@0>`)+~9DoO3hhdv!{k zU;9_-i0WCl&#z-#uV!-N@R_oWKCE?I-o*!BPe~Ns{b+K|mB~%vaw|7*e_%V1p0JOp zpfv88QdO&xLTmOrPv_okN=lDs%2)c%d|mf%T8{4Y^RN1REG*|&@7w%xT3hhOi~l#A r%G$J5xwqYPdy3`(^^MN|`G51v+}=_2CW!--x)?lN{an^LB{Ts56zdcp diff --git a/htdocs/theme/md/img/menus/company.png b/htdocs/theme/md/img/menus/company.png index 828bf8f2e709d32ecb911377c85b8538f558671d..7b9227c0674c839b3383586590a7bfe6e6b13fdc 100644 GIT binary patch literal 105 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4i*Lm2CurW#S9D#2A(dCAr_~T6C~z5uorWv z<-L*dDocSaU|HjY$r{%iPIE@^DtaGYA%Eg4^Vdt49xyS;-q{y${|~Py0|Nttr>mdK II;Vst0IOLcNB{r; literal 572 zcmeAS@N?(olHy`uVBq!ia0y~yV9;k^V9@4ZV_;x-vF+k61_lPk;vjb?hIQv;UNSH+ zuqAoByD)&kPv_nB3=9mM1s;*b3=G`DAk4@xYmNj10|R@Br>`sfJsvSeIlWl(tXT{U zjC(v?977@wzn!_?`-p+aar@;>?FvdA1>N=zd?Ku@g6xHsEdTlcGduq0NDmJ`Xn)9& zMV;N%{h;%OhZX_HmzDQ=w<(+K+;%-X_)N1-rM~|Cx>?Vb=K6YhhUPYL%@%)uwEAOQ zjiFiS0U7O8OSf*za$7ALu;kW(qPD{QuNKvx647^)sAjn{b!QIC2c|jENqP-yXZ&07 z##FySuOPqkrPR9#I?**8U)qj*37J#;gt^(^FB5b4N%O{RZ=cJdpO|K_l^MP9y2Sdi z|3IheGp-w@Q)?!%UyJ<YDHkzO{b%ykOShy8R(7suzCF$G>z<SI(^U2@<ht~k;i_t= zYx~9XzBLScR$Y=y?{+x-pnHpr?1O7Y;oeVA=iY2NAY73AA)l$8ZT^){HM}>UUvK=m z=j3<Ye<uP&AD>8HyFq#4_Ri^Ifkw+W`=)(jy1{;p=bz;1NZU)FOd5<&$Mo*m?!|a! z)wFM}&RK?&4`fX|-W+(ZVUghzO`kn7&T{_ygr4}`e$bw^OID(zRc~TFyIj(*@2fUE z`_1`iZtQ2zBh{b&Ppg>`RFh#jLsajdaD<1VorJ(|+Y9#@pBdG?e|du`>!1A^@%i`u ZF+4Ebe%8c&+C@;rd%F6$taD0e0swr%_4EJ$ diff --git a/htdocs/theme/md/img/menus/company_over.png b/htdocs/theme/md/img/menus/company_over.png deleted file mode 100644 index bed6b8dcbfbb062a2ff1d6affd40c1b072b2c2dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 406 zcmeAS@N?(olHy`uVBq!ia0y~yV9;k^V9@4ZV_;x-vF+k61_lPk;vjb?hIQv;UNSH+ zuqAoByD)&kPv_nB3=9mM1s;*b3=G`DAk4@xYmNj10|R@Br>`sfJsvSeIl~L~>G=!{ zjAEWHjv*0;-%fwX+hicnYTxs}kok^-nSlC5!8;D_1uX83yeZ6g9n>xUUpcZscbmk5 zCvipl^~!B7UBABD#ic{kSgCDN_$RNpli!;w`R_-}`f&7Wi>N1m{}s^_Ot0jgEr0KP zN{xGscVkV)O@=E6?oG63Ty2;oSNtW_J8o^z+D(mnT+M#YIJx|QRoKlChesV=`foz? z-kfXE*Nc~1!Wv+aC8qc!cC+vFh3TK4>HUB8_^sL0#TA@6^(uwT=X969v1jh=&~<U? z>#I>L6X~^Ex|m<>{<Y`IS8|V8$-R-$d-zzOxraTnJvGVbabs58$>V!^Zp7Vn=6T}% zz=G}5s!G-MPt=|EalQFzu=)XaX}ewO3#k>G0zZk_Fsg4l_4TpW-AquBdb;|#taD0e F0sv-hp>+TN diff --git a/htdocs/theme/md/img/menus/ecm.png b/htdocs/theme/md/img/menus/ecm.png index 542ff5766e1d7df538e04a1c2dffde2c7de8f635..1bb8e0dafd64e92bd077b868cffc51307c37eea8 100644 GIT binary patch literal 178 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4i*Lm2CurW#S9D#m7Xq+Ar`0aUOvt15FpU{ zaP#E`ckv=orA5kIlR8#ySlE1DNO9)Qjm6iVNBg9?{qoF++_7x)fxUUcHj$Z+7<4u= zaPurl>8YFGCA3pMWs=K7c4bS}$?`6|doK!lc&vDFGdJL#n6%G_I&S&2h}geBS<ar` hYxn9(edTlJz-uyVm%dGPW?*1o@O1TaS?83{1ONkYLva8A literal 912 zcmeAS@N?(olHy`uVBq!ia0y~yV9;k^V9@4ZV_;x-vF+k61_lPk;vjb?hIQv;UNSH+ zuqAoByD)&kPv_nB3=9mM1s;*b3=G`DAk4@xYmNj10|R@Br>`sfJsvSeIn(Pwi^~`o zm<2pt977@wznyt9TO?56Sp7s95mP}|m&Kkjf(M&jVw@BN1J`$Ta0|sa@XE0`et1#; zfT=3zi;(Tg4uu`BkJ{=vUeU=~bWwuSZL-7+AD_yfZ1djo%$)ab=9vQ`BKdJ=uiuTY zk6r)jt54(1iL1@pWVYG-1i>@WmIZtnpKF)Q?45Rf#!cJb*H8VOqkQ?4KU0~<)7=hR zpZ}hf<1@SHL5IhD)>A?cuB8Xx3YmRV(zx5I?)I51+l@2Ie_Pf&&f3O)`)R1(8aWG2 zldOC5AKdU_pKSQF`|O%?XQa-qale<B)_!)43E#fsk9*U$oo!xew7F{T<Neufj#blU z&NbL9X8d}R`HY)lcLR9BHDi`Oi(8|8NbYFz4CjyQVkHzz!<cqAZuNU(S0GaH;)ogN zc8|~82YePtTj<(!$+BEy6c+8ykm+()5d9?G$n4PhEbxI)fy|45H5@lI*K{*WuvL|Q z-g`hQak};Oj;eK*GE-`FH{4(BHTh9(*Hn(j)An?f&pc`V;)Wz=!8+EkIy-}Fi%;<j z#&ccC>{&i1ySlOUK#R(Tg_{2(etOI~UaiIXHEG)ob~BTw(vMb{JaOKuAQth{Zvnf6 zeEXk-SttK<F1}?GJoUpe-)ocN746yfFlZGy{tP{kmayvC^R3S%&aggR&Ty1(W6;vG z33?j!yb-)TmunhN><^k-=IMUP=U(|r83sMAQif-lHOyzeYD}8C^wYGst7^=bzlhwk zI;$0I`QP?xR<Y=fS8rmYWH!A#_w)OK)Cb<Hp3G<PZm>L%vp_V1ecAHBpZo`WdpUJ) zs+BU|SlY#WVNI6Ewomqr*00o+qc%OU*NQzg=Xj*xqECVkc4<XkdX`>Yz<NXd>unc{ z6`usB-e10QO0@lxdPe=N8TOfitbzXoKiGKmf7oqU&7f0UHq%veLj7{33*se>KUD9t zm%RL(UV1m>Wce%Bz4~h=O*zH=BfB>~)XrV${?d})Vr9Y{pDw%a_lj2fw14Vl*_T<n zTN(S`_c_-&{GR{KBwvzga(?Lv_pAJ~PD~JOE18$J^^=C=mZm@RPb^NUXI!&O^6~yx RM@2!I$<x)(Wt~$(695PTnIZrH diff --git a/htdocs/theme/md/img/menus/ecm_over.png b/htdocs/theme/md/img/menus/ecm_over.png deleted file mode 100644 index 269258a8cfb5302da89828e648105fb0dd32c0b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 647 zcmeAS@N?(olHy`uVBq!ia0y~yV9;k^V9@4ZV_;x-vF+k61_lPk;vjb?hIQv;UNSH+ zuqAoByD)&kPv_nB3=9mM1s;*b3=G`DAk4@xYmNj10|R@Br>`sfJsvSeIm>%b-p4X9 zFtK~OIEF+VemnDhZnJ^F(fCz0{L)uuE+}cbz`M!uC0mb!*$FmPVH4?=JO^_H=^er` z`{$@u8FAM4bgKF}bqO8+_p`$6{h6)~fh-%v2N4g%f3V)G*I;06*!A7MGh>~$;-X3a z+FxC6e}BfEA?VyE)&qWj=GiRD5owsS(4Ns|`<C1GlX8TVv|3EOl)O&L?ehO0?6_Ra zR@_Cz{MHs%8}=F(7fHdZN|P&3J534vyyWRz>tgxI2ei+v+ScGA#;M8_=X8701DSg% zuCFXNdaTIW;#qMh%Higu2Qqe|k%m=aO4U1;&TZ_MDo@Rilt1^-*gH&1kvH{b?5ziz zr=2Wqi~oKjG?_vA<J@Q34{K|#FPy(;>3Yw-zLk%+d%G7D?C#A^4r_a(mCdkUG5V2_ z$q(D#Zx=l1E&a>%;oLa`i3-&<**pulSpR8=t<V(N=iG4pkHf?dsT$nhI3ApuAHSn# zHuFBYUALb&eYbnKpK*^_+3tHET%Di0S=q}ixL>g+>y5M4_a(oz8~Ej(|C6xQ+4%9! zvF6#2m`&`qEM+N)I;{2Zc<h1MSz1y-XTO@Jsqb5QtMMIw?`N5}hi5#sQE;=#^=H_Y zyrBKib>0_62lzJSRxJBy`02#r?q|8`Tz>1mc2r(3H>zNrz-VFr>Ss-9^7^pgCguaD zF0S@TVy_Y@OS%+c{p$IF2U2p$Tlcuk)BML!Ht$RIq|8|xKxxR+)z4*}Q$iB}=*1Ry diff --git a/htdocs/theme/md/img/menus/externalsite.png b/htdocs/theme/md/img/menus/externalsite.png index 01e30553fc569e01123faefa7ef3c019cbb36b5d..8abd6437ea69f4fd9c43960b6a14d677e94764bd 100644 GIT binary patch literal 124 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4i*Lm2CurW#S9D#&YmugAr_~T6C~6g)Iaz? z{Xb`8`2W9xQXJasjng@JU6`!04+zTq-?&P0i4;d=$&bokqJe^cnHC<L-|^+wqy6s- cPM%|sy4@^s?dAN}3=9kmp00i_>zopr0Oo-#t^fc4 literal 531 zcmeAS@N?(olHy`uVBq!ia0y~yV9;k^V9@4ZV_;x-vF+k61_lPk;vjb?hIQv;UNSH+ zuqAoByD)&kPv_nB3=9mM1s;*b3=G`DAk4@xYmNj10|R@Br>`sfJsvSed4?Ik!bBJt z7$<wWIEF+Vemld~o7qvIZ9Yr4iIAY9bn_w(u_o6yE-cd7)&D)~rcDj)TF@bO>zAX+ z1MwyogBZIDTW2<>&b^cCAv(7)_1nGb^iL_q1rNE-S*n?K`4mX(IVg>U`sITUeqFac z|8&%+E#3*nAC}zmX?q{{?)SW1U(UT=Z@7iA;M`B`kJmO9uM^9#?qWX~xo_4Z#ZCL4 z9kl%Z`icGCTBa||Z@oV*u{?b}+{WeGb(>c=d`xPN-!5OeL0F`1o=N)8UtR4d{>^%x zKfi{Fr^xSE`}t42BK#Bovj2bgWVeImg*4^#y1<z~Uv|vof8E7(xSXfPb=rDazQ%g~ zFU=3C;$QNAm=kQSuAP;$u3@U+ybIeWy>GZG_-dYty~g4x;`xUk_&2mVyk_!Eh`soF zlRfh)2h9&Ajj5~;JU%V1`S`&&{>gfm8}CEvQW>~T?LMWO;GDLW)ubUjK{_J%i^;R2 z!GeF;ET+#|^+NXn(~fViybjE}^S*NL>A3y;D>HvAV6DEG^?@xPfs&8&cSN+*tvYkX P6%?PIu6{1-oD!M<EqCfF diff --git a/htdocs/theme/md/img/menus/externalsite_over.png b/htdocs/theme/md/img/menus/externalsite_over.png deleted file mode 100644 index 8e227ddc83f7c92994716cbe7c75cfdb4814feea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 404 zcmeAS@N?(olHy`uVBq!ia0y~yV9;k^V9@4ZV_;x-vF+k61_lPk;vjb?hIQv;UNSH+ zuqAoByD)&kPv_nB3=9mM1s;*b3=G`DAk4@xYmNj10|R@Br>`sfJsvSed6xOpC-E{c zFp7A(IEF+Vemf&D_ppIL+xp84EKUk6PKqLj6hxrpu>;8g9BCikK2^HA#{1P${ncOo zPkQ>Jru<)$d%7n3fw<88Z-<2TJYdzYILICMp-FttgZbC1jqTc=zslv=mXsF!c=L@m z-u=7JyU)K_Y=3ILVTiFYb5i%LM(<>6HM?hjr`=cmxbfVdnf;8vo`KBxFZ|=<!3y7C z_jU7jBpT-}KKDIi<>&3P8`)~!bVRTH9A9s<^U{~SzwSwHzjN*7xpeEm@Um@8i;wr( zo%2(>thpv~($7tk-b+<RS1_Mb{K4k)Q0x2~@7Z_aWPiQ+7F^M}lhHhZ!LD)l^ZmPY tpK0&=r+=-vZVMO0*&y4w|7HGVD0Vq!GeJc<l!1YP!PC{xWt~$(69BH+sPX^+ diff --git a/htdocs/theme/md/img/menus/ftp.png b/htdocs/theme/md/img/menus/ftp.png index d9d96f0255b04e220db0fb0549d01c42bb2df960..a70a9d29b775c0cd504a87277e11d5de4ba276d3 100644 GIT binary patch literal 92 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4i*Lm2CurW#S9D#%APKcAr_~T6C~6g*iU3| uWj2)3yzDS(vYT_J$&@xfjf)}-4A#?*d7QF(7{kE8z~JfX=d#Wzp$Pz(v=`(6 literal 788 zcmeAS@N?(olHy`uVBq!ia0y~yV9;k^V9@4ZV_;x-vF+k61_lPk;vjb?hIQv;UNSH+ zuqAoByD)&kPv_nB3=9mM1s;*b3=G`DAk4@xYmNj10|R@Br>`sfJsvSed3LsWhqp5@ zFir7vaSVw#{C39vY!OG1<Mx848eP63h6^rgbg(5SCO>9vYSnlluMoz#TSFtz(W#?V zNcV`-g&Q|D{%Pdsuxu61xss8zP{q;0)tTktx*d1!`OXUG>EC&G=h=6a+}0l=((>-j zK3`k@?d<Kh2FE5`-PXmkUB<5c{6pg_VXOZ+KG@cN-~B<2@ar!O%m*|Re6GFRSSR1@ zn%}c=Z9)&H&6};CxQ%5uEByN=QRt(c-=Nz6Kj!O|XAB=Aj+#8$Kjq7|mCRFF9_lmB z)k=%~Q+w^E9@__J9T7Xvr{7mqJa0J9_q3jQd&BHY@0s5*{0`mY`5;TVV)BMhv)5J_ zA5cCWzh3ynSA!1>H(tyrX1l?~v-83I$nBb)Y5MoLYnc7a8`huvYPG@4<p@)ONX68$ zdFw6C-21$Z)xrEiYOgNS;{#J>Sw9H6mzVyuDxdYky64BI=K3+%H#%qi(flCrgX_-r zW7}O0UKhG&rh3!tzs&7tZ8CjUx7RZFF}q*+ao^&Dbi-Y_3#t!x2Nk+);yoZe)w7J@ z?*aCwmsxu(-aWdl@#BEuHEy4Z1OANSQ=`h-syKO=c3-JF_HeQMoyd><A$0;b)cGbG z@@;hcp!%RGW!l_pRbM%NSU&JtY_opqeU-4@N~ZX2$4+JWNlHv(TI+w{i@e^cFs2#o z_uA)fi2CV&V5{gAyUTLL&yP;nopby@tIg-Nxh6HHPj9t%{MeetwOQi_>w}%_N0NMg z7=1YU>Obe~JA$9?K9kts&b7p6kEg5VeqM{0g4;Rv{Fwit@$thqQ+_G?MP4X+y1Oy( zWxx5v+@`XI^;;}%t8m$K+jxHT)xK&Q@B7nt_0pTmIPRQ1B)&OnwTKV1T}Jtj4Z>x% v8{F>I7_r~~ru+ZM+{4d5Sk~~#-<-xM=uvfUVq@PMP=fY!^>bP0l+XkKvpZ+b diff --git a/htdocs/theme/md/img/menus/ftp_over.png b/htdocs/theme/md/img/menus/ftp_over.png deleted file mode 100644 index e3ea742e7c7edd0d0e970ae45c28e464d90fce7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 563 zcmeAS@N?(olHy`uVBq!ia0y~yV9;k^V9@4ZV_;x-vF+k61_lPk;vjb?hIQv;UNSH+ zuqAoByD)&kPv_nB3=9mM1s;*b3=G`DAk4@xYmNj10|R@Br>`sfJsvSed9Dim{ag$T zjGH}O977@wzn$^0u*pH7)!z7DzpRJW1in2X0^SCqDlZ#K64*DgSPNJk;M&5nrr}Ry zdY;*XgDW|n-8*xxfSLV$+5LBN=31vGEqv6;s62uH3G+|J#5KnZH)I*;v)e`2s59|w zU=aH0mvYyC&yDG+nX@%#D~5hPH?wZ}#Ghs#Hb$RTV>63A`RtZQ!*lLu?$h@0CCydM zS##|DB>nm;t4rih7gr}}Z@d1pBKuSD>nip&jfV`6GiVyD-tj&0biic)#z1CcIqsRA z?Xktz`Bv`ry!tA3Zhy#@z5~-;&K^57b;C(l(;c#LDw4jgB4LaEuZ>DsKF^*hviF&} zY0)f((_L*5Kc<}WbY)%X6c`v<)ct^M#_Adi)m76j`kzgTp4=b$<JAO9p<-RRxs@&- zLblG?6xn4S7CtRNvHNzVfVr>rn~>D{=sj6;R~71{WzD*Na8l5^?NX1q55IT1RnR^w zn%8Tx|G%Sk_ga}h-2GsAKjy@&ed#67?x;;PnC1TQ&)R=mtQ747&n~@g|DgCL=eJKj z9~So88D;a!+ti<L@%=5*T5zXaf6nU-6R&)&>3Gtd!}Qa^ZUX<4cK?6k{e0gy$(F|7 P1;w|gtDnm{r-UW|wyN-V diff --git a/htdocs/theme/md/img/menus/generic1.png b/htdocs/theme/md/img/menus/generic1.png index 39f808bed32f27c7d591d2e68e170ee96468356b..b51ce3ed95a437af48d672cb4b8494807587c080 100644 GIT binary patch literal 133 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4i*Lm2CurW#S9D#KAtX)Ar`0Kp5G|SARyv= zu_sBfwYO*05uw1$Kl<)VA70(*+K_Fyu~1h#;km2OttOQ+eve0to;3<5_<V|rZatOX l!@lcIIQJxlse;#~ByKtyESHnN$iTqB;OXk;vd$@?2>?VrEMWiu literal 570 zcmeAS@N?(olHy`uVBq!ia0y~yV9;k^V9@4ZV_;x-vF+k61_lPk;vjb?hIQv;UNSH+ zuqAoByD)&kPv_nB3=9mM1s;*b3=G`DAk4@xYmNj10|R@Br>`sfJsvSedERH<S}PeC z7<YNPIEF+Vemm3F+u2a0ZN7Hd$JMhH)&__#ZC29Y;#<_+(Y%A3uQcdG`iuI4P<Hlu zN7*;4RxH?Y!;wXsgDb4Nd#fD#`2x+P;@fxXF341Pa-2L_?RW1<oRGguM(FDWt!F3Z zPbqDCQSEoS+BJCM{9qN4#|~E#?ubrcH<AijcI&~OhUI5<Hn8bP3z=@sPT;?B{lJ>Z z_gTZ7r+u{Eu;O5Z@_xoQS2E@87?RCQ|8t4FcKLVuTbnJ*qytqajubmSGnncdBYV72 zWCOzyok@0VmkvzK*UNsgy}|gwmFv?&jx=QE&R+H4`Nj4-@^-%)m~GE$&F+|y5bToY zk`nEb)Rx?o<mz(Cs{f)y@Y(v;ZLvWqjlvIPcCd1VdZfA-a-Lzfy%o1*Z=!dqU%QBA z{OzUFSb5Lo?>(^L8oS6-u^%Sfvwr^1xe`8q<%R2~HcG2}p1<~2c;u?b?yD3xWxhIN zebeIRmf&a6QJ?+HKv3_qADERmp?+QRv-v*OY&$b#S=1Wd33T3P6koRbP3Xr3(;j?Z zv{Jq!LSfGJsb`tw9oec(_p!M(>gg(n?Axr*l)vxO(rG7czfXC2V!Px|`Gbz)JGe~+ Q;y}^v>FVdQ&MBb@0Hd$#;s5{u diff --git a/htdocs/theme/md/img/menus/generic1_over.png b/htdocs/theme/md/img/menus/generic1_over.png deleted file mode 100644 index adfa8c1599b9c2b74e15d0b86e5cba6dfbe8587a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 486 zcmeAS@N?(olHy`uVBq!ia0y~yV9;k^V9@4ZV_;x-vF+k61_lPk;vjb?hIQv;UNSH+ zuqAoByD)&kPv_nB3=9mM1s;*b3=G`DAk4@xYmNj10|R@Br>`sfJsvSedBIO!WzQHG z7}Gpm977@wzn%Hk_ppIL+kAz8+oc866r?BcE)d?5bAk5-+X1%3=1q>f9CtbHcAWX( zDZ994NW+^ey1hFl$31o4`1gig{F-95&V{#Fna$e&YwxxR+MB#!!|&dgYaVz9=V>(r zI_xyvz?}6u<nHd`Nl77It5n`jxhCaV?D<$?o{myT*nux6^8Vy)zS&YE!)4Dt&u<Ig z_GfJ;7oE*Jv2YVpoS(_7?<*e`7thUpeZ<W0i}Z(tw=Cz2R-D(@S#ou5d8_7jSGEFa zgH5yhzP*;YT|Ch!L{Dc)=%i04K1i*axukciaERJBbyL%|jZ1rjE*Cp)Hx8dQzduR) z#qajLhPGw*)>=(m`7?F*1m^JP+qS>_^?UAnE!ley(NH_j{W%jdr%Kgv`gqLGxwSo9 z$tW$dpLy#{(|}9Lu^)Ta{`6UBBRq5Yc|IH79OE?B_{-Avk+a1z*MC*)O|P5s^22|g Zf6RZSYoAUo%XI`rk*BMl%Q~loCIA;*(1`#5 diff --git a/htdocs/theme/md/img/menus/generic2.png b/htdocs/theme/md/img/menus/generic2.png index f4dfc5f360a87341fd9e6a59f10bc733c68028ee..b51ce3ed95a437af48d672cb4b8494807587c080 100644 GIT binary patch literal 133 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4i*Lm2CurW#S9D#KAtX)Ar`0Kp5G|SARyv= zu_sBfwYO*05uw1$Kl<)VA70(*+K_Fyu~1h#;km2OttOQ+eve0to;3<5_<V|rZatOX l!@lcIIQJxlse;#~ByKtyESHnN$iTqB;OXk;vd$@?2>?VrEMWiu literal 570 zcmeAS@N?(olHy`uVBq!ia0y~yV9;k^V9@4ZV_;x-vF+k61_lPk;vjb?hIQv;UNSH+ zuqAoByD)&kPv_nB3=9mM1s;*b3=G`DAk4@xYmNj10|R@Br>`sfJsvSedC{-xoBlH} zFz)hnaSVw#{C1|Tx3i&0+kEY^kE>@ZtPK!f+N`9(#kZ)tqj?86Uun>X^cVF7q3rDS zj<Ro7tyr+*h9iqM2Ul2k_f|Rf^97no#kcR&U685p<T!b<+V9?zI3a(RjL_E$TF*|* zpHkZPqT26twQKOi`N1k8j~%Wg+!39?ZX^}5?AC)l4a?8!Y+%!o7BbzMoxp$N`hhi* z@3V$EPy1-SVa34+<^7Cru4KyFF(jLr{^t^T?eg#Rw>DdrNe8M<94U5uW-!$^M)r84 z$OeWZI+N_!E*+Sdub2H~dxP<VE7zxm9BIhRoxSS8^Na0w<n4YpFx#Hhn%yxYA=o9) zB_-M=sV%uF$<^hORsTha;Is9w+hT)K8igOo>|o^z^+<Iw<UGS{dn<0s-bC+IzjhJL z_}fdTvGShF-+N%gHFlAwVn0l{XZ`%2b0vKK$_v*|ZIo8|Jb&%4@W@q<-B&4Y%6xUk z`liLrEy2&CqdxnYfuP=JKQJqCLjAhrXY+lm*>+~gvZyt@6X?9pD86j<o6wI7rakz+ zXr+8dgu<NbQ_nKVJF-=o?qhRn)YDZC*|%ArDSzLmrPEH@exLI4#CFM_@&_HocW|2u Q#DSvS)78&qol`;+03n_1vj6}9 diff --git a/htdocs/theme/md/img/menus/generic2_over.png b/htdocs/theme/md/img/menus/generic2_over.png deleted file mode 100644 index c8e58fc222091713ae13ff57f13fef53b96a4511..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 548 zcmeAS@N?(olHy`uVBq!ia0y~yV9;k^V9@4ZV_;x-vF+k61_lPk;vjb?hIQv;UNSH+ zuqAoByD)&kPv_nB3=9mM1s;*b3=G`DAk4@xYmNj10|R@Br>`sfJsvSeS&OD~Jsb=S zj7vOS977@wznyv8_ppIT+kS?i3WqFKW`QFNDa^YVa{_KGkiNhxAf3{($?>Mb-37I5 zE`lCU>nbd#Dz$XYwJ?9BEW359)bGuIe{X-yrsNcz+$`4KzFvEq*Q)K@M}F0<x~cJF zUfL2#X4&TFY6oN_vX>v*X|1kgc2jtwi_5b|W<i3I9Uj-))HiH6#qwgh&SUqvXRkat zz3c<?gH4M{ErKPjif32OUTeg-PD|=*@bwQ9y`DQ*8y54_^3KV&KDIe$)z5`dw=9Ci zvfXx_VCds@E1Pw4ereg);y0JH+Osk{J6xuH%bJz0WOTKxXWquUOMcA~PFS*d%CndY zr)R!idCq#9=##sN{U-WGspgXDUg0w0N(uWj(`T=_=l^HrrNirQR@N=GmY!zWT+c2h z#=Bcjo8>>7jVb3Hv41-~AGkiqW<Sq;pX0+W)A*ZBwO?m_pLL%9f4<quMco^=`Fd#; z$*unxmi=$tq2`;-udAgSY##{R&=dR<_P*FI=CFQpcs_GkgD?BJ&x<x!t^c&7XX1Zd zr>Su(>@^SDTYX;H5dUkJ#-)k}|4)7Skj?g=ckj7x@)zPubU_j9>FVdQ&MBb@098)u A-v9sr diff --git a/htdocs/theme/md/img/menus/generic3.png b/htdocs/theme/md/img/menus/generic3.png index 00769352daef5a513aa7b39eed513a461d15cb9a..b51ce3ed95a437af48d672cb4b8494807587c080 100644 GIT binary patch literal 133 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4i*Lm2CurW#S9D#KAtX)Ar`0Kp5G|SARyv= zu_sBfwYO*05uw1$Kl<)VA70(*+K_Fyu~1h#;km2OttOQ+eve0to;3<5_<V|rZatOX l!@lcIIQJxlse;#~ByKtyESHnN$iTqB;OXk;vd$@?2>?VrEMWiu literal 570 zcmeAS@N?(olHy`uVBq!ia0y~yV9;k^V9@4ZV_;x-vF+k61_lPk;vjb?hIQv;UNSH+ zuqAoByD)&kPv_nB3=9mM1s;*b3=G`DAk4@xYmNj10|R@Br>`sfJsvSedC5N$|6O5V zVBF>D;usQf`0Y$vZ)Zc1w)xs+A6L&-SQ{X|v{^}mi*HePNAnJDzS5u%=`ZRFLfP5t z9cACFTCrfq4M!Gj4z957?yYj{=L<BGif`YkyC75H$#L>zwcoubaYFts8KJKiw4R-q zKc%$oMYZ4QYS-Y2^Mh4H9y?q~xFb4&-AF2A*{uhA8kV2c*}$eFEo8biJAwbk^#f}r z-)9YTp7zmt!-|6u%KI7LT*;KTV@NhL{m&)x+U4KrZ*8_LlMYm!I8yBR%wVc-jO_77 zkqrz-bSBxcT{<u^UoZQ~_6FkzSFTSBInt1sJA2iG=NH@W$lLvHV75K0HM?U*La<Ao zOG>m$Qd@FUlB>%ltNx1;!Ds7Vx5WmfGzveE*}=*c>XGVV$a#j@_Ey}My@}qbe(fTf z@wb;wW92=UzxTj~YwRLV#eSG@&-(d4=Sukel^3p`+9<8^dH&j8;gPEzyRTB*l=<q6 z^-YVLTY{fOM}77)13|sdeqdJOg!*;K&*uABv+c}~Wl?K*C(wDHQGD6zH=!RFOndNs z(MtJ_2!%P<r=De!cVw$F-N)wEsHdwOvTw6KQ~thBOQ)T*{XXU8iS3d<<qtZF@8C8S Qhyz8tr>mdKI;Vst05p^BNdN!< diff --git a/htdocs/theme/md/img/menus/generic3_over.png b/htdocs/theme/md/img/menus/generic3_over.png deleted file mode 100644 index 0672d20bce4bb1776f71dc8038e32a8382f5ae87..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 486 zcmeAS@N?(olHy`uVBq!ia0y~yV9;k^V9@4ZV_;x-vF+k61_lPk;vjb?hIQv;UNSH+ zuqAoByD)&kPv_nB3=9mM1s;*b3=G`DAk4@xYmNj10|R@Br>`sfJsvSed6}NyT+s{+ zjA@=Ojv*0;-_CsNd)PprZN9?4?a~5j3eppJ7YJ|3xxo8^?EqV1^Crh#j=LOpJI;LY zlwDjiq~XmK-QFFO<DNQi{CmSLeoe7j=fYd8%x3NXwRhVD?M+^=;dk%LH4nUl^RyZQ z9d?>-V9t6Sa(8#}q@)n9RVr_%T$A!F_IxZcPe&;v?7){3d4KXY-)yOo;j(9+=eLD# z`?I!_i_YeqSh$HP&d=o4_mvNei|1y)K4ND0MfyX+TbA=hE6(fdEV(+jyj63%D_eoI z!KT@L-(JhyE}m!<qNlSYbke62AEZ{zT++K$I7IE6x~b{f#-+VMmx~>@8;8%D-=C!Y z;&=OAL))@@Ypo`({F%CY0(1EDZQEb|`aSo(mh8QUXsDg%{+tP!Q>E%SeLUvp+}a+l zWRw=!&%AY}X}~4r*pIzyfBG!65uUmHJf973j&T}m{AFqT$k}3<>%S`Yrq@k*`Qbm$ ZKjy#EwNEFP<vN0*$kWx&Wt~$(696V(&*%UE diff --git a/htdocs/theme/md/img/menus/generic4.png b/htdocs/theme/md/img/menus/generic4.png index 5f9240240da3f037ca1918367f6b6489b972c260..b51ce3ed95a437af48d672cb4b8494807587c080 100644 GIT binary patch literal 133 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4i*Lm2CurW#S9D#KAtX)Ar`0Kp5G|SARyv= zu_sBfwYO*05uw1$Kl<)VA70(*+K_Fyu~1h#;km2OttOQ+eve0to;3<5_<V|rZatOX l!@lcIIQJxlse;#~ByKtyESHnN$iTqB;OXk;vd$@?2>?VrEMWiu literal 570 zcmeAS@N?(olHy`uVBq!ia0y~yV9;k^V9@4ZV_;x-vF+k61_lPk;vjb?hIQv;UNSH+ zuqAoByD)&kPv_nB3=9mM1s;*b3=G`DAk4@xYmNj10|R@Br>`sfJsvSed4<JO%I+{Q zFz)hnaSVw#{C1|Tx3i&0+kEY^kE>@ZtPK!f+N`9(#kZ)tqj?86Uun>X^cVF7q3rDS zj<Ro7tyr+*h9iqM2Ul2k_f|Rf^97no#kcR&U685p<T!b<+V9?zI3a(RjL_E$TF*|* zpHkZPqT26twQKOi`N1k8j~%Wg+!39?ZX^}5?AC)l4a?8!Y+%!o7BbzMoxp$N`hhi* z@3V$EPy1-SVa34+<^7Cru4KyFF(jLr{^t^T?eg#Rw>DdrNe8M<94U5uW-!$^M)r84 z$OeWZI+N_!E*+Sdub2H~dxP<VE7zxm9BIhRoxSS8^Na0w<n4YpFx#Hhn%yxYA=o9) zB_-M=sV%uF$<^hORsTha;Is9w+hT)K8igOo>|o^z^+<Iw<UGS{dn<0s-bC+IzjhJL z_}fdTvGShF-+N%gHFlAwVn0l{XZ`%2b0vKK$_v*|ZIo8|Jb&%4@W@q<-B&4Y%6xUk z`liLrEy2&CqdxnYfuP=JKQJqCLjAhrXY+lm*>+~gvZyt@6X?9pD86j<o6wI7rakz+ zXr+8dgu<NbQ_nKVJF-=o?qhRn)YDZC*|%ArDSzLmrPEH@exLI4#CFM_@&_HocW|2u Q#DSvS)78&qol`;+0J&%EdH?_b diff --git a/htdocs/theme/md/img/menus/generic4_over.png b/htdocs/theme/md/img/menus/generic4_over.png deleted file mode 100644 index 6a4d7b1acce5db322cde66f1e2fad71876449e3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 486 zcmeAS@N?(olHy`uVBq!ia0y~yV9;k^V9@4ZV_;x-vF+k61_lPk;vjb?hIQv;UNSH+ zuqAoByD)&kPv_nB3=9mM1s;*b3=G`DAk4@xYmNj10|R@Br>`sfJsvSed1b4)>S+uN zjA@=Ojv*0;-_CsNd)PprZN9?4?a~5j3eppJ7YJ|3xxo8^?EqV1^Crh#j=LOpJI;LY zlwDjiq~XmK-QFFO<DNQi{CmSLeoe7j=fYd8%x3NXwRhVD?M+^=;dk%LH4nUl^RyZQ z9d?>-V9t6Sa(8#}q@)n9RVr_%T$A!F_IxZcPe&;v?7){3d4KXY-)yOo;j(9+=eLD# z`?I!_i_YeqSh$HP&d=o4_mvNei|1y)K4ND0MfyX+TbA=hE6(fdEV(+jyj63%D_eoI z!KT@L-(JhyE}m!<qNlSYbke62AEZ{zT++K$I7IE6x~b{f#-+VMmx~>@8;8%D-=C!Y z;&=OAL))@@Ypo`({F%CY0(1EDZQEb|`aSo(mh8QUXsDg%{+tP!Q>E%SeLUvp+}a+l zWRw=!&%AY}X}~4r*pIzyfBG!65uUmHJf973j&T}m{AFqT$k}3<>%S`Yrq@k*`Qbm$ ZKjy#EwNEFP<vN0*$kWx&Wt~$(698k_&u0Jt diff --git a/htdocs/theme/md/img/menus/globe.png b/htdocs/theme/md/img/menus/globe.png index 8c2380eda131f90b77a1f3792b2afbbcabb5b7b4..0bc7dfd48026b9d341ad11217046b949625fd402 100644 GIT binary patch literal 390 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4i*Lm2CurW#S9FLzMd|QAr*{!FZ*VRI7+ZR zP|Dc8yhEVg;l0A57mOlGe9DoXZYmWFolP_LHZ9_IEKn3mZfW@bfxmF-lD97eO>BiL zTJjB3&4n{#e$;hWE?>dU^=$T+{f{TGzTPJ(d2?IZiV6SbToY%uFA1JKpD)dZ_5Ia~ zZ06f`4en_rjxqmVuClC_YL_)MGt0i1H-S&$$k*UWqBi}Tr|;0V6i$g_^SWQC`zxGD zE&ZeBE#E6$JYru?8Z?*IezI!ja$l_buv6ujv5uQ{<60g!3xT(M?|ct%<+*EL@L@jv zyI~Wrmdx+hll_v6o6Ucvm^N$Qx+%PPt|Qx0*_io%3YIUPd-(WCXKh!uld6BZy1#!^ zIv1B1SrpgYefMd#%o8`A`zPi+{%HAn8XN!eHRS?!t2aKB)rvpR{I2SG``Z`GiW2|V u#{@}5ZC<)D`|_&Od|t5^(*Mc+VJltvB;0S^%>)Jp1_n=8KbLh*2~7Z2ET-H5 literal 1175 zcmeAS@N?(olHy`uVBq!ia0y~yV9;k^V9@4ZV_;x-vF+k61_lPk;vjb?hIQv;UNSH+ zuqAoByD)&kPv_nB3=9mM1s;*b3=G`DAk4@xYmNj10|R@Br>`sfJsvSed5yLH|K2e$ zu!wuQIEF+Vemmo1_Owuu<Myk!85KtFb(Xq)+ay!_?6yT=QCC*U3%M8=bSVh4)Q4`c zU$8>{kE%dd&xww%6Z3_fPOT}~uwdJomom@7%!IPeUU_L!bH8zU{62oU_w%0L-28p% z%LldvJI~vGpI5x^{CC^$_df3lO*<Ad_4SOyL5%T?@r?6zz8(-uIQ+js`P1Gqx3IKn zOG{_o?1-IKXncFp#WJh?-B0u<F<<h{u6J(x{+j6<`>wkO)*sk$D{q0k1S6lykH{t0 z6z9h}$X?*JVXNWT!rXs4-re%d_0@`Mb^^}QS2l4Z6<NJB-z;W)J1=cLOQEpgGRF7D zn-h(r<<D&Oh(B?`U~{eHwbsH{XW!VKT{~a%hisB%*8C%DBJ<L2pIM_G@me}<n|flN z!?)GON9q;%(nEc6H*;3#UdUzJ#~jDLkHN0@<bkON-a5oRu5Or~QXIBx^8vwx3on%_ z<tqICl{4OFIy=jn-G+0{2R6kYX%D;;8ZYnV-=o#e?`_WbhIL<1{3;#Rd93r;X3cp& zb=K{t*Xq_!_h#A8TXC#c{mZd(M){=;KUiOgI@?>+u6HoCESlBe_uyTFihe$0zE;}u z%lkFv2OrR9sA5uo&tTo~_JFXe!EL@bEOIjz-i<$?b@Oe>FZssaiwEX^UftN;IJv*k zEy49nOqk}hglg^!S{sxP<mSnnzIwWjVZRN>rNvt+x9~hz+QeSLBEhte?V4q+yUdTJ z4hMVrcg@}y!1m*$(A#L4KGTD~wyL@7_$8#m=I{49bA5;N;oHw2A82RPn<}{{=EG5z z4@Z|QF7oS4|93ax9q$8)51Y#BG&il}`F;NCt%kLJ_xbn8HvK;vt7ezWR{HjQ*)5+H z`8;px`;+TfPO$E-lKAmh>**iG@>dnV7g~I1Z%oarQQzRd|Aa-sWt}E@)^i$ZlQ-|z zun9gO&wA`jsqo#R(pCT18miMj&gnljC2YZ|oBS%d5npz0Kh+z);?x_z8zt(Y%lcMo zXur65I_`nn0<nk{*XA(&S+a@Y!NLdOul<<qSNvM&_*k{-pZnFM-DYPBzeY;Pa{qBJ zV&4!^+k3fw@xI_+95wSfl-|xc&sy&|hs|#CVyOo;8}<qA2z}#Lt5V(Y`)kaE^}+uZ z75-iwYI@pVQ^F%z&hq~HDV;poA{#i)To;`i&gG-Nb4F=;!~U<U=UiARHdXm^<8qnD zlYhNX<gS<^Hl5|0|MM?Q0c*P#TP5ETNxpV>&6LPBS=;<~_9cDMa$Rh*U*NfgcjW}( z8*?IFU4QnP<(XyKxt(^ClCA2bQ-sx<l~#xSv}gIFU9{?}&&mhcjlW|)1ny<{<zX>Z zOyO8~bH@tix@oo11+%_t`mH*%#2`EP!^IEU`+O=d)N1;^nttNR|EQH(pKq}r|H^bm l^~2Qv&$S<b;QGX${5uwQo@vWc*a|9BJYD@<);T3K0RWchC9MDe diff --git a/htdocs/theme/md/img/menus/globe_over.png b/htdocs/theme/md/img/menus/globe_over.png deleted file mode 100644 index fd1e54f4754189e57bbdb7ff41d7c8e7f2618ff4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 844 zcmeAS@N?(olHy`uVBq!ia0y~yV9;k^V9@4ZV_;x-vF+k61_lPk;vjb?hIQv;UNSH+ zuqAoByD)&kPv_nB3=9mM1s;*b3=G`DAk4@xYmNj10|R@Br>`sfJsvSed2JK7^&t!l zOlLe@977@wzm2$9c-w%d_T1O|w-jEnTx99p)o8wASEE~i`U>+Ew>YnGF7gZbwZA;n ze1f_|y<D_}d(fuj<DPyy4$pO+^+1`!p(3i2BW~552dt-=>KOMo^n0@{U<-(4Xy3lq zGHYtbnTtU#Y(MoEcU&>P?sxNS=6Ub)8&7`CPn)xz<wL?TD~A0HJy-Y|m<<?SD3=vw zInGvXFl~@$xX1W|?E&8b+qa_qA8XuLZ7*JO7A@^-m^VjAU1_`0Ceew<-bf#v!Sqf- zYwFC?z8rIz_uN%qyjf+#f0ZBCB;GUq*L<N_uJohvwYl*(ez^qE7r9vs^UvOJKlW+b z#~W@%hmV^|Y?fXpX=!F;K1b?vP~hHL_6O67t8YmM8Ri?uzmR=>aN@n2Hk)q!xV?F* zPO_>{aO<Rb`HVFI=c_{%<%BBtKR(;D?ADiOW`EvKGP^EVJ)glOrhfgg`|>x;J(HF` zj8R{H@=goyQ|4uR)*rmis4VI1IZtAb!4iQLIsZ>R@Ab6My)Vi3bZXS}-YP|<7Gu_Z z;h~SEf+S?h{xIzEl`BvEFjH&&<OlOt_iXIEnyvUCX-kNqy85f+Yvx+wUn|6!_IJx{ z*k80mWMYgB!+Rywld+sN=7FsI2g)Z}-QMh5;dOH(=V_iFwOoJXzt$YLOW~1ub7@m3 zU(9itoYlUp54x-Vo!TgK;Ju6UGtCDQ9GjcuzVOB+&RRRcSN?f(RyX5=w~o;=8Nsnj zj^EHq3esFvwkl6#>y@CQeVrzqo<>0oKO{f6xXChgzJ1R9HSJ6BSwWX2&;KV&qzQgF z6>#8;z_hBg?GmrGVw;$voJ@{&RJ@APPPPeulWvpjZL=caVs-zOM-fbU_B@pgYpoiV z=Go@24D6Cr*&AjS{dCEjEB^A+(swyXq<#sgQ%PT&ne3tRTqm!_r!*sE=|Rb@#^x5c x{}sQ~`nx-2c2;A2uJ@jX_yhV6#6L`*yg!%kh~)FntJZ)rf~TvW%Q~loCIGV2ZG->- diff --git a/htdocs/theme/md/img/menus/holiday.png b/htdocs/theme/md/img/menus/holiday.png index 493974477f38e5669668280796e2427499c336f7..014c9918c2e1fee9d00082877de83d6a6dd4ca06 100644 GIT binary patch literal 308 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4i*Lm2CurW#S9D#zdc<XLn;`rUQmr$Tqx7< zv3P&gyO&jwQL%fsRlW0wdS5D<zhm+SuD{LM2lpn$|I5r1ocH$Y^X1pqG30e;Z+>-T zW~uYPiWsl|DWQ7oSuy%+{$E^l&7bq@v=pNUj*7B<JU<`RRrI}JGkB3#XRI4^BkXZn zh4kjYi2b>tYn5mE{1Vu=XA)19-lHFx9%jE69o=@htwq1+rH0ssuBz|3jvoVqEe<B_ z2ot?rT)?K3H*3Nr)9NUl1lf}I-QT|jSzUH@3i{pI`g;Z6Ldo+!;=CW(H#`hIb~`<- ztEJ)%!vvmw(bg*>_j;bYI>nezxK!+%W;p5pLr1Uk{F2{4-b#JSbUrQTKf90ZTm}XP N22WQ%mvv4FO#m)+i(LQ! literal 1086 zcmeAS@N?(olHy`uVBq!ia0y~yV9;k^V9@4ZV_;x-vF+k61_lPk;vjb?hIQv;UNSH+ zuqAoByD<C*!3BGlPiA0X;4JWnEM{Qf76xHPhFNnY7#JAXOFVsD+3)d)F-kE!?Ohbe zz`(rE)5S3);_%xU-uW`FBCY$a`5%QBFdZza==vbg&k>-*9CU<B?9B-_6%{d$4pr@c z%=V0({~5GZ%yg7y&SmXWQW6qzsgRJIyixf0xg(EfzC7Gy9JKnST)({S$)t59SMP>i z4SgPVxB6AsK@T^hNfUXT9~oFrE)lBWnZYQ>bj<cxtpo231~H{ar)(MHf@CY?D}*ap zW-uIE6WTB6z<Pu6ALBo^eT@71I=(J!o?gOa!M%rf58E8JSIz(UVwm<ZpJTr7cH~$< zjqjx$OZrt~FCBcU?m6G9%K6e2g9H0DUe@qUI5JE3^fmQKyJqg{o^)?&NlJjs)Y?b! zpNsxad)$_|U83Yo-0kTN=NtXmSOagX|6u#T`a$&r!v})`o(g`8#|dk9|7Y0N$Y(G$ zdCeL|8xEi8Ty{!U2UdxCnr=QL`XKYcj^3GUaqM+0|5)yA+Gx8r-Q%&*1+D65pL=$) z>M(GdJzK&1OW+4%1dATiX0vr{IY0lld@Wy4dHzk)q;sCLUI*9jH{X8m`^HVoWdRS8 z9d1XdbS5)-POhH$)2s8q;k?VQ8nq`pt3O*RbEC6k?!sSx^sFnAbi1ar?AST~TsHHW z2NkPgCoM8#j9nls=(@-5W_IwgGdxD0&oeKdqqvP{+3Q`r`61W2Vm=k_KKkq~lRbY8 zi%s@@Uzvu|1lAv1Kh`XG|9no(+UbmS6B_=?{kS^k&c`+3f95bg`}N~D&xLo7!<L@^ z!}>t$Ly=#Uv_ojnRc)iU5;wedPCu2@9DC5+Md_u{hBvzQXU{*hyH|K~O?cMD$}>g< z&(}3>|MNz4#(9S0?tA#}Tvxd;rG&A9>&MbH33s`FNZako72DZ&U;3QJ`B_WF8Vx<? zifmPjyU4uzvcqu)&(8-eADo=C*4C)9@^ntf=b2kyZ!&$L|A61$g?Wdd;N74D-c`p= z*Gp9}SxlPwb<g)j#@R{d_P>3u`?{?+vajPRbEA3j9Fz6)KZPC(nJ+xasMPiT6N%ej z?`?b+-D<i!gL#LX;Mv9l))Qxa`g&CR05>c1BxbMOTkfvai@o-BUlH$)ylq*Gx4pf+ z-|pPGvn=j_9BW+Zg5K)jTc;PaUkuYcHP?6I(N)PyABz5x|6zP!@wS@PE)9QAg}rqX zzIS%JtT6BHu-zS6>u1SUrJsJ28-De?QE%q&HM=JzZT9mDWvM&rV=&R`Yj}`l!28{g zenp)+aj)DoHAVGnyqVdh%+g6-s(H+_1q(l4sIY6FsI_u+@0-n02^^LOc5A+s6@Slg zwj+c8>okkQF*pA$j-N1XYGq%Fin8R%gHPl6*D#hGX_*|#z`(%Z>FVdQ&MBb@02MO! A7XSbN diff --git a/htdocs/theme/md/img/menus/home.png b/htdocs/theme/md/img/menus/home.png index 2c174340c7696473d43c94ba34399b19fbd6fbac..1614347a829d55ba7c165290563c4979eff8693a 100644 GIT binary patch literal 94 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4i*Lm2CurW#S9D#s-7;6Ar_~T6C~C=u$MZZ wYPO1Txyr_aRtG*h7^nBC@pe5<T)@Dv(e$4{!hx7F1_lNOPgg&ebxsLQ04_}%BLDyZ literal 679 zcmeAS@N?(olHy`uVBq!ia0y~yV9;k^V9@4ZV_;x-vF+k61_lPk;vjb?hIQv;UNSH+ zuqAoByD)&kPv_nB3=9mM1s;*b3=G`DAk4@xYmNj10|R@Br>`sfJsvSec|8}M=-Uho zOzNI4jv*0;-`@1^I2$N(;N$rd8pi*oMBGr2Hj~g?y5wd=#2KfJ6H>ym%rrQ;%@)0h zICJPwnh1BbwDi&qN|76kCT<84dRh5-x7q%c*R${a`FH01zkBa9{q9zM|9)=g_uqcc z=M}$u&)X`%vucgOflWN|0oxMSbhU<wU6DWhmUUkL^9^&4RKD?iE`K@Q-}`dAKv&O4 z0jEs|BF>~4wHVw!tmnBuJWb?lP1AnMQvQc>+m?KeD=WWTnx53|>!9tNZl3or!7Bf0 zM7h-F3Nh(@)7h^-R`W}#*fssmah7|>n%;|=r56ak_HsCXI_u8Cz&|IF4MH{?k~^^Y z#L6$KeMe7x{+uXW{O0i12*dm97EYLZh}&kRR?fG_TxC~6I_n>q+|y^R(_L1uiGS^p za2fx4kHjCGF$ZSZeT!dzDQB8=o$<P)d}pZ>$9K$Q|HpAIX-lH)2g^O@PMHNqY;8#r z_MT+3@{{p4bB<rk^B()o%-O8{HuBY!_KE=4iCncD3wN&4%DKe;V~N&}yz}*k*2|Pd z8&0aLo4(NcR$=DKE1&OvFz%lEhHvMci(Yq5T)5lmU0Pw6Z+t~hAn$IqOZQI|rka(u z|EkYVZ=D~_RI_wm{`8i7@rHc;cHd)(Rz3EXZ_La-9>~)O(3CDrh<@btU5@$cZI#m0 z*%9;BtKL4+w0^0_RmS+4&-e3hdLI3w$=6iwMt)__r+x3F{q(sHt3KTH>;J^Q(<k14 jITS2eqnx_nfBRqd+e@pC<fH}v1*I`hS3j3^P6<r_%>Otk diff --git a/htdocs/theme/md/img/menus/home_over.png b/htdocs/theme/md/img/menus/home_over.png deleted file mode 100644 index ff0d692307f28e4b34e49314a5c525e8726feffe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 484 zcmeAS@N?(olHy`uVBq!ia0y~yV9;k^V9@4ZV_;x-vF+k61_lPk;vjb?hIQv;UNSH+ zuqAoByD)&kPv_nB3=9mM1s;*b3=G`DAk4@xYmNj10|R@Br>`sfJsvSedBc+`VR{S< zj47Tjjv*0;-_Cp=*kT}X^uA@ybiO@&3!1$-uQ!$`sLm1fU=M1N?GRlddxY;r!ruq? z&h}28%-iDq=*{fJAI2<oEoYzU=5%oEe8nc|{m^zRYe4&sfQOZJybFqD%$v6HHi$VK z{T*MEGsD;4#jaa%`@gKq0uz^>&a#p8^WK<LA;DnVu)Fi~yvn=F1wNa$A6m`u=MSTg z&yPvf?`03<x&0Qu-zdYik2Qhuj{c5gy7o1dxj)qR{R|5I!?tPek}~m2g=WTYm>X(6 zDwN+&ba<uCz9GR#qjSY#i%m84>e4KmAA1y<{y3DsGf?Z*(hr(nws}7@U!8rRtg)y} z#6Dj*`47v77hBG8=X{uD<)O22TI0r$Gd%|bU%c*T{_mTxe0BDL?T2<1TYUZ++}if= zk*j^J#-2mkf9y|wp6fo(pKsr#4S^M{;Xgtj*cY|Qv)0*cQJEG!=lS;^KkGx*v1IQ& jVVBqa!2Fl6<)nR#F-#ge&K0f&#UX>ItDnm{r-UW|fvCz5 diff --git a/htdocs/theme/md/img/menus/mail.png b/htdocs/theme/md/img/menus/mail.png index b7ff50e3d9990ba330c6e079d8fa2938b90507eb..7b65a3d522e233755609ef0e370b2fdeb25704b6 100644 GIT binary patch literal 211 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4i*Lm2CurW#S9D#vpiiKLn;{WUO4E<>?qRk zkbUPm*&}K`vYR#vC959uy5p22{O;(@#nrMuj$B^Af78<IpQY`Les=wJs{CDR#TE-F zwk%qHi9zP<zgKrT>>VZMgzjHGk5{SrWSm9C<wuYFc9^Cfc$Jd=JcV_>-2Qa`Fe3&% zzC-t(nC72hShd-a!#plz8^f8tpIMww)=BGB{mMuPvD$av{KC(Fnm?Fy0>AI5+&N2; Qfq{X+)78&qol`;+0AC+eZU6uP literal 718 zcmeAS@N?(olHy`uVBq!ia0y~yV9;k^V9@4ZV_;x-vF+k61_lPk;vjb?hIQv;UNSH+ zuqAoByD)&kPv_nB3=9mM1s;*b3=G`DAk4@xYmNj10|R@Br>`sfJsvSed6S)fixx64 zF!_19IEF+VetYA5_t`*+;~%dZ+*~k)w^u+_y7y1Sf}B4$dZ#{dU*b7ANQm3aOe1x% z%g?#;o-2Pcr*yOic}?DA*z2e^>7t8q@%x^_+<DRW_nn<P|9*A$m)ch)zwMsSdA{fU z&v~CK=T*P<S~}@vma$Lr>4(KXWbE3{KRmwWS7BeY)Y@s+`tIpG;D1ok`*8asSFsQE z0V@pu++Wjoc1yc{--G(rv_G>{9<aq6S#<Ki`56p<81@}c-)Z{Da+@#HAB}g3bxLtY zb;~}u?l~Iw<w&vM=A`d_iSI0uOc#jic1pPJaS4888T^BZ?W0xMufiXva@E%*9@QwE z^?|`Vs967@!Y<)`s}3B_pL2lqkB80<iR~M;P3!s2Jx;l^`O}a78_lmfH-@(B-&U46 zxciFVwg)~A`u*mc>`b3UzA1CpdbZ=?>*XB$b1nL6Z%q8K{-Ev|KL<zoyaj6yMYU$V z{FBi7Z{Lm`FJlZgH|1AM*~%5^{j@;CLG{Psg*S5py|yf$vZSN^;`K)78!?Ju&$5g~ zZdnH{$~tCcb2RkJW0`kH=FBhr7rpqs&b{N}H%*-O6uz$c%Tiva@$`QG)<B25{$Fhm z&SsGF`0@L(o=o=~Lz$UYJ3p^lYqoo%l)M{*ezZT=o}754jbGconO_OgGEWlSRggNV z)Yn|k{Z5+B8rB-+Z4ZR={5IbDBef~AM|sDBSsy-ckey#>zS!tzbj&-alxM3{SANQV z+x2<g($b{Jt&>86)WXAFvU?Qu28Dgt8|ZTN(lMJ!r9b2ESk~~(Km7aynELPj;XlJ_ Wg-53hx;buvlA@=ppUXO@geCyIZc{e^ diff --git a/htdocs/theme/md/img/menus/mail_over.png b/htdocs/theme/md/img/menus/mail_over.png deleted file mode 100644 index f9de32d30029fe43864afaeb341ca2204ee30d83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 534 zcmeAS@N?(olHy`uVBq!ia0y~yV9;k^V9@4ZV_;x-vF+k61_lPk;vjb?hIQv;UNSH+ zuqAoByD)&kPv_nB3=9mM1s;*b3=G`DAk4@xYmNj10|R@Br>`sfJsvSed2<E#&(aJG zjMF?_977@wznyV6@Q{N@tG&$qgIr6Pw=+Al-fG;)^wMF4!&-+m4r>ksG%jqu;ke?# zuLoy+(#}qrq4O~P+nG1a<>fc@pUm6L$t?IVqV$-c_5t=E4Dt_{Yu28VUMKzfMX=_C z-wpkZ$LBp%cMz)jC-N}-0INZUrP_h=_z%*rKbuZq+^+j=9^?E2Pp7^A&Nctl`p|nR z9DA70A6SuCv{aOF1Jjvxx77k0_*eg1P`pfSYtVyJtIjuiyiY3b^q6coIbJoaR!eE; zpQ~4*%!MYV9^K{R(zA72K*;f{qH=d_)-ptEZ3*<aZj<}4)+Ke-_CH5g-OrG&37zpN z&Uc=?)4At-oB5=#edF5C@UFr9?BCF%vv!_a+Zb+|Z(jN0XX`m#tus1VFHRWcKb*M3 z`+Rw8d82sp8-t~qOGEbX9~N7?>E0!#nTMyeo;0u8G1IQPE{dt&YMBTxpLzZV!w(@$ z=WUPVtmgiqzvtqT4~*}2F}z>jSmvgF%gS!*i-X&Ye|&PjadA&WdS7$;^i{bh9e;FN h!vd~>|ARWqf9BO3D`S)<WgY=Vsi&)-%Q~loCIGrw=wSc= diff --git a/htdocs/theme/md/img/menus/members.png b/htdocs/theme/md/img/menus/members.png index fb72919971c555e17a11bb4ee4d0bdd22e2a9cc5..9bba632552c230fcd9dab589aaafcb8e3948f985 100644 GIT binary patch literal 145 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4i*Lm2CurW#S9D#5uPrNAr_~T6Bcm)kpJ@k zX}!~ftN$HZ*bbd?e4y&YEFe(Ax@nf+>P88NbY7EhU$hs+d|_IsIHBXo_ecBf{Z?<R z5}6<Ua>2s`_3R2Z4s+NRBw0wW=xlt)z;I~cbpA6A@s}AG7#KWV{an^LB{Ts5e2+DV literal 1044 zcmeAS@N?(olHy`uVBq!ia0y~yV9;k^V9@4ZV_;x-vF+k61_lPk;vjb?hIQv;UNSH+ zuqAoByD)&kPv_nB3=9mM1s;*b3=G`DAk4@xYmNj10|R@Br>`sfJsvSed8@c@{mU2_ zn5THUIEF+Vemm1Uhc{5-c>VM&+o-G8qMME_4zYE*knw0@hDIkVx0lMBHxZi?6vfOU zgmqMuI#^z=3z1TEYFTtq;mT{XP~X>rQ8Kgtt4w}&ZjP~W?vld&Pfp*N{n`HcpY!JT zv(ti(NwBTvNfhv&Rx_<;+MoRsUmkeXsJ36qg89yrIL5N0DmH8u93@Qa8>A1&uYFx6 zklfSVXLu~e<k%mM3)P2qtlNG;;<C`Dd;G~~{BB!m9#<-ryOD9wgi*Rdul;Kt^Jm!t z>BeIV4$8E%W;JFlINmgyC8Q%_Enm=zjd~0G+%#CE8jRZa@-we)VvE(OXNyQbXv18_ zytq-=p_1WUU%}l2VGm{;W}L>H|9Db96PMGm{S2l`C5$t&BiBb(G}K-)xXE^>cXn<Y z^IpX&p^D{ej4wC66;0cG&5pNb+XLT8Avaa(`7fP5l)L@GpIx5CyBd#+z1gh7Sk11% zD_O6<{ZuhWmcQ7qy8CZG-`D4VGHv6@`OMdte=5%S!*Rq|R^{@Y^#?945&foIpz&ne zIiY3hP1}C)#m-9HBYcB-%NO_R3mh^092)vRq-2_|US>Oclj%vC#ChK0=_{V3Gh{QZ z*})dUFsF1&m3o0^>v}Vm?T6h?ZMC&n^h#3Ye&gc<8VT!Jx5xjhIhA;y`Bd3P<}x{h z+d>m89i%GO7RiMq%CBnv@@w|eX?w$4Czcn^p2}wzqyOkB*8_z+O7{=?S+9v^?dkTe zTT|6NUu>_&pD6Y<;R|k+W=QX|()%gOcWozY4U^ZEXSY5W*T_B<Wv@w%nIHcupl02x zU5ZW%S250GmOW6Lx>`YUmD4v3uAiEGQ$Kfd^e~9IE7<dDgawE3pDFZ^ns{Qm^@NX6 zS5*yfHETVP`oNUI+~u?(HL$jB)lu>N4F0Wadjeu@bzfiJ*_PP;%2RjJ?Jp5gsSTY6 zPDo6XU%4~0wBK9j$H!L-*E~_Tn2>pGtCFL8q~fQ{yC?Su<TS2+S}e=4_v2oJF7JEq zxz<l{Yksm_`=|Y<tqMPvFd0S7TxNc-TiyRsm$8$D<;3@Fb}K%lOyY~}F6~e;imcwt zTe&Ff<QIz>!k^q8Y|=5*Zg#y@s_T{Tb)VSV>h1R0z54>irFI_L=2a|u#PyQieEDxG zD)}`jufOa*o0_Ec(0pa$0i&f?EiUohVcvIi=A2i{`LkM2i3pb}%wEzso$JqyNm32# z8&$KGx~~wZe6LmCnd4rcJLOc}sWX%QpFi=RRkvAx<@>pb3ZM+_>FVdQ&MBb@0D3^m AKmY&$ diff --git a/htdocs/theme/md/img/menus/members_over.png b/htdocs/theme/md/img/menus/members_over.png deleted file mode 100644 index 8c77498c304af9150165b348fc08498d7aa3f11c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 720 zcmeAS@N?(olHy`uVBq!ia0y~yV9;k^V9@4ZV_;x-vF+k61_lPk;vjb?hIQv;UNSH+ zuqAoByD)&kPv_nB3=9mM1s;*b3=G`DAk4@xYmNj10|R@Br>`sfJsvSe1;*{lKKmFL zm;yXq977@wzm2@;`^G>(M&SQ+J_FGQd?!{nTyXSi;9J+CeXt}!tD;i&Nod1Mg^+|g zvq`NUHrdZvJR&vi6V|Ig{`k(KTrl}aey{hRM>h_>e^CD6zA&3Zb>0VE2KIyr$C+Pn zGnzB>F{m-DXZXj|F==}BL<!~3CWdbE)03wd=GaLm^Ay_tijgZbl>fZ2veB^U;<~4a zDVLddsF!9>wyblE>;2Q)8N4<p;#%*C#NMllH|NevxqszE+9{R!DUEGY4$pXEcg>@H z;@QR<w-_D>9?+fm-fZFp&I8qjjdvduNEWr*olZYzpK{F1^vrX<@CnWp0R?65&;F~| zF4*B|7=1gW<oeRKFM2_1@`CQ3+7>0bxO0NZ{>+6OH)Qm#$yG3%=l(zYW@X@px083a zw<;Otrt<3qp3^z`D<-PA^j>Z%KO0kkJHxD}3EMWX^L&^Vb3#b})zrDSuQru;xkj<h zes<@Z!|sM~GmW+x!J0o7H<d2dm@4&cdC&*PgS)i1u%F2*jr!p8^0VjWi*12(gqP<A z$zIHfDf)TgSn{LXdq&CDxs#<tqIg)(w5R;@4D8Z;_Wp!eK4XlyLH*nqX<5U2o7P>@ z`r{e@P~-Vd<%co6-1`E5{K-?cw#iVRUT64Qf8BWzFSWfwN{RKt9~>Fh-JKUvx$(_< z!~cJ-?u=m0XSC7z@ukrDL-y|9EDzkyx&5$t&}A_t?wo^m!rSmpvkt)n@>Bnb-WT`Y zmuO^maLT%PZo92Qejk4xey%5Vrns;zo;kYGCup|&N<U{$&zP>_hWqu`ZXW#q<OhRo Wp>xyL>(=K$iP6*5&t;ucLK6VZ;y5<| diff --git a/htdocs/theme/md/img/menus/money.png b/htdocs/theme/md/img/menus/money.png index 503e5c67519060721c3ab0f5bc146292530e9f7b..fb04031d47a2df76d49938e674ea79ee0082d470 100644 GIT binary patch literal 179 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4i*Lm2CurW#S9D#Rh}-6Ar_~T6C_we82(HD zJIr`8s^hA{$N#2sybdo{{<jSHalJ7s{?P@7srMK!Gd+#}rO#C)q4)HEVwAus#X84u zy?_6uB5u9>uf0KxHRb7yWrwFQFa7_zY3m=AAj=v27n|IFhL&V5n6}qq3bX3>$A-MC i*<@{&^)eYTFjVC&UhN#=pUA+#z~JfX=d#Wzp$Py$SVb%V literal 1259 zcmeAS@N?(olHy`uVBq!ia0y~yV9;k^V9@4ZV_;x-vF+k61_lPk;vjb?hIQv;UNSH+ zuqAoByD)&kPv_nB3=9mM1s;*b3=G`DAk4@xYmNj10|R@Br>`sfJsvSe1(xHUI}8~Z zSh77`977@wznvNFBO5BxwttnV?pBT|mzY|E47Oeq%bB`r>qWCJx7;rWk1cVlHBkI` zRAO<y-H(Jtfx@PC6`gh!ot|G$&QR-BV10ir&Sa~&;O(wUPMR7K84J~ZeDXDtd@j>= z_~c57uuYr3OQ!w*J>N9@fA!h4Yd?NiT)uiPS?V^=PsvZlPts4EpYXqa@_vP8!><RH ze!Kne^poif<u6Me9J_woG2310f7bP9jmTDC(GNBS>1;FJGx{?$KX3Zul^|`9&$Yw( z0Ix&%x|8o2wKg^Em90>i{zRNPK3#CX(sb@`<_qL^sBqsnyYt%5q6d}<IbHYo_sq=x zboYSfgSv$Hwj=wCYHscfm~FOz^992-hS@pdOAlJ|y<xN4c6W*S(^-F{4@^D4eju!q zb(<C2;=|ip`F{u$?0y{Ybs({nYfVqt4gSW@jk~|<H|}*v=lW2!Kx_wB#PhB18?H&b zX+4m8FM4|0b^dcZWnawnc@obo$G*<I+*|#lT6JUj+&_sAG}lkx^?Kc@fUR-8)yjoW zwlk^w%&$EV^dRc?P6yKo{5;I=EVeu~$-9LrE^YL;ekXZ6CF}43Wj1x)pSlNZzkO%6 zZji5C5HgK_4XYW0c7x#OTJaB70h3z4?i8*lTQo<XS*|#HKhusguhpITKde3~eSj&U zF5}Pl1Gn{V#fB|Pj#P-BpK@>=(?7Pj30JBTECVF9u4O4FTQxQxc<%N$FuK9M(K1qD zzq;qSd`2^-<)O307Rz0+OH@*xCh}u}`DzPs=KM(YT!weEl|EiRpuH+K>QniSz4_Bv z4lsPE?#S3OV>LsUlki?<5$);Hb4!XfSk;s5weO2|Io;Z_leHrLXvT%pji<kcl(A%l zr%J`>uXR{l`nP*obaQT?)EdU%!sWTl1*JltVpp9lGTnCfwdn!ZiL;*a|D7SYo>4AD zZnpE+pvkF+)!Etv(yr8Te&ueg*7e`#G3oQydogd{%Pp>wut?rnaBP3*ZwK$U`d@y< zJ!t6Oac}*q2l?zrt>q3nt#Pf|%E)u<4I7`Y$j|7hyMol$eG*;oIb;4?p<Nd}uSd!0 zGv^uIGUfcd_q@}_@I9O-|1W*C<%a;PokL@hWVq0rfZyy>uVp)(ny~(s3A4WR6feWi zJ>Qs)^D!+>D!UPOYPojitu?|GCs>6w&SvoZv{7GQSbo+xY3;M$Rp0w;3cq!mPEmXG zIb@^gsxulNGEF|MT(aq?=i@6&t*_`a>hb)QD{i-4;<TmX``U`96RUqGeONr>uHH4P zkC&GDc7D3{Eb)?%=&}g?&YuD=!wdVQ9v%zu3`jb=?`;0#RJ{|AOicYZ%%~SyZn*A9 zM|aKIR|aYGWCP08Hz{r1YgY2*qVU1jSD5$gtV&q!v^0NWa(1oo|5a~;=g!a#i)}Lc zwx-H1!G6O{zn~0zjriMp?R&~&pUiuh(J6iD+o2104o{QZ>)HSNQ2NwVPWxs3twHMN z(q?}S<@A1HC%VR3Xv2{whr<*aEq`^?nH?@Z`SVdLKPb2@r#4^9OuYPSKKFkH7q2X> Vjf~$WGB7YOc)I$ztaD0e0sz7XMOOd- diff --git a/htdocs/theme/md/img/menus/money_over.png b/htdocs/theme/md/img/menus/money_over.png deleted file mode 100644 index 9a501e762d0d460c396ba28c1631f9ae38b12165..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 940 zcmeAS@N?(olHy`uVBq!ia0y~yV9;k^V9@4ZV_;x-vF+k61_lPk;vjb?hIQv;UNSH+ zuqAoByD)&kPv_nB3=9mM1s;*b3=G`DAk4@xYmNj10|R@Br>`sfJsvSe1vX9ho3acH z%sQSfjv*0;-$w53yX+wFuW3bw9&f46#lxQ%UQ81UZ0UN$)zhM(xX2~EMM|+%{lK2a zN~UjKT0JiH)%g#!7s$@aUwSd?jfJIpfrj$hN4MwiJbA|abFaCu;K9<V(mRe78T?E5 zbMQy=NA}16^B?Eu6&_=p@yYVf>0{yy&t&)x1RmdK%wXz%XZBa6q+TbNtebvXf-}or z$d>x_96KY(=N|syr0Ulrwdy&wu7?kPULCtw?RyR5gBqW|zrWO^oH#x~|M$AjtPR_h zU+iW1ka+)?JHviP8<r2r-gDC#Y#OZV7l&+9di3K><gZ7wK1u96|2aleDe?N!OG+!} zGwfsjaiS}5m1+K)e1<JtWugt~Huf$x?d#Us)GI0Ve#+8S;;y=?B!9ltH_OpQu4Kaf zNv~^#cC3H#d5`JM3nz*gVsw5?=~}q;Vq(s*cZX^ge|Y_(br#!}kXxVL&w6d;AC<Z% zIDOmHYh6vLe=^1P6~+DtS<>_?y?=*Ts?5svFJ`6<s*}G)oQ+=*w>0tnq)8>yrk)CC zxMy%PHN7Xd!m#$Vrt`j2LN_M0{gzpLWkt}<cc(s2`}jWeMYv>&jN#n2)02vp_SioB zb6Sumf9<Q((y99yY@UD4Hp`k=Fl)2ka>H<ah39wp8T=XUJo~K6@SSscq2z96Gu6b+ z5)6{OvbBDPkG*f&sN43J?Sb&#T_LqQpYL9Mx@zHy85fO(jx*fTJob<4f$`V1$!{i@ zcHQl{dvL=+k7GLzZkqSGGAMk`{V5xl%l5=}pLo1b<>{tfwjoVkPpVvwm4$8Hm~h#s zgu89)3A?q&);yf)k)gveU*y-4^$KtHG(8kKV0%<q_v_U^Uu@*t4m@ksDi3r_yLEV- zo%ZBjt=#2VbsEXyY{~YrOtW1ALitUcu04NIwMS&4<azbla}5czU%t8|>GEXVrR`#$ z8}HjCZhfUWllOY?%q<dSKF8jf?hBc>(n##Bv|jf#^Dk?8!mjnq-Mq7Hk^H3@jiz-= zrPg^*o$<?8{c3HkXvM+LzRT91`gWvm_qiqc%f3x>7B=g5+Uxi@B=3S5zvk}L`&S>P zG~Z9W{I=kr;O0x)Rz~#PT@keRWADv}$6ISp%1;+vpMIm`&J9pT^K|udS?83{1OTqu B!4Uue diff --git a/htdocs/theme/md/img/menus/pointofsale.png b/htdocs/theme/md/img/menus/pointofsale.png index 6bb68041d19064950fbee0a2c11116f7b4a12578..8826337cd3196ca3f91316ffefbb9c4a725fa455 100644 GIT binary patch literal 131 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4i*Lm2CurW#URSl#WBR9H#tGV?SVa`!%ns! zSryk4ZT}~&kgDO#`rvr=f<u6_?W(r3ET%b5S3mSDXiHaN)#3<P#<+-8T)z90<7&p~ g<|`K`axgPg-=A95b(U=b0|Nttr>mdKI;Vst06HQmLI3~& literal 542 zcmeAS@N?(olHy`uVBq!ia0y~yV9;k^V9@4ZV_;x-vF+k61_lPk;vjb?hIQv;UNSH+ zuqAoByD)&kPv_nB3=9mM1s;*b3=G`DAk4@xYmNj10|R@Br>`sfJsvSe1<sv6j`T1v zFwXOIaSVw#{C37(uOkj3t^22PbZyXDBerODhH_a`FUP({{tXGrVs<SVPnm!4?Q3{o zoRj#NU#zUDo2%(o#^#?lZ}=$a%uY2fpK<em3`YygyP7$3cHZ&S^$lLNic?F6|NTST zJ?-B=$lW_!{lkuxE$a;9^aHatoZGs}cvBYJvQxzm&P<qTePFTgb72J&miX<mvn5_I z<vwuOe2jMk`;u+uIg1`BJN9~9eX+BFpZ7q!-h<@kbIaGw>2GCgS(kKKv}{g*`e(J> zzRVWa)?B>M>6>ujXXS%{fa9H?%UA6`&+&Q>1OK+;&3mF=X)O+ZaPn$`nTAv9mCLa? z6F&bw(AmuSU2?|+tNp7V&f{Fm?7Kj@v0vsOvybOoe%V9a(WxeEAG}!~e{GkV&;2mD zxxIVSsa?kd9b2X~nm?$UlYE&mtnvE3@AD;pXq?-w%V6F()$X}*o3`h(+ym+d7VWwp zQaNAl>1%dpKhtef><{EWnfKpw_t|Z%KU(ipZ9mYz>;Ke4`H@BT(eJ%;z24gW=R0Hd v!X!}gL!xq_?2Iiu|8tX8t?AMFJN<|J>5DBh*n$^WgQC{c)z4*}Q$iB}I?3%G diff --git a/htdocs/theme/md/img/menus/pointofsale_over.png b/htdocs/theme/md/img/menus/pointofsale_over.png deleted file mode 100644 index 4abe721969427e9f5f4e22dc7ac814f9cbc151dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 424 zcmeAS@N?(olHy`uVBq!ia0y~yV9;k^V9@4ZV_;x-vF+k61_lPk;vjb?hIQv;UNSH+ zuqAoByD)&kPv_nB3=9mM1s;*b3=G`DAk4@xYmNj10|R@Br>`sfJsvSe1@7=~OBXOO zFlu<ZIEF+VemnDE?jZw_w*3lhC$_eC^-SR9m~5gvh4WF)0X74ttDLi(-@jytT^Mvu z=FCwKMnTPE$NWzHR`uTb<LBke`TL(+T#Paf*PXGECGG($46WbtML?Og%;A~D^TS6Z z_1A8F9dK)Y(d@0u(`K7YdoHc8v)H8Q7RR0g-V>$P@&xb|FFv%sAuDg&PbMq=!aAQd z4?e8aH2W(1**q=pUx>8X&X2p-vwRbbkXlf1wnkEOVs`XvkMN)JT~qv@GH+icRx#h| zkNO9z4f;_J3{ro@KVbc_Z{p9xH_lvVbl{$Rv0M4h22s6v;fxPL`S+O|xG7`)Ci?yF z7hLO^Za!PH_M_>6`Pwz27N6Jprtg$^A(XsgbF8&wMf=%Y@2$(PNy&dGVyxfdckSv~ U)_Zwji$H<w>FVdQ&MBb@0HY+X;s5{u diff --git a/htdocs/theme/md/img/menus/products.png b/htdocs/theme/md/img/menus/products.png index a5ecf2ceb78bdb30ca662aa15f9afb81983003d7..a82363318156927050ee0ce88cf0632a042a85cc 100644 GIT binary patch literal 84 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4i*Lm2CurW#S9D#(w;7kAr_~T6C`#%uorAF m;$2)P@%8Y9kB1YO7(}<qeNa60)RcjNfx*+&&t;ucLK6Tjd>69- literal 510 zcmeAS@N?(olHy`uVBq!ia0y~yV9;k^V9@4ZV_;x-vF+k61_lPk;vjb?hIQv;UNSH+ zuqAoByD)&kPv_nB3=9mM1s;*b3=G`DAk4@xYmNj10|R@Br>`sfJsvSe1wQpTf%*&# zjCGzajv*0;-_F?Rci2FnZT})Ko}4{QAswwVmkL?$Vb<BhAjHhQ!O-A?$_j7E8I?>4 z4oNF!+?b%joqOkqj-1VsBXg3o!tG8@DxG*fzCKp3{B6cs&#Pe`H;ii9&VP`!J8T}c zy;Y+6z|s$I1V5<li_Ctzn=R^f&<?$tcX`e~O&2iuHL9Pk=Y3-`M^}8VnXv<7|AFSG z{|)}Vc*wnA*5iJuI7tuN<MUl^&0$VHz5nS1vrwJP&4HhFW^S1nVWOY2>4TQ`{28CP z*PG4P)UM}V!*%}N@0dF$|KE18>d9eFKXik6GsCX~8x78heo$(BU%97e_O-g}%6|S_ z@iUDo*m-pSGj90b?iDo4!u-JMr}l;gi;8ZQGH7IZMZH|GWYx?1Rc5!JP57{R*7^;3 z#R-vBPp7UF`y2ltW=i;h#KZkOi}q}J&UtH3YfJb-cCqV0FRL>p7k!S&dRi+oyLH~S zm<P*sHSPcA|LAN_x__;XXASpbpCuoZ`?vkPd&{0V{*c9Do1P<S_8JT>a>4;l4xp&> MboFyt=akR{0G;5~UH||9 diff --git a/htdocs/theme/md/img/menus/products_over.png b/htdocs/theme/md/img/menus/products_over.png deleted file mode 100644 index 0a5d9a7951fffbc4b473c79c447a2a8ecd00fb37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 358 zcmeAS@N?(olHy`uVBq!ia0y~yV9;k^V9@4ZV_;x-vF+k61_lPk;vjb?hIQv;UNSH+ zuqAoByD)&kPv_nB3=9mM1s;*b3=G`DAk4@xYmNj10|R@Br>`sfJsvSe1;JHQVs0@o zFg){gaSVw#{C37&-ev=ymi|@DCBjxrcb90FG_~<cC@ODoyv-}oD0t&Q?ZQb@#Y3!D zc$TV1{_)souQa*9M5!sN)ZwU-%|lNAibMIYW+=L|D@YuVV?6Whl+vT#z&Bj;Zds=N z+aj0GpjKMXaADd#GkITzd9SJ-a-Y7M7VUgV>-nq)(c5?*a{B*>eK<Y-;PVJA_OG>{ z*DhLKaQMGj>!EUnBNB>+ve#_pvfq2W!K9|oX4$rvj3!!D$|qD$eoi_syzheVt9@<Z z{O3SU`0>B_y9BRo*}cPWa@Kynm}ufwDksA)km=@iS^CiV8z)S~7fb{Nk*BMl%Q~lo FCIE3?h;RS^ diff --git a/htdocs/theme/md/img/menus/project.png b/htdocs/theme/md/img/menus/project.png index ae4d177c6cdb769943524b09e643971c1382a7e9..54f4aa382fe65b963ada43e8b5468879ab4c7dea 100644 GIT binary patch literal 156 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4i*Lm2CurW#S9D#$(}BbAr_~T6Bfw)dH%!x z>;L8d<^TKtI`1~8P4j=^0{-ob4*b{uugpC8|1*t0;s5^znl8}#&mWT4s`g1Jlv%LB zN@~Ne{#8<Le;szoXDn=NtE+Gg_{$x_`%l7>$@gb{eA_`T2J^@2bC+atpJQNPVDNPH Kb6Mw<&;$To-#r@u literal 449 zcmeAS@N?(olHy`uVBq!ia0y~yV9;k^V9@4ZV_;x-vF+k61_lPk;vjb?hIQv;UNSH+ zuqAoByD)&kPv_nB3=9mM1s;*b3=G`DAk4@xYmNj10|R@Br>`sfJsvSe1(93-R)jJz zFgkj=IEF+Vemld^`*483@%pP`j_gxk>1gz^9&{}bl=<s%?p+<v!p*xMJkofyq(pp+ z^K_@nOU^%SY1i1v?fG`~_x1_Z1^<utKb}<XsomnRDoQcYa?fGwJ%`V`zm@vFi>*(j zGQFGQKC@r&+CL&QmhjB4d@6fynNI4DJJtX8Z}HWBs=u<Vxmun<TFCyd>7S{E?`soc zAEht;zA5jA^UnRu<z0Vt6G9)kKRvMRcF5Cwr61L<|D-mk7sgNgpVk_Giv1hQ3#~uf z1Mi5&&x~uho>9B-15YEn?w^f&bag)5KCttXO5a1%d5x_5PGwpKS9RrQ_oioM&eq!e z)90mToyE-T_U&PI8n!=ewC3mBPT@TizOp8*alO&(cD8D}@7p4mZ2OsObA!dI%h!I< y4&{ADy-$B#>f7{b@zPnjfAlwkJZW9C(vHztpkQUyIf2`t(D!upb6Mw<&;$TK3c+Xq diff --git a/htdocs/theme/md/img/menus/project_over.png b/htdocs/theme/md/img/menus/project_over.png deleted file mode 100644 index d6c28b6d7ee28267dd5792dd34045956a5d8e92b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 360 zcmeAS@N?(olHy`uVBq!ia0y~yV9;k^V9@4ZV_;x-vF+k61_lPk;vjb?hIQv;UNSH+ zuqAoByD)&kPv_nB3=9mM1s;*b3=G`DAk4@xYmNj10|R@Br>`sfJsvSe1u>HkCo4gw zdAc};L>zuQ{VZ>jgFvf2k9hvH1Xd^ZB=u<toHrO%BTmKb&19eA!2UYb*No-Sgf;dL zsyP!qp84*3!*}!Mnd<W~Ta%6n?Rmhe|Kq%df5d7=FXy<g-5*ppgx}_f`_Lr5=RvUM z?9aYh^~rCAZnWH}m9Bf`bBV#VgI{>BUg>QcVe1EZC+;)87KrEl>AEF2^3_!P_HynR zHNTnDVy&5O@Bg2;c6EUJN3$O~f8V%e^<-9T-}~LU|FhZAd8b~ithVdEBe2{r;vje2 zho*S5KQ}n5yV_J%=N)^w@ojCi&D}?7(qBO?t2ns-3Ukf7vz6kqu8yEU@^tlcS?83{ F1OO9*jYR+e diff --git a/htdocs/theme/md/img/menus/shop.png b/htdocs/theme/md/img/menus/shop.png index fab7db59040300ef6fbcbd91ced1831ac17c4df1..8d8da880f0ed080f7cb941c3c0418750a8a19ab2 100644 GIT binary patch literal 259 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4i*Lm2CurW#S9D#r#xL8Lo5W(9^C88R4Bu6 zA)Ynq>~%GfkX<aDVNtIXybkhNHB4OaZUJZ1B!h;qs0jgbHt!d?{A0aW`YZ0p{0jzO zm&k=mYVs_Ws@3M^o*6ggvcd7r;4@bi_Xw&@EN)Ny<9Gkm?z|@@wI{wLne!I&Jetjz z_G+S0=+$JAJu6?Ca;*z36=glX%Brhr+tw?+%cgC-5~aPbVq%t?U-T<Wvly?fO3Rf? z1*Q3x9=m0w7R0`BVcN<wLArGn0nhBVS%yE;*>=->;!V}!Z2f<${Z*#&ofDh8lbeBo Ofx*+&&t;ucLK6Vb322T0 literal 679 zcmeAS@N?(olHy`uVBq!ia0y~yV9;k^V9@4ZV_;x-vF+k61_lPk;vjb?hIQv;UNSH+ zuqAoByD)&kPv_nB3=9mM1s;*b3=G`DAk4@xYmNj10|R@Br>`sfJsvSe1<57;S6(nM zFsXaGIEF+VemlcHL&Q;}egBGf*S^meyv|5E^89lYbl$LqLsO(XBI@X=pe+{<Ic3il zDN9P!kGMHEAz7g}P+4nH(<8-*j!u;abD!JJzJEw?&)GKy!sZtIa>d4<Zyztuf4(=i z?8KQHYqque=5X2_RR6&;|ABB#lfLjD-v`PGpH$agH5aN|@t`|WHiPLn+Z%nR;9tf| zo98q4eLGv9vF7XAy)5S#PN!O#g*O^5;MHMR-YED}@WIA!$CmWwr#*XQYFwS1rfWR= z?8UQQmyI^JCFkUqpZy~ez-Y%{UQ`m^kbc1bK}_E|wmDPeyXOA9o%Ze2nPswDgfH1i zY_QKw`+O<op2_BBSL63l8~htZA52O1lVjT5_|f$B;{&pP;~4j?aNG3L^+E25rnRdC zX0ztKP>wB5I{T~efpmd)rv?8U)@P+U`mI@0#T#Zi)IMY_h%~&<?Ei1kPVP71cWuf! zcj>0*ujkTl2{pOL9>$)rj`@4TNr4ZyOJ6(Rkn3G-Ict4Yok>jdvxD22)9f}UCYYq} zUm9hx=4W>Nk9bDo`H{>!w)HK$yL{%y*8AcXpLdt!G#!n3f1_o~+ylFt3i)5ms^`1^ zx#PCB_cL>zIuobmC-427ezk4!!S6~b`&NA{Zj7^Is`=E&KlkUlV}6Y{V&|U;S4!FU z`s1GuP3zqo?l1hf`_{7V+^>!A-5Sp4taNy@O26iX@%@h-cRx0oKPX>f7q3#L|D=3& iP~@)*vmX36|6!jrZFz<E(Zmo?8uN7Zb6Mw<&;$T=Bs0_i diff --git a/htdocs/theme/md/img/menus/shop_over.png b/htdocs/theme/md/img/menus/shop_over.png deleted file mode 100644 index bda5823f8c36729b82f6d310cb6c7e1991821c95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 502 zcmeAS@N?(olHy`uVBq!ia0y~yV9;k^V9@4ZV_;x-vF+k61_lPk;vjb?hIQv;UNSH+ zuqAoByD)&kPv_nB3=9mM1s;*b3=G`DAk4@xYmNj10|R@Br>`sfJsvSe1%=;UF%K9R z7|T3e977@wznyt8x5a>`tv=wszH))^1i?$ZyBzad^A2#xK6FcHzQpNeeuATf>H9)A z--!(DtWqk`U4HEURp%F%<-FrkIuyC~NT=^Z(Ksk7Zpvq<U^tTeAp4oe52a0p#tc>r zU(fvYXXu-Il5gMqhWd}MpW4f4C_69ZW03zj+kjym!@ZwzXK(%O?NB)^aM8iOEdIjX zm)Er(-kIGVQjx51zE3B!`kI;c?1vRM_CAbe+r_!1Z|mPfZaiPE{}EGP;`E4hY1R4p zGmCTPte?N9zi5GoTtCAFw<VWWlumx#=f6UH-gUN<b&MZoX(dW~rN<gPzwEVche+aO zwU+nIE_0*T3(ZM;w81m-)$v~&LU!1+_fPfvRZyUx8uq}Z;kiQit~n2M8_XN?u82fe z&%R>6G`8}&eNxr>m|s7;q<2dc|1v02tJofVqvbrq@>@T(Di&Ovq0hf!UHjqNvez~_ xiuSHN5!upvlOg}>obwmC{+b6o6#ZxOjrT*x2{%vnwAr92^K|udS?83{1OO<P)QtcD diff --git a/htdocs/theme/md/img/menus/tools.png b/htdocs/theme/md/img/menus/tools.png index de7f2b7b22164a355844cc2f6c6b738d1e88e4ba..244478041a433f518bece1ee9f40788e953a73f5 100644 GIT binary patch literal 239 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4i*Lm2CurW#S9D#+dN$yLo9mFUO33b7$|b= zqj6ID;pQ9KZ&Kbm=Hx8V(B|e(IL;iQr7GuK$-2}e(M$86*g7NQ?@#VU{@nKb_gpJ? zm23^e<nxWP!CHAKN7VU`vDC4sRjtiY^<O1*<I=`St$XJ^W-HNskizb2{BG&GhCRG2 zE@?JCSM+c3YQMRev0!OKN1NNTc`Z%mf(uVhG8WkMOisD9wWDK?yyxv^2?_P<I!nII sfAT|E#p6C>&BVswyAv)HR$J+RRcg6>u7BkO1_lNOPgg&ebxsLQ05j!ZeE<Le literal 1052 zcmeAS@N?(olHy`uVBq!ia0y~yV9;k^V9@4ZV_;x-vF+k61_lPk;vjb?hIQv;UNSH+ zuqAoByD)&kPv_nB3=9mM1s;*b3=G`DAk4@xYmNj10|R@Br>`sfJsvSe1!*tGtw$Ib znCE!9IEF+VetR=AV{WJb`-k|hjh=TFP0d=eu}fQHlDH$6m}4}n_^a8{5t*WaF)Q@D zZizdxuKuB*wPMSUWp*MiBD`JRYr_PDMFQ7&-}TB2S{#^}*K>S2r_8>4Z@a&zHS+L$ z|NZRDneX<e&&({&bN4#wv{Y5hK({HLWj{xq;GaJ%^<3AI6YLu7*R;HwyhFQM{+O#o zc7l1sy$ZR*0jDo4pEB!d>B|5qFU_xFU#fz=%9l^M=X*6%XX%!;U9p+(G$Q5J9KY7I z#)6qSB3$Ap<C>g=>(?gEe|B)nrGrfIS6lAB(%SYr$SXR{iu)_mw<l7cJVUr@{DdEW zvAdQKop!x9`UC5^?9gpH+2$Y153I9O<Fbi)G<$ne`N2BPZIADSHN*@1ZBIx(VRo!q z@CQenzGcSz(2tu%{I@8DmbE+Y(2r0%{c`K11O3N1O>5?gz5J2<r)mCc%T-fz^Z4`H z>W->cSnm+bJs#=%tBzg2?f<fa@~z?pX(t2k_JqIQV&9^jK0$>2)S91#IUPC%fvxV@ zC*B_yEw$RVZNYwa@kfnP|I`d3%5M5xp14DJ`C@+g2UB0%IbHfj?x6I|-@XSe|BCM0 ze=;c3^wxxzQvJ960cR$bSD)o$M(@Yi&B7uG)cD)U3F=JtX6$y*!#-=FluQD%kV z)p%FNGS8m8jejpP6&Oz5c`j^^<>Z{pI&-BQZ%jT}*U_iD{t}zNtJq4n%a#9B-(-FH z*e7=9_L`oAHwW+UFrQ~0&iGH~UUsPKor`VW%jIn3q+|W8Km3W2b$b<9|Kxq1PIttq z@(cZo6pZg5Sbspab>cbW)9)DeF_}N!>2~{Hj_&Nq1=71-P2oF#<g=PgcXNf+t!Hn( zE#Nk9>G$H5bL;B*(lJ4|^ZUM?O!r0I552Rx{flK;fl{CL3G0I7EoZHMynf`Cu!ym~ zy*_)(!L6lbFSoJ0NoCw~$>F{CABnHOD`d?0I(KTw9_iaH{QI`(2Jy#l)V}P~pR=y- z_*IKNjj^h){!R>Qet-C>?+e+E%b|s7(^_lqHSUdkSn9at?aFYr^CdTR))$tXerdiZ zG}*J)ZTYoD#wpD+--(1x<$PrH;D07VozbcTC)qZCs*IWXM!%$JPv^mzhCga87V~|O z<!yMbplzY{<NF$?wJwF%i#{j^zWWx=xX+kR{_KT&H&U%PT1^Y~e<K;Z@!9P#xi9Im zGmczWZFqiNe)XoU^XD&XyT!RL^or!co0HGJc@cB{^JX{hU-@(YGj!%hZJR6UYXHjF Mp00i_>zopr04enHW&i*H diff --git a/htdocs/theme/md/img/menus/tools_over.png b/htdocs/theme/md/img/menus/tools_over.png deleted file mode 100644 index 80f9a7f553a765bde7599d380459f301d726ef77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 706 zcmeAS@N?(olHy`uVBq!ia0y~yV9;k^V9@4ZV_;x-vF+k61_lPk;vjb?hIQv;UNSH+ zuqAoByD)&kPv_nB3=9mM1s;*b3=G`DAk4@xYmNj10|R@Br>`sfJsvSe1vx8iM{foO zCMQo9$B>A_Z)ZLXe4`+6{Qtclu~r|fDoP$qEl^#;9PH$^p}Adl2}>ON#^xK2YZCr$ znwdDkHbTf|Zn^d06*5oixOe~8sc?7sv9|1h{x<19y#LthoBz-J;Lae+@LTx7d(q^0 z1{?PJ{frij5k{YN7!L2(XIOUkMdykwb6>9ZbxB!N*w#^{^l8er){dB@dAsgvo^Iwl zaDRpVJx1;aGHds+ewZ=yddbu4)1odGAKVk1^v=mef9vjo6DsK|r>bmtKDCbbmz+ia zGc7@ZJ+CTKtrqT2dwST6duM{_`H6NC&F$arT#xr~css5C(B@^f4^)?W%nWXlZkv+x z;E%<%L;PGnX3A>t&h`BGW}<B1LFuQ{CrnT-EDlN6`Z0&uyOr7RhH0@Q$F-~Bhu8C2 zlqJ;~NA<a%<>O&}r8IMG>-AHyUUs{kBIj&P+`)P;j$^*2FyG22?}S%1hkcmDti9t& z%=ExTD?@f}J9L~+XAZyVgR`qo2^q(%wsHBpK4xm%Q-ev`XV}>6>)0!DJ=b`~JPJyd zHP7x||K9IL$fsEjT+{c;SmgA)H561@*z2hKU*gJ#x_;+BiOf6vW!^5S`62xE?IQ=> zJ^l=yk5z8Jb8uZ_nL4-r%oEp$hMUtkUyGFPP}{h=uSx1du;LGuJ8Vm2KK!}%w(0ya zu@8sY3QjUA%e<TIoth)hI^9D!UYhB^{){(wf^z@3eUSL188mBN{l4u%(%TQ$c6T}* zcW0ltFtzf+NAX`$m8Vzq?=JIPQ|UdwIoowU=UM$S-yi>f-?y4STTRrYj?ZEbDEWE1 L`njxgN@xNA>V7n$ diff --git a/htdocs/theme/md/img/next.png b/htdocs/theme/md/img/next.png index 953731ca93435dad89d71d2f7574a86cb1be85b9..3e386e112d8a9da3935f13655069b64226523287 100644 GIT binary patch literal 118 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sg*m}A+hEy;nOJrO)a={_u zqE6fYmZ^qDXVm;|$~>BK_UN)V3{o~nKJYK=*`Q?8(3vP#JH^0hssID8gT)30hQL*- VneAF~N(>AP44$rjF6*2UngHgBB_RL+ literal 622 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznVBq0kW?*25u{^t(fq_A{#5JPCxhOTUBr`ux zAtW<5m7zE>S5LuMA?0PVo`R8qfvJLlv6Ydzm8q$Mwt=C6LHUi!R0akH_7YEDSN5ws z%uMFi)vtc6Wnf_7EbxddW?<m@0K$w;YfNS^Ffg#BJNh~@Fl_AS{*%bcz`$@mz$e7j z&@0L?DA_V7$}%Y1GAi3Lx!5Tv*(tf$DY@DyyV@zc#VfnTtGLIjdP-1saZvS~pq4p7 zElZ=atD{<$M)j<XnzA*yXKC`3y~%U-CeJyR-O`iYvow3@vEr7V;-%-RdwQyS=2Xww zTD|sM_10@GJv}Wwb6VCOYuS3PXUd$OrCWRUUYoM@*qk{_=d9g2XYaYCd#^1$c5m&m zb6fX<z_Dxh&Ye4V?%K6;_nx1-_x{}T_t&03zxMq7y?giWJqLmJ@87@w4gvqa{|A9n zUsg&mFfh251o;Jn_>^LXP46~ZFfcI8@N{tu;gFR*n9bc}AklE~dQZ%?Lsw4(Ztk9P zW!J^f3Hw;i|Nrls`kcdl{;#0Wc6MFHR}c1{&NbW5#PoF$&(iX1FAj3DXvsT$h*%u@ z$!W!0edm`4Geq+R^>%*#lPTIOc+RZ+&(h8wK{?^uO$)o0I3&!KOg3s;rM*{~>1@dV zC9AaOJ{4x1^>@MgNfvUs?-aJo3N_R&+iw1Wb@OLA7o|eeGzJC+22WQ%mvv4FO#t=5 BK(7D* diff --git a/htdocs/theme/md/img/object_account.png b/htdocs/theme/md/img/object_account.png index 46be8b6fe0f6c733bc1130255b140d9d0da85c9f..31628692b72e75bb6ac02d4c7fc671bc09bd0399 100644 GIT binary patch literal 182 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sg)Oxx&hEy;nA7I$T!_pvi z*sHCcM_qDGq2`3d8D~GterPZ9F4e#}T;b4#;~$u{dK+F#ZV~iilC*1NHGCM~7B*uM zn}WEw%>f6k3<f7wg|`e#gacdz7;?5SUwOsMF_AH}gn@&%p@eC|yap8~riK^CIMoH@ jA5CC5!YSNQ#?P=VxHv$5t!^#@0|SGntDnm{r-UW|GpRVW literal 453 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4rT@h290TVA2Tp8=#{uelsFfqCYEI8=P86_ z=B6?fC+6xY7@8{NCzt3c7#SFtDj1qs85vlam?~%+7#bKPNoFi#U|?V`@$_|NzsbQa zB*v?GQp=lxfq}EYBeIx*f$IYZGdis?nZdxoz>@Ch>&U>cv7h@-A}a#}Lv?^pi0l9V z|F2!Uwig7BojZ5#+P!<vpFe;9{{7aiTa%NMqd*`zJG;2Lx}~RQ%CTd|)~;Qvsj2DZ z<uzx{oR*%R;^N|<prGpNYDGmw0Re%nTlX$qy0oXKr=_JOJ3E_$gJaH|rBkNNnKEU{ z-ebp>E?s-?-o5YNzgt>b8X6i-;yks2fq{XsB*-tA!Qt7BGzJESHcuDF5RU7)=S~V8 zQV?JXn6XHpL)ANFa>Fc+U;pDXCdj-E-hbG~)XCkzj%%WjM6=1Ck1Yq@O$l9ISIwZX z<WlL&E8Bu@X-v!7u%+x!j^7^R3`cFocSSFIZh36mJ4d_u;G6o;Z8yvAEoM9_cmDLR z<c??4f}%d{aJ{wSXO?>Un~0OGGtSBVJt=;68|Q)xt5p^=FfcH9y85}Sb4q9e03c1e A9{>OV diff --git a/htdocs/theme/md/img/object_accounting.png b/htdocs/theme/md/img/object_accounting.png index b5600221f02fc922e0c2bda2149f123a6d707d35..2e6898246c2ab9ad5dcf2e0f35f59d4f5d8bc03f 100644 GIT binary patch literal 161 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgWO%wbhEy;nO9Ux2E@b49 z{h%3?P;uacJcqQw(isnR+}c`ii29~Q96Z1iYQ(!D!R*2oHWO8axdExcjcejIEag1m zrN-F0Thi;msbvf&<$SjLuxK+fO)wIW?icDX%JGsp;KjjI-KNOSQ0}Ar|9HTja0Uhj N22WQ%mvv4FO#pWNG2;LL literal 170 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4kiW$h6xih%orFLSkfJR9T^xl_H+M9WMyDr z;4JWnEM{QfI}E~%$MaXDFfcIqc)B=-SokOZ@K;J$v3`BKQ75wk?~JN9w&xBAhH$WL zxb5J;yf>#pdohzci-|*oO2&cw=1Xq!7EM_UuT@+R8*FU!V7SC!HaFwLe|v_n*~0nX UHf~tYz`(%Z>FVdQ&MBb@08o)L`Tzg` diff --git a/htdocs/theme/md/img/object_action.png b/htdocs/theme/md/img/object_action.png index 0b02fada4147e31e71f53a800b91839be9b66f07..3a777f181d85869ea98b895c6ae7c61a7923efd9 100644 GIT binary patch literal 113 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgSa`ZPhEy;nEAakdcdDsr zo9w{&<^#(ly*m@ax;8NIxXyScxU!?@wMJ+Q!xT*=nHlN@T9&6ALKzs$cqdFOU)uMC Qfq{X+)78&qol`;+0ExIE$N&HU literal 528 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4mJh`26+$Niwq15jKx9jP7LeL$-HD>U|>t~ zc6VX;4}uH!E}zW6z`$AH5n0T@z%2~Ij105pNH8!ku$OrHy0YKn5o6+JJS@uJ$H2fi z!PCVtMB{wvB*ScJM}gM+w@Z^XS?;)aEGby5r;r)CtRS)GlxSH#PvOh@1@V)VVhie= za&~ldbDOGP$w>8hs^B5mVl95i;_R!XH@naG8J*p<`~K|h#+ysdC7R7v^b{)DeOGqU zd(VB!l?)7%iag_0YroyQ|Fp8NZa+Vh!}80HvzE0p*iFiDJ?PJ%uv7ZGH$(d4k3Wix zW;S?EI$&AO@qpXYL&&pDAdb0V>$mVqF<}|s<(Ikn+7HVnpDCZTR%imtq}zfu8m0^y znLFdw-_Mz7v$pGlgqq#fJH|%3la{kNNHwl{p)V8rvB#75WNi*#uiN5k27QlfP8{o1 zdXt-KH+wn?DYk5HKA2#A?VEp&=Psq0HXA3UtUa4NS%LG~tyh1iGESIUaCG9;V^gwQ zPxdS+_B?ID_OPDSzAsDj<(+G<zurHa_L;rmanPSVhp+x*viNu}{`S$N#;aMSm-Du# zGko*dcjto6G5zvMsW)8%MK+wXJoCKxO4iodZi_#19$2fwoM1kycJdd;OEbU!+oi$v erONgX<FUqj-ivOsv@tL+FnGH9xvX<aXaWHJ=iD{` diff --git a/htdocs/theme/md/img/object_action_rdv.png b/htdocs/theme/md/img/object_action_rdv.png index 25edfa85b45b03ac727df4e3f8f93a037a5c6801..f29c713022cf3ca48e607fc9382921acb2081111 100644 GIT binary patch literal 118 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sg*m}A+hEy;nD~K5wsTi3& zXy|l^6kss=_qdT$z?HW`)HJ~V;)+EUDX!cbj>XF8ypuZ6_J}<}mZg!2*_46d_M&ZR VEPoEIWnf@n@O1TaS?83{1OTjKA<+N; literal 675 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4rT@h290TVA2Tp8Fct^7J29*~C-ahlfw4Bg zC&ZP3frEj;l7YdAfuWdz!-;{zi$TDPL7<vJpoN2@nnS>gL!g>N!iz&9h(jWZL!yO4 zF-kx{LO`HJKte)5qFO+rML=_kfMK$LVYYzfQVEF`38$qJPHQE+)+%cDC>qXDbXuzD zwN^1`t76nv#i+fC$$K>|Ej7L7Xa+6SjM}Q1yjL^(m|@Ub!{TF>#d|GVjyVMdIYnhV z6(4hIIp@@K&MRoCS9Y~m&pEH2YeC6tgIbOS&AAsf<yzF7Ystmc$<;l{OYbGGeV$!h zoLya=-E%H`&f4rb*Rt0>&)#}2``q{9rPqqr-YZ`Fy!hPr>M7@{*WRn%`n>ww`<5w7 zTb5pHIrqNh-1nZn&wI{&@45DU%9J@%mY$okcI%YA$ENH(H|5&*Dfj-*S$l2Hv1@bg zeP6ou+S0A}mfrim^!fj_Tkows_I&NN=WFkMU;F(3)_dQ#KL5Y>`S-og|L=YO|Jd{I z$KL-x_x%02=l{>W|9|fL|7-8RUwi-m+V}tW-v7V%{r~gt|DXT=|Nj5~W>L54pjash z@(X5gcy=QV#7XjYcVXyYmGxj?VBjq9h%9Dc$m;=N#@>fVE-^4Lu$OrHy0YKl<`uWl z5Wi@5hJk@$lBbJf2*>s01O_HiUteF>Og4@SSIxfheJH;We1Y|I$zJZ)MnS8J?;NPf zeSc}ztWTdFy>O8>WMd2cJSR&*qs**>_u_-J3q?As7?`Y0uRHkHDqOeKS#NT}^TwIO z*Kf7VcD#J>w!(G0pokk64qTfv+wtVV0}9sKYR1}E4;<*4-FWc80fr>|8Ho){7g8NX fdbpPgiZB>`Q*o_X)BKWwfq}u()z4*}Q$iB}n4dOl diff --git a/htdocs/theme/md/img/object_address.png b/htdocs/theme/md/img/object_address.png index 201577281f048ad530a5ffc90ae5ddcde1ea09cb..b35923a7e4ff612a9062fd6d52d18d8ceeea497e 100644 GIT binary patch literal 227 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sgtnzem4ABssd(c~pm4U(G zV(^zF#w9ri)R|`*rmgb1!MW{G^cts|hi0Er`tv+S(oXJ?%)gvN(`tX4`TjUIE84Rt z`Kp9>oQmhCoP*-mC+(@2_T-d$@uV0Di5*k+%rs4Mo}?;2O*PUy$#qh$e3?q5S<<D+ zPwq83^G|Z0Y-c%5#k1&1x9j>zDwSI^dW=0M&5_8ywpV4R@nh-gNh#O)l2Gs(@! hIHmvW?C<{a1#R(B-?Bv(GB7YOc)I$ztaD0e0ssY<TVMbH literal 358 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7bv<1iLoEE)PHOZ$Y#`wJ zI)x#DX%l0h5ko4omE&f{RHjRu2`xs98yqDRCYop5Y~Y*FQa-ge<~x&+Qjp5;eed7> zuTM`q6+Z2$?nCQ;JDX?kdw>1fEw#G5M+_&Wlf2h{u;_ce?)57HYpn-X`#&U{e_SQe z7G60=#WS_1a)Pl>o|Bq8YuBQTiVELPwsYql@=MU(;J%^UKtET^SR!^h_pX{Y)=xI) zFPYr+T9bSG{ht5248GiFwa@Boh^qPF>txX=+P2qHc)CjU_xTe8Dl3D7FD!eJ%*`dU zO!@vvIfqjB?Wa3!e<U#7d?Ls3VC%oki7K6ibB))@9^bs;gq;7TiaqK=GTnzSwXkk^ z8f5#yvrhY|T>m?Few&UdGMc@27TUG%x>^&c%A%uX`S_2U_p}@0AMED|@+a$6GB7YO Nc)I$ztaD0e0stNsm3;sJ diff --git a/htdocs/theme/md/img/object_bill.png b/htdocs/theme/md/img/object_bill.png index b4022e77740bb96770f8fee065c58284e3518c45..19d4be8371db14278febf70be41acb3963dd7d0f 100644 GIT binary patch literal 146 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgM0&b7hEy;nE3mFGzG7f< zAd#uem0$AT;fL&P^$x8O2kKQS8WcH~^h{7<>o8*KN;p-Zz3adOhBoeooD$a=6PR2* y7`88BW0BFiW_x7S6S;Luni{V1XsM`}G0gwjTk<Zo>ofxc1B0ilpUXO@geCw4G%!v8 literal 394 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4rT@h290TVA2Tp8u$OrHy0TwoW)+vzwS529 zje&uIv%n*=n1O-o0|+xZtudLwz`($g?&#~tz_78O`%fY(0|P^EfKP~PR8&+@P|&q= z=dPXGdu;2{rE_|gPHEXYr{&n3mV5W^eSiP{+_9}wdaCD4sh-kPymx8Oxuq@7?_KL@ zDPB9LXY0}_&yTG=x3*{R*0t}i?LD`4%CWs$-`_iSZtI-)@82(-Gv(g7z2~+r{r~^} zoH;$$_HLasrRDqg@6Vs#yLRndPftrvPfu}iadvjLlatfAbLZyFnR9FI@l*x|2F8*g zzhDN3XE)Lq7#NB@T^vI=uKS+4E!1Sd<9ab5$J8uNZLyof(F*o0|NmFoIdK2ZJ!{F( z(4iraz!CcOPUeh&+w<FUQZAR>pLqUyv|Z=1ON*y?ESVkiMDC?$O>8W?-prY~rL!){ zc9%SxyZ(Foj;cjht2V#Q^s(D~?yR`&W|0H(=VLhc3iT-DGB7YOc)I$ztaD0e0sv|O Bxz_*y diff --git a/htdocs/theme/md/img/object_billa.png b/htdocs/theme/md/img/object_billa.png index 93564621d7a5f5be223adff859f9a0d37980e5d5..19d4be8371db14278febf70be41acb3963dd7d0f 100644 GIT binary patch literal 146 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgM0&b7hEy;nE3mFGzG7f< zAd#uem0$AT;fL&P^$x8O2kKQS8WcH~^h{7<>o8*KN;p-Zz3adOhBoeooD$a=6PR2* y7`88BW0BFiW_x7S6S;Luni{V1XsM`}G0gwjTk<Zo>ofxc1B0ilpUXO@geCw4G%!v8 literal 395 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4rT@h290TVA2Tp8u$OrHy0Ty65*8Lv|H#fC z$iTqBS>O>_%)r3)0fZTy)|kv-U|?WLcl32+VA$Bt{U?!?fq|hnz$e5tDk>@{DCpX` zbJx!8J+^h}(m6d#r?l*y({gN1%e{N|zQ2Ee?%38TJ=JrjR8Q$C-n+Et+|rik_pbG{ z6tA7rvvui|=f~EbTidgD>)Q9%_MTfi<=Eb>@9!Nuw{_0@_wSd^nR4&k-g8@*{{R1f z&YYfWd$-P+((?WL_vg>=UAuO!r>CW-r>D5MI6FJr$;s*5xpQ;o%(*r9cq#(}17k^$ zUoeBivm0p)3=AcnE{-7_*L_dj7HTr!alIIjYiiapIdE|d?>)z#|IdGBjJlbheU6dA z#ifyPSwQIOxaNs7xBh-L;YjHH*#AF2|EoBqeJNtsQ=yJ4Ub@#E{2$GJWK?+gOip)^ zU%AzB<M*}27HwCBm)_1Xzcl0MC9CaG{XR(y_8Vq$PEcxMQDtCYVDNPHb6Mw<&;$Uv C{JPTs diff --git a/htdocs/theme/md/img/object_billd.png b/htdocs/theme/md/img/object_billd.png index 2080958f0fb04a7ddb9fe953bd9294e3666d43b8..19d4be8371db14278febf70be41acb3963dd7d0f 100644 GIT binary patch literal 146 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgM0&b7hEy;nE3mFGzG7f< zAd#uem0$AT;fL&P^$x8O2kKQS8WcH~^h{7<>o8*KN;p-Zz3adOhBoeooD$a=6PR2* y7`88BW0BFiW_x7S6S;Luni{V1XsM`}G0gwjTk<Zo>ofxc1B0ilpUXO@geCw4G%!v8 literal 341 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4rT@h290TVA2Tp8^al8ZxJE@q1qB6NJ9qBd zxxL4>E?qjOXX%udy>nWQ&1t!J@80+K@6R3EI;E$2&XnpYJ;i&M_MBVV^8DVlo|fXZ zb9%Neo$~zH+H-4r_HJGK{@UJiYo{FByY>COW9PQcdH??X(m7M^o!fhE>(c-K|IeAz zb8YX|Ia6A`fB*jc`Mqn`&h_-P^z`%;7Z+z|XFEALojZ4K&YU^7<{nRFU|?V@3GxeO zaCmkjje&uo%+tj&gyXvJsaWBI4m_<7OKz^cv0$>}jYW^5z5o9|Uwkp`c=h))mJAIu z0v5CzhFnWt{_Mz^m4CD1pM>7e{cfnX*M8n7qg9_vypvpZo$y?D%tL7QFPoxsXWqO% zY=1a!{`oz9XVbE?RibpluR1(e3zm1Xl#Y19P`BnVXWN1&OLsCbFfe$!`njxgN@xNA D&~UT$ diff --git a/htdocs/theme/md/img/object_billr.png b/htdocs/theme/md/img/object_billr.png index 7a9692a08045fcaa51db342804aa593ef1bff0bc..19d4be8371db14278febf70be41acb3963dd7d0f 100644 GIT binary patch literal 146 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgM0&b7hEy;nE3mFGzG7f< zAd#uem0$AT;fL&P^$x8O2kKQS8WcH~^h{7<>o8*KN;p-Zz3adOhBoeooD$a=6PR2* y7`88BW0BFiW_x7S6S;Luni{V1XsM`}G0gwjTk<Zo>ofxc1B0ilpUXO@geCw4G%!v8 literal 399 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4rT@h290TVA2Tp8u$OrHy0YJ75*1|9?R)>k zih+TFv%n*=n1O-o0|+xZtudLwz`($g?&#~tz_78O`%fY(0|P^EfKP~PR8&+@P|&q= z=dPXGdu;2{rE_|gPHEXYr{&n3mV5W^eSiP{+_9}wdaCD4sh-kPymx8Oxuq@7?_KL@ zDPB9LXY0}_&yTG=x3*{R*0t}i?LD`4%CWs$-`_iSZtI-)@82(-Gv(g7z2~+r{r~^} zoH;$$_HLasrRDqg@6Vs#yLRndPftrvPfu}iadvjLlatfAbLZyFnR9FI@l*x|2F8*g zzhDN3XE)Lq7#J!%T^vI=uKS+4E!1Sd<9ab5XQ5e~nzEbY(FH3SKK-As?w5J|@3tZ) zhHv6M2JTBQR8B}xQhaG|q&Ck;c2`|Rb(CPHynmgmR`2&o%(`YZ52F`2mz9>z-MK_F zcJ9ASzT-c9ti#2BZ?HOYwQBR%5UtpZ<V|;sI~i*j=jU-&*lQc;F)%PNc)I$ztaD0e F0su2IwsZgh diff --git a/htdocs/theme/md/img/object_bookmark.png b/htdocs/theme/md/img/object_bookmark.png index 39109ef5ee61c102adfab2c4c7378fd83f76c040..bde60c8877c7ac3d47ebc9c0609ba0f7be711c92 100644 GIT binary patch literal 131 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgczL=whEy;nFJR0_xpBUL zfw6H9TZ!s1p8p#iltWzkB1A0%7G;E7v~SCG_`$z@kw4F5iI9UfrV6ixmnq4%#jwSt iFe>PaYj~wHFnIJfH2B!_d}Cl>VDNPHb6Mw<&;$VS_a*88 literal 201 zcmeAS@N?(olHy`uVBq!ia0y~yVBi5^7G?$ph9%LCR~Q%=SkfJR9T^xl_H+M9WMyDr z&<gMgasB`Q|Jt={_wL<$?AWm>Q>NUzcklc6@6Vq<zjp1~)~#F5ojdpb{rja$m$tOD z^i<ED%D}+DSQ6wH%;50sMj8VHgRQ5FV+hCf<b(rk6;q~6DUp<rU}fDp&A_1G&Aolq z>deg9QLi?sC`^@F%DTu%?Ho&BrfaH0SK!SX5v<Fk85WxHFuPb+Zf0O$VDNPHb6Mw< G&;$U>G)>X~ diff --git a/htdocs/theme/md/img/object_building.png b/htdocs/theme/md/img/object_building.png index c9d1539dddcdce4f285117d26cab14ee97ddb90b..efe44594ae8c783c434517c0a8cb89e81c098edd 100644 GIT binary patch literal 122 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgIC{D`hEy;nFVONxuxMb~ z*u>WM-(e-YfzWa#lSvyqGp4Bvgs?m@71+YJisQ0Mhp56N4_D{YR%Z$h^(6ENELUP+ Zu<NY7!chJqf`Ng7!PC{xWt~$(699>2Br5;_ literal 563 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7I14-?iy0WWg+Z8+Vb&Z8 z1_lO&WRD<U28JqC28M=a28N&i85kN~GBA`HFfhDIU|_JC!N4G%KPmpG8v_I5PEQxd zkcwMJChzSR3KTi|-sawuvjWbJaz1L413WgeZZz<@(sZb+C2#2g0q*3UBQr9RTyvEZ zrT;TTZ`inC(H$r5GHo7K))1jX?P5yC?+^MsdweT@<K~lM^FBR$HoZ9ST&RFxo-)&R zk-b(K+i$OzOg_)}fS<voV}@eOAEzTp0xa>?bN#+YIV=pQ2-Fdi_s~@AOAZJXwK?CM zW5#{@sSzu~-E8HEX{nX-mM;lfxqa2DI)@{|vDeSXUJtc+ZZE9-W8eOnK5F(B&*ubr z#a^$Sb^iI<mnBt^dei^99C%o;BY5@IdzO90QpXG148Qqud|Y-hV^5Thn7lA!i@^Tt zuWb!|KhImW>Q>$U<;yaku{9su?6q`}DpQNVg&ecQ?YA98To+_YS@bcl4dZ_H+49a2 z#@F9}H^=C?Yb*`nC_HCrFUi+ldwZL=`Od}_VXM=RKQ>fey2qQNa-~LB^!n@e>%+9| zH+FWMIR5zK-<vttQhVmU-1V<u^UatZx5e)Bp8xeL5ok+{^6Gq9B6aQc*WU&_;T;iE zgOUVTPBI)eu$$_&^mw4i$+u<If^84u4;$>ev2AX-%=6z@YoG3~f4rZO!F<k1zqwC^ S&N47CFnGH9xvX<aXaWFm^6*pu diff --git a/htdocs/theme/md/img/object_calendar.png b/htdocs/theme/md/img/object_calendar.png index 8cda1f3f2202f020c2aa7f0438b72e06f559c83e..98a013a40148fb41b2ab42dcdd6d609ee7d4016f 100644 GIT binary patch literal 106 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sg7<#%mhEy;nEAakdcdDsr zo9w{&<^#(ly*m@ax;8NE(s0_5_CPd|$%yGQi=V2y<O(i^`)O^nxl}VF85kHCJYD@< J);T3K0RV=j9u)up literal 199 zcmeAS@N?(olHy`uVBq!ia0y~yVBle3VBlt9W?*308CRIYz`(#*9OUlAu<o49O9lo8 zp#Yx{*Z=?jFI%>3+N>8>uU`HC|Ns25EzVUEN+6|4-tI089jvk*3=9mM1s;*b3=CW! zK$y{KjmZoK1_t&LPhVH|+e}OXZ1RgITv@`vz@X>p;uyklJvo4hnN5^kT#VgaLX?Y* yNAaAV4$nFRts4>?K9WujUNMOxAp(mS8H6JFu1;5C6=z^zVDNPHb6Mw<&;$S>k2MVd diff --git a/htdocs/theme/md/img/object_calendarday.png b/htdocs/theme/md/img/object_calendarday.png index 5678cdd2411bf87a5a55920770749aaab067ca5b..75b1de981da4344286785aa815b5b0eef23459e1 100644 GIT binary patch literal 165 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sg<aoL`hEy=_J$sPT$xy)c zV)Uu_?k?3OBHo_fCru2NE@`=ckR#HENs_s%;@-DIhh<gLI-6aO&5)E#D{pCA*dxjN zuuHh7LUeh)@?VP}rCo0RMfcUDme+U5E!mfAQX|i)F7;-~gS;ySS}{LXinGKOFlQbv S$!1_+VDNPHb6Mw<&;$VGgE_wd literal 223 zcmeAS@N?(olHy`uVBq!ia0y~yVBle3VBlt9W?*308CRIYz`!70;u=xnl3JWxlvz-c znV-jyoS4Ivm(7({l$v@{v|omSfq}im)7O>#D!TxKEbC(l69ona2F?PH$YKTtt`8v0 z=(NUU1_J{FOS+@4BLl<6e(pbstPBhcLIFM@uK)l4U$$)7v{^5%UcLJN|Nr@ATb!#T zlo%KobUj@hLpZJ{2QV?SiKdGSr@Kom&5@GI$vLs$(JLV)p_Tvx$B?PV91>0_aIi5b YFW}vnGu=Uifq{X+)78&qol`;+0Mt!E;s5{u diff --git a/htdocs/theme/md/img/object_calendarperuser.png b/htdocs/theme/md/img/object_calendarperuser.png index ba16a4ab6c0dfe3a033f2739a587e8c4b567d181..98a013a40148fb41b2ab42dcdd6d609ee7d4016f 100644 GIT binary patch literal 106 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sg7<#%mhEy;nEAakdcdDsr zo9w{&<^#(ly*m@ax;8NE(s0_5_CPd|$%yGQi=V2y<O(i^`)O^nxl}VF85kHCJYD@< J);T3K0RV=j9u)up literal 198 zcmeAS@N?(olHy`uVBq!ia0y~yVBle3VBlt9W?*308CRIYz`(#*9OUlAu<o49O9lo8 zp#Yx{*ZE~z{{R2KY}vADvtC@idiDSR|F*AE13^klg8YIR9G=}s196hP-CY<uSY<sJ z7#KJUJR*x37`Q%wFr(8NlNk&Q4D2PIzOL-|I62tW*h@CfO=e(VQ1End4B@z*Y{16M vcKJcT^$7|RsTw>Y#!7AiYi@TiGBMOF<2MpC+~~u=z`)??>gTe~DWM4f5m-5E diff --git a/htdocs/theme/md/img/object_calendarweek.png b/htdocs/theme/md/img/object_calendarweek.png index 4ea2c09ccc96b569c2ed0e2aac8f2fb0b987cdc2..50c65619ee337320b5fdb57105719d3f3bed0c59 100644 GIT binary patch literal 156 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgBzw9zhEy;nEAUzvm@N1p z-Jn#^An>RE(Et8ror+T)8V3k4Gr2Ykc71bTHGG)YvWVG2RMsKv3uA}jLv|5YhYntu z10g1i91}e@i6%BIT#%u7PGEj}z>)I-M=mt5iWz+noO^|V>vG0cjtSa(7#J8BJYD@< J);T3K0RYZMGTHzD literal 188 zcmeAS@N?(olHy`uVBq!ia0y~yVBle3VBlt9W?*308CRIYz`(#*9OUlAu<o49O9lo8 zp#Yx{*Z=?jFI%>3+N>8>uU`HC|Ns25EzVUEN+6|4-tI089jvk*3=9mM1s;*b3=CW! zK$y{KjmZoK1_t&LPhVH|+e}OXj251^zjH7!FerPvIEHXsPYz&WW)n>p7fyGVSSrQE m(s+bJOPaY+u~|Wafx$9|&+>+|^+N^*1_n=8KbLh*2~7a|P&0b~ diff --git a/htdocs/theme/md/img/object_category-expanded.png b/htdocs/theme/md/img/object_category-expanded.png index 8168f76fa26b3e8f5002b4e21966d23e5f026cdc..b0292d92aaec99817b1a0dff1c1c354cd715f10c 100644 GIT binary patch literal 104 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sg=zF?2hEy;nOK=oSdT1|W z_8@?HlFFJl_I?#j60ZLPMH3khy9+*4uxJcE8OZjFnW0iF=9s^P`V$5Q1_n=8KbLh* G2~7Yi+8sIo literal 295 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4rT@h290TVA2Tp8=$5!flsFfqCYEI8=P86_ z=B6^_rWWZbm?-4sm+2`O85me97+PAHSXh}@C}<lP8W=Rh+*f5_U|=ut^mS#w$;~3n z!MNb%vuz9v44efXk;M!Q+(IDCc<FB49|i^nmUKs7M+SzC{oH>NSs54@Bm#UwT>t<7 zACZ*z;`O^Tmu{T7bYuUqvkVLj-@gBdU1?^)z`(#*666=m;PC858Uq7^kEe@cNX4z# zUPqw=3LMPB9bf+2>v36a<DM?-%);Qe;bHR0vRT^4t(<}@U4MnnJN+v2h+fo5i8;$# ts|)T<^Xyr?Ig6z*{Q7b69~O0cX0S1)zq-c0oPmLX!PC{xWt~$(6999%W8we+ diff --git a/htdocs/theme/md/img/object_category.png b/htdocs/theme/md/img/object_category.png index aaea38dbef2c74ef5ec519976be9b70ecf4e94d2..fb51c4b100c90c3e1bcb801cd16e0226cd598516 100644 GIT binary patch literal 99 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgXnDFghEy;nOK=oSdT1|W z_8@?HlFFJl_I?#j60ZLziu7t(H3pvyWc$U;P<ekwSMlMy+6)W~44$rjF6*2UngF|d B9Yg>C literal 281 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4rT@h290TVA2Tp8=$5!flsFfqCYEI8=P86_ z=B6^_rWWZbm?-4sm+2`O85me97+PAHSXddEDrg%R8W^ZQ*`CC}z`$PO>FdgVlbc1D zgW2zS`z!_q2F?PH$YKTtZXpn6ymYtj4+8@OOS+@4BLl<6e(pbstPBhc5&=FTuK)l4 zk4VaU@%r7FOE=D3x-oCXmT%vG$SJCP^xSlffq{XsB*-tA!Qt7BGzJC+J5LwKkcwNS zry}_n6gZeKI<3C<{}|i$1)crtJsBCedAmc)Gq+FGj8pnM!8I${@6-NIku$^kO4YXJ frL?X7_+nQ8<D%ookC`zrFfe$!`njxgN@xNAh+kjE diff --git a/htdocs/theme/md/img/object_commercial.png b/htdocs/theme/md/img/object_commercial.png index 36cdcc8d4a2d0220e02cdddb5d62dea514d60a54..5f6fbc4ded6b2159c064190495590927c090cf1d 100644 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgM0vV6hEy=VJ!Qzt<S62L zk(tTi*sY|A3~xowb9zW>E_gCIXN5<dqti*-w_j_!6_X;i*j~Nu9L?GB>Eb=D*+#BD zs<SuCZdf%>Sm3Jgf6g7N=5ZI4m`j_p+rMGWzq@IV-y^qE3=9kmp00i_>zopr00*}- A^8f$< literal 304 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`7G?$phPP=3j~EyjbW2<#N}P*Q6H7Al^Atid zb5j{oGIRA5%oK7Hi;5MD3=B*a3=FIc%&iQJ6|@Zu4GgNwD!myP7}!fZeO=kFGP8=y z^PRn9y@`Q=fwRCPvY3H^>jMZgI;}C8!N9=4lJ4m1$iT3%pZiZDD+2?AdVo)eD+2>V zb#--5PtTk=bCxb$8Wa?ioSa--T%4VqJ!Q(2sHi9>C#RN{7P+N+n-~}v7)yfuf*Bm1 z-AH3#U~uzvaSY+Oo}A#oaM;1%Xz(;ehDH6$QzaQRpKbaiwV~iBW5+5NW`o?x92Zk3 zmN9slH)MY6V=*|Z!7wpB#H=ktKtv=hfq`MqOz!T#N98UuFfcH9y85}Sb4q9e0N65I AO#lD@ diff --git a/htdocs/theme/md/img/object_company.png b/htdocs/theme/md/img/object_company.png index 2a582b8bd4c899f370f0e74a234005c1f00d6ac1..efe44594ae8c783c434517c0a8cb89e81c098edd 100644 GIT binary patch literal 122 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgIC{D`hEy;nFVONxuxMb~ z*u>WM-(e-YfzWa#lSvyqGp4Bvgs?m@71+YJisQ0Mhp56N4_D{YR%Z$h^(6ENELUP+ Zu<NY7!chJqf`Ng7!PC{xWt~$(699>2Br5;_ literal 492 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4rT@h290TVA2Tp8u%tWsIx;Y9?C1WI$jZRL zur9zS#I<G0R;QpAr>K^os3}3oJyF?HlC!5I7f;D9o|9cYr?_}&arK<y>ZQdkb6R@V zwoF-T>DAKHv$bc++MX#}d**DNGG*(OIa{a9**j;>-Z@M6&RKeF>72bwm+oD<^w`q1 zdzY>~wsh^ewQG;9U3+fr)?;h8p4+<i+}5q<w(h;Qck8*mTd(cidv5REYkQAfI|f4c z&K<jV?%cg==k8s*cJJD?=lAYCzxVw8^XKou;QROQ-`~AqHe_I6U@Qsp3ubV5b|VeM zN%D4gVd!9$^<ZFN;4JWnEM{Qf76xHPhFNnY7#JAXOFVsD*{?Fn3F)#}ryM`Qz`(HF z)5S5Q;+AROZN4T49+%g=?-dqEn+45g+r+>6D%<tb|Ni%Lx;=lJ;-|*^q5D>m{67Z& zFGs6>H>}qFym<1t%Sl$J7{s5<%~&4mJDq36xt9eg@sHE?ooQJ7G<(X5jNHjg+uEL} z=DQ~Q?d`D)eY550Rh^elr>FLAzp>Ev=e}It-M=j@ZmFCspBY#qu<F&q-sUwQ``VS> tPUPKa;W+EfF<ysxK~GIuo)`ROE@%?{{P^*;+YAg044$rjF6*2UngBSo@0b7p diff --git a/htdocs/theme/md/img/object_contact.png b/htdocs/theme/md/img/object_contact.png index d4272f367c6e5eae37c9ddc745fd8a9be7d05bb7..16030c443338558c86faa43bc79a985192a1857f 100644 GIT binary patch literal 280 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sg-1l^G45?t8df}iKQ=mx0 z!~CmHRvnOxRlQ<l()3AIDMPqRU#RCZS1uQ)lkmr_N>MBKI$5!8KYQT8gJbXC=-JOX zT)N|kgPO6x?bVri+9H!@XRdhhLr`n;rLapnll<eYZw4_P*i%tc@UU8aHj~Ox-SZEQ z%)bB0%+Nq!jjiU~swt<IG}%qyJm=`mqNH1(BQY(oWtx5Rhs4)BrjAkTb~~oL;k#2^ z-m-21`;j93Z;~gkGNxU#TD30Mhan>(a@Q&qZSIYewk_QnzC9~zmz$ZGUZ~2lPoIQ+ lk9_O;%Dc4c72j8Wx2B{W&Q+I}GcYhPc)I$ztaD0e0sx=<bjbh! literal 666 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4mJh`26+$Niwq15Y)RhkE)4%caKYZ?lNlHo zI14-?iy0WWg+Z8+Vb&Z81_lQ95>H=O_WN9tVse7-+>bCaFfgfmx;TbtoNt}9KU+9a z;<)|yXFcM=pP5ga8ahgO=5i~o?a<sYg)g>brN?wWztWHT1)tUztZcF{Y2F>%l4sU2 z!D-`O*I7B4IbYVPslJbWxA(f@k`RH~XU{+Xt()Jz{$TyGix!u7mv=t*+VJ4xr`WuE zIueiK19rd7I&Qga&Uwa3Wt-2gzQx{mYn|C~@6Vq<Ul$V>j~DAcs_wNiV)fOk-@pF4 z%iUSGVeeywrw!YlKioMfs*F83JNx>rJ2iq~tFM|b4SKoq^{$MyCsT|vWRo*r3i^Hi zVdJ`Q!qR&M1{*oV#l+SfdHnHf-ga+^HjSk(zE&-{ocZk=pQViz>w(F7(^3O9o)|Eg znVIF>-e#Sw(WTUOSaI^?$!E^oQRcYBBf&7?v|7O&Gc||hmnS-P#97VVC&j{;C?Vu3 zIPdwylTR!x15Y%vI7BrZ<#<!JdtdJD()-`Tn-mf(WG=n`&gp#g;6c6keX&;i4H>6A z=Ta`Hudk0-8Dht&7<TU5xd}m&yq3<GJNMwW)izra4>Yu}{><syby=qIZ=HSC)~Ky3 zSFTJCI<+WsR>s<&E7dw`|DU<e-4|0JGS%zpw9HwTy)@%H0@WWCa^Ec1ygM^_(TpSi zMJIST*x47EgoTH1*FC*!;gnr^Ehn^=@-Qf}oJ^S%qSgG~eah+YhQVS%ee;sntX-RV z*x*9c;;sLbCnZYsxcdE`{&7*JP-MlveKxxcyB6&)E7cKk6*R01xL=pf@aD<`^ZCku W7JPkkj+23bfx*+&&t;ucLK6T0Nh~n{ diff --git a/htdocs/theme/md/img/object_contact_all.png b/htdocs/theme/md/img/object_contact_all.png index f571504b24677f54c02299d6eb3435fcf1118788..cc204fdcaf1f376df619bf444699ec4123df7d9b 100644 GIT binary patch literal 170 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sg6neTihEy<KJ!Qzp7%0K; z@Vwv-ac`AH0o}<NF|C_Bn%`9KmSwLnlfL=q<m!?$Cc!=P)0DlXHe7wZCNw2=1MA-# zk*-|9=4C+_GuWrkKR0RW`$&tOJNe^e&lYm<ev9+^keU9>(A3BK&W;whz|)pr_J3k4 Ykn<?s^|k8~0|Nttr>mdKI;Vst0Q*isLI3~& literal 810 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4rT@h1`S>QU<L*T_7YEDSN1C$qP(1}yZ0PP zU|?Y2EbxddW?<kJ0%68WckBKzFfg#BJNh~@Fl_AS{*%bcz`*Dg;1l9%Z*On!;9&3I z>fqqu;N<Gy>gV8*;NX$w<mBK40<KQ3-cBBVPTo1LPEM{Key$!tuHHc&9v&Xv;U0c5 z-rnBc;W>WZ-hO`Je&IQOX|w%u_5^vm1_cELrOgh{nG&8eJ0_threaS_#kqupgoK>l zgw|teIYntjQ_|{>rM2!!Ydx3Kx+kaiTu$%xoGEXLauSNBoGY4gy=cnAiu&G)DSIlW zoU54qu)e;czP`S`bxQr>uk~yGx7Js*&OX+<=4<Pk|E*j8_x85-E<V@0_<HY_|Gj(u z_a6H{WlHOmHP@#c`#*b1@9Zg4X0JInd&|SwTi(n*_J8)d|BDwdUcBY{;yqs%pZmXN z&%-sx{;xUrf6JQ1TaG>4vt`Ymb8q&X`?}})|2=R1A3JvJ+_7Wl&K)~<?%cVD|F54r zcm4YHhhP7{dHC?n|NmeA|A!L)|MUFY2#TJ(k|4iekTBga!va<tV+IC>m!2+;ArhB; z&%O0N6d-c^BlFp5PO(MNYBR&cb}l=7yZQR2T{;gRx%CFxP3Sx|N$1wj|M$y|-TU(F z@Wa#Zk1`&)$^Vb}gYW$}kGj{{KM1-1F34ha_*xNO>91Lhht{$!m-LsCQQ~=<V!JO+ z_4Ui2T9R^m4j=h;_+O#KufKmUyr099@NUbGqw{VT<vyNN+}<S6G=1rd!p-U})(x!_ zF6macRO&yyDqCaW<Jh{H;g;{NB!}|>Vp`5q3yw6|{8i))_1S2Uq{Z!MsGQ{3*Ob2O zppW?Oi(;+PE1q^PmaS>I#n$@%`crYi<3E1y`E$fx{*>(;{kJA;3=9kmp00i_>zopr E0H9#Rq5uE@ diff --git a/htdocs/theme/md/img/object_contract.png b/htdocs/theme/md/img/object_contract.png index a75f954555ed53222249ca6921a7df634949d1ef..6e14b35ffbbb4acc323abdfcb9ea0d37421ddb97 100644 GIT binary patch literal 134 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sg_<FiHhEy;nE3mFGzG7gq zz-d8;)T%}8JpVTyVAsfMVB!t9#we1?yuPD%!lIKrn<eZFM2uw)F6Llt?^HS@Si>JW mQOeo0Du}Ub#e@kr7&P9_mEx)wj%8qAVDNPHb6Mw<&;$U53@APT literal 359 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4rT@h290TVA2Tp8u$OrHy0TwoW)+vR<dDev z!N9=4S>O>_%)r3)0fZTy)|kv-U|?WLcl32+VA$Bt{U?!?fq|hkz$e5tDk>@{DCpk3 zd-txLyLax`xxH(zZJl#&Y0v-v|G&R~{{G&zV_UZ-CnxV+JLmuR_wS!S&(6+1wsmcG za`L&YbN+w-UYwo%{MxbS=k}i4y7b(!z4wl7-Me+^^XJcx?cICq*s-;1*S55@ynp|G z>C&ZBrcCMS>Djw=YjJUL?cZQM1_lPkk|4ie28U-i(ij*RGCW-zLpZMc9*-7kGT>o2 zAh5u9p@_t3@9ss6@9JIBFW7y{XJpWSpeVTWaf+<>4rTS)eED-pZ$EEURegPJiQ87! z6|q)-XE>b=(69NvHEYGO%x|W-*QeKf4h>yfs{HS4cMyl>)Af-IA6VyqW_{1-lXQZC Pfq}u()z4*}Q$iB}*%728 diff --git a/htdocs/theme/md/img/object_cron.png b/htdocs/theme/md/img/object_cron.png index 6186d18da70caa5acaa255752415d8136edcdc98..8a3a5091614a7b394b736de789d24c29d5228623 100644 GIT binary patch literal 284 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgJoa>P45?t8dU0!_w1Wu4 z1@W|FW^-q>d*tibwk|LXe|D+NLOG-HfkM*N#59q^yT5&wydS!mi)&fzwacaawV&Re z|NWv*+v<qv-mQ8sXCw!i?F|;b_Gs3!O$)*jMYmqt_I>YP@lB7_6yEH;%@AI*iSNNi zONMB>T|8%gsNFQycspBj!Gqb!w#|M&)b4Aqc(F6UJK$ZswI;)H-HOc9ktsFCoH5@n zE(<dkS(|j+eLBOtD)lv@?Jj$_zn{PQmDZss*U-?IOG>NW&DG6RpEF_O<Go!I_`>hz q{(QjyE#}f?(aWET)M8E6y;t1r5m(dxLyUoefx*+&&t;ucLK6T|IDXCm literal 433 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4i*LmhOLfIqZk+%BuiW)N`mv#O3D+9QW+dm z@{>{(JaZG%Q-e|yQz{EjrrIztFa~?NIEF}EW<9u9pE;4?z{C61-@{@<w>Y}GKGyd2 zNKO&p7TXx<qGTwsMvHCY3>~K=qwW^po=I*#zW>?0S6(oCqOpAMw=H{jU;o@u%p%L- z@TOee>8*!sv%hpJ3u|}J1)gQ%P7^%;?@jDjw2Qq^@5rSap(O{Fit}Gssj%_PbKb8D zepYxUCrq)>3thG2h~!e^XR5U+zO1s{OnjwU4*IbY5nJXgyY&29Z*$6yMpwo3cai4b z5)2kzbgsO{_u};T)feS&O{utlF~4$6RFQ5|g4&$<lS@y{XklcRzQ8Ci+-p^J>hyA@ zL{Ix`7yPfzmh$me`}afjcjEkx+&yPIPbdDGAkxT^yH8`{{Y&~OzT73{ivm^7nS3~C zt=P1MC)^``>pZ)&_h+0n*LPr^EZ}?j?C*|Jn>(V0@1j4I*s<+A|83oiN2U`lPFS$; noy`Kl^KwnaYU>@H8U8!ycTQw|W?Rg_z`)??>gTe~DWM4fsJpiE diff --git a/htdocs/theme/md/img/object_dir.png b/htdocs/theme/md/img/object_dir.png index 6f364389133c425747e0eaf8eb2920013a815572..fb51c4b100c90c3e1bcb801cd16e0226cd598516 100644 GIT binary patch literal 99 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgXnDFghEy;nOK=oSdT1|W z_8@?HlFFJl_I?#j60ZLziu7t(H3pvyWc$U;P<ekwSMlMy+6)W~44$rjF6*2UngF|d B9Yg>C literal 301 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4rT@h290TVA2Tp8=$E)glsFfqCYEI8=P86_ z=B6^FWajEA7?~)fy(}xzQ!p|xuuw2Eurf8ZGBQ@sHZU|Wi2b^fg@J*Ay~NYkmHh^j zgs`RL%4mg!3=9mM1s;*b3=G^tAk28_ZrvXS1_qXNM_)$<hK>E)e-c?47#O4jd_r9R z|NkEq6}5D!;{X5G{$E@A|Nqis$Br>DFns_1{kR0fZUzPh#*!evU<QY0H_{jw7<@fl z978H@rJjrAV^HK^b*yNp_%F=g%{Do6zm~?t7vc@!(J4HE!H%I@O4#f!+d2A7yL0Ja zc#ux_>b|<$Mn6(@qmJ&5N;dp1@9+BPCG#?2#uF!h_2x4$Ffe$!`njxgN@xNAD7IvR diff --git a/htdocs/theme/md/img/object_email.png b/htdocs/theme/md/img/object_email.png index d5cd141733d3b07e6d6348aaf0afecac51346718..977c4cbd8f91a5c010de1e00ed9938b64a740ced 100644 GIT binary patch literal 189 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sgw0OEWhEy=_J-0EpIY6TI zqVnEr$`8&RVm9d5+gZrVs$3y#+_Bk7WD>7a_m|nPJUu4p-C1vYbnE|fY#T2wV2OH| zJatbC+l!VZW_kzK&sHgsd?{L7tLERjxUTciifJ)_f0RwU)0@=zsr^*qx>NGu0W)l# tscq~n`rmoWK9G6JKC_d{C-42v7WHv{<(k$h<qQlA44$rjF6*2Ung9bTPsIQL literal 368 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4rT@h290TVA2Tp8u$OrHy0YJ7mla|&%m4CG zgn@y9v%n*=n1O-o0|+xZtudLwz`($g?&#~tz_78O`%fY(0|SF!fKP~Paq-fgo~=`+ z?42`b@0>ZumM%TFcI~;XTd(cid+pe<bH|R|J9qBhxpU92UAuSf+VgAI-roa(=lAZt zfByXa^XK2+gTQw%`2YX^|73Tm%?u0-QYArt!5}_X%pjt~aEpO~q2ANQF@)o~ZGR*m zvmuA`<(wsIPEr##-TA+0>Ez76jbBoFd~Wpb2$}!TA^(6ptHkAwJdtS|ukENR6zR~N zzA@|;qrv8#%bX_eTgS_~#o0os;!3z`+Wy$M#Ny9ya<_^6F{<DTd?@w!_Ql-EtDj!+ s<4u}6E5m+mfadk!Z+bH?y`RWmbeiX@Ot)tV0|Nttr>mdKI;Vst012|SoB#j- diff --git a/htdocs/theme/md/img/object_energie.png b/htdocs/theme/md/img/object_energie.png index bc3966d2fa2e83c5810278c33a37ea5fc6718d90..668d1bc68a13e0118d53a2331c13be10cd7a7933 100644 GIT binary patch literal 158 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sgq<XqIhEy;nD~PHXm?#`% zc+<sa@W;K0k42R6CQpl~<%7T$gZ2$d?1#GS8fu?=-|(%MDA}kziy`D2!>SCeeGIt_ z+LfmjTp|L+Cb&9WbY)9B)b*y(gwb_1$MO~<Hp@d@EfObK8Q$M>sBb*JZ8`%31B0il KpUXO@geCyGfHM>T literal 376 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4rT@h290TVA2Tp8u$OrHy0Ty8;1g0}ulTb+ zn1O+Tv%n*=n1O*?2!t6g-L3n>z`($g?&#~tz_78O`%fY(0|Ue40G|-o|NsBDv=kQ? zM;$x1)X-3(r=@uB-YM74P0^GPSUacX+_5QhdMv*`@7cR`&j0_%)-JXD{=Vh;wH_x! z!)xcx-MhB8rzNPmSRy-_;oi06|NoaB+uKu|o&Egz^Sygp_HK>({=Mh@^X%{MdyXAj zd+gY;y?d*VZT0&9z4-aP;;0~}rE|RAzwfCocDi?OYjL($b+K1ZPx8{GJyVi%<QNzj z7)yfuf*Bm1-AH3#V2Ji~aSW-rm7Ji!_Ttq`X@!bgH8ob33g#`FrZjy5PtWp2tCp=( zWO{t^)JbiPO<J1H6-tYe9tlkfx>Rtq<_}Yo)1iXNJ9boBR0v+%u(7y6X=mfiR?(ZD fJw6t9xEMOcSiSDfIy{qsfq}u()z4*}Q$iB}%{r%T diff --git a/htdocs/theme/md/img/object_generic.png b/htdocs/theme/md/img/object_generic.png index ccfd2d2f5b2cc8a689ef175cbece501f8084084b..7b72fee88a86fb273f9f2a9e0a54126784e2357e 100644 GIT binary patch literal 109 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sgn0UH4hEy;nE3nQ<`O(iJ zy+Qj||FRX08<f~47&Ub%oZ`?pwC;_4nTN6K;x500(4r|VN7xwpoK_hxRSdn%z`(%Z M>FVdQ&MBb@05wt}#Q*>R literal 361 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4rT@h290TVA2Tp8u$OrHy0TwoW))}RUA>)6 zgn@y9v%n*=n1O-o0|+xZtudLwz`($g?&#~tz_78O`%fY(0|P@vfKP~PP*6}*R8(?u za&d8SOG`^nPtTMoQ<g4Wx_0f_y<4{)+q?JJv18|!_MF=~=iJt%=k~6>wsp?EV_WZ? zJ9h8dxqJ8SJwLbi`Sa)RkF9-wZtMGNd*45Q{{H>@@Ar;<zjyBY^K;*yU;F<2-uL(S zzQ2F||NZm--{1fL{{8>|@Bjb*56g7k%fP_ER1)MD{GZ|Jb^|X428J|G7sn8e>%PY$ z`I;3(7#!wthq=0TbL%;FJh}V7O*N|Jr!<p7UV-wu4vVRpzD|Kpn%wSgYMK-fUB78X z#&WG!sn;H^HC=9XEMRTl-tSwF`EJ`cy)0TPe({o+w14l*Us$B~*sAI`$g6a6zn@gh SJdJ^Yfx*+&&t;ucLK6T<nXCN( diff --git a/htdocs/theme/md/img/object_globe.png b/htdocs/theme/md/img/object_globe.png index aae8bf6eba03015d44032e7fafb2450c05a19dda..4c4a2e48c29043e83face284e3c33a7469578774 100644 GIT binary patch literal 305 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sg{P1*f45?t8dg1h`ph6MW z5BD`PW=)^vE;!5ceUez<`Gw0pp9?N>>+<w?YM{ZP#8K5c%i^rJT~pPbH~Ehq@ZX>L zBl<FH_U71i?`HZeTfORvtZ;Rq-^0C9OKx2=v*U`d5mnnZZI;mXwSO;9vEH@(;ghM; zT2rllA9Q0jwm+a>e{qv3(~6tjpEN=mmmiYexzb?5>E0IqqWo5M2emr~ydUcA(6>46 zyU;(XDlqC*?0jjj=l3{e7pxL^K1W7o&ZNWI49U{IXa2D4|Lb`Bnn1&@sjcpD)>RJ{ zPN;mde`lA==~L%IemvX#Au@3t<H}uypRUYp><TiCt+kci9`lN8&bOLavE|k(3=9km Mp00i_>zopr0Qdxmd;kCd literal 366 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4mJh`26+$Niwq2mrk*a2AsXjPFL`@21xg(I z=zQ^<(%VBBY_6`ZVI{LqO*)}8by0V#;F3TAwU!;+QCmM5Zz;OEEdS>JxpIo?X&<94 z=6$c~D~>zfdSpYFwMjukXZ>?0`As_xa7X=clg|IJnCW}S!A<dt+hopt>?jX?&lz*! zps$Q_Bh$2v%kH;V94j*~kV)Mdc|`A7=*fSxUE{8vyK-|$@O$+gM`l=gENT)A-Mm0n zcdbOp!f$OKmax2zxcG1h)7tJWlWwgEe|P@F?-${dcym^UMqgWNb?O0!>T+gP-u*3( zx+nP4e)^_(vQIdaZLmCQMJC(sHrF{xexjdOJ$qU8=1jqNE1hED!ZRymv&+4%PYm4s zE!XM~Lte<ucds11SHI}v=F)MuwT#dIA{@Wsk@M-zXTQ0!&bpXzH*R@fb*}AI;TCzx YH5(qp?KoJ>z`(%Z>FVdQ&MBb@0Qz00GXMYp diff --git a/htdocs/theme/md/img/object_group.png b/htdocs/theme/md/img/object_group.png index be0255f7ec2679667491349672d653bfaea6ab89..cc204fdcaf1f376df619bf444699ec4123df7d9b 100644 GIT binary patch literal 170 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sg6neTihEy<KJ!Qzp7%0K; z@Vwv-ac`AH0o}<NF|C_Bn%`9KmSwLnlfL=q<m!?$Cc!=P)0DlXHe7wZCNw2=1MA-# zk*-|9=4C+_GuWrkKR0RW`$&tOJNe^e&lYm<ev9+^keU9>(A3BK&W;whz|)pr_J3k4 Ykn<?s^|k8~0|Nttr>mdKI;Vst0Q*isLI3~& literal 655 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4mJh`26+$Niwq15Y)RhkE)4%caKYZ?lNlHo zI14-?iy0WWg+Z8+Vb&Z81_lQ95>H=O_WN9tV$wRNBWgk!7?@-{T^vI+&X-QI&kjzM zX`TOl@AV}D|Cd}j*`T>LY0ZKrdB<|`^6=JkR%vfiUcLw@C|()ApgHf6+AD=T-iXCF z?%XkXyZ7Yp_uq@X3NLJyn|HXenCHN?Yu8S_dX=^RZl1l+#5EdS;g?@-*}rq=%OCxp z=FXkF=l0uu8QX97zuv{R;POkG@T=YjF8^;#%g=wGwE3panyr;yoS~{qTRJ|xyL)^3 zT)*duUXys)n!^u2+^~QD{`U+;@BaoZzIY<Jr-MVusb}KD5A5dVRsN?uI~Uy9S^azG zsySOXTz**+7kag`V?vP9F^`_cq97wJu05Z3{G9W?{eEP8d^OV?_6?z-mZ5()Gz59g znHRP~>zw7B?-lPq-b-AQx^wRywuJV>i5-Uf_!S?_S-dX$lTCVvh@;BGy@#v)IT{~7 zPCn)NQ~E$&e*WnSn>tyiAA(K?qPh*!<eV$yYYteS&oNu9qb{;IiR};5iQj+g&PP?p zhR!u)YnXB=ar4HKi1W`vu5zBUj9M%9c+(y0+Z%7c-6uFvTj>&8K<Fl&-P`tU+xF?} z?dvb*oZhUX>^igl-<PL1nYOH|;*Jm#WL8k>aZ~p5^PevI$(8&4-^BIhkK^9E<uji+ z^X}a`y`a9nJ_#N^522Omrrn(kYtA~9PD#D_{^p&(XF|6!`Se_rlaZM-+voU9L$*-Y zuR6jLTMVBSdA%&!T$y)Rr-%Lf`}JG&w%D0XmkR&S_U~tK@(<?UkK<|{e60&$U|?YI MboFyt=akR{02DMg@Bjb+ diff --git a/htdocs/theme/md/img/object_holiday.png b/htdocs/theme/md/img/object_holiday.png index fdc1dd8e22ba4d7780de2fa6aaf8be3d130e2d28..7f11fe166b8aba21f0c5a7a6c191a5d58a119497 100644 GIT binary patch literal 251 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sg9P)H=45?t;+P~G2#ZkmT z{+*`ngLizj3s@ga%Vn=%o$bsqCwtpPv5hw~nP1z9-`ne%_H2KCNr$1{gp(i6OS_jS zCUJ#+xez!*^_X#`%C;HLxvpL{X<HonDR03UyVyAw7Mye|nWh!A;-dIppG|V}-O{y< z&hs-FS$&>jdo)jFg5&cp+xW<3+>P}mA-jHTnX3A)LUgP7?n9h^Yc@Mh|0}jdIXcUr z(>Hr9_tCs9a=$9Yw?=Nc;TBu7pxD19@lnagGZwi=8G>E~Z<INdeTjjAfx*+&&t;uc GLK6TA=4lE5 literal 771 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!toPI<aGhFF~LomA~{IZ))d zYL&oD-^*Sv`A>$JbY4A`@-yPH&xK1||7SR^ZIPKZ>GW}z=>5LWvmY(9{Or1N$CaIy zW^+DY%wL(pwbH)5^XBVtO^vDNE=FIvJhwx@?$v?zYQFDv=O5q8PW{TCeZGH^$f>Qb zuJOsNzWV5mkm$Jsg?B0^_%GH-=C{t*kQ2HjDeA<Rvf_9`TAA3SE9)KZ{g$%&-Me5) z(ZU~ll&fPu9>|qiYJGRQNS8Oq;T@7{XSxG2V<Mv5dzb^xb2sy@mOiRDY1V4Fh`{9S zFAv{g>Zy%tSy#?r|6Ke)g*{_Y(dUz;M_v3BLJu#Uyy(@pj#b+P4QhY$wr%&Y*vb&> zB7NoKdWV@z;p=BFP}iO!V2~@Zr^xnW#u=W)mp@;yvEqL`dGm*mV~uQU8JF-|U!PaM z#f0nh-hzgniCKngIvGBF)}O#%-_G`!U!nTd!f$bkQ?z-Pone1F<?7n!Y{6SKeT=kb zImb;ZVfgn++oZpyagLsG3GaSJ(d*(~rhgSyT}#$hx+(iD+0k|F64&5j%RmJ+CgD_p zz%MLQj_{c9oj=I?)_uqA?55|dY&_C#IY&9Fehd#SoFS{~(PdoHC8V@;Q|F2BElz9C zG01F`IVbwvaZ{dDkMsEjbB;G1`5__DYPDuwt-<B_x8^+X{UmATUCb)_V&<f7ztBj< zZTd^DGdmpZXArZ#b*9_q)Nv;nsf!c$a#$bfTgozbrJW1g;kL#*x*XLl+J}T6F7xFS z5Odk}CI0ihl|ELf=87D}M#q1??{lmEEpU4cn=8+no~KHVji!fWAGTVweE3j&w=|~w zbo!;cb;i6$*>zcV=klk^Zu}OL882A>rq)|4cCr8W({d-Qb6+ND9}?Rbf7mu~Zs9S{ zZFhRvllYS^&w4*!_NCX_?!|Yne0-5rd&{#lK8@j;i1*f-@Y8!O^wj^=uTH7n`19eq h^ohGG7Z=wvST2t<XKz%z#lXP8;OXk;vd$@?2>|4*V7~wW diff --git a/htdocs/theme/md/img/object_intervention.png b/htdocs/theme/md/img/object_intervention.png index 7bb7ef583b465f156837d8900d29c41e636c0533..148928d397d562a0d193a81e4c28c830410d6e9a 100644 GIT binary patch literal 270 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgT=jHu45?t;dU|P+XaYmS z#pd1Bixc`AcB^UZ*vraUuDfHm%AJLd%+I6?-@V&cpIWr`-sJuMlX^B?SGKP$xTM6n zHcUa|tM@8D+dOIAV`8$K*0TDP2X3G5)?pCbyI-wii+_PnOYklo29{z*eG|97$bEv+ zk!m;C9CjCTE;4L#Hn<h;D6r)ghtwTo-k!Jpzcz<SGZfndrm|1t-gasJ-i>ifRHr?j z>h`$P<e1AuKCZrwk0<M2^D-L8UVOa!VbYpO>KdP;+w|_PlT>XCEUSL8yu5FwK4%pp Yo4@0FcKz9!3=9kmp00i_>zopr00s_eumAu6 literal 340 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`7G?$phPP=3j~Eyj^h#VKN}P*Q6H7Al^Atid zb5j|zQcLv|3{4ag%Zl_Aj0_A+6^sn5OpUD!j1;sD3=Ir)@_WBAFfg!}c>21sUu6*$ zGZJj(?iFBQVBjq9h%9Dc;Q9c<j81DzW-u@?u%tWsIx;Y9?C1WI$jZRLU=ZLF;%aMa z8x<9moSdAUon2g9TwPr~VZww33l^+hyLRi=t$X+GJ$CHaxpU`El{-9t{`~*{|8w;1 zJ~A*c2$Tf*1^-6{3=foJB^ekP0zF+ELn>}1|KMlj*^wbGF3u?McJuQuAFEP+omu<% z%=^YKH+R2%Rrp_W&-pud)&(x&6tOSf^X`r^Tkp0vxu(lJdGwYkF4NPq<EeK_{#Vca bo1Z}?(xto2`$sba0|SGntDnm{r-UW|d0K;r diff --git a/htdocs/theme/md/img/object_invoice.png b/htdocs/theme/md/img/object_invoice.png index b4022e77740bb96770f8fee065c58284e3518c45..19d4be8371db14278febf70be41acb3963dd7d0f 100644 GIT binary patch literal 146 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgM0&b7hEy;nE3mFGzG7f< zAd#uem0$AT;fL&P^$x8O2kKQS8WcH~^h{7<>o8*KN;p-Zz3adOhBoeooD$a=6PR2* y7`88BW0BFiW_x7S6S;Luni{V1XsM`}G0gwjTk<Zo>ofxc1B0ilpUXO@geCw4G%!v8 literal 394 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4rT@h290TVA2Tp8u$OrHy0TwoW)+vzwS529 zje&uIv%n*=n1O-o0|+xZtudLwz`($g?&#~tz_78O`%fY(0|P^EfKP~PR8&+@P|&q= z=dPXGdu;2{rE_|gPHEXYr{&n3mV5W^eSiP{+_9}wdaCD4sh-kPymx8Oxuq@7?_KL@ zDPB9LXY0}_&yTG=x3*{R*0t}i?LD`4%CWs$-`_iSZtI-)@82(-Gv(g7z2~+r{r~^} zoH;$$_HLasrRDqg@6Vs#yLRndPftrvPfu}iadvjLlatfAbLZyFnR9FI@l*x|2F8*g zzhDN3XE)Lq7#NB@T^vI=uKS+4E!1Sd<9ab5$J8uNZLyof(F*o0|NmFoIdK2ZJ!{F( z(4iraz!CcOPUeh&+w<FUQZAR>pLqUyv|Z=1ON*y?ESVkiMDC?$O>8W?-prY~rL!){ zc9%SxyZ(Foj;cjht2V#Q^s(D~?yR`&W|0H(=VLhc3iT-DGB7YOc)I$ztaD0e0sv|O Bxz_*y diff --git a/htdocs/theme/md/img/object_label.png b/htdocs/theme/md/img/object_label.png index b112af5cf0afc02fc7c8f00999205ed0a8d8b603..faa4774a5cb33366af150a4331b3a0c05c8ac5b4 100644 GIT binary patch literal 158 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sgq<XqIhEy;nOGqS~dC<TX zdU2|W(VycD^^!G#qHo!`k`7(x5jxSu*T8D{kdMvH$90Cmd<j>3i4sojU*{G$M+C|x zzTPIt*A&k4=tS46jT%1>KWLSER>foHkip$j=8(bP;>E+v%HY1K!GAyBFDC{D1_n=8 KKbLh*2~7Z+;xr2Y literal 769 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!toPI$UFhFJLLPWJZ~c9b|a zU7|-kZ&roDL>K!8cK$e<LKC;eYHCGa9|i7js^bwB?sZfW`z3yBsV?_l=jdCyxtR;s ziU>t{bx+y0+j@6yx%~Z`3p}2Dcry3Qncvm(E7RQ!c$_78*bZfwDDk#Fyr96lep24$ zKhCk&=Nm1He_XvoBAMyzO(q47^oByO9o{GVd7Aec^ZZ@BZnH+_e8aCUfm5#6Px{AP zpyjykd(~a8T(;@UG|Qe`D&<|ZYS!Pn`l!oWPBX@A`O&2HvL}<}!hy#-B{F)O<BE=p zGo-{CxGzhXwQPaLtLo6FqLLL)6nvAn%~-a0{R+0Tdmpj>FEzOLvPACsZ1;0TYs1!= z&)RbH2lvCk;L@%bp4vqdW^2AX!uH{vaH)~%=}=8MXA2?6-G8~YLf@~}3cY&b-%gXF zORvBFoH%d3Y~qprf~B`#-{)WFrQ0vzV5GcwxfV;nf(hKQ<{r#mAr}<dmoLA|TJ-M# zo4`vytKFKr{wn?clY8yY!?H)aiy3FuG`?A7k+nVGhMr@W+rzk+CVd5`bI)gAxu9<L zU`cURzUj8OIIgw_A9lP+3FJz?_qtUg?%*aB#ZB`z#Hv2kNjfQ_wR^YStAo1I4z@F6 z{8MWh10)<XMftXK7e7&&crGD(InU031+NS%Tm|#?-)D0Z_B5Hb)>1lQ<}?Et9`#E_ z*Iq{P9C*#0;K`HJs?)w=;liyPNh?Ln%!*G;-?lOMZ)eiZroGL-X7L)l{M&qwK_^>B z`MKTMGiMGOzHbxpUJ$WTDO^V}`o<x*GGR?Cr?S-@CI?q--TTy-on-@C$#Unq^~pz* zULKylesjqb*Ikz+ZuSf7^odFx4}O_fS$@Cxid~)a`p?f?8BT7>=?J)eyWaYB!NJGz z%Z^lNhijZO=i^`gGW_0#jM|igb@tPle(Zk0z4qJ3D~@|V_Uy7v44UsVxxPGD;$nrv f#Cpbk@6A_qxJ=c3tdYmSz`)??>gTe~DWM4fBe-F^ diff --git a/htdocs/theme/md/img/object_list.png b/htdocs/theme/md/img/object_list.png index 1ceb098d9cc3e9a75d8125cab0a63e79aed51d7c..f5df34a3bc9f8393c23f35e25fb7b18b4b51654b 100644 GIT binary patch literal 83 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgNO`(AhEy;nOWaCe5@<TX lEK$G|*yXlXdJ6-?o2O=s!5(k&7#J8BJYD@<);T3K0RY;h6w&|y literal 179 zcmeAS@N?(olHy`uVBq!ia0y~yVBle3VBltAW?*12lWRG{z`(#*9OUlAu<o49OOR}U zPl)TXWy_|`dU5sY)&KwhTm5ro0x3%Jc6VXuV3qY?U|`@Z@Q5sCVBq=y!i-L9OlB}J zFtC?+`ns~;U=|UPW9nwQy_A80LBZ3-F@)oKG6yej>WcsW*?U%pt!2D?H9+dv`KYZ; cj2sLPzKirnzY+h!z`(%Z>FVdQ&MBb@0G+-yng9R* diff --git a/htdocs/theme/md/img/object_margin.png b/htdocs/theme/md/img/object_margin.png index cd0eb4109f7768afd725ee12fc5213b3d4c31adb..b8ad5b5cc2460224ca85ccaed177b9ffc9f9ae03 100644 GIT binary patch literal 92 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgD0{j%hEy;nOGI2a@IjtK u`o;Paj4Yg*zxbP$Xf<*2>brhnX9#}hSI=naAk4tPz~JfX=d#Wzp$P!ZVHe2& literal 571 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!tom^@t^Lo80WUh>Sp<siY9 zQ0G<8Rln$a+@;|4Q(r857NDscI^E=zkmF`W$4C*68<Tb%R8-q~BPrR3C-;n$`jH&Y zrEfpJz0n&enrL)s^+ub2a@EJ?A1yN7vzxV#<$r55kIKt_J1dWM>02u_&b{hNUwclW z_;gWihO6jPp{Z%?uM%1=zZ0n0$r!gPvGzBE;w$Mtw{`CAT(skRirlgTZe30t3kCc( z-Z=aDMA$72)2d&yF8%LSy)Tw`{>C!qPG$K{aqA}Ojen%<e!iXY`vb?*$!0m{=bAIS zWfTgZT>L>oVAb&rdw<x--VmR4<MC?`(dY%6+JDSC-RHQowy|A*`ZDI(C47}Tx!2ut zUTCNA(pll*6TYlh`Zjf2llVf;yGML<SKOv2*rBedX<r%;<ffr^X~M~0m$&N`FSz)3 zvG^2!_v8Z%Gh1E%SV%v*`CH$--f^X=%ZzgiZv5G<nyYQtc6ob7`I_0xx1@WR@>|&A zU%!5^@Xp~Z1-6x@2W&D`f)~^jEfmjamsk?<q|e%F#?N)HHhV~&5?pY$F=#QrTZTfc z<#om6w57&6zZVH)$?kak^5lUmmEN_?j7>gK+x_YmuTgToWf2;5po7b1;*vW3E&6_J zVt1~*xyzoPG3nM{OLog#{%cOvH$0wfI6N(2#VUc<vNz@)JbB=&qk{HH*-3^zO_H~> fc_Yl`{pQ}8;<x?cKe==U1_lOCS3j3^P6<r_r{M(i diff --git a/htdocs/theme/md/img/object_opensurvey.png b/htdocs/theme/md/img/object_opensurvey.png index b5de3223bd4944e9ba35075c3c6a0052731a12d2..d1f88f3c794510b47ac4b97f7d6568c3b6e24b04 100644 GIT binary patch literal 103 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sg=y|$0hEy;nD~QcW`O(il zuR-Hizx<^zL4gbIf&vqkad5Et3I1LDlqF8pz0;?FVJ7b#SF4LoCJYP=44$rjF6*2U FngA8&9M1p% literal 743 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4mJh`26+$Niwq1*>pWc?Lp09&PKx#jE|fWb zKHK(PCV!c8M~jkC_m_ilO{}p~F5I{>XYFahQyn#ebKBA)^&L~9lB6DrYI}8`y<K?j z?Cm`%i+rD-)628AzTG!_TdLT+{QtU}>prx~|G)qJ^Y6d^J}f>o(Lj`!;mW4ls*xo+ z7tQ)7C))DqX{|ne>`e68EmzZ~9%!9$UHn7f?Fon9PU*d2w>kA!l**nnNBWMhyx}<| zU_R&8b!^UJ!n+Sdr3Aj;?>Wc&Ti(9>w=S!>3cscwU9wHaaHq0(pse!G#&F4`tly<u z>MyR-y|FEU|M|ootF#+a_(b`(#|Ze>?`Zk5E+?htl+&@}I#0gdap*5*IeOUi(aG&5 zU%b`Kc9}hWF#YB4$6GyeER~;SY;ydb^4M&#%fkbycO(N2JxCJh)eCEPKKuOWr;X_| z($AVajs9q~>Yd4*H`BXYnYE_8STDFTV99C6&oQMuo7NX;$mlrMy>|^<>DzucIawpV z<8el=(kkDgOM9hz_6mzusme*MSNLSy^M1csfca-B*1eG{=1q9KN{!QR{oL-x?N$8? zO3nEDCTN-^-dTHa&wYW@={3bi=Cpa$8qM>cqr}^H=%{c2$IqFc78X}5xUX;Kclu#> z#7Faexh^N{KL;%BcW=$pmy_h{N<H%W*<7BZ+%k7}Msz>gXAyYT<D$h{2KjAA4w!wG z7Rgw$LZ;`q?INW|mHF!$&!#TbbmZ`O!)W}wB&P9F9n*L3iw09WJ<oO2<Z|6ik)J8X zZ@SV}GWfuuvzzpa5;rmnG-+>IfA8YfUn^shZm3TC=6&?kLXj0SZFii0Bj$Y~T6X2x zUA@_I=X9I@?tjfGbYpK)V*6a*6|+MYoSNWLBBSq-S7LJTrTJ!?_fr+Ou;wNeON+5M z3Pn78`5>!7Fs#y#Ly)zy?R#~`yyvPJKbY74k62#E?3N(g=_;CK&%nUI;OXk;vd$@? F2>@oFV5R^7 diff --git a/htdocs/theme/md/img/object_order.png b/htdocs/theme/md/img/object_order.png index 20a1ddb6131aaa940f8ca6e16b1ab2051d95535e..19d4be8371db14278febf70be41acb3963dd7d0f 100644 GIT binary patch literal 146 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgM0&b7hEy;nE3mFGzG7f< zAd#uem0$AT;fL&P^$x8O2kKQS8WcH~^h{7<>o8*KN;p-Zz3adOhBoeooD$a=6PR2* y7`88BW0BFiW_x7S6S;Luni{V1XsM`}G0gwjTk<Zo>ofxc1B0ilpUXO@geCw4G%!v8 literal 357 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4rT@h290TVA2Tp8u$OrHy0TwoW);&DlJnuJ zU|?Y2EbxddW?<m@0K$w;YfNS^Ffg#BJNh~@Fl_AS{*%bcz`#%x;1l8+6ciK{6_uQv zTwGk-($dn?($dq@GiAz@rAwEtUAuPg)~(03u06JQ>#@Cij~zR9ZfVcCt#i(8U3zZs z+H-rio;$Yp+SWPOj_tj6?%2I!TkoAacJJD`d-v`=KezY!wPVkpKYxGk+WY6v-@kwV z{r&U*-{1fL{{8>||1MnIstgPaOeH~n!T%YaZa45^U|`7bba4#fxbAyAP^?KofWcwg zwWXU5iNtBLa=rPxe#UvGnfnD9%9y1$PMdl6sRn=b%}G;3#cez{n%_MiF?I6p(B4Ej z@5`Gr*S){w5p`MHob`)*&68s@+ZuP>d0?89{crBEdlE~ptY5_NgGu28cg`I9ctHjR O1_n=8KbLh*2~7ahg``pd diff --git a/htdocs/theme/md/img/object_payment.png b/htdocs/theme/md/img/object_payment.png index 5691147d8ffc7e161001fe58d28bd306815f779a..96eaf71df1e2ec5c3450fc491c5cc8eb355a6759 100644 GIT binary patch literal 221 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgEb(-445?t;ddXg!p^%~d zqkoKBYVt<UlPSiP%+rl3+25SXntbsQuZEA&sW#V{IrkbK<^|+Utbh5M_0Ib|h50`v z<@XE!tWLSx+hM(xF?vz)t0UbvLcTmX%@iTl-(^>###sGLG`7<_TdikCvF@VMjC&oS z?ol6CnXTIN_V#8?+wOC+3_HZVtJ3!T-omuZG%4)hx{Bh5KFWQ(Hwv^L9qfDcUti(_ Z^EpL}TB|yr2@DJj44$rjF6*2Ung9azTNVHS literal 339 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4rT@h290TVA2Tp8Ob+k~asB`Q|Gj(n)~?-p z?%cVpTer?xI_LTG=f{qnTe@^>&zzPiOQ*E-^tAM}OqtTNbm`KqTle;WKub?c%aooe z|Nj5KcJJEOt!wAZnbOlzU7ej>U0l6%>Dpt*j_qAqeQs~h(m8YXu3frz&Xl!F*Pc6e z?bz0qwNrw&&I#JPw)ouMmc46}?;R_?c5KSMb8ELQO+L0Y`Pka(d&lNT>~ASzU|?V@ z3GxeOaCmkjje&t7&(p;*gyVYaxs7~`juNg9iw$;*EQ;{jn{@xbrHR+lNeUBnc0Ug9 z@XWaL&O5L0N%p^F>vw6l4}IHZFmE@%c}5S{>#bGuR_&NxrFxG$*T(et(k^zx)SjKE x)=uv7`C%7-WQw};EA1zS9g7rN{`x=Ro~SO%uX*I%BL)Tr22WQ%mvv4FO#pBLt5W~~ diff --git a/htdocs/theme/md/img/object_phoning.png b/htdocs/theme/md/img/object_phoning.png index 23a4e0b1dbbc3749b03c45864b52f7d12f907520..0bfd66d818ed353dae9362de2760565767aa02af 100644 GIT binary patch literal 200 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sg^n1EEhEy;nFEG+bvtVec zmMr<8dF$v0d7j{pno*3QS6ci7nL{qd)pX72Fzjr7$Qt0O&a7Pb|0<)Xq#zedUE6b> zbjcf>nx9!`ZEa}moUkcs!KT)P%My~iB)=JMF<P>iRX<{t)QUGu&6<Z*6nfPIY9!_{ zE*1E|Q0DzpB1>YPvdBYj^Xh~JI?Ts1?Mj1%7>u*bKfV@Q*u=oVz~JfX=d#Wzp$P!? C7DU7V literal 577 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s77>k44ofy`glX=O&z`&N| z?e4<x9|RZdT|SwCfq}EYBeIx*fm;}a85w5Hkzin8U@!6Xb!ETDBPXP1dilTtX9fnw zgPtyqAr_~5gEn>rJBrw*e^Q9tdW*xcJ3;wIYMPw3<AhwDmcPv2($jOV9rE8GkaH)= zG)X_Ku2CaN^UUn)yEnv|DVQ~>eYhtx`=pTA(el*~@9lhkulSu~<TM6`=XX@!{}p41 z$i8UG!H^nxZ;A<X!<0*tC6ZIuy7qkh&v0(1wu=3vJB$pTzPGn+f3?f*<)%i%V>Ze= z7t5%0FVe8<IsVvBgr~us;egB}mIucQEWXTTP}zGve{ExsSO4l&T=#zaN$)v(NAqR4 zSLXIrtCZi{I&sWp*yr)fO^BgRI{Dn1t#fBF9%vD$W2j(vP-)j(+I%(ZXm{NYaoNfF z|6?vGWfxdT@We4$d_Op=ulU`$604(X7T1rSOfk~zQcAN`dHJ<yr_GD+zq<?%S(az? zR5Cu;k~yooG<JSOcHzFP9>IIRYZ;EK^s0DR86A_^o?E^4`s><rb_<uNEiJJ=7Ew4k znS=4(@7hW0uT^^9XUt*T;UgriFkj{E%&*7q^avbUlPRVBQir?R)ckc*9n*n(X=!%z z4@Y(HS|`5v;tSrBVh2hm-L5qF^kuz@e4BvSpWB&czEAevXDgWggxT{u;~5p(wX0sG dM^5{}%xCl7C413#X$A%c22WQ%mvv4FO#u1h^RWN` diff --git a/htdocs/theme/md/img/object_printer.png b/htdocs/theme/md/img/object_printer.png index 8722632547c5b7179d68c6e3e670131c72c80bd3..6e8bcbf98a57f1c6e80aa31b21e15677e3796778 100644 GIT binary patch delta 139 zcmZ3%w48B*N`0QEi(^OyWAXw<j|7VbHemx%Q-eS5&AcgEK?wy8&0Hrg`S1iw?qe)X zI`rN_QmtbVhl05Dp0fu09&OGdSChk8LKg9;yxwRbIsLP=024<?w4jiKh7;dwc8M;z tgtlttRZ4Rd`(%m@Tw9c9ykcO`+uD#jW%`O&3=9kmp00i_EbE*SngFd=E}H-V delta 269 zcmZ3^xPobdN<Cw7kh>GZx^prw85kItlDyqr82-2SpV`mAz`$AH5n0T@z%2~Ij105p zNH8!ku$OrHy0YJAl@pNUxR<VZhk=1%ji-xah{pM~6E^Z5G7xZ$Ut{9qXtg4raan^^ zrm`XPvIM58Cw-<#7pt2@61laU5}jmDPt+*7di`(x_y6^>I-xfimMrP9c-+JObA9NB zZkMwRSM19ks~P*%t>!lBeB^ahYvZG%y^E{0A2`gNvgOXoo4<W#&(z@8J8-RglVqUl z>zg%~?AU)y*~M2-bwsGsN+)1L-<x?Q50x1%UTWuh>8k#AiD&$RrvJA%lhxh0ud<uX YQ@CF+W${i11_lOCS2jPFbxsLQ0C+%a;s5{u diff --git a/htdocs/theme/md/img/object_product.png b/htdocs/theme/md/img/object_product.png index 79910e5e214f7cda81bc1e7a1e9e2d45a05eb813..695352538d934ef7366d58a08183d55c558aec5a 100644 GIT binary patch literal 150 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sg#Cp0ohEy;nFVM<JxpBUL z!J6fiNy8Kg<3H&Zr#G;(+i*`YO-d+W2;#GN({L(DYgR+bOh!Fd_J$gXk_B6p4&@zU zVP3=`q$^%<>@MqqHHsdkyod8*3fZTuT$C2Y#E_DgnGwr8JAi?Kfx*+&&t;ucLK6Ue C7B02` literal 559 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4rT@h290TVA2Tp8u$OrHy0TwoVie<0w(~P@ zWME+6EbxddW?<m@0K$w;YfNS^Ffg#BJNh~@Fl_AS{*%bcz`!UK;1lA?z`(%D%*@Kl z%+0|n$i*(m%Pt|vB_YBkC(NUzB;aT$>7gg%Z*LlIryK2Q8R_es=wlrh;Fc5SP?4Zl zoa$T`Zcv`#-;!X|m}*;};a-&&)0l1BTj<zX7TQ@6+FqU5UYj^I*Rr#zytg5FN>kLV z$!#m<PT1Vxx~b3a;{Jt)Hdh?kQFrRlg!9K|@0#ScYpUCx89w`F2JM>{bYOnOfh7@# zm&YDn6?=4T^2v?)7q&MYU7vh>Q|8I7`4@IKo!p*(W_Q`SeKi;MH{Cux|IGffa|dhA z9j&==qUq9!j;m*S?_FK?;KrJ_PtRXC-E`?p$MuVoZ(o~#@8+_XPY!>2cjxMr-s{&U z-@GyN_O1E%?k;=!Wc%~ydtbgh{Pykn4<D|5{rXT?Z)Y0=0|R48kY6x^!?PP{3=9n2 zo-U3d9M_W*7?}0E1=&~v%087$Z!2suZC+GblbfPoQ~CaegTAhHcCxEM_%$OdqdT|m z1UScv9GPmo;luaMW~Nsz3$tsRnVFRvnwyyzFcdF+larIPrtv_G(2=JXix`>GtE;OG zH$?uqwQt|Mckl9UISH)(QR?LETry=xBHzR7UqhZc7OC3XGn+9m%uf?d`cvESm4ShQ N!PC{xWt~$(695OA^Nauh diff --git a/htdocs/theme/md/img/object_project.png b/htdocs/theme/md/img/object_project.png index fd84ab427dbd736dfd5be112faf87c9d7d2896d8..76139922af1f9fb5ac1f63c43fc79e2d3bfe8cfe 100644 GIT binary patch literal 158 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sgq<XqIhEy;nA7Hq}W5vUA zfT``jgN69)DSC&~+L#?GSXL}(UnuV($M)G=c_!DBKkbeSCUtu3@#S!3Z-{yGfnnDo zCN_4J2#2Oc3sdhhd5H*a%QN<Kl@{zOX(%jV5N4X1VHhCFz_91UjGztf{+}2a7#KWV L{an^LB{Ts56e2O| literal 926 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4rT@h290TVA2Tp8u$OrHy0YJ55*08PY<cc9 ziGhKEv%n*=n1O-o0|+xZtudLwz`($g?&#~tz_78O`%fY(0|VpT0G|+71_lN$E<Oeh zX>J~2UVbq?0SN&?aZxc@1`b7LZZ!rjEk<rFMqX`ZUM&`0Ek$KLWmN-FT|YG~C!gSI zR@Dw}txis@9v<yZUY#yJoo;@;9s&JcLH#~KgFbPqE>?pr0v21vY_<y9?G&&%tmwbr z$Y+7H^HC|6;|gA<l|rr>M;y0^I%b@F-5~A0UglHh(0MMQa~-3%#wEAM=S&Gq-{zcg zF|7PZWYq!xnn%SAt1H_!R=4c(Y`GfNeKm68?dZw3Vy4`2Z+Y+E|1qHJWBi0CnX~R@ z&wQ7&;C|NP@3~8U<gWi)xAI}-+D}b=+q<UjYnywnXYzpwGY(Fkb#&U?6Vv9OZdrJ% zedYZr3y#lSac;u8yYrS^Xk7EKW#xmGwU7GOK5AM2wPnMrwq1WZcYf*E^JmKXN0axy zn6mHv+-*-6tvI`E{f#9XuB_O6b@%SGOLjlnu=`Q_fxj~j{+xB@_wEC?_Z_;w;OOhc z$KS6y@O1fw-^;K5TXXHp*0Zm7oq4nC%-bCo-)+43VfVEUTOa@3{p8>Nr+<zdy?XBa zonxmS9XRvm+|^fSZ+^OP`NfSJPj20Ld*;orn@@jU{qq0jkN;1eynXWi?~4~--@g0) z?%kJHZ+|}f{qN29{~td5{Qmv-$KU_|{{8p=|9=Js23J>QVaAw)3=9l&OM?7@{|{oo zaQe?49|i`7*`6+rAsp9}XEZZOD1@Xt2nd-QEZ%A?ab|1bhRt8~U(GXIc|+<*>3W@$ zx$|vIZB?)E9NFsMtFwAtr?<za!a&BN*zDD>UVB~swAaQar18#;%+Jrxer8}6FyB=l z_t1uep>Xf-XH(C2mlrc@F%~ALF&?$Pb?ez#ZbO!$!)fQ|*%qH_SvT#OjIhFW8*6K8 pZKXTsub;XkbHtUY_!$Gkw0}`wt==*6GcYhPc)I$ztaD0e0swc=8Z-a^ diff --git a/htdocs/theme/md/img/object_projectpub.png b/htdocs/theme/md/img/object_projectpub.png index 1444573cf05c248eaad1c94fa6ad2cedcd7a78d8..76139922af1f9fb5ac1f63c43fc79e2d3bfe8cfe 100644 GIT binary patch literal 158 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sgq<XqIhEy;nA7Hq}W5vUA zfT``jgN69)DSC&~+L#?GSXL}(UnuV($M)G=c_!DBKkbeSCUtu3@#S!3Z-{yGfnnDo zCN_4J2#2Oc3sdhhd5H*a%QN<Kl@{zOX(%jV5N4X1VHhCFz_91UjGztf{+}2a7#KWV L{an^LB{Ts56e2O| literal 929 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4rT@h290TVA2Tp8u$OrHy0YJ7m*JJ+iZA$* zz`(%3S>O>_%)r3)0fZTy)|kv-U|?WLcl32+VA$Bt{U?!?fr0UQfKP}k0|NsW7as$M zG&hehFTWU{fP{dcxTu&c1BW6rw;BVN79+P7Bd<0yuNDihmZGwrvZ{fouAiEglTUCp zt7-?gRwt)c507>yuTB@APB*_^kAQx!pnjjAL7%u)7puV*0gJ6-Hd}@5b_&=WR`lO* z<g-B9`KXl3aRsl_N+DN`BaT}{9Wze8Zjg3gFY~E$=scIuxsK6W<C5FsbEX8QZ*$JL z7*>8Hvg&|;&7<Om)s<}<t6O$?wp<PCz8X34cJ$<1F;niix4if7{}|BqF@D06%vpD{ zXTHl>a6fDD_uM5va@YT@TluhZ?Wd-`?Ojv%waq=(Gx@-T83!lNIy!CciD~msw=BHX zzViN*1;^*EI5%P4-FeF{G_HBrvhqR8+DH9sAGNIi+OpwQ+pa&IJHK@7`7>qxqse<; zOxgE-?zX3kR-9e7{>G9GS5|Dkx_kH8CA%MO*!`&ez~31Mf6hAdd-s9c`wrb-aP;-! z<L_4;c)I+;@8wtjt-1DP>)F@4&b--m=IxG)?>1iiu>0DFt&jiie)4bs(?3U!UOjjI z&aqRE4xD*&?&_<vH$Ppt{Nl!qC%5jrJ@e+*&8I)Fe))g%$Nwi!-adK%_r;5^Z{K}? z_wLK9w?Ci#{`cnl{|_I2e*gaa<M01}|Ni^`|Njjo3l9bchPfp{e!>3-F<?0TXO9m9 z1H%$e7sn8e>&Y{knIsfK(j5eZ%ncTAHI_KDwQ$4culld%8Lqq`b)<B?&dJ>QHm0_! zS9p$W_3zbLy{^;S<5OWEV^M7O>Q}G5E`QoPrzE8D&W%i4U(rsvzFksT3V9{<&WW3r zZ=Sbomr=*-yVoP)1m345u3F3b=-8QAb{n@Z*3~!GIwEj_ceZWyw=<f;yP{?l`!vLS se)HzdnvMedcx~@u0ddYVGnpA4ZwU2%x%qDj0|Nttr>mdKI;Vst0GOX2!~g&Q diff --git a/htdocs/theme/md/img/object_projecttask.png b/htdocs/theme/md/img/object_projecttask.png index 4a01b50435a54567ce0d53cad192e728aba5505a..c54e95f03ba60dd0dc30f7227c8cb70c0e7c43cd 100644 GIT binary patch literal 216 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sg%=dJ045?sTduBgxlY>Ot z$K{C(CET{l1ErTGG6+9nP+P~a{eb(Q%Zhyt>1&xkRQ8IuGE2>m|NU&~b)my9?pG`Y zGFn~d7@z9ndD>zj)_i_Z+%dVYTs2KXY6}C8wwYeN@xqhmK+p9LFAgn#{pE7a8_%5^ zOW(b?vEu2&Er%D+YLRG|(PCwy)%inj(VPCDT}$^XcVAMF<@M@2AE3Z!$^Gw^^em;` V(svAuSquye44$rjF6*2UngBnqS_=RG literal 941 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4rT@h290TVA2Tp8u$OrHy0YJ7m*JJ+i;y*_ zWME+6EbxddW?<m@0K$w;YfNS^Ffg#BJNh~@Fl_AS{*%bcz`%Gtz$e6&fq{XGi;sar znwv+MmtTxeKte!JTvSY!fkTm*TaAHBi;-K4kyo3USBr&LOHo-*S=B&P*H2B$$tSp) zRked#tCLf!hex}USEq|lr<-4|M?k+<P`^*mpikVYi`8I@fW=lZo2|ljI|XbGEBfy@ z@>wA5d{oNixPsSdrI4$}5yvf}ju|IkH%Pm$m-*B=be>D-T*v6GamnrRIa31Dw>f8A z3@bkpS#`j_=23CO>dLl_)h)X`Tdsz6UyYo2J9_f1m??MMTi*Nke+=mQ7(d}j=B&Hf zGvDPbxSzH7d+w4Sx$FPdt$bLy_ES^e_O7Y>+UB0?nS5ZvjDwSB9i2A!#I*URTNd7G zUwMDZg5z^noSU%j?!09e8rM8*S^1!4?W6v+k6PA$ZQ1auZP%a9onJck{F$=;(d4}^ zrtEt^ciYoNE6y%ke`CppD=Ri%-M#zllHHFs?0(dK;O~rsKWCl!z5BrJeTVKZIQn|= z@%O6^JY9a__wuX%)?E9t_3Z0iXWr~O^LEF@cN;H$*nRE8*2jN$Kl!)+>7OG<ubw-9 z=h&%72hO}XclFiTo1ZRResSZ*lUsM*o_X`@=F^{7zx==X<NuQ<Z=byX`{Kpdx9`5c zd-vtl+n>*V|9kWO|A!AhzkmPz@%R6~fB*ge|Nn-Pg$Dxz!`zY}zu^Ca7%-gvv&V;l zfnkHEi(?4K_2e1NOcKw|7zzm)z2f0$Dp<~8Y_y3xWlI@b^G>tIoF1n`!f8HQ+t>>4 zYO_k*Y%RJJ>~z*4=68s)o15a|IV$qvq6*iyUYkBK(7{3BxTm}5iQc&i2Tq(gb}VD% zLbgY4=9`U;3=Ft3R%tiyxEI{>gY`!1U7xL69q!DC4Bn*{A+<HttyO|)XX57c^Ybn# z8Kim@_i;|ho;P>y+^MNkrlzK5@;z#56rC~0n4RJ8UgwZ%FBLro1_lOCS3j3^P6<r_ D3?dsV diff --git a/htdocs/theme/md/img/object_propal.png b/htdocs/theme/md/img/object_propal.png index 2dc60e66b3ec3d81f7a71167d00921dbb1bca75b..19d4be8371db14278febf70be41acb3963dd7d0f 100644 GIT binary patch literal 146 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgM0&b7hEy;nE3mFGzG7f< zAd#uem0$AT;fL&P^$x8O2kKQS8WcH~^h{7<>o8*KN;p-Zz3adOhBoeooD$a=6PR2* y7`88BW0BFiW_x7S6S;Luni{V1XsM`}G0gwjTk<Zo>ofxc1B0ilpUXO@geCw4G%!v8 literal 284 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4rT@h290TVA2Tp8qy_kdxJE@q1qB7&yLa#2 zwR88*9Xq#o?Xk6U&aIttZfVc||Np<gfByd7wU(Ba=jZlb+d2otzjo{#i1B^x(mCh0 zF1>eb>+|Q&w{Bf~Z13J<$BwOCyY~J2_e+;9oib%gPfyR@ty_zWi<6U+r_{(>FfcGM zmIV0)GdMiEk;cHlkmBj$7{YPg_xNe1CItc33m>ztJ(#QF^~Uwp|Nkl7Og6ifl^7U2 z*g|_x&)ODsls)sh`2CeDdHdDNuL`{1`sB^7O9wpimnyUW(lodDl(qfN#f!6Ji|#rY oTmQek?e4<&{mbKLJ3ZkJzsKsFf8H>Vfq{X+)78&qol`;+06fc&2><{9 diff --git a/htdocs/theme/md/img/object_reduc.png b/htdocs/theme/md/img/object_reduc.png index ccfd2d2f5b2cc8a689ef175cbece501f8084084b..b59cbf36f3eeab619f6c875e1ee1a4eba26c3eca 100644 GIT binary patch literal 221 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgEb(-445?sTd(KhIHBjdG z$NuFrHnMy&bKd#v)Pc<`uV&2?)i@S6-S@?;n;hB(Rnk8Kz1+`*uK%;|@aLCbw!eE; zwLHyi?oPA($x}O)IvzRI82|d{J@JD4_%Ex@>WD0s*wb0@Rb!rrxLHGM$lm&CtBMzJ zJn)lweS}xxlz+*mzZKfM%&d%VG2NagyDc!=G)QgL#S+u1%<a#7!|VT*aK5RU;nFPo be+PeBW;K`Pe$fRC3=9mOu6{1-oD!M<){S3l literal 361 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4rT@h290TVA2Tp8u$OrHy0TwoW))}RUA>)6 zgn@y9v%n*=n1O-o0|+xZtudLwz`($g?&#~tz_78O`%fY(0|P@vfKP~PP*6}*R8(?u za&d8SOG`^nPtTMoQ<g4Wx_0f_y<4{)+q?JJv18|!_MF=~=iJt%=k~6>wsp?EV_WZ? zJ9h8dxqJ8SJwLbi`Sa)RkF9-wZtMGNd*45Q{{H>@@Ar;<zjyBY^K;*yU;F<2-uL(S zzQ2F||NZm--{1fL{{8>|@Bjb*56g7k%fP_ER1)MD{GZ|Jb^|X428J|G7sn8e>%PY$ z`I;3(7#!wthq=0TbL%;FJh}V7O*N|Jr!<p7UV-wu4vVRpzD|Kpn%wSgYMK-fUB78X z#&WG!sn;H^HC=9XEMRTl-tSwF`EJ`cy)0TPe({o+w14l*Us$B~*sAI`$g6a6zn@gh SJdJ^Yfx*+&&t;ucLK6T<nXCN( diff --git a/htdocs/theme/md/img/object_resource.png b/htdocs/theme/md/img/object_resource.png index 8cda1f3f2202f020c2aa7f0438b72e06f559c83e..b35923a7e4ff612a9062fd6d52d18d8ceeea497e 100644 GIT binary patch literal 227 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sgtnzem4ABssd(c~pm4U(G zV(^zF#w9ri)R|`*rmgb1!MW{G^cts|hi0Er`tv+S(oXJ?%)gvN(`tX4`TjUIE84Rt z`Kp9>oQmhCoP*-mC+(@2_T-d$@uV0Di5*k+%rs4Mo}?;2O*PUy$#qh$e3?q5S<<D+ zPwq83^G|Z0Y-c%5#k1&1x9j>zDwSI^dW=0M&5_8ywpV4R@nh-gNh#O)l2Gs(@! hIHmvW?C<{a1#R(B-?Bv(GB7YOc)I$ztaD0e0ssY<TVMbH literal 199 zcmeAS@N?(olHy`uVBq!ia0y~yVBle3VBlt9W?*308CRIYz`(#*9OUlAu<o49O9lo8 zp#Yx{*Z=?jFI%>3+N>8>uU`HC|Ns25EzVUEN+6|4-tI089jvk*3=9mM1s;*b3=CW! zK$y{KjmZoK1_t&LPhVH|+e}OXZ1RgITv@`vz@X>p;uyklJvo4hnN5^kT#VgaLX?Y* yNAaAV4$nFRts4>?K9WujUNMOxAp(mS8H6JFu1;5C6=z^zVDNPHb6Mw<&;$S>k2MVd diff --git a/htdocs/theme/md/img/object_sending.png b/htdocs/theme/md/img/object_sending.png index c798ced0b5c113d90d6987b597b477a0face49fa..7a4a0a44f38d545f0a9a5b1379f7f95a244ce450 100644 GIT binary patch literal 173 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sglz6&0hEy;nFECF?w>a@Z zp4+Bj%?UOQhk%L9JG%r7822v{=HcQ=<MEf=!V&%abU|w)_nHod5(UqT>TOeb<|iKF z5S*dJyx{G7Nv_6k;><6Z6*|<C7(PDqY18Go#dBM78RN|zE)p)1WyXI}Zk$wTa&7s? bz>xW866>KQ%jPpMFfe$!`njxgN@xNAQT{qb literal 273 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`7G?$phPP=3j~Eyj7>k44ofy`glX=O&z+e#I z6XN>+|9?+U&*bFf?Ck8~;^OM!pyktZr%ai$a^=dsQ@qZt4LWzMXXnnH$BrF4ckbNt z=g-$WY`O|Es3gcQn8D%MjWiG^$=lt9p@UV{gMop8v%n*=n1O-o0|+xZtudLwz`(#> z;_2(kew$m4TbRA!X^tWT1B0)pi(?4K_2dKvhM1Tb5yvg}_iophn(*?vrGAS&!^<;M zWu^Y{@a&5;PS4o#!r({h+F2L>{}XO@yM5_(t(q&3o|>+jo?e|pvy8-zyOIp~oYM9u UMZMb@7#J8lUHx3vIVCg!0MVylk^lez diff --git a/htdocs/theme/md/img/object_service.png b/htdocs/theme/md/img/object_service.png index 65e9041589f39e0c76746ea08669baa778442a61..4f8ad8e43e2e6ffaaf1a0751713aa1e1128b046c 100644 GIT binary patch literal 161 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgWO%wbhEy;nOJpqIX<=zF zJ{+%5a%laEsSoW1%pQgboGM^l!N8<%$dag)kTQdDs@nlghd_}4ZjmD`Q%`uMNY*8V zera~(TDXEstAq2jK$qF0kS%h{TpABD@`p5NWHG!tz$@Kh+<A|IfxkTFoy;|n#|#V% N44$rjF6*2UngD_^Gcy1H literal 365 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4rT@h290TVA2Tp8ObhS{ab;j&a59we(v<MB zG|UciDo%DPP7W&0_NopttWMUf&UUKKj%rCZY{|B4sZQ=GcIqh(>ZuOuX-V#BDV~yT zxpvN!tvya#d%X5eaoRh_Yww((V{@X8EsZ+1Hu>1r>|<N2&+RQfx3~J-vFdZjrd-?F za&7O@Yv)?7U7K?6+?;#Y=G?os^xnOt&!6vo|NPwh_vgO9zxVz7^Z)<<tI5Z`W?*1o zED7=pW^j0RBaMN9q1DsHF@z)9^z>_~CIy~`hoY|O)&i;m!KYW8;d%G}*`&n#{kD6m z*%(Y$Er01KJFoZlpN%`}ch5eY8}#jCZm_~E<-+jtx6*6v=0BTQ-MXGVu4LZ&mp3G$ zBNtCqT32vFuQPPbo7s#TM8w}k`7l(R`7JO*!g&#gop4iYV~?l)(g!+!->T~})@dm6 WSO$uD<S;NWFnGH9xvX<aXaWFHl%v)F diff --git a/htdocs/theme/md/img/object_stock.png b/htdocs/theme/md/img/object_stock.png index 2f439db7b500111372c4f8cba7e71e06e460b823..f6bcc6478aecbbafaeb3cac77dd47f4845c8d042 100644 GIT binary patch literal 91 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgD0#X#hEy;nOK>C{c+kKs tr63}k@S~quPT``;skPEu`~ER7{JRx!F;7PEF9QPugQu&X%Q~loCIG<Y8KeLJ literal 554 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4rT@h290TVA2Tp8u$OrHy0TwoW)(A6wf)GJ z&%nUIS>O>_%)r3)0fZTy)|kv-U|?WLcl32+VA$Bt{U?!?fq~&qfKQ0)|A2talkBft zxw5L${{Nd*ckbNTJjwm^;lsOU1+3~cKfHVQ>D`^XcW<6Gsd4k>Rg*d^Cv_HH*<84J z^X65HW^JAnuz6O(=2-z(uADx7`t+MOZ=Rf<w0lwE?pYD1R}~&!lrXE&d{$?|tVxBl z8Us#muAEhAe|q<#)4M0l>dZL2s_^itjME^LaQN`<Ns}6%JbCiu^sGsh_LB<LG9uI} z6ZF4+{d(o}<|~I+UD@3^sWYK5LG8}rNu7oEhZkimnl-DlGNQAwar3N<MY9?g&6>1o z)uL6CGFDAWST)JMv$Jv4tj<-l3OBD>wR@KP?#-JQb-K@*)p>YP#G*#~-J2IJnpC)G zQsrNt&@&7S42&f~e!&b5&u*kKFfc6fba4#fxbA!EI$x862+M`n?>04P9A)C_NLs(~ zxKy?IxBvgeBTbG~&a^zqz;L2{@z$rx>lbW)n6h+BR_eC-vx7P+7aqNuvFW&Z=lh<? zuAY6XXSaAPh$-0JY|-MB>U4}jPjokD|0fS=lN&$xyjDJ3@#Jmqqm3>r<20Tv+h{Fp zv$8|;Sds&ev0mvzHI_XI^B3IOTHo}_V43=B{)4?++pa78+4Sq1wDom<VP%Emu?!3h N44$rjF6*2UngH&c4Nm|7 diff --git a/htdocs/theme/md/img/object_supplier_proposal.png b/htdocs/theme/md/img/object_supplier_proposal.png index 2dc60e66b3ec3d81f7a71167d00921dbb1bca75b..19d4be8371db14278febf70be41acb3963dd7d0f 100644 GIT binary patch literal 146 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgM0&b7hEy;nE3mFGzG7f< zAd#uem0$AT;fL&P^$x8O2kKQS8WcH~^h{7<>o8*KN;p-Zz3adOhBoeooD$a=6PR2* y7`88BW0BFiW_x7S6S;Luni{V1XsM`}G0gwjTk<Zo>ofxc1B0ilpUXO@geCw4G%!v8 literal 284 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4rT@h290TVA2Tp8qy_kdxJE@q1qB7&yLa#2 zwR88*9Xq#o?Xk6U&aIttZfVc||Np<gfByd7wU(Ba=jZlb+d2otzjo{#i1B^x(mCh0 zF1>eb>+|Q&w{Bf~Z13J<$BwOCyY~J2_e+;9oib%gPfyR@ty_zWi<6U+r_{(>FfcGM zmIV0)GdMiEk;cHlkmBj$7{YPg_xNe1CItc33m>ztJ(#QF^~Uwp|Nkl7Og6ifl^7U2 z*g|_x&)ODsls)sh`2CeDdHdDNuL`{1`sB^7O9wpimnyUW(lodDl(qfN#f!6Ji|#rY oTmQek?e4<&{mbKLJ3ZkJzsKsFf8H>Vfq{X+)78&qol`;+06fc&2><{9 diff --git a/htdocs/theme/md/img/object_task.png b/htdocs/theme/md/img/object_task.png index 14dc14a9602dbabc7b0702b0db699610bbd68313..c54e95f03ba60dd0dc30f7227c8cb70c0e7c43cd 100644 GIT binary patch literal 216 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sg%=dJ045?sTduBgxlY>Ot z$K{C(CET{l1ErTGG6+9nP+P~a{eb(Q%Zhyt>1&xkRQ8IuGE2>m|NU&~b)my9?pG`Y zGFn~d7@z9ndD>zj)_i_Z+%dVYTs2KXY6}C8wwYeN@xqhmK+p9LFAgn#{pE7a8_%5^ zOW(b?vEu2&Er%D+YLRG|(PCwy)%inj(VPCDT}$^XcVAMF<@M@2AE3Z!$^Gw^^em;` V(svAuSquye44$rjF6*2UngBnqS_=RG literal 176 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4rT@h290TVA2Tp8hz9tCxc>kD|IC>)|Ns9_ zOG}$MbEdJeF#`ibYr)GV1_lPkk|4ie28U-i(ij*RJUv|;LpZL7_Bjf%I0`Uos{a4~ z#4@*heKZ@R=cHqcm6xA=$a$fgyVJkIOFkr___kP7&0&V$(o74E`<{-@&7T)P>3`w9 cM9*z1wJrLLN&!nQzGVQJ>gwmR&MBb@0G9ba+yDRo diff --git a/htdocs/theme/md/img/object_task_time.png b/htdocs/theme/md/img/object_task_time.png index 8cda1f3f2202f020c2aa7f0438b72e06f559c83e..a9852339cc0d4ede24c3f5a473dd9a1ae07efd18 100644 GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgSbMrShEy;nEAUzvm@IH) z=P`9S_&;Mq;sH@j0~?3HPYfD|8r&tFIQddJRG(-c+S2FK&R^3pc~%GqGeiIKl9lni Tr?VLt7#KWV{an^LB{Ts5VFVzh literal 199 zcmeAS@N?(olHy`uVBq!ia0y~yVBle3VBlt9W?*308CRIYz`(#*9OUlAu<o49O9lo8 zp#Yx{*Z=?jFI%>3+N>8>uU`HC|Ns25EzVUEN+6|4-tI089jvk*3=9mM1s;*b3=CW! zK$y{KjmZoK1_t&LPhVH|+e}OXZ1RgITv@`vz@X>p;uyklJvo4hnN5^kT#VgaLX?Y* yNAaAV4$nFRts4>?K9WujUNMOxAp(mS8H6JFu1;5C6=z^zVDNPHb6Mw<&;$S>k2MVd diff --git a/htdocs/theme/md/img/object_technic.png b/htdocs/theme/md/img/object_technic.png index 6186d18da70caa5acaa255752415d8136edcdc98..4ae5d40a34072b9d1e5ee77ab16c99723101482c 100644 GIT binary patch literal 256 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sg9QSl_45?t8dU2x{bE1Ij z!~F8KJ*5J!Av{i9duH^mTc5D7b*b3KK*yTJDr*-_2%F@(yXUM?>#l@zt@3S_2I6)9 z7fxspu07LR8uUZx(53l2Arf6?%prXf-u(RX%y06gOE-2O>w6Me@<cE}#YlLo@#Hz- zZ4OT_tqL`BJijGWZ;CztHHIujn}#o30w*lv19qNsv)zz-ZQkx6M&;EyR-xABzhmd9 zUz}Kda^11+=<b-h9Urq2rB5~r9oLjyv}OM>_Iw8+zpsYd?d~fjSEw%eqJNozfq}u( L)z4*}Q$iB}?sjVi literal 433 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4i*LmhOLfIqZk+%BuiW)N`mv#O3D+9QW+dm z@{>{(JaZG%Q-e|yQz{EjrrIztFa~?NIEF}EW<9u9pE;4?z{C61-@{@<w>Y}GKGyd2 zNKO&p7TXx<qGTwsMvHCY3>~K=qwW^po=I*#zW>?0S6(oCqOpAMw=H{jU;o@u%p%L- z@TOee>8*!sv%hpJ3u|}J1)gQ%P7^%;?@jDjw2Qq^@5rSap(O{Fit}Gssj%_PbKb8D zepYxUCrq)>3thG2h~!e^XR5U+zO1s{OnjwU4*IbY5nJXgyY&29Z*$6yMpwo3cai4b z5)2kzbgsO{_u};T)feS&O{utlF~4$6RFQ5|g4&$<lS@y{XklcRzQ8Ci+-p^J>hyA@ zL{Ix`7yPfzmh$me`}afjcjEkx+&yPIPbdDGAkxT^yH8`{{Y&~OzT73{ivm^7nS3~C zt=P1MC)^``>pZ)&_h+0n*LPr^EZ}?j?C*|Jn>(V0@1j4I*s<+A|83oiN2U`lPFS$; noy`Kl^KwnaYU>@H8U8!ycTQw|W?Rg_z`)??>gTe~DWM4fsJpiE diff --git a/htdocs/theme/md/img/object_trip.png b/htdocs/theme/md/img/object_trip.png index 95cc4412111f7ec23f1295471416152743455e88..3d75bc937e59131d6e83eca6237fb53b63280d09 100644 GIT binary patch literal 221 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgEb(-445?r|+GXl=#DRf< zz5F?QiABi5Q`h#W`Fr%%Ggmrzd7awR$aQYL)%3H+_U@h?c|Y-+%wpxBtdC2MsRU1E zn9IrLl;u75Zh(H6iLj3VLyh<0>0b>__jjbcIvM8Z{pwBGhfjxHR;^s&BIx$NbG_c$ zlrJ26jw~|X_VcUKQStK!q~#afNIt=8ZL~}M!8EJTteA(%mzMS(6%s7lG1>SO=XD(e b{$-k5bD}v8Z(Gd3z`)??>gTe~DWM4fQ)yZw literal 337 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`7G?$phPP=3j~Eyj^h#VKN}P*Q6H7Al^Atid zb5j|zQcLv|3{4ag%Zl_Aj0_A+6^sn5OpUD!j1;sD3=Ir)@_WBAFfg!}c>21sUuEGF z7Pj2|NvVc`fq}EYBeIx*f$IYZGdis?nZdxoz>@Ch>&U>cv7h@-A}a#}gF%2#h^wuw zZB$fLa&mHZc6M=badma|gb5QCELgC1?b@wdx9;7$_t>#x=gytGcJ12p=g<HD|8JwB z-N3-WAW#zI7yKU;Fg#F>m1JOG@bh$W45_%4{DYs7XGey(xHzN0+s)6ve5^|Ob!OG$ zGw%<U?5?^~&-UKfdVBVi45pvyeb?t!A6am5+TOLtOgax9H92zS=+X9v{uyWf=O_MW Z<XPgvzP{msEdv7sgQu&X%Q~loCICPcherSa diff --git a/htdocs/theme/md/img/object_user.png b/htdocs/theme/md/img/object_user.png index efd446a1a4c05b50932240855227fec33c4564c2..599e87b3ab83c621f919b124054165edfe13692a 100644 GIT binary patch literal 164 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgWP7?ehEy<aJ++bZkb{K7 z!}Uft9hP75Y%xw_-+0y~N?UH4+rykE4iDQ!o>jj!p6sT-`*wCq)ze_1Q>DB7X6iY` z&fVtJJ9oBD<cyoAjy=dRv65V)Tbo(x_H=psl2F;H3z}bv`uT@;&NlmdRXVUBC2qBw S?N0^<1_n=8KbLh*2~7Z0u0P%Y literal 581 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4mJh`26+$Niwq15Y)RhkE)4%caKYZ?lNlHo zI14-?iy0WWg+Z8+Vb&Z81_lQ95>H=O_WN9tVw?<(B?+kv42+jNT^vI+&d;56HZLep zr1iSp^FvEHrpT}C6<{~XO`kF=%X%}9%uI_wcRnAPm%<jC{V$|{VEn~m(_naU%91jl zC1HWDmWnTVdau~xc}_a7nNi{SYv-bFT5HRHnD2aDe0I6HxApDY)l<EmuH5QZw)<}R z-njhrSF=_|&NtVdb#__#`+wK!wnkM7@;O@=m`Qy#Ka(eT;C1Bs8KS+%+-`mU`}|-6 z!&;LNna5vlYlekot!GGi#-^`6S;V;7OH*U*!mVxBxKvoUemdp8Tm84rUd{1wjNas{ zQ3oU0lX=}13m!_WF#DeLK|A2u4E|u-)-b6+5k;PM36^G#1Lt=he0=_Ru(9cT^}wEw zM<o{DS6&iickb|q2UWj|!Zg-e?4R*}-pRCiE`?Jj2Q?`?@|WkA=WT!ZbkBl_=-6m| zk?z+orC+w6yU8SYQ0n&C)MEE}UxW@SSg;=mXL$3@?uO>nuKdX>pU7sv%~f={7v;^M z(84l<S@UV6$ZC1@c)z%9x8JVc6t`agPE_1I|6iTQ8KyDlSUg|Xk(AajA??|w=@U$q z0^gQcvEK{YIY;e~7=y+0e<xLqn-40ufB1XEnBl{+YaYow)z@}2%wQ1s9G`0}DAAy- ibo@-6V!iQab{B^mS0X!DXD~1@FnGH9xvX<aXaWFH)AQc| diff --git a/htdocs/theme/md/img/off.png b/htdocs/theme/md/img/off.png index f4217646b2645e16a1c83ccedb6755a8932a1e38..9bab123aca7f214c66ac06f8a1635eed9d8ee9e9 100644 GIT binary patch literal 248 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sg?DuqW45?t8dciU4P=dhG zkN4MoGZ3m;IAeu*kf&JCOV_S10$uY|^!6>e(8zDUhWq~QGdBMW`aiC+`?4-CPtR&9 z``+8Lx%#U%3;i^-z4cM<_Uw5(PRF`@$W;C7>-kurFU&!IfvA*cP_phN*#gn*O$VHM zmj*6Le~@-6!q@H4VdE83y*j)bb+%?0l`-v#FfG*Bm8rayaaG2H1lh?;zKZG_sM|m6 z+`cKT@4wRhdpnL-B{TMHQ)LP%JIB^Mxp(LFFWfwVtNT<Q2ih<&Ffe$!`njxgN@xNA DZ|rBK literal 568 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4mJh`26+$Niwq2m|2<tCLo|X@CwY5I2THVk zw)gVZ)IGX?k)8>g{zk`-T#uY4?(i`XU81sa#SX!vb0ZvGk}g@zRq0jqyHuvsIm1Nt zrA6AA6s5f$*Pp&E=QB=S)6Kr`^W5*2=6#RTqh}v>dh@n+M#1jd<;KR7_H0=2oS89p z*4(p!`VPhYZzFd<ne^;gNou|P*&H$RO=l9f78Nj@e4QKk?5J$uoA>3H^y;r<h|E%W zpe5EU)#+es^JMGQ#jTE!de$!__#ZJdn?KLaUh(eTqD^~y^=Hq%a7lfK-PsSbzOJ&i z-VqVc{xrW+-RFzCt(-`cqsa8>fwyin%$uG#MK58>={<V+xgU2XX|z1KATYVv=Z}ZN z^RG_dekX=#typ?Fz&~h3y3q<Xp^U4m794jftDEQ9!z9dG++cib>&m!ChmWvi9WtB} z!gcaupvlyHjWuf`gbx2u-}nCI!R1R;U&L#7eE;e=V^))aE$_vrPK!gDWcWV!Xl|SF zV<zv5Muonf2fu<G3rj_h%gR<<zt?ATcXi-?r<$Tk={_Ilbn35F-XO|4pI?gg^-h^r zk(|7~%{z8*9DKP&{;R35yr6xAvZY1G_Pcj0oY%`N{eA3^;u~Im<!e`uKKFTP{;{W? zLF>-7ES&@IDz4n@<dB_y)vVL7?D^@y!_GC^^*_x2&@Hk5d${jU&5vCZI+vZ46jYmc ddviVG#ve~+@XMA?W?*1o@O1TaS?83{1OSY&29^K- diff --git a/htdocs/theme/md/img/on.png b/htdocs/theme/md/img/on.png index 728bb3935366414766d184afb9cbc545e4ccebe1..7d0344d4dbb4584f45eb469d43a3506fa9057bcc 100644 GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sgto3wp45?t8dj4SUAp?oy z7q72tV73k^>E~fMwK3TtZ*H^Ol)GH9jVC-x^(X2^?)&gNe*Tm5^VS<n^s+f_?(J^h zqGJ`ky6U@j=<b_Aw=|Z#IUlNCo;hLiy}KdjYE4db-_zkb5Fi}S?K#QT!0X+wKQBT$ zo<v+&^ZnIswMou(dYk*ZRIC*`X0G(u!ersi{o5pb|CzOSmmI5OQH{RNRvCPC=8>ZA l$qOPkl$UJS{3+-E@h7u)U3qXKhk=2C!PC{xWt~$(696AeW)c7Z literal 603 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4mJh`26+$Niwq1*N}eu`AsWH4lkR&@P82y_ zE^gw;`&CI(X%ok;E|JCm8V~I1Q1H-gTDxM++O;xVQ93~;Dx1#e<tSZr?Mn%CwC4~v zoc8<T?!D_Tm~D^w{qT3P{frXX`{zDyFu%9!$AQmtitV1yVV9d6oMZg*#v@;AnWWb* zA{H6{(5Q`>cXG~z<3h38Q;Kgt>fPP5)$Qe#ibc_N>;06%J|~ubmQ@d{ZsmU^qBhCh zWYx>x?puz}_P_VH?#1@_*^Ud|H10R)_P@p4xBttG<95M0HaB@!J>Aq9mR;VVyENT? zZH4mgjUgomqYD&bz9~h;J$gP}Bzfoao!$zWljq#^*;5*Pt8eGmxHIYJAG)6FyL!rf z$tuSss}<|MJ)1kln%jSyd~=ZXiJiy8crA~HePi=k-me(ksSxue(KXV=<)dOmgv&Oi zM~S=GC$C(bqojP!WvW%cbg?t3zXCMYCc50}*FVZybN541#486s?}Uf#t-g;8+Pl}B zcDU1{e)95(45l|p!g=nyAN0u`Gu_CjY1*<p`}xYW)pmi&NiDJKx^Elkym5{53@+E! z<4}v>+~yh>d)(s<gK5q+*UrxJSK=|frU_P8x_K?x9c#PuUuB>0lG~if&Bn4>&+wgb zp?cs`#+AI`i_&&X<3A)^kZ5Pnvhb;2Oy7*kb$Wl5tiH@Ic6(pe%ymOrzinGVPLguJ z<g&;apTD0L{OfY`#sm9>ZV_Lr7N5A`>?089v{G3h_=sKdTX`P!+nIse&rV@rU|{fc L^>bP0l+XkKN5m2} diff --git a/htdocs/theme/md/img/play.png b/htdocs/theme/md/img/play.png index 4922ea1ec12a8606851317be0927fa7c83132889..96021dc5081e1daa4d37cd649d720e676c27ecec 100644 GIT binary patch literal 131 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgczL=whEy;nOL!b`?pf5% zbFW48FZ-dXJdapJ8XsD>rR?c?P+;GzmFLRwWA4JP#;F??c{z1`Gh885R3W6;zCJ-f jU1Ubw6IbrPj12NGw3WiY9o@;mz`)??>gTe~DWM4f1Z*r( literal 653 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!toLOfj@Lo8002HR$cIEu(Q z3p^A!`|iw}+;>7JBzu?M;7k$}Si>Uf;&?$V_ELvEhnu(SWbd-{wD(eh+}46RI=VS5 z2i<~Kw4Q1_F8O`a_T8KRJv|qF|KFYXI<_`*<NSNy_vPP{Zn>n`Di(b{q-}`;J5!%O z8`Jsby_&kUQh$D1m(TsAa;wPXRBPhNtNnV)^4EB*q9Y}2V|8CGS5YsoZJZr+A$)d| zLUazZBcJE8e;+OOHEffVQ+7T1!9V^&&4gpBe17FWWp4L58fm_WUJ%o9eOg<N^6kB^ zi;KikYWuF;@3nE-e#qd|zDKiu#7q}G9>4T}B7^ORHFJdKnm$*IxG=@E?q<T5ET_Fo z<hSrfNl!Rh$m-x+aYSHK>%OJ2pS*rPoR?F@@?=LwN)<cTj;f8jR>XG8@TV`gVz{5g z;CJi5B3`qk&5yd@eB7t<R{r!YmPt=P-Yz<P*zsA^p#|m(h2C}u-f-t+_{pAcCi!yz zyBQ^U0u46||N1KY$UIPBS9@mv*VIk?Kd055N&Vs~bK)vr!)<<s#`iVL=5;VjHg*~p zTw5h(+V$p>NbA|E16Mld*(nL{+QItNR@v8T$}7LWuX;_J_q+^RxA~&>gPObS7g}ty z4Hl`C6z<<+yCFa1-Nhx7!+K+K7S_&psGWbbS9Mc$^8Gt)>z=wWCUBOgv&ob?JMVAV zb=j~}bgF>ed7r%@C%(K|*Wb8AC}Vr<<T?IHFBGbBH8Zd4e=l}#d{lj5C!b_=;7^7x z<|gNg=W8opoa<k{Wv%_`$EVwOzrL!v%8E_4`9NX+%H7+4C;VqLGzi$f|H`Xh3=9km Mp00i_>zopr01zE7mH+?% diff --git a/htdocs/theme/md/img/previous.png b/htdocs/theme/md/img/previous.png index f807a78d281f1b8b9db94abb430a94456a5bf7a3..e0f87b5860376ef84bdb2ef80464a67f132fcfd0 100644 GIT binary patch literal 114 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgSbDlRhEy;nOJrPNXknT9 zCw+!n#K{siHz%(&fiR=V8z$}NVVC4v;3OofIOXi2Eq#2aIy$HAV)T<>SfrzBTWWjf R4+8@OgQu&X%Q~loCIE{PA?yGE literal 620 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznVBq0kW?*25u{^t(fq_A{#5JPCxhOTUBr`ux zAtW<5m7zE>S5LuMA?0PVo`R8qfvJLlv6Ydzm8q$Mwt=C6LHUi!R0akH_7YEDSN5ws z%uE{m(^;6>7#J8h3p^r=85p=efH0%e8j~3e3=Aykj=qiz3>*8o|0J?9Ffg1C@Ck7> z^olYJO12D&vJA?$jLNo5E_Mn^c1kXGO0IUwu6D|9@yc%TD(>;Bo)VN@98^6gsAW!2 z%hIUq>Zq2bQ9Wy;rff~_S(-d$Z}ObI$#afnxAbK9EX`hethlA8c<H(7o}TKSIn{Hv zR<Au*z4cm4PfttFoR+o6TDG3+nKGwm>DHdT*QRVeHfPS#IcvAh*?Vs3-fK&b-CKL? z+}6DyaO~Q>bLY;TyLRo|z31ody+8N-{k7-MuRVW%@7}$8&q3h*`}gm^L%{#<|3To? zmz5F>3=FO%L4Ls?KBbsp)4Pop3=9m@JY5_^IAmoH-sEdC5OFxzEwIviYL;@ZnD`=> z*G`Yz4t@UlKVN8$V3lud=yh{j##s;cp3dF2Q29d6>42*A-g$Q%7kpA=nPVEYG`{87 zPosv-ZmWN^1Ux_Yd3op-hl(3_KAQWbHhzeU%08G9Eb7^KK+*V^!TeP&ZRRYuroQV5 yRcgM=&Uou|%92YK^JL={zTB$asCUla%6|JqITsg`-O3CM3=E#GelF{r5}E*v7(N&P diff --git a/htdocs/theme/md/img/printer.png b/htdocs/theme/md/img/printer.png index a81e2fa0df60af0e3719f655335833d9d8172810..6e8bcbf98a57f1c6e80aa31b21e15677e3796778 100644 GIT binary patch delta 150 zcmX@fw48B*WIYQ51H+%=Zg&_M81g(_978G?lNT_0Bv>@C2^)x-8vJo@=1tKGN+@t> z<~ni7hbLHaA7g3Kq4y4wY8{I>6vU<XoHgM0Xmb|1njFp&vWQ3J^+pTH>7S(qm^eD3 z1%(_mocLa|OLWO4v{f^&QktXKCsS<T+M+z;6$69b)`r|E{L@#wVqjok@O1TaS?83{ F1OQ}_F{J<i delta 313 zcmZ3^c#>&?WIY=L14G!kzHkNx2FBtbcPEB*=VV?oFfgzsdAqwX{0G4WdzVjUU|`@Z z@Q5sCVBi)8VMc~ob0ioT7}!fZeO=k_v&sobXm*Qo9A;o(IO*x)7-Dhy?4;eiha3c4 z=Ig45FiIY|%n<63v)toK1Lukc8Oz1I(NCfo8(%inb4->f+4SzuM2;ITOm5A*J2U#n z_O4wGOGG@_D_UoY>P@JaC3c|7VZ|G!kL%a`G}EdPwhpZ}o+QGYuE3n8JiUTRJRv`A zeg9V74YL)B*w^W%KTg{+N8%)}#n$&zwMBeIPTg9&@6M9tKP3+EC)e{b7@w})u_SJx z)QUOHbNC~wE!2$yglEj~&T`_KB<1-tBYV;*&6md;SFf$I2)%GF{;Ko@J&nt~EZ4Fb Q7#J8lUHx3vIVCg!0C$Xd8UO$Q diff --git a/htdocs/theme/md/img/puce.png b/htdocs/theme/md/img/puce.png index 8c116b0dc4218939fcb62ee4087b2f2a353f6d03..9bd70dccb731658e40d16ba29f4c09174d35c5ec 100644 GIT binary patch literal 193 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sgba=WrhEy<4J$G?si-CaK z!^_RWZy!D?Tf9WXS6eA5fA#i`9}`*ycv@6meBUoO<DqTqv4jg8k+Rm}dS^CWob=;E zzjxUs=PRu$cN-sVd(0L6cz3wrCXRW>Ld_n{%rdd>T&Dh<&E{a3Tt3IPq%8&6mYYwC xD=vC|LZx0sB>NBV>81&)J!gD)O!j<b&gNXd%~3C=iGhKE!PC{xWt~$(699zAP5J-; literal 504 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznVBq0kW?*25u{^t(fq~(CfKQ04p;we)P_kuE zlx0x1WmL9ha<NlTvQu)gQ*yOacC}M>i&u7wS8<P5^^~CO;-Km|K`nEFT9!s-S4Xuh zjp|t&HDzmZ&(h>6dz0tvO`dZsyQL?)XKD7*W5q2!#Y@js_w-cv%&DHUwR-Kj>aEvW zdU{%V=CrIm*0S|n&y+bmOSksyy*6d*u{m>=&RM&4&farN_g-6i?B3dA=eF(zfn(S1 zojZ5#+_h`x?ma(u@BO*w@2@?7e(m}Dd-v|$dkzBc-@kwV9RmJ;{|^GEzO0mBU|?`9 z3GxdD@hQa&o8E1-U|?XF?CIhd!V%4SFq*3=K&0*B`p1ELQX(A{zC4MT^`Ak?VXsJQ zP}iIPZ?4^nVf;I7=AKs!N(R2l&o(`)Y062cT5{~}<n!l~yc^23G#M}Csu=X@=rAPY zGj-p#TKCLiiMU{R+Ji}_WtCdF9oB8RB=Dk4?c}7Hl^fNa{?BDp-FzWDg}E}iW=YDH n>B;UauYMIw-?VI<_YdYesgPh6rbb2v1_lOCS3j3^P6<r_FI61B diff --git a/htdocs/theme/md/img/recent.png b/htdocs/theme/md/img/recent.png index a49fc171c06d79261f00cc16118595d22077b29b..e6fb611f3bce650dd1c8b36e190277d573c63c87 100644 GIT binary patch literal 165 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sg<aoL`hEy;nD~M?rUokdG za8MU9bx{4k@j&g0E~yP#Rt{?xu`JN_Y7voTxKw&XBWpqLB54Q3lo{<SGuWBgt0Wd{ zGHH7<a4kH{&*93)BeUa>>>>`vDH5+PB;_-P2r^!9=uu+Z(CNa!sw6DKFynGRLpgKq ROa=x922WQ%mvv4FO#oWpFO2{I literal 447 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznVBq6mW?*0t{Ft+Yfq~&<fKP}k0|SGhp`n+T zQ?i#tvX^3VkYRF^S8`NPOR{21vSv@VVNZ2(Pj&W`mh822s@KkG*;>r7x0qpXHN)O& zj=j|adzV)4UD|T2n&DUr!?6~Qb1e+#S~$-2aGaZ>d2Wi~wHAhJJq*`+IIc}myw}5U zZwkk~DFXNAFx;D?cyFoGy|qElr!YL9Bk+8V#Pg+^&(}IV-x~G&Sn>Ng67QEvykDyL zey!&FtxoUvCV$@>_5E1(_hZH1&sBdv*Yf?^od4H){$HE&|K6Pc_m=*@xAy<@t=Wnz zI~W)k7)yfuf*Bm1-AH3#U|8bm;uykl-M8-~Uz3A?%W6)x^4X555=S01Wi)v^Ow@Jz z^S}QSgV5`+_a9a<q%ll*ap(+_lNQ51CWgyewky9^x6i%L(D7JXby2N^iLBSNrEXDQ zOQH|l+iG^AV)-dE#xwb$ku}FmR&`~l&N#To?&;SvGr}T;jx#bGxR-YN<RTmEwaot> zJGp#6@~|vbILhUTizD}vEk_ep80W{l`?s2bq1*n$=ZD;rJorl_YL?|OFfcH9y85}S Ib4q9e04xK`jQ{`u diff --git a/htdocs/theme/md/img/refresh.png b/htdocs/theme/md/img/refresh.png index 9994475cdfe0fb8c646eb1877a84443066a73d93..a4fac077e7aa050f4a84419d6d3df6af9af4d16d 100644 GIT binary patch literal 205 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgO!0Ja45?r|dd6Pwc!5mA z!}Nvg6dsu!YG{^d`NDQKKdWxCaj2))(fRY5k2qM@`uKibJ$dQ*KhL(#v)vh%|3PK? z!U+~vIHv}!6uWn)<IAPW@|2P+fy^n~!H3-b^hQnfRGhXbF7u%MBKPe<y|>P6EqJrN z_~9X+XII;W7aPxyvKC^GYq5@w{(fk4Ew@p)T+PpGJGNx&+9#Yf<I-{Hy28M~z~JfX K=d#Wzp$PyJwpMWf literal 722 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4mJh`26+$Niwq1*Gd*1#Lp07OCpa+2oZ;y? z^oD27Q!SmM(=|W5rd1Z5^$bXwkaU3EL8{1P#@BGxk6|+T7cBqRlpox$Z0aY@U9ux5 zWT)hh%9#ZjUnVC8+>toC`^QPC$@%r?cmDrhZT0T{>8~g6pEuh*FZ!{5xTx~+MJG-l zI?%B&aBhF&_QQR)znr!|+9}_D_Wz%osUQFU^}7Av{u<lgdMncpZ<iIc)|J<(d4^3$ zk`rTl=90?xk|mXGszoJRV0a+gJ3a5P{hQBjx_)onrQf@hr=|a%%JowFe%j5y`>!W_ zP1~edK81msS-V+7eesKH5uIz@rDgoqaZJ(LE|B(M`qPwz**T}*Y}B3j-eIv}v;Q7F z?=QVYFK^%9_2vJ2PQeJxQwJ4JC>%ViQNGaW<LTFLSMJ}g^13{V!?2(^M(M<{19uLc zRG4_=)PYRZLkgR$o63J34?AivKAA<{qrlM1u%p<}WB$ph6+bddAKbT{Y4usxRYK)w zgyam@8<H%n5t0WUW*j(tV9%Mks~?4SAG$s}QYl`wahhRAfdR)Gp679&a`*lH|N8B< z?MYiK4`qLqED8VJturIxT%P9Ha|e<X4;<KcXzJb%HOo#+Z5Fgyeq^VFs$@%p+}!*# zLUrr?UY?!Kn)ly-`ir?ykM)iIo|`kJ|M=@W=e9`|?`B}`QI2bLG>q&$s213JP(ors z4v&n(a+eRr9=W`aX8l^^`}pzo$iDyceM<iROb))cf4%hOy7{XLZLTGqm0xj+`=d1% zgPT@xlhNW|V)cFJR<}<2ey{ZP-+$J3-`wAyx$FOZzp@`&ZQ}}8uh(hjyB2bo-A7RB z56_~byL|N8lYjWt<%IsIwvGPrwlCpb>*gMdJ#%kL{`k1;x<@42yQg|Or_FwBIQ!l# mc?%<}oPkWljf+<p85U+;QxU!N=O6<E1B0ilpUXO@geCyu*k?xo diff --git a/htdocs/theme/md/img/reload.png b/htdocs/theme/md/img/reload.png index a4029f119def5d9ca4c5f7f1bc6a452176bf5b06..a4fac077e7aa050f4a84419d6d3df6af9af4d16d 100644 GIT binary patch delta 188 zcmX@WdX{m5WIYQ51H+%=Zg&_M7^Zl-IEGX(9zA2Pcf3HR;bHp1bqbHn4mC7Ow0vPZ zo1axT**MhG>*)M>%|{%pYkhpbuAaQ~{GVrA=h^NI%m1J<ec=R)E1Xk<R*K!b)A8j} zWqC?TmO$nd?%+die|n>)dMZv^6qk9>ev$k3px#?&widkEUi|Qosn4^k?ZS(V=SNu! wvB$MoM@N4@w7HhsC|s`Q=d~SMvUTkf&YE%QICNcMU|?YIboFyt=akR{0RQe*SO5S3 delta 691 zcmX@hcz|_+WIZzj14E)fT`B_u1AB?5uPggC4iQF010S1-j~N&kI14-?iy0WWg+Q3` z(%rg03=9k`>5jgR3=A9lx&I`xGB7Z52l#}zGB7YO%=s@6G(}+Pe~Ik962<2fqoybp z?^Ucmr&xVWvE{j9%X`J1?}}6YYxca?T>Ia!<(%P^?}qhj|66YT?=<DT)7Jl9OaBKg z{U5aVf7G07QFES0E&U#~_J8)V|HWIs7jOMveC&Vq*7wzWzgO@5Uw!U>OG``3-tR5P z{`VaF-gE4K&$<6S*ZxmA_J7K`|5L90pL6d2oNM2gUi-iF-v700*RH+xeeJdXYwvwu zd+-0&=l}O!d%ySI`@Q$R@4Z+5fA91E$L{?<_Wb*?=l{<=|9<ZI|8wvEUwi)k+Vk(% zp8vo0{{Ovu_wGG^fA9VGd+-0>`~Ls=`}fb^e}De{`}6Pr-@pI<{`>d$-~Ye=|NlD( z{Qv$R1cKY$w=pm<n3M$h1%vpwaXnTk2JdhsP>lTWba4!kxSV_8t=}O75w-*^EiaK2 ztK~wR=Ulh98kBPAU2D}%KB<tKGyU?nf9sDJb4m%{m-qc`^4DUyXtLKYDc8vg8P7Im zKHRY6>GH7ICPn2_rk$!;?)O($x4754HRko7b@dA;U6ZoYaayzeb8pwWi5Ywb>b2)z zZ$EkHg7lK-Tc6~5OP0ENWP~{{;S@K%WA?SA>UYwPW|4xAE=9ZyKf2cFO_VeK=w~y* zsYys@r^BxKoN1FMY&KvC`<Z_BV4z}{*})r=R1Y71w)&j2>eCvVxC{-qxw($a=94RS zH=VJ)HT7<>&YvY3Lica}f9X<l=k45iCH&v&W`8#Se^Fd!wwvu6F7|Lxy7F}Ob6Mw< G&;$Vc?vhOa diff --git a/htdocs/theme/md/img/rightarrow.png b/htdocs/theme/md/img/rightarrow.png index 2c479d9453b4a6e65bc3909c793c221241071707..79f3cd6420303e214de569e153aa49ce1816676c 100644 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SggnGI-hEy;nOGtc}zc6uu z2&Yh(%E=D`C)5^n%uH15Xb%>Qxyi&KAAFH<fdP-1@t(uW-q?%%XmDhhAMY!1k9n%b ugW#lN9~vhJNw)PTsIoXP25|N=FucF4=_>D{=E=aoz~JfX=d#Wzp$Pyg0xRVJ literal 156 zcmeAS@N?(olHy`uVBq!ia0y~yVBlk5VBq0kVPIhR(diP%z`&5~>Eak7aXI<N`37kt zfe9%q5<5~4Feyx$F7fQqG@Ek<trecUY{e~4INRbxJX71udDIL}PUh*C3{yCm>u@lh z$5FsDxQ(HWLnVSoWY5_Ij)^YpRy^jCM-q-LVzy)p-O*g&%)nV5bRw|$*<=O=1_n=8 KKbLh*2~7Zs&@eIp diff --git a/htdocs/theme/md/img/searchclear.png b/htdocs/theme/md/img/searchclear.png index 12437f848238b68f5e1b716b5f56a7a5fe076df1..5715b64beed38049a6f48d0aed63fc5016d46290 100644 GIT binary patch delta 114 zcmaFD)Xz9UB|FU1#WAFUF<C<6K)+^_X2Ilz?5<1ZKV)0BDX#6m15Y^9lhWkP8~8OY zwuf`ZY?5Ed(r?rubV|fg_Z8zL+lr|QHC^GHhnCN1tYlurvhbx<z?2gi3+)*gmOHB! V<e%PZz`(%3;OXk;vd$@?2>=XNEDrzx delta 329 zcmeBYe8MzArJk`k$lZxy-8q?;3=9lRN#5=*4FB8v&+KPlVBjq9h%9Dc;1&j9Muu5) zBp4VN*h@TpUD@xm@`<yEibrQKGcYi`@N{tu(KtW#lA`~iLV;r+&-<$%bt^EQ`J$<F znd9XAhDei$wJtg$JuU`6xHx(oE<JKfOy&~~HEZfTd8FR=XXG7+e|}#wxBtF(ck}MY z{88?=+v1cqzjY~>n^(C>f9;BuZ@t*=WY?{?67N0prPOC{<_j&|?S9gon-WeRIForP z@}f_ei(iP@6)z{>T7ms*!g|FoXDd8qRV^=i5URy#dn5E<qXJi7T|{S3IrD6Vjzx!z zCKa!KcsL-`)!#(WDOOLZvcGTQbtAK@fdz`QZp?Nz=M#S1oE;eZ<L@%Z*pTSnt2VbI hzbYo0eu}SUS|{(KS}WK*n}LCW!PC{xWt~$(698J>g~<Q_ diff --git a/htdocs/theme/md/img/setup.png b/htdocs/theme/md/img/setup.png index f997e53799b568372453abbdc854c78d5c628a40..4ae5d40a34072b9d1e5ee77ab16c99723101482c 100644 GIT binary patch literal 256 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sg9QSl_45?t8dU2x{bE1Ij z!~F8KJ*5J!Av{i9duH^mTc5D7b*b3KK*yTJDr*-_2%F@(yXUM?>#l@zt@3S_2I6)9 z7fxspu07LR8uUZx(53l2Arf6?%prXf-u(RX%y06gOE-2O>w6Me@<cE}#YlLo@#Hz- zZ4OT_tqL`BJijGWZ;CztHHIujn}#o30w*lv19qNsv)zz-ZQkx6M&;EyR-xABzhmd9 zUz}Kda^11+=<b-h9Urq2rB5~r9oLjyv}OM>_Iw8+zpsYd?d~fjSEw%eqJNozfq}u( L)z4*}Q$iB}?sjVi literal 702 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!toT0LDHLo7}w|M>sko>@^w zN=j?Wym{{?PMkQA;SdiGPmqBno4maI{V7wXY<cn|B|c_WcURY?ep%~n-=ChIE`RjM zkxPL*3{6}5<?a9J>+0$rPICwenR306nf;q>&5sZJSFg_2_c6YZ^s=LaLvsS-J~lSC z)aU2t@8>9yYg0^2Ok8<=ef<BB;NY#2E3Qc_v$V0XVb7>AidndATiMN*mzV3ixw|ix z5R#FZQ~veU)&B}_-sJEXH5y*n;OX$b=F_)t=Ug`Orkq&l+^)xztI_<c|Kj!Q+dmv? z<^JE8$Y8c))21Th6V}#cZ!EI%^5mKxru+Jy-DF$+EoRHst-71HZR7j&;e&>4-Jc)z z6BMtni~Cvs^wd)Q)#2;y5)%^xmG$)W+DvabwCT*bTwfct`tZ}k*3bT3zj`(I$&)8J z?1_AQeNhU1th@YV-gxD(Nk~h#mxax?uP(_w{=cti^Kwg0v&tQpINBQe`urA5pC11F zndsjCpC^~hm%n-GV{YC4$8HLGiWv=)CIxNSU;ki9xA^*|M|+N6cip^U`K?E1rYe8_ zcmCbB`$nrzuj5(HC?q7L`0wAs&Ff-!f0mah2!8V9iIc-4*{Nx39crE(JDK`_`L>&R z?2ov3m|a|54?8&>61%ta^OODa;}66L$VUbSPxQ<#?tD3OxA?Vx^8@m?F5iD}lT;pq zLCWF3e-BT$srezb!ZO3q-oD<#Z2vWJiS0}uXR=S<{wH78)RxC&17i+@v~=|G$H(9Q z|NV<iFF7^Um)WgfL*O&Bp}4?iW<z#?&rBNwk~)4JnH96xc)^X8=L~IlPy0Od@$s4K zV8z|h+Ylk#@w6dAqT^>n1Ve{vV+3o**GElPmW8BA&*Ll!WjW5pAZ@O=%w$9NZ3YGg N22WQ%mvv4FO#lQAMy&t< diff --git a/htdocs/theme/md/img/split.png b/htdocs/theme/md/img/split.png index bb66213f41332ebfae7172ce9e949bd2a4c60dda..f3c34618c6b568c56ce9815285bd517bf5398445 100644 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgBzU?whEy;nOGtc>=Xq~< zqPdcbhhITyMwcD))B_Dlhr@Ha?3h2QSky~}ut+lKPD-A^Au@;KnJ>eps)N&%m{+*| zbvViCU^QnU^DDD83&dBfnYqE<-&jUr&5Hv90WS3n44#uUxArcWP{F{!z~JfX=d#Wz Gp$P!D#4u?9 literal 195 zcmeAS@N?(olHy`uVBq!ia0vp@Ak4(fz`(%Y%JZIqfq}im)7O>#CI_1cw{GCCS`P*W z2F?PH$YKTtt`8v0=(NUU1_J{FOS+@4BLl<6e(pbstRO`JJ|V7a*RFm4{{8>||D8IV z)-o_KFqZ`R1^@rgaQzgoBLf42o~Mgr2*>s0jD&=Y1OZ;&)C7T20ahVJ1tkHO9ZZ~z p7Xvi7mDr}Su4aD8@RF6`=M46_)o0xj7#J8BJYD@<);T3K0RTR{HMal& diff --git a/htdocs/theme/md/img/star.png b/htdocs/theme/md/img/star.png index 4b6b458467588e6c444e1d4e23a00622db915374..d6496ab6f892098f74795a9a7f6628f8ce88bcdf 100644 GIT binary patch literal 175 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SglzF;1hEy;nFHn5I<kX}v zLvg}}MN4_QIW-fLf1LO*uTgZrQhwWihZlXZMqLk?1B68D7`hfQR<=27c<~vWNHp&4 zOw@`w>7u~T?w~QN!JAY0u<?Q~Ty0YwJ_$}}7mYBkN%dgb9Mqs={HE)Xgvo;(-?of4 bM_vYnIvpRKwe^t<3=9mOu6{1-oD!M<l$1I^ literal 381 zcmeAS@N?(olHy`uVBq!ia0y~yVBle3VBqFpW?*2bSvMz_fq{XsILO_JVcj{ImkbOH zT>(BJt_(^H%Zj}gRCp|_@><rAw7SW6b&K!PrsB0N!E2gRR&|GM=nh!Zo3d#_-IhsZ z>!&4dnjW@kX4uC0>01{^?_5y1eM#p21=aiJ_v~Fbb<e7tgDc7pu4vr9rtt8p>H9ZS zpIqCyXG_kZwF~xdF5JJP@Wkd>`}Y){+cxFgjyczkth;@B=dII+?w&pV_TkMB&+qk0 zOv(W{u_VYZn8D%MjWiG^$=lt9p@UV{gMop8v%n*=n1O-o0|+xZtudLwz`(#>;_2(k zeuITg*hoit)(ck#28MV~7sn8e>#p6;g&Yh7*!<tCy7a%$t@wZauw-)m+jHgYA2zJ} z;C%T$|GED2=d&a<!h(&i`3KK;S;uZ5t}B#sep}1O-q`*2Qi>{5;_sW>HIYp{E+Oj8 h5&FuYX3sg^2JX9AY|9#7ECK~9gQu&X%Q~loCIHexpvV9K diff --git a/htdocs/theme/md/img/switch_off.png b/htdocs/theme/md/img/switch_off.png index 28a4376fb438b41bee3481e229439c14b55f8e1a..ad7e703ccac95afb2a7078f244ab47c1a47c26ac 100644 GIT binary patch literal 292 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sgy!Lc)45?sTd)C&AIZ&kG z;$xL2DaVsWO>?hZ-00)<=7`aPM{GGq=IbbB_PB~Y;BVq+5;J?}JYB(Vwn%3|x8s(M z*8AFRzb%UA*XIU?-<%RwyMt%j%GZYu%#1nN|0-xhZL)CTo|hl?c8O0;(B<{DUEE;) zjPcaGBlp)$NzFRJTCC6P$NEu&^|q-?{2i;7RsM!qHw16LS((`x{eIdCucRwmgzmqt z*b=)S)k0{oTpR0cqc9uylg>TLmRZ}DCa@oSm%_lE$9nntrEfB~(@f7U%y2uNec%zx x@6fcvoyE+@UlnQIm~u@uHaI%?<Mn+Er&%+X&FZmJVqjok@O1TaS?83{1OTOkeKG(5 literal 1252 zcmeAS@N?(olHy`uVBq!ia0y~yU@&B0VBq6mV_;xt+wdiYfq{XsILO_JVcj{ImkbOH zY)RhkE)4%caKYZ?lNlHoI14-?iy0WWg+Z8+Vb&Z81_lQ95>H=O_S+otf>r`6@A}Fy zFtDU}x;Tb-9N#+4Hzy=i<aqt_d%y3UDY3fIpSgTXN6pboTvJ%xm>Pq^Sswc>7D#r9 zkX+1NevH-e@HvTVdN*e8xFE4zW7diYR@H4n6Sr_(;c|U*e9!N+d$re(`kem4%+#e` zd2;XfxyA2(&M$sv>Hh7VtWAWDSp4d+)pwO1WhlJ2{qFSr(DS_yVisLn7i<0bO5@+h zt%p{19XCIr<?!mYo3Y6Q>3yxgU0l+R>-Ec<+uGheUiR+J&lSb*`i_~*>pt)&%th*7 zW!~nq`b!e^BeEr>q!w)sxn*Q*+xuNkFtR9o@t?VK)s&umt`xCK-nDDjs-sEP*P<N6 zrc}*mYC3-1cj9i1`Rp5J9RGcLfvZB7j-Kz#*|QJpe|xpRt48K{het+KboAq(l`UJ# zW;!huQ8Vbsu$i|c%X6+k8)MY!S?&Tck3K|QSjFbJaHX2qbd#!c#^&M+rzr6-tzv4@ z*<GBO@{Ub~gULn3G&gsx=gJTjE%%C*m7&?buUfNYiXR^5_VM%GSXF9%dmEpC#BqJ` z`qZpfYI?o}dZ~Ap`C3FjJKy=*VtRnD?dxm#3zlDr<Ytsp?V5Qra*NQGYuv}~ul^ps zXjU`p<!kq*m8^ZYEJiQ5UT?;MgvF75d+WP4m43;)cY^;uZ}H#$*)n!T6a4Ld&B&fy zfBE)q#%$f6&zKI!&rQ#%nY8a-uS=oNjFXqIUJmy6?hkVM7AE|3r_r$)zrX$Q5|L=` zIP`@3Y+mST=NSeOM+|;lwp3ep_rcoj{hRB2#l_wA3mzS*_VKx=F#Ys~)CBAH_?o^Q zLX%IXTK;}2`D;60!IKY;Nzsn2Z9ZxXk{(CB4di++YPL$J;m7(EpN62Oi?>uN{GBro zN}PT2UU*CClovVqX}fHk!~M;5SAX*HiBX-+Eh%Srdg@2-mc(g`*UPBR&wupi`}2zD zuO!^q_mq4|m3ybBcgZ^bqMS@em6hb$$xAC|s`T}p^IK+Te>(oMV78a5UaVYdRn@e< zBzEQJy0^FS7QFbG-mzLVii`Es#HSnA{@qjXBJ$A=r{dzejeqZ5zwB;nA@DihDf?~2 z!@}JA8=H-n?|<-QxB5-H3&*$LuQ{t+`#0y^`^T60?H8!t_pEl;HtV_|r6eu*?6!v3 z?T$qqS1h%rzB1bDWxK<JMQufBz}nJHLA4pD#4En`UjO;#OXj+m*$LMlOy+qf?b5xW zIzxV@lXjs=yZ3?R20QZk9rHx5Ma@}V8Z&>{=`URzi4uBirf)lbOsw*H@q0tH8UFs8 zFH}fHPChd6tm)?e2QIVBWN20D(+<%Nm8(w@cT{T@Qd}9ua`v6Av&UZfC2~Q}r$x+f zD$h`r$n|LcCGqh6@glKCex~M2i+m@k1PaWk(u~o%sxe<E?aU;-x15_3@4nu8Zd#Rr zTVtU2C69?`pUhZwPwDy;<&uZB?oGcujP#dJQCfFoqNMciw`Ubj9CMU-@<H>zc&Edx zB|Sa=be^8@3O3Wue3d<!SAmy#LB0e7YprzSlG1s%DpGP)r6eV7zwy^~a5cDl98Y9m PU|{fc^>bP0l+XkKMb1O} diff --git a/htdocs/theme/md/img/switch_on.png b/htdocs/theme/md/img/switch_on.png index d4e32d98f57ff37c78bdf1e6b4235e7fb4cefc17..0f72bfaccd50450154b10e9563966bf74a8d68ab 100644 GIT binary patch literal 257 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgobYsU45?r|dd}X9IZ&ka zWBfDIe=E-zO?u-f{C3jKrj8w~f}Jmvj95ez^$sX4Sg=FVwR}O?Mv3-^V*Fdqe>Z)8 z$MVCmUmo9LcV_M}ne=Dj<0I`>pYLw$>&fMR+dkDRGbiopx23+0pM)k0{$i6j_QsQG z*++-g-DbK0N5Asy+P8SxuU8w=g<g7_%lGnb3Y2_#nQxB!+{BB^qR%|8;!-*P@v-w4 zDa#L+@5zZa>7Jeus^;~1#+};}E*3uVo%{3E1$&WiF+1|++zO2l-ygjxb8+e2%WD}J P7#KWV{an^LB{Ts5(*1S^ literal 1228 zcmeAS@N?(olHy`uVBq!ia0y~yU@&4}VBq6mV_;y&ZTC-SU|?V@4sv&5Sa(k5B?AKk zTavfC3&Vd9T(EcfWCjKX&H|6fVg?3oVGw3ym^DX&fq{X&#M9T6{WgcZptV8wikRsP z3@kpLE{-7{$Jb8t&IxsuI9`9>y!hPC^>JR&SzHoIp3KKILYnzGs(lI;YKtFR%k7*L zv9loY(4kf}y_g*zwk8B8-`HWWf>TP!GeBCN)A2x-k8};=*8bbKtIyB;8FMH4*1e{r z*E#2AdOoxN|Nr}s^Cy1%`0-($ZFS$$%qssLLvcYfBc6g+kDus^yV=dD`MEIc*YYaQ zB%c3G>UYnczW>xT>}>wdvmGq@Z}+YK-9Eo2P)$wEucxPH&y^fALt`^Nl}A@DPv<TC z^jmy~h+p6(U5SroPpWU~oqxRQzuZRKZmkPC&phh)zh|DGdb7{wyk=L@VI>Bama?47 z-*Qi7PF=HN(oQXbDv8n)tD6O^SzK8P1-ZLi1Jos0)tZdmd)hcV)^eB&vm8wIx)pzH zc4Wc1iOXItGg4BT!Ft4DZ_p_tqm#P?<1Q*HwJ1Fhiint@KHoo}FvE2D`g`sXMrmo! zS6mTV^;B!^(mBuWC`Gsb>d=Zc)Mn&JQt{NR5Ikt<&XE`_`Er%x(TA6(1cj-ozFx_> zc){6eIqKJ+Evr0We>nN~e7B>Y&we@Xv*ljW2D>vC8^d>6)VG~}Cu03N`Hghdw9Ow` z!gg$}P-0=6ulnpPPv}w0@Ae#qDox+}f|fc-ojxL`DAZeJbwcmIhPzvT@xG68Yb}mX zWS_4-yJh~}%wul+Mpo4g=IiGy&tGwF-^AuQe=ll;1|?k))oEP86xk&{aki70EsMy} zYX6l}CPui$Tz=DJe0cTqhY!_vZ26-3Jnf!aQ{XhI{x>yUGo|kv-rv=@K21idqHq4K z<((oSo2(u=e$b9!a%`Qk>>{(pd&AA8X&>YNhKp<osF@U?HT~nXuQPfl&YqarnYC@I z_U7jjZ|=A4YWexC)N88N*HZ#wt?Q%JZ|?r9arBE)<;6wo!xpb)Os~6I=@g>6#M6D= z_pZ+0?)UdCZqeZA5_g}Z_G8An!y!EBPR{=xth>f|?tX>*Ww!6($0MZn_`MT9vE^7! z;nb5)l=<%0_L%YdSThD(ojqgjC8MJGB~MlsuPFT!Z5A0Ndp=x7GwbB8Et+!a^YUje zx7hR6qF;ZX+wK|9@4Zc~+4zHv)zUA>DE#rKOV8ijEo!N|*{hdUaWd@Y`h|D*ebF=Q zZz!I7$!N20hJXueaQ})$&vrXqORAa@6MaT>f1%o*L+@hSS9lyt@4db=%|2k^{Pj`q zFHVWvGsVLEKVP$zm(y0^Cp&bONN;EG6aIY8^8H-pV+FINzwo)gxTm_v<I9Sr6(3*c zXR=Igh;nM)zvIRqmdy@%x?VxY8&-Z$y~riv-~4(@j@)`r_Lbb}mvnUl7ZpF6KFj;^ zIm=V)_UvTqock<WXIp33gdIkDQ}QGwg*A2ywJp3GKKc5mv%9`eTel}JZ2!@!yRM>V zHq0>jbLGmF-5q@VygXB!c@h^(3W^FBn^~4FGz<P+>b~p2Wt-_8Gwy7fzCq9a@GhNH s-rw`YU;biNZhGRKX?Nk4;XiYkf_?8jX6meCU|?YIboFyt=akR{0QR*!A^-pY diff --git a/htdocs/theme/md/img/tick.png b/htdocs/theme/md/img/tick.png index 9b035d99511c7edb7d17f84e171817e6edee3b3a..8e05ce551c7cc277ca1271eae12e91b77401f61e 100644 GIT binary patch literal 140 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sg1bezThEy;nOC&ioK4cJh z%-Y4nFA-<>LLh8Wcl=4`w(B#zesE}SOszQmfGbtoacTlXVjDNleTkTdUS9-)W}KQN s=vAQo`}_yCMJ)3-**d5?voJ7NbxWqs(mW}`z`(%Z>FVdQ&MBb@0N^7mE&u=k literal 227 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4rT@h290TVA2Tp8cm()_xc>kD|L*7ehC3ZX zjwT*{eOzI)q40Xu=Bqt(?k<tos5#@#f*YT1`yY-?IbEQ-)%5Mp_f?l#KK=gOe{;st zhigoCyT+WzJpSg)>9^+_toLnZU|?V@3GxeOaCmkjje&u|)6>N<gyVYcxr<y43Oub3 z1Am?m64Cnj_x={?MBzhsYu^-DD0RP{EV5qqJkP}|AN*x^aoc?AOJUNuI!W?_=|>j5 h)s{?FZ*Tr{uiv<p@xt@vHs2UPrn>sMtaD0e0st>RW-I^z diff --git a/htdocs/theme/md/img/title_accountancy.png b/htdocs/theme/md/img/title_accountancy.png index 6e7c2a412c60a614c7ebd91e0e06df4ebfb46191..f83b7635712300abcf059f591e413105286f0bbc 100644 GIT binary patch literal 218 zcmeAS@N?(olHy`uVBq!ia0y~yU{C>J4i*Lm25-&)VFm_<g`O^sAr*{oFZgpEG7xZo zIK5D}!d-OzL&GK8{_XF5aEN(j$jd1_QOlRic8c5n^zn4X>C)xd^PWlfBxz_Z<os?o z!Qk(~m|r?VeK9jj4b1sNjKBI%6H3)O^gK*%*;1Wgp)YS_&n!$-^0JVA=KD9DE6iq! zkYBunjSs^#-lhGwe$A*oav`X*XJHqMo2L2Z%{>dv<k(JicxJ47JURNskB`$&?`0^L X@4ppoUai2uz`)??>gTe~DWM4f8tqk| literal 1019 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}Y)RhkE)4%caKYZ?lNlHo zI14-?iy0WWg+Z8+Vb&Z81_lQ95>H=O_WLYCVhZM>`;s3rFfey`x;TbJ9DaN4c6Vs1 z1lx!EvlcH-?zQrrRbpb5nVM*n<|)ZxcqR3LZ){1dxzI(|zpSyGtQTV^I*GUhiVK@g zQArJ3Hf4E_$y<Y&$7im6+*4itStsI6QGvwgEV~~!s@MOmegAvU`Ok7<#@U~)c1!Co zKkQn;X`jGiI_F@<zWhVY|JxsDe_)fch%dCdwB`KMGuI;uHD$zSG=IO?zgfI+d1G16 z<HDS|d<|xIdZt<!wpJ%I{(rKRp@5}+k?2=V1M|j(FTE~w<^Ac+z9@Y7@z0!lU+-A9 zp8X-9zMOjjbM{6?b_4m^#N`g&W!8L;bN5VG^5(et<<y5<JW0yyR@>|sEl<-w{>JA0 zA>)hxCjOtWOgEvr&_3*_do<I(>#dOy{ku0v-A@+(7V;wZLD`*YEw<B6{WP;>es{FC zaF<TeRc)X7$M|ZRawYT_&m2BoVY+p{QJYxH#Iiqv%d0<H*73h+uHZhO=o=xm-@#~l z(YA-_d)nTrGV8ZBzU_Q-++?oOZaFcr2Zn3BgYphI%o7csuvhixmztH=8#8v9UEH$V z<anV?pSa8a#g^70+jeQo7HRPo7~Z;F^il4O&wBYzoo?sM#=ndvGG=*RU!*6i|4n?7 z<hbQ=@D;9-M+;T_^Q|5od=ZirdHj&YKC8FCzb;d$)k;@OUVNr;t>+P2)^$fVSFn0B zEqTM7E6N}|v*Y$g)dlC<R^ENdUhY24b?R=_15r!vO-iX}n(f6l&o3qZSj5_(^N**V zSDN~<VA-?TiMh6Q-5;Az&R*A`ce;QnJTbHBPJj8S%pH8~9~}7Ro;e`t{YCa>adLr1 z->*sP)sxw^nd(f+&xg+n4j0<i*#D?JI(w0H$G6#+Tl$_}sxYyY{<ZHw^~#RM4Oge< zna`*-F?&5z_v;Pop8k)Fc^xtLMJ@MeCGS+fGR34XY|}PteLe5VKD(I`?D9_9P2#hX zxzOvyJZpAM<h1+NA43JX*eA`L%ecuPXbxvXU%>D1RgVK2=5#(3{4?w4MwQf<Y^kcX zFIVgqzG1{8_A}Y{*hl}D*S9XnsT0<El;9dsY0hXPC18ChPC4h?sk^~H>-pZDxEF2| zpcK>hI{8D)BH7hf-v5!1?Orzj=^UGQS+l4|IXgNV_c5$^IK5%5`S<rX7p_+?Dp8fp zE-bU!S@?&kcNvSN{&(xoH6}%KPn`B&duy`#>+8C{hgTT3CI*MRxxW0vF7wT4*Ph1y aXE-^Fz20tf>0Sl~1_n=8KbLh*2~7Z<A=b43 diff --git a/htdocs/theme/md/img/title_bank.png b/htdocs/theme/md/img/title_bank.png index 034a8d0c5e4a4264c8d3dc0b9185eff071087d54..7ff265a49172eff0f2b0ede94ab364bbabe33cf2 100644 GIT binary patch literal 216 zcmeAS@N?(olHy`uVBq!ia0y~yU{C>J4i*Lm25-&)VFm_<`JOJ0Ar*|t3*-Y*IFb_< zT@m1HTgkIu;-7I$Du>E_0mrtow)H&!AAV42Hh$SwU>st&hds-!y;|~2hj~k{V*5kZ z7;Uwf^9y`$2&lDHwEcEC`r~1Io9h9M1I$c~jlbr5{Ft1`WuUczAw41CpSoZjt6RIm zF30~TTX>r<ED&T9uv2$SIU!+^bzy}gZ@>$ODJKLNc~hL)1q0Ih#s0N0GTh`nb1Ud} S?PdlB1_n=8KbLh*2~7Zp7EMY3 literal 796 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}Y)RhkE)4%caKYZ?lNlHo zI14-?iy0WWg+Z8+Vb&Z81_q`*o-U3d5r^Mi^X~{vm0<gD|ISPk<B11mB#EpMoAg%b z;GC>1GhG&O!HC^09tGlgcRISowstS5ZA{$4`Kx(`fa8T_98oPCPL3)oA`JcdzMsEi zoi|T=etYryv-7R<{yZo+SAMSi-uJ)rzE{rw{`lXH<H>6(>IB$7eCVj%_Q7^th`rAv zrCrMV^d2AGcezukLAB(<xf;9A?phve%eFjTZPrkxu&ZP8jKkR$K`h(E7{9z?dhvXD zYk8sC`?@10^Eg_v4>sO2V7c{U@2AVEImaJq1Yh`n<A`<R-tP2`?Elvair+dc@PcL0 z-yc%-Nn+QtPi>!AE&kZ>R&*{yE#HC1jeB3!DCa%ezF@2NlDmD&3l_IjSjq&195i_N zi*5cxt$7Cn_lT>^J05+*M5W`}e^1A|83~N@A3NPM{d`{L-@%tl9=}y=c{}BxDch0- zRi?px_77^`=p1?VTtc+fx<lXjmgBcPWrMhvteYFxYt1jVn8&be5vOp4=9~(X7|Ry@ z51H5AatJM5D}D3KRY#SaFa_!U$3M^5dvwZiH|>2=r*C&8KJq(fTGpGpjSh>|?BAZc zdUX5ISu0;0a!QEfaOyvrSRd29K=;~>H+R>HhbY@ke9m5A)_CpYCy}^g51Vq#r>|xX zJ)!m?^w;-@XTRAE{^bAZ>K8ij`bLo8iiK7eR=%v-d*G+{$9I-Ck#9DwZ@K?4{?C-s z{A)QG8P@BZ6L@}eEjIq4T)N*nw1D&Z2PU~gKW(;WeOa(IhVQ_&H&u#DzZc%vXURTI z+cBAI{jrxN*YtI_OY;RCnkn$UWY&}`|Ftcq{y)b$(Y)*2u0@{@EU>$f?=$<*JHN7< zC%>PRm>-{ME+bNUlQX?|!=4`A!aeHCU&?xV7l+&pVEnsHBJ07+JJXf6hBY6ElC=x3 zQOREG%&?WCB>23vyUc;4ohLWWI=5YJaryM*+rN6FWB%)Q+`3u*fq{X6!PC{xWt~$( F695vYfgb<> diff --git a/htdocs/theme/md/img/title_commercial.png b/htdocs/theme/md/img/title_commercial.png index 46394177698fb286ee15fd47544bf6d0de642807..2474d61bb76d75bdb846f71f844aa0aa6e2f0e01 100644 GIT binary patch literal 176 zcmeAS@N?(olHy`uVBq!ia0y~yU{C>J4i*Lm25-&)VFm_<a!(h>kP61P6AihX9C=um z-}dfM7hJ!@{R7|ZY|eWr;YU9G=LmBPnvtNKwygT7Nq_wkMV>E5wVjlE7WB<EILzyN z=tXe-&xsTMYApD_c!B5c|ABWp9Y2Sya1vd0A>29JYIDMlCC=$Q)$dlG>6OjTu`J@M eN;rI6gkSF5sXd$(k>U&t3=E#GelF{r5}E+S)j`+* literal 828 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}Y)RhkE)4%caKYZ?lNlHo zI14-?iy0WWg+Z8+Vb&Z81_q`(o-U3d5r?-<KbtM=C~>U*c7|{E)m!}gS?vuLF^Xz) z#kKxptO{~D*j(T2?(fuJb#XDff0MeXZOD=409#G2u8vzvCPs8$Rmt6S^Ubl-n+<qo zr%ldbYs*PXe^&df_FnD1av7_9<^z!rj3%&7YutXI_<`(&1^v0^1>zaoUhp?2|24AX z*)wHfRrfuXI)?OLj1RW)Olj=88hcuJ=Z@J{hR=N&<QsSeKN@hHVe&8iB@!TX;rm;& zIC0?v8V_DCS@zNYfaw9|bIjoly|e7sB;=|vD)8?K6j;WZCN_gHk7;^?!!ai*vBuy7 zF+vP6589M$ctsktKCs+a?Qgg$*SCwQVe)}eNq<Jk1eY3jQ~!A$JO^Y7xFy0ruzhk` z9mXa$iN!$wsI^G&+fN6MmrV|m&2nV4NN1TNe~~%Cb=O31sRK+KSY)o=(s(TTfbWA+ z-#MO=g&pe~*K-+N=hzX@H@z`kD*qd^1DnMHh8X@k>~b0FXW8w2xnp*z*Fk{-(HqOQ zes6F;kluLmgm&bEjT)X;n1444b8TA1!{o!{ZX$N6Xra8^4vrqlIqw6TZmBO^_3FyL z6%|XLyVz{tw%}WHYKMAr_a%<&T*n+AluQ!wIlUmVq2f|oyw%R1=NS34&8or<DSq6W z)ysas{NktJ&$HatZgieE`~6ks;76DA4to7s%jnw8Bz{AQ!8Ulp)Gt+T-y7do$#YGx zUB0Yj?z`5ew_F<LNx5<7LysPG)DE;f_A6>TLs{11sw2A>DekOKIU+V+aB9ZVJjNdB zylvdK?uY%;f4L>lG<BUcLv!2jW)6n>-v6p!&xQ$cxt{Fw@+-8taN#Ahb_Msf2-i4| z=(eV<Tr<iT4m~<_dGpWS<xg&@Ca+&s=xp>}_G@0TBf}qI*3657V)A{Pl77^AH9e7L z$a?h8d-X5FcV|xon)tuUGf1mgul3zOW1haRhL-=7>x&L7-2ANLzsLs9nFS&0afa`D f8(kw$f0N&L>fa0_8Ncfc3=9mOu6{1-oD!M<9Gqjm diff --git a/htdocs/theme/md/img/title_companies.png b/htdocs/theme/md/img/title_companies.png index b2539dba849a6f4a1ff231d2004df2b39607f582..4d0f7ba2a04f5abf1438fd1501324ec0dab07539 100644 GIT binary patch literal 146 zcmeAS@N?(olHy`uVBq!ia0y~yU{C>J4i*Lm25-&)VFm_<NKY5XkP61PQw+Hn966ZZ zzx;QHRa?8Wt-#l)_o$IT>)!_!hMPS6{%CY9Ivak`=Cy0Z)}y|Y9W-x+oo<TX7RC~? z`peH<Z~g^o3x#~XT4Nfs<gXit$s&b<12(a<zoofqW$j>KU|{fc^>bP0l+XkKwlXx| literal 562 zcmeAS@N?(olHy`uVBq!ia0y~yU{C{L4mJh`h84Ci*D)|KuqAoByD<C*!3BGlPiA0X z;4JWnEM{Qf76xHPhFNnY7#J8YdAc};L>zuQ<Di#}qd?pKE=Jc00vt`#Q&<I+*n}ob zXnvx^c>l1uz!ycE>aSWq1ms*kJUKW)hFP!4Qpf2`VR}iuey`5qlH10&H*ap&eR0~S z^sD{-knpoxJd=dpiV9~5YriRd)sS|L(aLmLnQH0$$4kx`8oy?e&+_@pU!ro?TvbOp z@fW{mdhZ@D1?D=&-;DE_9|WKL>X>Z#tmUq!6@S3q;yTyh$%l#_JY=2E{@gq)srLLL z*N=bAI@Zp*S$H6QD{qpd0e4O32Wjn%JUgar5%&0}oUoWT$?)WTu8lLEoL|&2^QPH` zSmzV+p6#rO#cAIx4bs<fZM-|H<=UAyF_+FOO1+OQt?!JQvcc}d?X8oIqFJ`td}nL5 zuzg^nkahZKx7R<J9g|8P-Sm8Yp!~d(){&puFD*7`+cV{_7O3X2d3qpt?dguIYyZS0 zDJF91tZ>=8X-WiJjqzqt{|%Mr{j`KmH>eul=H`g*(i1;dc(7M1cZr7%b6UgG5Z%lv z`sW>AS*&c)ES;mdF|gyO*TG(C*V|tNP9JxD6Lrbe^XtD`Wqr18Ip4#Iblh%Cx#1#s zTAS-Mv#-s{4bcx`Srh*%D*kU<_r1Zq^q;%xS1Ic@uhh$n&#n5#(iwE)%-j#rMhpxL N44$rjF6*2UngGta@lOB% diff --git a/htdocs/theme/md/img/title_generic.png b/htdocs/theme/md/img/title_generic.png index ae2243275490d5769ba220fd3ee00bd9c3175a3d..ffb07138f9669b5e595a3ec4a405f62a4e3de894 100644 GIT binary patch literal 197 zcmeAS@N?(olHy`uVBq!ia0y~yU@!n-4i*LmhQHi~JPZsBJ)SO(Ar*{oFF0~BIr6w% zwDRrV{)U-T`P^Q&EwQT}UyD7&@4@|b^LqA+Q+76=+m+3~j{8~(?{V)VnwI^Yx~4G- z^Ee$uA5CQ{Vqs@sY?$$YL4`p;ScZXxfx)pMU+GOR!%Ag_IgHHq4BzS*cq9xG4jfo) zVxRONh-sRH#jCdG=BAp?YaRqTch6EgQ_G-flXIbIKhpsQ1_lOCS3j3^P6<r_35!67 literal 789 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}Y)RhkE)4%caKYZ?lNlHo zI14-?iy0WWg+Z8+Vb&Z81_lQ95>H=O_WLYCVk#C7b9a|8Ffc9hba4!cIQ;gyW5$$l z0rn5^lR~F>aAqvs7Pe6L$%2K8rrayy_!5%E@9I(&SfyqAZBbm+mjDfpCXp_6!|==V zZcS?Nu-URTBU#iWBTz@T*YxbMv}B)c)BhiG-?iKGOdj8(1CI}Wzc>5m`TA#P_w+x% zWOuVue?#J0-uDLtmIWStx7A>mVE&`m61siKZ%y{_vU9h+KlZt`M=Nj3;SaAZ`s9<J zh}Sf|-O)4i(27ONL)*+BtJFD5hJTPV6a5x*BxS~oBNq?d(za;*9-dTU8+SCkqT%<B zmc}*f4_jNvDjeR?tN)S7>qcww59#{Edf&>Goe$;q^p<~2<l#^2c{WS-koyhcuw8~t z?+bMm_!rB6p5f*3Y&PSIzDJCErsmIoEd8g;ynyNVB<`yQ!RI87FxIril{`pvtT*Mn zCE&ns$MM#<^QpkI0=4hE!eZn^&*gg5R10_c{fTz}KZ)VrL5poE#j024p8w_4pgT?P zOX}WBDqFnU5~RvEn4gk+ej!AtXzL~w=1E7NR+!Fq-h8xq^^`WAFAq(7R7LLQG6YO- zoc<wGC`0Bx>wzS;XSa_Yh}l%8RV@CGhk2@#(X?Bv4;=T{MXac?PsuZ7-m2%hXYI-D zA9uA(4}Sh!j4|Tvin}XLx_MUc$v-}N<%`$D3t3JV8r65SZ+^*H%GmR8xk138uV4Nw z=XFds`scUn$^Uz7Uu~ogPJD7G;>HTbicL)Y*O$(VITf?M>Kbc-xo^7rvwxy(3ygOf z&*}TI<L0v}F7Xe=apv1UxbM?%Z)A-*+WPd^iiz%zZ%DQ77iTCj&2XB!hkac_lB(yW zo=Y3geCKAc5<j|A`QzTm8_Po(PR&$zs$F`(A$-@fjBE3Ex$CH}T$a4&*nymNm*0k6 wdGeHDg`we0_NQx?8tsnV^m68(=D+-5lio<SB+e{jU|?YIboFyt=akR{02tA5O8@`> diff --git a/htdocs/theme/md/img/title_home.png b/htdocs/theme/md/img/title_home.png index e9273e727f59a5eefc3516fac772d8326f64804a..b832916f5e97b28900f42852d245eead209cdb4e 100644 GIT binary patch literal 126 zcmeAS@N?(olHy`uVBq!ia0y~yU{C>J4i*Lm25-&)VFm^US5FtmkP60R1;!pG_BOUP z7aALMtQffd9p{qfINc}Z5>a+V;gzZfQ^P+t-j{pY?tgSP)YABVD`T0gX~)0H-UgkE d2_g&($vt+~Zw@%{F)%PNc)I$ztaD0e0sx#(C364( literal 721 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}Y)RhkE)4%caKYZ?lNlHo zI14-?iy0WWg+Z8+Vb&Z81_lQ95>H=O_WLYCVj8M?_hu|)U|@>#ba4!cIJ|fI{_ZOd zBFF6~-;VVU|0q!3*fFg;tjw&b=t1K@<E}1^6&%-+v^%D5?Y&hox1%>AB15^uENuCl z)$P+$CU5-7)}}i1OwJ<aeuLTD^Y7K{zyDp0`EUPHiS);n+u1F+MP{iVDDMByV!<xM zevi?=F>?CcIUx<Yk=GuSvsCcZu&&8rvtcYN^*z9}a?KjY_go)tfAoC*N1pMptFXmF zhv1v?f9=@xnB=EE*mAJ$)!)$jO3df2wQmHU<$fSiARHllMp}3F4Tg6N`y1LfD$QY7 zKbIw7!CupnExo!Aj6Nu_H3o6)cyyaFN8jN&#}2+4hJ7v9-bf~ho?xvHw`P!GyEgaI zx}^!`1->@@)p<e64`yngsbskpa#`4P-lFu=4ar_la$6f1`Bp9q7k^?=mU1BX!BqzX zdxpMMW&e-g;GDyDk0*qaz4eI4BJckP7jbS_Q+khCzcF$yhd#sfD!)Sv^BbbG?%uOY zm{T`z3ya>|yFY7stezVz5e&^b+vt0KVpfA_=%w<l@2qZwe>wBIW|q*32mASJ@-iZv zAIv*ay|`_Y&<*xGQ(t_#aCk+CfwBtM_Tsa$VJk1M+uT-kdP`#hOPb#XqXqLWHwc?v zynIZ-fqDHq4$YfqE;<;n&eY)WRQUWO@}~}Gq;xQ=*p2m-mnPH*b~HpT;VOEt$DQ5n z|9!p-4V?=Y1YFqWpB0{9#}#z^`Z2Rb>&m%bhlGeQMIKqI#Cd_iP-;cO>yp)(4hkBL z@<n|M4{TFNNY=P<#WY*y0{g1>HupU(u3FuH<#ny1NzYxuAlKvC3uW=UYkn=*djF$% Z=;|NS{}*-TGcYhPc)I$ztaD0e0std#H_`wA diff --git a/htdocs/theme/md/img/title_hrm.png b/htdocs/theme/md/img/title_hrm.png index de788526bc1e458293e2c957066e54695c1d44f3..33114ffd1c928c7807bf462507874b45f3f29aa3 100644 GIT binary patch literal 447 zcmeAS@N?(olHy`uVBq!ia0y~yU{C>J4i*Lm25-&)VFm`qHcuDFkP61PS5!BM6fzwD zc)oahleNel?n~(f-`hm*$SQsL#C2}3orTMtmlh#H@BV07TNm%LcCWo3AN_OA{CEF$ zb1l}{d|B}K8bjY^BdO(=s}-~DW41+1y~11UsIlw$GtaA4_gh*@GXpnqMW?JW4Xgj# zV|2Oh`d<wP+pEEy+gzsCmR(L%W{@?jn#yc@CGM4LYLVXlT)hRy#N;m<9<JFOHeq+Q z8Z+C@*=GtI4X!<Bx*~u4N`uu*m9#wyFWxT;C@BBRC^~EEnqYx1#St2t%H2HHDE$)a zH*(V0r7a{a8fzuIy{J)Se#o6oFCP7!5o~w(+>1}IALQ-iaes8boL%jw?(~-{y}G^~ zHP2;nFP_mDXF0bmO8EXaFW#&>qQ+Hj`?rW(F;ToHcH#E!j)kWp6=knJaObHt;pi!F zwN43KK5512Nc(mx%caZ3xF4Ndq2VyM``kPo*U-v&Up-BO^-T4TUSF^E@3r;9po_bN zW?TvBUT!$q=dWSt#VR$U0Nuy^p_9BFeXqy<`oO>OhQC5)X!tw^1_lOCS3j3^P6<r_ DCqu<_ literal 1028 zcmeAS@N?(olHy`uVBq!ia0y~yV9;k^V9@4ZV_;x-vF+k61_lPk;vjb?hIQv;UNSH+ zuqAoByD<C*!3BGlPiA0X;4JWnEM{Qf76xHPhFNnY7#JAXOFVsD+3&N7h*`4a9bF#G zz`)$%>Eaj?aro^FZ-3!HiMIJOn=UaiH8qHvR46V|nI*O7$PR;D1uxx%%his>KdAp; z|3khc_0h3bPBp!rq@L>@N?H;w+)PE;?PYiNOr9f?ersb%gX{h$r_X%xIlt$<<^8V? zv9E%r@5*VhFrAlgeu2G&d3VE>eH(c*7@jo>K6o6)c%S1AgC1jbBhLjD-<Q&S513dV zsDEItV6kCIGiR<5FOb{8G>5UxMWye@f#?UCA6P2Z#NHI}WZuqtAb$Bi_IC{84byrV z>SMIim^D4$-hcB^C}7L6IOgjOZwnoltYVqZWYt)=;I5Igd%_&9XD_23+a7Q|z&!6L z<HZ2gA2J2}JNVzQeCs$;s-T^od*u(`2Cg-&Gg_0^>{-m3+0DHu>O=N{EhaP67YkHK zybzda_CV(Y+YAQ1?wkd^*VffAeDZAOSKhop!fsJzwCfAC4?-1syWffKWJ?JA9(!s1 zflpyxE#Zy9smIDScCucQD^D^{eBfK;u>Op->Q5Gj&;QrdOnM+Y)At^OxZ3HW8+@q` z4!PZ~v1D?L(ck{5_^OW_d(Ewi^L`GlmaFAI-cNfxcb2!zhvoy06Hjpa1SWqzAf8}z zNag!!oqsuEKN25^87SP=J;^BDsQG}gz&z>QVy%5?lNscXC&n|(7oB{4%d2(k?xr4E zu()u2Po(O;PwN{DAGml#zFu+8Gt>Q+OTk40efyOe0?Q3PPj%sw<aKrY7S9m2r1^m5 z+ArmTFB$DR&n#<j&y86gwYw?j{^h;Ox6fsjFKZ}QGG_M)^9br}_GkVbVk^e;!0`)b z*J{?rvmGZ|!uF=ru2$Pye8;mbbn%yV6^Y{p`YtCX+l#vB@t-*{XWz>9vyA(DH$)eI za8G&de1LKF>5t0q7XMkcWXAp_ubWEZQq+2dc4vLiw0zMpDR}-Y4t1s_`Ms{T!cN;X z{?EL+@=#BiGW(xZAxmzqjq2{x_hUM)Waq)5vH#HSsmIRT?>eRZSZRZhNcqj2Ytpi^ zUk^R1(JqJzRFW0C_h*K~wa<A4_qAQE4RzyBX14!hoFD3<8Fe6=cf+0h%SMZPCf!|C zqojWM(;}lcGZr~th`zNvRx@_8%45wvev%h+&IZ_@dKSAiMRM`$^4^UPZeFcub~LK+ zlT?X)T)!><#&au2&5cV6tY$tboS!X|d*gZti=b13I4|$5qoS^o`kEgKpZ8i-a1~!V l!nI@9m8E*6k@NqsmYQmwJignxmw|zS!PC{xWt~$(69Byy#}@zq diff --git a/htdocs/theme/md/img/title_products.png b/htdocs/theme/md/img/title_products.png index d3c5b125bbef73d5cdc855a8a6ef7ec9a450235a..142d71505c8c1a4855394adf3a392990224b3ecf 100644 GIT binary patch literal 107 zcmeAS@N?(olHy`uVBq!ia0y~yU{C>J4i*Lm25-&)VFm^UBTpB{kP60RhQ>exE*S}_ z6AgS4&lp($PiB<PNE3J(cbH}IMl-2w7{TSn$gs@F*+D}@Dv*JJfx*+&&t;ucLK6Ui Cs~JxK literal 678 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}Y)RhkE)4%caKYZ?lNlHo zI14-?iy0WWg+Z8+Vb&Z81_mZKPZ!6Kh{H#x+vbZH3bf5X`_n=3(ds1*ol3V9J_ZIf zig2m?V_vl2fxkjm$Nz?mj7v+FEnl#RS9Fm_cgqhCrzMZC-TQj!jGOZ7H=E71Q&qgT zSAY94_q*)*3hhrhtSdA&^L;q2_S7PlJ&yT%gW3&+H1UT11KJ74B;QJYU|-RA|A77j z^#oRzoEla+-QqkW2A>Aa4`LPkXHxet%eh6&@p_WS!yuQ@C@&QH{)<P%3Z-AWRgF@a zGg|A!Ri=6~eBgdIzq3(t17i;N45=N{7!yp`{2GoQV1D|=%jt2T>Ib2ZS_P&R`NG+5 zQxAAO`+a8d?LOVc)4duK5<=MCR2n|GI`K4X!ZDVFP@!i`3gvlx4f+SvAB0`#2{L2- z)|j7Ma(JIC|Hd_CF}!yizW-imw}&y$dw+S?L_OzS{0G+A*t5p5EZuo}LgsOX*#|aG zxgE9jfw$4hZjVjt%y#RSw<TLP{bkGMoT+|b*~BBW7^@GY|19RM;Jed#<@eMFwY)M+ z`7A6#H@r3P+f9=9<v+l+=w6uWCo9GSY-?{aiZ^FR*0<EQG#=wfHM?<Q)x^UM(G1u0 zRxS`;V7e;j-judr#_6i;&%7>+H2kaE!TM+FeRGlSjW$-S7fxmFkT#iI-??i+caZY? zc`KHD_F@X+G2xsW^z|?s&l%x{#f}oKSElQQT`_BYyX*VIQlV)^8#Fj~J29+fyCBNM zQG9^+Lm}4!IfwbN2O8uLHHZqRcJF35z*$h+!Otw?QLO3uKQ?fme!SOGJHAzisu?@i eKX$bH$9%`~yP-yT+Cv5g1_n=8KbLh*2~7Zk7#v&x diff --git a/htdocs/theme/md/img/title_project.png b/htdocs/theme/md/img/title_project.png index 05d8ea630b88abf9e2bc09ed311fb223e818231c..da63e58c0687e7247d19dabd297eacf70157b943 100644 GIT binary patch literal 237 zcmeAS@N?(olHy`uVBq!ia0y~yU{C>J4i*Lm25-&)VFm_<EuJopAr*{ory6oK2k<z| z7tc8VSoX^0DS7clO_#V=Sd>rTEBlsWAL}K^BUJa$`QZ0s2bw1+K3V+a(9}uuEj~Nh zpPS>6<`!;O7<55k!uoO%)k_zJ1E<{1x^*ew#!ODrHw+SIZl)}iy0V2m;mEveIUFl8 zQxa5e1v5#r_y!oYilrPsDlhbH!k>j-uJ)~#4L@DBb;^W<iS|$8-=1H0O|7-*vFy$@ rGW?ewGXK6FBrLGJv8##Meh=g2#zf&dW}{~e3=9mOu6{1-oD!M<dh}pc literal 604 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}Y)RhkE)4%caKYZ?lNlHo zI14-?iy0WWg+Z8+Vb&Z81_lQ95>H=O_WLYCq6+d#zNJnK42&;5T^vIq4!@ngKTFzC zpxyrEyA;j;DMCF5S(;|C$Oz3jenR>OYs@kJhub}p|1h!Hx5TmpE%976L9KQ6k<gsE z?@G4k)is?h+PqJB<CTm93Y!<-%&*&Q+?<e`9li0Z)vx&s>l;=*e53e*(c-<3!CQ_G zd==al$}^Y8ioW0~VD@ROJbW|RdFFpE1Lh*;gbh3mN=y?Nzt%E8nJBd6bijfT$*^S& zpZ~4dT+M0`w%Rf^di7r+%@2R$*#p-*i%A-Y9SLp!eJ6JE2Z4%3oA(K>U@KeV##=L$ zE9_?0QLC)rrs-UNn0Ev$TX?qgVZ?m<Y`&H-#`UJQo44&w@IR>6IA756KErM%i{2l$ z%xX;kuCQ$2<!KHpo}|NE$5_9ob@S5CmtOx~m=w#rU$v6WhW`)SLEGt?ALJ?$zkG1G zS$pxna6<fMg)J;U*ydy=<uS2K#Vq{F`pb~j?SL|Kf^voW${ORvOWorle@6v$GEQLL zdu8_ftsif#e(>>W8&h}0zt{6m-Df($zM>~QhSlM+HA4(T!qf!}F{=_TPvZ*tq}yX2 zV0K_z*aBV$-TRA{GF7r9Z2J+UseXMC%hVe0<X|(+0Ey4f*9)EDVZFr1&}r^m!`d~2 z$(DDz$|jq<J>13*98(g{PTl(X)&<vZC%^t`KY1&U@!|2+8#)yqSTis%FnGH9xvX<a GXaWFt*85Tb diff --git a/htdocs/theme/md/img/title_setup.png b/htdocs/theme/md/img/title_setup.png index d7548d28709860acebe173ed2ca4954678f950f6..acf1ddf85b3388b4fb02a683664d7599d96ebfe3 100644 GIT binary patch literal 453 zcmeAS@N?(olHy`uVBq!ia0y~yU{C>J4i*Lm25-&)VFm`q9#0p?kP619S8cO{6D5v6 zT&+K&p;quON7t=OTA_j^7tbp+S#&Iz5H>-NwX~q5NWig6VV8yl2UlJ9HW5uOJ-u^X zlWzE^eJz{Z-d^po+2YHu-k;A86c<gpu{y4M(e$=&p(3@0OWI@uuNdcP7%zI&!FYCe zqL9I>z7<i1Of!luubERgzcu&#oU&unJbpcxvU%QXF8N+hUGe-M%9~b&=XuI}3VyTc zJ>QB*QRgoasebWGN^_$&>t3o#n_}aWF55k8!NR3;^W-#Uelgp5X3wRVqLt=qSMIFs z+rHx3s=lpC&%G-1O|DAqI{IjmjGowL-<e;N3gh_1yKc@p<F?U4y?yo3oM`8@k#c8K zR|<Y#J->I_tw|cMb}vu6RULTMY<Y>3d&pj6(-X`$uU%sB^|orZnXtJ^X>Io1wsjuA z->x_%Z0OQ|Mdpk1n@#!4RP)3q%T8QAzot_w*^X0owO`Z*%}LkJM1Q!VpLkkhr{wiF z>^%{Jp{E(tV#?1n^mVT~+_vew-`BwYzt8vQ#J&8#`g!Z#m-^KqpX#n@%)7(Dz`)?? L>gTe~DWM4fkE75f literal 1105 zcmeAS@N?(olHy`uVBq!ia0y~yU{C{L4mJh`h84Ci*D)|KuqAoByD<C*!3BGlPiA0X z;4JWnEM{Qf76xHPhFNnY7#JAXOFVsD+3&Lm3GxZ6f1NRtfr0s+r;B4q#NnqiVmm@Z zMUL11Ph2MR`-0J*4z<Zknv~upb94rTeR16z$<}M}bwWy_zNe|a6Kmub0nrePFJZPE zh9YJbQ>ISkH=WdC80jb9b;iAU^2NQA|5itapPO^e^838kJ`%YRch26*Ui<le_WHf& z{>R*W<|C6kXW`@hoIaOQC+$)V{a2c@&6u@9u)wLUp|$cG=YFmYYD+Giurv2N$o$TW z@iYs&4vQSC-I)#M2Ap3^H?Lf>;zgL(E4H#FSAI8|Zc{(JOlbCsey<asl=e^SH<~z+ z@j?HTJ2zYIzv8){eBfK!rt8yAoLg#nV|ing*Sfr<!__(Kdz07vE@k3pVpoa1ZIFDx zDnTS-`mNH~`O~7kMU84^3O*Jn@Lk-qmUY#EGEduy2j_WIo2n*nyRTjObN{K1VzUoU z^PH>yl(iWi2=k0ijywC|rGB%=rJn~T&54-qUB&W4=Eu=*=a>J<QO*?Ju<~TOEaNxE z-MR1cm~QwzIHi`%&y;`bUO0Q1+y}M-*OSVxw*JjyT#<V~R@daOSG3QvhTa2>Jy9!| z9$WrWSGhZnd6oDM%~X4)7=D|X!t14U)6$x!mgsGejNsH^wqv`;xU6A2x7p90x8H>e z%^0ME%+wpsZfifB=I^(rcU$}IV9h_g6;|rZ_O62Iy~kB#xBp$aWOn1%i`yqH*mlEi z%7xUU)$927@Vu?$nsLJOzhi>OrQV4jzx>*)8E}MCCAaLxJ=4cw({}vQZpc0Gr{z~c zL)@H=Y#%1QJvgW0tKGM0Z}rpGOkH|y(lqA1j1S5me4Oz;t)c4bH}|y{4Cm@SpKc;w zVK=L!s3z(6*RaRiwsS1g{uQjgK_kob=1u#}cgwA$^YR(5s2(`Hl1DZFLHV}dhu$$h z*!pC3nqObgrK1O&5A12WepTD>K2wZ<&70KQ?$4fRdtS16u<yglrzid`xNLjCa$z=e zm5T1{(gem;)(4$FJyF>pvcq7hc)|W9OE=HmSp9hM;#&^;*#Di1WZvO^X;P$So#%Fz z6;aHW^K<@7{K?kpcwm2s@wKWTPucpn7cU*vf64Y>m73WP=Sf$+c5&>GwpiU5&wC@Y zdQE0R;F|5Gj9E-Cw#Rz^)aUxIvSaaqf-~#8w+h~7PVFly<dgO5i*Mw=w4iBakM}En zziWc88h5Q-GWo!&9Xd<1-kfJUu&gn5+j8z1FItwYe_WhzvbAyLq93l?KSen1w_@ZG zYxH7V!N{$m>+vGIrEXKmv7CNSE1r_nl&tk{ANy{bwfN#+>xQe7jy1QIxZRh|d^uG_ z|IIp<75Ux`UUi4odR@7tDVANG;g{jhSs)wuqV$|uT6N92A2<HLTYqjp<I~dT?weCr SYB4Y{FnGH9xvX<aXaWEw=LvNH diff --git a/htdocs/theme/md/img/unlock.png b/htdocs/theme/md/img/unlock.png index afefaa94d47dbe2e173bbcb9d464e02dd2bfc771..44d193e427e2da00e32b61d361bf5a4c05cfdd67 100644 GIT binary patch literal 212 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sg%=UC~45?t8dupTS(EtgD zhwB55xV0NZWGY|dN}9@<BjcoV`A(F~f$KK+IFeR!%ybb@v}RG>zinqs{*m`v+|y2X z2H)0-Y8GJAO+D^*{@mP3L#v=K4-WI)FpbdMRmS?@<Z9RcD$DO`6HRv-8^2t-=HBv| z6P`@^k((u><2!v{-L4h>+nsi-^#5&k?VDEcv--=sHNK=h3s6rjm8$>F+vMjjILBEv RfPsO5!PC{xWt~$(695%aRoegn literal 686 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4mJh`26+$Niwq1*rJgR1AsV8r2mLc-LS+to zd_TML_j$g5jZ<%lC@l@zGJTqmC%>zbV@p%h)K%&m%l+@=9-M9a<<ZhBlc!hcIyo5b z^6X_ln5O#R-K85Qo{!(XIWqU|&D^xK?`Ny+?d7lbE4i>dpJQ+Q%=v+Kut+*vp-xox zC!O27%D=yR`#wCZ&gfW5uUqrdrK%>UoHZ}(tG}i{)z0!w+4-FO{N?`Nzq8MKezW!T zbp5?s_xyPpw%PLCmMH!PCWq{|%ySBq-t$fVIQ8t=v-kQ}ueL9__4fYOYsWV)`tj)O z(WBb(F}uqi$L;^mQo*#qye`&VbLBjaRmCSaPx-oa>-}rez3*L?e17$(Mo?aM?p*uY zUvCfZ+}Z6YFo&6sVfAeL`$<n$d4A5{8l=U(`)%3l`I)oqb`^d-^zrxndf6Yh?59R+ zCyIzx&YR9Czv0*3)^DD{_TPVHe?7F;Hsk%i7~j49)3U|wt?!pk-BP^jxnEqqnfx*7 z?EN_|fm@g(7-H*He{9=VkomFqbClgaxkr;+rY`<pz`oFCPrdhczCY9d%@sKQa7%s< zCnNWQy<RWpE{Izl^tEs@gR7t6DUR+rjWY!qH_!TCv*4;t0J9szt;lu}+Y^l?4V~3T z_S*e^*mIZhOVElR8jVH)Od<+VYuJx+Oi!DUcjCiG!T$2Jl5Y<Rcsd)!8C5wH8W=L> zw0pPv%>O2_&FzitrY+wS@;MGm%0yS3V`pSwVAzvBxhwc3i=_VyKb=UnVCHL$>H%c| zvz1OUEnr|>kY6|X&c0vEYhE4ev-vdh$RUfy$2?k^KipPcsJQ5tw!J|{fMM@1_oC$= y#lMSwYO-KqS5jc&=x8`97QB#~hmqkQ`<}@$Ge7F@-NC@Xz~JfX=d#Wzp$P!w07H=g diff --git a/htdocs/theme/md/img/vcard.png b/htdocs/theme/md/img/vcard.png index 315abdf179d730998a31ef3be62955f892771663..343b28cbbe9d37e56568f759548cc75bb224c6f2 100644 GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sgto3wp45?sTd(qI($x)>3 z;$)kb8F$+@33G2zU$~`&c{A&xr`~rMr5lo>t|?AabCDLhGSR1qTfOD_hx)U+e&w+R z->-d|d2LyZCUb4q<#XNXyQ|VYr%ZKVH-B)=apIXCL$k>&n*?u%m~8x#k*V~P_scTo z@O#=xPY!lCnC^X@yxz-oqeJswmRqlEWnbs|FW$S;Z;kQx|LyxU#ct_t@t8KNsJrd{ kr-N6#>@J_0+x?c`rDT)M%1*s_1_lNOPgg&ebxsLQ0B?F>u>b%7 literal 566 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4rT@h290TVA2Tp8u$OrHy0TyAW)arrJ~Cf& zCj$cmXMsm#F#`j)5C}6~x?A^$fq{V~-O<;Pfnj4m_n$;o1_p*p0X`wF3=9k$92^1y z0*Z>7nwo}&hK81wmQGGiK_CzX0?EnQ*~MT`4F)aMEiFADFr{b8(kaJ^ryQ%EGiT16 zrAy~5-8yIO-Z|%j=A4UKy7kyr5ZJr**uAaSvbWxwvv=>_y~mF2J$7#Iv1@ye-P?O^ z@7`-u_FkK__uAfL$BrF4_x#wsy~mzUId|^)xogMHT|0N~+P!nvo}asS?A*O`*X}*P zcklVV=g;pwe}C`!_j~WZgP6~sKY#xI`TO_J-+zA(0^h%X|Nj5~f2LKdg&7za+)9G{ zg8x$kFl0`1xxm1{FxAt=F@)oKX#Z`lLk0pa;Ue4DUd!4WveYfN>FXseM^(dw7Lot| zr=Qt(^Rr2NW1{#zU4_T>DGj2}oqj}A3N%eO^pae>R=vSts<upym#+S#FB@l<R=o~7 z*L~FZOK$Cpw(q}Y-2ar#GVvbY?-?Am_vWt&H}zF}eDTuG?b&<GOfv0x9bW~xO<a0K nDP7{StD#X}gYJUAhxiZm$?+6iefW@pfq}u()z4*}Q$iB})0H@( diff --git a/htdocs/theme/md/img/view.png b/htdocs/theme/md/img/view.png index 76c1e9f1e6a37537d3f3ad016ea6411213012116..f22aab3688bab8ba60673dc6b484a85d380db1ae 100644 GIT binary patch literal 204 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgO!jnf45?t;dtq(hkpPk7 z7nNtkzA<Y!<<2f3Dn3^%i1D@2OvZ_33#3*kgdEslq$YLru!~J`?z{6bg;(x>4BzeP zXfFCetFxLhEi>Qr70*5+lgW#(Hcviw^k#aCn|gOja8*yh@|*il#<sAD&wk>+y5qv5 zH71!C-8FuGcoMhvxT!<r`HJ%a2G3^SuQ_w7U*yZ$f-irWL+?-Vd2L+rfPsO5!PC{x JWt~$(69BamRj>d6 literal 708 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4rT@h290TVA2Tp8HV62GxQg;}NC|LCii^mK z3W&*Rs>w<l=xM5(c~}ONdDxlP1?h)*JBEaYmqfW2NBblsB&4UOdnfn!<t_{^UXjzb zF{}GvL$H2hh(SY$@wA%UHD#fjD;+jhIqj-*?rN&s)9Spp)n#vs+x`}>{T)90dwmu) z<t}c{S=E}px-DZ(Z~69?ye)mTTl(t{bow6X@^5czY3^Il(!a2M;-c0`%etp7>6^ZE z>VhqEmTX+Ma{ab#+h=XMy=24DReSI5*mrXK;cI)2T-<Tw=FU^kcAtK>_w<u}XP)mn z`~2Y2DVLY_JUYGh$+4}E&un;ncEjWI8y=tEbp67WgXdoyyzt`arB}x;zdm;5^~q~* zPG5g>_QtC-H{YJW_3r%bcbD$GzjXKgmAmin-FtfD!TZ|}-`sli{`!LtHy(bx{rJ<p zr=Q>4IQjO@ndf(}y?FHS;fpViUw(P~>dTW?U!T4H`s~fumv6tleE03uyYH{we}Dbq z$J>uT-hKM{<?Z7y?;d{m{PW|NU!TAJ`tt4fw;#WM{`~Xv*Pma%|Nj5~pI`Ok4F(2= z#*!ev;Qs>*7$%)~?9af!knic@7{VdTdhnp{;Q$eq12>=R>s?_j4HVZ6aLjUeG{r^W zc4XS8hr$itTem;nQ#b$i&(BE<gf8kcZ(SQH%;wJ&q4BdiE<fVM#~WL9o88MNwY0wd z?sxmz0p;B)JEdjJuWsYn)u~cxdSm6b)WV$%ANUtsHoJ17R8EC~fq}u()z4*}Q$iB} DND9s_ diff --git a/htdocs/theme/md/img/warning.png b/htdocs/theme/md/img/warning.png index f1b93b8cc8267b6299f2b299726e05ca560ac881..dc168ba9439b1f04c813c2794c8778dc78b8dcc9 100644 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sg6nMHghEy;nEAVe%P;^w? z-YBr%D6LJU?Z3kemXwDKNj&0>Tn7YB2pwJbf+0YN@q1Em64O){hh!huml9o<3`DOc zYpgmPa;0J6ipH`o5ec~jjVcBaSGEAv8K(jonE5(HE1G>6CRH#h2Q->bP?2R|u=Y(_ V)wg;2N(Kf722WQ%mvv4FO#tqLG;sg` literal 480 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4rT@h290TVA2Tp83I_Ouxc>kC|M|JS$F7|_ zcWv*nW5>>&J9h2Zv2%Ni?=4L}w>Ie7R>Nz1HLvXzxOR-;+E#&cYm?u<e}8Rj(7oq9 z|KDf7e;)Pzz1P|~igV^z{{PPK|3Aa~?+oYG3Os-Q{@T{+d-q!Y-z$E8E$aJor=`^# zb9yBHzi0UVp5feD%X`oFK0lWH{9McXYsuf=N1Z#SdGDIx_xA$dzjM4l$8qo4()Y(& z?p-T>|Gaq49L=RuEdT%Kcz=)K+TNgh_pZIa*7E;eR8WwBlb6%~_lnQo8$Q3*^ZZ=) z_j_KNii(Don(yx!-aDpw?^w(C_xJ7{E53Iuxj0!fIa%}hIj85>_CCM1^!c^qdwYYP zUz_v%-o0zbs=wb``u^IK_s`E=J68Ps-qx*JN8d0oFff(``2{mLJiC#`z`#)J>Eal| zaXmT3fw4#6)T>+UD(md8GapSY$m38}ew@Bf)F6-HvAbW{v8@5?)Rj5@q~7FsXl3Md zfY0FitGNa<%6~nV7r5Rr@nfTs^5b&7V~-uyS%qja3(QZS()dYYztIPSdr2Y<g^ri} vB_(epzNz==k#BT!eDd#q`mf*985zFLmEk`vu|bJ}fq}u()z4*}Q$iB}6{-Rt -- GitLab From 87d6a5926bfb9756b73ac1844c9224f1a8f92389 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Doursenaud?= <rdoursenaud@gpcsolutions.fr> Date: Fri, 4 Dec 2015 14:06:53 +0100 Subject: [PATCH 089/197] Fixed md theme name --- htdocs/theme/md/graph-color.php | 4 ++-- htdocs/theme/md/style.css.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/theme/md/graph-color.php b/htdocs/theme/md/graph-color.php index 4346d007158..3450180e153 100644 --- a/htdocs/theme/md/graph-color.php +++ b/htdocs/theme/md/graph-color.php @@ -17,8 +17,8 @@ */ /** - * \file htdocs/theme/eldy/graph-color.php - * \brief File to declare colors to use to build graphics with theme Eldy + * \file htdocs/theme/md/graph-color.php + * \brief File to declare colors to use to build graphics with theme Material Design * \ingroup core * * To include file, do this: diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 56df547b9b1..a7a191f45bb 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -61,7 +61,7 @@ $right=($langs->trans("DIRECTION")=='rtl'?'left':'right'); $left=($langs->trans("DIRECTION")=='rtl'?'right':'left'); $path=''; // This value may be used in future for external module to overwrite theme -$theme='eldy'; // Value of theme +$theme='md'; // Value of theme if (! empty($conf->global->MAIN_OVERWRITE_THEME_RES)) { $path='/'.$conf->global->MAIN_OVERWRITE_THEME_RES; $theme=$conf->global->MAIN_OVERWRITE_THEME_RES; } // Define image path files and other constants -- GitLab From 8c03e46a83939e15b4cd30d4bc853dd6f4b329dc Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Fri, 4 Dec 2015 18:33:57 +0100 Subject: [PATCH 090/197] Removed a TODO --- htdocs/core/lib/project.lib.php | 4 +-- htdocs/projet/class/task.class.php | 41 +++++++++++++++++++++++++++--- htdocs/projet/list.php | 1 - htdocs/projet/tasks/list.php | 3 +-- 4 files changed, 41 insertions(+), 8 deletions(-) diff --git a/htdocs/core/lib/project.lib.php b/htdocs/core/lib/project.lib.php index 733a83a500f..efbaa78557e 100644 --- a/htdocs/core/lib/project.lib.php +++ b/htdocs/core/lib/project.lib.php @@ -344,13 +344,13 @@ function projectLinesa(&$inc, $parent, &$lines, &$level, $var, $showproject, &$t { // Project ref print "<td>"; - if ($showlineingray) print '<i>'; + //if ($showlineingray) print '<i>'; $projectstatic->id=$lines[$i]->fk_project; $projectstatic->ref=$lines[$i]->projectref; $projectstatic->public=$lines[$i]->public; if ($lines[$i]->public || in_array($lines[$i]->fk_project,$projectsArrayId) || ! empty($user->rights->projet->all->lire)) print $projectstatic->getNomUrl(1); else print $projectstatic->getNomUrl(1,'nolink'); - if ($showlineingray) print '</i>'; + //if ($showlineingray) print '</i>'; print "</td>"; // Project status diff --git a/htdocs/projet/class/task.class.php b/htdocs/projet/class/task.class.php index 0b490aff863..ca8ed73e10d 100644 --- a/htdocs/projet/class/task.class.php +++ b/htdocs/projet/class/task.class.php @@ -575,25 +575,60 @@ class Task extends CommonObject if ($mode == 0) { $sql.= " FROM ".MAIN_DB_PREFIX."projet as p"; + if ($filteronprojuser > 0) + { + $sql.= ", ".MAIN_DB_PREFIX."element_contact as ec"; + $sql.= ", ".MAIN_DB_PREFIX."c_type_contact as ctc"; + } $sql.= ", ".MAIN_DB_PREFIX."projet_task as t"; + if ($filterontaskuser > 0) + { + $sql.= ", ".MAIN_DB_PREFIX."element_contact as ec2"; + $sql.= ", ".MAIN_DB_PREFIX."c_type_contact as ctc2"; + } $sql.= " WHERE p.entity = ".$conf->entity; $sql.= " AND t.fk_projet = p.rowid"; } elseif ($mode == 1) { $sql.= " FROM ".MAIN_DB_PREFIX."projet as p"; - $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."projet_task as t on t.fk_projet = p.rowid"; + if ($filteronprojuser > 0) + { + $sql.= ", ".MAIN_DB_PREFIX."element_contact as ec"; + $sql.= ", ".MAIN_DB_PREFIX."c_type_contact as ctc"; + } + if ($filterontaskuser > 0) + { + $sql.= ", ".MAIN_DB_PREFIX."projet_task as t"; + $sql.= ", ".MAIN_DB_PREFIX."element_contact as ec2"; + $sql.= ", ".MAIN_DB_PREFIX."c_type_contact as ctc2"; + } + else + { + $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."projet_task as t on t.fk_projet = p.rowid"; + } $sql.= " WHERE p.entity = ".$conf->entity; } else return 'BadValueForParameterMode'; if ($filteronprojuser > 0) { - // TODO + $sql.= " AND p.rowid = ec.element_id"; + $sql.= " AND ctc.rowid = ec.fk_c_type_contact"; + $sql.= " AND ctc.element = 'project'"; + $sql.= " AND ec.fk_socpeople = ".$filteronprojuser; + $sql.= " AND ec.statut = 4"; + $sql.= " AND ctc.source = 'internal'"; } if ($filterontaskuser > 0) { - // TODO + $sql.= " AND t.fk_projet = p.rowid"; + $sql.= " AND p.rowid = ec2.element_id"; + $sql.= " AND ctc2.rowid = ec2.fk_c_type_contact"; + $sql.= " AND ctc2.element = 'project_task'"; + $sql.= " AND ec2.fk_socpeople = ".$filterontaskuser; + $sql.= " AND ec2.statut = 4"; + $sql.= " AND ctc2.source = 'internal'"; } if ($socid) $sql.= " AND p.fk_soc = ".$socid; if ($projectid) $sql.= " AND p.rowid in (".$projectid.")"; diff --git a/htdocs/projet/list.php b/htdocs/projet/list.php index 3f9aea52444..2475074d941 100644 --- a/htdocs/projet/list.php +++ b/htdocs/projet/list.php @@ -318,7 +318,6 @@ if ($resql) } // If the user can view prospects other than his' - if ($mine) $search_user=$user->id; $moreforfilter.='<div class="divsearchfield">'; $moreforfilter.=$langs->trans('ProjectsWithThisUserAsContact'). ': '; $includeonly=''; diff --git a/htdocs/projet/tasks/list.php b/htdocs/projet/tasks/list.php index e3540afc1aa..d23617192b3 100644 --- a/htdocs/projet/tasks/list.php +++ b/htdocs/projet/tasks/list.php @@ -128,7 +128,7 @@ if ($search_all) $morewherefilter.=natural_search(array_keys($fieldstosea if ($search_task_ref) $morewherefilter.=natural_search('t.ref', $search_task_ref); if ($search_task_label) $morewherefilter.=natural_search('t.label', $search_task_label); -$tasksarray=$taskstatic->getTasksArray(0, 0, $projectstatic->id, $socid, 0, $search_project, $search_status, $morewherefilter, $search_project_user, $search_task_user); +$tasksarray=$taskstatic->getTasksArray(0, 0, $projectstatic->id, $socid, 0, $search_project, $search_status, $morewherefilter, $search_project_user, 0); // We don't use filter on task user. Because sometimes a task is assigned but not the parent one and we want to show also parent, so filtering is done during output $tasksrole=$taskstatic->getUserRolesForProjectsOrTasks(0, ($tuser->id?$tuser:null), $projectstatic->id, 0, $search_status); // We load also tasks limited to a particular user print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">'; @@ -156,7 +156,6 @@ $moreforfilter.=$form->select_dolusers($search_project_user, 'search_project_use $moreforfilter.='</div>'; // If the user can view users -if ($mine) $search_task_user=$user->id; $moreforfilter.='<div class="divsearchfield">'; $moreforfilter.=$langs->trans('TasksWithThisUserAsContact'). ': '; $includeonly=''; -- GitLab From 94fe00fe8dbebe190fa63e15ff1d08b1852e0c7d Mon Sep 17 00:00:00 2001 From: philippe grand <philippe.grand@atoo-net.com> Date: Fri, 4 Dec 2015 19:45:39 +0100 Subject: [PATCH 091/197] [Qual] Uniformize code --- htdocs/compta/facture/list.php | 2 +- htdocs/ecm/docmine.php | 4 ++-- htdocs/expedition/card.php | 14 +++++++------- htdocs/expensereport/card.php | 24 ++++++++++++------------ 4 files changed, 22 insertions(+), 22 deletions(-) diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php index cce908dc368..707ad32eec7 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -138,7 +138,7 @@ if (empty($reshook)) if (! empty($massaction) && count($toselect) < 1) { $error++; - setEventMessage("NoLineChecked","warnings"); + setEventMessages($langs->trans("NoLineChecked"), null, "warnings"); } if (! $error && $massaction == 'confirm_presend') diff --git a/htdocs/ecm/docmine.php b/htdocs/ecm/docmine.php index 2ec6dfc4aae..13f5ee516b9 100644 --- a/htdocs/ecm/docmine.php +++ b/htdocs/ecm/docmine.php @@ -114,8 +114,8 @@ if ($action == 'confirm_deletefile' && $confirm == 'yes') $langs->load("other"); $file = $upload_dir . "/" . GETPOST('urlfile'); // Do not use urldecode here ($_GET and $_REQUEST are already decoded by PHP). $ret=dol_delete_file($file); - if ($ret) setEventMessage($langs->trans("FileWasRemoved", GETPOST('urlfile'))); - else setEventMessage($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), 'errors'); + if ($ret) setEventMessages($langs->trans("FileWasRemoved", GETPOST('urlfile')), null, 'mesgs'); + else setEventMessages($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), null, 'errors'); $result=$ecmdir->changeNbOfFiles('-'); } diff --git a/htdocs/expedition/card.php b/htdocs/expedition/card.php index 6a236ab534e..36d85366805 100644 --- a/htdocs/expedition/card.php +++ b/htdocs/expedition/card.php @@ -98,7 +98,7 @@ if (($action == 'create') || ($action == 'add')) if (! (GETPOST('entrepot_id','int') > 0)) { $langs->load("errors"); - setEventMessage($langs->trans("WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn"),'errors'); + setEventMessages($langs->trans("WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn"), null, 'errors'); header("Location: ".DOL_URL_ROOT.'/expedition/shipment.php?id='.$origin_id); exit; } @@ -303,7 +303,7 @@ if (empty($reshook)) if ($result < 0) { $langs->load("errors"); - setEventMessage($langs->trans($object->error),'errors'); + setEventMessages($langs->trans($object->error), null, 'errors'); } else { @@ -338,7 +338,7 @@ if (empty($reshook)) else { $langs->load("errors"); - setEventMessage($langs->trans($object->error),'errors'); + setEventMessages($langs->trans($object->error), null, 'errors'); } } @@ -395,7 +395,7 @@ if (empty($reshook)) header("Location: card.php?id=".$object->id); exit; } - setEventMessage($object->error,'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } $action=""; @@ -433,8 +433,8 @@ if (empty($reshook)) $upload_dir = $conf->expedition->dir_output . "/sending"; $file = $upload_dir . '/' . GETPOST('file'); $ret=dol_delete_file($file,0,0,0,$object); - if ($ret) setEventMessage($langs->trans("FileWasRemoved", GETPOST('urlfile'))); - else setEventMessage($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), 'errors'); + if ($ret) setEventMessages($langs->trans("FileWasRemoved", GETPOST('urlfile')), null, 'mesgs'); + else setEventMessages($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), null, 'errors'); } elseif ($action == 'classifybilled') @@ -482,7 +482,7 @@ if ($action == 'create') print load_fiche_titre($langs->trans("CreateASending")); if (! $origin) { - setEventMessage($langs->trans("ErrorBadParameters"),'errors'); + setEventMessages($langs->trans("ErrorBadParameters"), null, 'errors'); } dol_htmloutput_mesg($mesg); diff --git a/htdocs/expensereport/card.php b/htdocs/expensereport/card.php index f5d38bc001c..e7b0be3d6d5 100644 --- a/htdocs/expensereport/card.php +++ b/htdocs/expensereport/card.php @@ -139,7 +139,7 @@ if ($action == 'add' && $user->rights->expensereport->creer) if ($object->periode_existe($user,$object->date_debut,$object->date_fin)) { $error++; - setEventMessage($langs->trans("ErrorDoubleDeclaration"),'errors'); + setEventMessages($langs->trans("ErrorDoubleDeclaration"), null, 'errors'); $action='create'; } @@ -267,7 +267,7 @@ if ($action == "confirm_validate" && GETPOST("confirm") == "yes" && $id > 0 && $ if ($result) { $mesg=$langs->trans('MailSuccessfulySent',$mailfile->getValidAddress($emailFrom,2),$mailfile->getValidAddress($emailTo,2)); - setEventMessage($mesg); + setEventMessages($mesg, null, 'mesgs'); header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id); exit; } @@ -279,11 +279,11 @@ if ($action == "confirm_validate" && GETPOST("confirm") == "yes" && $id > 0 && $ $mesg=''; $mesg.=$langs->trans('ErrorFailedToSendMail', $emailFrom, $emailTo); $mesg.='<br>'.$mailfile->error; - setEventMessage($mesg,'errors'); + setEventMessages($mesg, null, 'errors'); } else { - setEventMessage('No mail sent. Feature is disabled by option MAIN_DISABLE_ALL_MAILS', 'warnings'); + setEventMessages('No mail sent. Feature is disabled by option MAIN_DISABLE_ALL_MAILS', null, 'warnings'); } } } @@ -295,7 +295,7 @@ if ($action == "confirm_validate" && GETPOST("confirm") == "yes" && $id > 0 && $ } else { - setEventMessage($langs->trans("NoEmailSentBadSenderOrRecipientEmail"), 'warnings'); + setEventMessages($langs->trans("NoEmailSentBadSenderOrRecipientEmail"), null, 'warnings'); $action=''; } } @@ -490,15 +490,15 @@ if ($action == "confirm_approve" && GETPOST("confirm") == "yes" && $id > 0 && $u // SEND $result=$mailfile->sendfile(); if ($result): - setEventMessage($langs->trans("MailSuccessfulySent",$emailFrom,$emailTo)); + setEventMessages($langs->trans("MailSuccessfulySent",$emailFrom,$emailTo), null, 'mesgs'); Header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id); exit; else: - setEventMessage($langs->trans("ErrorFailedToSendMail",$emailFrom,$emailTo),'errors'); + setEventMessages($langs->trans("ErrorFailedToSendMail",$emailFrom,$emailTo), null, 'errors'); endif; else: - setEventMessage($langs->trans("ErrorFailedToSendMail",$emailFrom,$emailTo),'errors'); + setEventMessages($langs->trans("ErrorFailedToSendMail",$emailFrom,$emailTo), null, 'errors'); endif; // END - Send mail else : // if ($resultPDF) @@ -576,13 +576,13 @@ if ($action == "confirm_refuse" && GETPOST('confirm')=="yes" && $id > 0 && $user $result=$mailfile->sendfile(); if ($result) { - setEventMessage($langs->trans("MailSuccessfulySent",$emailFrom,$emailTo)); + setEventMessages($langs->trans("MailSuccessfulySent",$emailFrom,$emailTo), null, 'mesgs'); Header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id); exit; } else { - setEventMessage($langs->trans("ErrorFailedToSendMail",$emailFrom,$emailTo),'errors'); + setEventMessages($langs->trans("ErrorFailedToSendMail",$emailFrom,$emailTo), null, 'errors'); $mesg="Impossible d'envoyer l'email."; } // END - Send mail @@ -1059,8 +1059,8 @@ else if ($action == 'remove_file') $upload_dir = $conf->expensereport->dir_output; $file = $upload_dir . '/' . GETPOST('file'); $ret=dol_delete_file($file,0,0,0,$object); - if ($ret) setEventMessage($langs->trans("FileWasRemoved", GETPOST('urlfile'))); - else setEventMessage($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), 'errors'); + if ($ret) setEventMessages($langs->trans("FileWasRemoved", GETPOST('urlfile')), null, 'mesgs'); + else setEventMessages($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), null, 'errors'); $action=''; } } -- GitLab From 5cd43d2df0ae9c742f7222c973c12b6ffb5fa23e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Fri, 4 Dec 2015 20:51:34 +0100 Subject: [PATCH 092/197] Some debug on new features --- .../comm/action/class/cactioncomm.class.php | 15 +++++++------ htdocs/comm/action/index.php | 8 +++---- htdocs/comm/action/listactions.php | 20 ++++++++++++------ htdocs/comm/action/peruser.php | 2 +- htdocs/core/class/html.formactions.class.php | 15 ++++++------- htdocs/core/lib/agenda.lib.php | 13 ++++++++---- htdocs/theme/eldy/style.css.php | 4 +++- htdocs/theme/md/img/menus/cart.png | Bin 0 -> 259 bytes htdocs/theme/md/img/menus/graph.png | Bin 0 -> 179 bytes htdocs/theme/md/img/menus/members.png | Bin 145 -> 210 bytes htdocs/theme/md/img/menus/money.png | Bin 179 -> 256 bytes htdocs/theme/md/img/menus/shop.png | Bin 259 -> 403 bytes htdocs/theme/md/img/object_bookmark.png | Bin 131 -> 201 bytes htdocs/theme/md/img/warning.png | Bin 169 -> 392 bytes htdocs/theme/md/style.css.php | 2 ++ 15 files changed, 48 insertions(+), 31 deletions(-) create mode 100644 htdocs/theme/md/img/menus/cart.png create mode 100644 htdocs/theme/md/img/menus/graph.png diff --git a/htdocs/comm/action/class/cactioncomm.class.php b/htdocs/comm/action/class/cactioncomm.class.php index 56465d45fdb..5e14b45665b 100644 --- a/htdocs/comm/action/class/cactioncomm.class.php +++ b/htdocs/comm/action/class/cactioncomm.class.php @@ -99,13 +99,14 @@ class CActionComm /** * Return list of event types: array(id=>label) or array(code=>label) * - * @param string|int $active 1 or 0 to filter on event state active or not ('' by default = no filter) + * @param string|int $active 1 or 0 to filter on event state active or not ('' by default = no filter) * @param string $idorcode 'id' or 'code' - * @param string $excludetype Type to exclude - * @param int $onlyautoornot Group list by auto events or not + * @param string $excludetype Type to exclude ('system' or 'systemauto') + * @param int $onlyautoornot 1=Group all type AC_XXX into 1 line AC_MANUAL. 0=Keep details of type + * @param string $morefilter Add more SQL filter * @return mixed Array of all event types if OK, <0 if KO */ - function liste_array($active='',$idorcode='id',$excludetype='',$onlyautoornot=0) + function liste_array($active='',$idorcode='id',$excludetype='',$onlyautoornot=0, $morefilter='') { global $langs,$conf; $langs->load("commercial"); @@ -115,8 +116,10 @@ class CActionComm $sql = "SELECT id, code, libelle, module, type, color"; $sql.= " FROM ".MAIN_DB_PREFIX."c_actioncomm"; - if ($active != '') $sql.=" WHERE active=".$active; - if (! empty($excludetype)) $sql.=($active != ''?" AND":" WHERE")." type <> '".$excludetype."'"; + $sql.= " WHERE 1=1"; + if ($active != '') $sql.=" AND active=".$active; + if (! empty($excludetype)) $sql.=" AND type <> '".$excludetype."'"; + if ($morefilter) $sql.=" AND ".$morefilter; $sql.= " ORDER BY module, position"; dol_syslog(get_class($this)."::liste_array", LOG_DEBUG); diff --git a/htdocs/comm/action/index.php b/htdocs/comm/action/index.php index 9b466e3d9b7..2324b6ee799 100644 --- a/htdocs/comm/action/index.php +++ b/htdocs/comm/action/index.php @@ -902,7 +902,7 @@ if (count($listofextcals)) $daykey=dol_mktime(0,0,0,$mois,$jour,$annee); $daykeygmt=dol_mktime(0,0,0,$mois,$jour,$annee,true,0); do - { + { //if ($event->fulldayevent) print dol_print_date($daykeygmt,'dayhour','gmt').'-'.dol_print_date($daykey,'dayhour','gmt').'-'.dol_print_date($event->date_end_in_calendar,'dayhour','gmt').' '; $eventarray[$daykey][]=$event; $daykey+=60*60*24; $daykeygmt+=60*60*24; // Add one day @@ -951,7 +951,7 @@ if (empty($action) || $action == 'show_month') // View by month $newparam=preg_replace('/viewcal=[0-9]+&?/i','',$newparam); $newparam=preg_replace('/showbirthday_=/i','showbirthday=',$newparam); // Restore correct parameter $newparam.='&viewcal=1'; - echo '<table width="100%" class="noborder nocellnopadd cal_month">'; + echo '<table width="100%" class="noborder nocellnopadd cal_pannel cal_month">'; echo ' <tr class="liste_titre">'; $i=0; while ($i < 7) @@ -1028,7 +1028,7 @@ elseif ($action == 'show_week') // View by week $newparam=preg_replace('/viewweek=[0-9]+&?/i','',$newparam); $newparam=preg_replace('/showbirthday_=/i','showbirthday=',$newparam); // Restore correct parameter $newparam.='&viewweek=1'; - echo '<table width="100%" class="noborder nocellnopadd cal_month">'; + echo '<table width="100%" class="noborder nocellnopadd cal_pannel cal_month">'; echo ' <tr class="liste_titre">'; $i=0; while ($i < 7) @@ -1085,7 +1085,7 @@ else // View by day $timestamp=dol_mktime(12,0,0,$month,$day,$year); $arraytimestamp=dol_getdate($timestamp); - echo '<table width="100%" class="noborder nocellnopadd cal_month">'; + echo '<table width="100%" class="noborder nocellnopadd cal_pannel cal_month">'; echo ' <tr class="liste_titre">'; echo ' <td align="center">'.$langs->trans("Day".$arraytimestamp['wday'])."</td>\n"; echo " </tr>\n"; diff --git a/htdocs/comm/action/listactions.php b/htdocs/comm/action/listactions.php index e762b22bc70..86978967970 100644 --- a/htdocs/comm/action/listactions.php +++ b/htdocs/comm/action/listactions.php @@ -39,17 +39,23 @@ $action=GETPOST('action','alpha'); $year=GETPOST("year",'int'); $month=GETPOST("month",'int'); $day=GETPOST("day",'int'); -$actioncode=GETPOST("actioncode","alpha",3); $pid=GETPOST("projectid",'int',3); $status=GETPOST("status",'alpha'); $type=GETPOST('type'); $optioncss = GETPOST('optioncss','alpha'); -$actioncode=GETPOST("actioncode","alpha",3)?GETPOST("actioncode","alpha",3):(GETPOST("actioncode")=='0'?'0':(empty($conf->global->AGENDA_USE_EVENT_TYPE)?'AC_OTH':'')); +if (GETPOST('actioncode','array')) +{ + $actioncode=GETPOST('actioncode','array',3); + if (! count($actioncode)) $actioncode='0'; +} +else +{ + $actioncode=GETPOST("actioncode","alpha",3)?GETPOST("actioncode","alpha",3):(GETPOST("actioncode")=='0'?'0':(empty($conf->global->AGENDA_USE_EVENT_TYPE)?'AC_OTH':'')); +} $dateselect=dol_mktime(0, 0, 0, GETPOST('dateselectmonth'), GETPOST('dateselectday'), GETPOST('dateselectyear')); $datestart=dol_mktime(0, 0, 0, GETPOST('datestartmonth'), GETPOST('datestartday'), GETPOST('datestartyear')); $dateend=dol_mktime(0, 0, 0, GETPOST('dateendmonth'), GETPOST('dateendday'), GETPOST('dateendyear')); - -if ($actioncode == '') $actioncode=(empty($conf->global->AGENDA_DEFAULT_FILTER_TYPE)?'':$conf->global->AGENDA_DEFAULT_FILTER_TYPE); +if (empty($actioncode) && empty($actioncodearray)) $actioncode=(empty($conf->global->AGENDA_DEFAULT_FILTER_TYPE)?'':$conf->global->AGENDA_DEFAULT_FILTER_TYPE); if ($status == '' && ! isset($_GET['status']) && ! isset($_POST['status'])) $status=(empty($conf->global->AGENDA_DEFAULT_FILTER_STATUS)?'':$conf->global->AGENDA_DEFAULT_FILTER_STATUS); if (empty($action) && ! isset($_GET['action']) && ! isset($_POST['action'])) $action=(empty($conf->global->AGENDA_DEFAULT_VIEW)?'show_month':$conf->global->AGENDA_DEFAULT_VIEW); @@ -136,7 +142,7 @@ $userstatic=new User($db); $nav=''; $nav.='<form name="dateselect" action="'.$_SERVER["PHP_SELF"].'?action=show_peruser'.$param.'">'; if ($optioncss != '') $nav.= '<input type="hidden" name="optioncss" value="'.$optioncss.'">'; -if ($actioncode || isset($_GET['actioncode']) || isset($_POST['actioncode'])) $nav.='<input type="hidden" name="actioncode" value="'.$actioncode.'">'; +if ($actioncode) $nav.='<input type="hidden" name="actioncode" value="'.$actioncode.'">'; if ($status || isset($_GET['status']) || isset($_POST['status'])) $nav.='<input type="hidden" name="status" value="'.$status.'">'; if ($filter) $nav.='<input type="hidden" name="filter" value="'.$filter.'">'; if ($filtert) $nav.='<input type="hidden" name="filtert" value="'.$filtert.'">'; @@ -158,7 +164,7 @@ llxHeader('',$langs->trans("Agenda"),$help_url); $listofextcals=array(); $param=''; -if ($actioncode || isset($_GET['actioncode']) || isset($_POST['actioncode'])) $param.="&actioncode=".$actioncode; +if ($actioncode) $param.="&actioncode=".$actioncode; if ($status || isset($_GET['status']) || isset($_POST['status'])) $param.="&status=".$status; if ($filter) $param.="&filter=".$filter; if ($filtert) $param.="&filtert=".$filtert; @@ -186,7 +192,7 @@ if ($filtert > 0 || $usergroup > 0) $sql.=", ".MAIN_DB_PREFIX."actioncomm_resour if ($usergroup > 0) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."usergroup_user as ugu ON ugu.fk_user = ar.fk_element"; $sql.= " WHERE c.id = a.fk_action"; $sql.= ' AND a.entity IN ('.getEntity('agenda', 1).')'; -if ($actioncode) $sql.=" AND c.code='".$db->escape($actioncode)."'"; +if ($actioncode) $sql.=" AND c.code IN ('".$db->escape($actioncode)."')"; if ($pid) $sql.=" AND a.fk_project=".$db->escape($pid); if (! $user->rights->societe->client->voir && ! $socid) $sql.= " AND (a.fk_soc IS NULL OR sc.fk_user = " .$user->id . ")"; if ($socid > 0) $sql.= " AND s.rowid = ".$socid; diff --git a/htdocs/comm/action/peruser.php b/htdocs/comm/action/peruser.php index 41270d7996e..a0f78608d04 100644 --- a/htdocs/comm/action/peruser.php +++ b/htdocs/comm/action/peruser.php @@ -278,7 +278,7 @@ $paramnoaction=preg_replace('/action=[a-z_]+/','',$param); $head = calendars_prepare_head($paramnoaction); dol_fiche_head($head, $tabactive, $langs->trans('Agenda'), 0, 'action'); -print_actions_filter($form, $canedit, $status, $year, $month, $day, $showbirthday, 0, $filtert, 0, $pid, $socid, $action, $listofextcals, $actioncode, $usergroup); +print_actions_filter($form, $canedit, $status, $year, $month, $day, $showbirthday, 0, $filtert, 0, $pid, $socid, $action, $listofextcals, $actioncode, $usergroup, 'systemauto'); dol_fiche_end(); $showextcals=$listofextcals; diff --git a/htdocs/core/class/html.formactions.class.php b/htdocs/core/class/html.formactions.class.php index bc662e4b434..88f2f87c1e3 100644 --- a/htdocs/core/class/html.formactions.class.php +++ b/htdocs/core/class/html.formactions.class.php @@ -244,10 +244,10 @@ class FormActions * * @param string $selected Type pre-selected (can be 'manual', 'auto' or 'AC_xxx') * @param string $htmlname Nom champ formulaire - * @param string $excludetype Type to exclude - * @param string $onlyautoornot Group list by auto events or not: We keep only the 2 generic lines (AC_OTH and AC_OTH_AUTO) + * @param string $excludetype A type to exclude ('systemauto', 'system', '') + * @param string $onlyautoornot 1=Group all type AC_XXX into 1 line AC_MANUAL. 0=Keep details of type * @param int $hideinfohelp 1=Do not show info help - * @param int $multiselect 1=Allow multiselect of action type for filter or search + * @param int $multiselect 1=Allow multiselect of action type * @return void */ function select_type_actions($selected='',$htmlname='actioncode',$excludetype='',$onlyautoornot=0, $hideinfohelp=0, $multiselect=0) @@ -270,16 +270,15 @@ class FormActions if (! empty($conf->global->AGENDA_ALWAYS_HIDE_AUTO)) unset($arraylist['AC_OTH_AUTO']); - if ($multiselect==1) + if (! empty($multiselect)) { if(!is_array($selected) && !empty($selected)) $selected = explode(',', $selected); - print $form->multiselectarray($htmlname, $arraylist, $selected, 0, 0, '', 0, 0); - + print $form->multiselectarray($htmlname, $arraylist, $selected, 0, 0, 'centpercent', 0, 0); } - else { + else + { print $form->selectarray($htmlname, $arraylist, $selected); } - if ($user->admin && empty($onlyautoornot) && empty($hideinfohelp)) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1); } diff --git a/htdocs/core/lib/agenda.lib.php b/htdocs/core/lib/agenda.lib.php index 74815f7bdbd..42244a11718 100644 --- a/htdocs/core/lib/agenda.lib.php +++ b/htdocs/core/lib/agenda.lib.php @@ -41,11 +41,12 @@ * @param int $socid Third party id * @param string $action Action string * @param array $showextcals Array with list of external calendars (used to show links to select calendar), or -1 to show no legend - * @param string $actioncode Preselected value of actioncode for filter on type + * @param string|array $actioncode Preselected value(s) of actioncode for filter on type * @param int $usergroupid Id of group to filter on users + * @param string $excludetype A type to exclude ('systemauto', 'system', '') * @return void */ -function print_actions_filter($form, $canedit, $status, $year, $month, $day, $showbirthday, $filtera, $filtert, $filterd, $pid, $socid, $action, $showextcals=array(), $actioncode='', $usergroupid='') +function print_actions_filter($form, $canedit, $status, $year, $month, $day, $showbirthday, $filtera, $filtert, $filterd, $pid, $socid, $action, $showextcals=array(), $actioncode='', $usergroupid='', $excludetype='') { global $conf, $user, $langs, $db, $hookmanager; global $begin_h, $end_h, $begin_d, $end_d; @@ -87,8 +88,12 @@ function print_actions_filter($form, $canedit, $status, $year, $month, $day, $sh print '<td class="nowrap" style="padding-bottom: 2px; padding-right: 4px;">'; print $langs->trans("Type"); print ' </td><td class="nowrap maxwidthonsmartphone" style="padding-bottom: 2px; padding-right: 4px;">'; - //select_type_actions($selected='',$htmlname='actioncode',$excludetype='',$onlyautoornot=0, $hideinfohelp=0, $multiselect=true) - print $formactions->select_type_actions($actioncode, "actioncode", '', (empty($conf->global->AGENDA_USE_EVENT_TYPE)?1:0), 0, (empty($conf->global->AGENDA_USE_EVENT_TYPE)?0:1)); + $multiselect=0; + if (! empty($conf->global->MAIN_ENABLE_MULTISELECT_TYPE)) // We use an option here because it adds bugs when used on agenda page "peruser" and "list" + { + $multiselect=(!empty($conf->global->AGENDA_USE_EVENT_TYPE)); + } + print $formactions->select_type_actions($actioncode, "actioncode", $excludetype, (empty($conf->global->AGENDA_USE_EVENT_TYPE)?1:0), 0, $multiselect); print '</td></tr>'; // Status diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 5587efa2431..f82a4feac45 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -2935,7 +2935,9 @@ td.hidden { /* Module agenda */ /* ============================================================================== */ -table.cal_month { border-spacing: 0px; } +table.cal_month { border-spacing: 0px; } +table.cal_month td:first-child { border-left: 0px; } +table.cal_month td:last-child { border-right: 0px; } .cal_current_month { border-top: 0; border-left: solid 1px #E0E0E0; border-right: 0; border-bottom: solid 1px #E0E0E0; } .cal_current_month_peruserleft { border-top: 0; border-left: solid 3px #6C7C7B; border-right: 0; border-bottom: solid 1px #E0E0E0; } .cal_current_month_oneday { border-right: solid 1px #E0E0E0; } diff --git a/htdocs/theme/md/img/menus/cart.png b/htdocs/theme/md/img/menus/cart.png new file mode 100644 index 0000000000000000000000000000000000000000..8d8da880f0ed080f7cb941c3c0418750a8a19ab2 GIT binary patch literal 259 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4i*Lm2CurW#S9D#r#xL8Lo5W(9^C88R4Bu6 zA)Ynq>~%GfkX<aDVNtIXybkhNHB4OaZUJZ1B!h;qs0jgbHt!d?{A0aW`YZ0p{0jzO zm&k=mYVs_Ws@3M^o*6ggvcd7r;4@bi_Xw&@EN)Ny<9Gkm?z|@@wI{wLne!I&Jetjz z_G+S0=+$JAJu6?Ca;*z36=glX%Brhr+tw?+%cgC-5~aPbVq%t?U-T<Wvly?fO3Rf? z1*Q3x9=m0w7R0`BVcN<wLArGn0nhBVS%yE;*>=->;!V}!Z2f<${Z*#&ofDh8lbeBo Ofx*+&&t;ucLK6Vb322T0 literal 0 HcmV?d00001 diff --git a/htdocs/theme/md/img/menus/graph.png b/htdocs/theme/md/img/menus/graph.png new file mode 100644 index 0000000000000000000000000000000000000000..fb04031d47a2df76d49938e674ea79ee0082d470 GIT binary patch literal 179 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4i*Lm2CurW#S9D#Rh}-6Ar_~T6C_we82(HD zJIr`8s^hA{$N#2sybdo{{<jSHalJ7s{?P@7srMK!Gd+#}rO#C)q4)HEVwAus#X84u zy?_6uB5u9>uf0KxHRb7yWrwFQFa7_zY3m=AAj=v27n|IFhL&V5n6}qq3bX3>$A-MC i*<@{&^)eYTFjVC&UhN#=pUA+#z~JfX=d#Wzp$Py$SVb%V literal 0 HcmV?d00001 diff --git a/htdocs/theme/md/img/menus/members.png b/htdocs/theme/md/img/menus/members.png index 9bba632552c230fcd9dab589aaafcb8e3948f985..270e4de2e052c458576a3db1b2d32412f6384dab 100644 GIT binary patch delta 182 zcmbQpc!_a>O8rbv7sn8b(@!T_a~*OJVK{#530oCYzqr2=i}FW~q}jrmYXy?iMUJ^C z&+cz+^<5_Yjd#z}gF6h1k~34&SQ2vHeSLg4;qh#d12$js0?e4x8P+c>Z(b#7@%88S zsbRJEzP~)vy>#VeyZ_&LpXuq^L`7F`Feqe85VBg&ymoDFv9YN>+xCUb?_`tM^_<vi pc-YDdgsdKj-+I5F_3>lQWryQ6SRMwyVqjok@O1TaS?83{1OQZ0PC)<w delta 116 zcmcb_IFWIJN^XRwi(`nz>Ewh3+&|>M{C`^S^x*1$hZeR&ryL)sIx!0fl(24^CAhj# z!Xcg4<l7hRMKNEP7Aj8Yc=G+xetW;w8>>X-N55R~@IXDgf{nu*wgpKR(knU}-!U*8 YS~#8mj6?io1_lNOPgg&ebxsLQ0QZ72#Q*>R diff --git a/htdocs/theme/md/img/menus/money.png b/htdocs/theme/md/img/menus/money.png index fb04031d47a2df76d49938e674ea79ee0082d470..707d167616765fe8f34d8e637cb2a2a1ba681389 100644 GIT binary patch delta 228 zcmdnY*uXSFrT)05i(^Oy<JC)s+U|ieY!4O}O!n36Jejp=#*8VA?^3o#>ZnPkZ2iPr z!fV%X#9VP{&y>aw|GC3$w;A6(r_cO!&*kb@lJ|Zst^df=q`y*IHr}3f^*KiMwB!Pg zdv|{xn0?eJg5kE-$rWtZQ#Z7)zH{uL4`<H9n<eiazTot)*ph!Pwn4(<*<Gf0vNO6I zjdJeJ48IV}u8{8WR;YHe;t9#mO=pEH4sE=1H(@(V*o9jGo^Ed%mi{pL@nr$4uT9lW n%?F2Wt)ElQ^XQN654N;jwtR0C_|zB}7#KWV{an^LB{Ts5J=1JH delta 151 zcmZo*+RQjXrM}A3#WBR<baH|OYY4-C>3@eAPeyfIRrvVdRF2o-<;wq-0Y9!cX2n0c zz%cb5<7K9&@xS!BiX`-&{!fe&IHg$U7_Rs4zf{Dnm;bdlh_R+Tow4lj6y~M>UpH<2 zqY`8}ga2Za`_Isl%mvf-T1;V9{r=dHcQu==&9Yu5BL;@5yv3^poFn`b85kHCJYD@< J);T3K0RW2CLR<g< diff --git a/htdocs/theme/md/img/menus/shop.png b/htdocs/theme/md/img/menus/shop.png index 8d8da880f0ed080f7cb941c3c0418750a8a19ab2..16b6cd01fbc994d73000f532c9f0c0623d754680 100644 GIT binary patch literal 403 zcmeAS@N?(olHy`uVBq!ia0y~yU@!n-4i*LmhQHi~JPZtsQJyZ2Ar*{oFY9|V7s?#} zcwVe6<5GfwR!+JQj}(i1!^vewmC6z$KX7&gevq7TM_wl4Xj)(on`3~B;NHq&4X*sl z2dCcMw}1EFgv9sxe`VGe{4vS0P`b$~^@LMV;bvF<f~V3At&YqeV<+tozgEqh&9i9w zy@nl%_2)AWu>D-UjM4SoiR-pYO&s1#SnoT9Z%Tzqb-2hc#zkJ=!UF3Pn#?zax{Eoy znY=V!D=c9W$M?Poq5|wYzMb5{ZE)B;@2#S^gUsVg!jIP-kg30M+il$ek=!+RgG$)> zHeO4W+{v{0Pr}O6mfa_0Ef^W(B%H5pX7)akt0?cl&9GzH1NIk847*S8Ur-D#Tkukv zgX1rw;YEc{3{Q41WO`=#xSP+Hsm0*^o%$k=27|Y69OkC*wq&NW-%{xoST<Ldqt{`E zsD)}IZ{n?+jYjfE_6EDnC@XUa$q*0>?6%+hzU{4Qe?z^dj(+Ww>1|RB3=9mOu6{1- HoD!M<El#7y literal 259 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4i*Lm2CurW#S9D#r#xL8Lo5W(9^C88R4Bu6 zA)Ynq>~%GfkX<aDVNtIXybkhNHB4OaZUJZ1B!h;qs0jgbHt!d?{A0aW`YZ0p{0jzO zm&k=mYVs_Ws@3M^o*6ggvcd7r;4@bi_Xw&@EN)Ny<9Gkm?z|@@wI{wLne!I&Jetjz z_G+S0=+$JAJu6?Ca;*z36=glX%Brhr+tw?+%cgC-5~aPbVq%t?U-T<Wvly?fO3Rf? z1*Q3x9=m0w7R0`BVcN<wLArGn0nhBVS%yE;*>=->;!V}!Z2f<${Z*#&ofDh8lbeBo Ofx*+&&t;ucLK6Vb322T0 diff --git a/htdocs/theme/md/img/object_bookmark.png b/htdocs/theme/md/img/object_bookmark.png index bde60c8877c7ac3d47ebc9c0609ba0f7be711c92..39109ef5ee61c102adfab2c4c7378fd83f76c040 100644 GIT binary patch literal 201 zcmeAS@N?(olHy`uVBq!ia0y~yVBi5^7G?$ph9%LCR~Q%=SkfJR9T^xl_H+M9WMyDr z&<gMgasB`Q|Jt={_wL<$?AWm>Q>NUzcklc6@6Vq<zjp1~)~#F5ojdpb{rja$m$tOD z^i<ED%D}+DSQ6wH%;50sMj8VHgRQ5FV+hCf<b(rk6;q~6DUp<rU}fDp&A_1G&Aolq z>deg9QLi?sC`^@F%DTu%?Ho&BrfaH0SK!SX5v<Fk85WxHFuPb+Zf0O$VDNPHb6Mw< G&;$U>G)>X~ literal 131 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgczL=whEy;nFJR0_xpBUL zfw6H9TZ!s1p8p#iltWzkB1A0%7G;E7v~SCG_`$z@kw4F5iI9UfrV6ixmnq4%#jwSt iFe>PaYj~wHFnIJfH2B!_d}Cl>VDNPHb6Mw<&;$VS_a*88 diff --git a/htdocs/theme/md/img/warning.png b/htdocs/theme/md/img/warning.png index dc168ba9439b1f04c813c2794c8778dc78b8dcc9..9ec45736b054e87b7c15ec72a3658bc2a6c16040 100644 GIT binary patch delta 376 zcmZ3<*ugwOvYw5Bfg$W%UpNB;16z`}y9>j8hKUReeCCY?3=9mM1s;*b3=G`DAk4@x zYmNj10|R@Br>`sfeI6DeDUl1+>RT8X7)3o@978NlpPjtd%h^$&b$|AxQ*Kinn}4xn z{#hB+u_W+<+r}AI8FO9UvRL;nHCvgyc*1gt51dX1#4pslaoRcOs1@veXBx>}m~dm} z=FROhH}C!so~D%=tm(f>+wb62Mz;eO{auZPcim(vYl!WC-08EFWe(%!cgy=+%R^ZC zf_^SczUb1=_(rkoL`Ysks{i{tjA1@YWvwQ&cxW9EHh6zw)%x}O>KJZsz4yU#yK=B5 z!&wo}6JiZ**PrcMT*wu0KH)jzrd|8jJIY<GWs_!H8)7qU5lczq+5E*bPjPOLyHIe> zcJ=eNl`{2$w?n2i*lm!INUlj<d*Gh*hOpPX_l1K!8?+xhn*RTn)DE3rx^Ecu*E#p7 h9<VDoy??X+I$M*_pF0cE85kHCJYD@<);T3K0RYHGnwtOs delta 152 zcmeBRUdcE?vYv&3f#J__w>u0B3<aJpjv*C{$qM`%7!(~<w>Ju`H%e<$Y5VUmgC*r5 zLlTd8Bi8|e6GBJVy<i9sV*H*IoWwNM#Ua_p^`%7DB?Hl`$r`H;hg@k`xT3MFOGH90 zL8FR6#FZ^Tb;hZH24=nv(TZjthDjBS$^nh$6I5gw7_5Dh1XuNKp1zWSfq}u()z4*} HQ$iB}kqk4| diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index a7a191f45bb..b40c0f3d6c1 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -2807,6 +2807,8 @@ td.hidden { /* ============================================================================== */ table.cal_month { border-spacing: 0px; } +table.cal_month td:first-child { border-left: 0px; } +table.cal_month td:last-child { border-right: 0px; } .cal_current_month { border-top: 0; border-left: solid 1px #E0E0E0; border-right: 0; border-bottom: solid 1px #E0E0E0; } .cal_current_month_peruserleft { border-top: 0; border-left: solid 3px #6C7C7B; border-right: 0; border-bottom: solid 1px #E0E0E0; } .cal_current_month_oneday { border-right: solid 1px #E0E0E0; } -- GitLab From f640486c8bbd8045d9daa765998472fc17a74c9c Mon Sep 17 00:00:00 2001 From: philippe grand <philippe.grand@atoo-net.com> Date: Fri, 4 Dec 2015 22:50:03 +0100 Subject: [PATCH 093/197] [Qual] Uniformize code --- htdocs/expensereport/payment/card.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/expensereport/payment/card.php b/htdocs/expensereport/payment/card.php index eb5314fbd30..19d5b3206f7 100644 --- a/htdocs/expensereport/payment/card.php +++ b/htdocs/expensereport/payment/card.php @@ -66,7 +66,7 @@ if ($action == 'confirm_delete' && $confirm == 'yes' && $user->rights->expensere } else { - setEventMessage($payment->error, 'errors'); + setEventMessages($payment->error, $payment->errors, 'errors'); $db->rollback(); } } @@ -104,7 +104,7 @@ if ($action == 'confirm_valide' && $confirm == 'yes' && $user->rights->expensere } else { - setEventMessage($payment->error); + setEventMessages($payment->error, $payment->errors, 'errors'); $db->rollback(); } } -- GitLab From 4a2bda3491fe25edc2b6abc1e5df30c3c78b910c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Fri, 4 Dec 2015 23:25:17 +0100 Subject: [PATCH 094/197] Look enhancement --- htdocs/bookmarks/bookmarks.lib.php | 3 +-- htdocs/core/lib/usergroups.lib.php | 2 +- htdocs/main.inc.php | 8 ++++---- htdocs/theme/eldy/img/1updownarrow.png | Bin 278 -> 0 bytes htdocs/theme/eldy/img/helpdoc_top.png | Bin 0 -> 407 bytes htdocs/theme/eldy/img/history.png | Bin 1362 -> 270 bytes htdocs/theme/eldy/img/logout_top.png | Bin 0 -> 293 bytes htdocs/theme/eldy/img/object_action_rdv.png | Bin 675 -> 0 bytes htdocs/theme/eldy/img/object_contact_all.png | Bin 810 -> 0 bytes htdocs/theme/eldy/img/printer_top.png | Bin 0 -> 316 bytes htdocs/theme/eldy/style.css.php | 7 +++++-- htdocs/theme/md/img/1updownarrow.png | Bin 278 -> 0 bytes htdocs/theme/md/img/help.png | Bin 657 -> 312 bytes htdocs/theme/md/img/helpdoc_top.png | Bin 0 -> 267 bytes htdocs/theme/md/img/logout_top.png | Bin 0 -> 168 bytes htdocs/theme/md/img/object_action_rdv.png | Bin 118 -> 0 bytes htdocs/theme/md/img/object_contact_all.png | Bin 170 -> 0 bytes htdocs/theme/md/img/object_group.png | Bin 170 -> 655 bytes htdocs/theme/md/img/object_phoning.png | Bin 200 -> 577 bytes htdocs/theme/md/img/object_user.png | Bin 164 -> 581 bytes htdocs/theme/md/img/printer_top.png | Bin 0 -> 167 bytes htdocs/theme/md/img/switch_off.png | Bin 292 -> 1252 bytes htdocs/theme/md/img/switch_off_old.png | Bin 0 -> 292 bytes htdocs/theme/md/img/switch_on.png | Bin 257 -> 1228 bytes htdocs/theme/md/img/switch_on_old.png | Bin 0 -> 257 bytes htdocs/theme/md/img/title_generic.png | Bin 197 -> 138 bytes htdocs/theme/md/style.css.php | 15 +++++++++------ 27 files changed, 20 insertions(+), 15 deletions(-) delete mode 100644 htdocs/theme/eldy/img/1updownarrow.png create mode 100644 htdocs/theme/eldy/img/helpdoc_top.png create mode 100644 htdocs/theme/eldy/img/logout_top.png delete mode 100644 htdocs/theme/eldy/img/object_action_rdv.png delete mode 100644 htdocs/theme/eldy/img/object_contact_all.png create mode 100644 htdocs/theme/eldy/img/printer_top.png delete mode 100644 htdocs/theme/md/img/1updownarrow.png create mode 100644 htdocs/theme/md/img/helpdoc_top.png create mode 100644 htdocs/theme/md/img/logout_top.png delete mode 100644 htdocs/theme/md/img/object_action_rdv.png delete mode 100644 htdocs/theme/md/img/object_contact_all.png create mode 100644 htdocs/theme/md/img/printer_top.png create mode 100644 htdocs/theme/md/img/switch_off_old.png create mode 100644 htdocs/theme/md/img/switch_on_old.png diff --git a/htdocs/bookmarks/bookmarks.lib.php b/htdocs/bookmarks/bookmarks.lib.php index ee6003d0119..4af1815c767 100644 --- a/htdocs/bookmarks/bookmarks.lib.php +++ b/htdocs/bookmarks/bookmarks.lib.php @@ -50,8 +50,7 @@ function printBookmarksList($aDb, $aLangs) $ret.= '</td><td align="right">'; if ($user->rights->bookmark->creer) { - $ret.= '<a class="vsmenu" href="'.DOL_URL_ROOT.'/bookmarks/card.php?action=create&urlsource='.urlencode($url).'&url='.urlencode($url).'">'; - //$ret.=img_picto($langs->trans('AddThisPageToBookmarks'),'edit_add').' '; + $ret.= '<a class="vsmenu addbookmarkpicto" href="'.DOL_URL_ROOT.'/bookmarks/card.php?action=create&urlsource='.urlencode($url).'&url='.urlencode($url).'">'; $ret.=img_object($langs->trans('AddThisPageToBookmarks'),'bookmark'); $ret.= '</a>'; } diff --git a/htdocs/core/lib/usergroups.lib.php b/htdocs/core/lib/usergroups.lib.php index 5083ec3b495..56b44845e3b 100644 --- a/htdocs/core/lib/usergroups.lib.php +++ b/htdocs/core/lib/usergroups.lib.php @@ -477,7 +477,7 @@ function show_theme($fuser,$edit=0,$foruserprofile=false) if ($color) print '<input type="text" class="colorthumb" disabled="disabled" style="padding: 1px; margin-top: 0; margin-bottom: 0; width: 40px; background-color: #'.$color.'" value="'.$color.'">'; else print $langs->trans("Default"); } - print ' ('.$langs->trans("Default").': <strong>6e7896</strong>, '.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')'; + print ' ('.$langs->trans("Default").': <strong>7882aa</strong>, '.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')'; print '</td>'; } diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index d27df85f4ac..a3c647a5e47 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -1461,13 +1461,13 @@ function top_menu($head, $title='', $target='', $disablejs=0, $disablehead=0, $a $logouthtmltext.=$langs->trans("Logout").'<br>'; $logouttext .='<a href="'.DOL_URL_ROOT.'/user/logout.php">'; - $logouttext .= img_picto($langs->trans('Logout').":".$langs->trans('Logout'), 'logout.png', 'class="login"', 0, 0, 1); + $logouttext .= img_picto($langs->trans('Logout').":".$langs->trans('Logout'), 'logout_top.png', 'class="login"', 0, 0, 1); $logouttext .='</a>'; } else { $logouthtmltext.=$langs->trans("NoLogoutProcessWithAuthMode",$_SESSION["dol_authmode"]); - $logouttext .= img_picto($langs->trans('Logout').":".$langs->trans('Logout'), 'logout.png', 'class="login"', 0, 0, 1); + $logouttext .= img_picto($langs->trans('Logout').":".$langs->trans('Logout'), 'logout_top.png', 'class="login"', 0, 0, 1); } print '<div class="login_block">'."\n"; @@ -1500,7 +1500,7 @@ function top_menu($head, $title='', $target='', $disablejs=0, $disablehead=0, $a $qs=$_SERVER["QUERY_STRING"]; $qs.=(($qs && $morequerystring)?'&':'').$morequerystring; $text ='<a href="'.$_SERVER["PHP_SELF"].'?'.$qs.($qs?'&':'').'optioncss=print" target="_blank">'; - $text.= img_picto(":".$langs->trans("PrintContentArea"), 'printer.png', 'class="printer"'); + $text.= img_picto(":".$langs->trans("PrintContentArea"), 'printer_top.png', 'class="printer"'); $text.='</a>'; $toprightmenu.=Form::textwithtooltip('',$langs->trans("PrintContentArea"),2,1,$text,'login_block_elem',2); } @@ -1534,7 +1534,7 @@ function top_menu($head, $title='', $target='', $disablejs=0, $disablehead=0, $a if ($mode == 'wiki') $text.=sprintf($helpbaseurl,urlencode(html_entity_decode($helppage))); else $text.=sprintf($helpbaseurl,$helppage); $text.='">'; - $text.=img_picto('', 'helpdoc').' '; + $text.=img_picto('', 'helpdoc_top').' '; //$toprightmenu.=$langs->trans($mode == 'wiki' ? 'OnlineHelp': 'Help'); //if ($mode == 'wiki') $text.=' ('.dol_trunc(strtr($helppage,'_',' '),8).')'; $text.='</a>'; diff --git a/htdocs/theme/eldy/img/1updownarrow.png b/htdocs/theme/eldy/img/1updownarrow.png deleted file mode 100644 index 871ac1c1f290dd7098702eba8b5bf707b71b49e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 278 zcmeAS@N?(olHy`uVBq!ia0y~yVBln6VBqIqW?*1o6ce>)U|^6eag8Vm&QB{TPb^Ah za7@WhN>%X8O-xS>N=;0uEIgTN!@$7c9pDq<`v3p`=&XX+oT9{%s`R?H+~)4$2{X$l z&aRj;zk2F|>X}Pw=B}!pv!Z_9>c(Z8+E;Jy-h8ls*NF)`j!oTndeQOA8!p`5arxe{ zyHC&Ef7V{06%KMjNswPKgTu2MX$%YuA)YRdAsp93`@H!Y6a<{R`<R)O<k@%p_q?jn zS@!kP7T?DCuNtOZVJ?y|zJI~{!xH`QNBe&DRygrp%Z%%==f1S`>J(w+=@XqLVh<cE i=Py{|=KVi^&Zj@jV#Ny2uQ4z%FnGH9xvX<aXaWE$zH{yX diff --git a/htdocs/theme/eldy/img/helpdoc_top.png b/htdocs/theme/eldy/img/helpdoc_top.png new file mode 100644 index 0000000000000000000000000000000000000000..fc58e0bd174e0896d425fa321f7307b0a010444e GIT binary patch literal 407 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgFeQ1ryD<E3??1Djfq{Xu zz$3Dlfq`2Xgc%uT&5>YWU|=ut^mS#w&%+`rBP`3sEW*IRsNw127@~20>LgwNrbLl8 zeVrbi1mzW;E;Ey^uDtq6hwWeE=FAW55_8U-ka%o<V{S@w*mJhV^-GTSGU`7x`f#XQ z-tm3O{LQZ|&s#pPe8AszmTlRMWWkIA`Rd=TWd~O&t8=ZH@vra6n_J&c@jgCw_sgwD z+3@{gFK?M}r`deG!ZTxY?(Gnk(6_T$%ipZLRV*D-oKbmeo$`8ynr}yYB;#wDJ{&vn zM8Yb_oMBIa`~h!f2JTl6C9J|98_Vk5{=#>lrHZZCK5XLSiEPIMlXy%UGHw_%@g>O% zq`giy$$aqj%Y$7%SME10s1pj2nZaFqHtNMEK3&)A%ii87<2|tGsKCn`T;c*rtGCHk zBp+<y+`gwY<Mh<`!Ao_d&)5`buKM(KwaU#@&Xu19s-M^YV)?cI^3C$e#itn<7#KWV L{an^LB{Ts5>u##n literal 0 HcmV?d00001 diff --git a/htdocs/theme/eldy/img/history.png b/htdocs/theme/eldy/img/history.png index 0fa4283476b0da9b026b8b26a2226ae30a9abd2f..148928d397d562a0d193a81e4c28c830410d6e9a 100644 GIT binary patch literal 270 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgT=jHu45?t;dU|P+XaYmS z#pd1Bixc`AcB^UZ*vraUuDfHm%AJLd%+I6?-@V&cpIWr`-sJuMlX^B?SGKP$xTM6n zHcUa|tM@8D+dOIAV`8$K*0TDP2X3G5)?pCbyI-wii+_PnOYklo29{z*eG|97$bEv+ zk!m;C9CjCTE;4L#Hn<h;D6r)ghtwTo-k!Jpzcz<SGZfndrm|1t-gasJ-i>ifRHr?j z>h`$P<e1AuKCZrwk0<M2^D-L8UVOa!VbYpO>KdP;+w|_PlT>XCEUSL8yu5FwK4%pp Yo4@0FcKz9!3=9kmp00i_>zopr00s_eumAu6 literal 1362 zcmeAS@N?(olHy`uVBq!ia0y~yU=Rag4rT@hhR<1ZI2jn2o(A}YxH2#>u(Go7aB~Up z@(K&`i3$rS$xG>KD(b7KSZc{yYAIN$t6J$OTI(uV>ndC8Dck6&*sAN;8YtTusM;E+ z*=y)J7;Cs18Ms@TdfV#z+S&Tr8~VFjhqyS0I~l|UyCelWC5O0FCPh@md(>q{HKm76 ztk0d>k-cF-=jIt@Ck`Jvxn|PUT~n{`o_6EJw)<C)zrL~k+sn(}AMX18^wjrfr@z0w z`}589-(TMS`SRk=*Y|%v-TU|X{=eTp{=dKR|I35_-(LRz`NmpLnSp_Ujg6I$hnt^= zM}U`Ch@VGPR9H+{P(n;ZMnX(MR!T`)SV>+=RY@M^H3f)Y9E?pIjn$oP4P8t$T+Pkh zEG^v4&D||cJ#0<9?DTzXY<=x){Vgs1?G621&HUZ11Dza#T&;rKT|gf6G>!1Ei12iY z^mL2#HjnahOAK^`_%|ioCo3wVEH$n?Ev6<bzAiJWAvL(SDrb6g`uvvkCEW$f`iqvg zW^7o{w0TC^mf6+YmrOmdto7igxrf(HJaPEYnavZ<ZtOX`dFr_n2hMNpzqkz)MA!Du zy1sYj&Al@o9$WD6_@ajw_ddLS^3n0dk54Usa(da*bIYHfTm9nBxtG^=yu5$q^`#B3 zudaQ4ef#U{J73?}{`$tQ*EjdPxwP)>wRLZw+<yDy?z?N7-(BDG?&kInclUpMc>Lp| zQ=eYm{(S%7=Z9xLKRW#7@u4q|Pkz0B;Oo<K-=3WM_VV(#m)Ag%^6d2Y=O@0uy!id? z-S6)n{dj!%$GZnVKEM6>^3=~a*MGi$^z-BMU#~Cz`ta!Y%d@}VUjF^@F(~dn+<`>j zpYQMgeE;<K!_~i^?*0A#?(g@{e}8@Z`|JC^ch~=YyatNduP^_7d;9Ol`+q+_|NHsn z-_LLVe*gIQ`{%zuKmWfz|Nq_D|DT_N;{EIG|6jqe|Kr*JA20v^`0)Sd-Tyz|{Qvp> z|L@QLe}Db|=hy!~zyJUJ{r}&e|NsC0W$@U@z`)>C666=mKq+8(z_(~20|VnNPZ!4! ziE!3~C-W{lNH9F8w@J2^OE2tvtYab?$-xrHQNW<$*Pyk|hKW6{lR5u@q)OF;hLBJW zPR>&cw|JOjDy#a<Qrq~rH0S(>+6evbO;c@)el;$7`u_3~GmjE&=eI`{W>+3#+3RRi z$?jTw@!`JqSXJ4p>rS7(es`MA#A_$Lj!s_J$-O1@v9axoy#{A?#L7MK56dcZyEK>c zY@<5k<*nhZPn>TYdVg2x9nVwm#dQlyclGXCs%6XkarSvW4(3VT{}=65<KQn`|MHeu z|96fHva8N`U)XW2BuIoy<w#kko5~C;s}l(;BUm^e?-O6*qZH_HI{6i2!m&t+<rjbc zE4EORNw|}^+cz{yd{INJX4Y@_=hL19vYeY?IxpqXCGNiq=jS$lp3ESyi)FFUxknZc z7XGMMaDQWCM;+^rg~jhS2()TUbDVLUL1iru$Lm8ykx82l{1VA1jPv4X+rIO~hjNDO zB|$QddR&fW1shFgeXHVMwYi~N<Kg`MHlbOM*zSFOzJHG4?!AADHhy@LViTiyGTdO_ zgXNRXE-PQE{MLWRy%n>6oZ4DwJDKUfcE8)@C$lsAE(O0zt7V^_rMIo-#&h?x8uj@< zRz9>_lV`RfJ$(C}ROys;ii`dkOBD9L@BhzyJ@D<dk2CyUfRc)*tDnm{r-UW|5?H`e diff --git a/htdocs/theme/eldy/img/logout_top.png b/htdocs/theme/eldy/img/logout_top.png new file mode 100644 index 0000000000000000000000000000000000000000..0526eef7be48ec3e69dc11a5b82e77df2df90112 GIT binary patch literal 293 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgFeQ1ryD<E3??1Djfq{Xu zz$3Dlfq`2Xgc%uT&5>YWU|=ut^mS#w&%+`rEBkn*Jjj@Bo-U3d8t2zewB<VFAkey> z_x7<v#Xp4k1vUtL^m06Xq)OX=vQnG_Q`d2Urq-~&qwDhSED`*)>h8?`N`5&WRaOOK zu1E9U&h?2^U|OK?)^_41_6rP0u4LUzU6RBy-@8ucq~9^coQ1P){Z-G=+#Qjzaa#Kv z9kr<;_kEH)qGAp=1%<u(mi>Kwit_mj=k$6czR#*wIdR3SMD6*5%MmXZEETUbZz_{r ss$0IkWwCyRS0XpZl?f}gnP2giymGSp5mY0|z`(%Z>FVdQ&MBb@0I!~I9{>OV literal 0 HcmV?d00001 diff --git a/htdocs/theme/eldy/img/object_action_rdv.png b/htdocs/theme/eldy/img/object_action_rdv.png deleted file mode 100644 index 25edfa85b45b03ac727df4e3f8f93a037a5c6801..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 675 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4rT@h290TVA2Tp8Fct^7J29*~C-ahlfw4Bg zC&ZP3frEj;l7YdAfuWdz!-;{zi$TDPL7<vJpoN2@nnS>gL!g>N!iz&9h(jWZL!yO4 zF-kx{LO`HJKte)5qFO+rML=_kfMK$LVYYzfQVEF`38$qJPHQE+)+%cDC>qXDbXuzD zwN^1`t76nv#i+fC$$K>|Ej7L7Xa+6SjM}Q1yjL^(m|@Ub!{TF>#d|GVjyVMdIYnhV z6(4hIIp@@K&MRoCS9Y~m&pEH2YeC6tgIbOS&AAsf<yzF7Ystmc$<;l{OYbGGeV$!h zoLya=-E%H`&f4rb*Rt0>&)#}2``q{9rPqqr-YZ`Fy!hPr>M7@{*WRn%`n>ww`<5w7 zTb5pHIrqNh-1nZn&wI{&@45DU%9J@%mY$okcI%YA$ENH(H|5&*Dfj-*S$l2Hv1@bg zeP6ou+S0A}mfrim^!fj_Tkows_I&NN=WFkMU;F(3)_dQ#KL5Y>`S-og|L=YO|Jd{I z$KL-x_x%02=l{>W|9|fL|7-8RUwi-m+V}tW-v7V%{r~gt|DXT=|Nj5~W>L54pjash z@(X5gcy=QV#7XjYcVXyYmGxj?VBjq9h%9Dc$m;=N#@>fVE-^4Lu$OrHy0YKl<`uWl z5Wi@5hJk@$lBbJf2*>s01O_HiUteF>Og4@SSIxfheJH;We1Y|I$zJZ)MnS8J?;NPf zeSc}ztWTdFy>O8>WMd2cJSR&*qs**>_u_-J3q?As7?`Y0uRHkHDqOeKS#NT}^TwIO z*Kf7VcD#J>w!(G0pokk64qTfv+wtVV0}9sKYR1}E4;<*4-FWc80fr>|8Ho){7g8NX fdbpPgiZB>`Q*o_X)BKWwfq}u()z4*}Q$iB}n4dOl diff --git a/htdocs/theme/eldy/img/object_contact_all.png b/htdocs/theme/eldy/img/object_contact_all.png deleted file mode 100644 index f571504b24677f54c02299d6eb3435fcf1118788..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 810 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4rT@h1`S>QU<L*T_7YEDSN1C$qP(1}yZ0PP zU|?Y2EbxddW?<kJ0%68WckBKzFfg#BJNh~@Fl_AS{*%bcz`*Dg;1l9%Z*On!;9&3I z>fqqu;N<Gy>gV8*;NX$w<mBK40<KQ3-cBBVPTo1LPEM{Key$!tuHHc&9v&Xv;U0c5 z-rnBc;W>WZ-hO`Je&IQOX|w%u_5^vm1_cELrOgh{nG&8eJ0_threaS_#kqupgoK>l zgw|teIYntjQ_|{>rM2!!Ydx3Kx+kaiTu$%xoGEXLauSNBoGY4gy=cnAiu&G)DSIlW zoU54qu)e;czP`S`bxQr>uk~yGx7Js*&OX+<=4<Pk|E*j8_x85-E<V@0_<HY_|Gj(u z_a6H{WlHOmHP@#c`#*b1@9Zg4X0JInd&|SwTi(n*_J8)d|BDwdUcBY{;yqs%pZmXN z&%-sx{;xUrf6JQ1TaG>4vt`Ymb8q&X`?}})|2=R1A3JvJ+_7Wl&K)~<?%cVD|F54r zcm4YHhhP7{dHC?n|NmeA|A!L)|MUFY2#TJ(k|4iekTBga!va<tV+IC>m!2+;ArhB; z&%O0N6d-c^BlFp5PO(MNYBR&cb}l=7yZQR2T{;gRx%CFxP3Sx|N$1wj|M$y|-TU(F z@Wa#Zk1`&)$^Vb}gYW$}kGj{{KM1-1F34ha_*xNO>91Lhht{$!m-LsCQQ~=<V!JO+ z_4Ui2T9R^m4j=h;_+O#KufKmUyr099@NUbGqw{VT<vyNN+}<S6G=1rd!p-U})(x!_ zF6macRO&yyDqCaW<Jh{H;g;{NB!}|>Vp`5q3yw6|{8i))_1S2Uq{Z!MsGQ{3*Ob2O zppW?Oi(;+PE1q^PmaS>I#n$@%`crYi<3E1y`E$fx{*>(;{kJA;3=9kmp00i_>zopr E0H9#Rq5uE@ diff --git a/htdocs/theme/eldy/img/printer_top.png b/htdocs/theme/eldy/img/printer_top.png new file mode 100644 index 0000000000000000000000000000000000000000..c58d7456dc442e90dea22c1cfa2d79a42bda9034 GIT binary patch literal 316 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4mJh`hOl#e;S3B6Y)RhkE)4%caKYZ?lNlHo zI14-?iy0WWg+Z8+Vb&Z81_lQ95>H=O_WL|6qSC5!KQeeRFfg3-ba4!^IDK}~Zr(!< z0xt7))m@^QQZBHDI^+bYWF24$ap;?Ku}$}uf`O`!TZ<=;Rb=@;50-l`Om5A*J2QGl zlxwa-5Z4mhJ$KF&iF?@iawptX4%yQ9BmP>A^wWKvYgg@&^z3Tn-oTv3JiUT3{6Rw6 z`}JFOH^?h~V#wo7f1I{OM)IVrh57rb+9JIow@jn|?(lT~tl1#n{!fY_ZQ9QQ&$&*b z0aomm?>Bxc@mru|U^qFXT}0*Tq)i8}sfZ?D>Sqp*E-N^-V6Nv?c1ckamYEOs^)WCo OFnGH9xvX<aXaWE=*l@G} literal 0 HcmV?d00001 diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index f82a4feac45..0c778179606 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -79,7 +79,7 @@ $dol_use_jmobile=$conf->dol_use_jmobile; //var_dump($user->conf->THEME_ELDY_RGB); // Colors -$colorbackhmenu1='140,150,180'; // topmenu +$colorbackhmenu1='120,130,170'; // topmenu $colorbackvmenu1='255,255,255'; // vmenu $colorbacktitle1='230,230,230'; // title of array $colorbacktabcard1='255,255,255'; // card @@ -101,7 +101,7 @@ $useboldtitle=1; // Case of option always editable if (! isset($conf->global->THEME_ELDY_BACKBODY)) $conf->global->THEME_ELDY_BACKBODY='255,255,255'; -if (! isset($conf->global->THEME_ELDY_TOPMENU_BACK1)) $conf->global->THEME_ELDY_TOPMENU_BACK1='140,150,180'; +if (! isset($conf->global->THEME_ELDY_TOPMENU_BACK1)) $conf->global->THEME_ELDY_TOPMENU_BACK1='120,130,170'; if (! isset($conf->global->THEME_ELDY_BACKTITLE1)) $conf->global->THEME_ELDY_BACKTITLE1='230,230,230'; if (! isset($conf->global->THEME_ELDY_USE_HOVER)) $conf->global->THEME_ELDY_USE_HOVER=='238,246,252'; if (! isset($conf->global->THEME_ELDY_TEXTLINK)) $conf->global->THEME_ELDY_TEXTLINK='0,0,120'; @@ -1184,6 +1184,9 @@ a.help:link, a.help:visited, a.help:hover, a.help:active { font-size:<?php print { border-top: 1px solid #BBB; } +a.vsmenu.addbookmarkpicto { + padding-right: 10px; +} .vmenu div.blockvmenubookmarks, .vmenu div.blockvmenuend, .vmenu div.blockvmenulogo { border-bottom: 1px solid #BBB; diff --git a/htdocs/theme/md/img/1updownarrow.png b/htdocs/theme/md/img/1updownarrow.png deleted file mode 100644 index 871ac1c1f290dd7098702eba8b5bf707b71b49e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 278 zcmeAS@N?(olHy`uVBq!ia0y~yVBln6VBqIqW?*1o6ce>)U|^6eag8Vm&QB{TPb^Ah za7@WhN>%X8O-xS>N=;0uEIgTN!@$7c9pDq<`v3p`=&XX+oT9{%s`R?H+~)4$2{X$l z&aRj;zk2F|>X}Pw=B}!pv!Z_9>c(Z8+E;Jy-h8ls*NF)`j!oTndeQOA8!p`5arxe{ zyHC&Ef7V{06%KMjNswPKgTu2MX$%YuA)YRdAsp93`@H!Y6a<{R`<R)O<k@%p_q?jn zS@!kP7T?DCuNtOZVJ?y|zJI~{!xH`QNBe&DRygrp%Z%%==f1S`>J(w+=@XqLVh<cE i=Py{|=KVi^&Zj@jV#Ny2uQ4z%FnGH9xvX<aXaWE$zH{yX diff --git a/htdocs/theme/md/img/help.png b/htdocs/theme/md/img/help.png index 12e6cd655d6630345cd24c74b5e85bec38524c1a..2c56e645a01cb767febeb54c59743603f8c21d88 100644 GIT binary patch delta 296 zcmbQpx`SzgWIYQ51H)Fwr%?<H42;D=?oJHr&dI!FU|?WM@^*J&_}|`tW<LW1180Fp zWHAE+w=f7ZGR&GI!N9=4UgGKN%6^}Xg~OEhFK?$D0|UbzPZ!4!iOaPY4852W1y~>C zUvr2O-MT?2NaBK@fDVh|hVTzkmW|IlEuD01np({kwbu9cDjn17?K%4XU7BOf)7jsj z?UnrJ7?59Kkk=vd;YG&B*on@`o&Lg;Ba}X0nBW!IwlsHlS<X)(##Lqy4xc#lwds1> zDla~_c}uN}HcRr=MT^=z^{ma_|2(Hq^ts-tMb~a7UAuefe9OvA^H)aQ|JMBPWZY@g zpPYGK_1<32?_t-bD_+?%f!+L{&XnaF*L`F5?a_U8;^>if1_lNOPgg&ebxsLQ0LxE$ A!2kdN literal 657 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4rT@h290TVA2Tp8u$OrHy0Ty65Mh*+;T3QB z&%nUIS>O>_%)r3)0fZTy)|kv-U|?WLcl32+VA$Bt{U?!?fq{`Dz$e62!Z1kDGFj6p z*~u#?D!V$lx+l4MX>!Y)<d&t`)jiqOQ?h%O7Pm|(p0c&NXKD46rPWjRw)D(tnX<HH z%G#beOMB*Q?OD2a%ABQB=B%BvbnTR-Tc<4DJ7w*$IZOA>S$l5I-fK(O9$UI~>(af~ zmL9vecI&yd$L_5?_I&H!V_Wy0+q(DK)???k9(%s^+`X;m-fzA3eed35dyk#ld+gfY zbJzBsySMk;^S#&J@4ff^*tu)Ru020@?fJQT_s-pWe(v7)bI-q@d;b62`~TPOJ->GE z{k7-MuRZ^M?fL&}@4sJr|Nq+e|M#B1zxV$Cz3=~@fB*md|Nr+O@csSw_wT>|fB*mg zcM$mh{r~sx|NsC04<ZiikhNi8V2CIQ@(Tuu(Eu}4%s#}yz`(G=)5S4_<9ad&d*gx& z3nmx{G&6S8HvhR&>+JML@y>z=0nBM94>UN$3tYdhuW%sH<MeIo11H6g@P7DqMeyp! zFJDRw*o$PDY;2E8+_-xuX02#rjCOu{ez01ed2}>)p~CeG7mxbQoOt-&m16+{DVrAd zcH1b=o;R1TpQB^-x<n=Q1FKh`I?q|y*0rH$)hr2Z?kk}W#V*x&&ADXY&eYg6#l=F% h{7yiutP3N<Cl-Szi%eWO85kHCJYD@<);T3K0RZE8h-m-- diff --git a/htdocs/theme/md/img/helpdoc_top.png b/htdocs/theme/md/img/helpdoc_top.png new file mode 100644 index 0000000000000000000000000000000000000000..1d194e23ec2bf3e3c45233091d06f25c21006610 GIT binary patch literal 267 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgT=H~r45?t8+Gpt3>LB9k zzx=NLzXopu!v|tZE@yBrEa441V5Q^3p}2$9`~e?NwnKs7;*J!f%9)<W9?g&b@b2-m zvrkKuyk^C!b}5MS)NGE-tV;Ue`P0Zg+|4fH?4Ah~;W;TvtPf_L{4tXwaYO%|;s>SI z8`*ciT(YiY=hK@t^DQRlaXFuS_Oe}C@2IGRl>VpF%Fp+7uXkQ3{^0D#&=)(ch0Z^h z5V;lExBJLK%cPh8dAD*HcCRrunrR<sp>pPgYG+KNze{`Bt}Pl(8eCagMSXKl$$xR1 WUH_2b?@|T^1_n=8KbLh*2~7ZqxNtQ9 literal 0 HcmV?d00001 diff --git a/htdocs/theme/md/img/logout_top.png b/htdocs/theme/md/img/logout_top.png new file mode 100644 index 0000000000000000000000000000000000000000..e2e2e5d973d4b80a0942b92f9cc079cdf0fb89a9 GIT binary patch literal 168 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sg<a@d}hEy;nFEF~0eB(?3 zgD{h8>4U6>Is7+77+uW|UTt6%VDOcheE3MfVTG31i!2H)JKtF!wq#ReGBeoWI5lxr z%cDEuJpUa}d4#lZ+DOzjOnFee!_I}%($T@ffYbf7TZ>X`o9_(~#;F;B=BkVgYl|YH VAKYwM%fP_E;OXk;vd$@?2>{ynI0gU! literal 0 HcmV?d00001 diff --git a/htdocs/theme/md/img/object_action_rdv.png b/htdocs/theme/md/img/object_action_rdv.png deleted file mode 100644 index f29c713022cf3ca48e607fc9382921acb2081111..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 118 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sg*m}A+hEy;nD~K5wsTi3& zXy|l^6kss=_qdT$z?HW`)HJ~V;)+EUDX!cbj>XF8ypuZ6_J}<}mZg!2*_46d_M&ZR VEPoEIWnf@n@O1TaS?83{1OTjKA<+N; diff --git a/htdocs/theme/md/img/object_contact_all.png b/htdocs/theme/md/img/object_contact_all.png deleted file mode 100644 index cc204fdcaf1f376df619bf444699ec4123df7d9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 170 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sg6neTihEy<KJ!Qzp7%0K; z@Vwv-ac`AH0o}<NF|C_Bn%`9KmSwLnlfL=q<m!?$Cc!=P)0DlXHe7wZCNw2=1MA-# zk*-|9=4C+_GuWrkKR0RW`$&tOJNe^e&lYm<ev9+^keU9>(A3BK&W;whz|)pr_J3k4 Ykn<?s^|k8~0|Nttr>mdKI;Vst0Q*isLI3~& diff --git a/htdocs/theme/md/img/object_group.png b/htdocs/theme/md/img/object_group.png index cc204fdcaf1f376df619bf444699ec4123df7d9b..be0255f7ec2679667491349672d653bfaea6ab89 100644 GIT binary patch literal 655 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4mJh`26+$Niwq15Y)RhkE)4%caKYZ?lNlHo zI14-?iy0WWg+Z8+Vb&Z81_lQ95>H=O_WN9tV$wRNBWgk!7?@-{T^vI+&X-QI&kjzM zX`TOl@AV}D|Cd}j*`T>LY0ZKrdB<|`^6=JkR%vfiUcLw@C|()ApgHf6+AD=T-iXCF z?%XkXyZ7Yp_uq@X3NLJyn|HXenCHN?Yu8S_dX=^RZl1l+#5EdS;g?@-*}rq=%OCxp z=FXkF=l0uu8QX97zuv{R;POkG@T=YjF8^;#%g=wGwE3panyr;yoS~{qTRJ|xyL)^3 zT)*duUXys)n!^u2+^~QD{`U+;@BaoZzIY<Jr-MVusb}KD5A5dVRsN?uI~Uy9S^azG zsySOXTz**+7kag`V?vP9F^`_cq97wJu05Z3{G9W?{eEP8d^OV?_6?z-mZ5()Gz59g znHRP~>zw7B?-lPq-b-AQx^wRywuJV>i5-Uf_!S?_S-dX$lTCVvh@;BGy@#v)IT{~7 zPCn)NQ~E$&e*WnSn>tyiAA(K?qPh*!<eV$yYYteS&oNu9qb{;IiR};5iQj+g&PP?p zhR!u)YnXB=ar4HKi1W`vu5zBUj9M%9c+(y0+Z%7c-6uFvTj>&8K<Fl&-P`tU+xF?} z?dvb*oZhUX>^igl-<PL1nYOH|;*Jm#WL8k>aZ~p5^PevI$(8&4-^BIhkK^9E<uji+ z^X}a`y`a9nJ_#N^522Omrrn(kYtA~9PD#D_{^p&(XF|6!`Se_rlaZM-+voU9L$*-Y zuR6jLTMVBSdA%&!T$y)Rr-%Lf`}JG&w%D0XmkR&S_U~tK@(<?UkK<|{e60&$U|?YI MboFyt=akR{02DMg@Bjb+ literal 170 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sg6neTihEy<KJ!Qzp7%0K; z@Vwv-ac`AH0o}<NF|C_Bn%`9KmSwLnlfL=q<m!?$Cc!=P)0DlXHe7wZCNw2=1MA-# zk*-|9=4C+_GuWrkKR0RW`$&tOJNe^e&lYm<ev9+^keU9>(A3BK&W;whz|)pr_J3k4 Ykn<?s^|k8~0|Nttr>mdKI;Vst0Q*isLI3~& diff --git a/htdocs/theme/md/img/object_phoning.png b/htdocs/theme/md/img/object_phoning.png index 0bfd66d818ed353dae9362de2760565767aa02af..23a4e0b1dbbc3749b03c45864b52f7d12f907520 100644 GIT binary patch literal 577 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s77>k44ofy`glX=O&z`&N| z?e4<x9|RZdT|SwCfq}EYBeIx*fm;}a85w5Hkzin8U@!6Xb!ETDBPXP1dilTtX9fnw zgPtyqAr_~5gEn>rJBrw*e^Q9tdW*xcJ3;wIYMPw3<AhwDmcPv2($jOV9rE8GkaH)= zG)X_Ku2CaN^UUn)yEnv|DVQ~>eYhtx`=pTA(el*~@9lhkulSu~<TM6`=XX@!{}p41 z$i8UG!H^nxZ;A<X!<0*tC6ZIuy7qkh&v0(1wu=3vJB$pTzPGn+f3?f*<)%i%V>Ze= z7t5%0FVe8<IsVvBgr~us;egB}mIucQEWXTTP}zGve{ExsSO4l&T=#zaN$)v(NAqR4 zSLXIrtCZi{I&sWp*yr)fO^BgRI{Dn1t#fBF9%vD$W2j(vP-)j(+I%(ZXm{NYaoNfF z|6?vGWfxdT@We4$d_Op=ulU`$604(X7T1rSOfk~zQcAN`dHJ<yr_GD+zq<?%S(az? zR5Cu;k~yooG<JSOcHzFP9>IIRYZ;EK^s0DR86A_^o?E^4`s><rb_<uNEiJJ=7Ew4k znS=4(@7hW0uT^^9XUt*T;UgriFkj{E%&*7q^avbUlPRVBQir?R)ckc*9n*n(X=!%z z4@Y(HS|`5v;tSrBVh2hm-L5qF^kuz@e4BvSpWB&czEAevXDgWggxT{u;~5p(wX0sG dM^5{}%xCl7C413#X$A%c22WQ%mvv4FO#u1h^RWN` literal 200 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sg^n1EEhEy;nFEG+bvtVec zmMr<8dF$v0d7j{pno*3QS6ci7nL{qd)pX72Fzjr7$Qt0O&a7Pb|0<)Xq#zedUE6b> zbjcf>nx9!`ZEa}moUkcs!KT)P%My~iB)=JMF<P>iRX<{t)QUGu&6<Z*6nfPIY9!_{ zE*1E|Q0DzpB1>YPvdBYj^Xh~JI?Ts1?Mj1%7>u*bKfV@Q*u=oVz~JfX=d#Wzp$P!? C7DU7V diff --git a/htdocs/theme/md/img/object_user.png b/htdocs/theme/md/img/object_user.png index 599e87b3ab83c621f919b124054165edfe13692a..efd446a1a4c05b50932240855227fec33c4564c2 100644 GIT binary patch literal 581 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4mJh`26+$Niwq15Y)RhkE)4%caKYZ?lNlHo zI14-?iy0WWg+Z8+Vb&Z81_lQ95>H=O_WN9tVw?<(B?+kv42+jNT^vI+&d;56HZLep zr1iSp^FvEHrpT}C6<{~XO`kF=%X%}9%uI_wcRnAPm%<jC{V$|{VEn~m(_naU%91jl zC1HWDmWnTVdau~xc}_a7nNi{SYv-bFT5HRHnD2aDe0I6HxApDY)l<EmuH5QZw)<}R z-njhrSF=_|&NtVdb#__#`+wK!wnkM7@;O@=m`Qy#Ka(eT;C1Bs8KS+%+-`mU`}|-6 z!&;LNna5vlYlekot!GGi#-^`6S;V;7OH*U*!mVxBxKvoUemdp8Tm84rUd{1wjNas{ zQ3oU0lX=}13m!_WF#DeLK|A2u4E|u-)-b6+5k;PM36^G#1Lt=he0=_Ru(9cT^}wEw zM<o{DS6&iickb|q2UWj|!Zg-e?4R*}-pRCiE`?Jj2Q?`?@|WkA=WT!ZbkBl_=-6m| zk?z+orC+w6yU8SYQ0n&C)MEE}UxW@SSg;=mXL$3@?uO>nuKdX>pU7sv%~f={7v;^M z(84l<S@UV6$ZC1@c)z%9x8JVc6t`agPE_1I|6iTQ8KyDlSUg|Xk(AajA??|w=@U$q z0^gQcvEK{YIY;e~7=y+0e<xLqn-40ufB1XEnBl{+YaYow)z@}2%wQ1s9G`0}DAAy- ibo@-6V!iQab{B^mS0X!DXD~1@FnGH9xvX<aXaWFH)AQc| literal 164 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgWP7?ehEy<aJ++bZkb{K7 z!}Uft9hP75Y%xw_-+0y~N?UH4+rykE4iDQ!o>jj!p6sT-`*wCq)ze_1Q>DB7X6iY` z&fVtJJ9oBD<cyoAjy=dRv65V)Tbo(x_H=psl2F;H3z}bv`uT@;&NlmdRXVUBC2qBw S?N0^<1_n=8KbLh*2~7Z0u0P%Y diff --git a/htdocs/theme/md/img/printer_top.png b/htdocs/theme/md/img/printer_top.png new file mode 100644 index 0000000000000000000000000000000000000000..6e8bcbf98a57f1c6e80aa31b21e15677e3796778 GIT binary patch literal 167 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sg<axR{hEy;nFJSaYuxMZt zHV`#6_~YKpo1ztzP~gzab>fl_Pq5@Z#?qui?;Rx7Iu>y#h)eG|YryZ(<}7kGIh-YA z5s%92jTVyAKT8WRadbor3OQ&v@x5l3=#oolt7cxMG)J*drr5x>MR~?61_r&Y4Y^aM TuXx44z`)??>gTe~DWM4fo&+)k literal 0 HcmV?d00001 diff --git a/htdocs/theme/md/img/switch_off.png b/htdocs/theme/md/img/switch_off.png index ad7e703ccac95afb2a7078f244ab47c1a47c26ac..28a4376fb438b41bee3481e229439c14b55f8e1a 100644 GIT binary patch literal 1252 zcmeAS@N?(olHy`uVBq!ia0y~yU@&B0VBq6mV_;xt+wdiYfq{XsILO_JVcj{ImkbOH zY)RhkE)4%caKYZ?lNlHoI14-?iy0WWg+Z8+Vb&Z81_lQ95>H=O_S+otf>r`6@A}Fy zFtDU}x;Tb-9N#+4Hzy=i<aqt_d%y3UDY3fIpSgTXN6pboTvJ%xm>Pq^Sswc>7D#r9 zkX+1NevH-e@HvTVdN*e8xFE4zW7diYR@H4n6Sr_(;c|U*e9!N+d$re(`kem4%+#e` zd2;XfxyA2(&M$sv>Hh7VtWAWDSp4d+)pwO1WhlJ2{qFSr(DS_yVisLn7i<0bO5@+h zt%p{19XCIr<?!mYo3Y6Q>3yxgU0l+R>-Ec<+uGheUiR+J&lSb*`i_~*>pt)&%th*7 zW!~nq`b!e^BeEr>q!w)sxn*Q*+xuNkFtR9o@t?VK)s&umt`xCK-nDDjs-sEP*P<N6 zrc}*mYC3-1cj9i1`Rp5J9RGcLfvZB7j-Kz#*|QJpe|xpRt48K{het+KboAq(l`UJ# zW;!huQ8Vbsu$i|c%X6+k8)MY!S?&Tck3K|QSjFbJaHX2qbd#!c#^&M+rzr6-tzv4@ z*<GBO@{Ub~gULn3G&gsx=gJTjE%%C*m7&?buUfNYiXR^5_VM%GSXF9%dmEpC#BqJ` z`qZpfYI?o}dZ~Ap`C3FjJKy=*VtRnD?dxm#3zlDr<Ytsp?V5Qra*NQGYuv}~ul^ps zXjU`p<!kq*m8^ZYEJiQ5UT?;MgvF75d+WP4m43;)cY^;uZ}H#$*)n!T6a4Ld&B&fy zfBE)q#%$f6&zKI!&rQ#%nY8a-uS=oNjFXqIUJmy6?hkVM7AE|3r_r$)zrX$Q5|L=` zIP`@3Y+mST=NSeOM+|;lwp3ep_rcoj{hRB2#l_wA3mzS*_VKx=F#Ys~)CBAH_?o^Q zLX%IXTK;}2`D;60!IKY;Nzsn2Z9ZxXk{(CB4di++YPL$J;m7(EpN62Oi?>uN{GBro zN}PT2UU*CClovVqX}fHk!~M;5SAX*HiBX-+Eh%Srdg@2-mc(g`*UPBR&wupi`}2zD zuO!^q_mq4|m3ybBcgZ^bqMS@em6hb$$xAC|s`T}p^IK+Te>(oMV78a5UaVYdRn@e< zBzEQJy0^FS7QFbG-mzLVii`Es#HSnA{@qjXBJ$A=r{dzejeqZ5zwB;nA@DihDf?~2 z!@}JA8=H-n?|<-QxB5-H3&*$LuQ{t+`#0y^`^T60?H8!t_pEl;HtV_|r6eu*?6!v3 z?T$qqS1h%rzB1bDWxK<JMQufBz}nJHLA4pD#4En`UjO;#OXj+m*$LMlOy+qf?b5xW zIzxV@lXjs=yZ3?R20QZk9rHx5Ma@}V8Z&>{=`URzi4uBirf)lbOsw*H@q0tH8UFs8 zFH}fHPChd6tm)?e2QIVBWN20D(+<%Nm8(w@cT{T@Qd}9ua`v6Av&UZfC2~Q}r$x+f zD$h`r$n|LcCGqh6@glKCex~M2i+m@k1PaWk(u~o%sxe<E?aU;-x15_3@4nu8Zd#Rr zTVtU2C69?`pUhZwPwDy;<&uZB?oGcujP#dJQCfFoqNMciw`Ubj9CMU-@<H>zc&Edx zB|Sa=be^8@3O3Wue3d<!SAmy#LB0e7YprzSlG1s%DpGP)r6eV7zwy^~a5cDl98Y9m PU|{fc^>bP0l+XkKMb1O} literal 292 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sgy!Lc)45?sTd)C&AIZ&kG z;$xL2DaVsWO>?hZ-00)<=7`aPM{GGq=IbbB_PB~Y;BVq+5;J?}JYB(Vwn%3|x8s(M z*8AFRzb%UA*XIU?-<%RwyMt%j%GZYu%#1nN|0-xhZL)CTo|hl?c8O0;(B<{DUEE;) zjPcaGBlp)$NzFRJTCC6P$NEu&^|q-?{2i;7RsM!qHw16LS((`x{eIdCucRwmgzmqt z*b=)S)k0{oTpR0cqc9uylg>TLmRZ}DCa@oSm%_lE$9nntrEfB~(@f7U%y2uNec%zx x@6fcvoyE+@UlnQIm~u@uHaI%?<Mn+Er&%+X&FZmJVqjok@O1TaS?83{1OTOkeKG(5 diff --git a/htdocs/theme/md/img/switch_off_old.png b/htdocs/theme/md/img/switch_off_old.png new file mode 100644 index 0000000000000000000000000000000000000000..ad7e703ccac95afb2a7078f244ab47c1a47c26ac GIT binary patch literal 292 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3Sgy!Lc)45?sTd)C&AIZ&kG z;$xL2DaVsWO>?hZ-00)<=7`aPM{GGq=IbbB_PB~Y;BVq+5;J?}JYB(Vwn%3|x8s(M z*8AFRzb%UA*XIU?-<%RwyMt%j%GZYu%#1nN|0-xhZL)CTo|hl?c8O0;(B<{DUEE;) zjPcaGBlp)$NzFRJTCC6P$NEu&^|q-?{2i;7RsM!qHw16LS((`x{eIdCucRwmgzmqt z*b=)S)k0{oTpR0cqc9uylg>TLmRZ}DCa@oSm%_lE$9nntrEfB~(@f7U%y2uNec%zx x@6fcvoyE+@UlnQIm~u@uHaI%?<Mn+Er&%+X&FZmJVqjok@O1TaS?83{1OTOkeKG(5 literal 0 HcmV?d00001 diff --git a/htdocs/theme/md/img/switch_on.png b/htdocs/theme/md/img/switch_on.png index 0f72bfaccd50450154b10e9563966bf74a8d68ab..d4e32d98f57ff37c78bdf1e6b4235e7fb4cefc17 100644 GIT binary patch literal 1228 zcmeAS@N?(olHy`uVBq!ia0y~yU@&4}VBq6mV_;y&ZTC-SU|?V@4sv&5Sa(k5B?AKk zTavfC3&Vd9T(EcfWCjKX&H|6fVg?3oVGw3ym^DX&fq{X&#M9T6{WgcZptV8wikRsP z3@kpLE{-7{$Jb8t&IxsuI9`9>y!hPC^>JR&SzHoIp3KKILYnzGs(lI;YKtFR%k7*L zv9loY(4kf}y_g*zwk8B8-`HWWf>TP!GeBCN)A2x-k8};=*8bbKtIyB;8FMH4*1e{r z*E#2AdOoxN|Nr}s^Cy1%`0-($ZFS$$%qssLLvcYfBc6g+kDus^yV=dD`MEIc*YYaQ zB%c3G>UYnczW>xT>}>wdvmGq@Z}+YK-9Eo2P)$wEucxPH&y^fALt`^Nl}A@DPv<TC z^jmy~h+p6(U5SroPpWU~oqxRQzuZRKZmkPC&phh)zh|DGdb7{wyk=L@VI>Bama?47 z-*Qi7PF=HN(oQXbDv8n)tD6O^SzK8P1-ZLi1Jos0)tZdmd)hcV)^eB&vm8wIx)pzH zc4Wc1iOXItGg4BT!Ft4DZ_p_tqm#P?<1Q*HwJ1Fhiint@KHoo}FvE2D`g`sXMrmo! zS6mTV^;B!^(mBuWC`Gsb>d=Zc)Mn&JQt{NR5Ikt<&XE`_`Er%x(TA6(1cj-ozFx_> zc){6eIqKJ+Evr0We>nN~e7B>Y&we@Xv*ljW2D>vC8^d>6)VG~}Cu03N`Hghdw9Ow` z!gg$}P-0=6ulnpPPv}w0@Ae#qDox+}f|fc-ojxL`DAZeJbwcmIhPzvT@xG68Yb}mX zWS_4-yJh~}%wul+Mpo4g=IiGy&tGwF-^AuQe=ll;1|?k))oEP86xk&{aki70EsMy} zYX6l}CPui$Tz=DJe0cTqhY!_vZ26-3Jnf!aQ{XhI{x>yUGo|kv-rv=@K21idqHq4K z<((oSo2(u=e$b9!a%`Qk>>{(pd&AA8X&>YNhKp<osF@U?HT~nXuQPfl&YqarnYC@I z_U7jjZ|=A4YWexC)N88N*HZ#wt?Q%JZ|?r9arBE)<;6wo!xpb)Os~6I=@g>6#M6D= z_pZ+0?)UdCZqeZA5_g}Z_G8An!y!EBPR{=xth>f|?tX>*Ww!6($0MZn_`MT9vE^7! z;nb5)l=<%0_L%YdSThD(ojqgjC8MJGB~MlsuPFT!Z5A0Ndp=x7GwbB8Et+!a^YUje zx7hR6qF;ZX+wK|9@4Zc~+4zHv)zUA>DE#rKOV8ijEo!N|*{hdUaWd@Y`h|D*ebF=Q zZz!I7$!N20hJXueaQ})$&vrXqORAa@6MaT>f1%o*L+@hSS9lyt@4db=%|2k^{Pj`q zFHVWvGsVLEKVP$zm(y0^Cp&bONN;EG6aIY8^8H-pV+FINzwo)gxTm_v<I9Sr6(3*c zXR=Igh;nM)zvIRqmdy@%x?VxY8&-Z$y~riv-~4(@j@)`r_Lbb}mvnUl7ZpF6KFj;^ zIm=V)_UvTqock<WXIp33gdIkDQ}QGwg*A2ywJp3GKKc5mv%9`eTel}JZ2!@!yRM>V zHq0>jbLGmF-5q@VygXB!c@h^(3W^FBn^~4FGz<P+>b~p2Wt-_8Gwy7fzCq9a@GhNH s-rw`YU;biNZhGRKX?Nk4;XiYkf_?8jX6meCU|?YIboFyt=akR{0QR*!A^-pY literal 257 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgobYsU45?r|dd}X9IZ&ka zWBfDIe=E-zO?u-f{C3jKrj8w~f}Jmvj95ez^$sX4Sg=FVwR}O?Mv3-^V*Fdqe>Z)8 z$MVCmUmo9LcV_M}ne=Dj<0I`>pYLw$>&fMR+dkDRGbiopx23+0pM)k0{$i6j_QsQG z*++-g-DbK0N5Asy+P8SxuU8w=g<g7_%lGnb3Y2_#nQxB!+{BB^qR%|8;!-*P@v-w4 zDa#L+@5zZa>7Jeus^;~1#+};}E*3uVo%{3E1$&WiF+1|++zO2l-ygjxb8+e2%WD}J P7#KWV{an^LB{Ts5(*1S^ diff --git a/htdocs/theme/md/img/switch_on_old.png b/htdocs/theme/md/img/switch_on_old.png new file mode 100644 index 0000000000000000000000000000000000000000..0f72bfaccd50450154b10e9563966bf74a8d68ab GIT binary patch literal 257 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4i*LmhCj#M?l3SgobYsU45?r|dd}X9IZ&ka zWBfDIe=E-zO?u-f{C3jKrj8w~f}Jmvj95ez^$sX4Sg=FVwR}O?Mv3-^V*Fdqe>Z)8 z$MVCmUmo9LcV_M}ne=Dj<0I`>pYLw$>&fMR+dkDRGbiopx23+0pM)k0{$i6j_QsQG z*++-g-DbK0N5Asy+P8SxuU8w=g<g7_%lGnb3Y2_#nQxB!+{BB^qR%|8;!-*P@v-w4 zDa#L+@5zZa>7Jeus^;~1#+};}E*3uVo%{3E1$&WiF+1|++zO2l-ygjxb8+e2%WD}J P7#KWV{an^LB{Ts5(*1S^ literal 0 HcmV?d00001 diff --git a/htdocs/theme/md/img/title_generic.png b/htdocs/theme/md/img/title_generic.png index ffb07138f9669b5e595a3ec4a405f62a4e3de894..4f90c63104aba086b4dc5c6a69a7720fc5c262b9 100644 GIT binary patch literal 138 zcmeAS@N?(olHy`uVBq!ia0y~yU{C>J4i*Lm25-&)VFm_<Ku;IPkP61PmpAe@7>F=m zj23XsIkH2=dxo6GfnQE8pLW*I^$gyA>Ec<lxU!@guN7@UqN>TwVa%OztS^~gWHvIf qep*<+w?5*`xutIAGg>>n*&8MnYyJGA($B!az~JfX=d#Wzp$P!FtS=Y< literal 197 zcmeAS@N?(olHy`uVBq!ia0y~yU@!n-4i*LmhQHi~JPZsBJ)SO(Ar*{oFF0~BIr6w% zwDRrV{)U-T`P^Q&EwQT}UyD7&@4@|b^LqA+Q+76=+m+3~j{8~(?{V)VnwI^Yx~4G- z^Ee$uA5CQ{Vqs@sY?$$YL4`p;ScZXxfx)pMU+GOR!%Ag_IgHHq4BzS*cq9xG4jfo) zVxRONh-sRH#jCdG=BAp?YaRqTch6EgQ_G-flXIbIKhpsQ1_lOCS3j3^P6<r_35!67 diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index b40c0f3d6c1..4695403aeff 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -568,12 +568,12 @@ td.showDragHandle { #id-left { min-height: 100%; position: relative; - width: 193px; + width: 213px; } #id-right { /* This must stay id-right and not be replaced with echo $right */ width: 100%; <?php if (GETPOST("optioncss") != 'print') { ?> - padding-left: 194px; + padding-left: 224px; padding-top: 12px; <?php } ?> } @@ -620,7 +620,7 @@ td.showDragHandle { <?php } ?> } .side-nav-vert { - margin-left: 194px; + margin-left: 228px; } @@ -1106,7 +1106,7 @@ div.login_block { text-align: center; vertical-align: middle; background: #FFF; - width: 193px; + width: 228px; height: 42px; <?php if (GETPOST("optioncss") == 'print') { ?> display: none; @@ -1188,7 +1188,7 @@ div.vmenu, td.vmenu { padding: 0px; padding-bottom: 0px; padding-top: 0px; - width: 174px; + width: 222px; } .vmenu { @@ -1199,7 +1199,7 @@ div.vmenu, td.vmenu { } .vmenusearchselectcombo { - width: 170px; + width: 202px; } .menu_contenu { padding-top: 4px; padding-bottom: 3px;} @@ -1234,6 +1234,9 @@ div.blockvmenupair, div.blockvmenuimpair, div.blockvmenubookmarks padding-bottom: 10px; border-bottom: 1px solid #e0e0e0; } +a.vsmenu.addbookmarkpicto { + padding-right: 10px; +} div.blockvmenusearch { -- GitLab From 1075940e93fd2625ef8f2eb8e8d100910bd0f338 Mon Sep 17 00:00:00 2001 From: yassine belkaid <yassine.belkaid87@gmail.com> Date: Sat, 5 Dec 2015 00:37:32 +0000 Subject: [PATCH 095/197] ignore conf/conf.php file --- htdocs/.gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/.gitignore b/htdocs/.gitignore index bf0c3b10ffa..bf6a1487ea6 100644 --- a/htdocs/.gitignore +++ b/htdocs/.gitignore @@ -19,4 +19,5 @@ /dolimed* /allscreens* /ecommerce/ -/cabinetmed* \ No newline at end of file +/cabinetmed* +/conf/conf.php \ No newline at end of file -- GitLab From 8c2227430077912eda24e613af52bec65038be83 Mon Sep 17 00:00:00 2001 From: yassine belkaid <yassine.belkaid87@gmail.com> Date: Sat, 5 Dec 2015 00:41:00 +0000 Subject: [PATCH 096/197] Fixed assigning exceptional leave for a user --- htdocs/holiday/define_holiday.php | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/htdocs/holiday/define_holiday.php b/htdocs/holiday/define_holiday.php index 62ad088a5ef..5147188872a 100644 --- a/htdocs/holiday/define_holiday.php +++ b/htdocs/holiday/define_holiday.php @@ -130,10 +130,15 @@ elseif($action == 'add_event') $add_holiday = $holiday->getValueEventCp($event); $new_holiday = $nb_holiday + $add_holiday; - // On ajoute la modification dans le LOG - $holiday->addLogCP($user->id,$userCP, $holiday->getNameEventCp($event),$new_holiday); + // add event to existing types of vacation + foreach ($typeleaves as $key => $leave) { + $vacationTypeID = $leave['rowid']; - $holiday->updateSoldeCP($userCP,$new_holiday); + // On ajoute la modification dans le LOG + $holiday->addLogCP($user->id,$userCP, $holiday->getNameEventCp($event),$new_holiday, $vacationTypeID); + + $holiday->updateSoldeCP($userCP,$new_holiday, $vacationTypeID); + } setEventMessages('AddEventToUserOkCP', '', 'mesgs'); } -- GitLab From e002021d7dce4a28d31a40c49970be10f545f743 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sat, 5 Dec 2015 17:49:08 +0100 Subject: [PATCH 097/197] Fix td balance --- htdocs/comm/propal.php | 38 ++++++++++++++++++-------------- htdocs/langs/en_US/projects.lang | 1 + htdocs/theme/md/style.css.php | 21 +++++++++++------- 3 files changed, 35 insertions(+), 25 deletions(-) diff --git a/htdocs/comm/propal.php b/htdocs/comm/propal.php index 1ef9953a6d9..9ab3a1967f1 100644 --- a/htdocs/comm/propal.php +++ b/htdocs/comm/propal.php @@ -1755,7 +1755,7 @@ if ($action == 'create') if ($action != 'editdate' && ! empty($object->brouillon)) print '<td align="right"><a href="' . $_SERVER["PHP_SELF"] . '?action=editdate&id=' . $object->id . '">' . img_edit($langs->trans('SetDate'), 1) . '</a></td>'; print '</tr></table>'; - print '</td><td colspan="3">'; + print '</td><td colspan="5">'; if (! empty($object->brouillon) && $action == 'editdate') { print '<form name="editdate" action="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '" method="post">'; print '<input type="hidden" name="token" value="' . $_SESSION ['newtoken'] . '">'; @@ -1781,7 +1781,7 @@ if ($action == 'create') if ($action != 'editecheance' && ! empty($object->brouillon)) print '<td align="right"><a href="' . $_SERVER["PHP_SELF"] . '?action=editecheance&id=' . $object->id . '">' . img_edit($langs->trans('SetConditions'), 1) . '</a></td>'; print '</tr></table>'; - print '</td><td colspan="3">'; + print '</td><td colspan="5">'; if (! empty($object->brouillon) && $action == 'editecheance') { print '<form name="editecheance" action="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '" method="post">'; print '<input type="hidden" name="token" value="' . $_SESSION ['newtoken'] . '">'; @@ -1809,7 +1809,7 @@ if ($action == 'create') if ($action != 'editconditions' && ! empty($object->brouillon)) print '<td align="right"><a href="' . $_SERVER["PHP_SELF"] . '?action=editconditions&id=' . $object->id . '">' . img_edit($langs->transnoentitiesnoconv('SetConditions'), 1) . '</a></td>'; print '</tr></table>'; - print '</td><td colspan="3">'; + print '</td><td colspan="5">'; if ($action == 'editconditions') { $form->form_conditions_reglement($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->cond_reglement_id, 'cond_reglement_id'); } else { @@ -1822,7 +1822,7 @@ if ($action == 'create') $langs->load('deliveries'); print '<tr><td>'; print $form->editfieldkey($langs->trans('DeliveryDate'), 'date_livraison', $object->date_livraison, $object, $user->rights->propal->creer); - print '</td><td colspan="3">'; + print '</td><td colspan="5">'; print $form->editfieldval($langs->trans('DeliveryDate'), 'date_livraison', $object->date_livraison, $object, $user->rights->propal->creer, 'day'); print '</td>'; print '</tr>'; @@ -1837,7 +1837,7 @@ if ($action == 'create') if ($action != 'editavailability' && ! empty($object->brouillon)) print '<td align="right"><a href="' . $_SERVER["PHP_SELF"] . '?action=editavailability&id=' . $object->id . '">' . img_edit($langs->transnoentitiesnoconv('SetAvailability'), 1) . '</a></td>'; print '</tr></table>'; - print '</td><td colspan="3">'; + print '</td><td colspan="5">'; if ($action == 'editavailability') { $form->form_availability($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->availability_id, 'availability_id', 1); } else { @@ -1856,7 +1856,7 @@ if ($action == 'create') if ($action != 'editshippingmethod' && $user->rights->propal->creer) print '<td align="right"><a href="'.$_SERVER["PHP_SELF"].'?action=editshippingmethod&id='.$object->id.'">'.img_edit($langs->trans('SetShippingMode'),1).'</a></td>'; print '</tr></table>'; - print '</td><td colspan="3">'; + print '</td><td colspan="5">'; if ($action == 'editshippingmethod') { $form->formSelectShippingMethod($_SERVER['PHP_SELF'].'?id='.$object->id, $object->shipping_method_id, 'shipping_method_id', 1); } else { @@ -1874,7 +1874,7 @@ if ($action == 'create') if ($action != 'editdemandreason' && ! empty($object->brouillon)) print '<td align="right"><a href="' . $_SERVER["PHP_SELF"] . '?action=editdemandreason&id=' . $object->id . '">' . img_edit($langs->transnoentitiesnoconv('SetDemandReason'), 1) . '</a></td>'; print '</tr></table>'; - print '</td><td colspan="3">'; + print '</td><td colspan="5">'; if ($action == 'editdemandreason') { $form->formInputReason($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->demand_reason_id, 'demand_reason_id', 1); } else { @@ -1892,7 +1892,7 @@ if ($action == 'create') if ($action != 'editmode' && ! empty($object->brouillon)) print '<td align="right"><a href="' . $_SERVER["PHP_SELF"] . '?action=editmode&id=' . $object->id . '">' . img_edit($langs->transnoentitiesnoconv('SetMode'), 1) . '</a></td>'; print '</tr></table>'; - print '</td><td colspan="3">'; + print '</td><td colspan="5">'; if ($action == 'editmode') { $form->form_modes_reglement($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->mode_reglement_id, 'mode_reglement_id'); } else { @@ -1912,7 +1912,7 @@ if ($action == 'create') if ($action != 'classify') print '<td align="right"><a href="' . $_SERVER['PHP_SELF'] . '?action=classify&id=' . $object->id . '">' . img_edit($langs->transnoentitiesnoconv('SetProject')) . '</a></td>'; print '</tr></table>'; - print '</td><td colspan="3">'; + print '</td><td colspan="5">'; if ($action == 'classify') { $form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 1); } else { @@ -1941,7 +1941,7 @@ if ($action == 'create') // Outstanding Bill print '<tr><td>'; print $langs->trans('OutstandingBill'); - print '</td><td align=right colspan=3>'; + print '</td><td align="right" colspan="5">'; print price($soc->get_OutstandingBill()) . ' / '; print price($soc->outstanding_limit, 0, $langs, 1, - 1, - 1, $conf->currency); print '</td>'; @@ -1958,7 +1958,7 @@ if ($action == 'create') if ($action != 'editbankaccount' && $user->rights->propal->creer) print '<td align="right"><a href="'.$_SERVER["PHP_SELF"].'?action=editbankaccount&id='.$object->id.'">'.img_edit($langs->trans('SetBankAccount'),1).'</a></td>'; print '</tr></table>'; - print '</td><td colspan="3">'; + print '</td><td colspan="5">'; if ($action == 'editbankaccount') { $form->formSelectAccount($_SERVER['PHP_SELF'].'?id='.$object->id, $object->fk_account, 'fk_account', 1); } else { @@ -1979,7 +1979,7 @@ if ($action == 'create') else print ' '; print '</td></tr></table>'; print '</td>'; - print '<td colspan="3">'; + print '<td colspan="5">'; if ($action != 'editincoterm') { print $form->textwithpicto($object->display_incoterms(), $object->libelle_incoterms, 1); @@ -1992,16 +1992,20 @@ if ($action == 'create') } // Other attributes - $cols = 3; + $cols = 5; include DOL_DOCUMENT_ROOT . '/core/tpl/extrafields_view.tpl.php'; // Amount HT - print '<tr><td height="10" width="25%">' . $langs->trans('AmountHT') . '</td>'; + print '<tr><td height="10">' . $langs->trans('AmountHT') . '</td>'; print '<td class="nowrap" colspan="2">' . price($object->total_ht, '', $langs, 0, - 1, - 1, $conf->currency) . '</td>'; // Margin Infos - if (! empty($conf->margin->enabled)) { - print '<td valign="top" width="50%" rowspan="4">'; + if (! empty($conf->margin->enabled)) + { + $rowspan=4; + if ($mysoc->localtax1_assuj == "1" || $object->total_localtax1 != 0) $rowspan++; + if ($mysoc->localtax2_assuj == "1" || $object->total_localtax2 != 0) $rowspan++; + print '<td valign="top" width="50%" colspan="3" rowspan="'.$rowspan.'">'; $formmargin->displayMarginInfos($object); print '</td>'; } @@ -2017,7 +2021,7 @@ if ($action == 'create') { print '<tr><td height="10">' . $langs->transcountry("AmountLT1", $mysoc->country_code) . '</td>'; print '<td class="nowrap" colspan="2">' . price($object->total_localtax1, '', $langs, 0, - 1, - 1, $conf->currency) . '</td>'; - print '<td></td></tr>'; + print '</tr>'; } if ($mysoc->localtax2_assuj == "1" || $object->total_localtax2 != 0) // Localtax2 { diff --git a/htdocs/langs/en_US/projects.lang b/htdocs/langs/en_US/projects.lang index 505f6bce8e5..c82d651a01d 100644 --- a/htdocs/langs/en_US/projects.lang +++ b/htdocs/langs/en_US/projects.lang @@ -180,6 +180,7 @@ YouCanCompleteRef=If you want to complete the ref with some information (to use OpenedProjectsByThirdparties=Opened projects by thirdparties OpportunityTotalAmount=Opportunities total amount OpportunityPonderatedAmount=Opportunities weighted amount +OpportunityPonderatedAmountDesc=Opportunities amount weighted with probability (depending on status of opportunity) OppStatusPROSP=Prospection OppStatusQUAL=Qualification OppStatusPROPO=Proposal diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 4695403aeff..e983a16f3f9 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -572,8 +572,9 @@ td.showDragHandle { } #id-right { /* This must stay id-right and not be replaced with echo $right */ width: 100%; + padding-bottom: 10px; <?php if (GETPOST("optioncss") != 'print') { ?> - padding-left: 224px; + padding-left: 229px; padding-top: 12px; <?php } ?> } @@ -626,7 +627,7 @@ td.showDragHandle { div.fiche { margin-<?php print $left; ?>: <?php print (GETPOST("optioncss") == 'print'?6:((empty($conf->global->MAIN_MENU_USE_JQUERY_LAYOUT))?($dol_hide_leftmenu?'4':'20'):'24')); ?>px; - margin-<?php print $right; ?>: <?php print (GETPOST("optioncss") == 'print'?8:(empty($conf->dol_optimize_smallscreen)?'12':'4')); ?>px; + margin-<?php print $right; ?>: <?php print (GETPOST("optioncss") == 'print'?8:(empty($conf->dol_optimize_smallscreen)?'16':'4')); ?>px; <?php if (! empty($conf->dol_hide_leftmenu) && ! empty($conf->dol_hide_topmenu)) print 'margin-top: 4px;'; ?> margin-bottom: 15px; } @@ -837,14 +838,19 @@ li.tmenu, li.tmenusel { font-weight: normal; } li.tmenusel, li.tmenu:hover { +/* background-image: -o-linear-gradient(bottom, rgba(250,250,250,0.3) 0%, rgba(0,0,0,0.3) 100%) !important; background-image: -moz-linear-gradient(bottom, rgba(0,0,0,0.5) 0%, rgba(250,250,250,0) 100%) !important; background-image: -webkit-linear-gradient(bottom, rgba(0,0,0,0.3) 0%, rgba(250,250,250,0) 100%) !important; background-image: -ms-linear-gradient(bottom, rgba(250,250,250,0.3) 0%, rgba(0,0,0,0.3) 100%) !important; background-image: linear-gradient(bottom, rgba(250,250,250,0.3) 0%, rgba(0,0,0,0.3) 100%) !important; background: rgb(<?php echo $colorbackhmenu1 ?>); +*/ /* background: url(<?php echo dol_buildpath($path.'/theme/'.$theme.'/img/nav-overlay3.png',1); ?>) 50% 0 repeat-x !important; Nicer but problem when menu wrap on 2 lines */ } +li.tmenusel, li.tmenu:hover { + opacity: .50; /* show only a slight shadow */ +} .tmenuend .tmenuleft { width: 0px; } /* .tmenuend { display: none; } */ div.tmenuleft @@ -2256,7 +2262,6 @@ div.liste_titre_bydiv { border-collapse: collapse; display: table; padding: 2px 0px 2px 0; - box-shadow: 2px 2px 4px #CCC; width: calc(100% - 1px); /* 1px more, i don't know why */ } tr.liste_titre, tr.liste_titre_sel, form.liste_titre, form.liste_titre_sel, table.dataTable.tr @@ -2723,10 +2728,10 @@ img.datecallink { padding-left: 2px !important; padding-right: 2px !important; } table.dp { width: 180px; background-color: #FFFFFF; - border-top: solid 2px #f4f4f4; + /*border-top: solid 2px #f4f4f4; border-<?php print $left; ?>: solid 2px #f4f4f4; border-<?php print $right; ?>: solid 1px #222222; - border-bottom: solid 1px #222222; + border-bottom: solid 1px #222222; */ padding: 0px; border-spacing: 0px; border-collapse: collapse; @@ -2735,7 +2740,7 @@ table.dp { /* Barre titre */ .dpHead,.tpHead,.tpHour td:Hover .tpHead{ font-weight:bold; - background-color:#b3c5cc; + background-color: #888; color:white; font-size:11px; cursor:auto; @@ -2743,7 +2748,7 @@ table.dp { /* Barre navigation */ .dpButtons,.tpButtons { text-align:center; - background-color:#617389; + background-color: #888; color:#FFFFFF; font-weight:bold; cursor:pointer; @@ -2778,7 +2783,7 @@ table.dp { padding:0px; font-size:9px; border-width:0px; - color:#0B63A2; + color: #eee; vertical-align:middle; cursor: pointer; } -- GitLab From ff4f1e7a5be7becb0a1de96a8c7cd47cbc942c59 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sat, 5 Dec 2015 19:20:39 +0100 Subject: [PATCH 098/197] Debug 3.9 --- htdocs/bookmarks/card.php | 6 +- htdocs/core/class/html.formfile.class.php | 8 +- htdocs/core/lib/company.lib.php | 9 +- htdocs/core/tpl/resource_view.tpl.php | 9 +- htdocs/expensereport/list.php | 4 +- htdocs/projet/card.php | 8 +- htdocs/resource/element_resource.php | 108 ++++++++++-------- htdocs/theme/common/gmap.png | Bin 675 -> 358 bytes htdocs/theme/eldy/style.css.php | 2 +- .../theme/md/img/object_category-expanded.png | Bin 104 -> 198 bytes htdocs/theme/md/img/object_category.png | Bin 99 -> 104 bytes htdocs/theme/md/style.css.php | 80 ++++--------- 12 files changed, 104 insertions(+), 130 deletions(-) diff --git a/htdocs/bookmarks/card.php b/htdocs/bookmarks/card.php index daacc4ca4da..62b4ccddce6 100644 --- a/htdocs/bookmarks/card.php +++ b/htdocs/bookmarks/card.php @@ -1,6 +1,6 @@ <?php /* Copyright (C) 2001-2003 Rodolphe Quiedeville <rodolphe@quiedeville.org> - * Copyright (C) 2005-2013 Laurent Destailleur <eldy@users.sourceforge.net> + * Copyright (C) 2005-2015 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2014 Marcos García <marcosgdf@gmail.com> * * This program is free software; you can redistribute it and/or modify @@ -165,7 +165,7 @@ if ($action == 'create') print '</td><td class="hideonsmartphone">'.$langs->trans("ChooseIfANewWindowMustBeOpenedOnClickOnBookmark").'</td></tr>'; print '<tr><td>'.$langs->trans("Owner").'</td><td>'; - $form->select_dolusers(isset($_POST['userid'])?$_POST['userid']:$user->id,'userid',1); + print $form->select_dolusers(isset($_POST['userid'])?$_POST['userid']:$user->id,'userid',1); print '</td><td class="hideonsmartphone"> </td></tr>'; // Position @@ -262,7 +262,7 @@ if ($id > 0 && ! preg_match('/^add/i',$action)) print '<tr><td>'.$langs->trans("Owner").'</td><td>'; if ($action == 'edit' && $user->admin) { - $form->select_dolusers(isset($_POST['userid'])?$_POST['userid']:($bookmark->fk_user?$bookmark->fk_user:''),'userid',1); + print $form->select_dolusers(isset($_POST['userid'])?$_POST['userid']:($bookmark->fk_user?$bookmark->fk_user:''),'userid',1); } else { diff --git a/htdocs/core/class/html.formfile.class.php b/htdocs/core/class/html.formfile.class.php index c539efa5a9b..1226d3b35ba 100644 --- a/htdocs/core/class/html.formfile.class.php +++ b/htdocs/core/class/html.formfile.class.php @@ -176,18 +176,18 @@ class FormFile $out .= '<input type="hidden" id="'.$htmlname.'_link_section_id" name="link_section_id" value="'.$sectionid.'">'; $out .= '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; - $out .= '<div>'; - $out .= '<div class="float" style="padding-right: 10px;">'; + $out .= '<div class="valignmiddle" >'; + $out .= '<div class="inline-block" style="padding-right: 10px;">'; if (! empty($conf->global->OPTIMIZEFORTEXTBROWSER)) $out .= '<label for="link">'.$langs->trans("URLToLink") . ':</label> '; $out .= '<input type="text" name="link" size="'.$maxlength.'" id="link" placeholder="'.dol_escape_htmltag($langs->trans("URLToLink")).'">'; $out .= '</div>'; - $out .= '<div class="float" style="padding-right: 10px;">'; + $out .= '<div class="inline-block" style="padding-right: 10px;">'; if (! empty($conf->global->OPTIMIZEFORTEXTBROWSER)) $out .= '<label for="label">'.$langs->trans("Label") . ':</label> '; $out .= '<input type="text" name="label" id="label" placeholder="'.dol_escape_htmltag($langs->trans("Label")).'">'; $out .= '<input type="hidden" name="objecttype" value="' . $object->element . '">'; $out .= '<input type="hidden" name="objectid" value="' . $object->id . '">'; $out .= '</div>'; - $out .= '<div class="float" style="padding-right: 10px;">'; + $out .= '<div class="inline-block" style="padding-right: 10px;">'; $out .= '<input type="submit" class="button" name="linkit" value="'.$langs->trans("ToLink").'"'; $out .= (empty($conf->global->MAIN_UPLOAD_DOC) || empty($perm)?' disabled':''); $out .= '>'; diff --git a/htdocs/core/lib/company.lib.php b/htdocs/core/lib/company.lib.php index 70988d7e330..c7b370b287f 100644 --- a/htdocs/core/lib/company.lib.php +++ b/htdocs/core/lib/company.lib.php @@ -658,6 +658,7 @@ function show_contacts($conf,$langs,$db,$object,$backtopage='') if ($num || (GETPOST('button_search') || GETPOST('button_search.x') || GETPOST('button_search_x'))) { print '<tr class="liste_titre">'; + // Name - Position print '<td class="liste_titre">'; print '<input type="text" class="flat" name="search_name" size="20" value="'.$search_name.'">'; @@ -766,10 +767,8 @@ function show_contacts($conf,$langs,$db,$object,$backtopage='') print '</form>'."\n"; - print "<br>\n"; -?> -<div id="dialog" title="<?php echo dol_escape_htmltag($langs->trans('Address')); ?>" style="display: none;"></div> -<?php + // A div for the address popup + print '<div id="dialog" title="'.dol_escape_htmltag($langs->trans('Address')).'" style="display: none;"></div>'; return $i; } @@ -1343,7 +1342,7 @@ function show_actions_done($conf,$langs,$db,$object,$objcon='',$noprint=0) $i++; } $out.="</table>\n"; - $out.="<br>\n"; + //$out.="<br>\n"; } if ($noprint) return $out; diff --git a/htdocs/core/tpl/resource_view.tpl.php b/htdocs/core/tpl/resource_view.tpl.php index a5e5ab21919..dd775662db6 100644 --- a/htdocs/core/tpl/resource_view.tpl.php +++ b/htdocs/core/tpl/resource_view.tpl.php @@ -37,7 +37,10 @@ if( (array) $linked_resources && count($linked_resources) > 0) { $var=!$var; $object_resource = fetchObjectByElement($linked_resource['resource_id'],$linked_resource['resource_type']); - if($mode == 'edit' && $linked_resource['rowid'] == GETPOST('lineid')) + + //$element_id = $linked_resource['rowid']; + + if ($mode == 'edit' && $linked_resource['rowid'] == GETPOST('lineid')) { print '<form class="tagtr '.($var==true?'pair':'impair').'" action="'.$_SERVER["PHP_SELF"].'?element='.$element.'&element_id='.$element_id.'" method="POST">'; @@ -58,7 +61,7 @@ if( (array) $linked_resources && count($linked_resources) > 0) else { $style=''; - if($linked_resource['rowid'] == GETPOST('lineid')) + if ($linked_resource['rowid'] == GETPOST('lineid')) $style='style="background: orange;"'; print '<div class="tagtr '.($var==true?"pair":"impair").'" '.$style.'>'; @@ -91,8 +94,6 @@ if( (array) $linked_resources && count($linked_resources) > 0) print '</div>'; } - - } print '</div>'; diff --git a/htdocs/expensereport/list.php b/htdocs/expensereport/list.php index 10b19d66da3..c59a594b5a6 100644 --- a/htdocs/expensereport/list.php +++ b/htdocs/expensereport/list.php @@ -79,7 +79,7 @@ $fieldstosearchall = array( * View */ -$html = new Form($db); +$form = new Form($db); $formother = new FormOther($db); $expensereporttmp=new ExpenseReport($db); @@ -247,7 +247,7 @@ if ($resql) // User if ($user->rights->expensereport->readall || $user->rights->expensereport->lire_tous){ print '<td class="liste_titre" align="left">'; - $html->select_dolusers($search_user,"search_user",1,"",0,''); + print $form->select_dolusers($search_user,"search_user",1,"",0,''); print '</td>'; } else { print '<td class="liste_titre"> </td>'; diff --git a/htdocs/projet/card.php b/htdocs/projet/card.php index 51939d8e9fc..463cda3953c 100644 --- a/htdocs/projet/card.php +++ b/htdocs/projet/card.php @@ -507,13 +507,13 @@ if ($action == 'create' && $user->rights->projet->creer) // Opportunity amount print '<tr><td>'.$langs->trans("OpportunityAmount").'</td>'; - print '<td><input size="4" type="text" name="opp_amount" value="'.(GETPOST('opp_amount')!=''?price(GETPOST('opp_amount')):'').'"></td>'; + print '<td><input size="5" type="text" name="opp_amount" value="'.(GETPOST('opp_amount')!=''?price(GETPOST('opp_amount')):'').'"></td>'; print '</tr>'; } // Budget print '<tr><td>'.$langs->trans("Budget").'</td>'; - print '<td><input size="6" type="text" name="budget_amount" value="'.(GETPOST('budget_amount')!=''?price(GETPOST('budget_amount')):'').'"></td>'; + print '<td><input size="5" type="text" name="budget_amount" value="'.(GETPOST('budget_amount')!=''?price(GETPOST('budget_amount')):'').'"></td>'; print '</tr>'; // Description @@ -672,13 +672,13 @@ else // Opportunity amount print '<tr><td>'.$langs->trans("OpportunityAmount").'</td>'; - print '<td><input size="6" type="text" name="opp_amount" value="'.(isset($_POST['opp_amount'])?GETPOST('opp_amount'):(strcmp($object->opp_amount,'')?price($object->opp_amount):'')).'"></td>'; + print '<td><input size="5" type="text" name="opp_amount" value="'.(isset($_POST['opp_amount'])?GETPOST('opp_amount'):(strcmp($object->opp_amount,'')?price($object->opp_amount):'')).'"></td>'; print '</tr>'; } // Budget print '<tr><td>'.$langs->trans("Budget").'</td>'; - print '<td><input size="6" type="text" name="budget_amount" value="'.(isset($_POST['budget_amount'])?GETPOST('budget_amount'):(strcmp($object->budget_amount,'')?price($object->budget_amount):'')).'"></td>'; + print '<td><input size="5" type="text" name="budget_amount" value="'.(isset($_POST['budget_amount'])?GETPOST('budget_amount'):(strcmp($object->budget_amount,'')?price($object->budget_amount):'')).'"></td>'; print '</tr>'; // Description diff --git a/htdocs/resource/element_resource.php b/htdocs/resource/element_resource.php index 5c2414d22a2..21dad5afa05 100644 --- a/htdocs/resource/element_resource.php +++ b/htdocs/resource/element_resource.php @@ -49,7 +49,7 @@ $hookmanager->initHooks(array('element_resource')); $object->available_resources = array('resource'); // Get parameters -$id = GETPOST('id','int'); +$id = GETPOST('id','int'); $action = GETPOST('action','alpha'); $mode = GETPOST('mode','alpha'); $lineid = GETPOST('lineid','int'); @@ -61,30 +61,40 @@ $busy = GETPOST('busy','int'); $mandatory = GETPOST('mandatory','int'); $cancel = GETPOST('cancel','alpha'); $confirm = GETPOST('confirm','alpha'); +$socid = GETPOST('socid','int'); +if ($socid > 0) +{ + $element_id = $socid; + $element = 'societe'; +} + + /* * Actions */ if ($action == 'add_element_resource' && ! $cancel) { - $objstat = fetchObjectByElement($element_id, $element); + $error++; $res = 0; - if ($resource_id > 0) + if (! ($resource_id > 0)) { - $res = $objstat->add_element_resource($resource_id, $resource_type, $busy, $mandatory); + $error++; + setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Resource")), null, 'errors'); + $action=''; } - if ($res > 0) + else { - setEventMessage($langs->trans('ResourceLinkedWithSuccess'),'mesgs'); - header("Location: ".$_SERVER['PHP_SELF'].'?element='.$element.'&element_id='.$element_id); - exit; + $objstat = fetchObjectByElement($element_id, $element); + + $res = $objstat->add_element_resource($resource_id, $resource_type, $busy, $mandatory); } - else + if (! $error && $res > 0) { - setEventMessage($langs->trans('ErrorWhenLinkingResource') . " " . $objstat->error, 'errors'); - header("Location: ".$_SERVER['PHP_SELF'].'?mode=add&resource_type='.$resource_type.'&element='.$element.'&element_id='.$element_id); + setEventMessage($langs->trans('ResourceLinkedWithSuccess'),'mesgs'); + header("Location: ".$_SERVER['PHP_SELF'].'?element='.$element.'&element_id='.$element_id); exit; } } @@ -103,7 +113,7 @@ if ($action == 'update_linked_resource' && $user->rights->resource->write && !GE if ($result >= 0) { setEventMessage($langs->trans('RessourceLineSuccessfullyUpdated')); - Header("Location: ".$_SERVER['PHP_SELF']."?element=".$element."&element_id=".$element_id); + header("Location: ".$_SERVER['PHP_SELF']."?element=".$element."&element_id=".$element_id); exit; } else { @@ -115,25 +125,18 @@ if ($action == 'update_linked_resource' && $user->rights->resource->write && !GE // Delete a resource linked to an element if ($action == 'confirm_delete_linked_resource' && $user->rights->resource->delete && $confirm === 'yes') { - $res = $object->fetch($id); - if($res > 0) - { - $result = $object->delete_resource($lineid,$element); - - if ($result >= 0) - { - setEventMessage($langs->trans('RessourceLineSuccessfullyDeleted')); - Header("Location: ".$_SERVER['PHP_SELF']."?element=".$element."&element_id=".$element_id); - exit; - } - else { - setEventMessage($object->error,'errors'); - } - } - else - { - setEventMessage($object->error,'errors'); - } + $result = $object->delete_resource($lineid,$element); + + if ($result >= 0) + { + setEventMessage($langs->trans('RessourceLineSuccessfullyDeleted')); + header("Location: ".$_SERVER['PHP_SELF']."?element=".$element."&element_id=".$element_id); + exit; + } + else + { + setEventMessage($object->error,'errors'); + } } $parameters=array('resource_id'=>$resource_id); @@ -178,12 +181,13 @@ else /* * Specific to agenda module */ - if($element_id && $element == 'action') + if ($element_id && $element == 'action') { require_once DOL_DOCUMENT_ROOT.'/core/lib/agenda.lib.php'; $act = fetchObjectByElement($element_id,$element); - if(is_object($act)) { + if (is_object($act)) + { $head=actions_prepare_head($act); @@ -219,26 +223,36 @@ else if ($element_id && $element == 'societe') { $socstatic = fetchObjectByElement($element_id,$element); - if (is_object($socstatic)) { + if (is_object($socstatic)) + { + $savobject = $object; + + $object = $socstatic; + require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; $head = societe_prepare_head($socstatic); dol_fiche_head($head, 'resources', $langs->trans("ThirdParty"),0,'company'); - // Affichage fiche action en mode visu - print '<table class="border" width="100%">'; - - //$linkback = '<a href="'.DOL_URL_ROOT.'/comm/action/listactions.php">'.$langs->trans("BackToList").'</a>'; - - // Name - print '<tr><td width="25%">'.$langs->trans('ThirdPartyName').'</td>'; - print '<td colspan="3">'; - print $form->showrefnav($socstatic, 'socid', '', ($user->societe_id?0:1), 'rowid', 'nom'); - print '</td>'; - print '</tr>'; + dol_banner_tab($socstatic, 'socid', '', ($user->societe_id?0:1), 'rowid', 'nom'); + + print '<div class="fichecenter">'; + + print '<div class="underbanner clearboth"></div>'; + print '<table class="border" width="100%">'; + + // Alias name (commercial, trademark or alias name) + print '<tr><td class="titelfield">'.$langs->trans('AliasNames').'</td><td colspan="3">'; + print $socstatic->name_alias; + print "</td></tr>"; + print '</table>'; + print '</div>'; + dol_fiche_end(); + + $object = $savobject; } } @@ -248,7 +262,7 @@ else - foreach ($object->available_resources as $modresources => $resources) + foreach ($object->available_resources as $modresources => $resources) { $resources=(array) $resources; // To be sure $resources is an array foreach($resources as $resource_obj) @@ -273,7 +287,7 @@ else { $res=include DOL_DOCUMENT_ROOT . '/core/tpl/resource_add.tpl.php'; } - + //var_dump($element_id); if ($mode != 'add' || $resource_obj != $resource_type) { diff --git a/htdocs/theme/common/gmap.png b/htdocs/theme/common/gmap.png index 0423a91295654c414c56ff401e1b03257fb2c45e..201577281f048ad530a5ffc90ae5ddcde1ea09cb 100644 GIT binary patch literal 358 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7bv<1iLoEE)PHOZ$Y#`wJ zI)x#DX%l0h5ko4omE&f{RHjRu2`xs98yqDRCYop5Y~Y*FQa-ge<~x&+Qjp5;eed7> zuTM`q6+Z2$?nCQ;JDX?kdw>1fEw#G5M+_&Wlf2h{u;_ce?)57HYpn-X`#&U{e_SQe z7G60=#WS_1a)Pl>o|Bq8YuBQTiVELPwsYql@=MU(;J%^UKtET^SR!^h_pX{Y)=xI) zFPYr+T9bSG{ht5248GiFwa@Boh^qPF>txX=+P2qHc)CjU_xTe8Dl3D7FD!eJ%*`dU zO!@vvIfqjB?Wa3!e<U#7d?Ls3VC%oki7K6ibB))@9^bs;gq;7TiaqK=GTnzSwXkk^ z8f5#yvrhY|T>m?Few&UdGMc@27TUG%x>^&c%A%uX`S_2U_p}@0AMED|@+a$6GB7YO Nc)I$ztaD0e0stNsm3;sJ literal 675 zcmeAS@N?(olHy`uVBq!ia0y~yVBlt8U=ZM7V_;x7u(!32fq{V~-O<;Pfnj4m_n$;o z1_lPUByV>YhW{YAVDIwD3=9mM1s;*b3=G`DAk4@xYmNj10|R@Br>`sfeJ%lBHQt6r z>gyO77$i$vBTAg}b8}PkN*J7rQWHy3QxwWGOEMJPJ$(bh8~MZ;7#M$hx;TbtoNqnl z?;#S%(D3p7+1WS4P9F))$`urE<#SB@(!NPSd5`2luML7Oa!qTzowhtwv{KpHqU3U8 zsq^+1Vmc)+f))lkPE=YnX{G7QTl4SUxtekB%<Stcy9569$<Jqa@$Ow(Mn=cF)8S>? z-8@3w-aJ{gQSIKzQ|;f^eLa_EB)RFP&Z5POn`88jfBpRY-MkK0{hXB@NjdDAs_WX8 zYdiYq-#>dWM5~oy#|*oh#aj){9(c1qym7;?CEyl^=ER_)^o1o4!u}t~=3a306T6Ln z<N6s|(<JBoajAPM?v}mfnu+@wL5A+OXK$^Qm>z3;?YI4P?D-6xX(#>8I140fNlR~? za{SWr)w$EAZ~Y{ac;w(jwxu>U-VY+03_b`pEN6NaW4=YRc7Ely4_B?P&bg7mU9n;H z#O<r)*tZ`$@ZIph<Ci~=&V2YhmHWZP<44zZ1tizBa@2eab>*Du|3X`4tz@Y<AM=R_ zonz0JF8#P^LVDC|v+D{B%p3v-mQGL3pVzZzmu&y>ja;ov4BwaE`S#MO^FsIxhr}u8 zfAr7ish?rXG~xX7iGQB1PKpy=CbZRktDyvAdi);$`og<`*Sd~BX1MszSvO7TZeHG& zx8V%FzP^7h&uhz_x$&G?^7SiapX@tbm=;ODE_z#S>R>c8CH89Q?0t+P-ABJZ|MlzF h<EKTDYu?r~v<BaL{-x!99s>gdgQu&X%Q~loCIGZ|Ftz{y diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 0c778179606..bb00659f171 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -64,7 +64,7 @@ $theme='eldy'; // Value of theme if (! empty($conf->global->MAIN_OVERWRITE_THEME_RES)) { $path='/'.$conf->global->MAIN_OVERWRITE_THEME_RES; $theme=$conf->global->MAIN_OVERWRITE_THEME_RES; } // Define image path files and other constants -$fontlist='arial,tahoma,verdana,helvetica'; //$fontlist='Helvetica, Verdana, Arial, sans-serif'; +$fontlist='roboto,arial,tahoma,verdana,helvetica'; //$fontlist='helvetica, verdana, arial, sans-serif'; $img_head=''; $img_button=dol_buildpath($path.'/theme/'.$theme.'/img/button_bg.png',1); $dol_hide_topmenu=$conf->dol_hide_topmenu; diff --git a/htdocs/theme/md/img/object_category-expanded.png b/htdocs/theme/md/img/object_category-expanded.png index b0292d92aaec99817b1a0dff1c1c354cd715f10c..0e49c902a096b8a10c90061911198af46c60d266 100644 GIT binary patch delta 169 zcmc~e#yCNxo+-)O-G$+Qd;gjJ3=9mM1s;*b3=G`DAk4@xYmNj10|R@Br>`sfeI8aJ zVRqZyyWAKU7{WbW978nDAHC$wbwGi~_2TRct-E(!TIZ!MwCG1v`aYi!J~sOT1%1<1 z8X@gk)*9ED6J%dX#8e9Xj_P6f;F>*q`k(n{GCbW>Je1ugJ-J*P)ABt%a3_DwB(`}^ X)MSkRMrklGFfe$!`njxgN@xNAHnTf~ delta 74 zcmX@cm@z@cMc>oKF{FYqS%RZr(nEV0vj+jplT_BcvG=QJl5qVWD4NK4*j@0Uf<<HS f$w0PW%nX%cF~|HR)SoagFfe$!`njxgN@xNA%TXC` diff --git a/htdocs/theme/md/img/object_category.png b/htdocs/theme/md/img/object_category.png index fb51c4b100c90c3e1bcb801cd16e0226cd598516..b0292d92aaec99817b1a0dff1c1c354cd715f10c 100644 GIT binary patch delta 73 zcmYe!n4sdK@9E+gQo)!k!BH^jp}maRg8=49Dr?@@`&Beaxc(0mO=LXmF8ENvqA~bn eAlolyhDx!RWBwBAPZ$^&7(8A5T-G@yGywpv1{n(g delta 68 zcmc~uo}gl{<>}%WQo)!k!BH^jp}maRg8=49Dr?@@`&Beaxc;9g(yL|F7<@92?H4mc Z<^365#fR@|GcYhPc)I$ztaD0e0sv8F84v&f diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index e983a16f3f9..13b2e4df171 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -65,7 +65,7 @@ $theme='md'; // Value of theme if (! empty($conf->global->MAIN_OVERWRITE_THEME_RES)) { $path='/'.$conf->global->MAIN_OVERWRITE_THEME_RES; $theme=$conf->global->MAIN_OVERWRITE_THEME_RES; } // Define image path files and other constants -$fontlist='Open Sans,sans-serif'; //$fontlist='Verdana,Helvetica,Arial,sans-serif'; +$fontlist='roboto,arial,tahoma,verdana,helvetica'; //$fontlist='verdana,helvetica,arial,sans-serif'; $img_head=''; $img_button=dol_buildpath($path.'/theme/'.$theme.'/img/button_bg.png',1); $dol_hide_topmenu=$conf->dol_hide_topmenu; @@ -1704,62 +1704,8 @@ span.butAction, span.butActionDelete { } -/* -.butAction, .butAction:link, .butAction:visited, .butAction:hover, .butAction:active, .butActionDelete, .butActionDelete:link, .butActionDelete:visited, .butActionDelete:hover, .butActionDelete:active -{ - text-decoration: none; - white-space: nowrap; - padding: 0.4em <?php echo ($dol_optimize_smallscreen?'0.4':'0.7'); ?>em; - margin: 0em <?php echo ($dol_optimize_smallscreen?'0.7':'0.9'); ?>em; - font-family: <?php print $fontlist ?>; - - font-weight: bold; - background: white; - border: 1px solid #8CACBB; - color: #434956; - -moz-border-radius:0px 2px 0px 2px; - -webkit-border-radius:0px 2px 0px 2px; - border-radius:0px 2px 0px 2px; - -moz-box-shadow: 2px 2px 3px #f4f4f4; - -webkit-box-shadow: 2px 2px 3px #f4f4f4; - box-shadow: 2px 2px 3px #f4f4f4; -} - -.butAction:hover { - background: #dee7ec; -} - -.butActionDelete, .butActionDelete:link, .butActionDelete:visited, .butActionDelete:hover, .butActionDelete:active { - border: 1px solid #997777; -} - -.butActionDelete:hover { - background: #FFe7ec; -} - -.butActionRefused { - text-decoration: none !important; - white-space: nowrap !important; - cursor: not-allowed; - padding: 0.4em <?php echo ($dol_optimize_smallscreen?'0.4':'0.7'); ?>em; - margin: 0em <?php echo ($dol_optimize_smallscreen?'0.7':'0.9'); ?>em; - font-family: <?php print $fontlist ?> !important; - - font-weight: bold !important; - background: white !important; - border: 1px solid #AAAAAA !important; - color: #AAAAAA !important; - -moz-border-radius:0px 2px 0px 2px; - -webkit-border-radius:0px 2px 0px 2px; - border-radius:0px 2px 0px 2px; - -moz-box-shadow: 3px 3px 4px #f4f4f4; - -webkit-box-shadow: 3px 3px 4px #f4f4f4; - box-shadow: 3px 3px 4px #f4f4f4; -} -*/ - /* Prepare for bootstrap look */ -.butAction, .butActionDelete, .butActionRefused { +.button, .butAction, .butActionDelete, .butActionRefused { border-color: #c5c5c5; border-color: rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.25); display: inline-block; @@ -1792,7 +1738,7 @@ span.butAction, span.butActionDelete { box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); } -.butAction { +.button, .butAction { color: #ffffff !important; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #006dcc; @@ -1807,7 +1753,21 @@ span.butAction, span.butActionDelete { border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); } - +.button:disabled, .butAction:disabled { + color: #666 !important; + text-shadow: none; + border-color: #555; + cursor: not-allowed; + + background-color: #f5f5f5; + background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); + background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); + background-image: linear-gradient(to bottom, #ffffff, #e6e6e6); + background-repeat: repeat-x +} + .butActionDelete { color: #ffffff !important; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); @@ -1946,7 +1906,7 @@ table.liste, table.noborder, table.formdoc, div.noborder { border-color: #BBB; border-style: solid; - margin: 0px 0px 2px 0px; + margin: 0px 0px 8px 0px; /* -moz-box-shadow: 2px 2px 4px #CCC; -webkit-box-shadow: 2px 2px 4px #CCC; @@ -3465,7 +3425,7 @@ a span.select2-chosen line-height: 13px; color: #333; cursor: default; - border: 1px solid #aaaaaa; + border: 1px solid #ddd; border-radius: 3px; -webkit-box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05); box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05); -- GitLab From 9d3451b31dd118266d47d8f0449d0dd10a5d0cff Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sat, 5 Dec 2015 19:31:32 +0100 Subject: [PATCH 099/197] NEW Add thumb of users into thumbs stats on home page --- .../class/expensereport.class.php | 1 - htdocs/index.php | 73 +++++++++++-------- htdocs/user/class/user.class.php | 36 +++++++++ 3 files changed, 77 insertions(+), 33 deletions(-) diff --git a/htdocs/expensereport/class/expensereport.class.php b/htdocs/expensereport/class/expensereport.class.php index 8b79d0b5d9f..3063bcde35f 100644 --- a/htdocs/expensereport/class/expensereport.class.php +++ b/htdocs/expensereport/class/expensereport.class.php @@ -1503,7 +1503,6 @@ class ExpenseReport extends CommonObject $this->error=$this->db->error(); return -1; } - } /** diff --git a/htdocs/index.php b/htdocs/index.php index 1c99fb0c647..c932aad6234 100644 --- a/htdocs/index.php +++ b/htdocs/index.php @@ -1,6 +1,6 @@ <?php /* Copyright (C) 2001-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org> - * Copyright (C) 2004-2013 Laurent Destailleur <eldy@users.sourceforge.net> + * Copyright (C) 2004-2015 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2005-2015 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2011-2012 Juanjo Menent <jmenent@2byte.es> * Copyright (C) 2015 Marcos García <marcosgdf@gmail.com> @@ -146,6 +146,7 @@ if (empty($user->societe_id)) { // Condition to be checked for each display line dashboard $conditions=array( + $user->rights->user->user->lire, ! empty($conf->societe->enabled) && $user->rights->societe->lire && empty($conf->global->SOCIETE_DISABLE_CUSTOMERS_STATS), ! empty($conf->societe->enabled) && $user->rights->societe->lire && empty($conf->global->SOCIETE_DISABLE_PROSPECTS_STATS), ! empty($conf->fournisseur->enabled) && $user->rights->fournisseur->lire && empty($conf->global->SOCIETE_DISABLE_SUPPLIERS_STATS), @@ -160,21 +161,24 @@ if (empty($user->societe_id)) ! empty($conf->fournisseur->enabled) && $user->rights->fournisseur->facture->lire, ! empty($conf->expensereport->enabled) && $user->rights->expensereport->lire); // Class file containing the method load_state_board for each line - $includes=array(DOL_DOCUMENT_ROOT."/societe/class/client.class.php", - DOL_DOCUMENT_ROOT."/societe/class/client.class.php", - DOL_DOCUMENT_ROOT."/fourn/class/fournisseur.class.php", - DOL_DOCUMENT_ROOT."/adherents/class/adherent.class.php", - DOL_DOCUMENT_ROOT."/product/class/product.class.php", - DOL_DOCUMENT_ROOT."/product/class/service.class.php", - DOL_DOCUMENT_ROOT."/comm/propal/class/propal.class.php", - DOL_DOCUMENT_ROOT."/commande/class/commande.class.php", - DOL_DOCUMENT_ROOT."/compta/facture/class/facture.class.php", - DOL_DOCUMENT_ROOT."/contrat/class/contrat.class.php", - DOL_DOCUMENT_ROOT."/fourn/class/fournisseur.commande.class.php", - DOL_DOCUMENT_ROOT."/fourn/class/fournisseur.facture.class.php", - DOL_DOCUMENT_ROOT."/expensereport/class/expensereport.class.php"); + $includes=array( + DOL_DOCUMENT_ROOT."/user/class/user.class.php", + DOL_DOCUMENT_ROOT."/societe/class/client.class.php", + DOL_DOCUMENT_ROOT."/societe/class/client.class.php", + DOL_DOCUMENT_ROOT."/fourn/class/fournisseur.class.php", + DOL_DOCUMENT_ROOT."/adherents/class/adherent.class.php", + DOL_DOCUMENT_ROOT."/product/class/product.class.php", + DOL_DOCUMENT_ROOT."/product/class/service.class.php", + DOL_DOCUMENT_ROOT."/comm/propal/class/propal.class.php", + DOL_DOCUMENT_ROOT."/commande/class/commande.class.php", + DOL_DOCUMENT_ROOT."/compta/facture/class/facture.class.php", + DOL_DOCUMENT_ROOT."/contrat/class/contrat.class.php", + DOL_DOCUMENT_ROOT."/fourn/class/fournisseur.commande.class.php", + DOL_DOCUMENT_ROOT."/fourn/class/fournisseur.facture.class.php", + DOL_DOCUMENT_ROOT."/expensereport/class/expensereport.class.php"); // Name class containing the method load_state_board for each line - $classes=array('Client', + $classes=array('User', + 'Client', 'Client', 'Fournisseur', 'Adherent', @@ -188,7 +192,8 @@ if (empty($user->societe_id)) 'FactureFournisseur', 'ExpenseReport'); // Cle array returned by the method load_state_board for each line - $keys=array('customers', + $keys=array('users', + 'customers', 'prospects', 'suppliers', 'members', @@ -202,7 +207,8 @@ if (empty($user->societe_id)) 'supplier_invoices', 'expensereports'); // Dashboard Icon lines - $icons=array('company', + $icons=array('user', + 'company', 'company', 'company', 'user', @@ -216,7 +222,8 @@ if (empty($user->societe_id)) 'bill', 'trip'); // Translation keyword - $titres=array("ThirdPartyCustomersStats", + $titres=array("Users", + "ThirdPartyCustomersStats", "ThirdPartyProspectsStats", "Suppliers", "Members", @@ -231,21 +238,23 @@ if (empty($user->societe_id)) "ExpenseReports"); // Dashboard Link lines $links=array( - DOL_URL_ROOT.'/societe/list.php?type=c', - DOL_URL_ROOT.'/societe/list.php?type=p', - DOL_URL_ROOT.'/societe/list.php?type=f', - DOL_URL_ROOT.'/adherents/list.php?statut=1&mainmenu=members', - DOL_URL_ROOT.'/product/list.php?type=0&mainmenu=products', - DOL_URL_ROOT.'/product/list.php?type=1&mainmenu=products', - DOL_URL_ROOT.'/comm/propal/list.php?mainmenu=commercial', - DOL_URL_ROOT.'/commande/list.php?mainmenu=commercial', - DOL_URL_ROOT.'/compta/facture/list.php?mainmenu=accountancy', - DOL_URL_ROOT.'/contrat/list.php', - DOL_URL_ROOT.'/fourn/commande/list.php', - DOL_URL_ROOT.'/fourn/facture/list.php', - DOL_URL_ROOT.'/expensereport/list.php?mainmenu=hrm'); + DOL_URL_ROOT.'/user/list.php', + DOL_URL_ROOT.'/societe/list.php?type=c', + DOL_URL_ROOT.'/societe/list.php?type=p', + DOL_URL_ROOT.'/societe/list.php?type=f', + DOL_URL_ROOT.'/adherents/list.php?statut=1&mainmenu=members', + DOL_URL_ROOT.'/product/list.php?type=0&mainmenu=products', + DOL_URL_ROOT.'/product/list.php?type=1&mainmenu=products', + DOL_URL_ROOT.'/comm/propal/list.php?mainmenu=commercial', + DOL_URL_ROOT.'/commande/list.php?mainmenu=commercial', + DOL_URL_ROOT.'/compta/facture/list.php?mainmenu=accountancy', + DOL_URL_ROOT.'/contrat/list.php', + DOL_URL_ROOT.'/fourn/commande/list.php', + DOL_URL_ROOT.'/fourn/facture/list.php', + DOL_URL_ROOT.'/expensereport/list.php?mainmenu=hrm'); // Translation lang files - $langfile=array("companies", + $langfile=array("users", + "companies", "prospects", "suppliers", "members", diff --git a/htdocs/user/class/user.class.php b/htdocs/user/class/user.class.php index 06e8250a870..27c2a7d63ce 100644 --- a/htdocs/user/class/user.class.php +++ b/htdocs/user/class/user.class.php @@ -2578,5 +2578,41 @@ class User extends CommonObject return CommonObject::commonReplaceThirdparty($db, $origin_id, $dest_id, $tables); } + + + /** + * Charge indicateurs this->nb pour le tableau de bord + * + * @return int <0 if KO, >0 if OK + */ + function load_state_board() + { + global $conf; + + $this->nb=array(); + + $sql = "SELECT count(u.rowid) as nb"; + $sql.= " FROM ".MAIN_DB_PREFIX."user as u"; + $sql.= " WHERE u.statut > 0"; + $sql.= " AND u.entity IN (".getEntity('user', 1).")"; + + $resql=$this->db->query($sql); + if ($resql) + { + while ($obj=$this->db->fetch_object($resql)) + { + $this->nb["users"]=$obj->nb; + } + $this->db->free($resql); + return 1; + } + else + { + dol_print_error($this->db); + $this->error=$this->db->error(); + return -1; + } + } + } -- GitLab From 497c30d994c83c410f37cfed5a190655b5c41b02 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sat, 5 Dec 2015 19:38:45 +0100 Subject: [PATCH 100/197] NEW Add thumb of users into thumbs stats on home page --- htdocs/index.php | 2 +- htdocs/user/class/user.class.php | 1 + htdocs/user/index.php | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/htdocs/index.php b/htdocs/index.php index c932aad6234..94445337720 100644 --- a/htdocs/index.php +++ b/htdocs/index.php @@ -238,7 +238,7 @@ if (empty($user->societe_id)) "ExpenseReports"); // Dashboard Link lines $links=array( - DOL_URL_ROOT.'/user/list.php', + DOL_URL_ROOT.'/user/index.php', DOL_URL_ROOT.'/societe/list.php?type=c', DOL_URL_ROOT.'/societe/list.php?type=p', DOL_URL_ROOT.'/societe/list.php?type=f', diff --git a/htdocs/user/class/user.class.php b/htdocs/user/class/user.class.php index 27c2a7d63ce..955753a73a3 100644 --- a/htdocs/user/class/user.class.php +++ b/htdocs/user/class/user.class.php @@ -2594,6 +2594,7 @@ class User extends CommonObject $sql = "SELECT count(u.rowid) as nb"; $sql.= " FROM ".MAIN_DB_PREFIX."user as u"; $sql.= " WHERE u.statut > 0"; + //$sql.= " AND employee != 0"; $sql.= " AND u.entity IN (".getEntity('user', 1).")"; $resql=$this->db->query($sql); diff --git a/htdocs/user/index.php b/htdocs/user/index.php index ce597483d76..c4e769d6ffd 100644 --- a/htdocs/user/index.php +++ b/htdocs/user/index.php @@ -191,7 +191,7 @@ else { $sql.= " WHERE u.entity IN (".getEntity('user',1).")"; } -if ($mode = "employee") $sql.= " AND u.employee = 1"; +if ($mode == "employee") $sql.= " AND u.employee = 1"; if ($socid > 0) $sql.= " AND u.fk_soc = ".$socid; //if ($search_user != '') $sql.=natural_search(array('u.login', 'u.lastname', 'u.firstname'), $search_user); if ($search_supervisor > 0) $sql.= " AND u.fk_user = ".$search_supervisor; -- GitLab From 27c7e3cb7e89c7ec97bfbf92719ca584da6dfa00 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sat, 5 Dec 2015 23:45:08 +0100 Subject: [PATCH 101/197] Try to solve mysql pb with new travis --- .travis.yml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/.travis.yml b/.travis.yml index 1769f2f0504..2a2cde4ee0f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -76,20 +76,20 @@ before_script: # (https://github.com/piwik/piwik/commit/20bd2e1c24e5d673dce3feb256204ad48c29f160) # TODO: Remove when mysql 5.6 is provided by travis. # Otherwise, our migrations will raise a syntax error. - - "sudo apt-get remove mysql-common mysql-server-5.5 mysql-server-core-5.5 mysql-client-5.5 mysql-client-core-5.5" - - "sudo apt-get autoremove" - - "sudo apt-get install libaio1" - - "wget -O mysql-5.6.14.deb http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.14-debian6.0-x86_64.deb/from/http://cdn.mysql.com/" - - "sudo dpkg -i mysql-5.6.14.deb" - - "sudo cp /opt/mysql/server-5.6/support-files/mysql.server /etc/init.d/mysql.server" - - "sudo ln -s /opt/mysql/server-5.6/bin/* /usr/bin/" - - "sudo sed -i'' 's/table_cache/table_open_cache/' /etc/mysql/my.cnf" - - "sudo sed -i'' 's/log_slow_queries/slow_query_log/' /etc/mysql/my.cnf" - - "sudo sed -i'' 's/basedir[^=]\\+=.*$/basedir = \\/opt\\/mysql\\/server-5.6/' /etc/mysql/my.cnf" - - "sudo /etc/init.d/mysql.server start" +# - "sudo apt-get remove mysql-common mysql-server-5.5 mysql-server-core-5.5 mysql-client-5.5 mysql-client-core-5.5" +# - "sudo apt-get autoremove" +# - "sudo apt-get install libaio1" +# - "wget -O mysql-5.6.14.deb http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.14-debian6.0-x86_64.deb/from/http://cdn.mysql.com/" +# - "sudo dpkg -i mysql-5.6.14.deb" +# - "sudo cp /opt/mysql/server-5.6/support-files/mysql.server /etc/init.d/mysql.server" +# - "sudo ln -s /opt/mysql/server-5.6/bin/* /usr/bin/" +# - "sudo sed -i'' 's/table_cache/table_open_cache/' /etc/mysql/my.cnf" +# - "sudo sed -i'' 's/log_slow_queries/slow_query_log/' /etc/mysql/my.cnf" +# - "sudo sed -i'' 's/basedir[^=]\\+=.*$/basedir = \\/opt\\/mysql\\/server-5.6/' /etc/mysql/my.cnf" +# - "sudo /etc/init.d/mysql.server start" + # /END MYSQL 5.6- mysql --version - mysql --version - mysql -e "SELECT VERSION();" - # /END MYSQL 5.6- mysql --version - echo Init database - sh -c "if [ '$DB' = 'pgsql' ]; then psql -c 'DROP DATABASE IF EXISTS myapp_test;' -U postgres; fi" - sh -c "if [ '$DB' = 'pgsql' ]; then psql -c 'CREATE DATABASE myapp_test;' -U postgres; fi" -- GitLab From 3fb7a9429b8d06e404d7faee625a176d114d61a6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sat, 5 Dec 2015 23:55:10 +0100 Subject: [PATCH 102/197] No more need to install mysql 5.6 --- .travis.yml | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/.travis.yml b/.travis.yml index 2a2cde4ee0f..9956d9c58c8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,7 +17,6 @@ services: # This will tell travis to run phpunit language: php php: -# - "5.2" is not supported because pyrus to install PHP_Codesniffer is not available - 5.3 - 5.4 - 5.5 @@ -51,9 +50,9 @@ before_script: - composer install - phpenv rehash - htdocs/includes/squizlabs/php_codesniffer/scripts/phpcs --version + - htdocs/includes/squizlabs/php_codesniffer/scripts/phpcs -i # - which phpcs # - phpcs --version - - htdocs/includes/squizlabs/php_codesniffer/scripts/phpcs -i # - phpcs -i - echo Create dir $(pwd)/htdocs/documents - sudo mkdir -p $(pwd)/htdocs/documents/admin/temp; @@ -72,10 +71,10 @@ before_script: - sh -c "if [ '$PHPV' = '5.4' ]; then echo 'zend_extension_ts = xdebug.so' >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini; fi" - cat ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini - echo Mysql version - # INSTALL MYSQL 5.6 - # (https://github.com/piwik/piwik/commit/20bd2e1c24e5d673dce3feb256204ad48c29f160) - # TODO: Remove when mysql 5.6 is provided by travis. - # Otherwise, our migrations will raise a syntax error. +# INSTALL MYSQL 5.6 +# (https://github.com/piwik/piwik/commit/20bd2e1c24e5d673dce3feb256204ad48c29f160) +# TODO: Remove when mysql 5.6 is provided by travis. +# Otherwise, our migrations will raise a syntax error. # - "sudo apt-get remove mysql-common mysql-server-5.5 mysql-server-core-5.5 mysql-client-5.5 mysql-client-core-5.5" # - "sudo apt-get autoremove" # - "sudo apt-get install libaio1" @@ -87,7 +86,7 @@ before_script: # - "sudo sed -i'' 's/log_slow_queries/slow_query_log/' /etc/mysql/my.cnf" # - "sudo sed -i'' 's/basedir[^=]\\+=.*$/basedir = \\/opt\\/mysql\\/server-5.6/' /etc/mysql/my.cnf" # - "sudo /etc/init.d/mysql.server start" - # /END MYSQL 5.6- mysql --version +# /END MYSQL 5.6- mysql --version - mysql --version - mysql -e "SELECT VERSION();" - echo Init database -- GitLab From 374480043e96b5900b4dde4b420d385f6b45a09c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sun, 6 Dec 2015 00:37:58 +0100 Subject: [PATCH 103/197] Add maxwidth300 on combo list for users and sale representatives --- htdocs/adherents/card.php | 2 +- htdocs/adherents/stats/index.php | 2 +- htdocs/admin/prelevement.php | 2 +- htdocs/bookmarks/card.php | 4 +- htdocs/comm/action/card.php | 2 +- htdocs/comm/action/document.php | 2 +- htdocs/comm/propal/stats/index.php | 2 +- htdocs/commande/stats/index.php | 3 +- htdocs/compta/deplacement/card.php | 4 +- htdocs/compta/deplacement/stats/index.php | 2 +- htdocs/compta/facture/mergepdftool.php | 4 +- htdocs/compta/facture/stats/index.php | 2 +- htdocs/compta/salaries/card.php | 2 +- htdocs/contact/card.php | 62 +------------------ htdocs/contrat/list.php | 2 +- htdocs/core/lib/agenda.lib.php | 2 +- htdocs/don/stats/index.php | 2 +- htdocs/expedition/stats/index.php | 2 +- htdocs/expensereport/list.php | 2 +- htdocs/expensereport/stats/index.php | 2 +- htdocs/holiday/card.php | 2 +- htdocs/holiday/define_holiday.php | 2 +- htdocs/margin/agentMargins.php | 2 +- htdocs/projet/tasks.php | 2 +- .../canvas/actions_card_common.class.php | 2 +- htdocs/societe/list.php | 2 +- htdocs/supplier_proposal/list.php | 4 +- htdocs/theme/eldy/style.css.php | 6 +- htdocs/theme/md/style.css.php | 6 +- htdocs/user/card.php | 4 +- htdocs/user/group/card.php | 2 +- 31 files changed, 43 insertions(+), 98 deletions(-) diff --git a/htdocs/adherents/card.php b/htdocs/adherents/card.php index 503eddfbbb7..f17ca46299f 100644 --- a/htdocs/adherents/card.php +++ b/htdocs/adherents/card.php @@ -936,7 +936,7 @@ else // Login Dolibarr print '<tr><td>'.$langs->trans("LinkedToDolibarrUser").'</td><td class="valeur">'; - print $form->select_dolusers($object->user_id,'userid',1); + print $form->select_dolusers($object->user_id, 'userid', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); print '</td></tr>'; */ print '<tbody>'; diff --git a/htdocs/adherents/stats/index.php b/htdocs/adherents/stats/index.php index 43b994adafe..dc5bf732103 100644 --- a/htdocs/adherents/stats/index.php +++ b/htdocs/adherents/stats/index.php @@ -155,7 +155,7 @@ $filter='s.client in (1,2,3)'; print $form->select_company($id,'memberid',$filter,1); print '</td></tr>'; print '<tr><td>'.$langs->trans("User").'</td><td>'; -print $form->select_dolusers($userid,'userid',1); +print $form->select_dolusers($userid, 'userid', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); print '</td></tr>'; print '<tr><td align="center" colspan="2"><input type="submit" name="submit" class="button" value="'.$langs->trans("Refresh").'"></td></tr>'; print '</table>'; diff --git a/htdocs/admin/prelevement.php b/htdocs/admin/prelevement.php index f2d8c2d84dc..1a3fd19aa1c 100644 --- a/htdocs/admin/prelevement.php +++ b/htdocs/admin/prelevement.php @@ -135,7 +135,7 @@ print "</tr>"; print '<tr class="impair"><td>'.$langs->trans("ResponsibleUser").'</td>'; print '<td align="left">'; print '<input type="hidden" name="nom0" value="PRELEVEMENT_USER">'; -print $form->select_dolusers($conf->global->PRELEVEMENT_USER,'value0',1); +print $form->select_dolusers($conf->global->PRELEVEMENT_USER, 'value0', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); print '</td>'; print '</tr>'; diff --git a/htdocs/bookmarks/card.php b/htdocs/bookmarks/card.php index 62b4ccddce6..c7f47649efa 100644 --- a/htdocs/bookmarks/card.php +++ b/htdocs/bookmarks/card.php @@ -165,7 +165,7 @@ if ($action == 'create') print '</td><td class="hideonsmartphone">'.$langs->trans("ChooseIfANewWindowMustBeOpenedOnClickOnBookmark").'</td></tr>'; print '<tr><td>'.$langs->trans("Owner").'</td><td>'; - print $form->select_dolusers(isset($_POST['userid'])?$_POST['userid']:$user->id,'userid',1); + print $form->select_dolusers(isset($_POST['userid'])?$_POST['userid']:$user->id, 'userid', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); print '</td><td class="hideonsmartphone"> </td></tr>'; // Position @@ -262,7 +262,7 @@ if ($id > 0 && ! preg_match('/^add/i',$action)) print '<tr><td>'.$langs->trans("Owner").'</td><td>'; if ($action == 'edit' && $user->admin) { - print $form->select_dolusers(isset($_POST['userid'])?$_POST['userid']:($bookmark->fk_user?$bookmark->fk_user:''),'userid',1); + print $form->select_dolusers(isset($_POST['userid'])?$_POST['userid']:($bookmark->fk_user?$bookmark->fk_user:''), 'userid', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); } else { diff --git a/htdocs/comm/action/card.php b/htdocs/comm/action/card.php index 84a36dec8b9..0f561622bd1 100644 --- a/htdocs/comm/action/card.php +++ b/htdocs/comm/action/card.php @@ -1247,7 +1247,7 @@ if ($id > 0) } } print '<div class="assignedtouser">'; - print $form->select_dolusers_forevent('view','assignedtouser',1); + print $form->select_dolusers_forevent('view', 'assignedtouser', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); print '</div>'; if (in_array($user->id,array_keys($listofuserid))) { diff --git a/htdocs/comm/action/document.php b/htdocs/comm/action/document.php index f3bda0281da..992c2314446 100644 --- a/htdocs/comm/action/document.php +++ b/htdocs/comm/action/document.php @@ -196,7 +196,7 @@ if ($object->id > 0) } } print '<div class="assignedtouser">'; - print $form->select_dolusers_forevent('view','assignedtouser',1); + print $form->select_dolusers_forevent('view', 'assignedtouser', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); print '</div>'; if (in_array($user->id,array_keys($listofuserid))) { diff --git a/htdocs/comm/propal/stats/index.php b/htdocs/comm/propal/stats/index.php index 5b45020b7e1..f757a224266 100644 --- a/htdocs/comm/propal/stats/index.php +++ b/htdocs/comm/propal/stats/index.php @@ -243,7 +243,7 @@ print '<div class="fichecenter"><div class="fichethirdleft">'; print '</td></tr>'; // User print '<tr><td align="left">'.$langs->trans("CreatedBy").'</td><td align="left">'; - print $form->select_dolusers($userid,'userid',1); + print $form->select_dolusers($userid, 'userid', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); print '</td></tr>'; // Status print '<tr><td align="left">'.$langs->trans("Status").'</td><td align="left">'; diff --git a/htdocs/commande/stats/index.php b/htdocs/commande/stats/index.php index 04cfad1732d..a6e04121707 100644 --- a/htdocs/commande/stats/index.php +++ b/htdocs/commande/stats/index.php @@ -260,8 +260,7 @@ print '<div class="fichecenter"><div class="fichethirdleft">'; print '</td></tr>'; // User print '<tr><td align="left">'.$langs->trans("CreatedBy").'</td><td align="left">'; - print $form->select_dolusers($userid,'userid',1); - print '</td></tr>'; + print $form->select_dolusers($userid, 'userid', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); // Year print '<tr><td align="left">'.$langs->trans("Year").'</td><td align="left">'; if (! in_array($year,$arrayyears)) $arrayyears[$year]=$year; diff --git a/htdocs/compta/deplacement/card.php b/htdocs/compta/deplacement/card.php index f2fcd490277..903977da460 100644 --- a/htdocs/compta/deplacement/card.php +++ b/htdocs/compta/deplacement/card.php @@ -257,7 +257,7 @@ if ($action == 'create') print "<tr>"; print '<td class="fieldrequired">'.$langs->trans("Person").'</td><td>'; - print $form->select_dolusers(GETPOST('fk_user','int'),'fk_user',1); + print $form->select_dolusers(GETPOST('fk_user','int'), 'fk_user', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); print '</td></tr>'; print "<tr>"; @@ -353,7 +353,7 @@ else if ($id) // Who print "<tr>"; print '<td class="fieldrequired">'.$langs->trans("Person").'</td><td>'; - print $form->select_dolusers(GETPOST('fk_user','int')?GETPOST('fk_user','int'):$object->fk_user,'fk_user',0); + print $form->select_dolusers(GETPOST('fk_user','int')?GETPOST('fk_user','int'):$object->fk_user, 'fk_user', 0, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); print '</td></tr>'; // Date diff --git a/htdocs/compta/deplacement/stats/index.php b/htdocs/compta/deplacement/stats/index.php index 1d9f7b70201..531c05401ab 100644 --- a/htdocs/compta/deplacement/stats/index.php +++ b/htdocs/compta/deplacement/stats/index.php @@ -242,7 +242,7 @@ print '</td></tr>'; print '<tr><td>'.$langs->trans("User").'</td><td>'; $include=''; if (empty($user->rights->deplacement->readall) && empty($user->rights->deplacement->lire_tous)) $include='hierarchy'; -print $form->select_dolusers($userid,'userid',1,'',0,$include); +print $form->select_dolusers($userid, 'userid', 1, '', 0, $include, '', 0, 0, 0, '', 0, '', 'maxwidth300'); print '</td></tr>'; // Year print '<tr><td>'.$langs->trans("Year").'</td><td>'; diff --git a/htdocs/compta/facture/mergepdftool.php b/htdocs/compta/facture/mergepdftool.php index f79621a4d87..64a823e8e4a 100644 --- a/htdocs/compta/facture/mergepdftool.php +++ b/htdocs/compta/facture/mergepdftool.php @@ -637,7 +637,7 @@ if ($resql) $langs->load("commercial"); $moreforfilter.='<div class="divsearchfield">'; $moreforfilter.=$langs->trans('ThirdPartiesOfSaleRepresentative'). ': '; - $moreforfilter.=$formother->select_salesrepresentatives($search_sale,'search_sale',$user); + $moreforfilter.=$formother->select_salesrepresentatives($search_sale,'search_sale',$user, 0, 1, 'maxwidth300'); $moreforfilter.='</div>'; } // If the user can view prospects other than his' @@ -645,7 +645,7 @@ if ($resql) { $moreforfilter.='<div class="divsearchfield">'; $moreforfilter.=$langs->trans('LinkedToSpecificUsers'). ': '; - $moreforfilter.=$form->select_dolusers($search_user,'search_user',1); + $moreforfilter.=$form->select_dolusers($search_user, 'search_user', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); $moreforfilter.='</div>'; } if (! empty($moreforfilter)) diff --git a/htdocs/compta/facture/stats/index.php b/htdocs/compta/facture/stats/index.php index 2b7e17d9369..bfe3cdc8555 100644 --- a/htdocs/compta/facture/stats/index.php +++ b/htdocs/compta/facture/stats/index.php @@ -244,7 +244,7 @@ print '<div class="fichecenter"><div class="fichethirdleft">'; print '</td></tr>'; // User print '<tr><td>'.$langs->trans("CreatedBy").'</td><td>'; - print $form->select_dolusers($userid,'userid',1); + print $form->select_dolusers($userid, 'userid', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); print '</td></tr>'; // Year print '<tr><td>'.$langs->trans("Year").'</td><td>'; diff --git a/htdocs/compta/salaries/card.php b/htdocs/compta/salaries/card.php index 4b5b0edd784..0e8e69b8353 100644 --- a/htdocs/compta/salaries/card.php +++ b/htdocs/compta/salaries/card.php @@ -250,7 +250,7 @@ if ($action == 'create') // Employee print '<tr><td>'; print fieldLabel('Employee','fk_user',1).'</td><td>'; - print $form->select_dolusers(GETPOST('fk_user','int'),'fk_user',1); + print $form->select_dolusers(GETPOST('fk_user','int'), 'fk_user', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); print '</td></tr>'; // Label diff --git a/htdocs/contact/card.php b/htdocs/contact/card.php index 8022c17de67..1da57afc2f6 100644 --- a/htdocs/contact/card.php +++ b/htdocs/contact/card.php @@ -1055,17 +1055,6 @@ else print '<div class="underbanner clearboth"></div>'; print '<table class="border tableforfield" width="100%">'; - - // Ref - /*print '<tr><td width="20%">'.$langs->trans("Ref").'</td><td colspan="3">'; - print $form->showrefnav($object, 'id', $linkback); - print '</td></tr>'; - - // Name - print '<tr><td width="20%">'.$langs->trans("Lastname").' / '.$langs->trans("Label").'</td><td width="30%">'.$object->lastname.'</td>'; - print '<td width="20%">'.$langs->trans("Firstname").'</td><td width="30%">'.$object->firstname.'</td>'; - */ - // Company if (empty($conf->global->SOCIETE_DISABLE_CONTACTS)) { @@ -1082,20 +1071,6 @@ else print '</td>'; } - // Photo - /* - if ($object->photo) - { - print '<td rowspan="6" style="text-align: center;" width="25%">'; - print $form->showphoto('contact',$object); - print '</td>'; - } else { - print '<td rowspan="6" style="text-align: center;" width="25%">'; - print ' '; - print '</td>'; - } - */ - print '</tr>'; // Civility @@ -1106,46 +1081,11 @@ else // Role print '<tr><td>'.$langs->trans("PostOrFunction").'</td><td>'.$object->poste.'</td></tr>'; - // Address - /* - print '<tr><td>'.$langs->trans("Address").'</td><td colspan="2">'; - dol_print_address($object->address,'gmap','contact',$object->id); - print '</td></tr>'; - - // Zip/Town - print '<tr><td>'.$langs->trans("Zip").' / '.$langs->trans("Town").'</td><td colspan="2">'; - print $object->zip; - if ($object->zip) print ' '; - print $object->town.'</td></tr>'; - - // Country - print '<tr><td>'.$langs->trans("Country").'</td><td colspan="2">'; - $img=picto_from_langcode($object->country_code); - if ($img) print $img.' '; - print $object->country; - print '</td></tr>'; - - // State - if (empty($conf->global->SOCIETE_DISABLE_STATE)) - { - print '<tr><td>'.$langs->trans('State').'</td><td>'.$object->state.'</td></tr>'; - }*/ - - // Phone - /* - print '<tr><td>'.$langs->trans("PhonePro").'</td><td>'.dol_print_phone($object->phone_pro,$object->country_code,$object->id,$object->socid,'AC_TEL').'</td>'; - print '<td>'.$langs->trans("PhonePerso").'</td><td>'.dol_print_phone($object->phone_perso,$object->country_code,$object->id,$object->socid,'AC_TEL').'</td></tr>'; - - print '<tr><td>'.$langs->trans("PhoneMobile").'</td><td>'.dol_print_phone($object->phone_mobile,$object->country_code,$object->id,$object->socid,'AC_TEL').'</td>'; - print '<td>'.$langs->trans("Fax").'</td><td>'.dol_print_phone($object->fax,$object->country_code,$object->id,$object->socid,'AC_FAX').'</td></tr>'; - */ - // Email - //print '<tr><td>'.$langs->trans("EMail").'</td><td>'.dol_print_email($object->email,$object->id,$object->socid,'AC_EMAIL').'</td></tr>'; if (! empty($conf->mailing->enabled)) { $langs->load("mails"); - print '<tr><td class="nowrap">'.$langs->trans("NbOfEMailingsSend").'</td>'; + print '<tr><td>'.$langs->trans("NbOfEMailingsSend").'</td>'; print '<td><a href="'.DOL_URL_ROOT.'/comm/mailing/list.php?filteremail='.urlencode($object->email).'">'.$object->getNbOfEMailings().'</a></td></tr>'; } diff --git a/htdocs/contrat/list.php b/htdocs/contrat/list.php index dbf5803a4c6..ef226d35908 100644 --- a/htdocs/contrat/list.php +++ b/htdocs/contrat/list.php @@ -178,7 +178,7 @@ if ($resql) $langs->load("commercial"); $moreforfilter.='<div class="divsearchfield">'; $moreforfilter.=$langs->trans('ThirdPartiesOfSaleRepresentative'). ': '; - $moreforfilter.=$formother->select_salesrepresentatives($search_sale,'search_sale',$user); + $moreforfilter.=$formother->select_salesrepresentatives($search_sale,'search_sale',$user,0,1,'maxwidth300'); $moreforfilter.='</div>'; } // If the user can view other users diff --git a/htdocs/core/lib/agenda.lib.php b/htdocs/core/lib/agenda.lib.php index 42244a11718..165c93fa9a1 100644 --- a/htdocs/core/lib/agenda.lib.php +++ b/htdocs/core/lib/agenda.lib.php @@ -75,7 +75,7 @@ function print_actions_filter($form, $canedit, $status, $year, $month, $day, $sh print '<td class="nowrap" style="padding-bottom: 2px; padding-right: 4px;">'; print $langs->trans("ActionsToDoBy").' '; print '</td><td class="nowrap maxwidthonsmartphone" style="padding-bottom: 2px; padding-right: 4px;">'; - print $form->select_dolusers($filtert, 'usertodo', 1, '', ! $canedit); + print $form->select_dolusers($filtert, 'usertodo', 1, '', ! $canedit, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); if (empty($conf->dol_optimize_smallscreen)) print ' '.$langs->trans("or") . ' '.$langs->trans("Group").' '; print $form->select_dolgroups($usergroupid, 'usergroup', 1, '', ! $canedit); print '</td></tr>'; diff --git a/htdocs/don/stats/index.php b/htdocs/don/stats/index.php index c5cd34caf5f..bf773fcab62 100644 --- a/htdocs/don/stats/index.php +++ b/htdocs/don/stats/index.php @@ -244,7 +244,7 @@ print '<div class="fichecenter"><div class="fichethirdleft">'; print '</td></tr>'; // User print '<tr><td align="left">'.$langs->trans("CreatedBy").'</td><td align="left">'; - print $form->select_dolusers($userid,'userid',1); + print $form->select_dolusers($userid, 'userid', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); print '</td></tr>'; // Year print '<tr><td align="left">'.$langs->trans("Year").'</td><td align="left">'; diff --git a/htdocs/expedition/stats/index.php b/htdocs/expedition/stats/index.php index 76755360869..f0f5198bee5 100644 --- a/htdocs/expedition/stats/index.php +++ b/htdocs/expedition/stats/index.php @@ -243,7 +243,7 @@ print '<div class="fichecenter"><div class="fichethirdleft">'; print '</td></tr>'; // User print '<tr><td align="left">'.$langs->trans("CreatedBy").'</td><td align="left">'; - print $form->select_dolusers($userid,'userid',1); + print $form->select_dolusers($userid, 'userid', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); print '</td></tr>'; // Year print '<tr><td align="left">'.$langs->trans("Year").'</td><td align="left">'; diff --git a/htdocs/expensereport/list.php b/htdocs/expensereport/list.php index c59a594b5a6..78edcea53b0 100644 --- a/htdocs/expensereport/list.php +++ b/htdocs/expensereport/list.php @@ -247,7 +247,7 @@ if ($resql) // User if ($user->rights->expensereport->readall || $user->rights->expensereport->lire_tous){ print '<td class="liste_titre" align="left">'; - print $form->select_dolusers($search_user,"search_user",1,"",0,''); + print $form->select_dolusers($search_user, 'search_user', 1, '' 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); print '</td>'; } else { print '<td class="liste_titre"> </td>'; diff --git a/htdocs/expensereport/stats/index.php b/htdocs/expensereport/stats/index.php index d64cbca648f..80965deebfa 100644 --- a/htdocs/expensereport/stats/index.php +++ b/htdocs/expensereport/stats/index.php @@ -224,7 +224,7 @@ print '</td></tr>'; print '<tr><td>'.$langs->trans("User").'</td><td>'; $include=''; if (empty($user->rights->expensereport->readall) && empty($user->rights->expensereport->lire_tous)) $include='hierarchy'; -print $form->select_dolusers($userid,'userid',1,'',0,$include); +print $form->select_dolusers($userid, 'userid', 1, '', 0, $include, '', 0, 0, 0, '', 0, '', 'maxwidth300'); print '</td></tr>'; // Year print '<tr><td>'.$langs->trans("Year").'</td><td>'; diff --git a/htdocs/holiday/card.php b/htdocs/holiday/card.php index 8a576250e79..7802e0c32fa 100644 --- a/htdocs/holiday/card.php +++ b/htdocs/holiday/card.php @@ -795,7 +795,7 @@ if (empty($id) || $action == 'add' || $action == 'request' || $action == 'create print '<td>'; if (empty($user->rights->holiday->write_all)) { - print $form->select_dolusers($userid,'useridbis',0,'',1); + print $form->select_dolusers($userid, 'useridbis', 0, '', 1, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); print '<input type="hidden" name="userid" value="'.$userid.'">'; } else print $form->select_dolusers(GETPOST('userid')?GETPOST('userid'):$user->id,'userid',0,'',0); diff --git a/htdocs/holiday/define_holiday.php b/htdocs/holiday/define_holiday.php index 62ad088a5ef..afd5c1a05d4 100644 --- a/htdocs/holiday/define_holiday.php +++ b/htdocs/holiday/define_holiday.php @@ -178,7 +178,7 @@ if ($cp_events == 1) print $langs->trans('MotifCP').' : '; print $holiday->selectEventCP(); print ' '.$langs->trans('UserCP').' : '; - print $form->select_dolusers('',"userCP",1,"",0,''); + print $form->select_dolusers('', 'userCP', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); print ' <input type="submit" value="'.$langs->trans("addEventToUserCP").'" name="bouton" class="button"/>'; print '</form><br>'; diff --git a/htdocs/margin/agentMargins.php b/htdocs/margin/agentMargins.php index 83ed0ccfc0f..f9189ed7e97 100644 --- a/htdocs/margin/agentMargins.php +++ b/htdocs/margin/agentMargins.php @@ -94,7 +94,7 @@ print '<table class="border" width="100%">'; if ($user->rights->margins->read->all) { print '<tr><td width="20%">'.$langs->trans('SalesRepresentative').'</td>'; print '<td colspan="4">'; - print $form->select_dolusers($agentid, 'agentid', 1); + print $form->select_dolusers($agentid, 'agentid', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); print '</td></tr>'; } diff --git a/htdocs/projet/tasks.php b/htdocs/projet/tasks.php index 63c2bd72f28..eb95fd33624 100644 --- a/htdocs/projet/tasks.php +++ b/htdocs/projet/tasks.php @@ -307,7 +307,7 @@ if ($action == 'create' && $user->rights->projet->creer && (empty($object->third $contactsofproject=(! empty($object->id)?$object->getListContactId('internal'):''); if (count($contactsofproject)) { - print $form->select_dolusers($user->id,'userid',0,'',0,'',$contactsofproject); + print $form->select_dolusers($user->id, 'userid', 0, '', 0, '', $contactsofproject, 0, 0, 0, '', 0, '', 'maxwidth300'); } else { diff --git a/htdocs/societe/canvas/actions_card_common.class.php b/htdocs/societe/canvas/actions_card_common.class.php index bffff8f3cbe..0dd71b42baa 100644 --- a/htdocs/societe/canvas/actions_card_common.class.php +++ b/htdocs/societe/canvas/actions_card_common.class.php @@ -510,7 +510,7 @@ abstract class ActionsCardCommon $this->tpl['yn_assujtva'] = $form->selectyesno('assujtva_value',$this->tpl['tva_assuj'],1); // Assujeti par defaut en creation // Select users - $this->tpl['select_users'] = $form->select_dolusers($this->object->commercial_id,'commercial_id',1); + $this->tpl['select_users'] = $form->select_dolusers($this->object->commercial_id, 'commercial_id', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); // Local Tax // TODO mettre dans une classe propre au pays diff --git a/htdocs/societe/list.php b/htdocs/societe/list.php index ef64761ab6f..0b373ba9d5d 100644 --- a/htdocs/societe/list.php +++ b/htdocs/societe/list.php @@ -514,7 +514,7 @@ if ($resql) { $moreforfilter.='<div class="divsearchfield">'; $moreforfilter.=$langs->trans('SalesRepresentatives'). ': '; - $moreforfilter.=$formother->select_salesrepresentatives($search_sale,'search_sale',$user); + $moreforfilter.=$formother->select_salesrepresentatives($search_sale,'search_sale',$user, 0, 1, 'maxwidth300'); $moreforfilter.='</div>'; } } diff --git a/htdocs/supplier_proposal/list.php b/htdocs/supplier_proposal/list.php index a1f66e832f0..6aad541c1f9 100644 --- a/htdocs/supplier_proposal/list.php +++ b/htdocs/supplier_proposal/list.php @@ -273,7 +273,7 @@ if ($result) $langs->load("commercial"); $moreforfilter.='<div class="divsearchfield">'; $moreforfilter.=$langs->trans('ThirdPartiesOfSaleRepresentative'). ': '; - $moreforfilter.=$formother->select_salesrepresentatives($search_sale,'search_sale',$user); + $moreforfilter.=$formother->select_salesrepresentatives($search_sale,'search_sale',$user, 0, 1, 'maxwidth300'); $moreforfilter.='</div>'; } // If the user can view prospects other than his' @@ -281,7 +281,7 @@ if ($result) { $moreforfilter.='<div class="divsearchfield">'; $moreforfilter.=$langs->trans('LinkedToSpecificUsers'). ': '; - $moreforfilter.=$form->select_dolusers($search_user,'search_user',1); + $moreforfilter.=$form->select_dolusers($search_user, 'search_user', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); $moreforfilter.='</div>'; } if (! empty($moreforfilter)) diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index bb00659f171..66d62959e43 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -1612,7 +1612,9 @@ div.tabsAction { padding: 0em 0em; text-align: right; } - +div.tabsAction > a { + margin-bottom: 16px !important; +} a.tabTitle { /* background: #657090; @@ -2364,7 +2366,7 @@ tr.even td, tr.pair td, tr.odd td, tr.impair td, form.odd div.tagtd, form.impair tr.even td, tr.pair td, tr.odd td, tr.impair td, form.odd div.tagtd, form.impair div.tagtd, form.pair div.tagtd, div.impair div.tagtd, div.pair div.tagtd, div.liste_titre div.tagtd { border-bottom: 1px solid #ddd; } -tr.even:last-child td, tr.pair:last-child td, tr.odd:last-child td, tr.impair:last-child td { +tr.even:last-of-type td, tr.pair:last-of-type td, tr.odd:last-of-type td, tr.impair:last-of-type td { border-bottom: 0px !important; } tr.even td .nobordernopadding tr td, tr.pair td .nobordernopadding tr td, tr.impair td .nobordernopadding tr td, tr.odd td .nobordernopadding tr td { diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 13b2e4df171..9839959bfb8 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -1592,6 +1592,10 @@ div.tabsAction { padding: 0em 0em; text-align: right; } +div.tabsAction > a { + margin-bottom: 16px !important; +} + div.popuptabset { padding: 6px; border: 1px solid #888; @@ -2187,7 +2191,7 @@ tr.even td, tr.pair td, tr.odd td, tr.impair td, form.odd div.tagtd, form.impair padding: 5px 2px 5px 3px; border-bottom: 1px solid #eee; } -tr.even:last-child td, tr.pair:last-child td, tr.odd:last-child td, tr.impair:last-child td { +tr.even:last-of-type td, tr.pair:last-of-type td, tr.odd:last-of-type td, tr.impair:last-of-type td { border-bottom: 0px !important; } tr.even td .nobordernopadding tr td, tr.pair td .nobordernopadding tr td, tr.impair td .nobordernopadding tr td, tr.odd td .nobordernopadding tr td { diff --git a/htdocs/user/card.php b/htdocs/user/card.php index c7d745a2c94..9fbd9d20aa7 100644 --- a/htdocs/user/card.php +++ b/htdocs/user/card.php @@ -1007,7 +1007,7 @@ if (($action == 'create') || ($action == 'adduserldap')) // Hierarchy print '<tr><td>'.$langs->trans("HierarchicalResponsible").'</td>'; print '<td>'; - print $form->select_dolusers($object->fk_user,'fk_user',1,array($object->id),0,'',0,$conf->entity); + print $form->select_dolusers($object->fk_user, 'fk_user', 1, array($object->id), 0, '', 0, $conf->entity, 0, 0, '', 0, '', 'maxwidth300'); print '</td>'; print "</tr>\n"; @@ -2107,7 +2107,7 @@ else print '<td>'; if ($caneditfield) { - print $form->select_dolusers($object->fk_user,'fk_user',1,array($object->id),0,'',0,$object->entity); + print $form->select_dolusers($object->fk_user, 'fk_user', 1, array($object->id), 0, '', 0, $object->entity, 0, 0, '', 0, '', 'maxwidth300'); } else { diff --git a/htdocs/user/group/card.php b/htdocs/user/group/card.php index 4edb037d8d6..39aca6f2bf4 100644 --- a/htdocs/user/group/card.php +++ b/htdocs/user/group/card.php @@ -398,7 +398,7 @@ else print '<table class="noborder" width="100%">'."\n"; print '<tr class="liste_titre"><td class="liste_titre" width="25%">'.$langs->trans("NonAffectedUsers").'</td>'."\n"; print '<td>'; - print $form->select_dolusers('','user',1,$exclude,0,'','',$object->entity); + print $form->select_dolusers('', 'user', 1, $exclude, 0, '', '', $object->entity, 0, 0, '', 0, '', 'maxwidth300'); print ' '; // Multicompany if (! empty($conf->multicompany->enabled) && is_object($mc)) -- GitLab From 745875d21e8487cf8b192702ee875e192283b242 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sun, 6 Dec 2015 01:19:27 +0100 Subject: [PATCH 104/197] NEW Can choose fields to show on project list --- htdocs/projet/list.php | 431 ++++++++++++++++++++++++++--------------- htdocs/user/index.php | 4 +- 2 files changed, 274 insertions(+), 161 deletions(-) diff --git a/htdocs/projet/list.php b/htdocs/projet/list.php index 2475074d941..d0a1ac2c599 100644 --- a/htdocs/projet/list.php +++ b/htdocs/projet/list.php @@ -33,6 +33,8 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php'; $langs->load('projects'); +$langs->load('companies'); +$langs->load('commercial'); $title = $langs->trans("Projects"); @@ -107,17 +109,17 @@ if (empty($user->socid)) $fieldstosearchall["p.note_private"]="NotePrivate"; $arrayfields=array( 'p.ref'=>array('label'=>$langs->trans("Ref"), 'checked'=>1), - 'p.label'=>array('label'=>$langs->trans("Label"), 'checked'=>1), + 'p.title'=>array('label'=>$langs->trans("Label"), 'checked'=>1), 's.nom'=>array('label'=>$langs->trans("ThirdParty"), 'checked'=>1), - 'commerical'=>array('label'=>$langs->trans("SaleRepresentative"), 'checked'=>1), - 'p.date_start'=>array('label'=>$langs->trans("DateStart"), 'checked'=>1, 'position'=>100), - 'p.date_end'=>array('label'=>$langs->trans("DateEnd"), 'checked'=>1, 'position'=>101), - 'p.visibility'=>array('label'=>$langs->trans("Visibility"), 'checked'=>1, 'position'=>102), - 'p.opportunity_amount'=>array('label'=>$langs->trans("OpportunityAmount"), 'checked'=>1, 'enabled'=>$conf->global->PROJECT_USE_OPPORTUNITIES, 'position'=>103), - 'p.opportunity_status'=>array('label'=>$langs->trans("OpportunityStatus"), 'checked'=>1, 'enabled'=>$conf->global->PROJECT_USE_OPPORTUNITIES, 'position'=>104), + 'commercial'=>array('label'=>$langs->trans("SalesRepresentative"), 'checked'=>1), + 'p.dateo'=>array('label'=>$langs->trans("DateStart"), 'checked'=>1, 'position'=>100), + 'p.datee'=>array('label'=>$langs->trans("DateEnd"), 'checked'=>1, 'position'=>101), + 'p.public'=>array('label'=>$langs->trans("Visibility"), 'checked'=>1, 'position'=>102), + 'p.opp_amount'=>array('label'=>$langs->trans("OpportunityAmount"), 'checked'=>1, 'enabled'=>$conf->global->PROJECT_USE_OPPORTUNITIES, 'position'=>103), + 'p.fk_opp_status'=>array('label'=>$langs->trans("OpportunityStatus"), 'checked'=>1, 'enabled'=>$conf->global->PROJECT_USE_OPPORTUNITIES, 'position'=>104), 'p.datec'=>array('label'=>$langs->trans("DateCreation"), 'checked'=>0, 'position'=>500), 'p.tms'=>array('label'=>$langs->trans("DateModificationShort"), 'checked'=>0, 'position'=>500), - 'p.status'=>array('label'=>$langs->trans("Status"), 'checked'=>1, 'position'=>1000), + 'p.statut'=>array('label'=>$langs->trans("Status"), 'checked'=>1, 'position'=>1000), ); // Extra fields if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) @@ -175,7 +177,7 @@ llxHeader("",$langs->trans("Projects"),"EN:Module_Projects|FR:Module_Projets|ES: $projectsListId = $projectstatic->getProjectsAuthorizedForUser($user,($mine?$mine:($user->rights->projet->all->lire?2:0)),1,$socid); $sql = "SELECT p.rowid as projectid, p.ref, p.title, p.fk_statut, p.fk_opp_status, p.public, p.fk_user_creat"; -$sql.= ", p.datec as date_create, p.dateo as date_start, p.datee as date_end, p.opp_amount"; +$sql.= ", p.datec as date_creation, p.dateo as date_start, p.datee as date_end, p.opp_amount, p.tms as date_update"; $sql.= ", s.nom as name, s.rowid as socid"; $sql.= ", cls.code as opp_status_code"; // Add fields for extrafields @@ -260,7 +262,7 @@ if ($resql) $i = 0; $param=''; - if ($mine) $param.='&mode=mine'; + //if ($mine) $param.='&mode=mine'; if ($month) $param.='&month='.$month; if ($year) $param.='&year=' .$year; if ($socid) $param.='&socid='.$socid; @@ -274,22 +276,29 @@ if ($resql) if ($search_user > 0) $param.='&search_user='.$search_user; if ($search_sale > 0) $param.='&search_sale='.$search_sale; if ($optioncss != '') $param.='&optioncss='.$optioncss; - - + // Add $param from extra fields + foreach ($search_array_options as $key => $val) + { + $crit=$val; + $tmpkey=preg_replace('/search_options_/','',$key); + if ($val != '') $param.='&search_options_'.$tmpkey.'='.urlencode($val); + } + $text=$langs->trans("Projects"); - if ($mine) $text=$langs->trans('MyProjects'); + if ($search_user == $user->id) $text=$langs->trans('MyProjects'); print_barre_liste($text, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, "", $num,'','title_project'); - print '<form method="GET" id="searchFormList" action="'.$_SERVER["PHP_SELF"].'">'; + print '<form method="POST" id="searchFormList" action="'.$_SERVER["PHP_SELF"].'">'; if ($optioncss != '') print '<input type="hidden" name="optioncss" value="'.$optioncss.'">'; print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; + print '<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">'; print '<input type="hidden" name="action" value="list">'; print '<input type="hidden" name="sortfield" value="'.$sortfield.'">'; print '<input type="hidden" name="sortorder" value="'.$sortorder.'">'; print '<input type="hidden" name="type" value="'.$type.'">'; // Show description of content - if ($mine) print $langs->trans("MyProjectsDesc").'<br><br>'; + if ($search_user == $user->id) print $langs->trans("MyProjectsDesc").'<br><br>'; else { if ($user->rights->projet->all->lire && ! $socid) print $langs->trans("ProjectsDesc").'<br><br>'; @@ -302,6 +311,7 @@ if ($resql) print $langs->trans("FilterOnInto", $search_all) . join(', ',$fieldstosearchall); } + $colspan=8; if (! empty($conf->global->PROJECT_USE_OPPORTUNITIES)) $colspan+=2; if (empty($conf->global->PROJECT_LIST_HIDE_STARTDATE)) $colspan++; @@ -328,52 +338,76 @@ if ($resql) if (! empty($moreforfilter)) { print '<div class="liste_titre liste_titre_bydiv centpercent">'; - //print '<tr class="liste_titre">'; - //print '<td class="liste_titre" colspan="'.$colspan.'">'; print $moreforfilter; $parameters=array(); $reshook=$hookmanager->executeHooks('printFieldPreListTitle',$parameters); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; print '</div>'; - //print '</td></tr>'; } - print '<table class="liste '.($moreforfilter?"listwithfilterbefore":"").'">'; + $varpage=empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage; + $selectedfields=$form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields + + print '<table class="liste '.($moreforfilter?"listwithfilterbefore":"").'">'; print '<tr class="liste_titre">'; - print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],"p.ref","",$param,"",$sortfield,$sortorder); - print_liste_field_titre($langs->trans("Label"),$_SERVER["PHP_SELF"],"p.title","",$param,"",$sortfield,$sortorder); - print_liste_field_titre($langs->trans("ThirdParty"),$_SERVER["PHP_SELF"],"s.nom","",$param,"",$sortfield,$sortorder); - print_liste_field_titre($langs->trans("SalesRepresentative"),$_SERVER["PHP_SELF"],"","",$param,"",$sortfield,$sortorder); - if (empty($conf->global->PROJECT_LIST_HIDE_STARTDATE)) print_liste_field_titre($langs->trans("DateStart"),$_SERVER["PHP_SELF"],"p.dateo","",$param,'align="center"',$sortfield,$sortorder); - print_liste_field_titre($langs->trans("DateEnd"),$_SERVER["PHP_SELF"],"p.datee","",$param,'align="center"',$sortfield,$sortorder); - print_liste_field_titre($langs->trans("Visibility"),$_SERVER["PHP_SELF"],"p.public","",$param,"",$sortfield,$sortorder); - if (! empty($conf->global->PROJECT_USE_OPPORTUNITIES)) - { - print_liste_field_titre($langs->trans("OpportunityAmountShort"),$_SERVER["PHP_SELF"],'p.opp_amount',"",$param,'align="right"',$sortfield,$sortorder); - print_liste_field_titre($langs->trans("OpportunityStatusShort"),$_SERVER["PHP_SELF"],'p.fk_opp_status',"",$param,'align="center"',$sortfield,$sortorder); - } - $parameters=array(); - $reshook=$hookmanager->executeHooks('printFieldListTitle',$parameters); // Note that $action and $object may have been modified by hook - print $hookmanager->resPrint; - print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],'p.fk_statut',"",$param,'align="right"',$sortfield,$sortorder); - print_liste_field_titre('',$_SERVER["PHP_SELF"],"",'','','',$sortfield,$sortorder,'maxwidthsearch '); + if (! empty($arrayfields['p.ref']['checked'])) print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],"p.ref","",$param,"",$sortfield,$sortorder); + if (! empty($arrayfields['p.title']['checked'])) print_liste_field_titre($langs->trans("Label"),$_SERVER["PHP_SELF"],"p.title","",$param,"",$sortfield,$sortorder); + if (! empty($arrayfields['s.nom']['checked'])) print_liste_field_titre($langs->trans("ThirdParty"),$_SERVER["PHP_SELF"],"s.nom","",$param,"",$sortfield,$sortorder); + if (! empty($arrayfields['commercial']['checked'])) print_liste_field_titre($langs->trans("SalesRepresentative"),$_SERVER["PHP_SELF"],"","",$param,"",$sortfield,$sortorder); + if (! empty($arrayfields['p.dateo']['checked'])) print_liste_field_titre($langs->trans("DateStart"),$_SERVER["PHP_SELF"],"p.dateo","",$param,'align="center"',$sortfield,$sortorder); + if (! empty($arrayfields['p.datee']['checked'])) print_liste_field_titre($langs->trans("DateEnd"),$_SERVER["PHP_SELF"],"p.datee","",$param,'align="center"',$sortfield,$sortorder); + if (! empty($arrayfields['p.public']['checked'])) print_liste_field_titre($langs->trans("Visibility"),$_SERVER["PHP_SELF"],"p.public","",$param,"",$sortfield,$sortorder); + if (! empty($arrayfields['p.opp_amount']['checked'])) print_liste_field_titre($langs->trans("OpportunityAmountShort"),$_SERVER["PHP_SELF"],'p.opp_amount',"",$param,'align="right"',$sortfield,$sortorder); + if (! empty($arrayfields['p.fk_opp_status']['checked'])) print_liste_field_titre($langs->trans("OpportunityStatusShort"),$_SERVER["PHP_SELF"],'p.fk_opp_status',"",$param,'align="center"',$sortfield,$sortorder); + // Extra fields + if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) + { + foreach($extrafields->attribute_label as $key => $val) + { + if (! empty($arrayfields["ef.".$key]['checked'])) + { + $align=$extrafields->getAlignFlag($key); + print_liste_field_titre($extralabels[$key],$_SERVER["PHP_SELF"],"ef.".$key,"",$param,($align?'align="'.$align.'"':''),$sortfield,$sortorder); + } + } + } + // Hook fields + $parameters=array('arrayfields'=>$arrayfields); + $reshook=$hookmanager->executeHooks('printFieldListTitle',$parameters); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + if (! empty($arrayfields['p.datec']['checked'])) print_liste_field_titre($langs->trans("DateCreationShort"),$_SERVER["PHP_SELF"],"p.datec","",$param,'align="center" class="nowrap"',$sortfield,$sortorder); + if (! empty($arrayfields['p.tms']['checked'])) print_liste_field_titre($langs->trans("DateModificationShort"),$_SERVER["PHP_SELF"],"p.tms","",$param,'align="center" class="nowrap"',$sortfield,$sortorder); + if (! empty($arrayfields['p.statut']['checked'])) print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],"p.fk_statut","",$param,'align="center"',$sortfield,$sortorder); + print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"],"",'','','align="right"',$sortfield,$sortorder,'maxwidthsearch '); print "</tr>\n"; print '<tr class="liste_titre">'; - print '<td class="liste_titre">'; - print '<input type="text" class="flat" name="search_ref" value="'.$search_ref.'" size="6">'; - print '</td>'; - print '<td class="liste_titre">'; - print '<input type="text" class="flat" name="search_label" size="8" value="'.$search_label.'">'; - print '</td>'; - print '<td class="liste_titre">'; - print '<input type="text" class="flat" name="search_societe" size="8" value="'.$search_societe.'">'; - print '</td>'; + if (! empty($arrayfields['p.ref']['checked'])) + { + print '<td class="liste_titre">'; + print '<input type="text" class="flat" name="search_ref" value="'.$search_ref.'" size="6">'; + print '</td>'; + } + if (! empty($arrayfields['p.title']['checked'])) + { + print '<td class="liste_titre">'; + print '<input type="text" class="flat" name="search_label" size="8" value="'.$search_label.'">'; + print '</td>'; + } + if (! empty($arrayfields['s.nom']['checked'])) + { + print '<td class="liste_titre">'; + print '<input type="text" class="flat" name="search_societe" size="8" value="'.$search_societe.'">'; + print '</td>'; + } // Sale representative - print '<td class="liste_titre"> </td>'; + if (! empty($arrayfields['commercial']['checked'])) + { + print '<td class="liste_titre"> </td>'; + } // Start date - if (empty($conf->global->PROJECT_LIST_HIDE_STARTDATE)) + if (! empty($arrayfields['p.dateo']['checked'])) { print '<td class="liste_titre center">'; if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print '<input class="flat" type="text" size="1" maxlength="2" name="sday" value="'.$sday.'">'; @@ -382,48 +416,78 @@ if ($resql) print '</td>'; } // End date - print '<td class="liste_titre center">'; - if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print '<input class="flat" type="text" size="1" maxlength="2" name="day" value="'.$day.'">'; - print '<input class="flat" type="text" size="1" maxlength="2" name="month" value="'.$month.'">'; - $formother->select_year($year?$year:-1,'year',1, 20, 5); - print '</td>'; - - print '<td class="liste_titre">'; - $array=array(''=>'',0 => $langs->trans("PrivateProject"),1 => $langs->trans("SharedProject")); - print $form->selectarray('search_public',$array,$search_public); - print '</td>'; - - $parameters=array(); - $reshook=$hookmanager->executeHooks('printFieldListOption',$parameters); // Note that $action and $object may have been modified by hook - print $hookmanager->resPrint; - - if (! empty($conf->global->PROJECT_USE_OPPORTUNITIES)) - { + if (! empty($arrayfields['p.datee']['checked'])) + { + print '<td class="liste_titre center">'; + if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print '<input class="flat" type="text" size="1" maxlength="2" name="day" value="'.$day.'">'; + print '<input class="flat" type="text" size="1" maxlength="2" name="month" value="'.$month.'">'; + $formother->select_year($year?$year:-1,'year',1, 20, 5); + print '</td>'; + } + if (! empty($arrayfields['p.public']['checked'])) + { + print '<td class="liste_titre">'; + $array=array(''=>'',0 => $langs->trans("PrivateProject"),1 => $langs->trans("SharedProject")); + print $form->selectarray('search_public',$array,$search_public); + print '</td>'; + } + if (! empty($arrayfields['p.opp_amount']['checked'])) + { print '<td class="liste_titre nowrap">'; print '</td>'; + } + if (! empty($arrayfields['p.fk_opp_status']['checked'])) + { print '<td class="liste_titre nowrap center">'; print $formproject->selectOpportunityStatus('search_opp_status',$search_opp_status,1,1,1); print '</td>'; } - - print '<td class="liste_titre nowrap" align="right">'; - print $form->selectarray('search_status', array('-1'=>'', '0'=>$langs->trans('Draft'),'1'=>$langs->trans('Opened'),'2'=>$langs->trans('Closed')),$search_status); - print '</td>'; - print '<td>'; - print '<input type="image" class="liste_titre" name="button_search" src="'.img_picto($langs->trans("Search"),'search.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("Search")).'" title="'.dol_escape_htmltag($langs->trans("Search")).'">'; - print '<input type="image" class="liste_titre" name="button_removefilter" src="'.img_picto($langs->trans("RemoveFilter"),'searchclear.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'" title="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'">'; - print '</td>'; + // Extra fields + if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) + { + foreach($extrafields->attribute_label as $key => $val) + { + if (! empty($arrayfields["ef.".$key]['checked'])) print '<td class="liste_titre"></td>'; + } + } + // Fields from hook + $parameters=array('arrayfields'=>$arrayfields); + $reshook=$hookmanager->executeHooks('printFieldListOption',$parameters); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + if (! empty($arrayfields['p.datec']['checked'])) + { + // Date creation + print '<td class="liste_titre">'; + print '</td>'; + } + if (! empty($arrayfields['p.tms']['checked'])) + { + // Date modification + print '<td class="liste_titre">'; + print '</td>'; + } + if (! empty($arrayfields['p.statut']['checked'])) + { + print '<td class="liste_titre nowrap" align="right">'; + print $form->selectarray('search_status', array('-1'=>'', '0'=>$langs->trans('Draft'),'1'=>$langs->trans('Opened'),'2'=>$langs->trans('Closed')),$search_status); + print '</td>'; + } + // Action column + print '<td class="liste_titre" align="right">'; + print '<input type="image" class="liste_titre" name="button_search" src="'.img_picto($langs->trans("Search"),'search.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("Search")).'" title="'.dol_escape_htmltag($langs->trans("Search")).'">'; + print '<input type="image" class="liste_titre" name="button_removefilter" src="'.img_picto($langs->trans("Search"),'searchclear.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'" title="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'">'; + print '</td>'; print '</tr>'."\n"; while ($i < $num) { - $objp = $db->fetch_object($resql); + $obj = $db->fetch_object($resql); - $projectstatic->id = $objp->projectid; - $projectstatic->user_author_id = $objp->fk_user_creat; - $projectstatic->public = $objp->public; + $projectstatic->id = $obj->projectid; + $projectstatic->user_author_id = $obj->fk_user_creat; + $projectstatic->public = $obj->public; $userAccess = $projectstatic->restrictedProjectArea($user); @@ -433,104 +497,151 @@ if ($resql) print "<tr ".$bc[$var].">"; // Project url - print '<td class="nowrap">'; - $projectstatic->ref = $objp->ref; - print $projectstatic->getNomUrl(1); - print '</td>'; - + if (! empty($arrayfields['p.ref']['checked'])) + { + print '<td class="nowrap">'; + $projectstatic->ref = $obj->ref; + print $projectstatic->getNomUrl(1); + print '</td>'; + } // Title - print '<td>'; - print dol_trunc($objp->title,80); - print '</td>'; - + if (! empty($arrayfields['p.title']['checked'])) + { + print '<td>'; + print dol_trunc($obj->title,80); + print '</td>'; + } // Company - print '<td>'; - if ($objp->socid) - { - $socstatic->id=$objp->socid; - $socstatic->name=$objp->name; - print $socstatic->getNomUrl(1); - } - else - { - print ' '; - } - print '</td>'; - - + if (! empty($arrayfields['s.nom']['checked'])) + { + print '<td>'; + if ($obj->socid) + { + $socstatic->id=$obj->socid; + $socstatic->name=$obj->name; + print $socstatic->getNomUrl(1); + } + else + { + print ' '; + } + print '</td>'; + } // Sales Rapresentatives - print '<td>'; - if($objp->socid) - { - $listsalesrepresentatives=$socstatic->getSalesRepresentatives($user); - $nbofsalesrepresentative=count($listsalesrepresentatives); - if ($nbofsalesrepresentative > 3) // We print only number - { - print '<a href="'.DOL_URL_ROOT.'/societe/commerciaux.php?socid='.$socstatic->id.'">'; - print $nbofsalesrepresentative; - print '</a>'; - } - else if ($nbofsalesrepresentative > 0) - { - $userstatic=new User($db); - $j=0; - foreach($listsalesrepresentatives as $val) - { - $userstatic->id=$val['id']; - $userstatic->lastname=$val['lastname']; - $userstatic->firstname=$val['firstname']; - $userstatic->email=$val['email']; - print $userstatic->getNomUrl(1); - $j++; - if ($j < $nbofsalesrepresentative) print ', '; - } - } - //else print $langs->trans("NoSalesRepresentativeAffected"); - } - else - { - print ' '; - } - print '</td>'; - + if (! empty($arrayfields['commercial']['checked'])) + { + print '<td>'; + if ($obj->socid) + { + $socstatic->id=$obj->socid; + $socstatic->name=$obj->name; + $listsalesrepresentatives=$socstatic->getSalesRepresentatives($user); + $nbofsalesrepresentative=count($listsalesrepresentatives); + if ($nbofsalesrepresentative > 3) // We print only number + { + print '<a href="'.DOL_URL_ROOT.'/societe/commerciaux.php?socid='.$socstatic->id.'">'; + print $nbofsalesrepresentative; + print '</a>'; + } + else if ($nbofsalesrepresentative > 0) + { + $userstatic=new User($db); + $j=0; + foreach($listsalesrepresentatives as $val) + { + $userstatic->id=$val['id']; + $userstatic->lastname=$val['lastname']; + $userstatic->firstname=$val['firstname']; + $userstatic->email=$val['email']; + print $userstatic->getNomUrl(1); + $j++; + if ($j < $nbofsalesrepresentative) print ', '; + } + } + //else print $langs->trans("NoSalesRepresentativeAffected"); + } + else + { + print ' '; + } + print '</td>'; + } // Date start - if (empty($conf->global->PROJECT_LIST_HIDE_STARTDATE)) - { + if (! empty($arrayfields['p.dateo']['checked'])) + { print '<td class="center">'; - print dol_print_date($db->jdate($objp->date_start),'day'); + print dol_print_date($db->jdate($obj->date_start),'day'); print '</td>'; } - // Date end - print '<td class="center">'; - print dol_print_date($db->jdate($objp->date_end),'day'); - print '</td>'; - + if (! empty($arrayfields['p.datee']['checked'])) + { + print '<td class="center">'; + print dol_print_date($db->jdate($obj->date_end),'day'); + print '</td>'; + } // Visibility - print '<td align="left">'; - if ($objp->public) print $langs->trans('SharedProject'); - else print $langs->trans('PrivateProject'); - print '</td>'; - - $parameters=array('obj' => $objp); - $reshook=$hookmanager->executeHooks('printFieldListValue',$parameters); // Note that $action and $object may have been modified by hook - print $hookmanager->resPrint; - - if (! empty($conf->global->PROJECT_USE_OPPORTUNITIES)) - { + if (! empty($arrayfields['p.public']['checked'])) + { + print '<td align="left">'; + if ($obj->public) print $langs->trans('SharedProject'); + else print $langs->trans('PrivateProject'); + print '</td>'; + } + if (! empty($arrayfields['p.opp_amount']['checked'])) + { print '<td align="right">'; - if ($objp->opp_status_code) print price($objp->opp_amount, 1, '', 1, - 1, - 1, $conf->currency); + if ($obj->opp_status_code) print price($obj->opp_amount, 1, '', 1, - 1, - 1, $conf->currency); print '</td>'; - - print '<td align="middle">'; - if ($objp->opp_status_code) print $langs->trans("OppStatusShort".$objp->opp_status_code); + } + if (! empty($arrayfields['p.fk_opp_status']['checked'])) + { + print '<td align="middle">'; + if ($obj->opp_status_code) print $langs->trans("OppStatusShort".$obj->opp_status_code); print '</td>'; } - + // Extra fields + if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) + { + foreach($extrafields->attribute_label as $key => $val) + { + if (! empty($arrayfields["ef.".$key]['checked'])) + { + print '<td'; + $align=$extrafields->getAlignFlag($key); + if ($align) print ' align="'.$align.'"'; + print '>'; + $tmpkey='options_'.$key; + print $extrafields->showOutputField($key, $obj->$tmpkey, '', 1); + print '</td>'; + } + } + } + // Fields from hook + $parameters=array('arrayfields'=>$arrayfields, 'obj'=>$obj); + $reshook=$hookmanager->executeHooks('printFieldListValue',$parameters); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + // Date creation + if (! empty($arrayfields['p.datec']['checked'])) + { + print '<td align="center">'; + print dol_print_date($db->jdate($obj->date_creation), 'dayhour'); + print '</td>'; + } + // Date modification + if (! empty($arrayfields['p.tms']['checked'])) + { + print '<td align="center">'; + print dol_print_date($db->jdate($obj->date_update), 'dayhour'); + print '</td>'; + } // Status - $projectstatic->statut = $objp->fk_statut; - print '<td align="right">'.$projectstatic->getLibStatut(5).'</td>'; - + if (! empty($arrayfields['p.statut']['checked'])) + { + $projectstatic->statut = $obj->fk_statut; + print '<td align="right">'.$projectstatic->getLibStatut(5).'</td>'; + } + // Action column print '<td></td>'; print "</tr>\n"; diff --git a/htdocs/user/index.php b/htdocs/user/index.php index c4e769d6ffd..43812be515c 100644 --- a/htdocs/user/index.php +++ b/htdocs/user/index.php @@ -266,10 +266,12 @@ if ($result) print $langs->trans("FilterOnInto", $sall) . join(', ',$fieldstosearchall); } + $moreforfilter=''; + $varpage=empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage; $selectedfields=$form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields - print '<table class="liste">'; + print '<table class="liste '.($moreforfilter?"listwithfilterbefore":"").'">'; print '<tr class="liste_titre">'; if (! empty($arrayfields['u.login']['checked'])) print_liste_field_titre($langs->trans("Login"),$_SERVER['PHP_SELF'],"u.login",$param,"","",$sortfield,$sortorder); if (! empty($arrayfields['u.lastname']['checked'])) print_liste_field_titre($langs->trans("Lastname"),$_SERVER['PHP_SELF'],"u.lastname",$param,"","",$sortfield,$sortorder); -- GitLab From 50cf96bd1638d33a76abc01cac5727cdac3ec2fb Mon Sep 17 00:00:00 2001 From: AlainRnet <alainrihs@sunrise.ch> Date: Sun, 6 Dec 2015 12:01:59 +0100 Subject: [PATCH 105/197] Update const.php link to help file --- htdocs/admin/const.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/admin/const.php b/htdocs/admin/const.php index 06e3279fa54..5749fbbb4fb 100644 --- a/htdocs/admin/const.php +++ b/htdocs/admin/const.php @@ -146,7 +146,8 @@ if ($action == 'delete') $form = new Form($db); -llxHeader('',$langs->trans("OtherSetup")); +$wikihelp='EN:Setup_Other|FR:Paramétrage_Divers|ES:Configuración_Varios'; +llxHeader('',$langs->trans("Setup"),$wikihelp); // Add logic to show/hide buttons if ($conf->use_javascript_ajax) -- GitLab From 0279e99b0a8b7018cbb37876b382e2acba010793 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sun, 6 Dec 2015 12:04:34 +0100 Subject: [PATCH 106/197] Update warning for mysql 5.5.4* bug --- ChangeLog | 3 ++- htdocs/langs/en_US/install.lang | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9cb28633bfd..09e216e93fc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -6,7 +6,8 @@ WARNING: Do not try to make any Dolibarr upgrade if you are running Mysql version 5.5.40. Mysql version 5.5.40 has a very critical bug making your data beeing definitely lost. -You may also experience troubles with Mysql 5.5.41 with error "Lost connection" during migration. +You may also experience troubles with Mysql 5.5.41/42/43 with error "Lost connection" +during migration. Upgrading to any other version or any other database system is abolutely required BEFORE trying make a Dolibarr upgrade. diff --git a/htdocs/langs/en_US/install.lang b/htdocs/langs/en_US/install.lang index 6ec3ca2d14a..f21af4e072e 100644 --- a/htdocs/langs/en_US/install.lang +++ b/htdocs/langs/en_US/install.lang @@ -155,7 +155,7 @@ MigrationFinished=Migration finished LastStepDesc=<strong>Last step</strong>: Define here login and password you plan to use to connect to software. Do not loose this as it is the account to administer all others. ActivateModule=Activate module %s ShowEditTechnicalParameters=Click here to show/edit advanced parameters (expert mode) -WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... +WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40/41/42/43), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) ######### -- GitLab From d4268c079f8040eb5e9121cee228a36691d8d546 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sun, 6 Dec 2015 12:23:49 +0100 Subject: [PATCH 107/197] Fix syntax error --- htdocs/expensereport/list.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/expensereport/list.php b/htdocs/expensereport/list.php index 78edcea53b0..502125faf61 100644 --- a/htdocs/expensereport/list.php +++ b/htdocs/expensereport/list.php @@ -247,7 +247,7 @@ if ($resql) // User if ($user->rights->expensereport->readall || $user->rights->expensereport->lire_tous){ print '<td class="liste_titre" align="left">'; - print $form->select_dolusers($search_user, 'search_user', 1, '' 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); + print $form->select_dolusers($search_user, 'search_user', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); print '</td>'; } else { print '<td class="liste_titre"> </td>'; -- GitLab From 7f3531a04c621aa2ee94c94a9e56d0572669b778 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sun, 6 Dec 2015 13:34:57 +0100 Subject: [PATCH 108/197] Enhance script to track duplicate translation string and use it to remove around 50 duplicates. --- dev/translation/sanity_check_en_langfiles.php | 273 ++++++++++++------ htdocs/compta/facture.php | 2 +- .../core/triggers/dolibarrtriggers.class.php | 4 +- htdocs/install/fileconf.php | 6 +- htdocs/langs/en_US/accountancy.lang | 20 +- htdocs/langs/en_US/admin.lang | 8 - htdocs/langs/en_US/bills.lang | 4 - htdocs/langs/en_US/companies.lang | 1 - htdocs/langs/en_US/compta.lang | 2 - htdocs/langs/en_US/ecm.lang | 1 - htdocs/langs/en_US/errors.lang | 2 - htdocs/langs/en_US/hrm.lang | 1 - htdocs/langs/en_US/install.lang | 7 - htdocs/langs/en_US/main.lang | 3 +- htdocs/langs/en_US/members.lang | 1 - htdocs/langs/en_US/orders.lang | 1 - htdocs/langs/en_US/other.lang | 14 +- htdocs/langs/en_US/products.lang | 2 - htdocs/langs/en_US/projects.lang | 1 - htdocs/langs/en_US/supplier_proposal.lang | 1 - htdocs/langs/en_US/trips.lang | 2 - htdocs/langs/en_US/users.lang | 1 - htdocs/langs/en_US/withdrawals.lang | 1 - htdocs/product/admin/product.php | 5 +- 24 files changed, 202 insertions(+), 161 deletions(-) mode change 100644 => 100755 dev/translation/sanity_check_en_langfiles.php diff --git a/dev/translation/sanity_check_en_langfiles.php b/dev/translation/sanity_check_en_langfiles.php old mode 100644 new mode 100755 index a3b3911c77f..f54c179ac09 --- a/dev/translation/sanity_check_en_langfiles.php +++ b/dev/translation/sanity_check_en_langfiles.php @@ -1,82 +1,102 @@ +#!/usr/bin/php <?php -/* Copyright (c) 2015 Tommaso Basilici <t.basilici@19.coop> -* -* 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, see <http://www.gnu.org/licenses/>. -*/ - -echo "<html>"; -echo "<head>"; - -echo "<STYLE type=\"text/css\"> - -table { - background: #f5f5f5; - border-collapse: separate; - box-shadow: inset 0 1px 0 #fff; - font-size: 12px; - line-height: 24px; - margin: 30px auto; - text-align: left; - width: 800px; -} - -th { - background-color: #777; - border-left: 1px solid #555; - border-right: 1px solid #777; - border-top: 1px solid #555; - border-bottom: 1px solid #333; - color: #fff; - font-weight: bold; - padding: 10px 15px; - position: relative; - text-shadow: 0 1px 0 #000; -} - -td { - border-right: 1px solid #fff; - border-left: 1px solid #e8e8e8; - border-top: 1px solid #fff; - border-bottom: 1px solid #e8e8e8; - padding: 10px 15px; - position: relative; -} +/* Copyright (c) 2015 Tommaso Basilici <t.basilici@19.coop> + * Copyright (c) 2015 Laurent Destailleur <eldy@destailleur.fr> + * + * 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, see <http://www.gnu.org/licenses/>. + */ +$sapi_type = php_sapi_name(); +$script_file = basename(__FILE__); +$path=dirname(__FILE__).'/'; -tr { - background-color: #f1f1f1; +$web=0; +// Test if batch mode +if (substr($sapi_type, 0, 3) == 'cgi') +{ + $web=1; } -tr:nth-child(odd) td { - background-color: #f1f1f1; -} -</STYLE>"; +if ($web) +{ + echo "<html>"; + echo "<head>"; + + echo "<STYLE type=\"text/css\"> + + table { + background: #f5f5f5; + border-collapse: separate; + box-shadow: inset 0 1px 0 #fff; + font-size: 12px; + line-height: 24px; + margin: 30px auto; + text-align: left; + width: 800px; + } + + th { + background-color: #777; + border-left: 1px solid #555; + border-right: 1px solid #777; + border-top: 1px solid #555; + border-bottom: 1px solid #333; + color: #fff; + font-weight: bold; + padding: 10px 15px; + position: relative; + text-shadow: 0 1px 0 #000; + } + + td { + border-right: 1px solid #fff; + border-left: 1px solid #e8e8e8; + border-top: 1px solid #fff; + border-bottom: 1px solid #e8e8e8; + padding: 10px 15px; + position: relative; + } + + + tr { + background-color: #f1f1f1; + + } + + tr:nth-child(odd) td { + background-color: #f1f1f1; + } + + </STYLE>"; + + echo "<body>"; +} -echo "<body>"; +echo "If you call this file with the argument \"?unused=true\" it searches for the translation strings that exist in en_US but are never used.\n"; +if ($web) print "<br>"; +echo "IMPORTANT: that can take quite a lot of time (up to 10 minutes), you need to tune the max_execution_time on your php.ini accordingly.\n"; +if ($web) print "<br>"; -echo "If you call this file with the argument \"?unused=true\" it searches for the translation strings that exist in en_US but are never used.<br>"; -echo "IMPORTANT: that can take quite a lot of time (up to 10 minutes), you need to tune the max_execution_time on your php.ini accordingly.<br>"; -echo "Happy translating :)<br>"; // STEP 1 - Search duplicates keys // directory containing the php and lang files -$htdocs = "../../htdocs/"; +$htdocs = $path."/../../htdocs/"; // directory containing the english lang files $workdir = $htdocs."langs/en_US/"; @@ -114,8 +134,10 @@ foreach ($files AS $file) { } } -foreach ($langstrings_3d AS $filename => $file) { - foreach ($file AS $linenum => $value) { +foreach ($langstrings_3d AS $filename => $file) +{ + foreach ($file AS $linenum => $value) + { $keys = array_keys($langstrings_full, $value); if (count($keys)>1) { @@ -126,30 +148,95 @@ foreach ($langstrings_3d AS $filename => $file) { } } -echo "<h2>Duplicate strings in lang files in $workdir - ".count($dups)." found</h2>"; +if ($web) print "<h2>"; +print "Duplicate strings in lang files in $workdir - ".count($dups)." found\n"; +if ($web) print "</h2>"; + +if ($web) +{ + echo '<table border_bottom="1">'."\n"; + echo "<thead><tr><th align=\"center\">#</th><th>String</th><th>File and lines</th></thead>\n"; + echo "<tbody>\n"; +} + +$sduplicateinsamefile=''; +$sinmainandother=''; +$sininstallandadmin=''; +$sother=''; -echo "<table border_bottom=1> "; -echo "<thead><tr><th align=\"center\">#</th><th>String</th><th>File and lines</th></thead>"; -echo "<tbody>"; $count = 0; -foreach ($dups as $string => $pages) { +foreach ($dups as $string => $pages) +{ $count++; - echo "<tr>"; - echo "<td align=\"center\">$count</td>"; - echo "<td>$string</td>"; - echo "<td>"; - foreach ($pages AS $page => $lines ) { - echo "$page "; - foreach ($lines as $line => $translatedvalue) { - //echo "($line - ".(substr($translatedvalue,0,20)).") "; - echo "($line - ".htmlentities($translatedvalue).") "; + $s=''; + + // Keyword $string + if ($web) $s.="<tr>"; + if ($web) $s.="<td align=\"center\">"; + if ($web) $s.=$count; + if ($web) $s.="</td>"; + if ($web) $s.="<td>"; + $s.=$string; + if ($web) $s.="</td>"; + if ($web) $s.="<td>"; + if (! $web) $s.= ' : '; + + // Loop on each files keyword was found + $duplicateinsamefile=0; + $inmain=0; + $inadmin=0; + foreach ($pages AS $file => $lines) + { + if ($file == 'main.lang') { $inmain=1; $inadmin=0; } + if ($file == 'admin.lang' && ! $inmain) { $inadmin=1; } + + $s.=$file." "; + + // Loop on each line keword was found into file. + $listoffilesforthisentry=array(); + foreach ($lines as $line => $translatedvalue) + { + if (! empty($listoffilesforthisentry[$file])) $duplicateinsamefile=1; + $listoffilesforthisentry[$file]=1; + + $s.= "(".$line." - ".htmlentities($translatedvalue).") "; } - echo "<br>"; + if ($web) $s.="<br>"; } - echo "</td></tr>\n"; + if ($web) $s.="</td></tr>"; + $s.="\n"; + + if ($duplicateinsamefile) $sduplicateinsamefile .= $s; + else if ($inmain) $sinmainandother .= $s; + else if ($inadmin) $sininstallandadmin .= $s; + else $sother .= $s; +} + +if (! $web) print "\n***** Entries duplicated in same file\n"; +print $sduplicateinsamefile; +if (! $web && empty($sduplicateinsamefile)) print "None\n"; +if (! $web) print "\n"; + +if (! $web) print "***** Entries in main and another (keep only entry in main)\n"; +print $sinmainandother; +if (! $web && empty($sinmainandother)) print "None\n"; +if (! $web) print "\n"; + +if (! $web) print "***** Entries in admin and another\n"; +print $sininstallandadmin; +if (! $web && empty($sininstallandadmin)) print "None\n"; +if (! $web) print "\n"; + +if (! $web) print "***** Other\n"; +print $sother; +if (! $web && empty($sother)) print "None\n"; +if (! $web) print "\n"; + +if ($web) +{ + echo "</tbody>\n"; + echo "</table>\n"; } -echo "</tbody>"; -echo "</table>"; // STEP 2 - Search key not used @@ -168,12 +255,20 @@ if (! empty($_REQUEST['unused']) && $_REQUEST['unused'] == 'true') } } - echo "<h2>Strings in en_US that are never used</h2>"; - echo "<pre>"; + if ($web) print "<h2>\n"; + print "Strings in en_US that are never used\n"; + if ($web) print "</h2>\n"; + if ($web) echo "<pre>"; print_r($unused); - echo "</pre>"; + if ($web) echo "</pre>\n"; } echo "\n"; -echo "</body>"; -echo "</html>"; +if ($web) +{ + echo "</body>\n"; + echo "</html>\n"; +} + +exit; + diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php index d5e99af0df6..9ce11ee5abf 100644 --- a/htdocs/compta/facture.php +++ b/htdocs/compta/facture.php @@ -2833,7 +2833,7 @@ else if ($id > 0 || ! empty($ref)) print '<tr><td>' . $langs->trans('Company') . '</td>'; print '</td><td colspan="5">'; if (! empty($conf->global->FACTURE_CHANGE_THIRDPARTY) && $action != 'editthirdparty' && $object->brouillon && $user->rights->facture->creer) - print '<td align="right"><a href="' . $_SERVER["PHP_SELF"] . '?action=editthirdparty&facid=' . $object->id . '">' . img_edit($langs->trans('SetLinkToThirdParty'), 1) . '</a></td>'; + print '<td align="right"><a href="' . $_SERVER["PHP_SELF"] . '?action=editthirdparty&facid=' . $object->id . '">' . img_edit($langs->trans('SetLinkToAnotherThirdParty'), 1) . '</a></td>'; print '</tr></table>'; print '</td><td colspan="5">'; if ($action == 'editthirdparty') { diff --git a/htdocs/core/triggers/dolibarrtriggers.class.php b/htdocs/core/triggers/dolibarrtriggers.class.php index d4cffc24a01..61a89b083f8 100644 --- a/htdocs/core/triggers/dolibarrtriggers.class.php +++ b/htdocs/core/triggers/dolibarrtriggers.class.php @@ -121,9 +121,9 @@ abstract class DolibarrTriggers $langs->load("admin"); if ($this->version == self::VERSION_DEVELOPMENT) { - return $langs->trans("Development"); + return $langs->trans("VersionDevelopment"); } elseif ($this->version == self::VERSION_EXPERIMENTAL) { - return $langs->trans("Experimental"); + return $langs->trans("VersionExperimental"); } elseif ($this->version == self::VERSION_DOLIBARR) { return DOL_VERSION; } elseif ($this->version) { diff --git a/htdocs/install/fileconf.php b/htdocs/install/fileconf.php index 21e975f8b29..8d040e06ed4 100644 --- a/htdocs/install/fileconf.php +++ b/htdocs/install/fileconf.php @@ -333,9 +333,9 @@ if (! empty($force_install_message)) if ($note) $option.=' '.$note; // Deprecated and experimental if ($type=='mysql') $option.=' ' . $langs->trans("Deprecated"); - elseif ($type=='mssql') $option.=' '.$langs->trans("Experimental"); - elseif ($type=='sqlite') $option.=' '.$langs->trans("Experimental"); - elseif ($type=='sqlite3') $option.=' '.$langs->trans("Experimental"); + elseif ($type=='mssql') $option.=' '.$langs->trans("VersionExperimental"); + elseif ($type=='sqlite') $option.=' '.$langs->trans("VersionExperimental"); + elseif ($type=='sqlite3') $option.=' '.$langs->trans("VersionExperimental"); // No available elseif (! function_exists($testfunction)) $option.=' - '.$langs->trans("FunctionNotAvailableInThisPHP"); $option.='</option>'; diff --git a/htdocs/langs/en_US/accountancy.lang b/htdocs/langs/en_US/accountancy.lang index edc0a8d512d..a9451deb151 100644 --- a/htdocs/langs/en_US/accountancy.lang +++ b/htdocs/langs/en_US/accountancy.lang @@ -1,5 +1,4 @@ # Dolibarr language file - en_US - Accounting Expert -CHARSET=UTF-8 ACCOUNTING_EXPORT_SEPARATORCSV=Column separator for export file ACCOUNTING_EXPORT_DATE=Date format for export file ACCOUNTING_EXPORT_PIECE=Export the number of piece @@ -12,8 +11,6 @@ ACCOUNTING_EXPORT_PREFIX_SPEC=Specify the prefix for the file name Accounting=Accounting Globalparameters=Global parameters -Chartofaccounts=Chart of accounts -Fiscalyear=Fiscal years Menuaccount=Accounting accounts Menuthirdpartyaccount=Thirdparty accounts MenuTools=Tools @@ -33,23 +30,17 @@ Back=Return Definechartofaccounts=Define a chart of accounts Selectchartofaccounts=Select a chart of accounts -Validate=Validate Addanaccount=Add an accounting account AccountAccounting=Accounting account AccountAccountingSuggest=Accounting account suggest Ventilation=Breakdown -ToDispatch=To dispatch -Dispatched=Dispatched CustomersVentilation=Breakdown customers SuppliersVentilation=Breakdown suppliers TradeMargin=Trade margin Reports=Reports ByCustomerInvoice=By invoices customers -ByMonth=By Month NewAccount=New accounting account -Update=Update -List=List Create=Create CreateMvts=Create movement UpdateAccount=Modification of an accounting account @@ -61,7 +52,6 @@ AccountBalanceByMonth=Account balance by month AccountingVentilation=Breakdown accounting AccountingVentilationSupplier=Breakdown accounting supplier AccountingVentilationCustomer=Breakdown accounting customer -Line=Line CAHTF=Total purchase supplier before tax InvoiceLines=Lines of invoice to be ventilated @@ -112,17 +102,12 @@ Docref=Reference Numerocompte=Account Code_tiers=Thirdparty Labelcompte=Label account -Debit=Debit -Credit=Credit -Amount=Amount Sens=Sens Codejournal=Journal DelBookKeeping=Delete the records of the general ledger -SellsJournal=Sells journal -PurchasesJournal=Purchases journal -DescSellsJournal=Sells journal +DescSellsJournal=Sales journal DescPurchasesJournal=Purchases journal BankJournal=Bank journal DescBankJournal=Bank journal including all the types of payments other than cash @@ -150,9 +135,6 @@ Pcgversion=Version of the plan Pcgtype=Class of account Pcgsubtype=Under class of account Accountparent=Root of the account -Active=Statement - -NewFiscalYear=New fiscal year DescVentilCustomer=Consult here the annual breakdown accounting of your invoices customers TotalVente=Total turnover before tax diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 232eb3e573f..5bac55fddc0 100755 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -105,7 +105,6 @@ DetailPosition=Sort number to define menu position PersonalizedMenusNotSupported=Personalized menus not supported AllMenus=All NotConfigured=Module not configured -Setup=Setup Activation=Activation Active=Active SetupShort=Setup @@ -193,15 +192,12 @@ ExportOptions=Export Options AddDropDatabase=Add DROP DATABASE command AddDropTable=Add DROP TABLE command ExportStructure=Structure -Datas=Data NameColumn=Name columns ExtendedInsert=Extended INSERT NoLockBeforeInsert=No lock commands around INSERT DelayedInsert=Delayed insert EncodeBinariesInHexa=Encode binary data in hexadecimal IgnoreDuplicateRecords=Ignore errors of duplicate records (INSERT IGNORE) -Yes=Yes -No=No AutoDetectLang=Autodetect (browser language) FeatureDisabledInDemo=Feature disabled in demo Rights=Permissions @@ -926,7 +922,6 @@ MenuCompanySetup=Company/Foundation MenuNewUser=New user MenuTopManager=Top menu manager MenuLeftManager=Left menu manager -MenuManager=Menu manager MenuSmartphoneManager=Smartphone menu manager DefaultMenuTopManager=Top menu manager DefaultMenuLeftManager=Left menu manager @@ -1110,7 +1105,6 @@ XDebugInstalled=XDebug is loaded. XCacheInstalled=XCache is loaded. AddRefInList=Display customer/supplier ref into list (select list or combobox) and most of hyperlink. Third parties will appears with name "CC12345 - SC45678 - The big company coorp", instead of "The big company coorp". FieldEdition=Edition of field %s -FixTZ=TimeZone fix FillThisOnlyIfRequired=Example: +2 (fill only if timezone offset problems are experienced) GetBarCode=Get barcode EmptyNumRefModelDesc=The code is free. This code can be modified at any time. @@ -1644,8 +1638,6 @@ OpenFiscalYear=Open fiscal year CloseFiscalYear=Close fiscal year DeleteFiscalYear=Delete fiscal year ConfirmDeleteFiscalYear=Are you sure to delete this fiscal year ? -Opened=Open -Closed=Closed AlwaysEditable=Can always be edited MAIN_APPLICATION_TITLE=Force visible name of application (warning: setting your own name here may break autofill login feature when using DoliDroid mobile application) NbMajMin=Minimum number of uppercase characters diff --git a/htdocs/langs/en_US/bills.lang b/htdocs/langs/en_US/bills.lang index a567fd4f062..db2b9ea4b62 100644 --- a/htdocs/langs/en_US/bills.lang +++ b/htdocs/langs/en_US/bills.lang @@ -59,7 +59,6 @@ PaymentBack=Payment back Payments=Payments PaymentsBack=Payments back PaidBack=Paid back -DatePayment=Payment date DeletePayment=Delete payment ConfirmDeletePayment=Are you sure you want to delete this payment ? ConfirmConvertToReduc=Do you want to convert this credit note or deposit into an absolute discount ?<br>The amount will so be saved among all discounts and could be used as a discount for a current or a future invoice for this customer. @@ -103,7 +102,6 @@ ConvertToReduc=Convert into future discount EnterPaymentReceivedFromCustomer=Enter payment received from customer EnterPaymentDueToCustomer=Make payment due to customer DisabledBecauseRemainderToPayIsZero=Disabled because remaining unpaid is zero -Amount=Amount PriceBase=Price base BillStatus=Invoice status BillStatusDraft=Draft (needs to be validated) @@ -187,7 +185,6 @@ ShowInvoiceReplace=Show replacing invoice ShowInvoiceAvoir=Show credit note ShowInvoiceDeposit=Show deposit invoice ShowPayment=Show payment -File=File AlreadyPaid=Already paid AlreadyPaidBack=Already paid back AlreadyPaidNoCreditNotesNoDeposits=Already paid (without credit notes and deposits) @@ -240,7 +237,6 @@ Reduction=Reduction ReductionShort=Reduc. Reductions=Reductions ReductionsShort=Reduc. -Discount=Discount Discounts=Discounts AddDiscount=Create discount AddRelativeDiscount=Create relative discount diff --git a/htdocs/langs/en_US/companies.lang b/htdocs/langs/en_US/companies.lang index 297556d6533..e31c347605e 100644 --- a/htdocs/langs/en_US/companies.lang +++ b/htdocs/langs/en_US/companies.lang @@ -56,7 +56,6 @@ ReportByCustomers=Report by customers ReportByQuarter=Report by rate CivilityCode=Civility code RegisteredOffice=Registered office -Name=Name Lastname=Last name Firstname=First name PostOrFunction=Post/Function diff --git a/htdocs/langs/en_US/compta.lang b/htdocs/langs/en_US/compta.lang index c7cbb6d0a9b..c71b18adc6f 100644 --- a/htdocs/langs/en_US/compta.lang +++ b/htdocs/langs/en_US/compta.lang @@ -79,7 +79,6 @@ ListPayment=List of payments ListOfPayments=List of payments ListOfCustomerPayments=List of customer payments ListOfSupplierPayments=List of supplier payments -DatePayment=Payment date DateStartPeriod=Date start period DateEndPeriod=Date end period NewVATPayment=New VAT payment @@ -200,7 +199,6 @@ ByProductsAndServices=By products and services RefExt=External ref ToCreateAPredefinedInvoice=To create a predefined invoice, create a standard invoice then, without validating it, click onto button "Convert to predefined invoice". LinkedOrder=Link to order -ReCalculate=Recalculate Mode1=Method 1 Mode2=Method 2 CalculationRuleDesc=To calculate total VAT, there is two methods:<br>Method 1 is rounding vat on each line, then summing them.<br>Method 2 is summing all vat on each line, then rounding result.<br>Final result may differs from few cents. Default mode is mode <b>%s</b>. diff --git a/htdocs/langs/en_US/ecm.lang b/htdocs/langs/en_US/ecm.lang index 96995adc8ac..d5d69daa7cf 100644 --- a/htdocs/langs/en_US/ecm.lang +++ b/htdocs/langs/en_US/ecm.lang @@ -1,5 +1,4 @@ # Dolibarr language file - Source file is en_US - ecm -MenuECM=Documents DocsMine=My documents DocsGenerated=Generated documents DocsElements=Elements documents diff --git a/htdocs/langs/en_US/errors.lang b/htdocs/langs/en_US/errors.lang index 858e76af447..f3efba10999 100755 --- a/htdocs/langs/en_US/errors.lang +++ b/htdocs/langs/en_US/errors.lang @@ -3,8 +3,6 @@ # No errors NoErrorCommitIsDone=No error, we commit # Errors -Error=Error -Errors=Errors ErrorButCommitIsDone=Errors found but we validate despite this ErrorBadEMail=EMail %s is wrong ErrorBadUrl=Url %s is wrong diff --git a/htdocs/langs/en_US/hrm.lang b/htdocs/langs/en_US/hrm.lang index 1ea8d970a3f..1d03a8ebbf9 100644 --- a/htdocs/langs/en_US/hrm.lang +++ b/htdocs/langs/en_US/hrm.lang @@ -1,5 +1,4 @@ # Dolibarr language file - en_US - hrm -CHARSET=UTF-8 # Admin HRM_EMAIL_EXTERNAL_SERVICE=Email to prevent HRM external service Establishments=Establishments diff --git a/htdocs/langs/en_US/install.lang b/htdocs/langs/en_US/install.lang index f21af4e072e..ed692c07424 100644 --- a/htdocs/langs/en_US/install.lang +++ b/htdocs/langs/en_US/install.lang @@ -52,9 +52,7 @@ ServerPortDescription=Database server port. Keep empty if unknown. DatabaseServer=Database server DatabaseName=Database name DatabasePrefix=Database prefix table -Login=Login AdminLogin=Login for Dolibarr database owner. -Password=Password PasswordAgain=Retype password a second time AdminPassword=Password for Dolibarr database owner. CreateDatabase=Create database @@ -62,14 +60,11 @@ CreateUser=Create owner DatabaseSuperUserAccess=Database server - Superuser access CheckToCreateDatabase=Check box if database does not exist and must be created.<br>In this case, you must fill the login/password for superuser account at the bottom of this page. CheckToCreateUser=Check box if database owner does not exist and must be created.<br>In this case, you must choose its login and password and also fill the login/password for the superuser account at the bottom of this page. If this box is unchecked, owner database and its passwords must exists. -Experimental=(experimental) -Deprecated=(deprecated) DatabaseRootLoginDescription=Login of the user allowed to create new databases or new users, mandatory if your database or its owner does not already exists. KeepEmptyIfNoPassword=Leave empty if user has no password (avoid this) SaveConfigurationFile=Save values ConfigurationSaving=Saving configuration file ServerConnection=Server connection -DatabaseConnection=Database connection DatabaseCreation=Database creation UserCreation=User creation CreateDatabaseObjects=Database objects creation @@ -92,7 +87,6 @@ GoToDolibarr=Go to Dolibarr GoToSetupArea=Go to Dolibarr (setup area) MigrationNotFinished=Version of your database is not completely up to date, so you'll have to run the upgrade process again. GoToUpgradePage=Go to upgrade page again -Examples=Examples WithNoSlashAtTheEnd=Without the slash "/" at the end DirectoryRecommendation=It is recommanded to use a directory outside of your directory of your web pages. LoginAlreadyExists=Already exists @@ -113,7 +107,6 @@ Upgrade=Upgrade UpgradeDesc=Use this mode if you have replaced old Dolibarr files with files from a newer version. This will upgrade your database and data. Start=Start InstallNotAllowed=Setup not allowed by <b>conf.php</b> permissions -NotAvailable=Not available YouMustCreateWithPermission=You must create file %s and set write permissions on it for the web server during install process. CorrectProblemAndReloadPage=Please fix the problem and press F5 to reload page. AlreadyDone=Already migrated diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index db1cebac45d..9e27d6cb881 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -28,6 +28,7 @@ NoTranslation=No translation NoRecordFound=No record found NoError=No error Error=Error +Errors=Errors ErrorFieldRequired=Field '%s' is required ErrorFieldFormat=Field '%s' has a bad value ErrorFileDoesNotExists=File %s does not exist @@ -671,7 +672,7 @@ NewAttribute=New attribute AttributeCode=Attribute code OptionalFieldsSetup=Extra attributes setup URLPhoto=URL of photo/logo -SetLinkToThirdParty=Link to another third party +SetLinkToAnotherThirdParty=Link to another third party CreateDraft=Create draft SetToDraft=Back to draft ClickToEdit=Click to edit diff --git a/htdocs/langs/en_US/members.lang b/htdocs/langs/en_US/members.lang index daab8dcc3e5..1844a22c227 100644 --- a/htdocs/langs/en_US/members.lang +++ b/htdocs/langs/en_US/members.lang @@ -121,7 +121,6 @@ AttributeName=Attribute name String=String Text=Text Int=Int -Date=Date DateAndTime=Date and time PublicMemberCard=Member public card MemberNotOrNoMoreExpectedToSubscribe=Member not or no more expected to subscribe diff --git a/htdocs/langs/en_US/orders.lang b/htdocs/langs/en_US/orders.lang index 513fb091918..802fb02e6ef 100644 --- a/htdocs/langs/en_US/orders.lang +++ b/htdocs/langs/en_US/orders.lang @@ -64,7 +64,6 @@ SearchOrder=Search order SearchACustomerOrder=Search a customer order SearchASupplierOrder=Search a supplier order ShipProduct=Ship product -Discount=Discount CreateOrder=Create Order RefuseOrder=Refuse order ApproveOrder=Approve order diff --git a/htdocs/langs/en_US/other.lang b/htdocs/langs/en_US/other.lang index d2faa9baae5..fe618aa58c4 100644 --- a/htdocs/langs/en_US/other.lang +++ b/htdocs/langs/en_US/other.lang @@ -10,27 +10,26 @@ BirthdayAlertOn= birthday alert active BirthdayAlertOff= birthday alert inactive Notify_FICHINTER_VALIDATE=Intervention validated Notify_FICHINTER_SENTBYMAIL=Intervention sent by mail -Notify_BILL_VALIDATE=Customer invoice validated -Notify_BILL_UNVALIDATE=Customer invoice unvalidated +Notify_ORDER_VALIDATE=Customer order validated +Notify_ORDER_SENTBYMAIL=Customer order sent by mail +Notify_ORDER_SUPPLIER_SENTBYMAIL=Supplier order sent by mail Notify_ORDER_SUPPLIER_VALIDATE=Supplier order recorded Notify_ORDER_SUPPLIER_APPROVE=Supplier order approved Notify_ORDER_SUPPLIER_REFUSE=Supplier order refused -Notify_ORDER_VALIDATE=Customer order validated Notify_PROPAL_VALIDATE=Customer proposal validated Notify_PROPAL_CLOSE_SIGNED=Customer propal closed signed Notify_PROPAL_CLOSE_REFUSED=Customer propal closed refused +Notify_PROPAL_SENTBYMAIL=Commercial proposal sent by mail Notify_WITHDRAW_TRANSMIT=Transmission withdrawal Notify_WITHDRAW_CREDIT=Credit withdrawal Notify_WITHDRAW_EMIT=Perform withdrawal -Notify_ORDER_SENTBYMAIL=Customer order sent by mail Notify_COMPANY_CREATE=Third party created Notify_COMPANY_SENTBYMAIL=Mails sent from third party card -Notify_PROPAL_SENTBYMAIL=Commercial proposal sent by mail +Notify_BILL_VALIDATE=Customer invoice validated +Notify_BILL_UNVALIDATE=Customer invoice unvalidated Notify_BILL_PAYED=Customer invoice payed Notify_BILL_CANCEL=Customer invoice canceled Notify_BILL_SENTBYMAIL=Customer invoice sent by mail -Notify_ORDER_SUPPLIER_VALIDATE=Supplier order validated -Notify_ORDER_SUPPLIER_SENTBYMAIL=Supplier order sent by mail Notify_BILL_SUPPLIER_VALIDATE=Supplier invoice validated Notify_BILL_SUPPLIER_PAYED=Supplier invoice payed Notify_BILL_SUPPLIER_SENTBYMAIL=Supplier invoice sent by mail @@ -138,7 +137,6 @@ VolumeUnitinch3=in³ VolumeUnitounce=ounce VolumeUnitlitre=litre VolumeUnitgallon=gallon -Size=size SizeUnitm=m SizeUnitdm=dm SizeUnitcm=cm diff --git a/htdocs/langs/en_US/products.lang b/htdocs/langs/en_US/products.lang index 0d3f83d49a9..f345e59891a 100644 --- a/htdocs/langs/en_US/products.lang +++ b/htdocs/langs/en_US/products.lang @@ -106,7 +106,6 @@ AddToOtherProposals=Add to other proposals AddToMyBills=Add to my bills AddToOtherBills=Add to other bills CorrectStock=Correct stock -AddPhoto=Add photo ListOfStockMovements=List of stock movements BuyingPrice=Buying price PriceForEachProduct=Products with specific prices @@ -139,7 +138,6 @@ KeywordFilter=Keyword filter CategoryFilter=Category filter ProductToAddSearch=Search product to add AddDel=Add/Delete -Quantity=Quantity NoMatchFound=No match found ProductAssociationList=List of products/services that are component of this virtual product/package ProductParentList=List of package products/services with this product as a component diff --git a/htdocs/langs/en_US/projects.lang b/htdocs/langs/en_US/projects.lang index c82d651a01d..4bb6a52af8b 100644 --- a/htdocs/langs/en_US/projects.lang +++ b/htdocs/langs/en_US/projects.lang @@ -99,7 +99,6 @@ ReOpenAProject=Open project ConfirmReOpenAProject=Are you sure you want to re-open this project ? ProjectContact=Project contacts ActionsOnProject=Events on project -OpenedProjects=Opened projects YouAreNotContactOfProject=You are not a contact of this private project DeleteATimeSpent=Delete time spent ConfirmDeleteATimeSpent=Are you sure you want to delete this time spent ? diff --git a/htdocs/langs/en_US/supplier_proposal.lang b/htdocs/langs/en_US/supplier_proposal.lang index 7bd743881c1..c90b7abeba2 100644 --- a/htdocs/langs/en_US/supplier_proposal.lang +++ b/htdocs/langs/en_US/supplier_proposal.lang @@ -11,7 +11,6 @@ DraftRequests=Draft requests LastModifiedRequests=Last %s modified price requests RequestsOpened=Open price requests SupplierProposalArea=Supplier proposals area -SupplierProposal=Supplier proposal SupplierProposalShort=Supplier proposal SupplierProposals=Supplier proposals NewAskPrice=New price request diff --git a/htdocs/langs/en_US/trips.lang b/htdocs/langs/en_US/trips.lang index c6f4f316a04..ccf89b73c79 100644 --- a/htdocs/langs/en_US/trips.lang +++ b/htdocs/langs/en_US/trips.lang @@ -53,8 +53,6 @@ AddLineMini=Add Date_DEBUT=Period date start Date_FIN=Period date end ModePaiement=Payment mode -Note=Note -Project=Project VALIDATOR=User responsible for approval VALIDOR=Approved by diff --git a/htdocs/langs/en_US/users.lang b/htdocs/langs/en_US/users.lang index 81e1d48d46c..c202fa13002 100644 --- a/htdocs/langs/en_US/users.lang +++ b/htdocs/langs/en_US/users.lang @@ -41,7 +41,6 @@ SearchAUser=Search a user LoginNotDefined=Login is not defined. NameNotDefined=Name is not defined. ListOfUsers=List of users -Administrator=Administrator SuperAdministrator=Super Administrator SuperAdministratorDesc=Global administrator AdministratorDesc=Administrator diff --git a/htdocs/langs/en_US/withdrawals.lang b/htdocs/langs/en_US/withdrawals.lang index 47b8863cf25..8248042d10c 100644 --- a/htdocs/langs/en_US/withdrawals.lang +++ b/htdocs/langs/en_US/withdrawals.lang @@ -48,7 +48,6 @@ RefusedReason=Reason for rejection RefusedInvoicing=Billing the rejection NoInvoiceRefused=Do not charge the rejection InvoiceRefused=Invoice refused (Charge the rejection to customer) -Status=Status StatusUnknown=Unknown StatusWaiting=Waiting StatusTrans=Sent diff --git a/htdocs/product/admin/product.php b/htdocs/product/admin/product.php index 9c979862933..b3d17646db5 100644 --- a/htdocs/product/admin/product.php +++ b/htdocs/product/admin/product.php @@ -51,8 +51,9 @@ $select_pricing_rules=array( ); if ($conf->global->MAIN_FEATURES_LEVEL >= 2) { - $select_pricing_rules['PRODUIT_CUSTOMER_PRICES_BY_QTY'] = $langs->trans('PriceByQuantity').' ('.$langs->trans("Experimental").')'; // TODO If this is enabled, price must be hidden when price by qty is enabled, also price for quantity must be used when adding product into order/propal/invoice - $select_pricing_rules['PRODUIT_CUSTOMER_PRICES_BY_QTY&PRODUIT_MULTIPRICES'] = $langs->trans('MultiPricesAbility') . '+' . $langs->trans('PriceByQuantity').' ('.$langs->trans("Experimental").')'; + $langs->load("admin"); + $select_pricing_rules['PRODUIT_CUSTOMER_PRICES_BY_QTY'] = $langs->trans('PriceByQuantity').' ('.$langs->trans("VersionExperimental").')'; // TODO If this is enabled, price must be hidden when price by qty is enabled, also price for quantity must be used when adding product into order/propal/invoice + $select_pricing_rules['PRODUIT_CUSTOMER_PRICES_BY_QTY&PRODUIT_MULTIPRICES'] = $langs->trans('MultiPricesAbility') . '+' . $langs->trans('PriceByQuantity').' ('.$langs->trans("VersionExperimental").')'; } // Clean param -- GitLab From 9c227d154e846a192c68902f00f12fe0cd79e08a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sun, 6 Dec 2015 13:37:48 +0100 Subject: [PATCH 109/197] Clean duplicate translation key --- htdocs/langs/en_US/admin.lang | 2 -- htdocs/langs/en_US/main.lang | 3 +++ htdocs/langs/en_US/trips.lang | 2 -- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 5bac55fddc0..2df962ee15f 100755 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -1529,8 +1529,6 @@ DetailLevel=Level (-1:top menu, 0:header menu, >0 menu and sub menu) ModifMenu=Menu change DeleteMenu=Delete menu entry ConfirmDeleteMenu=Are you sure you want to delete menu entry <b>%s</b> ? -DeleteLine=Delete line -ConfirmDeleteLine=Are you sure you want to delete this line ? FailedToInitializeMenu=Failed to initialize menu ##### Tax ##### TaxSetup=Taxes, social or fiscal taxes and dividends module setup diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index 9e27d6cb881..3593c844add 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -724,6 +724,9 @@ ViewList=List view Mandatory=Mandatory Hello=Hello Sincerely=Sincerely +DeleteLine=Delete line +ConfirmDeleteLine=Are you sure you want to delete this line ? + # Week day Monday=Monday Tuesday=Tuesday diff --git a/htdocs/langs/en_US/trips.lang b/htdocs/langs/en_US/trips.lang index ccf89b73c79..b0c2014a104 100644 --- a/htdocs/langs/en_US/trips.lang +++ b/htdocs/langs/en_US/trips.lang @@ -28,8 +28,6 @@ AnyOtherInThisListCanValidate=Person to inform for validation. TripSociete=Information company TripSalarie=Informations user TripNDF=Informations expense report -DeleteLine=Delete a line of the expense report -ConfirmDeleteLine=Are you sure you want to delete this line ? PDFStandardExpenseReports=Standard template to generate a PDF document for expense report ExpenseReportLine=Expense report line TF_OTHER=Other -- GitLab From 2aca50f7f850a2318174b2f6305575fa705df3c1 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sun, 6 Dec 2015 13:56:15 +0100 Subject: [PATCH 110/197] Removed useless string --- htdocs/langs/en_US/oauth.lang | 123 ---------------------------------- 1 file changed, 123 deletions(-) diff --git a/htdocs/langs/en_US/oauth.lang b/htdocs/langs/en_US/oauth.lang index b902ff27098..4cc08b058c6 100644 --- a/htdocs/langs/en_US/oauth.lang +++ b/htdocs/langs/en_US/oauth.lang @@ -9,129 +9,6 @@ RequestAccess=Click here to request/renew access and receive a new token to save DeleteAccess=Click here to delete token UseTheFollowingUrlAsRedirectURI=Use the following URL as the Redirect URI when creating your credential on your OAuth provider: ListOfSupportedOauthProviders=Enter here credential provided by your OAuth2 provider. Only supported OAuth2 providers are visible here. This setup may be used by other modules than need OAuth2 authentication. -OAUTH_AMAZON_NAME=Api Amazon -OAUTH_AMAZON_ID=Api Amazon Id -OAUTH_AMAZON_SECRET=Api Amazon Secret -OAUTH_BITBUCKET_NAME=Api Bitbucket -OAUTH_BITBUCKET_ID=Api Bitbucket Id -OAUTH_BITBUCKET_SECRET=Api Bitbucket Secret -OAUTH_BITLY_NAME=Api Bitly -OAUTH_BITLY_ID=Api Bitly Id -OAUTH_BITLY_SECRET=Api Bitly Secret -OAUTH_BITRIX24_NAME=Api Bitrix24 -OAUTH_BITRIX24_ID=Api Bitrix24 Id -OAUTH_BITRIX24_SECRET=Api Bitrix24 Secret -OAUTH_BOX_NAME=Api Box -OAUTH_BOX_ID=Api Box Id -OAUTH_BOX_SECRET=Api Box Secret -OAUTH_BUFFER_NAME=Api Buffer -OAUTH_BUFFER_ID=Api Buffer Id -OAUTH_BUFFER_SECRET=Api Buffer Secret -OAUTH_DAILYMOTION_NAME=Api Daylymotion -OAUTH_DAILYMOTION_ID=Api Daylymotion Id -OAUTH_DAILYMOTION_SECRET=Api Daylymotion Secret -OAUTH_DEVIANTART_NAME=Api DeviantArt -OAUTH_DEVIANTART_ID=Api DeviantArt Id -OAUTH_DEVIANTART_SECRET=Api DeviantArt Secret -OAUTH_DROPBOX_NAME=Api Dropbox -OAUTH_DROPBOX_ID=Api Dropbox Id -OAUTH_DROPBOX_SECRET=Api Dropbox Secret -OAUTH_ETSY_NAME=Api Etsy -OAUTH_ETSY_ID=Api Etsy Id -OAUTH_ETSY_SECRET=Api Etsy Secret -OAUTH_EVEONLINE_NAME=Api EveOnline -OAUTH_EVEONLINE_ID=Api EveOnline Id -OAUTH_EVEONLINE_SECRET=Api EveOnline Secret -OAUTH_FACEBOOK_NAME=Api Facebook -OAUTH_FACEBOOK_ID=Api Facebook Id -OAUTH_FACEBOOK_SECRET=Api Facebook Secret -OAUTH_FITBIT_NAME=Api FitBit -OAUTH_FITBIT_ID=Api FitBit Id -OAUTH_FITBIT_SECRET=Api FitBit Secret -OAUTH_FIVEHUNDREDPX_NAME=Api 500px -OAUTH_FIVEHUNDREDPX_ID=Api 500px Id -OAUTH_FIVEHUNDREDPX_SECRET=Api 500px Secret -OAUTH_FLICKR_NAME=Api Flickr -OAUTH_FLICKR_ID=Api Flickr Id -OAUTH_FLICKR_SECRET=Api Flickr Secret -OAUTH_FOURSQUARE_NAME=Api Foursquare -OAUTH_FOURSQUARE_ID=Api Foursquare Id -OAUTH_FOURSQUARE_SECRET=Api Foursquare Secret -OAUTH_GITHUB_NAME=Api Github -OAUTH_GITHUB_ID=Api Github Id -OAUTH_GITHUB_SECRET=Api Github Secret OAUTH_GOOGLE_NAME=Api Google OAUTH_GOOGLE_ID=Api Google Id OAUTH_GOOGLE_SECRET=Api Google Secret -OAUTH_HUBIC_NAME=Api Hubic -OAUTH_HUBIC_ID=Api Hubic Id -OAUTH_HUBIC_SECRET=Api Hubic Secret -OAUTH_INSTAGRAM_NAME=Api Instagram -OAUTH_INSTAGRAM_ID=Api Instagram Id -OAUTH_INSTAGRAM_SECRET=Api Instagram Secret -OAUTH_LINKEDIN_NAME=Api Linkedin -OAUTH_LINKEDIN_ID=Api Linkedin Id -OAUTH_LINKEDIN_SECRET=Api Linkedin Secret -OAUTH_MAILCHIMP_NAME=Api Mailchimp -OAUTH_MAILCHIMP_ID=Api Mailchimp Id -OAUTH_MAILCHIMP_SECRET=Api Mailchimp Secret -OAUTH_MICROSOFT_NAME=Api Microsoft -OAUTH_MICROSOFT_ID=Api Microsoft Id -OAUTH_MICROSOFT_SECRET=Api Microsoft Secret -OAUTH_NEST_NAME=Api Nest -OAUTH_NEST_ID=Api Nest Id -OAUTH_NEST_SECRET=Api Nest Secret -OAUTH_NETATMO_NAME=Api Netatmo -OAUTH_NETATMO_ID=Api Netatmo Id -OAUTH_NETATMO_SECRET=Api Netatmo Secret -OAUTH_PARROTFLOWERPOWER_NAME=Api Parrot Flower Power -OAUTH_PARROTFLOWERPOWER_ID=Api Parrot Flower Power Id -OAUTH_PARROTFLOWERPOWER_SECRET=Api Parrot Flower Power Secret -OAUTH_PAYPAL_NAME=Api Paypal -OAUTH_PAYPAL_ID=Api Paypal Id -OAUTH_PAYPAL_SECRET=Api Paypal Secret -OAUTH_POCKET_NAME=Api Pocket -OAUTH_POCKET_ID=Api Pocket Id -OAUTH_POCKET_SECRET=Api Pocket Secret -OAUTH_QUICKBOOKS_NAME=Api Quickbooks -OAUTH_QUICKBOOKS_ID=Api Quickbooks Id -OAUTH_QUICKBOOKS_SECRET=Api Quickbooks Secret -OAUTH_REDDIT_NAME=Api Reddit -OAUTH_REDDIT_ID=Api Reddit Id -OAUTH_REDDIT_SECRET=Api Reddit Secret -OAUTH_REDMINE_NAME=Api Redmine -OAUTH_REDMINE_ID=Api Redmine Id -OAUTH_REDMINE_SECRET=Api Redmine Secret -OAUTH_RUNKEEPER_NAME=Api Runkeeper -OAUTH_RUNKEEPER_ID=Api Runkeeper Id -OAUTH_RUNKEEPER_SECRET=Api Runkeeper Secret -OAUTH_SCOOPIT_NAME=Api Scoopit -OAUTH_SCOOPIT_ID=Api Scoopit Id -OAUTH_SCOOPIT_SECRET=Api Scoopit Secret -OAUTH_SOUNDCLOUD_NAME=Api Soundcloud -OAUTH_SOUNDCLOUD_ID=Api Soundcloud Id -OAUTH_SOUNDCLOUD_SECRET=Api Soundcloud Secret -OAUTH_SPOTIFY_NAME=Api Spotify -OAUTH_SPOTIFY_ID=Api Spotify id -OAUTH_SPOTIFY_SECRET=Api Spotify Secret -OAUTH_STRAVA_NAME=Api Strava -OAUTH_STRAVA_ID=Api Strava Id -OAUTH_STRAVA_SECRET=Api Strava Secret -OAUTH_TUMBLR_NAME=Api Tumblr -OAUTH_TUMBLR_ID=Api Tumblr Id -OAUTH_TUMBLR_SECRET=Api Tumblr Secret -OAUTH_TWITTER_NAME=Api Twitter -OAUTH_TWITTER_ID=Api Twitter Id -OAUTH_TWITTER_SECRET=Api Twitter Secret -OAUTH_USTREAM_NAME=Api Ustream -OAUTH_USTREAM_ID=Api Ustream Id -OAUTH_USTREAM_SECRET=Api Ustream Secret -OAUTH_VIMEO_NAME=Api Vimeo -OAUTH_VIMEO_ID=Api Vimeo Id -OAUTH_VIMEO_SECRET=Api Vimeo Secret -OAUTH_YAHOO_NAME=Api Yahoo -OAUTH_YAHOO_ID=Api Yahoo Id -OAUTH_YAHOO_SECRET=Api Yahoo Secret -OAUTH_YAMMER_NAME=Api Yammer -OAUTH_YAMMER_ID=Api Yammer Id -OAUTH_YAMMER_SECRET=Api Yammer Secret -- GitLab From 3df097f4bf969a611e466a7dd9972658c38f0e8d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sun, 6 Dec 2015 14:06:37 +0100 Subject: [PATCH 111/197] Update doc --- build/makepack-howto.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build/makepack-howto.txt b/build/makepack-howto.txt index 2bf516dfe88..b4a13badbf4 100644 --- a/build/makepack-howto.txt +++ b/build/makepack-howto.txt @@ -9,7 +9,7 @@ beta version of Dolibarr, step by step. - Check all files are commited. - Update version/info in ChangeLog. -To generate a changelog of a major new version x.y.0, you can do "cd ~/git/dolibarr_x.y; git log `git rev-list --boundary x.y..origin/develop | grep ^- | cut -c2- | head -n`.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e '^FIX\|NEW' | sort -u | sed 's/FIXED:/FIX:/g' | sed 's/FIXED :/FIX:/g' | sed 's/FIX :/FIX:/g' | sed 's/FIX /FIX: /g' | sed 's/NEW :/NEW:/g' | sed 's/NEW /NEW: /g' > /tmp/aaa" +To generate a changelog of a major new version x.y.0, you can do "cd ~/git/dolibarr_x.y; git log `git rev-list --boundary x.y..origin/develop | grep ^- | cut -c2- | head -n 1`.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e '^FIX\|NEW' | sort -u | sed 's/FIXED:/FIX:/g' | sed 's/FIXED :/FIX:/g' | sed 's/FIX :/FIX:/g' | sed 's/FIX /FIX: /g' | sed 's/NEW :/NEW:/g' | sed 's/NEW /NEW: /g' > /tmp/aaa" To generate a changelog of a maintenance version x.y.z, you can do "cd ~/git/dolibarr_x.y; git log x.y.z-1.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e '^FIX\|NEW' | sort -u | sed 's/FIXED:/FIX:/g' | sed 's/FIXED :/FIX:/g' | sed 's/FIX :/FIX:/g' | sed 's/FIX /FIX: /g' | sed 's/NEW :/NEW:/g' | sed 's/NEW /NEW: /g' > /tmp/aaa" - Update version number with x.y.z-w in htdocs/filefunc.inc.php - Commit all changes. @@ -31,7 +31,7 @@ complete release of Dolibarr, step by step. - Check all files are commited. - Update version/info in ChangeLog. -To generate a changelog of a major new version x.y.0, you can do "cd ~/git/dolibarr_x.y; git log `git rev-list --boundary x.y..origin/develop | grep ^- | cut -c2- | head -n`.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e '^FIX\|NEW' | sort -u | sed 's/FIXED:/FIX:/g' | sed 's/FIXED :/FIX:/g' | sed 's/FIX :/FIX:/g' | sed 's/FIX /FIX: /g' | sed 's/NEW :/NEW:/g' | sed 's/NEW /NEW: /g' > /tmp/aaa" +To generate a changelog of a major new version x.y.0, you can do "cd ~/git/dolibarr_x.y; git log `git rev-list --boundary x.y..origin/develop | grep ^- | cut -c2- | head -n 1`.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e '^FIX\|NEW' | sort -u | sed 's/FIXED:/FIX:/g' | sed 's/FIXED :/FIX:/g' | sed 's/FIX :/FIX:/g' | sed 's/FIX /FIX: /g' | sed 's/NEW :/NEW:/g' | sed 's/NEW /NEW: /g' > /tmp/aaa" To generate a changelog of a maintenance version x.y.z, you can do "cd ~/git/dolibarr_x.y; git log x.y.z-1.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e '^FIX\|NEW' | sort -u | sed 's/FIXED:/FIX:/g' | sed 's/FIXED :/FIX:/g' | sed 's/FIX :/FIX:/g' | sed 's/FIX /FIX: /g' | sed 's/NEW :/NEW:/g' | sed 's/NEW /NEW: /g' > /tmp/aaa" - Update version number with x.y.z in htdocs/filefunc.inc.php - Commit all changes. -- GitLab From d9533e90011da0f38050b18f15f65cf67b006b78 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sun, 6 Dec 2015 14:27:52 +0100 Subject: [PATCH 112/197] Prepare 3.9 --- ChangeLog | 138 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 138 insertions(+) diff --git a/ChangeLog b/ChangeLog index 09e216e93fc..e24ed014b2b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -13,11 +13,147 @@ make a Dolibarr upgrade. ***** ChangeLog for 3.9 compared to 3.8.* ***** +For users: +NEW: #3767 Allow changing multiple prices of a product at once +NEW: Add a button to purge criteria in user list +NEW: Add a filter field to restrict list of member when doing a LDAP list request. Use also this filter into ldap command line script making sync from ldap to dolibarr. +NEW: Add all assigned users and all extrafields data in new event when we createFromClone +NEW: Add hidden option to use standard position address in crabe model For electronic sending solutions +NEW: Add a refresh button on page list of direct print jobs. +NEW: Add a tab document in donation card +NEW: Add cancel button on thirdparty create page +NEW: Add chart of product statistics +NEW: Add color on categories +NEW: Add css on column of detail lines to allow module to easily manipulate fields. +NEW: Add date value filter on account records list +NEW: Added __PROJECT_NAME__ tag for customer invoice emails +NEW: Add exemple of setup for multitail to render dolibarr log files +NEW: Add experimental option PDF_ALLOW_HTML_FOR_FREE_TEXT to be able to enter pdf footer text with wysiwyg editor. +NEW: Add fields into llx_cronjobs to be able to use job table to queue one shot jobs. +NEW: Add filter on status on invoice list +NEW: Add filter on status on shipments +NEW: Add gender property managed on user card FIX: Better error messages when uploading photo of user when permission to write are not granted +NEW: Add help tooltips on fields of dictionary edit pages. Fix: visible list of tasks are for opened project only. +NEW: Add hidden option MAIN_MAILFORM_DISABLE_ENTERKEY to disable the key enter into the form to send email. +NEW: add hook in send mail +NEW: Add hooks on list of members to allow an external module to add more fields into list view. +NEW: Add hooks to allow an external module to complete list of events into calendar views. +NEW: add $ID$ into extrafields management to allow use current object id on filter for select list from table and checkbox list from table +NEW: add info page on product card +NEW: Add into about page, a sample text to use to promote new version release (visible only if version is last stable) +NEW: Add none/all selection into list of files for FTP browser module +NEW: Add opportunity amount on project card. +NEW: Add option THEME_ELDY_DISABLE_IMAGE to disable images into menu eldy. +NEW: Add parameter to add a link to use "date of invoice" in one click when fille a payment card. +NEW: Add planned workload and declared progress on project summary list on project home page (data aggregated from tasks of project) +NEW: add "productpricecard" hook and uniformize code +NEW: Add ref and label of project into export +NEW: add restler framework First step to build REST API into Dolibarr +NEW: Add status into filters of graph +NEW: Add tab document on salaries payment +NEW: Add thumb of users into thumbs stats on home page +NEW: A link to the bugtracker can be enabled in the GUI +NEW: Better look for POS. More responsive design. +NEW: Can add project search on left menu search area +NEW: Can assign a task to yourself to have it appear on timesheet +NEW: Can choose fields to show on project list +NEW: Can close a project that has draft status with no need to switch it to validate status before. +NEW: Can edit Background color for Top menu and Background color for table title line. +NEW: Can edit email template using WYSIWYG editor +NEW: Can edit list of prospect status for customers/prospects. Add a new entry into dictionary table to manage list fo status. Removed deprecated files. +NEW: Can filter on contact status in prospect list. Removed deprecated menu entry. +NEW: Can filter proposal on a tag of a product Enhance also the prototype test_arrays to include select form before table. +NEW: Can filter proposal, orders or invoices with criteria "contain at least one product with following tag" +NEW: Can select fields to show in product list. Extrafields are also supported. +NEW: Can select fields to show into the contact list. Extrafields are also supported. +NEW: Can select which field to show into list of users. Extrafields are also supported. +NEW: Can set default value of event type when creating an event (if type of event option is used). +NEW: Can upload files on leave requests. Use more standard permissions. +NEW: Can use a "|" to make a OR search on several different criterias into text filters of tables. +NEW: Can use the * as a joker characters into search boxes of lists +NEW: Clean code into salary module, debug and add indexes NEW: Can filter on user list and salary payments on user with naural search. +NEW: clone action on agenda events +NEW: Color category is visible onto the thumb of tags on thirdparty, or products cards. +NEW: conf to use next product/service ref when we clone a product/service +NEW: Contract module can be used to follow both sold and bought contracts/recurring subscriptions. +NEW: Enhance prototype, project list and proposal list with new hooks to have an external module able to add more fields. +NEW: Enhance style engine. Add option to set color of links. +NEW: Enter amount for withdraws requests +NEW: FEATURE PROPOSAL: on proposal, order or invoice creation from scratch, reload page after customer selection so its informations can be loaded +NEW: Filter "active" by default on user list. Fix label of permission of project module. +NEW: Forms are using the tab look, even in creation mode. +NEW: Free text for cheque deposit receipt can be HTML content. +NEW: Hidden option THEME_ELDY_USE_HOVER is stable enough to become officialy visible into setup. +NEW: If module salaries is on, you can set a hourly value for time consumed by users. Each time a user enter its time consumed on a project, a calculation is done to provide the cost for human services. This value appears into the "Transversal view" of project. +NEW: Import Sales representatives of third parties +NEW: Increase length of bank code to 128 char #3704 +NEW: info function for product card +NEW: Into the overview of projects, the name of thirdparty appears into combo lists of elements to link to project. +NEW: Introduce a "code" into fiels to describe vat. This will allow to suggest different vat lines with same value with ability to differentiate them. +NEW: Introduce cost price on product. +NEW: Introduce hidden option MAIN_LANDING_PAGE to decide the home page visible just after login. +NEW: Introduce hidden option MAIN_REPLACE_TRANS_xx_XX to allow simple replacement of translated string on the fly. +NEW: Introduce table llx_overwrite_trans to be able to overwrite translations by simple database edition. +NEW: Introduce use of cache for thumbs images of users +NEW: Experimental level multiprice generator based on per cent variations over base price +NEW: List of projects of a thirdparty are visible on a project tab +NEW: Merge all left menu search boxes into one. +NEW: Merge all search fields of an area page into one search box +NEW: next ref on clone doesn't need conf, it's used if mask exists +NEW: ODT generators can set meta properties of ODT file +NEW: On list of thirdparties, user can select fields to show. Make phpunit test working again localy. Add missing columns into llx_expedition. +NEW: Only arrow of current sorted field is visible into table views. This save a lot of spaces. You can click on the column title to sort. This make clickable area larger and click to sort is easier. +NEW: On page to see/edit contact of an ojbect, the status of contact is visible (for both external and internal users). +NEW: Option encrypt password into databae is set to on by default on first install. +NEW: print event type on third party card tab agenda list (only if AGENDA_USE_EVENT_TYPE = 1) +NEW: Provide an easier way to understand if an order can be shipped. +NEW: Quick searh filter works on invoice, proposal, order, intervention, contract +NEW: Rename install "etape" into english "step" +NEW: Replace category edition page on members with new select2 component. +NEW: Show photo of logged user into login top right block. NEW: If no photo is available for user, we show a generic photo depending on gender +NEW: Show photo of user into user list. A new function getImageFileNameForSize was also introduced to choose image best size according to usage to save bandwith. +NEW: Show which fields are used for search when doing a generic search from the quick search form. +NEW: Statistic graphs on products offer a filter on product type (product / service or both) +NEW: Support logging to a Sentry server +NEW: Syslog displays configuration errors +NEW: [ task 1191 ] AJAX selector for projects +NEW: [ task #3768 ] Improve product multiprices view +NEW: [ task #851 ] Add a new field: Commercial name +NEW: The clicktodial module is now able to provide link "tel:" on phone numbers. So it is also possible to use clicktodial with a client solution like the "xivo" local client. +NEW: The conditional IF into ODT templates works also on not defined var so we can show data only if defined. Close #3819 +NEW: The free text in PDF footer can now be a HTML content. So the WYSIWYG editor is on by default to edit it into module setup. +NEW: The line where mouse is over can be highlight with option THEME_ELDY_USE_HOVER (on by default) +NEW: The quick search box on left menu can also search into expense reports. +NEW: The search box and the bookmarks are now rendered by the menu manager. +NEW: The thirdparties tabs, the contacts tabs and the members tabs are now presented using a new top banner, saving space and using a same way to show address, status and navigation arrows. +NEW: Thumbs for statistics on main page are fully clicable (not only link inside the thumb) +NEW: Translate extrafield's labels +NEW: Uniformize way of working for search filters. One filter per object. +NEW: Used matching icons for Material Design theme +NEW: Use new select2 component for juridical status, country and state selection. +NEW: When creating order, proposal or invoice from thirdparty card, the project is asked during creation. A link to create project if it does not exists is also available. NEW: Uniformize form creation of proposal to add public and private notes during creation like done for order and invoice. + +For developers: +NEW: Add a new widget $form->selectArrayAjax() to use combo list with content coming from an Ajax URL. +NEW: Add doActions hook method call in contract card +NEW: Added doActions hooks to user cards +NEW: Add a new component to select categories/tags from the main edit page of product. The dedicated tab is also removed. +NEW: upgrade jQuery Component Datable (and extras) to 1.10.7 +NEW: script to build API class from existing class +NEW: Prepare database to store information per files (for example to define if an image can be used as a cover or not) +NEW: log hooks loading +NEW: Introduce property module_position so a module can decide where it appears into list of modules. +NEW: Introduce function dolGetFirstLineOfText +NEW: Introduce a method getDefaultCreateValueForField for developers to get a default value to use for a form in create mode. Implement it for public and private notes. +NEW: A module can add its entries into cron module. +NEW: Framework feature. To have a page being loaded at same scrollbar level after a click on a href link, just add the class "reposition" on this link. + WARNING: Following changes may create regression for some external modules, but were necessary to make Dolibarr better: +- Deprecated Product::setPriceExpression. Use Product::update instead - Deprecated hidden option MAIN_USE_CUSTOM_TRANSLATION has been removed. Use table llx_overwrite_trans instead. - Trigger LINECONTRACT_INSERT has been renamed into LINECONTRACT_CREATE to match common denomination. - A lot hooks used into PDF generation were not correctly implemented. We had to fix this. The result si that @@ -27,6 +163,8 @@ This is list of hooks modified: 'pdf_getlinenum', 'pdf_getlineref', 'pdf_getlineref_supplier', 'pdf_getlinevatrate', 'pdf_getlineupexcltax', 'pdf_getlineupwithtax', 'pdf_getlineqty', 'pdf_getlineqty_asked', 'pdf_getlineqty_shipped', 'pdf_getlineqty_keeptoship', 'pdf_getlineunit', 'pdf_getlineremisepercent', 'pdf_getlineprogress', 'pdf_getlinetotalexcltax', 'pdf_getlinetotalwithtax' +- Renamed Product::isservice and Product::isproduct to match PSR-2 +- Remove deprecated Product::hidden property -- GitLab From e470869afe4502abf69fa7f39c6e7979154e9649 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sun, 6 Dec 2015 14:35:36 +0100 Subject: [PATCH 113/197] Prepare 3.9 --- ChangeLog | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/ChangeLog b/ChangeLog index e24ed014b2b..d2b0d63216a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -14,41 +14,40 @@ make a Dolibarr upgrade. ***** ChangeLog for 3.9 compared to 3.8.* ***** For users: +NEW: A new and more modern look for "eldy" theme. +NEW: Introduce a new theme called "Material Design". NEW: #3767 Allow changing multiple prices of a product at once NEW: Add a button to purge criteria in user list NEW: Add a filter field to restrict list of member when doing a LDAP list request. Use also this filter into ldap command line script making sync from ldap to dolibarr. NEW: Add all assigned users and all extrafields data in new event when we createFromClone NEW: Add hidden option to use standard position address in crabe model For electronic sending solutions NEW: Add a refresh button on page list of direct print jobs. -NEW: Add a tab document in donation card +NEW: Add a tab "document" in donation card NEW: Add cancel button on thirdparty create page NEW: Add chart of product statistics NEW: Add color on categories -NEW: Add css on column of detail lines to allow module to easily manipulate fields. +NEW: Add css class and ids on column of detail lines to allow module to easily manipulate fields. NEW: Add date value filter on account records list -NEW: Added __PROJECT_NAME__ tag for customer invoice emails -NEW: Add exemple of setup for multitail to render dolibarr log files -NEW: Add experimental option PDF_ALLOW_HTML_FOR_FREE_TEXT to be able to enter pdf footer text with wysiwyg editor. +NEW: Add __PROJECT_NAME__ tag for customer invoice emails +NEW: Add option PDF_ALLOW_HTML_FOR_FREE_TEXT to be able to enter pdf footer text with wysiwyg editor. NEW: Add fields into llx_cronjobs to be able to use job table to queue one shot jobs. NEW: Add filter on status on invoice list NEW: Add filter on status on shipments NEW: Add gender property managed on user card FIX: Better error messages when uploading photo of user when permission to write are not granted -NEW: Add help tooltips on fields of dictionary edit pages. Fix: visible list of tasks are for opened project only. +NEW: Add help tooltips on fields of dictionary edit pages. NEW: Add hidden option MAIN_MAILFORM_DISABLE_ENTERKEY to disable the key enter into the form to send email. -NEW: add hook in send mail +NEW: Add hook in send mail NEW: Add hooks on list of members to allow an external module to add more fields into list view. NEW: Add hooks to allow an external module to complete list of events into calendar views. -NEW: add $ID$ into extrafields management to allow use current object id on filter for select list from table and checkbox list from table -NEW: add info page on product card +NEW: Add $ID$ into extrafields management to allow use of current object id on filter for select list from table and checkbox list from table +NEW: Add info page on product card NEW: Add into about page, a sample text to use to promote new version release (visible only if version is last stable) NEW: Add none/all selection into list of files for FTP browser module NEW: Add opportunity amount on project card. -NEW: Add option THEME_ELDY_DISABLE_IMAGE to disable images into menu eldy. NEW: Add parameter to add a link to use "date of invoice" in one click when fille a payment card. NEW: Add planned workload and declared progress on project summary list on project home page (data aggregated from tasks of project) -NEW: add "productpricecard" hook and uniformize code +NEW: Add "productpricecard" hook and uniformize code NEW: Add ref and label of project into export -NEW: add restler framework First step to build REST API into Dolibarr NEW: Add status into filters of graph NEW: Add tab document on salaries payment NEW: Add thumb of users into thumbs stats on home page @@ -116,13 +115,9 @@ NEW: Show which fields are used for search when doing a generic search from the NEW: Statistic graphs on products offer a filter on product type (product / service or both) NEW: Support logging to a Sentry server NEW: Syslog displays configuration errors -NEW: [ task 1191 ] AJAX selector for projects -NEW: [ task #3768 ] Improve product multiprices view -NEW: [ task #851 ] Add a new field: Commercial name NEW: The clicktodial module is now able to provide link "tel:" on phone numbers. So it is also possible to use clicktodial with a client solution like the "xivo" local client. NEW: The conditional IF into ODT templates works also on not defined var so we can show data only if defined. Close #3819 NEW: The free text in PDF footer can now be a HTML content. So the WYSIWYG editor is on by default to edit it into module setup. -NEW: The line where mouse is over can be highlight with option THEME_ELDY_USE_HOVER (on by default) NEW: The quick search box on left menu can also search into expense reports. NEW: The search box and the bookmarks are now rendered by the menu manager. NEW: The thirdparties tabs, the contacts tabs and the members tabs are now presented using a new top banner, saving space and using a same way to show address, status and navigation arrows. @@ -147,6 +142,8 @@ NEW: Introduce function dolGetFirstLineOfText NEW: Introduce a method getDefaultCreateValueForField for developers to get a default value to use for a form in create mode. Implement it for public and private notes. NEW: A module can add its entries into cron module. NEW: Framework feature. To have a page being loaded at same scrollbar level after a click on a href link, just add the class "reposition" on this link. +NEW: Add exemple of setup for multitail to render dolibarr log files +NEW: Add restler framework. First step to build REST API into Dolibarr. WARNING: -- GitLab From 984068c136addf80da93678f1b8568413290ba4b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sun, 6 Dec 2015 19:17:39 +0100 Subject: [PATCH 114/197] Fix length of password too low (password was truncated making them inoperent) --- htdocs/install/mysql/migration/3.8.0-3.9.0.sql | 2 ++ htdocs/install/mysql/tables/llx_user.sql | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/htdocs/install/mysql/migration/3.8.0-3.9.0.sql b/htdocs/install/mysql/migration/3.8.0-3.9.0.sql index 767a7dd0e7a..d29b87ddf61 100755 --- a/htdocs/install/mysql/migration/3.8.0-3.9.0.sql +++ b/htdocs/install/mysql/migration/3.8.0-3.9.0.sql @@ -29,6 +29,8 @@ ALTER TABLE llx_don ADD COLUMN fk_country integer NOT NULL DEFAULT 0 after count UPDATE llx_commande_fourn set billed=1 where statut = 8; UPDATE llx_commande_fourn set statut=5 where statut = 8 and billed=1; +ALTER TABLE llx_user MODIFY COLUMN pass varchar(128); +ALTER TABLE llx_user MODIFY COLUMN pass_temp varchar(128); ALTER TABLE llx_askpricesupplier RENAME TO llx_supplier_proposal; ALTER TABLE llx_askpricesupplierdet RENAME TO llx_supplier_proposaldet; diff --git a/htdocs/install/mysql/tables/llx_user.sql b/htdocs/install/mysql/tables/llx_user.sql index 7263803feb6..e334ae1f802 100644 --- a/htdocs/install/mysql/tables/llx_user.sql +++ b/htdocs/install/mysql/tables/llx_user.sql @@ -34,9 +34,9 @@ create table llx_user fk_user_creat integer, fk_user_modif integer, login varchar(24) NOT NULL, - pass varchar(32), + pass varchar(128), pass_crypted varchar(128), - pass_temp varchar(32), -- temporary password when asked for forget password + pass_temp varchar(128), -- temporary password when asked for forget password api_key varchar(128), -- key to use REST API by this user gender varchar(10), civility varchar(6), -- GitLab From a209d1864984e26b39cbfd13f2634d513ef466ec Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sun, 6 Dec 2015 19:51:28 +0100 Subject: [PATCH 115/197] FIX Can use formated float number on old expense report module. --- htdocs/compta/deplacement/card.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/compta/deplacement/card.php b/htdocs/compta/deplacement/card.php index 3676a87567d..939c50e68d9 100644 --- a/htdocs/compta/deplacement/card.php +++ b/htdocs/compta/deplacement/card.php @@ -115,7 +115,7 @@ else if ($action == 'add' && $user->rights->deplacement->creer) $error=0; $object->date = dol_mktime(12, 0, 0, GETPOST('remonth','int'), GETPOST('reday','int'), GETPOST('reyear','int')); - $object->km = GETPOST('km','int'); + $object->km = price2num(GETPOST('km','alpha'), 'MU'); // Not 'int', it may be a formated amount $object->type = GETPOST('type','alpha'); $object->socid = GETPOST('socid','int'); $object->fk_user = GETPOST('fk_user','int'); @@ -174,7 +174,7 @@ else if ($action == 'update' && $user->rights->deplacement->creer) $result = $object->fetch($id); $object->date = dol_mktime(12, 0, 0, GETPOST('remonth','int'), GETPOST('reday','int'), GETPOST('reyear','int')); - $object->km = GETPOST('km','int'); + $object->km = price2num(GETPOST('km','alpha'), 'MU'); // Not 'int', it may be a formated amount $object->type = GETPOST('type','alpha'); $object->socid = GETPOST('socid','int'); $object->fk_user = GETPOST('fk_user','int'); -- GitLab From 7e31c8f38f221b3a8bb78b319467f0cd5adae57b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laurent=20L=C3=A9onard?= <laurent@openthink.be> Date: Mon, 7 Dec 2015 01:27:08 +0100 Subject: [PATCH 116/197] Fix decimals in payments of supplier invoices --- htdocs/fourn/class/paiementfourn.class.php | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/htdocs/fourn/class/paiementfourn.class.php b/htdocs/fourn/class/paiementfourn.class.php index 98876ab2519..5326bbde85e 100644 --- a/htdocs/fourn/class/paiementfourn.class.php +++ b/htdocs/fourn/class/paiementfourn.class.php @@ -128,10 +128,9 @@ class PaiementFourn extends Paiement $this->total = 0; foreach ($this->amounts as $key => $value) { - $value = price2num($value); - $val = round($value, 2); - $this->amounts[$key] = $val; - $this->total += $val; + $newvalue = price2num($value, 'MT'); + $this->amounts[$key] = $newvalue; + $this->total += $newvalue; } $this->total = price2num($this->total); -- GitLab From 05234390f287b484f366b12edfbcfe99ccdd60e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laurent=20L=C3=A9onard?= <laurent@openthink.be> Date: Mon, 7 Dec 2015 02:02:03 +0100 Subject: [PATCH 117/197] Fix uniqueness of objects reference --- htdocs/core/class/commonobject.class.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index bba17f50d11..659ff4d3c5a 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -364,6 +364,7 @@ abstract class CommonObject dol_print_error(get_class()."::isExistingObject ".$error, LOG_ERR); return -1; } + if ($ref || $ref_ext) $sql.= " AND entity = ".$conf->entity; dol_syslog(get_class()."::isExistingObject", LOG_DEBUG); $resql = $db->query($sql); -- GitLab From 1dc58545351476d5587024f97887135c1a462562 Mon Sep 17 00:00:00 2001 From: Ion Agorria <ion@agorria.com> Date: Mon, 7 Dec 2015 03:59:03 +0100 Subject: [PATCH 118/197] Fix date handling for hours/mins in some pages --- htdocs/comm/propal.php | 8 ++++---- htdocs/commande/card.php | 8 ++++---- htdocs/fourn/commande/card.php | 11 ++++------- htdocs/fourn/facture/card.php | 11 +++++++---- 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/htdocs/comm/propal.php b/htdocs/comm/propal.php index 9ab3a1967f1..e039342dd38 100644 --- a/htdocs/comm/propal.php +++ b/htdocs/comm/propal.php @@ -862,8 +862,8 @@ if (empty($reshook)) $fournprice = price2num(GETPOST('fournprice' . $predef) ? GETPOST('fournprice' . $predef) : ''); $buyingprice = price2num(GETPOST('buying_price' . $predef) != '' ? GETPOST('buying_price' . $predef) : ''); // If buying_price is '0', we muste keep this value - $date_start = dol_mktime(0, 0, 0, GETPOST('date_start' . $predef . 'month'), GETPOST('date_start' . $predef . 'day'), GETPOST('date_start' . $predef . 'year')); - $date_end = dol_mktime(0, 0, 0, GETPOST('date_end' . $predef . 'month'), GETPOST('date_end' . $predef . 'day'), GETPOST('date_end' . $predef . 'year')); + $date_start = dol_mktime(GETPOST('date_start' . $predef . 'hour'), GETPOST('date_start' . $predef . 'min'), GETPOST('date_start' . $predef . 'sec'), GETPOST('date_start' . $predef . 'month'), GETPOST('date_start' . $predef . 'day'), GETPOST('date_start' . $predef . 'year')); + $date_end = dol_mktime(GETPOST('date_end' . $predef . 'hour'), GETPOST('date_end' . $predef . 'min'), GETPOST('date_end' . $predef . 'sec'), GETPOST('date_end' . $predef . 'month'), GETPOST('date_end' . $predef . 'day'), GETPOST('date_end' . $predef . 'year')); // Local Taxes $localtax1_tx = get_localtax($tva_tx, 1, $object->thirdparty); @@ -957,8 +957,8 @@ if (empty($reshook)) $fournprice = price2num(GETPOST('fournprice') ? GETPOST('fournprice') : ''); $buyingprice = price2num(GETPOST('buying_price') != '' ? GETPOST('buying_price') : ''); // If buying_price is '0', we muste keep this value - $date_start = dol_mktime(0, 0, 0, GETPOST('date_startmonth'), GETPOST('date_startday'), GETPOST('date_startyear')); - $date_end = dol_mktime(0, 0, 0, GETPOST('date_endmonth'), GETPOST('date_endday'), GETPOST('date_endyear')); + $date_start = dol_mktime(GETPOST('date_starthour'), GETPOST('date_startmin'), GETPOST('date_startsec'), GETPOST('date_startmonth'), GETPOST('date_startday'), GETPOST('date_startyear')); + $date_end = dol_mktime(GETPOST('date_endhour'), GETPOST('date_endmin'), GETPOST('date_endsec'), GETPOST('date_endmonth'), GETPOST('date_endday'), GETPOST('date_endyear')); // Extrafields $extrafieldsline = new ExtraFields($db); diff --git a/htdocs/commande/card.php b/htdocs/commande/card.php index 7da702dea23..8352a20797c 100644 --- a/htdocs/commande/card.php +++ b/htdocs/commande/card.php @@ -626,8 +626,8 @@ if (empty($reshook)) if (! $error && ($qty >= 0) && (! empty($product_desc) || ! empty($idprod))) { // Clean parameters - $date_start=dol_mktime(GETPOST('date_start'.$predef.'hour'), GETPOST('date_start'.$predef.'min'), 0, GETPOST('date_start'.$predef.'month'), GETPOST('date_start'.$predef.'day'), GETPOST('date_start'.$predef.'year')); - $date_end=dol_mktime(GETPOST('date_start'.$predef.'hour'), GETPOST('date_start'.$predef.'min'), 0, GETPOST('date_end'.$predef.'month'), GETPOST('date_end'.$predef.'day'), GETPOST('date_end'.$predef.'year')); + $date_start=dol_mktime(GETPOST('date_start'.$predef.'hour'), GETPOST('date_start'.$predef.'min'), GETPOST('date_start'.$predef.'sec'), GETPOST('date_start'.$predef.'month'), GETPOST('date_start'.$predef.'day'), GETPOST('date_start'.$predef.'year')); + $date_end=dol_mktime(GETPOST('date_end'.$predef.'hour'), GETPOST('date_end'.$predef.'min'), GETPOST('date_end'.$predef.'sec'), GETPOST('date_end'.$predef.'month'), GETPOST('date_end'.$predef.'day'), GETPOST('date_end'.$predef.'year')); $price_base_type = (GETPOST('price_base_type', 'alpha')?GETPOST('price_base_type', 'alpha'):'HT'); // Ecrase $pu par celui du produit @@ -833,8 +833,8 @@ if (empty($reshook)) // Clean parameters $date_start=''; $date_end=''; - $date_start=dol_mktime(GETPOST('date_starthour'), GETPOST('date_startmin'), 0, GETPOST('date_startmonth'), GETPOST('date_startday'), GETPOST('date_startyear')); - $date_end=dol_mktime(GETPOST('date_starthour'), GETPOST('date_startmin'), 0, GETPOST('date_endmonth'), GETPOST('date_endday'), GETPOST('date_endyear')); + $date_start=dol_mktime(GETPOST('date_starthour'), GETPOST('date_startmin'), GETPOST('date_startsec'), GETPOST('date_startmonth'), GETPOST('date_startday'), GETPOST('date_startyear')); + $date_end=dol_mktime(GETPOST('date_endhour'), GETPOST('date_endmin'), GETPOST('date_endsec'), GETPOST('date_endmonth'), GETPOST('date_endday'), GETPOST('date_endyear')); $description=dol_htmlcleanlastbr(GETPOST('product_desc')); $pu_ht=GETPOST('price_ht'); $vat_rate=(GETPOST('tva_tx')?GETPOST('tva_tx'):0); diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php index baa11ed9c07..7f8aca2fa55 100644 --- a/htdocs/fourn/commande/card.php +++ b/htdocs/fourn/commande/card.php @@ -95,9 +95,6 @@ $extrafields = new ExtraFields($db); // fetch optionals attributes and labels $extralabels=$extrafields->fetch_name_optionals_label($object->table_element); -//Date prefix -$date_pf = ''; - // Load object if ($id > 0 || ! empty($ref)) { @@ -263,8 +260,8 @@ if (empty($reshook)) // Set if we used free entry or predefined product $predef=''; $product_desc=(GETPOST('dp_desc')?GETPOST('dp_desc'):''); - $date_start=dol_mktime(GETPOST('date_start'.$date_pf.'hour'), GETPOST('date_start'.$date_pf.'min'), 0, GETPOST('date_start'.$date_pf.'month'), GETPOST('date_start'.$date_pf.'day'), GETPOST('date_start'.$date_pf.'year')); - $date_end=dol_mktime(GETPOST('date_end'.$date_pf.'hour'), GETPOST('date_end'.$date_pf.'min'), 0, GETPOST('date_end'.$date_pf.'month'), GETPOST('date_end'.$date_pf.'day'), GETPOST('date_end'.$date_pf.'year')); + $date_start=dol_mktime(GETPOST('date_start'.$predef.'hour'), GETPOST('date_start'.$predef.'min'), GETPOST('date_start' . $predef . 'sec'), GETPOST('date_start'.$predef.'month'), GETPOST('date_start'.$predef.'day'), GETPOST('date_start'.$predef.'year')); + $date_end=dol_mktime(GETPOST('date_end'.$predef.'hour'), GETPOST('date_end'.$predef.'min'), GETPOST('date_end' . $predef . 'sec'), GETPOST('date_end'.$predef.'month'), GETPOST('date_end'.$predef.'day'), GETPOST('date_end'.$predef.'year')); if (GETPOST('prod_entry_mode') == 'free') { $idprod=0; @@ -506,8 +503,8 @@ if (empty($reshook)) if (!$res) dol_print_error($db); } - $date_start=dol_mktime(GETPOST('date_start'.$date_pf.'hour'), GETPOST('date_start'.$date_pf.'min'), 0, GETPOST('date_start'.$date_pf.'month'), GETPOST('date_start'.$date_pf.'day'), GETPOST('date_start'.$date_pf.'year')); - $date_end=dol_mktime(GETPOST('date_end'.$date_pf.'hour'), GETPOST('date_end'.$date_pf.'min'), 0, GETPOST('date_end'.$date_pf.'month'), GETPOST('date_end'.$date_pf.'day'), GETPOST('date_end'.$date_pf.'year')); + $date_start=dol_mktime(GETPOST('date_starthour'), GETPOST('date_startmin'), GETPOST('date_startsec'), GETPOST('date_startmonth'), GETPOST('date_startday'), GETPOST('date_startyear')); + $date_end=dol_mktime(GETPOST('date_endhour'), GETPOST('date_endmin'), GETPOST('date_endsec'), GETPOST('date_endmonth'), GETPOST('date_endday'), GETPOST('date_endyear')); $localtax1_tx=get_localtax($tva_tx,1,$mysoc,$object->thirdparty); $localtax2_tx=get_localtax($tva_tx,2,$mysoc,$object->thirdparty); diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index 82cdbe03b64..1c25e863683 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -575,8 +575,8 @@ if (empty($reshook)) $type = $_POST["type"]?$_POST["type"]:0; } - $date_start=dol_mktime(GETPOST('date_start'.$date_pf.'hour'), GETPOST('date_start'.$date_pf.'min'), 0, GETPOST('date_start'.$date_pf.'month'), GETPOST('date_start'.$date_pf.'day'), GETPOST('date_start'.$date_pf.'year')); - $date_end=dol_mktime(GETPOST('date_end'.$date_pf.'hour'), GETPOST('date_end'.$date_pf.'min'), 0, GETPOST('date_end'.$date_pf.'month'), GETPOST('date_end'.$date_pf.'day'), GETPOST('date_end'.$date_pf.'year')); + $date_start=dol_mktime(GETPOST('date_starthour'), GETPOST('date_startmin'), GETPOST('date_startsec'), GETPOST('date_startmonth'), GETPOST('date_startday'), GETPOST('date_startyear')); + $date_end=dol_mktime(GETPOST('date_endhour'), GETPOST('date_endmin'), GETPOST('date_endsec'), GETPOST('date_endmonth'), GETPOST('date_endday'), GETPOST('date_endyear')); $localtax1_tx= get_localtax($_POST['tauxtva'], 1, $mysoc,$object->thirdparty); $localtax2_tx= get_localtax($_POST['tauxtva'], 2, $mysoc,$object->thirdparty); @@ -640,6 +640,9 @@ if (empty($reshook)) $qty = GETPOST('qty'.$predef); $remise_percent=GETPOST('remise_percent'.$predef); + $date_start=dol_mktime(GETPOST('date_start'.$predef.'hour'), GETPOST('date_start'.$predef.'min'), GETPOST('date_start' . $predef . 'sec'), GETPOST('date_start'.$predef.'month'), GETPOST('date_start'.$predef.'day'), GETPOST('date_start'.$predef.'year')); + $date_end=dol_mktime(GETPOST('date_end'.$predef.'hour'), GETPOST('date_end'.$predef.'min'), GETPOST('date_end' . $predef . 'sec'), GETPOST('date_end'.$predef.'month'), GETPOST('date_end'.$predef.'day'), GETPOST('date_end'.$predef.'year')); + // Extrafields $extrafieldsline = new ExtraFields($db); $extralabelsline = $extrafieldsline->fetch_name_optionals_label($object->table_element_line); @@ -710,7 +713,7 @@ if (empty($reshook)) $price_base_type = 'HT'; // TODO Save the product supplier ref into database into field ref_supplier (must rename field ref into ref_supplier first) - $result=$object->addline($desc, $productsupplier->fourn_pu, $tvatx, $localtax1_tx, $localtax2_tx, $qty, $idprod, $remise_percent, '', '', 0, $npr, $price_base_type, $type, -1, 0, $array_options, $productsupplier->fk_unit); + $result=$object->addline($desc, $productsupplier->fourn_pu, $tvatx, $localtax1_tx, $localtax2_tx, $qty, $idprod, $remise_percent, $date_start, $date_end, 0, $npr, $price_base_type, $type, -1, 0, $array_options, $productsupplier->fk_unit); } if ($idprod == -2 || $idprod == 0) { @@ -757,7 +760,7 @@ if (empty($reshook)) $price_base_type = 'HT'; } - $result=$object->addline($product_desc, $ht, $tva_tx, $localtax1_tx, $localtax2_tx, $qty, 0, $remise_percent, $datestart, $dateend, 0, $npr, $price_base_type, $type, -1, 0, $array_options, $fk_unit); + $result=$object->addline($product_desc, $ht, $tva_tx, $localtax1_tx, $localtax2_tx, $qty, 0, $remise_percent, $date_start, $date_end, 0, $npr, $price_base_type, $type, -1, 0, $array_options, $fk_unit); } //print "xx".$tva_tx; exit; -- GitLab From 771f7183d4697040467e663481680548fc67fd0c Mon Sep 17 00:00:00 2001 From: BENKE Charlie <charles.fr@benke.fr> Date: Mon, 7 Dec 2015 10:56:37 +0100 Subject: [PATCH 119/197] db close must do AFTER llxFooter() call --- htdocs/admin/fichinter.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/admin/fichinter.php b/htdocs/admin/fichinter.php index 103ba462607..50d2bf3cead 100644 --- a/htdocs/admin/fichinter.php +++ b/htdocs/admin/fichinter.php @@ -576,6 +576,6 @@ print '</table>'; print '<br>'; +llxFooter(); $db->close(); -llxFooter(); -- GitLab From c60178c95f77914f6b1f71ae9eea960460aac8a1 Mon Sep 17 00:00:00 2001 From: BENKE Charlie <charles.fr@benke.fr> Date: Mon, 7 Dec 2015 11:00:26 +0100 Subject: [PATCH 120/197] db close must do AFTER llxFooter() call --- htdocs/admin/supplier_proposal.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/htdocs/admin/supplier_proposal.php b/htdocs/admin/supplier_proposal.php index 64122636a08..c10592487da 100644 --- a/htdocs/admin/supplier_proposal.php +++ b/htdocs/admin/supplier_proposal.php @@ -603,7 +603,6 @@ print " <td>".$langs->trans("Value")."</td>\n"; print "</tr>\n"; print "<tr ".$bc[false].">\n <td width=\"140\">".$langs->trans("PathDirectory")."</td>\n <td>".$conf->supplier_proposal->dir_output."</td>\n</tr>\n"; print "</table>\n<br>"; - +llxFooter(); $db->close(); -llxFooter(); -- GitLab From 63fd4cd6c0223d2321041bb4832f177439180827 Mon Sep 17 00:00:00 2001 From: BENKE Charlie <charles.fr@benke.fr> Date: Mon, 7 Dec 2015 11:01:48 +0100 Subject: [PATCH 121/197] db close must do AFTER llxFooter() call --- htdocs/bookmarks/list.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/bookmarks/list.php b/htdocs/bookmarks/list.php index 425ae0079b6..66b94896424 100644 --- a/htdocs/bookmarks/list.php +++ b/htdocs/bookmarks/list.php @@ -218,7 +218,7 @@ if ($user->rights->bookmark->creer) print '</div>'; - +llxFooter(); $db->close(); -llxFooter(); + -- GitLab From bcf6c1243c5d4caa0d00737739008f70f6191f2c Mon Sep 17 00:00:00 2001 From: BENKE Charlie <charles.fr@benke.fr> Date: Mon, 7 Dec 2015 11:03:27 +0100 Subject: [PATCH 122/197] db close must do AFTER llxFooter() call --- htdocs/admin/livraison.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/admin/livraison.php b/htdocs/admin/livraison.php index ec00cc7233c..f9cee8a75f3 100644 --- a/htdocs/admin/livraison.php +++ b/htdocs/admin/livraison.php @@ -521,6 +521,6 @@ print '</form>'; print '</table>'; +llxFooter(); $db->close(); -llxFooter(); -- GitLab From 9d0f096e475b69789cd6f4370efa5d727fc48b4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= <frederic.france@free.fr> Date: Mon, 7 Dec 2015 11:46:47 +0100 Subject: [PATCH 123/197] Update paypal.lib.php --- htdocs/paypal/lib/paypal.lib.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/htdocs/paypal/lib/paypal.lib.php b/htdocs/paypal/lib/paypal.lib.php index 824f312a9af..045863c2c4f 100644 --- a/htdocs/paypal/lib/paypal.lib.php +++ b/htdocs/paypal/lib/paypal.lib.php @@ -702,8 +702,10 @@ function hash_call($methodName,$nvpStr) exit;*/ curl_setopt($ch, CURLOPT_URL, $API_Endpoint); curl_setopt($ch, CURLOPT_VERBOSE, 1); - //curl_setopt($ch, CURLOPT_SSLVERSION, 3); // Force SSLv3 + //curl_setopt($ch, CURLOPT_SSLVERSION, 3); // unsecure, no more accepted curl_setopt($ch, CURLOPT_SSLVERSION, 1); // Force TLSv1 + // After 14 january 2016 paypal will accept tls v1.2 and no more tls v1 + //curl_setopt($ch, CURLOPT_SSLVERSION, 6); // Force TLSv1.2 //turning off the server and peer verification(TrustManager Concept). curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); -- GitLab From 5dfa9ba3699057e48cbb53b4eb4ab556bdcc3cef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Doursenaud?= <rdoursenaud@gpcsolutions.fr> Date: Mon, 7 Dec 2015 13:39:45 +0100 Subject: [PATCH 124/197] Updated TCPDF to 6.2.12 --- COPYRIGHT | 2 +- composer.json | 2 +- composer.lock | 21 +- .../includes/tecnickcom/tcpdf/CHANGELOG.TXT | 21 + htdocs/includes/tecnickcom/tcpdf/README.TXT | 8 +- .../includes/tecnickcom/tcpdf/composer.json | 4 +- .../tcpdf/include/barcodes/qrcode.php | 1 + .../tecnickcom/tcpdf/include/tcpdf_fonts.php | 274 +-- .../tecnickcom/tcpdf/include/tcpdf_images.php | 11 +- .../tecnickcom/tcpdf/include/tcpdf_static.php | 1718 +++++++++-------- htdocs/includes/tecnickcom/tcpdf/tcpdf.php | 37 +- .../tecnickcom/tcpdf/tcpdf_parser.php | 7 +- 12 files changed, 1140 insertions(+), 966 deletions(-) diff --git a/COPYRIGHT b/COPYRIGHT index 9b848744a69..a0cf842b885 100644 --- a/COPYRIGHT +++ b/COPYRIGHT @@ -28,7 +28,7 @@ php-iban 1.4.7 LGPL-3+ Yes PHPoAuthLib 0.8.2 MIT License Yes Library to provide oauth1 and oauth2 to different service PHPPrintIPP 1.3 GPL-2+ Yes Library to send print IPP requests Restler 3.0 LGPL-3+ Yes Library to develop REST Web services -TCPDF 6.2.6 LGPL-3+ Yes PDF generation +TCPDF 6.2.12 LGPL-3+ Yes PDF generation TCPDI 1.0.0 LGPL-3+ / Apache 2.0 Yes FPDI replacement JS libraries: diff --git a/composer.json b/composer.json index 9061efb3bfe..afd53001f71 100644 --- a/composer.json +++ b/composer.json @@ -21,7 +21,7 @@ "mobiledetect/mobiledetectlib": "2.8.3", "phpoffice/phpexcel": "1.8.1", "restler/framework": "^3.0", - "tecnickcom/tcpdf": "6.2.6", + "tecnickcom/tcpdf": "6.2.12", "raven/raven": "^0.12.0", "firephp/firephp-core": "^0.4.0" }, diff --git a/composer.lock b/composer.lock index 99bf8d6fa10..fc8df3719ac 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,8 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "335eb7bd5c2eb116fd2da80b4f48e857", + "hash": "e4ff9778aef8c35c239457e96b32ee5c", + "content-hash": "e98d327da132b265127ad23d79a49578", "packages": [ { "name": "ccampbell/chromephp", @@ -132,12 +133,12 @@ "source": { "type": "git", "url": "https://github.com/mike42/escpos-php.git", - "reference": "0564ff94de45564221eca99c4cd5ab24492894c2" + "reference": "63648d03d47b81e8f6c1020ac92f051a3f3b5793" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mike42/escpos-php/zipball/0564ff94de45564221eca99c4cd5ab24492894c2", - "reference": "0564ff94de45564221eca99c4cd5ab24492894c2", + "url": "https://api.github.com/repos/mike42/escpos-php/zipball/63648d03d47b81e8f6c1020ac92f051a3f3b5793", + "reference": "63648d03d47b81e8f6c1020ac92f051a3f3b5793", "shasum": "" }, "require": { @@ -182,7 +183,7 @@ "print", "receipt" ], - "time": "2015-11-02 10:50:46" + "time": "2015-12-04 10:23:55" }, { "name": "mobiledetect/mobiledetectlib", @@ -423,16 +424,16 @@ }, { "name": "tecnickcom/tcpdf", - "version": "6.2.6", + "version": "6.2.12", "source": { "type": "git", "url": "https://github.com/tecnickcom/TCPDF.git", - "reference": "a2e8f5b505a7a14a4ed960313c4baf699fd1f4bb" + "reference": "2f732eaa91b5665274689b1d40b285a7bacdc37f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tecnickcom/TCPDF/zipball/a2e8f5b505a7a14a4ed960313c4baf699fd1f4bb", - "reference": "a2e8f5b505a7a14a4ed960313c4baf699fd1f4bb", + "url": "https://api.github.com/repos/tecnickcom/TCPDF/zipball/2f732eaa91b5665274689b1d40b285a7bacdc37f", + "reference": "2f732eaa91b5665274689b1d40b285a7bacdc37f", "shasum": "" }, "require": { @@ -482,7 +483,7 @@ "pdf417", "qrcode" ], - "time": "2015-01-28 18:51:40" + "time": "2015-09-12 10:08:34" } ], "packages-dev": [], diff --git a/htdocs/includes/tecnickcom/tcpdf/CHANGELOG.TXT b/htdocs/includes/tecnickcom/tcpdf/CHANGELOG.TXT index 2cfb85ae6ab..31b587b2842 100644 --- a/htdocs/includes/tecnickcom/tcpdf/CHANGELOG.TXT +++ b/htdocs/includes/tecnickcom/tcpdf/CHANGELOG.TXT @@ -1,3 +1,24 @@ +6.2.12 (2015-09-12) + - fix composer package name to tecnickcom/tcpdf + +6.2.11 (2015-08-02) + - Bug #1070 "PNG regression in 6.2.9 (they appear as their alpha channel)" was fixed. + - Bug #1069 "Encoded SRC URLs in <img> tags don't work anymore" was fixed. + +6.2.10 (2015-07-28) + - Minor mod to PNG parsing. + - Make dependency on mcrypt optional. + +6.2.8 (2015-04-29) + - Removed unwanted file. + +6.2.7 (2015-04-28) + - Merged PR 17: Avoid warning when iterating a non-array variable. + - Merged PR 16: Improve MuliCell param definition. + - Improved column check (PR 15). + - Merged PR 11: Use stream_is_local instead of limit to file://. + - Merged PR 10: ImageMagick link on README.txt. + 6.2.6 (2015-01-28) - Bug #1008 "UTC offset sing breaks PDF/A-1b compliance" was fixed. diff --git a/htdocs/includes/tecnickcom/tcpdf/README.TXT b/htdocs/includes/tecnickcom/tcpdf/README.TXT index d051393caa2..2061fa7a16b 100644 --- a/htdocs/includes/tecnickcom/tcpdf/README.TXT +++ b/htdocs/includes/tecnickcom/tcpdf/README.TXT @@ -4,12 +4,13 @@ TCPDF - README I WISH TO IMPROVE AND EXPAND TCPDF BUT I NEED YOUR SUPPORT. PLEASE MAKE A DONATION: http://sourceforge.net/donate/index.php?group_id=128076 +or via PayPal at paypal@tecnick.com ------------------------------------------------------------ Name: TCPDF -Version: 6.2.6 -Release date: 2015-01-28 +Version: 6.2.12 +Release date: 2015-09-12 Author: Nicola Asuni Copyright (c) 2002-2015: @@ -20,6 +21,7 @@ Copyright (c) 2002-2015: URLs: http://www.tcpdf.org http://www.sourceforge.net/projects/tcpdf + https://github.com/tecnickcom/TCPDF Description: TCPDF is a PHP class for generating PDF files on-the-fly without requiring external extensions. @@ -34,7 +36,7 @@ Main Features: * font subsetting; * methods to publish some XHTML + CSS code, Javascript and Forms; * images, graphic (geometric figures) and transformation methods; - * supports JPEG, PNG and SVG images natively, all images supported by GD (GD, GD2, GD2PART, GIF, JPEG, PNG, BMP, XBM, XPM) and all images supported via ImagMagick (http: www.imagemagick.org/www/formats.html) + * supports JPEG, PNG and SVG images natively, all images supported by GD (GD, GD2, GD2PART, GIF, JPEG, PNG, BMP, XBM, XPM) and all images supported via ImagMagick (http://www.imagemagick.org/script/formats.php) * 1D and 2D barcodes: CODE 39, ANSI MH10.8M-1983, USD-3, 3 of 9, CODE 93, USS-93, Standard 2 of 5, Interleaved 2 of 5, CODE 128 A/B/C, 2 and 5 Digits UPC-Based Extension, EAN 8, EAN 13, UPC-A, UPC-E, MSI, POSTNET, PLANET, RMS4CC (Royal Mail 4-state Customer Code), CBC (Customer Bar Code), KIX (Klant index - Customer index), Intelligent Mail Barcode, Onecode, USPS-B-3200, CODABAR, CODE 11, PHARMACODE, PHARMACODE TWO-TRACKS, Datamatrix, QR-Code, PDF417; * JPEG and PNG ICC profiles, Grayscale, RGB, CMYK, Spot Colors and Transparencies; * automatic page header and footer management; diff --git a/htdocs/includes/tecnickcom/tcpdf/composer.json b/htdocs/includes/tecnickcom/tcpdf/composer.json index ba0520d19da..beab50943a6 100644 --- a/htdocs/includes/tecnickcom/tcpdf/composer.json +++ b/htdocs/includes/tecnickcom/tcpdf/composer.json @@ -1,6 +1,6 @@ { - "name": "tecnick.com/tcpdf", - "version": "6.2.6", + "name": "tecnickcom/tcpdf", + "version": "6.2.12", "homepage": "http://www.tcpdf.org/", "type": "library", "description": "TCPDF is a PHP class for generating PDF documents and barcodes.", diff --git a/htdocs/includes/tecnickcom/tcpdf/include/barcodes/qrcode.php b/htdocs/includes/tecnickcom/tcpdf/include/barcodes/qrcode.php index 3127fe68739..7ef2759fd6f 100644 --- a/htdocs/includes/tecnickcom/tcpdf/include/barcodes/qrcode.php +++ b/htdocs/includes/tecnickcom/tcpdf/include/barcodes/qrcode.php @@ -720,6 +720,7 @@ class QRcode { protected function encodeMask($mask) { $spec = array(0, 0, 0, 0, 0); $this->datacode = $this->getByteStream($this->items); + if (is_null($this->datacode)) { return NULL; } diff --git a/htdocs/includes/tecnickcom/tcpdf/include/tcpdf_fonts.php b/htdocs/includes/tecnickcom/tcpdf/include/tcpdf_fonts.php index 0a19f330149..70ca89393d9 100644 --- a/htdocs/includes/tecnickcom/tcpdf/include/tcpdf_fonts.php +++ b/htdocs/includes/tecnickcom/tcpdf/include/tcpdf_fonts.php @@ -154,7 +154,7 @@ class TCPDF_FONTS { $enc_target = TCPDF_FONT_DATA::$encmap[$enc]; $last = 0; for ($i = 32; $i <= 255; ++$i) { - if ($enc_target != $enc_ref[$i]) { + if ($enc_target[$i] != $enc_ref[$i]) { if ($i != ($last + 1)) { $fmetric['diff'] .= $i.' '; } @@ -1490,6 +1490,171 @@ class TCPDF_FONTS { return '/W ['.$w.' ]'; } + + + + /** + * Update the CIDToGIDMap string with a new value. + * @param $map (string) CIDToGIDMap. + * @param $cid (int) CID value. + * @param $gid (int) GID value. + * @return (string) CIDToGIDMap. + * @author Nicola Asuni + * @since 5.9.123 (2011-09-29) + * @public static + */ + public static function updateCIDtoGIDmap($map, $cid, $gid) { + if (($cid >= 0) AND ($cid <= 0xFFFF) AND ($gid >= 0)) { + if ($gid > 0xFFFF) { + $gid -= 0x10000; + } + $map[($cid * 2)] = chr($gid >> 8); + $map[(($cid * 2) + 1)] = chr($gid & 0xFF); + } + return $map; + } + + /** + * Return fonts path + * @return string + * @public static + */ + public static function _getfontpath() { + if (!defined('K_PATH_FONTS') AND is_dir($fdir = realpath(dirname(__FILE__).'/../fonts'))) { + if (substr($fdir, -1) != '/') { + $fdir .= '/'; + } + define('K_PATH_FONTS', $fdir); + } + return defined('K_PATH_FONTS') ? K_PATH_FONTS : ''; + } + + + + /** + * Return font full path + * @param $file (string) Font file name. + * @param $fontdir (string) Font directory (set to false fto search on default directories) + * @return string Font full path or empty string + * @author Nicola Asuni + * @since 6.0.025 + * @public static + */ + public static function getFontFullPath($file, $fontdir=false) { + $fontfile = ''; + // search files on various directories + if (($fontdir !== false) AND @file_exists($fontdir.$file)) { + $fontfile = $fontdir.$file; + } elseif (@file_exists(self::_getfontpath().$file)) { + $fontfile = self::_getfontpath().$file; + } elseif (@file_exists($file)) { + $fontfile = $file; + } + return $fontfile; + } + + + + + /** + * Get a reference font size. + * @param $size (string) String containing font size value. + * @param $refsize (float) Reference font size in points. + * @return float value in points + * @public static + */ + public static function getFontRefSize($size, $refsize=12) { + switch ($size) { + case 'xx-small': { + $size = ($refsize - 4); + break; + } + case 'x-small': { + $size = ($refsize - 3); + break; + } + case 'small': { + $size = ($refsize - 2); + break; + } + case 'medium': { + $size = $refsize; + break; + } + case 'large': { + $size = ($refsize + 2); + break; + } + case 'x-large': { + $size = ($refsize + 4); + break; + } + case 'xx-large': { + $size = ($refsize + 6); + break; + } + case 'smaller': { + $size = ($refsize - 3); + break; + } + case 'larger': { + $size = ($refsize + 3); + break; + } + } + return $size; + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +// ==================================================================================================================== +// REIMPLEMENTED +// ==================================================================================================================== + + + + + + + + /** * Returns the unicode caracter specified by the value * @param $c (int) UTF-8 value @@ -1663,64 +1828,6 @@ class TCPDF_FONTS { return $string; } - /** - * Update the CIDToGIDMap string with a new value. - * @param $map (string) CIDToGIDMap. - * @param $cid (int) CID value. - * @param $gid (int) GID value. - * @return (string) CIDToGIDMap. - * @author Nicola Asuni - * @since 5.9.123 (2011-09-29) - * @public static - */ - public static function updateCIDtoGIDmap($map, $cid, $gid) { - if (($cid >= 0) AND ($cid <= 0xFFFF) AND ($gid >= 0)) { - if ($gid > 0xFFFF) { - $gid -= 0x10000; - } - $map[($cid * 2)] = chr($gid >> 8); - $map[(($cid * 2) + 1)] = chr($gid & 0xFF); - } - return $map; - } - - /** - * Return fonts path - * @return string - * @public static - */ - public static function _getfontpath() { - if (!defined('K_PATH_FONTS') AND is_dir($fdir = realpath(dirname(__FILE__).'/../fonts'))) { - if (substr($fdir, -1) != '/') { - $fdir .= '/'; - } - define('K_PATH_FONTS', $fdir); - } - return defined('K_PATH_FONTS') ? K_PATH_FONTS : ''; - } - - /** - * Return font full path - * @param $file (string) Font file name. - * @param $fontdir (string) Font directory (set to false fto search on default directories) - * @return string Font full path or empty string - * @author Nicola Asuni - * @since 6.0.025 - * @public static - */ - public static function getFontFullPath($file, $fontdir=false) { - $fontfile = ''; - // search files on various directories - if (($fontdir !== false) AND @file_exists($fontdir.$file)) { - $fontfile = $fontdir.$file; - } elseif (@file_exists(self::_getfontpath().$file)) { - $fontfile = self::_getfontpath().$file; - } elseif (@file_exists($file)) { - $fontfile = $file; - } - return $fontfile; - } - /** * Converts UTF-8 characters array to array of Latin1 characters array<br> * @param $unicode (array) array containing UTF-8 unicode values @@ -2535,55 +2642,6 @@ class TCPDF_FONTS { return $ordarray; } - /** - * Get a reference font size. - * @param $size (string) String containing font size value. - * @param $refsize (float) Reference font size in points. - * @return float value in points - * @public static - */ - public static function getFontRefSize($size, $refsize=12) { - switch ($size) { - case 'xx-small': { - $size = ($refsize - 4); - break; - } - case 'x-small': { - $size = ($refsize - 3); - break; - } - case 'small': { - $size = ($refsize - 2); - break; - } - case 'medium': { - $size = $refsize; - break; - } - case 'large': { - $size = ($refsize + 2); - break; - } - case 'x-large': { - $size = ($refsize + 4); - break; - } - case 'xx-large': { - $size = ($refsize + 6); - break; - } - case 'smaller': { - $size = ($refsize - 3); - break; - } - case 'larger': { - $size = ($refsize + 3); - break; - } - } - return $size; - } - } // END OF TCPDF_FONTS CLASS //============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/include/tcpdf_images.php b/htdocs/includes/tecnickcom/tcpdf/include/tcpdf_images.php index c7ae9bd9677..c2e3c36f930 100644 --- a/htdocs/includes/tecnickcom/tcpdf/include/tcpdf_images.php +++ b/htdocs/includes/tecnickcom/tcpdf/include/tcpdf_images.php @@ -160,6 +160,14 @@ class TCPDF_IMAGES { * @public static */ public static function _parsejpeg($file) { + // check if is a local file + if (!@file_exists($file)) { + // try to encode spaces on filename + $tfile = str_replace(' ', '%20', $file); + if (@file_exists($tfile)) { + $file = $tfile; + } + } $a = getimagesize($file); if (empty($a)) { //Missing or incorrect image file @@ -289,8 +297,8 @@ class TCPDF_IMAGES { $trns = ''; $data = ''; $icc = false; + $n = TCPDF_STATIC::_freadint($f); do { - $n = TCPDF_STATIC::_freadint($f); $type = fread($f, 4); if ($type == 'PLTE') { // read palette @@ -338,6 +346,7 @@ class TCPDF_IMAGES { } else { TCPDF_STATIC::rfread($f, $n + 4); } + $n = TCPDF_STATIC::_freadint($f); } while ($n); if (($colspace == 'Indexed') AND (empty($pal))) { // Missing palette diff --git a/htdocs/includes/tecnickcom/tcpdf/include/tcpdf_static.php b/htdocs/includes/tecnickcom/tcpdf/include/tcpdf_static.php index e947832d24a..f6d4d2b9eb4 100644 --- a/htdocs/includes/tecnickcom/tcpdf/include/tcpdf_static.php +++ b/htdocs/includes/tecnickcom/tcpdf/include/tcpdf_static.php @@ -1,9 +1,9 @@ <?php //============================================================+ // File name : tcpdf_static.php -// Version : 1.1.2 +// Version : 1.1.3 // Begin : 2002-08-03 -// Last Update : 2015-01-24 +// Last Update : 2015-04-28 // Author : Nicola Asuni - Tecnick.com LTD - www.tecnick.com - info@tecnick.com // License : GNU-LGPL v3 (http://www.gnu.org/copyleft/lesser.html) // ------------------------------------------------------------------- @@ -55,7 +55,7 @@ class TCPDF_STATIC { * Current TCPDF version. * @private static */ - private static $tcpdf_version = '6.2.6'; + private static $tcpdf_version = '6.2.12'; /** * String alias for total number of pages. @@ -105,369 +105,13 @@ class TCPDF_STATIC { * @public static */ public static $pageboxes = array('MediaBox', 'CropBox', 'BleedBox', 'TrimBox', 'ArtBox'); - + + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + /** - * Array of page formats - * measures are calculated in this way: (inches * 72) or (millimeters * 72 / 25.4) - * @public static - */ - public static $page_formats = array( - // ISO 216 A Series + 2 SIS 014711 extensions - 'A0' => array( 2383.937, 3370.394), // = ( 841 x 1189 ) mm = ( 33.11 x 46.81 ) in - 'A1' => array( 1683.780, 2383.937), // = ( 594 x 841 ) mm = ( 23.39 x 33.11 ) in - 'A2' => array( 1190.551, 1683.780), // = ( 420 x 594 ) mm = ( 16.54 x 23.39 ) in - 'A3' => array( 841.890, 1190.551), // = ( 297 x 420 ) mm = ( 11.69 x 16.54 ) in - 'A4' => array( 595.276, 841.890), // = ( 210 x 297 ) mm = ( 8.27 x 11.69 ) in - 'A5' => array( 419.528, 595.276), // = ( 148 x 210 ) mm = ( 5.83 x 8.27 ) in - 'A6' => array( 297.638, 419.528), // = ( 105 x 148 ) mm = ( 4.13 x 5.83 ) in - 'A7' => array( 209.764, 297.638), // = ( 74 x 105 ) mm = ( 2.91 x 4.13 ) in - 'A8' => array( 147.402, 209.764), // = ( 52 x 74 ) mm = ( 2.05 x 2.91 ) in - 'A9' => array( 104.882, 147.402), // = ( 37 x 52 ) mm = ( 1.46 x 2.05 ) in - 'A10' => array( 73.701, 104.882), // = ( 26 x 37 ) mm = ( 1.02 x 1.46 ) in - 'A11' => array( 51.024, 73.701), // = ( 18 x 26 ) mm = ( 0.71 x 1.02 ) in - 'A12' => array( 36.850, 51.024), // = ( 13 x 18 ) mm = ( 0.51 x 0.71 ) in - // ISO 216 B Series + 2 SIS 014711 extensions - 'B0' => array( 2834.646, 4008.189), // = ( 1000 x 1414 ) mm = ( 39.37 x 55.67 ) in - 'B1' => array( 2004.094, 2834.646), // = ( 707 x 1000 ) mm = ( 27.83 x 39.37 ) in - 'B2' => array( 1417.323, 2004.094), // = ( 500 x 707 ) mm = ( 19.69 x 27.83 ) in - 'B3' => array( 1000.630, 1417.323), // = ( 353 x 500 ) mm = ( 13.90 x 19.69 ) in - 'B4' => array( 708.661, 1000.630), // = ( 250 x 353 ) mm = ( 9.84 x 13.90 ) in - 'B5' => array( 498.898, 708.661), // = ( 176 x 250 ) mm = ( 6.93 x 9.84 ) in - 'B6' => array( 354.331, 498.898), // = ( 125 x 176 ) mm = ( 4.92 x 6.93 ) in - 'B7' => array( 249.449, 354.331), // = ( 88 x 125 ) mm = ( 3.46 x 4.92 ) in - 'B8' => array( 175.748, 249.449), // = ( 62 x 88 ) mm = ( 2.44 x 3.46 ) in - 'B9' => array( 124.724, 175.748), // = ( 44 x 62 ) mm = ( 1.73 x 2.44 ) in - 'B10' => array( 87.874, 124.724), // = ( 31 x 44 ) mm = ( 1.22 x 1.73 ) in - 'B11' => array( 62.362, 87.874), // = ( 22 x 31 ) mm = ( 0.87 x 1.22 ) in - 'B12' => array( 42.520, 62.362), // = ( 15 x 22 ) mm = ( 0.59 x 0.87 ) in - // ISO 216 C Series + 2 SIS 014711 extensions + 5 EXTENSION - 'C0' => array( 2599.370, 3676.535), // = ( 917 x 1297 ) mm = ( 36.10 x 51.06 ) in - 'C1' => array( 1836.850, 2599.370), // = ( 648 x 917 ) mm = ( 25.51 x 36.10 ) in - 'C2' => array( 1298.268, 1836.850), // = ( 458 x 648 ) mm = ( 18.03 x 25.51 ) in - 'C3' => array( 918.425, 1298.268), // = ( 324 x 458 ) mm = ( 12.76 x 18.03 ) in - 'C4' => array( 649.134, 918.425), // = ( 229 x 324 ) mm = ( 9.02 x 12.76 ) in - 'C5' => array( 459.213, 649.134), // = ( 162 x 229 ) mm = ( 6.38 x 9.02 ) in - 'C6' => array( 323.150, 459.213), // = ( 114 x 162 ) mm = ( 4.49 x 6.38 ) in - 'C7' => array( 229.606, 323.150), // = ( 81 x 114 ) mm = ( 3.19 x 4.49 ) in - 'C8' => array( 161.575, 229.606), // = ( 57 x 81 ) mm = ( 2.24 x 3.19 ) in - 'C9' => array( 113.386, 161.575), // = ( 40 x 57 ) mm = ( 1.57 x 2.24 ) in - 'C10' => array( 79.370, 113.386), // = ( 28 x 40 ) mm = ( 1.10 x 1.57 ) in - 'C11' => array( 56.693, 79.370), // = ( 20 x 28 ) mm = ( 0.79 x 1.10 ) in - 'C12' => array( 39.685, 56.693), // = ( 14 x 20 ) mm = ( 0.55 x 0.79 ) in - 'C76' => array( 229.606, 459.213), // = ( 81 x 162 ) mm = ( 3.19 x 6.38 ) in - 'DL' => array( 311.811, 623.622), // = ( 110 x 220 ) mm = ( 4.33 x 8.66 ) in - 'DLE' => array( 323.150, 637.795), // = ( 114 x 225 ) mm = ( 4.49 x 8.86 ) in - 'DLX' => array( 340.158, 666.142), // = ( 120 x 235 ) mm = ( 4.72 x 9.25 ) in - 'DLP' => array( 280.630, 595.276), // = ( 99 x 210 ) mm = ( 3.90 x 8.27 ) in (1/3 A4) - // SIS 014711 E Series - 'E0' => array( 2491.654, 3517.795), // = ( 879 x 1241 ) mm = ( 34.61 x 48.86 ) in - 'E1' => array( 1757.480, 2491.654), // = ( 620 x 879 ) mm = ( 24.41 x 34.61 ) in - 'E2' => array( 1247.244, 1757.480), // = ( 440 x 620 ) mm = ( 17.32 x 24.41 ) in - 'E3' => array( 878.740, 1247.244), // = ( 310 x 440 ) mm = ( 12.20 x 17.32 ) in - 'E4' => array( 623.622, 878.740), // = ( 220 x 310 ) mm = ( 8.66 x 12.20 ) in - 'E5' => array( 439.370, 623.622), // = ( 155 x 220 ) mm = ( 6.10 x 8.66 ) in - 'E6' => array( 311.811, 439.370), // = ( 110 x 155 ) mm = ( 4.33 x 6.10 ) in - 'E7' => array( 221.102, 311.811), // = ( 78 x 110 ) mm = ( 3.07 x 4.33 ) in - 'E8' => array( 155.906, 221.102), // = ( 55 x 78 ) mm = ( 2.17 x 3.07 ) in - 'E9' => array( 110.551, 155.906), // = ( 39 x 55 ) mm = ( 1.54 x 2.17 ) in - 'E10' => array( 76.535, 110.551), // = ( 27 x 39 ) mm = ( 1.06 x 1.54 ) in - 'E11' => array( 53.858, 76.535), // = ( 19 x 27 ) mm = ( 0.75 x 1.06 ) in - 'E12' => array( 36.850, 53.858), // = ( 13 x 19 ) mm = ( 0.51 x 0.75 ) in - // SIS 014711 G Series - 'G0' => array( 2715.591, 3838.110), // = ( 958 x 1354 ) mm = ( 37.72 x 53.31 ) in - 'G1' => array( 1919.055, 2715.591), // = ( 677 x 958 ) mm = ( 26.65 x 37.72 ) in - 'G2' => array( 1357.795, 1919.055), // = ( 479 x 677 ) mm = ( 18.86 x 26.65 ) in - 'G3' => array( 958.110, 1357.795), // = ( 338 x 479 ) mm = ( 13.31 x 18.86 ) in - 'G4' => array( 677.480, 958.110), // = ( 239 x 338 ) mm = ( 9.41 x 13.31 ) in - 'G5' => array( 479.055, 677.480), // = ( 169 x 239 ) mm = ( 6.65 x 9.41 ) in - 'G6' => array( 337.323, 479.055), // = ( 119 x 169 ) mm = ( 4.69 x 6.65 ) in - 'G7' => array( 238.110, 337.323), // = ( 84 x 119 ) mm = ( 3.31 x 4.69 ) in - 'G8' => array( 167.244, 238.110), // = ( 59 x 84 ) mm = ( 2.32 x 3.31 ) in - 'G9' => array( 119.055, 167.244), // = ( 42 x 59 ) mm = ( 1.65 x 2.32 ) in - 'G10' => array( 82.205, 119.055), // = ( 29 x 42 ) mm = ( 1.14 x 1.65 ) in - 'G11' => array( 59.528, 82.205), // = ( 21 x 29 ) mm = ( 0.83 x 1.14 ) in - 'G12' => array( 39.685, 59.528), // = ( 14 x 21 ) mm = ( 0.55 x 0.83 ) in - // ISO Press - 'RA0' => array( 2437.795, 3458.268), // = ( 860 x 1220 ) mm = ( 33.86 x 48.03 ) in - 'RA1' => array( 1729.134, 2437.795), // = ( 610 x 860 ) mm = ( 24.02 x 33.86 ) in - 'RA2' => array( 1218.898, 1729.134), // = ( 430 x 610 ) mm = ( 16.93 x 24.02 ) in - 'RA3' => array( 864.567, 1218.898), // = ( 305 x 430 ) mm = ( 12.01 x 16.93 ) in - 'RA4' => array( 609.449, 864.567), // = ( 215 x 305 ) mm = ( 8.46 x 12.01 ) in - 'SRA0' => array( 2551.181, 3628.346), // = ( 900 x 1280 ) mm = ( 35.43 x 50.39 ) in - 'SRA1' => array( 1814.173, 2551.181), // = ( 640 x 900 ) mm = ( 25.20 x 35.43 ) in - 'SRA2' => array( 1275.591, 1814.173), // = ( 450 x 640 ) mm = ( 17.72 x 25.20 ) in - 'SRA3' => array( 907.087, 1275.591), // = ( 320 x 450 ) mm = ( 12.60 x 17.72 ) in - 'SRA4' => array( 637.795, 907.087), // = ( 225 x 320 ) mm = ( 8.86 x 12.60 ) in - // German DIN 476 - '4A0' => array( 4767.874, 6740.787), // = ( 1682 x 2378 ) mm = ( 66.22 x 93.62 ) in - '2A0' => array( 3370.394, 4767.874), // = ( 1189 x 1682 ) mm = ( 46.81 x 66.22 ) in - // Variations on the ISO Standard - 'A2_EXTRA' => array( 1261.417, 1754.646), // = ( 445 x 619 ) mm = ( 17.52 x 24.37 ) in - 'A3+' => array( 932.598, 1369.134), // = ( 329 x 483 ) mm = ( 12.95 x 19.02 ) in - 'A3_EXTRA' => array( 912.756, 1261.417), // = ( 322 x 445 ) mm = ( 12.68 x 17.52 ) in - 'A3_SUPER' => array( 864.567, 1440.000), // = ( 305 x 508 ) mm = ( 12.01 x 20.00 ) in - 'SUPER_A3' => array( 864.567, 1380.472), // = ( 305 x 487 ) mm = ( 12.01 x 19.17 ) in - 'A4_EXTRA' => array( 666.142, 912.756), // = ( 235 x 322 ) mm = ( 9.25 x 12.68 ) in - 'A4_SUPER' => array( 649.134, 912.756), // = ( 229 x 322 ) mm = ( 9.02 x 12.68 ) in - 'SUPER_A4' => array( 643.465, 1009.134), // = ( 227 x 356 ) mm = ( 8.94 x 14.02 ) in - 'A4_LONG' => array( 595.276, 986.457), // = ( 210 x 348 ) mm = ( 8.27 x 13.70 ) in - 'F4' => array( 595.276, 935.433), // = ( 210 x 330 ) mm = ( 8.27 x 12.99 ) in - 'SO_B5_EXTRA' => array( 572.598, 782.362), // = ( 202 x 276 ) mm = ( 7.95 x 10.87 ) in - 'A5_EXTRA' => array( 490.394, 666.142), // = ( 173 x 235 ) mm = ( 6.81 x 9.25 ) in - // ANSI Series - 'ANSI_E' => array( 2448.000, 3168.000), // = ( 864 x 1118 ) mm = ( 34.00 x 44.00 ) in - 'ANSI_D' => array( 1584.000, 2448.000), // = ( 559 x 864 ) mm = ( 22.00 x 34.00 ) in - 'ANSI_C' => array( 1224.000, 1584.000), // = ( 432 x 559 ) mm = ( 17.00 x 22.00 ) in - 'ANSI_B' => array( 792.000, 1224.000), // = ( 279 x 432 ) mm = ( 11.00 x 17.00 ) in - 'ANSI_A' => array( 612.000, 792.000), // = ( 216 x 279 ) mm = ( 8.50 x 11.00 ) in - // Traditional 'Loose' North American Paper Sizes - 'USLEDGER' => array( 1224.000, 792.000), // = ( 432 x 279 ) mm = ( 17.00 x 11.00 ) in - 'LEDGER' => array( 1224.000, 792.000), // = ( 432 x 279 ) mm = ( 17.00 x 11.00 ) in - 'ORGANIZERK' => array( 792.000, 1224.000), // = ( 279 x 432 ) mm = ( 11.00 x 17.00 ) in - 'BIBLE' => array( 792.000, 1224.000), // = ( 279 x 432 ) mm = ( 11.00 x 17.00 ) in - 'USTABLOID' => array( 792.000, 1224.000), // = ( 279 x 432 ) mm = ( 11.00 x 17.00 ) in - 'TABLOID' => array( 792.000, 1224.000), // = ( 279 x 432 ) mm = ( 11.00 x 17.00 ) in - 'ORGANIZERM' => array( 612.000, 792.000), // = ( 216 x 279 ) mm = ( 8.50 x 11.00 ) in - 'USLETTER' => array( 612.000, 792.000), // = ( 216 x 279 ) mm = ( 8.50 x 11.00 ) in - 'LETTER' => array( 612.000, 792.000), // = ( 216 x 279 ) mm = ( 8.50 x 11.00 ) in - 'USLEGAL' => array( 612.000, 1008.000), // = ( 216 x 356 ) mm = ( 8.50 x 14.00 ) in - 'LEGAL' => array( 612.000, 1008.000), // = ( 216 x 356 ) mm = ( 8.50 x 14.00 ) in - 'GOVERNMENTLETTER' => array( 576.000, 756.000), // = ( 203 x 267 ) mm = ( 8.00 x 10.50 ) in - 'GLETTER' => array( 576.000, 756.000), // = ( 203 x 267 ) mm = ( 8.00 x 10.50 ) in - 'JUNIORLEGAL' => array( 576.000, 360.000), // = ( 203 x 127 ) mm = ( 8.00 x 5.00 ) in - 'JLEGAL' => array( 576.000, 360.000), // = ( 203 x 127 ) mm = ( 8.00 x 5.00 ) in - // Other North American Paper Sizes - 'QUADDEMY' => array( 2520.000, 3240.000), // = ( 889 x 1143 ) mm = ( 35.00 x 45.00 ) in - 'SUPER_B' => array( 936.000, 1368.000), // = ( 330 x 483 ) mm = ( 13.00 x 19.00 ) in - 'QUARTO' => array( 648.000, 792.000), // = ( 229 x 279 ) mm = ( 9.00 x 11.00 ) in - 'GOVERNMENTLEGAL' => array( 612.000, 936.000), // = ( 216 x 330 ) mm = ( 8.50 x 13.00 ) in - 'FOLIO' => array( 612.000, 936.000), // = ( 216 x 330 ) mm = ( 8.50 x 13.00 ) in - 'MONARCH' => array( 522.000, 756.000), // = ( 184 x 267 ) mm = ( 7.25 x 10.50 ) in - 'EXECUTIVE' => array( 522.000, 756.000), // = ( 184 x 267 ) mm = ( 7.25 x 10.50 ) in - 'ORGANIZERL' => array( 396.000, 612.000), // = ( 140 x 216 ) mm = ( 5.50 x 8.50 ) in - 'STATEMENT' => array( 396.000, 612.000), // = ( 140 x 216 ) mm = ( 5.50 x 8.50 ) in - 'MEMO' => array( 396.000, 612.000), // = ( 140 x 216 ) mm = ( 5.50 x 8.50 ) in - 'FOOLSCAP' => array( 595.440, 936.000), // = ( 210 x 330 ) mm = ( 8.27 x 13.00 ) in - 'COMPACT' => array( 306.000, 486.000), // = ( 108 x 171 ) mm = ( 4.25 x 6.75 ) in - 'ORGANIZERJ' => array( 198.000, 360.000), // = ( 70 x 127 ) mm = ( 2.75 x 5.00 ) in - // Canadian standard CAN 2-9.60M - 'P1' => array( 1587.402, 2437.795), // = ( 560 x 860 ) mm = ( 22.05 x 33.86 ) in - 'P2' => array( 1218.898, 1587.402), // = ( 430 x 560 ) mm = ( 16.93 x 22.05 ) in - 'P3' => array( 793.701, 1218.898), // = ( 280 x 430 ) mm = ( 11.02 x 16.93 ) in - 'P4' => array( 609.449, 793.701), // = ( 215 x 280 ) mm = ( 8.46 x 11.02 ) in - 'P5' => array( 396.850, 609.449), // = ( 140 x 215 ) mm = ( 5.51 x 8.46 ) in - 'P6' => array( 303.307, 396.850), // = ( 107 x 140 ) mm = ( 4.21 x 5.51 ) in - // North American Architectural Sizes - 'ARCH_E' => array( 2592.000, 3456.000), // = ( 914 x 1219 ) mm = ( 36.00 x 48.00 ) in - 'ARCH_E1' => array( 2160.000, 3024.000), // = ( 762 x 1067 ) mm = ( 30.00 x 42.00 ) in - 'ARCH_D' => array( 1728.000, 2592.000), // = ( 610 x 914 ) mm = ( 24.00 x 36.00 ) in - 'BROADSHEET' => array( 1296.000, 1728.000), // = ( 457 x 610 ) mm = ( 18.00 x 24.00 ) in - 'ARCH_C' => array( 1296.000, 1728.000), // = ( 457 x 610 ) mm = ( 18.00 x 24.00 ) in - 'ARCH_B' => array( 864.000, 1296.000), // = ( 305 x 457 ) mm = ( 12.00 x 18.00 ) in - 'ARCH_A' => array( 648.000, 864.000), // = ( 229 x 305 ) mm = ( 9.00 x 12.00 ) in - // -- North American Envelope Sizes - // - Announcement Envelopes - 'ANNENV_A2' => array( 314.640, 414.000), // = ( 111 x 146 ) mm = ( 4.37 x 5.75 ) in - 'ANNENV_A6' => array( 342.000, 468.000), // = ( 121 x 165 ) mm = ( 4.75 x 6.50 ) in - 'ANNENV_A7' => array( 378.000, 522.000), // = ( 133 x 184 ) mm = ( 5.25 x 7.25 ) in - 'ANNENV_A8' => array( 396.000, 584.640), // = ( 140 x 206 ) mm = ( 5.50 x 8.12 ) in - 'ANNENV_A10' => array( 450.000, 692.640), // = ( 159 x 244 ) mm = ( 6.25 x 9.62 ) in - 'ANNENV_SLIM' => array( 278.640, 638.640), // = ( 98 x 225 ) mm = ( 3.87 x 8.87 ) in - // - Commercial Envelopes - 'COMMENV_N6_1/4' => array( 252.000, 432.000), // = ( 89 x 152 ) mm = ( 3.50 x 6.00 ) in - 'COMMENV_N6_3/4' => array( 260.640, 468.000), // = ( 92 x 165 ) mm = ( 3.62 x 6.50 ) in - 'COMMENV_N8' => array( 278.640, 540.000), // = ( 98 x 191 ) mm = ( 3.87 x 7.50 ) in - 'COMMENV_N9' => array( 278.640, 638.640), // = ( 98 x 225 ) mm = ( 3.87 x 8.87 ) in - 'COMMENV_N10' => array( 296.640, 684.000), // = ( 105 x 241 ) mm = ( 4.12 x 9.50 ) in - 'COMMENV_N11' => array( 324.000, 746.640), // = ( 114 x 263 ) mm = ( 4.50 x 10.37 ) in - 'COMMENV_N12' => array( 342.000, 792.000), // = ( 121 x 279 ) mm = ( 4.75 x 11.00 ) in - 'COMMENV_N14' => array( 360.000, 828.000), // = ( 127 x 292 ) mm = ( 5.00 x 11.50 ) in - // - Catalogue Envelopes - 'CATENV_N1' => array( 432.000, 648.000), // = ( 152 x 229 ) mm = ( 6.00 x 9.00 ) in - 'CATENV_N1_3/4' => array( 468.000, 684.000), // = ( 165 x 241 ) mm = ( 6.50 x 9.50 ) in - 'CATENV_N2' => array( 468.000, 720.000), // = ( 165 x 254 ) mm = ( 6.50 x 10.00 ) in - 'CATENV_N3' => array( 504.000, 720.000), // = ( 178 x 254 ) mm = ( 7.00 x 10.00 ) in - 'CATENV_N6' => array( 540.000, 756.000), // = ( 191 x 267 ) mm = ( 7.50 x 10.50 ) in - 'CATENV_N7' => array( 576.000, 792.000), // = ( 203 x 279 ) mm = ( 8.00 x 11.00 ) in - 'CATENV_N8' => array( 594.000, 810.000), // = ( 210 x 286 ) mm = ( 8.25 x 11.25 ) in - 'CATENV_N9_1/2' => array( 612.000, 756.000), // = ( 216 x 267 ) mm = ( 8.50 x 10.50 ) in - 'CATENV_N9_3/4' => array( 630.000, 810.000), // = ( 222 x 286 ) mm = ( 8.75 x 11.25 ) in - 'CATENV_N10_1/2' => array( 648.000, 864.000), // = ( 229 x 305 ) mm = ( 9.00 x 12.00 ) in - 'CATENV_N12_1/2' => array( 684.000, 900.000), // = ( 241 x 318 ) mm = ( 9.50 x 12.50 ) in - 'CATENV_N13_1/2' => array( 720.000, 936.000), // = ( 254 x 330 ) mm = ( 10.00 x 13.00 ) in - 'CATENV_N14_1/4' => array( 810.000, 882.000), // = ( 286 x 311 ) mm = ( 11.25 x 12.25 ) in - 'CATENV_N14_1/2' => array( 828.000, 1044.000), // = ( 292 x 368 ) mm = ( 11.50 x 14.50 ) in - // Japanese (JIS P 0138-61) Standard B-Series - 'JIS_B0' => array( 2919.685, 4127.244), // = ( 1030 x 1456 ) mm = ( 40.55 x 57.32 ) in - 'JIS_B1' => array( 2063.622, 2919.685), // = ( 728 x 1030 ) mm = ( 28.66 x 40.55 ) in - 'JIS_B2' => array( 1459.843, 2063.622), // = ( 515 x 728 ) mm = ( 20.28 x 28.66 ) in - 'JIS_B3' => array( 1031.811, 1459.843), // = ( 364 x 515 ) mm = ( 14.33 x 20.28 ) in - 'JIS_B4' => array( 728.504, 1031.811), // = ( 257 x 364 ) mm = ( 10.12 x 14.33 ) in - 'JIS_B5' => array( 515.906, 728.504), // = ( 182 x 257 ) mm = ( 7.17 x 10.12 ) in - 'JIS_B6' => array( 362.835, 515.906), // = ( 128 x 182 ) mm = ( 5.04 x 7.17 ) in - 'JIS_B7' => array( 257.953, 362.835), // = ( 91 x 128 ) mm = ( 3.58 x 5.04 ) in - 'JIS_B8' => array( 181.417, 257.953), // = ( 64 x 91 ) mm = ( 2.52 x 3.58 ) in - 'JIS_B9' => array( 127.559, 181.417), // = ( 45 x 64 ) mm = ( 1.77 x 2.52 ) in - 'JIS_B10' => array( 90.709, 127.559), // = ( 32 x 45 ) mm = ( 1.26 x 1.77 ) in - 'JIS_B11' => array( 62.362, 90.709), // = ( 22 x 32 ) mm = ( 0.87 x 1.26 ) in - 'JIS_B12' => array( 45.354, 62.362), // = ( 16 x 22 ) mm = ( 0.63 x 0.87 ) in - // PA Series - 'PA0' => array( 2381.102, 3174.803), // = ( 840 x 1120 ) mm = ( 33.07 x 44.09 ) in - 'PA1' => array( 1587.402, 2381.102), // = ( 560 x 840 ) mm = ( 22.05 x 33.07 ) in - 'PA2' => array( 1190.551, 1587.402), // = ( 420 x 560 ) mm = ( 16.54 x 22.05 ) in - 'PA3' => array( 793.701, 1190.551), // = ( 280 x 420 ) mm = ( 11.02 x 16.54 ) in - 'PA4' => array( 595.276, 793.701), // = ( 210 x 280 ) mm = ( 8.27 x 11.02 ) in - 'PA5' => array( 396.850, 595.276), // = ( 140 x 210 ) mm = ( 5.51 x 8.27 ) in - 'PA6' => array( 297.638, 396.850), // = ( 105 x 140 ) mm = ( 4.13 x 5.51 ) in - 'PA7' => array( 198.425, 297.638), // = ( 70 x 105 ) mm = ( 2.76 x 4.13 ) in - 'PA8' => array( 147.402, 198.425), // = ( 52 x 70 ) mm = ( 2.05 x 2.76 ) in - 'PA9' => array( 99.213, 147.402), // = ( 35 x 52 ) mm = ( 1.38 x 2.05 ) in - 'PA10' => array( 73.701, 99.213), // = ( 26 x 35 ) mm = ( 1.02 x 1.38 ) in - // Standard Photographic Print Sizes - 'PASSPORT_PHOTO' => array( 99.213, 127.559), // = ( 35 x 45 ) mm = ( 1.38 x 1.77 ) in - 'E' => array( 233.858, 340.157), // = ( 82 x 120 ) mm = ( 3.25 x 4.72 ) in - 'L' => array( 252.283, 360.000), // = ( 89 x 127 ) mm = ( 3.50 x 5.00 ) in - '3R' => array( 252.283, 360.000), // = ( 89 x 127 ) mm = ( 3.50 x 5.00 ) in - 'KG' => array( 289.134, 430.866), // = ( 102 x 152 ) mm = ( 4.02 x 5.98 ) in - '4R' => array( 289.134, 430.866), // = ( 102 x 152 ) mm = ( 4.02 x 5.98 ) in - '4D' => array( 340.157, 430.866), // = ( 120 x 152 ) mm = ( 4.72 x 5.98 ) in - '2L' => array( 360.000, 504.567), // = ( 127 x 178 ) mm = ( 5.00 x 7.01 ) in - '5R' => array( 360.000, 504.567), // = ( 127 x 178 ) mm = ( 5.00 x 7.01 ) in - '8P' => array( 430.866, 575.433), // = ( 152 x 203 ) mm = ( 5.98 x 7.99 ) in - '6R' => array( 430.866, 575.433), // = ( 152 x 203 ) mm = ( 5.98 x 7.99 ) in - '6P' => array( 575.433, 720.000), // = ( 203 x 254 ) mm = ( 7.99 x 10.00 ) in - '8R' => array( 575.433, 720.000), // = ( 203 x 254 ) mm = ( 7.99 x 10.00 ) in - '6PW' => array( 575.433, 864.567), // = ( 203 x 305 ) mm = ( 7.99 x 12.01 ) in - 'S8R' => array( 575.433, 864.567), // = ( 203 x 305 ) mm = ( 7.99 x 12.01 ) in - '4P' => array( 720.000, 864.567), // = ( 254 x 305 ) mm = ( 10.00 x 12.01 ) in - '10R' => array( 720.000, 864.567), // = ( 254 x 305 ) mm = ( 10.00 x 12.01 ) in - '4PW' => array( 720.000, 1080.000), // = ( 254 x 381 ) mm = ( 10.00 x 15.00 ) in - 'S10R' => array( 720.000, 1080.000), // = ( 254 x 381 ) mm = ( 10.00 x 15.00 ) in - '11R' => array( 790.866, 1009.134), // = ( 279 x 356 ) mm = ( 10.98 x 14.02 ) in - 'S11R' => array( 790.866, 1224.567), // = ( 279 x 432 ) mm = ( 10.98 x 17.01 ) in - '12R' => array( 864.567, 1080.000), // = ( 305 x 381 ) mm = ( 12.01 x 15.00 ) in - 'S12R' => array( 864.567, 1292.598), // = ( 305 x 456 ) mm = ( 12.01 x 17.95 ) in - // Common Newspaper Sizes - 'NEWSPAPER_BROADSHEET' => array( 2125.984, 1700.787), // = ( 750 x 600 ) mm = ( 29.53 x 23.62 ) in - 'NEWSPAPER_BERLINER' => array( 1332.283, 892.913), // = ( 470 x 315 ) mm = ( 18.50 x 12.40 ) in - 'NEWSPAPER_TABLOID' => array( 1218.898, 793.701), // = ( 430 x 280 ) mm = ( 16.93 x 11.02 ) in - 'NEWSPAPER_COMPACT' => array( 1218.898, 793.701), // = ( 430 x 280 ) mm = ( 16.93 x 11.02 ) in - // Business Cards - 'CREDIT_CARD' => array( 153.014, 242.646), // = ( 54 x 86 ) mm = ( 2.13 x 3.37 ) in - 'BUSINESS_CARD' => array( 153.014, 242.646), // = ( 54 x 86 ) mm = ( 2.13 x 3.37 ) in - 'BUSINESS_CARD_ISO7810' => array( 153.014, 242.646), // = ( 54 x 86 ) mm = ( 2.13 x 3.37 ) in - 'BUSINESS_CARD_ISO216' => array( 147.402, 209.764), // = ( 52 x 74 ) mm = ( 2.05 x 2.91 ) in - 'BUSINESS_CARD_IT' => array( 155.906, 240.945), // = ( 55 x 85 ) mm = ( 2.17 x 3.35 ) in - 'BUSINESS_CARD_UK' => array( 155.906, 240.945), // = ( 55 x 85 ) mm = ( 2.17 x 3.35 ) in - 'BUSINESS_CARD_FR' => array( 155.906, 240.945), // = ( 55 x 85 ) mm = ( 2.17 x 3.35 ) in - 'BUSINESS_CARD_DE' => array( 155.906, 240.945), // = ( 55 x 85 ) mm = ( 2.17 x 3.35 ) in - 'BUSINESS_CARD_ES' => array( 155.906, 240.945), // = ( 55 x 85 ) mm = ( 2.17 x 3.35 ) in - 'BUSINESS_CARD_CA' => array( 144.567, 252.283), // = ( 51 x 89 ) mm = ( 2.01 x 3.50 ) in - 'BUSINESS_CARD_US' => array( 144.567, 252.283), // = ( 51 x 89 ) mm = ( 2.01 x 3.50 ) in - 'BUSINESS_CARD_JP' => array( 155.906, 257.953), // = ( 55 x 91 ) mm = ( 2.17 x 3.58 ) in - 'BUSINESS_CARD_HK' => array( 153.071, 255.118), // = ( 54 x 90 ) mm = ( 2.13 x 3.54 ) in - 'BUSINESS_CARD_AU' => array( 155.906, 255.118), // = ( 55 x 90 ) mm = ( 2.17 x 3.54 ) in - 'BUSINESS_CARD_DK' => array( 155.906, 255.118), // = ( 55 x 90 ) mm = ( 2.17 x 3.54 ) in - 'BUSINESS_CARD_SE' => array( 155.906, 255.118), // = ( 55 x 90 ) mm = ( 2.17 x 3.54 ) in - 'BUSINESS_CARD_RU' => array( 141.732, 255.118), // = ( 50 x 90 ) mm = ( 1.97 x 3.54 ) in - 'BUSINESS_CARD_CZ' => array( 141.732, 255.118), // = ( 50 x 90 ) mm = ( 1.97 x 3.54 ) in - 'BUSINESS_CARD_FI' => array( 141.732, 255.118), // = ( 50 x 90 ) mm = ( 1.97 x 3.54 ) in - 'BUSINESS_CARD_HU' => array( 141.732, 255.118), // = ( 50 x 90 ) mm = ( 1.97 x 3.54 ) in - 'BUSINESS_CARD_IL' => array( 141.732, 255.118), // = ( 50 x 90 ) mm = ( 1.97 x 3.54 ) in - // Billboards - '4SHEET' => array( 2880.000, 4320.000), // = ( 1016 x 1524 ) mm = ( 40.00 x 60.00 ) in - '6SHEET' => array( 3401.575, 5102.362), // = ( 1200 x 1800 ) mm = ( 47.24 x 70.87 ) in - '12SHEET' => array( 8640.000, 4320.000), // = ( 3048 x 1524 ) mm = (120.00 x 60.00 ) in - '16SHEET' => array( 5760.000, 8640.000), // = ( 2032 x 3048 ) mm = ( 80.00 x 120.00) in - '32SHEET' => array(11520.000, 8640.000), // = ( 4064 x 3048 ) mm = (160.00 x 120.00) in - '48SHEET' => array(17280.000, 8640.000), // = ( 6096 x 3048 ) mm = (240.00 x 120.00) in - '64SHEET' => array(23040.000, 8640.000), // = ( 8128 x 3048 ) mm = (320.00 x 120.00) in - '96SHEET' => array(34560.000, 8640.000), // = (12192 x 3048 ) mm = (480.00 x 120.00) in - // -- Old European Sizes - // - Old Imperial English Sizes - 'EN_EMPEROR' => array( 3456.000, 5184.000), // = ( 1219 x 1829 ) mm = ( 48.00 x 72.00 ) in - 'EN_ANTIQUARIAN' => array( 2232.000, 3816.000), // = ( 787 x 1346 ) mm = ( 31.00 x 53.00 ) in - 'EN_GRAND_EAGLE' => array( 2070.000, 3024.000), // = ( 730 x 1067 ) mm = ( 28.75 x 42.00 ) in - 'EN_DOUBLE_ELEPHANT' => array( 1926.000, 2880.000), // = ( 679 x 1016 ) mm = ( 26.75 x 40.00 ) in - 'EN_ATLAS' => array( 1872.000, 2448.000), // = ( 660 x 864 ) mm = ( 26.00 x 34.00 ) in - 'EN_COLOMBIER' => array( 1692.000, 2484.000), // = ( 597 x 876 ) mm = ( 23.50 x 34.50 ) in - 'EN_ELEPHANT' => array( 1656.000, 2016.000), // = ( 584 x 711 ) mm = ( 23.00 x 28.00 ) in - 'EN_DOUBLE_DEMY' => array( 1620.000, 2556.000), // = ( 572 x 902 ) mm = ( 22.50 x 35.50 ) in - 'EN_IMPERIAL' => array( 1584.000, 2160.000), // = ( 559 x 762 ) mm = ( 22.00 x 30.00 ) in - 'EN_PRINCESS' => array( 1548.000, 2016.000), // = ( 546 x 711 ) mm = ( 21.50 x 28.00 ) in - 'EN_CARTRIDGE' => array( 1512.000, 1872.000), // = ( 533 x 660 ) mm = ( 21.00 x 26.00 ) in - 'EN_DOUBLE_LARGE_POST' => array( 1512.000, 2376.000), // = ( 533 x 838 ) mm = ( 21.00 x 33.00 ) in - 'EN_ROYAL' => array( 1440.000, 1800.000), // = ( 508 x 635 ) mm = ( 20.00 x 25.00 ) in - 'EN_SHEET' => array( 1404.000, 1692.000), // = ( 495 x 597 ) mm = ( 19.50 x 23.50 ) in - 'EN_HALF_POST' => array( 1404.000, 1692.000), // = ( 495 x 597 ) mm = ( 19.50 x 23.50 ) in - 'EN_SUPER_ROYAL' => array( 1368.000, 1944.000), // = ( 483 x 686 ) mm = ( 19.00 x 27.00 ) in - 'EN_DOUBLE_POST' => array( 1368.000, 2196.000), // = ( 483 x 775 ) mm = ( 19.00 x 30.50 ) in - 'EN_MEDIUM' => array( 1260.000, 1656.000), // = ( 445 x 584 ) mm = ( 17.50 x 23.00 ) in - 'EN_DEMY' => array( 1260.000, 1620.000), // = ( 445 x 572 ) mm = ( 17.50 x 22.50 ) in - 'EN_LARGE_POST' => array( 1188.000, 1512.000), // = ( 419 x 533 ) mm = ( 16.50 x 21.00 ) in - 'EN_COPY_DRAUGHT' => array( 1152.000, 1440.000), // = ( 406 x 508 ) mm = ( 16.00 x 20.00 ) in - 'EN_POST' => array( 1116.000, 1386.000), // = ( 394 x 489 ) mm = ( 15.50 x 19.25 ) in - 'EN_CROWN' => array( 1080.000, 1440.000), // = ( 381 x 508 ) mm = ( 15.00 x 20.00 ) in - 'EN_PINCHED_POST' => array( 1062.000, 1332.000), // = ( 375 x 470 ) mm = ( 14.75 x 18.50 ) in - 'EN_BRIEF' => array( 972.000, 1152.000), // = ( 343 x 406 ) mm = ( 13.50 x 16.00 ) in - 'EN_FOOLSCAP' => array( 972.000, 1224.000), // = ( 343 x 432 ) mm = ( 13.50 x 17.00 ) in - 'EN_SMALL_FOOLSCAP' => array( 954.000, 1188.000), // = ( 337 x 419 ) mm = ( 13.25 x 16.50 ) in - 'EN_POTT' => array( 900.000, 1080.000), // = ( 318 x 381 ) mm = ( 12.50 x 15.00 ) in - // - Old Imperial Belgian Sizes - 'BE_GRAND_AIGLE' => array( 1984.252, 2948.031), // = ( 700 x 1040 ) mm = ( 27.56 x 40.94 ) in - 'BE_COLOMBIER' => array( 1757.480, 2409.449), // = ( 620 x 850 ) mm = ( 24.41 x 33.46 ) in - 'BE_DOUBLE_CARRE' => array( 1757.480, 2607.874), // = ( 620 x 920 ) mm = ( 24.41 x 36.22 ) in - 'BE_ELEPHANT' => array( 1746.142, 2182.677), // = ( 616 x 770 ) mm = ( 24.25 x 30.31 ) in - 'BE_PETIT_AIGLE' => array( 1700.787, 2381.102), // = ( 600 x 840 ) mm = ( 23.62 x 33.07 ) in - 'BE_GRAND_JESUS' => array( 1559.055, 2069.291), // = ( 550 x 730 ) mm = ( 21.65 x 28.74 ) in - 'BE_JESUS' => array( 1530.709, 2069.291), // = ( 540 x 730 ) mm = ( 21.26 x 28.74 ) in - 'BE_RAISIN' => array( 1417.323, 1842.520), // = ( 500 x 650 ) mm = ( 19.69 x 25.59 ) in - 'BE_GRAND_MEDIAN' => array( 1303.937, 1714.961), // = ( 460 x 605 ) mm = ( 18.11 x 23.82 ) in - 'BE_DOUBLE_POSTE' => array( 1233.071, 1601.575), // = ( 435 x 565 ) mm = ( 17.13 x 22.24 ) in - 'BE_COQUILLE' => array( 1218.898, 1587.402), // = ( 430 x 560 ) mm = ( 16.93 x 22.05 ) in - 'BE_PETIT_MEDIAN' => array( 1176.378, 1502.362), // = ( 415 x 530 ) mm = ( 16.34 x 20.87 ) in - 'BE_RUCHE' => array( 1020.472, 1303.937), // = ( 360 x 460 ) mm = ( 14.17 x 18.11 ) in - 'BE_PROPATRIA' => array( 977.953, 1218.898), // = ( 345 x 430 ) mm = ( 13.58 x 16.93 ) in - 'BE_LYS' => array( 898.583, 1125.354), // = ( 317 x 397 ) mm = ( 12.48 x 15.63 ) in - 'BE_POT' => array( 870.236, 1088.504), // = ( 307 x 384 ) mm = ( 12.09 x 15.12 ) in - 'BE_ROSETTE' => array( 765.354, 983.622), // = ( 270 x 347 ) mm = ( 10.63 x 13.66 ) in - // - Old Imperial French Sizes - 'FR_UNIVERS' => array( 2834.646, 3685.039), // = ( 1000 x 1300 ) mm = ( 39.37 x 51.18 ) in - 'FR_DOUBLE_COLOMBIER' => array( 2551.181, 3571.654), // = ( 900 x 1260 ) mm = ( 35.43 x 49.61 ) in - 'FR_GRANDE_MONDE' => array( 2551.181, 3571.654), // = ( 900 x 1260 ) mm = ( 35.43 x 49.61 ) in - 'FR_DOUBLE_SOLEIL' => array( 2267.717, 3401.575), // = ( 800 x 1200 ) mm = ( 31.50 x 47.24 ) in - 'FR_DOUBLE_JESUS' => array( 2154.331, 3174.803), // = ( 760 x 1120 ) mm = ( 29.92 x 44.09 ) in - 'FR_GRAND_AIGLE' => array( 2125.984, 3004.724), // = ( 750 x 1060 ) mm = ( 29.53 x 41.73 ) in - 'FR_PETIT_AIGLE' => array( 1984.252, 2664.567), // = ( 700 x 940 ) mm = ( 27.56 x 37.01 ) in - 'FR_DOUBLE_RAISIN' => array( 1842.520, 2834.646), // = ( 650 x 1000 ) mm = ( 25.59 x 39.37 ) in - 'FR_JOURNAL' => array( 1842.520, 2664.567), // = ( 650 x 940 ) mm = ( 25.59 x 37.01 ) in - 'FR_COLOMBIER_AFFICHE' => array( 1785.827, 2551.181), // = ( 630 x 900 ) mm = ( 24.80 x 35.43 ) in - 'FR_DOUBLE_CAVALIER' => array( 1757.480, 2607.874), // = ( 620 x 920 ) mm = ( 24.41 x 36.22 ) in - 'FR_CLOCHE' => array( 1700.787, 2267.717), // = ( 600 x 800 ) mm = ( 23.62 x 31.50 ) in - 'FR_SOLEIL' => array( 1700.787, 2267.717), // = ( 600 x 800 ) mm = ( 23.62 x 31.50 ) in - 'FR_DOUBLE_CARRE' => array( 1587.402, 2551.181), // = ( 560 x 900 ) mm = ( 22.05 x 35.43 ) in - 'FR_DOUBLE_COQUILLE' => array( 1587.402, 2494.488), // = ( 560 x 880 ) mm = ( 22.05 x 34.65 ) in - 'FR_JESUS' => array( 1587.402, 2154.331), // = ( 560 x 760 ) mm = ( 22.05 x 29.92 ) in - 'FR_RAISIN' => array( 1417.323, 1842.520), // = ( 500 x 650 ) mm = ( 19.69 x 25.59 ) in - 'FR_CAVALIER' => array( 1303.937, 1757.480), // = ( 460 x 620 ) mm = ( 18.11 x 24.41 ) in - 'FR_DOUBLE_COURONNE' => array( 1303.937, 2040.945), // = ( 460 x 720 ) mm = ( 18.11 x 28.35 ) in - 'FR_CARRE' => array( 1275.591, 1587.402), // = ( 450 x 560 ) mm = ( 17.72 x 22.05 ) in - 'FR_COQUILLE' => array( 1247.244, 1587.402), // = ( 440 x 560 ) mm = ( 17.32 x 22.05 ) in - 'FR_DOUBLE_TELLIERE' => array( 1247.244, 1927.559), // = ( 440 x 680 ) mm = ( 17.32 x 26.77 ) in - 'FR_DOUBLE_CLOCHE' => array( 1133.858, 1700.787), // = ( 400 x 600 ) mm = ( 15.75 x 23.62 ) in - 'FR_DOUBLE_POT' => array( 1133.858, 1757.480), // = ( 400 x 620 ) mm = ( 15.75 x 24.41 ) in - 'FR_ECU' => array( 1133.858, 1474.016), // = ( 400 x 520 ) mm = ( 15.75 x 20.47 ) in - 'FR_COURONNE' => array( 1020.472, 1303.937), // = ( 360 x 460 ) mm = ( 14.17 x 18.11 ) in - 'FR_TELLIERE' => array( 963.780, 1247.244), // = ( 340 x 440 ) mm = ( 13.39 x 17.32 ) in - 'FR_POT' => array( 878.740, 1133.858), // = ( 310 x 400 ) mm = ( 12.20 x 15.75 ) in - ); - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /** - * Return the current TCPDF version. - * @return TCPDF version string - * @since 5.9.012 (2010-11-10) + * Return the current TCPDF version. + * @return TCPDF version string + * @since 5.9.012 (2010-11-10) * @public static */ public static function getTCPDFVersion() { @@ -518,219 +162,67 @@ class TCPDF_STATIC { } /** - * Get page dimensions from format name. - * @param $format (mixed) The format name @see self::$page_format<ul> - * @return array containing page width and height in points - * @since 5.0.010 (2010-05-17) + * Check if the URL exist. + * @param $url (string) URL to check. + * @return Boolean true if the URl exist, false otherwise. + * @since 5.9.204 (2013-01-28) * @public static */ - public static function getPageSizeFromFormat($format) { - if (isset(self::$page_formats[$format])) { - return self::$page_formats[$format]; - } - return self::$page_formats['A4']; + public static function isValidURL($url) { + $headers = @get_headers($url); + return (strpos($headers[0], '200') !== false); } /** - * Set page boundaries. - * @param $page (int) page number - * @param $type (string) valid values are: <ul><li>'MediaBox' : the boundaries of the physical medium on which the page shall be displayed or printed;</li><li>'CropBox' : the visible region of default user space;</li><li>'BleedBox' : the region to which the contents of the page shall be clipped when output in a production environment;</li><li>'TrimBox' : the intended dimensions of the finished page after trimming;</li><li>'ArtBox' : the page's meaningful content (including potential white space).</li></ul> - * @param $llx (float) lower-left x coordinate in user units. - * @param $lly (float) lower-left y coordinate in user units. - * @param $urx (float) upper-right x coordinate in user units. - * @param $ury (float) upper-right y coordinate in user units. - * @param $points (boolean) If true uses user units as unit of measure, otherwise uses PDF points. - * @param $k (float) Scale factor (number of points in user unit). - * @param $pagedim (array) Array of page dimensions. - * @return pagedim array of page dimensions. - * @since 5.0.010 (2010-05-17) + * Removes SHY characters from text. + * Unicode Data:<ul> + * <li>Name : SOFT HYPHEN, commonly abbreviated as SHY</li> + * <li>HTML Entity (decimal): "&#173;"</li> + * <li>HTML Entity (hex): "&#xad;"</li> + * <li>HTML Entity (named): "&shy;"</li> + * <li>How to type in Microsoft Windows: [Alt +00AD] or [Alt 0173]</li> + * <li>UTF-8 (hex): 0xC2 0xAD (c2ad)</li> + * <li>UTF-8 character: chr(194).chr(173)</li> + * </ul> + * @param $txt (string) input string + * @param $unicode (boolean) True if we are in unicode mode, false otherwise. + * @return string without SHY characters. + * @since (4.5.019) 2009-02-28 * @public static */ - public static function setPageBoxes($page, $type, $llx, $lly, $urx, $ury, $points=false, $k, $pagedim=array()) { - if (!isset($pagedim[$page])) { - // initialize array - $pagedim[$page] = array(); - } - if (!in_array($type, self::$pageboxes)) { - return; - } - if ($points) { - $k = 1; + public static function removeSHY($txt='', $unicode=true) { + $txt = preg_replace('/([\\xc2]{1}[\\xad]{1})/', '', $txt); + if (!$unicode) { + $txt = preg_replace('/([\\xad]{1})/', '', $txt); } - $pagedim[$page][$type]['llx'] = ($llx * $k); - $pagedim[$page][$type]['lly'] = ($lly * $k); - $pagedim[$page][$type]['urx'] = ($urx * $k); - $pagedim[$page][$type]['ury'] = ($ury * $k); - return $pagedim; + return $txt; } - /** - * Swap X and Y coordinates of page boxes (change page boxes orientation). - * @param $page (int) page number - * @param $pagedim (array) Array of page dimensions. - * @return pagedim array of page dimensions. - * @since 5.0.010 (2010-05-17) - * @public static - */ - public static function swapPageBoxCoordinates($page, $pagedim) { - foreach (self::$pageboxes as $type) { - // swap X and Y coordinates - if (isset($pagedim[$page][$type])) { - $tmp = $pagedim[$page][$type]['llx']; - $pagedim[$page][$type]['llx'] = $pagedim[$page][$type]['lly']; - $pagedim[$page][$type]['lly'] = $tmp; - $tmp = $pagedim[$page][$type]['urx']; - $pagedim[$page][$type]['urx'] = $pagedim[$page][$type]['ury']; - $pagedim[$page][$type]['ury'] = $tmp; - } - } - return $pagedim; - } /** - * Get the canonical page layout mode. - * @param $layout (string) The page layout. Possible values are:<ul><li>SinglePage Display one page at a time</li><li>OneColumn Display the pages in one column</li><li>TwoColumnLeft Display the pages in two columns, with odd-numbered pages on the left</li><li>TwoColumnRight Display the pages in two columns, with odd-numbered pages on the right</li><li>TwoPageLeft (PDF 1.5) Display the pages two at a time, with odd-numbered pages on the left</li><li>TwoPageRight (PDF 1.5) Display the pages two at a time, with odd-numbered pages on the right</li></ul> - * @return (string) Canonical page layout name. + * Get the border mode accounting for multicell position (opens bottom side of multicell crossing pages) + * @param $brd (mixed) Indicates if borders must be drawn around the cell block. The value can be a number:<ul><li>0: no border (default)</li><li>1: frame</li></ul>or a string containing some or all of the following characters (in any order):<ul><li>L: left</li><li>T: top</li><li>R: right</li><li>B: bottom</li></ul> or an array of line styles for each border group: array('LTRB' => array('width' => 2, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0))) + * @param $position (string) multicell position: 'start', 'middle', 'end' + * @param $opencell (boolean) True when the cell is left open at the page bottom, false otherwise. + * @return border mode array + * @since 4.4.002 (2008-12-09) * @public static */ - public static function getPageLayoutMode($layout='SinglePage') { - switch ($layout) { - case 'default': - case 'single': - case 'SinglePage': { - $layout_mode = 'SinglePage'; - break; - } - case 'continuous': - case 'OneColumn': { - $layout_mode = 'OneColumn'; - break; - } - case 'two': - case 'TwoColumnLeft': { - $layout_mode = 'TwoColumnLeft'; - break; - } - case 'TwoColumnRight': { - $layout_mode = 'TwoColumnRight'; - break; - } - case 'TwoPageLeft': { - $layout_mode = 'TwoPageLeft'; - break; - } - case 'TwoPageRight': { - $layout_mode = 'TwoPageRight'; - break; - } - default: { - $layout_mode = 'SinglePage'; + public static function getBorderMode($brd, $position='start', $opencell=true) { + if ((!$opencell) OR empty($brd)) { + return $brd; + } + if ($brd == 1) { + $brd = 'LTRB'; + } + if (is_string($brd)) { + // convert string to array + $slen = strlen($brd); + $newbrd = array(); + for ($i = 0; $i < $slen; ++$i) { + $newbrd[$brd[$i]] = array('cap' => 'square', 'join' => 'miter'); } - } - return $layout_mode; - } - - /** - * Get the canonical page layout mode. - * @param $mode (string) A name object specifying how the document should be displayed when opened:<ul><li>UseNone Neither document outline nor thumbnail images visible</li><li>UseOutlines Document outline visible</li><li>UseThumbs Thumbnail images visible</li><li>FullScreen Full-screen mode, with no menu bar, window controls, or any other window visible</li><li>UseOC (PDF 1.5) Optional content group panel visible</li><li>UseAttachments (PDF 1.6) Attachments panel visible</li></ul> - * @return (string) Canonical page mode name. - * @public static - */ - public static function getPageMode($mode='UseNone') { - switch ($mode) { - case 'UseNone': { - $page_mode = 'UseNone'; - break; - } - case 'UseOutlines': { - $page_mode = 'UseOutlines'; - break; - } - case 'UseThumbs': { - $page_mode = 'UseThumbs'; - break; - } - case 'FullScreen': { - $page_mode = 'FullScreen'; - break; - } - case 'UseOC': { - $page_mode = 'UseOC'; - break; - } - case '': { - $page_mode = 'UseAttachments'; - break; - } - default: { - $page_mode = 'UseNone'; - } - } - return $page_mode; - } - - /** - * Check if the URL exist. - * @param $url (string) URL to check. - * @return Boolean true if the URl exist, false otherwise. - * @since 5.9.204 (2013-01-28) - * @public static - */ - public static function isValidURL($url) { - $headers = @get_headers($url); - return (strpos($headers[0], '200') !== false); - } - - /** - * Removes SHY characters from text. - * Unicode Data:<ul> - * <li>Name : SOFT HYPHEN, commonly abbreviated as SHY</li> - * <li>HTML Entity (decimal): "&#173;"</li> - * <li>HTML Entity (hex): "&#xad;"</li> - * <li>HTML Entity (named): "&shy;"</li> - * <li>How to type in Microsoft Windows: [Alt +00AD] or [Alt 0173]</li> - * <li>UTF-8 (hex): 0xC2 0xAD (c2ad)</li> - * <li>UTF-8 character: chr(194).chr(173)</li> - * </ul> - * @param $txt (string) input string - * @param $unicode (boolean) True if we are in unicode mode, false otherwise. - * @return string without SHY characters. - * @since (4.5.019) 2009-02-28 - * @public static - */ - public static function removeSHY($txt='', $unicode=true) { - $txt = preg_replace('/([\\xc2]{1}[\\xad]{1})/', '', $txt); - if (!$unicode) { - $txt = preg_replace('/([\\xad]{1})/', '', $txt); - } - return $txt; - } - - - /** - * Get the border mode accounting for multicell position (opens bottom side of multicell crossing pages) - * @param $brd (mixed) Indicates if borders must be drawn around the cell block. The value can be a number:<ul><li>0: no border (default)</li><li>1: frame</li></ul>or a string containing some or all of the following characters (in any order):<ul><li>L: left</li><li>T: top</li><li>R: right</li><li>B: bottom</li></ul> or an array of line styles for each border group: array('LTRB' => array('width' => 2, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0))) - * @param $position (string) multicell position: 'start', 'middle', 'end' - * @param $opencell (boolean) True when the cell is left open at the page bottom, false otherwise. - * @return border mode array - * @since 4.4.002 (2008-12-09) - * @public static - */ - public static function getBorderMode($brd, $position='start', $opencell=true) { - if ((!$opencell) OR empty($brd)) { - return $brd; - } - if ($brd == 1) { - $brd = 'LTRB'; - } - if (is_string($brd)) { - // convert string to array - $slen = strlen($brd); - $newbrd = array(); - for ($i = 0; $i < $slen; ++$i) { - $newbrd[$brd[$i]] = array('cap' => 'square', 'join' => 'miter'); - } - $brd = $newbrd; + $brd = $newbrd; } foreach ($brd as $border => $style) { switch ($position) { @@ -904,143 +396,6 @@ class TCPDF_STATIC { return substr_replace(date('YmdHisO', intval($time)), '\'', (0 - 2), 0).'\''; } - /** - * Get ULONG from string (Big Endian 32-bit unsigned integer). - * @param $str (string) string from where to extract value - * @param $offset (int) point from where to read the data - * @return int 32 bit value - * @author Nicola Asuni - * @since 5.2.000 (2010-06-02) - * @public static - */ - public static function _getULONG($str, $offset) { - $v = unpack('Ni', substr($str, $offset, 4)); - return $v['i']; - } - - /** - * Get USHORT from string (Big Endian 16-bit unsigned integer). - * @param $str (string) string from where to extract value - * @param $offset (int) point from where to read the data - * @return int 16 bit value - * @author Nicola Asuni - * @since 5.2.000 (2010-06-02) - * @public static - */ - public static function _getUSHORT($str, $offset) { - $v = unpack('ni', substr($str, $offset, 2)); - return $v['i']; - } - - /** - * Get SHORT from string (Big Endian 16-bit signed integer). - * @param $str (string) String from where to extract value. - * @param $offset (int) Point from where to read the data. - * @return int 16 bit value - * @author Nicola Asuni - * @since 5.2.000 (2010-06-02) - * @public static - */ - public static function _getSHORT($str, $offset) { - $v = unpack('si', substr($str, $offset, 2)); - return $v['i']; - } - - /** - * Get FWORD from string (Big Endian 16-bit signed integer). - * @param $str (string) String from where to extract value. - * @param $offset (int) Point from where to read the data. - * @return int 16 bit value - * @author Nicola Asuni - * @since 5.9.123 (2011-09-30) - * @public static - */ - public static function _getFWORD($str, $offset) { - $v = self::_getUSHORT($str, $offset); - if ($v > 0x7fff) { - $v -= 0x10000; - } - return $v; - } - - /** - * Get UFWORD from string (Big Endian 16-bit unsigned integer). - * @param $str (string) string from where to extract value - * @param $offset (int) point from where to read the data - * @return int 16 bit value - * @author Nicola Asuni - * @since 5.9.123 (2011-09-30) - * @public static - */ - public static function _getUFWORD($str, $offset) { - $v = self::_getUSHORT($str, $offset); - return $v; - } - - /** - * Get FIXED from string (32-bit signed fixed-point number (16.16). - * @param $str (string) string from where to extract value - * @param $offset (int) point from where to read the data - * @return int 16 bit value - * @author Nicola Asuni - * @since 5.9.123 (2011-09-30) - * @public static - */ - public static function _getFIXED($str, $offset) { - // mantissa - $m = self::_getFWORD($str, $offset); - // fraction - $f = self::_getUSHORT($str, ($offset + 2)); - $v = floatval(''.$m.'.'.$f.''); - return $v; - } - - /** - * Get BYTE from string (8-bit unsigned integer). - * @param $str (string) String from where to extract value. - * @param $offset (int) Point from where to read the data. - * @return int 8 bit value - * @author Nicola Asuni - * @since 5.2.000 (2010-06-02) - * @public static - */ - public static function _getBYTE($str, $offset) { - $v = unpack('Ci', substr($str, $offset, 1)); - return $v['i']; - } - /** - * Binary-safe and URL-safe file read. - * Reads up to length bytes from the file pointer referenced by handle. Reading stops as soon as one of the following conditions is met: length bytes have been read; EOF (end of file) is reached. - * @param $handle (resource) - * @param $length (int) - * @return Returns the read string or FALSE in case of error. - * @author Nicola Asuni - * @since 4.5.027 (2009-03-16) - * @public static - */ - public static function rfread($handle, $length) { - $data = fread($handle, $length); - if ($data === false) { - return false; - } - $rest = ($length - strlen($data)); - if ($rest > 0) { - $data .= self::rfread($handle, $rest); - } - return $data; - } - - /** - * Read a 4-byte (32 bit) integer from file. - * @param $f (string) file name. - * @return 4-byte integer - * @public static - */ - public static function _freadint($f) { - $a = unpack('Ni', fread($f, 4)); - return $a['i']; - } - /** * Returns a string containing random data to be used as a seed for encryption methods. * @param $seed (string) starting seed value @@ -1078,7 +433,7 @@ class TCPDF_STATIC { /** * Returns the input text exrypted using AES algorithm and the specified key. - * This method requires mcrypt. + * This method requires openssl or mcrypt. Text is padded to 16bytes blocks * @param $key (string) encryption key * @param $text (String) input text to be encrypted * @return String encrypted text @@ -1090,12 +445,38 @@ class TCPDF_STATIC { // padding (RFC 2898, PKCS #5: Password-Based Cryptography Specification Version 2.0) $padding = 16 - (strlen($text) % 16); $text .= str_repeat(chr($padding), $padding); + if (extension_loaded('openssl')) { + $iv = openssl_random_pseudo_bytes (openssl_cipher_iv_length('aes-256-cbc')); + $text = openssl_encrypt($text, 'aes-256-cbc', $key, OPENSSL_RAW_DATA, $iv); + return $iv.substr($text, 0, -16); + } $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC), MCRYPT_RAND); $text = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $text, MCRYPT_MODE_CBC, $iv); $text = $iv.$text; return $text; } + /** + * Returns the input text exrypted using AES algorithm and the specified key. + * This method requires openssl or mcrypt. Text is not padded + * @param $key (string) encryption key + * @param $text (String) input text to be encrypted + * @return String encrypted text + * @author Nicola Asuni + * @since TODO + * @public static + */ + public static function _AESnopad($key, $text) { + if (extension_loaded('openssl')) { + $iv = str_repeat("\x00", openssl_cipher_iv_length('aes-256-cbc')); + $text = openssl_encrypt($text, 'aes-256-cbc', $key, OPENSSL_RAW_DATA, $iv); + return substr($text, 0, -16); + } + $iv = str_repeat("\x00", mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC)); + $text = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $text, MCRYPT_MODE_CBC, $iv); + return $text; + } + /** * Returns the input text encrypted using RC4 algorithm and the specified key. * RC4 is the standard encryption algorithm used in PDF format @@ -2370,157 +1751,854 @@ class TCPDF_STATIC { } /** - * Returns the angle in radiants between two vectors - * @param $x1 (int) X coordinate of first vector point - * @param $y1 (int) Y coordinate of first vector point - * @param $x2 (int) X coordinate of second vector point - * @param $y2 (int) Y coordinate of second vector point - * @author Nicola Asuni - * @since 5.0.000 (2010-05-04) + * Returns the angle in radiants between two vectors + * @param $x1 (int) X coordinate of first vector point + * @param $y1 (int) Y coordinate of first vector point + * @param $x2 (int) X coordinate of second vector point + * @param $y2 (int) Y coordinate of second vector point + * @author Nicola Asuni + * @since 5.0.000 (2010-05-04) + * @public static + */ + public static function getVectorsAngle($x1, $y1, $x2, $y2) { + $dprod = ($x1 * $x2) + ($y1 * $y2); + $dist1 = sqrt(($x1 * $x1) + ($y1 * $y1)); + $dist2 = sqrt(($x2 * $x2) + ($y2 * $y2)); + $angle = acos($dprod / ($dist1 * $dist2)); + if (is_nan($angle)) { + $angle = M_PI; + } + if ((($x1 * $y2) - ($x2 * $y1)) < 0) { + $angle *= -1; + } + return $angle; + } + + + + + + + + + + + + + + + + + +// ==================================================================================================================== +// REIMPLEMENTED +// ==================================================================================================================== + + + + + + + + + + + + + + + /** + * Split string by a regular expression. + * This is a wrapper for the preg_split function to avoid the bug: https://bugs.php.net/bug.php?id=45850 + * @param $pattern (string) The regular expression pattern to search for without the modifiers, as a string. + * @param $modifiers (string) The modifiers part of the pattern, + * @param $subject (string) The input string. + * @param $limit (int) If specified, then only substrings up to limit are returned with the rest of the string being placed in the last substring. A limit of -1, 0 or NULL means "no limit" and, as is standard across PHP, you can use NULL to skip to the flags parameter. + * @param $flags (int) The flags as specified on the preg_split PHP function. + * @return Returns an array containing substrings of subject split along boundaries matched by pattern.modifier + * @author Nicola Asuni + * @since 6.0.023 + * @public static + */ + public static function pregSplit($pattern, $modifiers, $subject, $limit=NULL, $flags=NULL) { + // the bug only happens on PHP 5.2 when using the u modifier + if ((strpos($modifiers, 'u') === FALSE) OR (count(preg_split('//u', "\n\t", -1, PREG_SPLIT_NO_EMPTY)) == 2)) { + return preg_split($pattern.$modifiers, $subject, $limit, $flags); + } + // preg_split is bugged - try alternative solution + $ret = array(); + while (($nl = strpos($subject, "\n")) !== FALSE) { + $ret = array_merge($ret, preg_split($pattern.$modifiers, substr($subject, 0, $nl), $limit, $flags)); + $ret[] = "\n"; + $subject = substr($subject, ($nl + 1)); + } + if (strlen($subject) > 0) { + $ret = array_merge($ret, preg_split($pattern.$modifiers, $subject, $limit, $flags)); + } + return $ret; + } + + /** + * Wrapper to use fopen only with local files + * @param filename (string) Name of the file to open + * @param $mode (string) + * @return Returns a file pointer resource on success, or FALSE on error. + * @public static + */ + public static function fopenLocal($filename, $mode) { + if (strpos($filename, '://') === false) { + $filename = 'file://'.$filename; + } elseif (stream_is_local($filename) !== true) { + return false; + } + return fopen($filename, $mode); + } + + /** + * Reads entire file into a string. + * The file can be also an URL. + * @param $file (string) Name of the file or URL to read. + * @return The function returns the read data or FALSE on failure. + * @author Nicola Asuni + * @since 6.0.025 + * @public static + */ + public static function fileGetContents($file) { + $alt = array($file); + // + if ((strlen($file) > 1) + && ($file[0] === '/') + && ($file[1] !== '/') + && !empty($_SERVER['DOCUMENT_ROOT']) + && ($_SERVER['DOCUMENT_ROOT'] !== '/') + ) { + $findroot = strpos($file, $_SERVER['DOCUMENT_ROOT']); + if (($findroot === false) || ($findroot > 1)) { + $alt[] = htmlspecialchars_decode(urldecode($_SERVER['DOCUMENT_ROOT'].$file)); + } + } + // + $protocol = 'http'; + if (!empty($_SERVER['HTTPS']) && (strtolower($_SERVER['HTTPS']) != 'off')) { + $protocol .= 's'; + } + // + $url = $file; + if (preg_match('%^//%', $url) && !empty($_SERVER['HTTP_HOST'])) { + $url = $protocol.':'.str_replace(' ', '%20', $url); + } + $url = htmlspecialchars_decode($url); + $alt[] = $url; + // + if (preg_match('%^(https?)://%', $url) + && empty($_SERVER['HTTP_HOST']) + && empty($_SERVER['DOCUMENT_ROOT']) + ) { + $urldata = parse_url($url); + if (empty($urldata['query'])) { + $host = $protocol.'://'.$_SERVER['HTTP_HOST']; + if (strpos($url, $host) === 0) { + // convert URL to full server path + $tmp = str_replace($host, $_SERVER['DOCUMENT_ROOT'], $url); + $alt[] = htmlspecialchars_decode(urldecode($tmp)); + } + } + } + // + if (isset($_SERVER['SCRIPT_URI']) + && !preg_match('%^(https?|ftp)://%', $file) + && !preg_match('%^//%', $file) + ) { + $urldata = @parse_url($_SERVER['SCRIPT_URI']); + return $urldata['scheme'].'://'.$urldata['host'].(($file[0] == '/') ? '' : '/').$file; + } + // + $alt = array_unique($alt); + //var_dump($alt);exit;//DEBUG + foreach ($alt as $path) { + $ret = @file_get_contents($path); + if ($ret !== false) { + return $ret; + } + // try to use CURL for URLs + if (!ini_get('allow_url_fopen') + && function_exists('curl_init') + && preg_match('%^(https?|ftp)://%', $path) + ) { + // try to get remote file data using cURL + $crs = curl_init(); + curl_setopt($crs, CURLOPT_URL, $path); + curl_setopt($crs, CURLOPT_BINARYTRANSFER, true); + curl_setopt($crs, CURLOPT_FAILONERROR, true); + curl_setopt($crs, CURLOPT_RETURNTRANSFER, true); + if ((ini_get('open_basedir') == '') && (!ini_get('safe_mode'))) { + curl_setopt($crs, CURLOPT_FOLLOWLOCATION, true); + } + curl_setopt($crs, CURLOPT_CONNECTTIMEOUT, 5); + curl_setopt($crs, CURLOPT_TIMEOUT, 30); + curl_setopt($crs, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($crs, CURLOPT_SSL_VERIFYHOST, false); + curl_setopt($crs, CURLOPT_USERAGENT, 'tc-lib-file'); + $ret = curl_exec($crs); + curl_close($crs); + if ($ret !== false) { + return $ret; + } + } + } + return false; + } + + + + /** + * Get ULONG from string (Big Endian 32-bit unsigned integer). + * @param $str (string) string from where to extract value + * @param $offset (int) point from where to read the data + * @return int 32 bit value + * @author Nicola Asuni + * @since 5.2.000 (2010-06-02) + * @public static + */ + public static function _getULONG($str, $offset) { + $v = unpack('Ni', substr($str, $offset, 4)); + return $v['i']; + } + + /** + * Get USHORT from string (Big Endian 16-bit unsigned integer). + * @param $str (string) string from where to extract value + * @param $offset (int) point from where to read the data + * @return int 16 bit value + * @author Nicola Asuni + * @since 5.2.000 (2010-06-02) + * @public static + */ + public static function _getUSHORT($str, $offset) { + $v = unpack('ni', substr($str, $offset, 2)); + return $v['i']; + } + + /** + * Get SHORT from string (Big Endian 16-bit signed integer). + * @param $str (string) String from where to extract value. + * @param $offset (int) Point from where to read the data. + * @return int 16 bit value + * @author Nicola Asuni + * @since 5.2.000 (2010-06-02) + * @public static + */ + public static function _getSHORT($str, $offset) { + $v = unpack('si', substr($str, $offset, 2)); + return $v['i']; + } + + /** + * Get FWORD from string (Big Endian 16-bit signed integer). + * @param $str (string) String from where to extract value. + * @param $offset (int) Point from where to read the data. + * @return int 16 bit value + * @author Nicola Asuni + * @since 5.9.123 (2011-09-30) + * @public static + */ + public static function _getFWORD($str, $offset) { + $v = self::_getUSHORT($str, $offset); + if ($v > 0x7fff) { + $v -= 0x10000; + } + return $v; + } + + /** + * Get UFWORD from string (Big Endian 16-bit unsigned integer). + * @param $str (string) string from where to extract value + * @param $offset (int) point from where to read the data + * @return int 16 bit value + * @author Nicola Asuni + * @since 5.9.123 (2011-09-30) + * @public static + */ + public static function _getUFWORD($str, $offset) { + $v = self::_getUSHORT($str, $offset); + return $v; + } + + /** + * Get FIXED from string (32-bit signed fixed-point number (16.16). + * @param $str (string) string from where to extract value + * @param $offset (int) point from where to read the data + * @return int 16 bit value + * @author Nicola Asuni + * @since 5.9.123 (2011-09-30) + * @public static + */ + public static function _getFIXED($str, $offset) { + // mantissa + $m = self::_getFWORD($str, $offset); + // fraction + $f = self::_getUSHORT($str, ($offset + 2)); + $v = floatval(''.$m.'.'.$f.''); + return $v; + } + + /** + * Get BYTE from string (8-bit unsigned integer). + * @param $str (string) String from where to extract value. + * @param $offset (int) Point from where to read the data. + * @return int 8 bit value + * @author Nicola Asuni + * @since 5.2.000 (2010-06-02) + * @public static + */ + public static function _getBYTE($str, $offset) { + $v = unpack('Ci', substr($str, $offset, 1)); + return $v['i']; + } + /** + * Binary-safe and URL-safe file read. + * Reads up to length bytes from the file pointer referenced by handle. Reading stops as soon as one of the following conditions is met: length bytes have been read; EOF (end of file) is reached. + * @param $handle (resource) + * @param $length (int) + * @return Returns the read string or FALSE in case of error. + * @author Nicola Asuni + * @since 4.5.027 (2009-03-16) + * @public static + */ + public static function rfread($handle, $length) { + $data = fread($handle, $length); + if ($data === false) { + return false; + } + $rest = ($length - strlen($data)); + if (($rest > 0) && !feof($handle)) { + $data .= self::rfread($handle, $rest); + } + return $data; + } + + /** + * Read a 4-byte (32 bit) integer from file. + * @param $f (string) file name. + * @return 4-byte integer + * @public static + */ + public static function _freadint($f) { + $a = unpack('Ni', fread($f, 4)); + return $a['i']; + } + + + /** + * Array of page formats + * measures are calculated in this way: (inches * 72) or (millimeters * 72 / 25.4) + * @public static + */ + public static $page_formats = array( + // ISO 216 A Series + 2 SIS 014711 extensions + 'A0' => array( 2383.937, 3370.394), // = ( 841 x 1189 ) mm = ( 33.11 x 46.81 ) in + 'A1' => array( 1683.780, 2383.937), // = ( 594 x 841 ) mm = ( 23.39 x 33.11 ) in + 'A2' => array( 1190.551, 1683.780), // = ( 420 x 594 ) mm = ( 16.54 x 23.39 ) in + 'A3' => array( 841.890, 1190.551), // = ( 297 x 420 ) mm = ( 11.69 x 16.54 ) in + 'A4' => array( 595.276, 841.890), // = ( 210 x 297 ) mm = ( 8.27 x 11.69 ) in + 'A5' => array( 419.528, 595.276), // = ( 148 x 210 ) mm = ( 5.83 x 8.27 ) in + 'A6' => array( 297.638, 419.528), // = ( 105 x 148 ) mm = ( 4.13 x 5.83 ) in + 'A7' => array( 209.764, 297.638), // = ( 74 x 105 ) mm = ( 2.91 x 4.13 ) in + 'A8' => array( 147.402, 209.764), // = ( 52 x 74 ) mm = ( 2.05 x 2.91 ) in + 'A9' => array( 104.882, 147.402), // = ( 37 x 52 ) mm = ( 1.46 x 2.05 ) in + 'A10' => array( 73.701, 104.882), // = ( 26 x 37 ) mm = ( 1.02 x 1.46 ) in + 'A11' => array( 51.024, 73.701), // = ( 18 x 26 ) mm = ( 0.71 x 1.02 ) in + 'A12' => array( 36.850, 51.024), // = ( 13 x 18 ) mm = ( 0.51 x 0.71 ) in + // ISO 216 B Series + 2 SIS 014711 extensions + 'B0' => array( 2834.646, 4008.189), // = ( 1000 x 1414 ) mm = ( 39.37 x 55.67 ) in + 'B1' => array( 2004.094, 2834.646), // = ( 707 x 1000 ) mm = ( 27.83 x 39.37 ) in + 'B2' => array( 1417.323, 2004.094), // = ( 500 x 707 ) mm = ( 19.69 x 27.83 ) in + 'B3' => array( 1000.630, 1417.323), // = ( 353 x 500 ) mm = ( 13.90 x 19.69 ) in + 'B4' => array( 708.661, 1000.630), // = ( 250 x 353 ) mm = ( 9.84 x 13.90 ) in + 'B5' => array( 498.898, 708.661), // = ( 176 x 250 ) mm = ( 6.93 x 9.84 ) in + 'B6' => array( 354.331, 498.898), // = ( 125 x 176 ) mm = ( 4.92 x 6.93 ) in + 'B7' => array( 249.449, 354.331), // = ( 88 x 125 ) mm = ( 3.46 x 4.92 ) in + 'B8' => array( 175.748, 249.449), // = ( 62 x 88 ) mm = ( 2.44 x 3.46 ) in + 'B9' => array( 124.724, 175.748), // = ( 44 x 62 ) mm = ( 1.73 x 2.44 ) in + 'B10' => array( 87.874, 124.724), // = ( 31 x 44 ) mm = ( 1.22 x 1.73 ) in + 'B11' => array( 62.362, 87.874), // = ( 22 x 31 ) mm = ( 0.87 x 1.22 ) in + 'B12' => array( 42.520, 62.362), // = ( 15 x 22 ) mm = ( 0.59 x 0.87 ) in + // ISO 216 C Series + 2 SIS 014711 extensions + 5 EXTENSION + 'C0' => array( 2599.370, 3676.535), // = ( 917 x 1297 ) mm = ( 36.10 x 51.06 ) in + 'C1' => array( 1836.850, 2599.370), // = ( 648 x 917 ) mm = ( 25.51 x 36.10 ) in + 'C2' => array( 1298.268, 1836.850), // = ( 458 x 648 ) mm = ( 18.03 x 25.51 ) in + 'C3' => array( 918.425, 1298.268), // = ( 324 x 458 ) mm = ( 12.76 x 18.03 ) in + 'C4' => array( 649.134, 918.425), // = ( 229 x 324 ) mm = ( 9.02 x 12.76 ) in + 'C5' => array( 459.213, 649.134), // = ( 162 x 229 ) mm = ( 6.38 x 9.02 ) in + 'C6' => array( 323.150, 459.213), // = ( 114 x 162 ) mm = ( 4.49 x 6.38 ) in + 'C7' => array( 229.606, 323.150), // = ( 81 x 114 ) mm = ( 3.19 x 4.49 ) in + 'C8' => array( 161.575, 229.606), // = ( 57 x 81 ) mm = ( 2.24 x 3.19 ) in + 'C9' => array( 113.386, 161.575), // = ( 40 x 57 ) mm = ( 1.57 x 2.24 ) in + 'C10' => array( 79.370, 113.386), // = ( 28 x 40 ) mm = ( 1.10 x 1.57 ) in + 'C11' => array( 56.693, 79.370), // = ( 20 x 28 ) mm = ( 0.79 x 1.10 ) in + 'C12' => array( 39.685, 56.693), // = ( 14 x 20 ) mm = ( 0.55 x 0.79 ) in + 'C76' => array( 229.606, 459.213), // = ( 81 x 162 ) mm = ( 3.19 x 6.38 ) in + 'DL' => array( 311.811, 623.622), // = ( 110 x 220 ) mm = ( 4.33 x 8.66 ) in + 'DLE' => array( 323.150, 637.795), // = ( 114 x 225 ) mm = ( 4.49 x 8.86 ) in + 'DLX' => array( 340.158, 666.142), // = ( 120 x 235 ) mm = ( 4.72 x 9.25 ) in + 'DLP' => array( 280.630, 595.276), // = ( 99 x 210 ) mm = ( 3.90 x 8.27 ) in (1/3 A4) + // SIS 014711 E Series + 'E0' => array( 2491.654, 3517.795), // = ( 879 x 1241 ) mm = ( 34.61 x 48.86 ) in + 'E1' => array( 1757.480, 2491.654), // = ( 620 x 879 ) mm = ( 24.41 x 34.61 ) in + 'E2' => array( 1247.244, 1757.480), // = ( 440 x 620 ) mm = ( 17.32 x 24.41 ) in + 'E3' => array( 878.740, 1247.244), // = ( 310 x 440 ) mm = ( 12.20 x 17.32 ) in + 'E4' => array( 623.622, 878.740), // = ( 220 x 310 ) mm = ( 8.66 x 12.20 ) in + 'E5' => array( 439.370, 623.622), // = ( 155 x 220 ) mm = ( 6.10 x 8.66 ) in + 'E6' => array( 311.811, 439.370), // = ( 110 x 155 ) mm = ( 4.33 x 6.10 ) in + 'E7' => array( 221.102, 311.811), // = ( 78 x 110 ) mm = ( 3.07 x 4.33 ) in + 'E8' => array( 155.906, 221.102), // = ( 55 x 78 ) mm = ( 2.17 x 3.07 ) in + 'E9' => array( 110.551, 155.906), // = ( 39 x 55 ) mm = ( 1.54 x 2.17 ) in + 'E10' => array( 76.535, 110.551), // = ( 27 x 39 ) mm = ( 1.06 x 1.54 ) in + 'E11' => array( 53.858, 76.535), // = ( 19 x 27 ) mm = ( 0.75 x 1.06 ) in + 'E12' => array( 36.850, 53.858), // = ( 13 x 19 ) mm = ( 0.51 x 0.75 ) in + // SIS 014711 G Series + 'G0' => array( 2715.591, 3838.110), // = ( 958 x 1354 ) mm = ( 37.72 x 53.31 ) in + 'G1' => array( 1919.055, 2715.591), // = ( 677 x 958 ) mm = ( 26.65 x 37.72 ) in + 'G2' => array( 1357.795, 1919.055), // = ( 479 x 677 ) mm = ( 18.86 x 26.65 ) in + 'G3' => array( 958.110, 1357.795), // = ( 338 x 479 ) mm = ( 13.31 x 18.86 ) in + 'G4' => array( 677.480, 958.110), // = ( 239 x 338 ) mm = ( 9.41 x 13.31 ) in + 'G5' => array( 479.055, 677.480), // = ( 169 x 239 ) mm = ( 6.65 x 9.41 ) in + 'G6' => array( 337.323, 479.055), // = ( 119 x 169 ) mm = ( 4.69 x 6.65 ) in + 'G7' => array( 238.110, 337.323), // = ( 84 x 119 ) mm = ( 3.31 x 4.69 ) in + 'G8' => array( 167.244, 238.110), // = ( 59 x 84 ) mm = ( 2.32 x 3.31 ) in + 'G9' => array( 119.055, 167.244), // = ( 42 x 59 ) mm = ( 1.65 x 2.32 ) in + 'G10' => array( 82.205, 119.055), // = ( 29 x 42 ) mm = ( 1.14 x 1.65 ) in + 'G11' => array( 59.528, 82.205), // = ( 21 x 29 ) mm = ( 0.83 x 1.14 ) in + 'G12' => array( 39.685, 59.528), // = ( 14 x 21 ) mm = ( 0.55 x 0.83 ) in + // ISO Press + 'RA0' => array( 2437.795, 3458.268), // = ( 860 x 1220 ) mm = ( 33.86 x 48.03 ) in + 'RA1' => array( 1729.134, 2437.795), // = ( 610 x 860 ) mm = ( 24.02 x 33.86 ) in + 'RA2' => array( 1218.898, 1729.134), // = ( 430 x 610 ) mm = ( 16.93 x 24.02 ) in + 'RA3' => array( 864.567, 1218.898), // = ( 305 x 430 ) mm = ( 12.01 x 16.93 ) in + 'RA4' => array( 609.449, 864.567), // = ( 215 x 305 ) mm = ( 8.46 x 12.01 ) in + 'SRA0' => array( 2551.181, 3628.346), // = ( 900 x 1280 ) mm = ( 35.43 x 50.39 ) in + 'SRA1' => array( 1814.173, 2551.181), // = ( 640 x 900 ) mm = ( 25.20 x 35.43 ) in + 'SRA2' => array( 1275.591, 1814.173), // = ( 450 x 640 ) mm = ( 17.72 x 25.20 ) in + 'SRA3' => array( 907.087, 1275.591), // = ( 320 x 450 ) mm = ( 12.60 x 17.72 ) in + 'SRA4' => array( 637.795, 907.087), // = ( 225 x 320 ) mm = ( 8.86 x 12.60 ) in + // German DIN 476 + '4A0' => array( 4767.874, 6740.787), // = ( 1682 x 2378 ) mm = ( 66.22 x 93.62 ) in + '2A0' => array( 3370.394, 4767.874), // = ( 1189 x 1682 ) mm = ( 46.81 x 66.22 ) in + // Variations on the ISO Standard + 'A2_EXTRA' => array( 1261.417, 1754.646), // = ( 445 x 619 ) mm = ( 17.52 x 24.37 ) in + 'A3+' => array( 932.598, 1369.134), // = ( 329 x 483 ) mm = ( 12.95 x 19.02 ) in + 'A3_EXTRA' => array( 912.756, 1261.417), // = ( 322 x 445 ) mm = ( 12.68 x 17.52 ) in + 'A3_SUPER' => array( 864.567, 1440.000), // = ( 305 x 508 ) mm = ( 12.01 x 20.00 ) in + 'SUPER_A3' => array( 864.567, 1380.472), // = ( 305 x 487 ) mm = ( 12.01 x 19.17 ) in + 'A4_EXTRA' => array( 666.142, 912.756), // = ( 235 x 322 ) mm = ( 9.25 x 12.68 ) in + 'A4_SUPER' => array( 649.134, 912.756), // = ( 229 x 322 ) mm = ( 9.02 x 12.68 ) in + 'SUPER_A4' => array( 643.465, 1009.134), // = ( 227 x 356 ) mm = ( 8.94 x 14.02 ) in + 'A4_LONG' => array( 595.276, 986.457), // = ( 210 x 348 ) mm = ( 8.27 x 13.70 ) in + 'F4' => array( 595.276, 935.433), // = ( 210 x 330 ) mm = ( 8.27 x 12.99 ) in + 'SO_B5_EXTRA' => array( 572.598, 782.362), // = ( 202 x 276 ) mm = ( 7.95 x 10.87 ) in + 'A5_EXTRA' => array( 490.394, 666.142), // = ( 173 x 235 ) mm = ( 6.81 x 9.25 ) in + // ANSI Series + 'ANSI_E' => array( 2448.000, 3168.000), // = ( 864 x 1118 ) mm = ( 34.00 x 44.00 ) in + 'ANSI_D' => array( 1584.000, 2448.000), // = ( 559 x 864 ) mm = ( 22.00 x 34.00 ) in + 'ANSI_C' => array( 1224.000, 1584.000), // = ( 432 x 559 ) mm = ( 17.00 x 22.00 ) in + 'ANSI_B' => array( 792.000, 1224.000), // = ( 279 x 432 ) mm = ( 11.00 x 17.00 ) in + 'ANSI_A' => array( 612.000, 792.000), // = ( 216 x 279 ) mm = ( 8.50 x 11.00 ) in + // Traditional 'Loose' North American Paper Sizes + 'USLEDGER' => array( 1224.000, 792.000), // = ( 432 x 279 ) mm = ( 17.00 x 11.00 ) in + 'LEDGER' => array( 1224.000, 792.000), // = ( 432 x 279 ) mm = ( 17.00 x 11.00 ) in + 'ORGANIZERK' => array( 792.000, 1224.000), // = ( 279 x 432 ) mm = ( 11.00 x 17.00 ) in + 'BIBLE' => array( 792.000, 1224.000), // = ( 279 x 432 ) mm = ( 11.00 x 17.00 ) in + 'USTABLOID' => array( 792.000, 1224.000), // = ( 279 x 432 ) mm = ( 11.00 x 17.00 ) in + 'TABLOID' => array( 792.000, 1224.000), // = ( 279 x 432 ) mm = ( 11.00 x 17.00 ) in + 'ORGANIZERM' => array( 612.000, 792.000), // = ( 216 x 279 ) mm = ( 8.50 x 11.00 ) in + 'USLETTER' => array( 612.000, 792.000), // = ( 216 x 279 ) mm = ( 8.50 x 11.00 ) in + 'LETTER' => array( 612.000, 792.000), // = ( 216 x 279 ) mm = ( 8.50 x 11.00 ) in + 'USLEGAL' => array( 612.000, 1008.000), // = ( 216 x 356 ) mm = ( 8.50 x 14.00 ) in + 'LEGAL' => array( 612.000, 1008.000), // = ( 216 x 356 ) mm = ( 8.50 x 14.00 ) in + 'GOVERNMENTLETTER' => array( 576.000, 756.000), // = ( 203 x 267 ) mm = ( 8.00 x 10.50 ) in + 'GLETTER' => array( 576.000, 756.000), // = ( 203 x 267 ) mm = ( 8.00 x 10.50 ) in + 'JUNIORLEGAL' => array( 576.000, 360.000), // = ( 203 x 127 ) mm = ( 8.00 x 5.00 ) in + 'JLEGAL' => array( 576.000, 360.000), // = ( 203 x 127 ) mm = ( 8.00 x 5.00 ) in + // Other North American Paper Sizes + 'QUADDEMY' => array( 2520.000, 3240.000), // = ( 889 x 1143 ) mm = ( 35.00 x 45.00 ) in + 'SUPER_B' => array( 936.000, 1368.000), // = ( 330 x 483 ) mm = ( 13.00 x 19.00 ) in + 'QUARTO' => array( 648.000, 792.000), // = ( 229 x 279 ) mm = ( 9.00 x 11.00 ) in + 'GOVERNMENTLEGAL' => array( 612.000, 936.000), // = ( 216 x 330 ) mm = ( 8.50 x 13.00 ) in + 'FOLIO' => array( 612.000, 936.000), // = ( 216 x 330 ) mm = ( 8.50 x 13.00 ) in + 'MONARCH' => array( 522.000, 756.000), // = ( 184 x 267 ) mm = ( 7.25 x 10.50 ) in + 'EXECUTIVE' => array( 522.000, 756.000), // = ( 184 x 267 ) mm = ( 7.25 x 10.50 ) in + 'ORGANIZERL' => array( 396.000, 612.000), // = ( 140 x 216 ) mm = ( 5.50 x 8.50 ) in + 'STATEMENT' => array( 396.000, 612.000), // = ( 140 x 216 ) mm = ( 5.50 x 8.50 ) in + 'MEMO' => array( 396.000, 612.000), // = ( 140 x 216 ) mm = ( 5.50 x 8.50 ) in + 'FOOLSCAP' => array( 595.440, 936.000), // = ( 210 x 330 ) mm = ( 8.27 x 13.00 ) in + 'COMPACT' => array( 306.000, 486.000), // = ( 108 x 171 ) mm = ( 4.25 x 6.75 ) in + 'ORGANIZERJ' => array( 198.000, 360.000), // = ( 70 x 127 ) mm = ( 2.75 x 5.00 ) in + // Canadian standard CAN 2-9.60M + 'P1' => array( 1587.402, 2437.795), // = ( 560 x 860 ) mm = ( 22.05 x 33.86 ) in + 'P2' => array( 1218.898, 1587.402), // = ( 430 x 560 ) mm = ( 16.93 x 22.05 ) in + 'P3' => array( 793.701, 1218.898), // = ( 280 x 430 ) mm = ( 11.02 x 16.93 ) in + 'P4' => array( 609.449, 793.701), // = ( 215 x 280 ) mm = ( 8.46 x 11.02 ) in + 'P5' => array( 396.850, 609.449), // = ( 140 x 215 ) mm = ( 5.51 x 8.46 ) in + 'P6' => array( 303.307, 396.850), // = ( 107 x 140 ) mm = ( 4.21 x 5.51 ) in + // North American Architectural Sizes + 'ARCH_E' => array( 2592.000, 3456.000), // = ( 914 x 1219 ) mm = ( 36.00 x 48.00 ) in + 'ARCH_E1' => array( 2160.000, 3024.000), // = ( 762 x 1067 ) mm = ( 30.00 x 42.00 ) in + 'ARCH_D' => array( 1728.000, 2592.000), // = ( 610 x 914 ) mm = ( 24.00 x 36.00 ) in + 'BROADSHEET' => array( 1296.000, 1728.000), // = ( 457 x 610 ) mm = ( 18.00 x 24.00 ) in + 'ARCH_C' => array( 1296.000, 1728.000), // = ( 457 x 610 ) mm = ( 18.00 x 24.00 ) in + 'ARCH_B' => array( 864.000, 1296.000), // = ( 305 x 457 ) mm = ( 12.00 x 18.00 ) in + 'ARCH_A' => array( 648.000, 864.000), // = ( 229 x 305 ) mm = ( 9.00 x 12.00 ) in + // -- North American Envelope Sizes + // - Announcement Envelopes + 'ANNENV_A2' => array( 314.640, 414.000), // = ( 111 x 146 ) mm = ( 4.37 x 5.75 ) in + 'ANNENV_A6' => array( 342.000, 468.000), // = ( 121 x 165 ) mm = ( 4.75 x 6.50 ) in + 'ANNENV_A7' => array( 378.000, 522.000), // = ( 133 x 184 ) mm = ( 5.25 x 7.25 ) in + 'ANNENV_A8' => array( 396.000, 584.640), // = ( 140 x 206 ) mm = ( 5.50 x 8.12 ) in + 'ANNENV_A10' => array( 450.000, 692.640), // = ( 159 x 244 ) mm = ( 6.25 x 9.62 ) in + 'ANNENV_SLIM' => array( 278.640, 638.640), // = ( 98 x 225 ) mm = ( 3.87 x 8.87 ) in + // - Commercial Envelopes + 'COMMENV_N6_1/4' => array( 252.000, 432.000), // = ( 89 x 152 ) mm = ( 3.50 x 6.00 ) in + 'COMMENV_N6_3/4' => array( 260.640, 468.000), // = ( 92 x 165 ) mm = ( 3.62 x 6.50 ) in + 'COMMENV_N8' => array( 278.640, 540.000), // = ( 98 x 191 ) mm = ( 3.87 x 7.50 ) in + 'COMMENV_N9' => array( 278.640, 638.640), // = ( 98 x 225 ) mm = ( 3.87 x 8.87 ) in + 'COMMENV_N10' => array( 296.640, 684.000), // = ( 105 x 241 ) mm = ( 4.12 x 9.50 ) in + 'COMMENV_N11' => array( 324.000, 746.640), // = ( 114 x 263 ) mm = ( 4.50 x 10.37 ) in + 'COMMENV_N12' => array( 342.000, 792.000), // = ( 121 x 279 ) mm = ( 4.75 x 11.00 ) in + 'COMMENV_N14' => array( 360.000, 828.000), // = ( 127 x 292 ) mm = ( 5.00 x 11.50 ) in + // - Catalogue Envelopes + 'CATENV_N1' => array( 432.000, 648.000), // = ( 152 x 229 ) mm = ( 6.00 x 9.00 ) in + 'CATENV_N1_3/4' => array( 468.000, 684.000), // = ( 165 x 241 ) mm = ( 6.50 x 9.50 ) in + 'CATENV_N2' => array( 468.000, 720.000), // = ( 165 x 254 ) mm = ( 6.50 x 10.00 ) in + 'CATENV_N3' => array( 504.000, 720.000), // = ( 178 x 254 ) mm = ( 7.00 x 10.00 ) in + 'CATENV_N6' => array( 540.000, 756.000), // = ( 191 x 267 ) mm = ( 7.50 x 10.50 ) in + 'CATENV_N7' => array( 576.000, 792.000), // = ( 203 x 279 ) mm = ( 8.00 x 11.00 ) in + 'CATENV_N8' => array( 594.000, 810.000), // = ( 210 x 286 ) mm = ( 8.25 x 11.25 ) in + 'CATENV_N9_1/2' => array( 612.000, 756.000), // = ( 216 x 267 ) mm = ( 8.50 x 10.50 ) in + 'CATENV_N9_3/4' => array( 630.000, 810.000), // = ( 222 x 286 ) mm = ( 8.75 x 11.25 ) in + 'CATENV_N10_1/2' => array( 648.000, 864.000), // = ( 229 x 305 ) mm = ( 9.00 x 12.00 ) in + 'CATENV_N12_1/2' => array( 684.000, 900.000), // = ( 241 x 318 ) mm = ( 9.50 x 12.50 ) in + 'CATENV_N13_1/2' => array( 720.000, 936.000), // = ( 254 x 330 ) mm = ( 10.00 x 13.00 ) in + 'CATENV_N14_1/4' => array( 810.000, 882.000), // = ( 286 x 311 ) mm = ( 11.25 x 12.25 ) in + 'CATENV_N14_1/2' => array( 828.000, 1044.000), // = ( 292 x 368 ) mm = ( 11.50 x 14.50 ) in + // Japanese (JIS P 0138-61) Standard B-Series + 'JIS_B0' => array( 2919.685, 4127.244), // = ( 1030 x 1456 ) mm = ( 40.55 x 57.32 ) in + 'JIS_B1' => array( 2063.622, 2919.685), // = ( 728 x 1030 ) mm = ( 28.66 x 40.55 ) in + 'JIS_B2' => array( 1459.843, 2063.622), // = ( 515 x 728 ) mm = ( 20.28 x 28.66 ) in + 'JIS_B3' => array( 1031.811, 1459.843), // = ( 364 x 515 ) mm = ( 14.33 x 20.28 ) in + 'JIS_B4' => array( 728.504, 1031.811), // = ( 257 x 364 ) mm = ( 10.12 x 14.33 ) in + 'JIS_B5' => array( 515.906, 728.504), // = ( 182 x 257 ) mm = ( 7.17 x 10.12 ) in + 'JIS_B6' => array( 362.835, 515.906), // = ( 128 x 182 ) mm = ( 5.04 x 7.17 ) in + 'JIS_B7' => array( 257.953, 362.835), // = ( 91 x 128 ) mm = ( 3.58 x 5.04 ) in + 'JIS_B8' => array( 181.417, 257.953), // = ( 64 x 91 ) mm = ( 2.52 x 3.58 ) in + 'JIS_B9' => array( 127.559, 181.417), // = ( 45 x 64 ) mm = ( 1.77 x 2.52 ) in + 'JIS_B10' => array( 90.709, 127.559), // = ( 32 x 45 ) mm = ( 1.26 x 1.77 ) in + 'JIS_B11' => array( 62.362, 90.709), // = ( 22 x 32 ) mm = ( 0.87 x 1.26 ) in + 'JIS_B12' => array( 45.354, 62.362), // = ( 16 x 22 ) mm = ( 0.63 x 0.87 ) in + // PA Series + 'PA0' => array( 2381.102, 3174.803), // = ( 840 x 1120 ) mm = ( 33.07 x 44.09 ) in + 'PA1' => array( 1587.402, 2381.102), // = ( 560 x 840 ) mm = ( 22.05 x 33.07 ) in + 'PA2' => array( 1190.551, 1587.402), // = ( 420 x 560 ) mm = ( 16.54 x 22.05 ) in + 'PA3' => array( 793.701, 1190.551), // = ( 280 x 420 ) mm = ( 11.02 x 16.54 ) in + 'PA4' => array( 595.276, 793.701), // = ( 210 x 280 ) mm = ( 8.27 x 11.02 ) in + 'PA5' => array( 396.850, 595.276), // = ( 140 x 210 ) mm = ( 5.51 x 8.27 ) in + 'PA6' => array( 297.638, 396.850), // = ( 105 x 140 ) mm = ( 4.13 x 5.51 ) in + 'PA7' => array( 198.425, 297.638), // = ( 70 x 105 ) mm = ( 2.76 x 4.13 ) in + 'PA8' => array( 147.402, 198.425), // = ( 52 x 70 ) mm = ( 2.05 x 2.76 ) in + 'PA9' => array( 99.213, 147.402), // = ( 35 x 52 ) mm = ( 1.38 x 2.05 ) in + 'PA10' => array( 73.701, 99.213), // = ( 26 x 35 ) mm = ( 1.02 x 1.38 ) in + // Standard Photographic Print Sizes + 'PASSPORT_PHOTO' => array( 99.213, 127.559), // = ( 35 x 45 ) mm = ( 1.38 x 1.77 ) in + 'E' => array( 233.858, 340.157), // = ( 82 x 120 ) mm = ( 3.25 x 4.72 ) in + 'L' => array( 252.283, 360.000), // = ( 89 x 127 ) mm = ( 3.50 x 5.00 ) in + '3R' => array( 252.283, 360.000), // = ( 89 x 127 ) mm = ( 3.50 x 5.00 ) in + 'KG' => array( 289.134, 430.866), // = ( 102 x 152 ) mm = ( 4.02 x 5.98 ) in + '4R' => array( 289.134, 430.866), // = ( 102 x 152 ) mm = ( 4.02 x 5.98 ) in + '4D' => array( 340.157, 430.866), // = ( 120 x 152 ) mm = ( 4.72 x 5.98 ) in + '2L' => array( 360.000, 504.567), // = ( 127 x 178 ) mm = ( 5.00 x 7.01 ) in + '5R' => array( 360.000, 504.567), // = ( 127 x 178 ) mm = ( 5.00 x 7.01 ) in + '8P' => array( 430.866, 575.433), // = ( 152 x 203 ) mm = ( 5.98 x 7.99 ) in + '6R' => array( 430.866, 575.433), // = ( 152 x 203 ) mm = ( 5.98 x 7.99 ) in + '6P' => array( 575.433, 720.000), // = ( 203 x 254 ) mm = ( 7.99 x 10.00 ) in + '8R' => array( 575.433, 720.000), // = ( 203 x 254 ) mm = ( 7.99 x 10.00 ) in + '6PW' => array( 575.433, 864.567), // = ( 203 x 305 ) mm = ( 7.99 x 12.01 ) in + 'S8R' => array( 575.433, 864.567), // = ( 203 x 305 ) mm = ( 7.99 x 12.01 ) in + '4P' => array( 720.000, 864.567), // = ( 254 x 305 ) mm = ( 10.00 x 12.01 ) in + '10R' => array( 720.000, 864.567), // = ( 254 x 305 ) mm = ( 10.00 x 12.01 ) in + '4PW' => array( 720.000, 1080.000), // = ( 254 x 381 ) mm = ( 10.00 x 15.00 ) in + 'S10R' => array( 720.000, 1080.000), // = ( 254 x 381 ) mm = ( 10.00 x 15.00 ) in + '11R' => array( 790.866, 1009.134), // = ( 279 x 356 ) mm = ( 10.98 x 14.02 ) in + 'S11R' => array( 790.866, 1224.567), // = ( 279 x 432 ) mm = ( 10.98 x 17.01 ) in + '12R' => array( 864.567, 1080.000), // = ( 305 x 381 ) mm = ( 12.01 x 15.00 ) in + 'S12R' => array( 864.567, 1292.598), // = ( 305 x 456 ) mm = ( 12.01 x 17.95 ) in + // Common Newspaper Sizes + 'NEWSPAPER_BROADSHEET' => array( 2125.984, 1700.787), // = ( 750 x 600 ) mm = ( 29.53 x 23.62 ) in + 'NEWSPAPER_BERLINER' => array( 1332.283, 892.913), // = ( 470 x 315 ) mm = ( 18.50 x 12.40 ) in + 'NEWSPAPER_TABLOID' => array( 1218.898, 793.701), // = ( 430 x 280 ) mm = ( 16.93 x 11.02 ) in + 'NEWSPAPER_COMPACT' => array( 1218.898, 793.701), // = ( 430 x 280 ) mm = ( 16.93 x 11.02 ) in + // Business Cards + 'CREDIT_CARD' => array( 153.014, 242.646), // = ( 54 x 86 ) mm = ( 2.13 x 3.37 ) in + 'BUSINESS_CARD' => array( 153.014, 242.646), // = ( 54 x 86 ) mm = ( 2.13 x 3.37 ) in + 'BUSINESS_CARD_ISO7810' => array( 153.014, 242.646), // = ( 54 x 86 ) mm = ( 2.13 x 3.37 ) in + 'BUSINESS_CARD_ISO216' => array( 147.402, 209.764), // = ( 52 x 74 ) mm = ( 2.05 x 2.91 ) in + 'BUSINESS_CARD_IT' => array( 155.906, 240.945), // = ( 55 x 85 ) mm = ( 2.17 x 3.35 ) in + 'BUSINESS_CARD_UK' => array( 155.906, 240.945), // = ( 55 x 85 ) mm = ( 2.17 x 3.35 ) in + 'BUSINESS_CARD_FR' => array( 155.906, 240.945), // = ( 55 x 85 ) mm = ( 2.17 x 3.35 ) in + 'BUSINESS_CARD_DE' => array( 155.906, 240.945), // = ( 55 x 85 ) mm = ( 2.17 x 3.35 ) in + 'BUSINESS_CARD_ES' => array( 155.906, 240.945), // = ( 55 x 85 ) mm = ( 2.17 x 3.35 ) in + 'BUSINESS_CARD_CA' => array( 144.567, 252.283), // = ( 51 x 89 ) mm = ( 2.01 x 3.50 ) in + 'BUSINESS_CARD_US' => array( 144.567, 252.283), // = ( 51 x 89 ) mm = ( 2.01 x 3.50 ) in + 'BUSINESS_CARD_JP' => array( 155.906, 257.953), // = ( 55 x 91 ) mm = ( 2.17 x 3.58 ) in + 'BUSINESS_CARD_HK' => array( 153.071, 255.118), // = ( 54 x 90 ) mm = ( 2.13 x 3.54 ) in + 'BUSINESS_CARD_AU' => array( 155.906, 255.118), // = ( 55 x 90 ) mm = ( 2.17 x 3.54 ) in + 'BUSINESS_CARD_DK' => array( 155.906, 255.118), // = ( 55 x 90 ) mm = ( 2.17 x 3.54 ) in + 'BUSINESS_CARD_SE' => array( 155.906, 255.118), // = ( 55 x 90 ) mm = ( 2.17 x 3.54 ) in + 'BUSINESS_CARD_RU' => array( 141.732, 255.118), // = ( 50 x 90 ) mm = ( 1.97 x 3.54 ) in + 'BUSINESS_CARD_CZ' => array( 141.732, 255.118), // = ( 50 x 90 ) mm = ( 1.97 x 3.54 ) in + 'BUSINESS_CARD_FI' => array( 141.732, 255.118), // = ( 50 x 90 ) mm = ( 1.97 x 3.54 ) in + 'BUSINESS_CARD_HU' => array( 141.732, 255.118), // = ( 50 x 90 ) mm = ( 1.97 x 3.54 ) in + 'BUSINESS_CARD_IL' => array( 141.732, 255.118), // = ( 50 x 90 ) mm = ( 1.97 x 3.54 ) in + // Billboards + '4SHEET' => array( 2880.000, 4320.000), // = ( 1016 x 1524 ) mm = ( 40.00 x 60.00 ) in + '6SHEET' => array( 3401.575, 5102.362), // = ( 1200 x 1800 ) mm = ( 47.24 x 70.87 ) in + '12SHEET' => array( 8640.000, 4320.000), // = ( 3048 x 1524 ) mm = (120.00 x 60.00 ) in + '16SHEET' => array( 5760.000, 8640.000), // = ( 2032 x 3048 ) mm = ( 80.00 x 120.00) in + '32SHEET' => array(11520.000, 8640.000), // = ( 4064 x 3048 ) mm = (160.00 x 120.00) in + '48SHEET' => array(17280.000, 8640.000), // = ( 6096 x 3048 ) mm = (240.00 x 120.00) in + '64SHEET' => array(23040.000, 8640.000), // = ( 8128 x 3048 ) mm = (320.00 x 120.00) in + '96SHEET' => array(34560.000, 8640.000), // = (12192 x 3048 ) mm = (480.00 x 120.00) in + // -- Old European Sizes + // - Old Imperial English Sizes + 'EN_EMPEROR' => array( 3456.000, 5184.000), // = ( 1219 x 1829 ) mm = ( 48.00 x 72.00 ) in + 'EN_ANTIQUARIAN' => array( 2232.000, 3816.000), // = ( 787 x 1346 ) mm = ( 31.00 x 53.00 ) in + 'EN_GRAND_EAGLE' => array( 2070.000, 3024.000), // = ( 730 x 1067 ) mm = ( 28.75 x 42.00 ) in + 'EN_DOUBLE_ELEPHANT' => array( 1926.000, 2880.000), // = ( 679 x 1016 ) mm = ( 26.75 x 40.00 ) in + 'EN_ATLAS' => array( 1872.000, 2448.000), // = ( 660 x 864 ) mm = ( 26.00 x 34.00 ) in + 'EN_COLOMBIER' => array( 1692.000, 2484.000), // = ( 597 x 876 ) mm = ( 23.50 x 34.50 ) in + 'EN_ELEPHANT' => array( 1656.000, 2016.000), // = ( 584 x 711 ) mm = ( 23.00 x 28.00 ) in + 'EN_DOUBLE_DEMY' => array( 1620.000, 2556.000), // = ( 572 x 902 ) mm = ( 22.50 x 35.50 ) in + 'EN_IMPERIAL' => array( 1584.000, 2160.000), // = ( 559 x 762 ) mm = ( 22.00 x 30.00 ) in + 'EN_PRINCESS' => array( 1548.000, 2016.000), // = ( 546 x 711 ) mm = ( 21.50 x 28.00 ) in + 'EN_CARTRIDGE' => array( 1512.000, 1872.000), // = ( 533 x 660 ) mm = ( 21.00 x 26.00 ) in + 'EN_DOUBLE_LARGE_POST' => array( 1512.000, 2376.000), // = ( 533 x 838 ) mm = ( 21.00 x 33.00 ) in + 'EN_ROYAL' => array( 1440.000, 1800.000), // = ( 508 x 635 ) mm = ( 20.00 x 25.00 ) in + 'EN_SHEET' => array( 1404.000, 1692.000), // = ( 495 x 597 ) mm = ( 19.50 x 23.50 ) in + 'EN_HALF_POST' => array( 1404.000, 1692.000), // = ( 495 x 597 ) mm = ( 19.50 x 23.50 ) in + 'EN_SUPER_ROYAL' => array( 1368.000, 1944.000), // = ( 483 x 686 ) mm = ( 19.00 x 27.00 ) in + 'EN_DOUBLE_POST' => array( 1368.000, 2196.000), // = ( 483 x 775 ) mm = ( 19.00 x 30.50 ) in + 'EN_MEDIUM' => array( 1260.000, 1656.000), // = ( 445 x 584 ) mm = ( 17.50 x 23.00 ) in + 'EN_DEMY' => array( 1260.000, 1620.000), // = ( 445 x 572 ) mm = ( 17.50 x 22.50 ) in + 'EN_LARGE_POST' => array( 1188.000, 1512.000), // = ( 419 x 533 ) mm = ( 16.50 x 21.00 ) in + 'EN_COPY_DRAUGHT' => array( 1152.000, 1440.000), // = ( 406 x 508 ) mm = ( 16.00 x 20.00 ) in + 'EN_POST' => array( 1116.000, 1386.000), // = ( 394 x 489 ) mm = ( 15.50 x 19.25 ) in + 'EN_CROWN' => array( 1080.000, 1440.000), // = ( 381 x 508 ) mm = ( 15.00 x 20.00 ) in + 'EN_PINCHED_POST' => array( 1062.000, 1332.000), // = ( 375 x 470 ) mm = ( 14.75 x 18.50 ) in + 'EN_BRIEF' => array( 972.000, 1152.000), // = ( 343 x 406 ) mm = ( 13.50 x 16.00 ) in + 'EN_FOOLSCAP' => array( 972.000, 1224.000), // = ( 343 x 432 ) mm = ( 13.50 x 17.00 ) in + 'EN_SMALL_FOOLSCAP' => array( 954.000, 1188.000), // = ( 337 x 419 ) mm = ( 13.25 x 16.50 ) in + 'EN_POTT' => array( 900.000, 1080.000), // = ( 318 x 381 ) mm = ( 12.50 x 15.00 ) in + // - Old Imperial Belgian Sizes + 'BE_GRAND_AIGLE' => array( 1984.252, 2948.031), // = ( 700 x 1040 ) mm = ( 27.56 x 40.94 ) in + 'BE_COLOMBIER' => array( 1757.480, 2409.449), // = ( 620 x 850 ) mm = ( 24.41 x 33.46 ) in + 'BE_DOUBLE_CARRE' => array( 1757.480, 2607.874), // = ( 620 x 920 ) mm = ( 24.41 x 36.22 ) in + 'BE_ELEPHANT' => array( 1746.142, 2182.677), // = ( 616 x 770 ) mm = ( 24.25 x 30.31 ) in + 'BE_PETIT_AIGLE' => array( 1700.787, 2381.102), // = ( 600 x 840 ) mm = ( 23.62 x 33.07 ) in + 'BE_GRAND_JESUS' => array( 1559.055, 2069.291), // = ( 550 x 730 ) mm = ( 21.65 x 28.74 ) in + 'BE_JESUS' => array( 1530.709, 2069.291), // = ( 540 x 730 ) mm = ( 21.26 x 28.74 ) in + 'BE_RAISIN' => array( 1417.323, 1842.520), // = ( 500 x 650 ) mm = ( 19.69 x 25.59 ) in + 'BE_GRAND_MEDIAN' => array( 1303.937, 1714.961), // = ( 460 x 605 ) mm = ( 18.11 x 23.82 ) in + 'BE_DOUBLE_POSTE' => array( 1233.071, 1601.575), // = ( 435 x 565 ) mm = ( 17.13 x 22.24 ) in + 'BE_COQUILLE' => array( 1218.898, 1587.402), // = ( 430 x 560 ) mm = ( 16.93 x 22.05 ) in + 'BE_PETIT_MEDIAN' => array( 1176.378, 1502.362), // = ( 415 x 530 ) mm = ( 16.34 x 20.87 ) in + 'BE_RUCHE' => array( 1020.472, 1303.937), // = ( 360 x 460 ) mm = ( 14.17 x 18.11 ) in + 'BE_PROPATRIA' => array( 977.953, 1218.898), // = ( 345 x 430 ) mm = ( 13.58 x 16.93 ) in + 'BE_LYS' => array( 898.583, 1125.354), // = ( 317 x 397 ) mm = ( 12.48 x 15.63 ) in + 'BE_POT' => array( 870.236, 1088.504), // = ( 307 x 384 ) mm = ( 12.09 x 15.12 ) in + 'BE_ROSETTE' => array( 765.354, 983.622), // = ( 270 x 347 ) mm = ( 10.63 x 13.66 ) in + // - Old Imperial French Sizes + 'FR_UNIVERS' => array( 2834.646, 3685.039), // = ( 1000 x 1300 ) mm = ( 39.37 x 51.18 ) in + 'FR_DOUBLE_COLOMBIER' => array( 2551.181, 3571.654), // = ( 900 x 1260 ) mm = ( 35.43 x 49.61 ) in + 'FR_GRANDE_MONDE' => array( 2551.181, 3571.654), // = ( 900 x 1260 ) mm = ( 35.43 x 49.61 ) in + 'FR_DOUBLE_SOLEIL' => array( 2267.717, 3401.575), // = ( 800 x 1200 ) mm = ( 31.50 x 47.24 ) in + 'FR_DOUBLE_JESUS' => array( 2154.331, 3174.803), // = ( 760 x 1120 ) mm = ( 29.92 x 44.09 ) in + 'FR_GRAND_AIGLE' => array( 2125.984, 3004.724), // = ( 750 x 1060 ) mm = ( 29.53 x 41.73 ) in + 'FR_PETIT_AIGLE' => array( 1984.252, 2664.567), // = ( 700 x 940 ) mm = ( 27.56 x 37.01 ) in + 'FR_DOUBLE_RAISIN' => array( 1842.520, 2834.646), // = ( 650 x 1000 ) mm = ( 25.59 x 39.37 ) in + 'FR_JOURNAL' => array( 1842.520, 2664.567), // = ( 650 x 940 ) mm = ( 25.59 x 37.01 ) in + 'FR_COLOMBIER_AFFICHE' => array( 1785.827, 2551.181), // = ( 630 x 900 ) mm = ( 24.80 x 35.43 ) in + 'FR_DOUBLE_CAVALIER' => array( 1757.480, 2607.874), // = ( 620 x 920 ) mm = ( 24.41 x 36.22 ) in + 'FR_CLOCHE' => array( 1700.787, 2267.717), // = ( 600 x 800 ) mm = ( 23.62 x 31.50 ) in + 'FR_SOLEIL' => array( 1700.787, 2267.717), // = ( 600 x 800 ) mm = ( 23.62 x 31.50 ) in + 'FR_DOUBLE_CARRE' => array( 1587.402, 2551.181), // = ( 560 x 900 ) mm = ( 22.05 x 35.43 ) in + 'FR_DOUBLE_COQUILLE' => array( 1587.402, 2494.488), // = ( 560 x 880 ) mm = ( 22.05 x 34.65 ) in + 'FR_JESUS' => array( 1587.402, 2154.331), // = ( 560 x 760 ) mm = ( 22.05 x 29.92 ) in + 'FR_RAISIN' => array( 1417.323, 1842.520), // = ( 500 x 650 ) mm = ( 19.69 x 25.59 ) in + 'FR_CAVALIER' => array( 1303.937, 1757.480), // = ( 460 x 620 ) mm = ( 18.11 x 24.41 ) in + 'FR_DOUBLE_COURONNE' => array( 1303.937, 2040.945), // = ( 460 x 720 ) mm = ( 18.11 x 28.35 ) in + 'FR_CARRE' => array( 1275.591, 1587.402), // = ( 450 x 560 ) mm = ( 17.72 x 22.05 ) in + 'FR_COQUILLE' => array( 1247.244, 1587.402), // = ( 440 x 560 ) mm = ( 17.32 x 22.05 ) in + 'FR_DOUBLE_TELLIERE' => array( 1247.244, 1927.559), // = ( 440 x 680 ) mm = ( 17.32 x 26.77 ) in + 'FR_DOUBLE_CLOCHE' => array( 1133.858, 1700.787), // = ( 400 x 600 ) mm = ( 15.75 x 23.62 ) in + 'FR_DOUBLE_POT' => array( 1133.858, 1757.480), // = ( 400 x 620 ) mm = ( 15.75 x 24.41 ) in + 'FR_ECU' => array( 1133.858, 1474.016), // = ( 400 x 520 ) mm = ( 15.75 x 20.47 ) in + 'FR_COURONNE' => array( 1020.472, 1303.937), // = ( 360 x 460 ) mm = ( 14.17 x 18.11 ) in + 'FR_TELLIERE' => array( 963.780, 1247.244), // = ( 340 x 440 ) mm = ( 13.39 x 17.32 ) in + 'FR_POT' => array( 878.740, 1133.858), // = ( 310 x 400 ) mm = ( 12.20 x 15.75 ) in + ); + + + /** + * Get page dimensions from format name. + * @param $format (mixed) The format name @see self::$page_format<ul> + * @return array containing page width and height in points + * @since 5.0.010 (2010-05-17) * @public static */ - public static function getVectorsAngle($x1, $y1, $x2, $y2) { - $dprod = ($x1 * $x2) + ($y1 * $y2); - $dist1 = sqrt(($x1 * $x1) + ($y1 * $y1)); - $dist2 = sqrt(($x2 * $x2) + ($y2 * $y2)); - $angle = acos($dprod / ($dist1 * $dist2)); - if (is_nan($angle)) { - $angle = M_PI; - } - if ((($x1 * $y2) - ($x2 * $y1)) < 0) { - $angle *= -1; + public static function getPageSizeFromFormat($format) { + if (isset(self::$page_formats[$format])) { + return self::$page_formats[$format]; } - return $angle; + return self::$page_formats['A4']; } /** - * Split string by a regular expression. - * This is a wrapper for the preg_split function to avoid the bug: https://bugs.php.net/bug.php?id=45850 - * @param $pattern (string) The regular expression pattern to search for without the modifiers, as a string. - * @param $modifiers (string) The modifiers part of the pattern, - * @param $subject (string) The input string. - * @param $limit (int) If specified, then only substrings up to limit are returned with the rest of the string being placed in the last substring. A limit of -1, 0 or NULL means "no limit" and, as is standard across PHP, you can use NULL to skip to the flags parameter. - * @param $flags (int) The flags as specified on the preg_split PHP function. - * @return Returns an array containing substrings of subject split along boundaries matched by pattern.modifier - * @author Nicola Asuni - * @since 6.0.023 + * Set page boundaries. + * @param $page (int) page number + * @param $type (string) valid values are: <ul><li>'MediaBox' : the boundaries of the physical medium on which the page shall be displayed or printed;</li><li>'CropBox' : the visible region of default user space;</li><li>'BleedBox' : the region to which the contents of the page shall be clipped when output in a production environment;</li><li>'TrimBox' : the intended dimensions of the finished page after trimming;</li><li>'ArtBox' : the page's meaningful content (including potential white space).</li></ul> + * @param $llx (float) lower-left x coordinate in user units. + * @param $lly (float) lower-left y coordinate in user units. + * @param $urx (float) upper-right x coordinate in user units. + * @param $ury (float) upper-right y coordinate in user units. + * @param $points (boolean) If true uses user units as unit of measure, otherwise uses PDF points. + * @param $k (float) Scale factor (number of points in user unit). + * @param $pagedim (array) Array of page dimensions. + * @return pagedim array of page dimensions. + * @since 5.0.010 (2010-05-17) * @public static */ - public static function pregSplit($pattern, $modifiers, $subject, $limit=NULL, $flags=NULL) { - // the bug only happens on PHP 5.2 when using the u modifier - if ((strpos($modifiers, 'u') === FALSE) OR (count(preg_split('//u', "\n\t", -1, PREG_SPLIT_NO_EMPTY)) == 2)) { - return preg_split($pattern.$modifiers, $subject, $limit, $flags); + public static function setPageBoxes($page, $type, $llx, $lly, $urx, $ury, $points=false, $k, $pagedim=array()) { + if (!isset($pagedim[$page])) { + // initialize array + $pagedim[$page] = array(); } - // preg_split is bugged - try alternative solution - $ret = array(); - while (($nl = strpos($subject, "\n")) !== FALSE) { - $ret = array_merge($ret, preg_split($pattern.$modifiers, substr($subject, 0, $nl), $limit, $flags)); - $ret[] = "\n"; - $subject = substr($subject, ($nl + 1)); + if (!in_array($type, self::$pageboxes)) { + return; } - if (strlen($subject) > 0) { - $ret = array_merge($ret, preg_split($pattern.$modifiers, $subject, $limit, $flags)); + if ($points) { + $k = 1; } - return $ret; + $pagedim[$page][$type]['llx'] = ($llx * $k); + $pagedim[$page][$type]['lly'] = ($lly * $k); + $pagedim[$page][$type]['urx'] = ($urx * $k); + $pagedim[$page][$type]['ury'] = ($ury * $k); + return $pagedim; } /** - * Wrapper to use fopen only with local files - * @param filename (string) Name of the file to open - * @param $mode (string) - * @return Returns a file pointer resource on success, or FALSE on error. + * Swap X and Y coordinates of page boxes (change page boxes orientation). + * @param $page (int) page number + * @param $pagedim (array) Array of page dimensions. + * @return pagedim array of page dimensions. + * @since 5.0.010 (2010-05-17) * @public static */ - public static function fopenLocal($filename, $mode) { - if (strpos($filename, '://') === false) { - $filename = 'file://'.$filename; - } elseif (strpos($filename, 'file://') !== 0) { - return false; + public static function swapPageBoxCoordinates($page, $pagedim) { + foreach (self::$pageboxes as $type) { + // swap X and Y coordinates + if (isset($pagedim[$page][$type])) { + $tmp = $pagedim[$page][$type]['llx']; + $pagedim[$page][$type]['llx'] = $pagedim[$page][$type]['lly']; + $pagedim[$page][$type]['lly'] = $tmp; + $tmp = $pagedim[$page][$type]['urx']; + $pagedim[$page][$type]['urx'] = $pagedim[$page][$type]['ury']; + $pagedim[$page][$type]['ury'] = $tmp; + } } - return fopen($filename, $mode); + return $pagedim; } /** - * Reads entire file into a string. - * The file can be also an URL. - * @param $file (string) Name of the file or URL to read. - * @return The function returns the read data or FALSE on failure. - * @author Nicola Asuni - * @since 6.0.025 + * Get the canonical page layout mode. + * @param $layout (string) The page layout. Possible values are:<ul><li>SinglePage Display one page at a time</li><li>OneColumn Display the pages in one column</li><li>TwoColumnLeft Display the pages in two columns, with odd-numbered pages on the left</li><li>TwoColumnRight Display the pages in two columns, with odd-numbered pages on the right</li><li>TwoPageLeft (PDF 1.5) Display the pages two at a time, with odd-numbered pages on the left</li><li>TwoPageRight (PDF 1.5) Display the pages two at a time, with odd-numbered pages on the right</li></ul> + * @return (string) Canonical page layout name. * @public static */ - public static function fileGetContents($file) { - //$file = html_entity_decode($file); - // array of possible alternative paths/URLs - $alt = array($file); - // replace URL relative path with full real server path - if ((strlen($file) > 1) - AND ($file[0] == '/') - AND ($file[1] != '/') - AND !empty($_SERVER['DOCUMENT_ROOT']) - AND ($_SERVER['DOCUMENT_ROOT'] != '/')) { - $findroot = strpos($file, $_SERVER['DOCUMENT_ROOT']); - if (($findroot === false) OR ($findroot > 1)) { - if (substr($_SERVER['DOCUMENT_ROOT'], -1) == '/') { - $tmp = substr($_SERVER['DOCUMENT_ROOT'], 0, -1).$file; - } else { - $tmp = $_SERVER['DOCUMENT_ROOT'].$file; - } - $alt[] = htmlspecialchars_decode(urldecode($tmp)); + public static function getPageLayoutMode($layout='SinglePage') { + switch ($layout) { + case 'default': + case 'single': + case 'SinglePage': { + $layout_mode = 'SinglePage'; + break; } - } - // URL mode - $url = $file; - // check for missing protocol - if (preg_match('%^/{2}%', $url)) { - if (preg_match('%^([^:]+:)//%i', K_PATH_URL, $match)) { - $url = $match[1].str_replace(' ', '%20', $url); - $alt[] = $url; + case 'continuous': + case 'OneColumn': { + $layout_mode = 'OneColumn'; + break; } - } - $urldata = @parse_url($url); - if (!isset($urldata['query']) OR (strlen($urldata['query']) <= 0)) { - if (K_PATH_URL AND (strpos($url, K_PATH_URL) === 0)) { - // convert URL to full server path - $tmp = str_replace(K_PATH_URL, K_PATH_MAIN, $url); - $tmp = htmlspecialchars_decode(urldecode($tmp)); - $alt[] = $tmp; + case 'two': + case 'TwoColumnLeft': { + $layout_mode = 'TwoColumnLeft'; + break; + } + case 'TwoColumnRight': { + $layout_mode = 'TwoColumnRight'; + break; + } + case 'TwoPageLeft': { + $layout_mode = 'TwoPageLeft'; + break; + } + case 'TwoPageRight': { + $layout_mode = 'TwoPageRight'; + break; + } + default: { + $layout_mode = 'SinglePage'; } } - if (isset($_SERVER['SCRIPT_URI'])) { - $urldata = @parse_url($_SERVER['SCRIPT_URI']); - $alt[] = $urldata['scheme'].'://'.$urldata['host'].(($file[0] == '/') ? '' : '/').$file; - } - foreach ($alt as $f) { - $ret = @file_get_contents($f); - if (($ret === FALSE) - AND !ini_get('allow_url_fopen') - AND function_exists('curl_init') - AND preg_match('%^(https?|ftp)://%', $f)) { - // try to get remote file data using cURL - $cs = curl_init(); // curl session - curl_setopt($cs, CURLOPT_URL, $f); - curl_setopt($cs, CURLOPT_BINARYTRANSFER, true); - curl_setopt($cs, CURLOPT_FAILONERROR, true); - curl_setopt($cs, CURLOPT_RETURNTRANSFER, true); - if ((ini_get('open_basedir') == '') AND (!ini_get('safe_mode'))) { - curl_setopt($cs, CURLOPT_FOLLOWLOCATION, true); - } - curl_setopt($cs, CURLOPT_CONNECTTIMEOUT, 5); - curl_setopt($cs, CURLOPT_TIMEOUT, 30); - curl_setopt($cs, CURLOPT_SSL_VERIFYPEER, false); - curl_setopt($cs, CURLOPT_SSL_VERIFYHOST, false); - curl_setopt($cs, CURLOPT_USERAGENT, 'TCPDF'); - $ret = curl_exec($cs); - curl_close($cs); + return $layout_mode; + } + + /** + * Get the canonical page layout mode. + * @param $mode (string) A name object specifying how the document should be displayed when opened:<ul><li>UseNone Neither document outline nor thumbnail images visible</li><li>UseOutlines Document outline visible</li><li>UseThumbs Thumbnail images visible</li><li>FullScreen Full-screen mode, with no menu bar, window controls, or any other window visible</li><li>UseOC (PDF 1.5) Optional content group panel visible</li><li>UseAttachments (PDF 1.6) Attachments panel visible</li></ul> + * @return (string) Canonical page mode name. + * @public static + */ + public static function getPageMode($mode='UseNone') { + switch ($mode) { + case 'UseNone': { + $page_mode = 'UseNone'; + break; + } + case 'UseOutlines': { + $page_mode = 'UseOutlines'; + break; + } + case 'UseThumbs': { + $page_mode = 'UseThumbs'; + break; } - if ($ret !== FALSE) { + case 'FullScreen': { + $page_mode = 'FullScreen'; + break; + } + case 'UseOC': { + $page_mode = 'UseOC'; + break; + } + case '': { + $page_mode = 'UseAttachments'; break; } + default: { + $page_mode = 'UseNone'; + } } - return $ret; + return $page_mode; } + } // END OF TCPDF_STATIC CLASS //============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/tcpdf.php b/htdocs/includes/tecnickcom/tcpdf/tcpdf.php index b31e58bb2c6..599a3f8b968 100644 --- a/htdocs/includes/tecnickcom/tcpdf/tcpdf.php +++ b/htdocs/includes/tecnickcom/tcpdf/tcpdf.php @@ -1,9 +1,9 @@ <?php //============================================================+ // File name : tcpdf.php -// Version : 6.2.6 +// Version : 6.2.12 // Begin : 2002-08-03 -// Last Update : 2015-01-28 +// Last Update : 2015-06-18 // Author : Nicola Asuni - Tecnick.com LTD - www.tecnick.com - info@tecnick.com // License : GNU-LGPL v3 (http://www.gnu.org/copyleft/lesser.html) // ------------------------------------------------------------------- @@ -104,7 +104,7 @@ * Tools to encode your unicode fonts are on fonts/utils directory.</p> * @package com.tecnick.tcpdf * @author Nicola Asuni - * @version 6.2.6 + * @version 6.2.8 */ // TCPDF configuration @@ -128,7 +128,7 @@ require_once(dirname(__FILE__).'/include/tcpdf_static.php'); * TCPDF project (http://www.tcpdf.org) has been originally derived in 2002 from the Public Domain FPDF class by Olivier Plathey (http://www.fpdf.org), but now is almost entirely rewritten.<br> * @package com.tecnick.tcpdf * @brief PHP class for generating PDF documents without requiring external extensions. - * @version 6.2.6 + * @version 6.2.8 * @author Nicola Asuni - info@tecnick.com */ class TCPDF { @@ -5748,7 +5748,7 @@ class TCPDF { * @param $autopadding (boolean) if true, uses internal padding and automatically adjust it to account for line width. * @param $maxh (float) maximum height. It should be >= $h and less then remaining space to the bottom of the page, or 0 for disable this feature. This feature works only when $ishtml=false. * @param $valign (string) Vertical alignment of text (requires $maxh = $h > 0). Possible values are:<ul><li>T: TOP</li><li>M: middle</li><li>B: bottom</li></ul>. This feature works only when $ishtml=false and the cell must fit in a single page. - * @param $fitcell (boolean) if true attempt to fit all the text within the cell by reducing the font size (do not work in HTML mode). $maxh must be greater than 0 and wqual to $h. + * @param $fitcell (boolean) if true attempt to fit all the text within the cell by reducing the font size (do not work in HTML mode). $maxh must be greater than 0 and equal to $h. * @return int Return the number of cells or 1 for html mode. * @public * @since 1.3 @@ -10362,7 +10362,7 @@ class TCPDF { * @public */ public function addHtmlLink($url, $name, $fill=false, $firstline=false, $color='', $style=-1, $firstblock=false) { - if (isset($url[1]) AND ($url[0] == '#')) { + if (isset($url[1]) AND ($url[0] == '#') AND is_numeric($url[1])) { // convert url to internal link $lnkdata = explode(',', $url); if (isset($lnkdata[0]) ) { @@ -10632,8 +10632,7 @@ class TCPDF { */ protected function _UEvalue() { $hashkey = hash('sha256', $this->encryptdata['user_password'].$this->encryptdata['UKS'], true); - $iv = str_repeat("\x00", mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC)); - return mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $hashkey, $this->encryptdata['key'], MCRYPT_MODE_CBC, $iv); + return TCPDF_STATIC::_AESnopad($hashkey, $this->encryptdata['key']); } /** @@ -10683,8 +10682,7 @@ class TCPDF { */ protected function _OEvalue() { $hashkey = hash('sha256', $this->encryptdata['owner_password'].$this->encryptdata['OKS'].$this->encryptdata['U'], true); - $iv = str_repeat("\x00", mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC)); - return mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $hashkey, $this->encryptdata['key'], MCRYPT_MODE_CBC, $iv); + return TCPDF_STATIC::_AESnopad($hashkey, $this->encryptdata['key']); } /** @@ -10739,8 +10737,7 @@ class TCPDF { } $perms .= 'adb'; // bytes 9-11 $perms .= 'nick'; // bytes 12-15 - $iv = str_repeat("\x00", mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB)); - $this->encryptdata['perms'] = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $this->encryptdata['key'], $perms, MCRYPT_MODE_ECB, $iv); + $this->encryptdata['perms'] = TCPDF_STATIC::_AESnopad($this->encryptdata['key'], $perms); } else { // RC4-40, RC4-128, AES-128 // Pad passwords $this->encryptdata['user_password'] = substr($this->encryptdata['user_password'].TCPDF_STATIC::$enc_padding, 0, 32); @@ -10858,10 +10855,13 @@ class TCPDF { $this->encryptdata['StrF'] = 'StdCF'; } if ($mode > 1) { // AES - if (!extension_loaded('mcrypt')) { - $this->Error('AES encryption requires mcrypt library (http://www.php.net/manual/en/mcrypt.requirements.php).'); + if (!extension_loaded('openssl') && !extension_loaded('mcrypt')) { + $this->Error('AES encryption requires openssl or mcrypt extension (http://www.php.net/manual/en/mcrypt.requirements.php).'); } - if (mcrypt_get_cipher_name(MCRYPT_RIJNDAEL_128) === false) { + if (extension_loaded('openssl') && !in_array('aes-256-cbc', openssl_get_cipher_methods())) { + $this->Error('AES encryption requires openssl/aes-256-cbc cypher.'); + } + if (extension_loaded('mcrypt') && mcrypt_get_cipher_name(MCRYPT_RIJNDAEL_128) === false) { $this->Error('AES encryption requires MCRYPT_RIJNDAEL_128 cypher.'); } if (($mode == 3) AND !function_exists('hash')) { @@ -18649,7 +18649,7 @@ Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value: $this->lispacer = $prev_lispacer; if ($ln AND (!($cell AND ($dom[$key-1]['value'] == 'table')))) { $this->Ln($this->lasth); - if ($this->y < $maxbottomliney) { + if (($this->y < $maxbottomliney) AND ($startlinepage == $this->page)) { $this->y = $maxbottomliney; } } @@ -19427,8 +19427,9 @@ Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value: $prev_page = $this->page; $this->setPage($dom[($dom[$key]['parent'])]['endpage']); if ($this->num_columns > 1) { - if ((($this->current_column == 0) AND ($dom[($dom[$key]['parent'])]['endcolumn'] == ($this->num_columns - 1))) - OR (($this->current_column == $dom[($dom[$key]['parent'])]['endcolumn']) AND ($prev_page < $this->page))) { + if (($prev_page < $this->page) + AND ((($this->current_column == 0) AND ($dom[($dom[$key]['parent'])]['endcolumn'] == ($this->num_columns - 1))) + OR ($this->current_column == $dom[($dom[$key]['parent'])]['endcolumn']))) { // page jump $this->selectColumn(0); $dom[($dom[$key]['parent'])]['endcolumn'] = 0; diff --git a/htdocs/includes/tecnickcom/tcpdf/tcpdf_parser.php b/htdocs/includes/tecnickcom/tcpdf/tcpdf_parser.php index 85fc7fd3df3..780ec2129d1 100644 --- a/htdocs/includes/tecnickcom/tcpdf/tcpdf_parser.php +++ b/htdocs/includes/tecnickcom/tcpdf/tcpdf_parser.php @@ -1,9 +1,9 @@ <?php //============================================================+ // File name : tcpdf_parser.php -// Version : 1.0.15 +// Version : 1.0.16 // Begin : 2011-05-23 -// Last Update : 2015-01-24 +// Last Update : 2015-04-28 // Author : Nicola Asuni - Tecnick.com LTD - www.tecnick.com - info@tecnick.com // License : http://www.tecnick.com/pagefiles/tcpdf/LICENSE.TXT GNU-LGPLv3 // ------------------------------------------------------------------- @@ -297,6 +297,9 @@ class TCPDF_PARSER { $valid_crs = false; $columns = 0; $sarr = $xrefcrs[0][1]; + if (!is_array($sarr)) { + $sarr = array(); + } foreach ($sarr as $k => $v) { if (($v[0] == '/') AND ($v[1] == 'Type') AND (isset($sarr[($k +1)]) AND ($sarr[($k +1)][0] == '/') AND ($sarr[($k +1)][1] == 'XRef'))) { $valid_crs = true; -- GitLab From 8904828069474dae71e0d34865f8ed1ef0ef8626 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Doursenaud?= <rdoursenaud@gpcsolutions.fr> Date: Mon, 7 Dec 2015 13:48:04 +0100 Subject: [PATCH 125/197] Fix #3962 Moved removed libraries to suggest section --- composer.json | 8 ++--- composer.lock | 94 ++------------------------------------------------- 2 files changed, 6 insertions(+), 96 deletions(-) diff --git a/composer.json b/composer.json index afd53001f71..06d90c0e02e 100644 --- a/composer.json +++ b/composer.json @@ -21,9 +21,7 @@ "mobiledetect/mobiledetectlib": "2.8.3", "phpoffice/phpexcel": "1.8.1", "restler/framework": "^3.0", - "tecnickcom/tcpdf": "6.2.12", - "raven/raven": "^0.12.0", - "firephp/firephp-core": "^0.4.0" + "tecnickcom/tcpdf": "6.2.12" }, "suggest": { "ext-mysqlnd": "To use with MySQL or MariaDB", @@ -38,7 +36,9 @@ "ext-mbstring": "Handle non UTF-8 databases", "ext-soap": "Native SOAP", "ext-zip": "ODT and Excel support", - "ext-xml": "Excel support" + "ext-xml": "Excel support", + "firephp/firephp-core": "Logging to Firebug console support", + "raven/raven": "Sentry logging server support" }, "config": { "vendor-dir": "htdocs/includes" diff --git a/composer.lock b/composer.lock index fc8df3719ac..d29035c7329 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,8 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "e4ff9778aef8c35c239457e96b32ee5c", - "content-hash": "e98d327da132b265127ad23d79a49578", + "hash": "8359ca16a39a2910cad7f36784d10972", + "content-hash": "a7d53767afa4dc32484fac05f6ffde67", "packages": [ { "name": "ccampbell/chromephp", @@ -91,42 +91,6 @@ ], "time": "2014-02-26 15:43:10" }, - { - "name": "firephp/firephp-core", - "version": "v0.4.0", - "source": { - "type": "git", - "url": "https://github.com/firephp/firephp-core.git", - "reference": "fabad0f2503f9577fe8dd2cb1d1c7cd73ed2aacf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/firephp/firephp-core/zipball/fabad0f2503f9577fe8dd2cb1d1c7cd73ed2aacf", - "reference": "fabad0f2503f9577fe8dd2cb1d1c7cd73ed2aacf", - "shasum": "" - }, - "type": "library", - "autoload": { - "classmap": [ - "lib/FirePHPCore/FirePHP.class.php", - "lib/FirePHPCore/fb.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christoph Dorn", - "email": "christoph@christophdorn.com", - "homepage": "http://christophdorn.com" - } - ], - "description": "Traditional FirePHPCore library for sending PHP variables to the browser.", - "homepage": "https://github.com/firephp/firephp-core", - "time": "2013-04-23 15:28:20" - }, { "name": "mike42/escpos-php", "version": "dev-master", @@ -294,60 +258,6 @@ ], "time": "2015-05-01 07:00:55" }, - { - "name": "raven/raven", - "version": "0.12.1", - "source": { - "type": "git", - "url": "https://github.com/getsentry/raven-php.git", - "reference": "b325984c792ff89f985b73da9a3ad8ed8b520bca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/getsentry/raven-php/zipball/b325984c792ff89f985b73da9a3ad8ed8b520bca", - "reference": "b325984c792ff89f985b73da9a3ad8ed8b520bca", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "php": ">=5.2.4" - }, - "require-dev": { - "fabpot/php-cs-fixer": "^1.8.0", - "phpunit/phpunit": "^4.6.6" - }, - "bin": [ - "bin/raven" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.12.x-dev" - } - }, - "autoload": { - "psr-0": { - "Raven_": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD" - ], - "authors": [ - { - "name": "David Cramer", - "email": "dcramer@gmail.com" - } - ], - "description": "A PHP client for Sentry (http://getsentry.com)", - "homepage": "http://getsentry.com", - "keywords": [ - "log", - "logging" - ], - "time": "2015-08-25 22:38:46" - }, { "name": "restler/framework", "version": "3.0.0", -- GitLab From 9257bfc5df4f85362bb3c89bf8a4daea430fd5c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Doursenaud?= <rdoursenaud@gpcsolutions.fr> Date: Mon, 7 Dec 2015 13:53:59 +0100 Subject: [PATCH 126/197] Updated mobiledetect to 2.8.17 --- COPYRIGHT | 2 +- composer.json | 2 +- composer.lock | 18 +- .../mobiledetect/mobiledetectlib/.gitignore | 4 +- .../mobiledetect/mobiledetectlib/.travis.yml | 7 +- .../mobiledetect/mobiledetectlib/LICENSE.txt | 2 +- .../mobiledetectlib/Mobile_Detect.json | 190 +- .../mobiledetectlib/Mobile_Detect.php | 606 +- .../mobiledetect/mobiledetectlib/README.md | 120 +- .../mobiledetectlib/composer.json | 4 +- .../mobiledetectlib/composer.lock | 439 - .../mobiledetectlib/examples/demo.php | 16 +- .../mobiledetectlib/examples/test.php | 29 + .../mobiledetectlib/export/exportToJSON.php | 4 +- .../mobiledetectlib/tests/BasicsTest.php | 80 +- .../mobiledetectlib/tests/UA_List.inc.php | 1231 +-- .../mobiledetectlib/tests/UserAgentTest.php | 59 +- .../{VendorsTest.php => VendorsTest_tmp.php} | 44 +- .../mobiledetectlib/tests/phpunit.xml | 14 +- .../tests/providers/vendors/Acer.php | 28 + .../tests/providers/vendors/Alcatel.php | 49 + .../tests/providers/vendors/Allview.php | 11 + .../tests/providers/vendors/Amazon.php | 14 + .../tests/providers/vendors/Apple.php | 27 + .../tests/providers/vendors/Archos.php | 67 + .../tests/providers/vendors/Asus.php | 22 + .../tests/providers/vendors/Blackberry.php | 35 + .../tests/providers/vendors/Dell.php | 13 + .../tests/providers/vendors/Google.php | 18 + .../tests/providers/vendors/HP.php | 21 + .../tests/providers/vendors/HTC.php | 363 + .../tests/providers/vendors/Huawei.php | 17 + .../tests/providers/vendors/LG.php | 35 + .../tests/providers/vendors/Lava.php | 23 + .../tests/providers/vendors/Leader.php | 6 + .../tests/providers/vendors/Lenovo.php | 46 + .../tests/providers/vendors/Mi.php | 22 + .../tests/providers/vendors/Microsoft.php | 30 + .../tests/providers/vendors/Motorola.php | 52 + .../tests/providers/vendors/Nokia.php | 84 + .../tests/providers/vendors/Onda.php | 12 + .../tests/providers/vendors/Others.php | 531 ++ .../tests/providers/vendors/Prestigio.php | 12 + .../tests/providers/vendors/Samsung.php | 131 + .../tests/providers/vendors/Sony.php | 85 + .../tests/providers/vendors/SpecialCases.php | 206 + .../tests/providers/vendors/Vodafone.php | 11 + .../tests/providers/vendors/ZTE.php | 6 + .../mobiledetectlib/tests/ualist.json | 8197 ++++++++++++++++- 49 files changed, 10845 insertions(+), 2200 deletions(-) delete mode 100644 htdocs/includes/mobiledetect/mobiledetectlib/composer.lock create mode 100644 htdocs/includes/mobiledetect/mobiledetectlib/examples/test.php mode change 100644 => 100755 htdocs/includes/mobiledetect/mobiledetectlib/tests/BasicsTest.php rename htdocs/includes/mobiledetect/mobiledetectlib/tests/{VendorsTest.php => VendorsTest_tmp.php} (60%) create mode 100644 htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Acer.php create mode 100644 htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Alcatel.php create mode 100644 htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Allview.php create mode 100644 htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Amazon.php create mode 100644 htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Apple.php create mode 100644 htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Archos.php create mode 100644 htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Asus.php create mode 100644 htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Blackberry.php create mode 100644 htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Dell.php create mode 100644 htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Google.php create mode 100644 htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/HP.php create mode 100644 htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/HTC.php create mode 100644 htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Huawei.php create mode 100644 htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/LG.php create mode 100644 htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Lava.php create mode 100644 htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Leader.php create mode 100644 htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Lenovo.php create mode 100644 htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Mi.php create mode 100644 htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Microsoft.php create mode 100644 htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Motorola.php create mode 100644 htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Nokia.php create mode 100644 htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Onda.php create mode 100644 htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Others.php create mode 100644 htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Prestigio.php create mode 100644 htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Samsung.php create mode 100644 htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Sony.php create mode 100644 htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/SpecialCases.php create mode 100644 htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Vodafone.php create mode 100644 htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/ZTE.php diff --git a/COPYRIGHT b/COPYRIGHT index a0cf842b885..191639ed001 100644 --- a/COPYRIGHT +++ b/COPYRIGHT @@ -19,7 +19,7 @@ EvalMath 1.0 BSD Yes Escpos-php MIT License Yes Thermal receipt printer library, for use with ESC/POS compatible printers FPDI 1.5.2 Apache Software License 2.0 Yes PDF templates management GeoIP 1.4 LGPL-2.1+ Yes Sample code to make geoip convert (not into deb package) -Mobiledetect 2.8.3 MIT License Yes Detect mobile devices browsers +Mobiledetect 2.8.17 MIT License Yes Detect mobile devices browsers NuSoap 0.9.5 LGPL 2.1+ Yes Library to develop SOAP Web services (not into rpm and deb package) PEAR Mail_MIME 1.8.9 BSD Yes NuSoap dependency odtPHP 1.0.1 GPL-2+ b Yes Library to build/edit ODT files diff --git a/composer.json b/composer.json index 06d90c0e02e..583e08078af 100644 --- a/composer.json +++ b/composer.json @@ -18,7 +18,7 @@ "ccampbell/chromephp": "^4.1", "ckeditor/ckeditor": "dev-full/4.3.x#0b7c3f1", "mike42/escpos-php": "dev-master", - "mobiledetect/mobiledetectlib": "2.8.3", + "mobiledetect/mobiledetectlib": "2.8.17", "phpoffice/phpexcel": "1.8.1", "restler/framework": "^3.0", "tecnickcom/tcpdf": "6.2.12" diff --git a/composer.lock b/composer.lock index d29035c7329..da19c20fbc5 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,8 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "8359ca16a39a2910cad7f36784d10972", - "content-hash": "a7d53767afa4dc32484fac05f6ffde67", + "hash": "d8229cbb9aea945c9ca803bbe54d7aa7", + "content-hash": "47929ed42fb67e5159ccec6a3a5a45eb", "packages": [ { "name": "ccampbell/chromephp", @@ -151,22 +151,24 @@ }, { "name": "mobiledetect/mobiledetectlib", - "version": "2.8.3", + "version": "2.8.17", "source": { "type": "git", "url": "https://github.com/serbanghita/Mobile-Detect.git", - "reference": "f5753e4b90daffe50c902e99df5ce3c58fca3fee" + "reference": "b87da5f63a76e9615a0c74fcf168657b1ea7e41d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/serbanghita/Mobile-Detect/zipball/f5753e4b90daffe50c902e99df5ce3c58fca3fee", - "reference": "f5753e4b90daffe50c902e99df5ce3c58fca3fee", + "url": "https://api.github.com/repos/serbanghita/Mobile-Detect/zipball/b87da5f63a76e9615a0c74fcf168657b1ea7e41d", + "reference": "b87da5f63a76e9615a0c74fcf168657b1ea7e41d", "shasum": "" }, "require": { "php": ">=5.0.0" }, "require-dev": { + "codeclimate/php-test-reporter": "dev-master", + "johnkary/phpunit-speedtrap": "~1.0@dev", "phpunit/phpunit": "*" }, "type": "library", @@ -186,7 +188,7 @@ { "name": "Serban Ghita", "email": "serbanghita@gmail.com", - "homepage": "http://ghita.org", + "homepage": "http://mobiledetect.net", "role": "Developer" } ], @@ -199,7 +201,7 @@ "mobile detector", "php mobile detect" ], - "time": "2014-07-10 20:00:25" + "time": "2015-09-17 14:45:21" }, { "name": "phpoffice/phpexcel", diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/.gitignore b/htdocs/includes/mobiledetect/mobiledetectlib/.gitignore index 5e9bd942345..48b35e71455 100644 --- a/htdocs/includes/mobiledetect/mobiledetectlib/.gitignore +++ b/htdocs/includes/mobiledetect/mobiledetectlib/.gitignore @@ -6,4 +6,6 @@ nbproject/ /error.log /export/nicejson .idea/ -*.iml \ No newline at end of file +*.iml +/coverage +/phpunit.phar diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/.travis.yml b/htdocs/includes/mobiledetect/mobiledetectlib/.travis.yml index 7c5ebf36c2a..29af5249f0d 100644 --- a/htdocs/includes/mobiledetect/mobiledetectlib/.travis.yml +++ b/htdocs/includes/mobiledetect/mobiledetectlib/.travis.yml @@ -1,14 +1,17 @@ language: php php: - "5.2" - - "hhvm" + - "5.3" + - "5.4" + - "5.5" + - "5.6" branches: only: - devel script: - - phpunit --configuration tests/phpunit.xml + - phpunit -v -c tests/phpunit.xml notifications: email: false diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/LICENSE.txt b/htdocs/includes/mobiledetect/mobiledetectlib/LICENSE.txt index 101abf8be5f..90e632a7875 100644 --- a/htdocs/includes/mobiledetect/mobiledetectlib/LICENSE.txt +++ b/htdocs/includes/mobiledetect/mobiledetectlib/LICENSE.txt @@ -1,6 +1,6 @@ MIT License -Copyright (c) <2011-2014> <Serban Ghita> <serbanghita@gmail.com> +Copyright (c) <2011-2015> Serban Ghita, Nick Ilyin and contributors. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/Mobile_Detect.json b/htdocs/includes/mobiledetect/mobiledetectlib/Mobile_Detect.json index 7d61f6f9dee..323b1e2a50a 100644 --- a/htdocs/includes/mobiledetect/mobiledetectlib/Mobile_Detect.json +++ b/htdocs/includes/mobiledetect/mobiledetectlib/Mobile_Detect.json @@ -1,189 +1 @@ -{ - "version": "2.8.3", - "headerMatch": { - "HTTP_ACCEPT": { - "matches": [ - "application\/x-obml2d", - "application\/vnd.rim.html", - "text\/vnd.wap.wml", - "application\/vnd.wap.xhtml+xml" - ] - }, - "HTTP_X_WAP_PROFILE": null, - "HTTP_X_WAP_CLIENTID": null, - "HTTP_WAP_CONNECTION": null, - "HTTP_PROFILE": null, - "HTTP_X_OPERAMINI_PHONE_UA": null, - "HTTP_X_NOKIA_GATEWAY_ID": null, - "HTTP_X_ORANGE_ID": null, - "HTTP_X_VODAFONE_3GPDPCONTEXT": null, - "HTTP_X_HUAWEI_USERID": null, - "HTTP_UA_OS": null, - "HTTP_X_MOBILE_GATEWAY": null, - "HTTP_X_ATT_DEVICEID": null, - "HTTP_UA_CPU": { - "matches": [ - "ARM" - ] - } - }, - "uaHttpHeaders": [ - "HTTP_USER_AGENT", - "HTTP_X_OPERAMINI_PHONE_UA", - "HTTP_X_DEVICE_USER_AGENT", - "HTTP_X_ORIGINAL_USER_AGENT", - "HTTP_X_SKYFIRE_PHONE", - "HTTP_X_BOLT_PHONE_UA", - "HTTP_DEVICE_STOCK_UA", - "HTTP_X_UCBROWSER_DEVICE_UA" - ], - "uaMatch": { - "phones": { - "iPhone": "\\biPhone.*(Mobile|PhoneGap)|\\biPod", - "BlackBerry": "BlackBerry|\\bBB10\\b|rim[0-9]+", - "HTC": "HTC|HTC.*(Sensation|Evo|Vision|Explorer|6800|8100|8900|A7272|S510e|C110e|Legend|Desire|T8282)|APX515CKT|Qtek9090|APA9292KT|HD_mini|Sensation.*Z710e|PG86100|Z715e|Desire.*(A8181|HD)|ADR6200|ADR6400L|ADR6425|001HT|Inspire 4G|Android.*\\bEVO\\b|T-Mobile G1|Z520m", - "Nexus": "Nexus One|Nexus S|Galaxy.*Nexus|Android.*Nexus.*Mobile", - "Dell": "Dell.*Streak|Dell.*Aero|Dell.*Venue|DELL.*Venue Pro|Dell Flash|Dell Smoke|Dell Mini 3iX|XCD28|XCD35|\\b001DL\\b|\\b101DL\\b|\\bGS01\\b", - "Motorola": "Motorola|DROIDX|DROID BIONIC|\\bDroid\\b.*Build|Android.*Xoom|HRI39|MOT-|A1260|A1680|A555|A853|A855|A953|A955|A956|Motorola.*ELECTRIFY|Motorola.*i1|i867|i940|MB200|MB300|MB501|MB502|MB508|MB511|MB520|MB525|MB526|MB611|MB612|MB632|MB810|MB855|MB860|MB861|MB865|MB870|ME501|ME502|ME511|ME525|ME600|ME632|ME722|ME811|ME860|ME863|ME865|MT620|MT710|MT716|MT720|MT810|MT870|MT917|Motorola.*TITANIUM|WX435|WX445|XT300|XT301|XT311|XT316|XT317|XT319|XT320|XT390|XT502|XT530|XT531|XT532|XT535|XT603|XT610|XT611|XT615|XT681|XT701|XT702|XT711|XT720|XT800|XT806|XT860|XT862|XT875|XT882|XT883|XT894|XT901|XT907|XT909|XT910|XT912|XT928|XT926|XT915|XT919|XT925", - "Samsung": "Samsung|SGH-I337|BGT-S5230|GT-B2100|GT-B2700|GT-B2710|GT-B3210|GT-B3310|GT-B3410|GT-B3730|GT-B3740|GT-B5510|GT-B5512|GT-B5722|GT-B6520|GT-B7300|GT-B7320|GT-B7330|GT-B7350|GT-B7510|GT-B7722|GT-B7800|GT-C3010|GT-C3011|GT-C3060|GT-C3200|GT-C3212|GT-C3212I|GT-C3262|GT-C3222|GT-C3300|GT-C3300K|GT-C3303|GT-C3303K|GT-C3310|GT-C3322|GT-C3330|GT-C3350|GT-C3500|GT-C3510|GT-C3530|GT-C3630|GT-C3780|GT-C5010|GT-C5212|GT-C6620|GT-C6625|GT-C6712|GT-E1050|GT-E1070|GT-E1075|GT-E1080|GT-E1081|GT-E1085|GT-E1087|GT-E1100|GT-E1107|GT-E1110|GT-E1120|GT-E1125|GT-E1130|GT-E1160|GT-E1170|GT-E1175|GT-E1180|GT-E1182|GT-E1200|GT-E1210|GT-E1225|GT-E1230|GT-E1390|GT-E2100|GT-E2120|GT-E2121|GT-E2152|GT-E2220|GT-E2222|GT-E2230|GT-E2232|GT-E2250|GT-E2370|GT-E2550|GT-E2652|GT-E3210|GT-E3213|GT-I5500|GT-I5503|GT-I5700|GT-I5800|GT-I5801|GT-I6410|GT-I6420|GT-I7110|GT-I7410|GT-I7500|GT-I8000|GT-I8150|GT-I8160|GT-I8190|GT-I8320|GT-I8330|GT-I8350|GT-I8530|GT-I8700|GT-I8703|GT-I8910|GT-I9000|GT-I9001|GT-I9003|GT-I9010|GT-I9020|GT-I9023|GT-I9070|GT-I9082|GT-I9100|GT-I9103|GT-I9220|GT-I9250|GT-I9300|GT-I9305|GT-I9500|GT-I9505|GT-M3510|GT-M5650|GT-M7500|GT-M7600|GT-M7603|GT-M8800|GT-M8910|GT-N7000|GT-S3110|GT-S3310|GT-S3350|GT-S3353|GT-S3370|GT-S3650|GT-S3653|GT-S3770|GT-S3850|GT-S5210|GT-S5220|GT-S5229|GT-S5230|GT-S5233|GT-S5250|GT-S5253|GT-S5260|GT-S5263|GT-S5270|GT-S5300|GT-S5330|GT-S5350|GT-S5360|GT-S5363|GT-S5369|GT-S5380|GT-S5380D|GT-S5560|GT-S5570|GT-S5600|GT-S5603|GT-S5610|GT-S5620|GT-S5660|GT-S5670|GT-S5690|GT-S5750|GT-S5780|GT-S5830|GT-S5839|GT-S6102|GT-S6500|GT-S7070|GT-S7200|GT-S7220|GT-S7230|GT-S7233|GT-S7250|GT-S7500|GT-S7530|GT-S7550|GT-S7562|GT-S7710|GT-S8000|GT-S8003|GT-S8500|GT-S8530|GT-S8600|SCH-A310|SCH-A530|SCH-A570|SCH-A610|SCH-A630|SCH-A650|SCH-A790|SCH-A795|SCH-A850|SCH-A870|SCH-A890|SCH-A930|SCH-A950|SCH-A970|SCH-A990|SCH-I100|SCH-I110|SCH-I400|SCH-I405|SCH-I500|SCH-I510|SCH-I515|SCH-I600|SCH-I730|SCH-I760|SCH-I770|SCH-I830|SCH-I910|SCH-I920|SCH-I959|SCH-LC11|SCH-N150|SCH-N300|SCH-R100|SCH-R300|SCH-R351|SCH-R400|SCH-R410|SCH-T300|SCH-U310|SCH-U320|SCH-U350|SCH-U360|SCH-U365|SCH-U370|SCH-U380|SCH-U410|SCH-U430|SCH-U450|SCH-U460|SCH-U470|SCH-U490|SCH-U540|SCH-U550|SCH-U620|SCH-U640|SCH-U650|SCH-U660|SCH-U700|SCH-U740|SCH-U750|SCH-U810|SCH-U820|SCH-U900|SCH-U940|SCH-U960|SCS-26UC|SGH-A107|SGH-A117|SGH-A127|SGH-A137|SGH-A157|SGH-A167|SGH-A177|SGH-A187|SGH-A197|SGH-A227|SGH-A237|SGH-A257|SGH-A437|SGH-A517|SGH-A597|SGH-A637|SGH-A657|SGH-A667|SGH-A687|SGH-A697|SGH-A707|SGH-A717|SGH-A727|SGH-A737|SGH-A747|SGH-A767|SGH-A777|SGH-A797|SGH-A817|SGH-A827|SGH-A837|SGH-A847|SGH-A867|SGH-A877|SGH-A887|SGH-A897|SGH-A927|SGH-B100|SGH-B130|SGH-B200|SGH-B220|SGH-C100|SGH-C110|SGH-C120|SGH-C130|SGH-C140|SGH-C160|SGH-C170|SGH-C180|SGH-C200|SGH-C207|SGH-C210|SGH-C225|SGH-C230|SGH-C417|SGH-C450|SGH-D307|SGH-D347|SGH-D357|SGH-D407|SGH-D415|SGH-D780|SGH-D807|SGH-D980|SGH-E105|SGH-E200|SGH-E315|SGH-E316|SGH-E317|SGH-E335|SGH-E590|SGH-E635|SGH-E715|SGH-E890|SGH-F300|SGH-F480|SGH-I200|SGH-I300|SGH-I320|SGH-I550|SGH-I577|SGH-I600|SGH-I607|SGH-I617|SGH-I627|SGH-I637|SGH-I677|SGH-I700|SGH-I717|SGH-I727|SGH-i747M|SGH-I777|SGH-I780|SGH-I827|SGH-I847|SGH-I857|SGH-I896|SGH-I897|SGH-I900|SGH-I907|SGH-I917|SGH-I927|SGH-I937|SGH-I997|SGH-J150|SGH-J200|SGH-L170|SGH-L700|SGH-M110|SGH-M150|SGH-M200|SGH-N105|SGH-N500|SGH-N600|SGH-N620|SGH-N625|SGH-N700|SGH-N710|SGH-P107|SGH-P207|SGH-P300|SGH-P310|SGH-P520|SGH-P735|SGH-P777|SGH-Q105|SGH-R210|SGH-R220|SGH-R225|SGH-S105|SGH-S307|SGH-T109|SGH-T119|SGH-T139|SGH-T209|SGH-T219|SGH-T229|SGH-T239|SGH-T249|SGH-T259|SGH-T309|SGH-T319|SGH-T329|SGH-T339|SGH-T349|SGH-T359|SGH-T369|SGH-T379|SGH-T409|SGH-T429|SGH-T439|SGH-T459|SGH-T469|SGH-T479|SGH-T499|SGH-T509|SGH-T519|SGH-T539|SGH-T559|SGH-T589|SGH-T609|SGH-T619|SGH-T629|SGH-T639|SGH-T659|SGH-T669|SGH-T679|SGH-T709|SGH-T719|SGH-T729|SGH-T739|SGH-T746|SGH-T749|SGH-T759|SGH-T769|SGH-T809|SGH-T819|SGH-T839|SGH-T919|SGH-T929|SGH-T939|SGH-T959|SGH-T989|SGH-U100|SGH-U200|SGH-U800|SGH-V205|SGH-V206|SGH-X100|SGH-X105|SGH-X120|SGH-X140|SGH-X426|SGH-X427|SGH-X475|SGH-X495|SGH-X497|SGH-X507|SGH-X600|SGH-X610|SGH-X620|SGH-X630|SGH-X700|SGH-X820|SGH-X890|SGH-Z130|SGH-Z150|SGH-Z170|SGH-ZX10|SGH-ZX20|SHW-M110|SPH-A120|SPH-A400|SPH-A420|SPH-A460|SPH-A500|SPH-A560|SPH-A600|SPH-A620|SPH-A660|SPH-A700|SPH-A740|SPH-A760|SPH-A790|SPH-A800|SPH-A820|SPH-A840|SPH-A880|SPH-A900|SPH-A940|SPH-A960|SPH-D600|SPH-D700|SPH-D710|SPH-D720|SPH-I300|SPH-I325|SPH-I330|SPH-I350|SPH-I500|SPH-I600|SPH-I700|SPH-L700|SPH-M100|SPH-M220|SPH-M240|SPH-M300|SPH-M305|SPH-M320|SPH-M330|SPH-M350|SPH-M360|SPH-M370|SPH-M380|SPH-M510|SPH-M540|SPH-M550|SPH-M560|SPH-M570|SPH-M580|SPH-M610|SPH-M620|SPH-M630|SPH-M800|SPH-M810|SPH-M850|SPH-M900|SPH-M910|SPH-M920|SPH-M930|SPH-N100|SPH-N200|SPH-N240|SPH-N300|SPH-N400|SPH-Z400|SWC-E100|SCH-i909|GT-N7100|GT-N7105|SCH-I535|SM-N900A|SGH-I317|SGH-T999L|GT-S5360B|GT-I8262|GT-S6802|GT-S6312|GT-S6310|GT-S5312|GT-S5310|GT-I9105|GT-I8510|GT-S6790N|SM-G7105|SM-N9005|GT-S5301|GT-I9295|GT-I9195|SM-C101|GT-S7392|GT-S7560|GT-B7610|GT-I5510|GT-S7582|GT-S7530E", - "LG": "\\bLG\\b;|LG[- ]?(C800|C900|E400|E610|E900|E-900|F160|F180K|F180L|F180S|730|855|L160|LS840|LS970|LU6200|MS690|MS695|MS770|MS840|MS870|MS910|P500|P700|P705|VM696|AS680|AS695|AX840|C729|E970|GS505|272|C395|E739BK|E960|L55C|L75C|LS696|LS860|P769BK|P350|P500|P509|P870|UN272|US730|VS840|VS950|LN272|LN510|LS670|LS855|LW690|MN270|MN510|P509|P769|P930|UN200|UN270|UN510|UN610|US670|US740|US760|UX265|UX840|VN271|VN530|VS660|VS700|VS740|VS750|VS910|VS920|VS930|VX9200|VX11000|AX840A|LW770|P506|P925|P999|E612|D955|D802)", - "Sony": "SonyST|SonyLT|SonyEricsson|SonyEricssonLT15iv|LT18i|E10i|LT28h|LT26w|SonyEricssonMT27i", - "Asus": "Asus.*Galaxy|PadFone.*Mobile", - "Micromax": "Micromax.*\\b(A210|A92|A88|A72|A111|A110Q|A115|A116|A110|A90S|A26|A51|A35|A54|A25|A27|A89|A68|A65|A57|A90)\\b", - "Palm": "PalmSource|Palm", - "Vertu": "Vertu|Vertu.*Ltd|Vertu.*Ascent|Vertu.*Ayxta|Vertu.*Constellation(F|Quest)?|Vertu.*Monika|Vertu.*Signature", - "Pantech": "PANTECH|IM-A850S|IM-A840S|IM-A830L|IM-A830K|IM-A830S|IM-A820L|IM-A810K|IM-A810S|IM-A800S|IM-T100K|IM-A725L|IM-A780L|IM-A775C|IM-A770K|IM-A760S|IM-A750K|IM-A740S|IM-A730S|IM-A720L|IM-A710K|IM-A690L|IM-A690S|IM-A650S|IM-A630K|IM-A600S|VEGA PTL21|PT003|P8010|ADR910L|P6030|P6020|P9070|P4100|P9060|P5000|CDM8992|TXT8045|ADR8995|IS11PT|P2030|P6010|P8000|PT002|IS06|CDM8999|P9050|PT001|TXT8040|P2020|P9020|P2000|P7040|P7000|C790", - "Fly": "IQ230|IQ444|IQ450|IQ440|IQ442|IQ441|IQ245|IQ256|IQ236|IQ255|IQ235|IQ245|IQ275|IQ240|IQ285|IQ280|IQ270|IQ260|IQ250", - "iMobile": "i-mobile (IQ|i-STYLE|idea|ZAA|Hitz)", - "SimValley": "\\b(SP-80|XT-930|SX-340|XT-930|SX-310|SP-360|SP60|SPT-800|SP-120|SPT-800|SP-140|SPX-5|SPX-8|SP-100|SPX-8|SPX-12)\\b", - "GenericPhone": "Tapatalk|PDA;|SAGEM|\\bmmp\\b|pocket|\\bpsp\\b|symbian|Smartphone|smartfon|treo|up.browser|up.link|vodafone|\\bwap\\b|nokia|Series40|Series60|S60|SonyEricsson|N900|MAUI.*WAP.*Browser" - }, - "tablets": { - "iPad": "iPad|iPad.*Mobile", - "NexusTablet": "Android.*Nexus[\\s]+(7|10)|^.*Android.*Nexus(?:(?!Mobile).)*$", - "SamsungTablet": "SAMSUNG.*Tablet|Galaxy.*Tab|SC-01C|GT-P1000|GT-P1003|GT-P1010|GT-P3105|GT-P6210|GT-P6800|GT-P6810|GT-P7100|GT-P7300|GT-P7310|GT-P7500|GT-P7510|SCH-I800|SCH-I815|SCH-I905|SGH-I957|SGH-I987|SGH-T849|SGH-T859|SGH-T869|SPH-P100|GT-P3100|GT-P3108|GT-P3110|GT-P5100|GT-P5110|GT-P6200|GT-P7320|GT-P7511|GT-N8000|GT-P8510|SGH-I497|SPH-P500|SGH-T779|SCH-I705|SCH-I915|GT-N8013|GT-P3113|GT-P5113|GT-P8110|GT-N8010|GT-N8005|GT-N8020|GT-P1013|GT-P6201|GT-P7501|GT-N5100|GT-N5105|GT-N5110|SHV-E140K|SHV-E140L|SHV-E140S|SHV-E150S|SHV-E230K|SHV-E230L|SHV-E230S|SHW-M180K|SHW-M180L|SHW-M180S|SHW-M180W|SHW-M300W|SHW-M305W|SHW-M380K|SHW-M380S|SHW-M380W|SHW-M430W|SHW-M480K|SHW-M480S|SHW-M480W|SHW-M485W|SHW-M486W|SHW-M500W|GT-I9228|SCH-P739|SCH-I925|GT-I9200|GT-I9205|GT-P5200|GT-P5210|GT-P5210X|SM-T311|SM-T310|SM-T310X|SM-T210|SM-T210R|SM-T211|SM-P600|SM-P601|SM-P605|SM-P900|SM-P901|SM-T217|SM-T217A|SM-T217S|SM-P6000|SM-T3100|SGH-I467|XE500|SM-T110|GT-P5220|GT-I9200X|GT-N5110X|GT-N5120|SM-P905|SM-T111|SM-T2105|SM-T315|SM-T320|SM-T320X|SM-T321|SM-T520|SM-T525|SM-T530NU|SM-T230NU|SM-T330NU|SM-T900|XE500T1C|SM-P605V|SM-P905V|SM-P600X|SM-P900X|SM-T210X|SM-T230|SM-T230X|SM-T325|GT-P7503|SM-T531|SM-T330|SM-T530|SM-T705C|SM-T535|SM-T331", - "Kindle": "Kindle|Silk.*Accelerated|Android.*\\b(KFOT|KFTT|KFJWI|KFJWA|KFOTE|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|WFJWAE)\\b", - "SurfaceTablet": "Windows NT [0-9.]+; ARM;", - "HPTablet": "HP Slate 7|HP ElitePad 900|hp-tablet|EliteBook.*Touch|HP 8", - "AsusTablet": "^.*PadFone((?!Mobile).)*$|Transformer|TF101|TF101G|TF300T|TF300TG|TF300TL|TF700T|TF700KL|TF701T|TF810C|ME171|ME301T|ME302C|ME371MG|ME370T|ME372MG|ME172V|ME173X|ME400C|Slider SL101|\\bK00F\\b|TX201LA", - "BlackBerryTablet": "PlayBook|RIM Tablet", - "HTCtablet": "HTC Flyer|HTC Jetstream|HTC-P715a|HTC EVO View 4G|PG41200", - "MotorolaTablet": "xoom|sholest|MZ615|MZ605|MZ505|MZ601|MZ602|MZ603|MZ604|MZ606|MZ607|MZ608|MZ609|MZ615|MZ616|MZ617", - "NookTablet": "Android.*Nook|NookColor|nook browser|BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2", - "AcerTablet": "Android.*; \\b(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700|A701|W500|W500P|W501|W501P|W510|W511|W700|G100|G100W|B1-A71|B1-710|B1-711|A1-810|A1-830)\\b|W3-810|\\bA3-A10\\b", - "ToshibaTablet": "Android.*(AT100|AT105|AT200|AT205|AT270|AT275|AT300|AT305|AT1S5|AT500|AT570|AT700|AT830)|TOSHIBA.*FOLIO", - "LGTablet": "\\bL-06C|LG-V900|LG-V500|LG-V909|LG-V500|LG-V510|LG-VK810\\b", - "FujitsuTablet": "Android.*\\b(F-01D|F-02F|F-05E|F-10D|M532|Q572)\\b", - "PrestigioTablet": "PMP3170B|PMP3270B|PMP3470B|PMP7170B|PMP3370B|PMP3570C|PMP5870C|PMP3670B|PMP5570C|PMP5770D|PMP3970B|PMP3870C|PMP5580C|PMP5880D|PMP5780D|PMP5588C|PMP7280C|PMP7280C3G|PMP7280|PMP7880D|PMP5597D|PMP5597|PMP7100D|PER3464|PER3274|PER3574|PER3884|PER5274|PER5474|PMP5097CPRO|PMP5097|PMP7380D|PMP5297C|PMP5297C_QUAD", - "LenovoTablet": "IdeaTab|ThinkPad([ ]+)?Tablet|Lenovo.*(S2109|S2110|S5000|S6000|K3011|A3000|A1000|A2107|A2109|A1107|B6000|B8000|B8080-F)", - "YarvikTablet": "Android.*\\b(TAB210|TAB211|TAB224|TAB250|TAB260|TAB264|TAB310|TAB360|TAB364|TAB410|TAB411|TAB420|TAB424|TAB450|TAB460|TAB461|TAB464|TAB465|TAB467|TAB468|TAB07-100|TAB07-101|TAB07-150|TAB07-151|TAB07-152|TAB07-200|TAB07-201-3G|TAB07-210|TAB07-211|TAB07-212|TAB07-214|TAB07-220|TAB07-400|TAB07-485|TAB08-150|TAB08-200|TAB08-201-3G|TAB08-201-30|TAB09-100|TAB09-211|TAB09-410|TAB10-150|TAB10-201|TAB10-211|TAB10-400|TAB10-410|TAB13-201|TAB274EUK|TAB275EUK|TAB374EUK|TAB462EUK|TAB474EUK|TAB9-200)\\b", - "MedionTablet": "Android.*\\bOYO\\b|LIFE.*(P9212|P9514|P9516|S9512)|LIFETAB", - "ArnovaTablet": "AN10G2|AN7bG3|AN7fG3|AN8G3|AN8cG3|AN7G3|AN9G3|AN7dG3|AN7dG3ST|AN7dG3ChildPad|AN10bG3|AN10bG3DT", - "IntensoTablet": "INM8002KP|INM1010FP|INM805ND|Intenso Tab", - "IRUTablet": "M702pro", - "MegafonTablet": "MegaFon V9|\\bZTE V9\\b|Android.*\\bMT7A\\b", - "EbodaTablet": "E-Boda (Supreme|Impresspeed|Izzycomm|Essential)", - "AllViewTablet": "Allview.*(Viva|Alldro|City|Speed|All TV|Frenzy|Quasar|Shine|TX1|AX1|AX2)", - "ArchosTablet": "\\b(101G9|80G9|A101IT)\\b|Qilive 97R|ARCHOS 101G10|Archos 101 Neon", - "AinolTablet": "NOVO7|NOVO8|NOVO10|Novo7Aurora|Novo7Basic|NOVO7PALADIN|novo9-Spark", - "SonyTablet": "Sony.*Tablet|Xperia Tablet|Sony Tablet S|SO-03E|SGPT12|SGPT13|SGPT114|SGPT121|SGPT122|SGPT123|SGPT111|SGPT112|SGPT113|SGPT131|SGPT132|SGPT133|SGPT211|SGPT212|SGPT213|SGP311|SGP312|SGP321|EBRD1101|EBRD1102|EBRD1201|SGP351|SGP341|SGP511|SGP512|SGP521|SGP541|SGP551", - "CubeTablet": "Android.*(K8GT|U9GT|U10GT|U16GT|U17GT|U18GT|U19GT|U20GT|U23GT|U30GT)|CUBE U8GT", - "CobyTablet": "MID1042|MID1045|MID1125|MID1126|MID7012|MID7014|MID7015|MID7034|MID7035|MID7036|MID7042|MID7048|MID7127|MID8042|MID8048|MID8127|MID9042|MID9740|MID9742|MID7022|MID7010", - "MIDTablet": "M9701|M9000|M9100|M806|M1052|M806|T703|MID701|MID713|MID710|MID727|MID760|MID830|MID728|MID933|MID125|MID810|MID732|MID120|MID930|MID800|MID731|MID900|MID100|MID820|MID735|MID980|MID130|MID833|MID737|MID960|MID135|MID860|MID736|MID140|MID930|MID835|MID733", - "SMiTTablet": "Android.*(\\bMID\\b|MID-560|MTV-T1200|MTV-PND531|MTV-P1101|MTV-PND530)", - "RockChipTablet": "Android.*(RK2818|RK2808A|RK2918|RK3066)|RK2738|RK2808A", - "FlyTablet": "IQ310|Fly Vision", - "bqTablet": "bq.*(Elcano|Curie|Edison|Maxwell|Kepler|Pascal|Tesla|Hypatia|Platon|Newton|Livingstone|Cervantes|Avant)|Maxwell.*Lite|Maxwell.*Plus", - "HuaweiTablet": "MediaPad|MediaPad 7 Youth|IDEOS S7|S7-201c|S7-202u|S7-101|S7-103|S7-104|S7-105|S7-106|S7-201|S7-Slim", - "NecTablet": "\\bN-06D|\\bN-08D", - "PantechTablet": "Pantech.*P4100", - "BronchoTablet": "Broncho.*(N701|N708|N802|a710)", - "VersusTablet": "TOUCHPAD.*[78910]|\\bTOUCHTAB\\b", - "ZyncTablet": "z1000|Z99 2G|z99|z930|z999|z990|z909|Z919|z900", - "PositivoTablet": "TB07STA|TB10STA|TB07FTA|TB10FTA", - "NabiTablet": "Android.*\\bNabi", - "KoboTablet": "Kobo Touch|\\bK080\\b|\\bVox\\b Build|\\bArc\\b Build", - "DanewTablet": "DSlide.*\\b(700|701R|702|703R|704|802|970|971|972|973|974|1010|1012)\\b", - "TexetTablet": "NaviPad|TB-772A|TM-7045|TM-7055|TM-9750|TM-7016|TM-7024|TM-7026|TM-7041|TM-7043|TM-7047|TM-8041|TM-9741|TM-9747|TM-9748|TM-9751|TM-7022|TM-7021|TM-7020|TM-7011|TM-7010|TM-7023|TM-7025|TM-7037W|TM-7038W|TM-7027W|TM-9720|TM-9725|TM-9737W|TM-1020|TM-9738W|TM-9740|TM-9743W|TB-807A|TB-771A|TB-727A|TB-725A|TB-719A|TB-823A|TB-805A|TB-723A|TB-715A|TB-707A|TB-705A|TB-709A|TB-711A|TB-890HD|TB-880HD|TB-790HD|TB-780HD|TB-770HD|TB-721HD|TB-710HD|TB-434HD|TB-860HD|TB-840HD|TB-760HD|TB-750HD|TB-740HD|TB-730HD|TB-722HD|TB-720HD|TB-700HD|TB-500HD|TB-470HD|TB-431HD|TB-430HD|TB-506|TB-504|TB-446|TB-436|TB-416|TB-146SE|TB-126SE", - "PlaystationTablet": "Playstation.*(Portable|Vita)", - "TrekstorTablet": "ST10416-1|VT10416-1|ST70408-1|ST702xx-1|ST702xx-2|ST80208|ST97216|ST70104-2|VT10416-2|ST10216-2A", - "PyleAudioTablet": "\\b(PTBL10CEU|PTBL10C|PTBL72BC|PTBL72BCEU|PTBL7CEU|PTBL7C|PTBL92BC|PTBL92BCEU|PTBL9CEU|PTBL9CUK|PTBL9C)\\b", - "AdvanTablet": "Android.* \\b(E3A|T3X|T5C|T5B|T3E|T3C|T3B|T1J|T1F|T2A|T1H|T1i|E1C|T1-E|T5-A|T4|E1-B|T2Ci|T1-B|T1-D|O1-A|E1-A|T1-A|T3A|T4i)\\b ", - "DanyTechTablet": "Genius Tab G3|Genius Tab S2|Genius Tab Q3|Genius Tab G4|Genius Tab Q4|Genius Tab G-II|Genius TAB GII|Genius TAB GIII|Genius Tab S1", - "GalapadTablet": "Android.*\\bG1\\b", - "MicromaxTablet": "Funbook|Micromax.*\\b(P250|P560|P360|P362|P600|P300|P350|P500|P275)\\b", - "KarbonnTablet": "Android.*\\b(A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2)\\b", - "AllFineTablet": "Fine7 Genius|Fine7 Shine|Fine7 Air|Fine8 Style|Fine9 More|Fine10 Joy|Fine11 Wide", - "PROSCANTablet": "\\b(PEM63|PLT1023G|PLT1041|PLT1044|PLT1044G|PLT1091|PLT4311|PLT4311PL|PLT4315|PLT7030|PLT7033|PLT7033D|PLT7035|PLT7035D|PLT7044K|PLT7045K|PLT7045KB|PLT7071KG|PLT7072|PLT7223G|PLT7225G|PLT7777G|PLT7810K|PLT7849G|PLT7851G|PLT7852G|PLT8015|PLT8031|PLT8034|PLT8036|PLT8080K|PLT8082|PLT8088|PLT8223G|PLT8234G|PLT8235G|PLT8816K|PLT9011|PLT9045K|PLT9233G|PLT9735|PLT9760G|PLT9770G)\\b", - "YONESTablet": "BQ1078|BC1003|BC1077|RK9702|BC9730|BC9001|IT9001|BC7008|BC7010|BC708|BC728|BC7012|BC7030|BC7027|BC7026", - "ChangJiaTablet": "TPC7102|TPC7103|TPC7105|TPC7106|TPC7107|TPC7201|TPC7203|TPC7205|TPC7210|TPC7708|TPC7709|TPC7712|TPC7110|TPC8101|TPC8103|TPC8105|TPC8106|TPC8203|TPC8205|TPC8503|TPC9106|TPC9701|TPC97101|TPC97103|TPC97105|TPC97106|TPC97111|TPC97113|TPC97203|TPC97603|TPC97809|TPC97205|TPC10101|TPC10103|TPC10106|TPC10111|TPC10203|TPC10205|TPC10503", - "GUTablet": "TX-A1301|TX-M9002|Q702|kf026", - "PointOfViewTablet": "TAB-P506|TAB-navi-7-3G-M|TAB-P517|TAB-P-527|TAB-P701|TAB-P703|TAB-P721|TAB-P731N|TAB-P741|TAB-P825|TAB-P905|TAB-P925|TAB-PR945|TAB-PL1015|TAB-P1025|TAB-PI1045|TAB-P1325|TAB-PROTAB[0-9]+|TAB-PROTAB25|TAB-PROTAB26|TAB-PROTAB27|TAB-PROTAB26XL|TAB-PROTAB2-IPS9|TAB-PROTAB30-IPS9|TAB-PROTAB25XXL|TAB-PROTAB26-IPS10|TAB-PROTAB30-IPS10", - "OvermaxTablet": "OV-(SteelCore|NewBase|Basecore|Baseone|Exellen|Quattor|EduTab|Solution|ACTION|BasicTab|TeddyTab|MagicTab|Stream|TB-08|TB-09)", - "HCLTablet": "HCL.*Tablet|Connect-3G-2.0|Connect-2G-2.0|ME Tablet U1|ME Tablet U2|ME Tablet G1|ME Tablet X1|ME Tablet Y2|ME Tablet Sync", - "DPSTablet": "DPS Dream 9|DPS Dual 7", - "VistureTablet": "V97 HD|i75 3G|Visture V4( HD)?|Visture V5( HD)?|Visture V10", - "CrestaTablet": "CTP(-)?810|CTP(-)?818|CTP(-)?828|CTP(-)?838|CTP(-)?888|CTP(-)?978|CTP(-)?980|CTP(-)?987|CTP(-)?988|CTP(-)?989", - "MediatekTablet": "\\bMT8125|MT8389|MT8135|MT8377\\b", - "ConcordeTablet": "Concorde([ ]+)?Tab|ConCorde ReadMan", - "GoCleverTablet": "GOCLEVER TAB|A7GOCLEVER|M1042|M7841|M742|R1042BK|R1041|TAB A975|TAB A7842|TAB A741|TAB A741L|TAB M723G|TAB M721|TAB A1021|TAB I921|TAB R721|TAB I720|TAB T76|TAB R70|TAB R76.2|TAB R106|TAB R83.2|TAB M813G|TAB I721|GCTA722|TAB I70|TAB I71|TAB S73|TAB R73|TAB R74|TAB R93|TAB R75|TAB R76.1|TAB A73|TAB A93|TAB A93.2|TAB T72|TAB R83|TAB R974|TAB R973|TAB A101|TAB A103|TAB A104|TAB A104.2|R105BK|M713G|A972BK|TAB A971|TAB R974.2|TAB R104|TAB R83.3|TAB A1042", - "ModecomTablet": "FreeTAB 9000|FreeTAB 7.4|FreeTAB 7004|FreeTAB 7800|FreeTAB 2096|FreeTAB 7.5|FreeTAB 1014|FreeTAB 1001 |FreeTAB 8001|FreeTAB 9706|FreeTAB 9702|FreeTAB 7003|FreeTAB 7002|FreeTAB 1002|FreeTAB 7801|FreeTAB 1331|FreeTAB 1004|FreeTAB 8002|FreeTAB 8014|FreeTAB 9704|FreeTAB 1003", - "VoninoTablet": "\\b(Argus[ _]?S|Diamond[ _]?79HD|Emerald[ _]?78E|Luna[ _]?70C|Onyx[ _]?S|Onyx[ _]?Z|Orin[ _]?HD|Orin[ _]?S|Otis[ _]?S|SpeedStar[ _]?S|Magnet[ _]?M9|Primus[ _]?94[ _]?3G|Primus[ _]?94HD|Primus[ _]?QS|Android.*\\bQ8\\b|Sirius[ _]?EVO[ _]?QS|Sirius[ _]?QS|Spirit[ _]?S)\\b", - "ECSTablet": "V07OT2|TM105A|S10OT1|TR10CS1", - "StorexTablet": "eZee[_']?(Tab|Go)[0-9]+|TabLC7|Looney Tunes Tab", - "VodafoneTablet": "SmartTab([ ]+)?[0-9]+|SmartTabII10", - "EssentielBTablet": "Smart[ ']?TAB[ ]+?[0-9]+|Family[ ']?TAB2", - "RossMoorTablet": "RM-790|RM-997|RMD-878G|RMD-974R|RMT-705A|RMT-701|RME-601|RMT-501|RMT-711", - "iMobileTablet": "i-mobile i-note", - "TolinoTablet": "tolino tab [0-9.]+|tolino shine", - "AudioSonicTablet": "\\bC-22Q|T7-QC|T-17B|T-17P\\b", - "AMPETablet": "Android.* A78 ", - "SkkTablet": "Android.* (SKYPAD|PHOENIX|CYCLOPS)", - "TecnoTablet": "TECNO P9", - "JXDTablet": "Android.*\\b(F3000|A3300|JXD5000|JXD3000|JXD2000|JXD300B|JXD300|S5800|S7800|S602b|S5110b|S7300|S5300|S602|S603|S5100|S5110|S601|S7100a|P3000F|P3000s|P101|P200s|P1000m|P200m|P9100|P1000s|S6600b|S908|P1000|P300|S18|S6600|S9100)\\b", - "iJoyTablet": "Tablet (Spirit 7|Essentia|Galatea|Fusion|Onix 7|Landa|Titan|Scooby|Deox|Stella|Themis|Argon|Unique 7|Sygnus|Hexen|Finity 7|Cream|Cream X2|Jade|Neon 7|Neron 7|Kandy|Scape|Saphyr 7|Rebel|Biox|Rebel|Rebel 8GB|Myst|Draco 7|Myst|Tab7-004|Myst|Tadeo Jones|Tablet Boing|Arrow|Draco Dual Cam|Aurix|Mint|Amity|Revolution|Finity 9|Neon 9|T9w|Amity 4GB Dual Cam|Stone 4GB|Stone 8GB|Andromeda|Silken|X2|Andromeda II|Halley|Flame|Saphyr 9,7|Touch 8|Planet|Triton|Unique 10|Hexen 10|Memphis 4GB|Memphis 8GB|Onix 10)", - "FX2Tablet": "FX2 PAD7|FX2 PAD10", - "XoroTablet": "KidsPAD 701|PAD[ ]?712|PAD[ ]?714|PAD[ ]?716|PAD[ ]?717|PAD[ ]?718|PAD[ ]?720|PAD[ ]?721|PAD[ ]?722|PAD[ ]?790|PAD[ ]?792|PAD[ ]?900|PAD[ ]?9715D|PAD[ ]?9716DR|PAD[ ]?9718DR|PAD[ ]?9719QR|PAD[ ]?9720QR|TelePAD1030|Telepad1032|TelePAD730|TelePAD731|TelePAD732|TelePAD735Q|TelePAD830|TelePAD9730|TelePAD795|MegaPAD 1331|MegaPAD 1851|MegaPAD 2151", - "ViewsonicTablet": "ViewPad 10pi|ViewPad 10e|ViewPad 10s|ViewPad E72|ViewPad7|ViewPad E100|ViewPad 7e|ViewSonic VB733|VB100a", - "OdysTablet": "LOOX|XENO10|ODYS Space", - "CaptivaTablet": "CAPTIVA PAD", - "IconbitTablet": "NetTAB|NT-3702|NT-3702S|NT-3702S|NT-3603P|NT-3603P|NT-0704S|NT-0704S|NT-3805C|NT-3805C|NT-0806C|NT-0806C|NT-0909T|NT-0909T|NT-0907S|NT-0907S|NT-0902S|NT-0902S", - "Hudl": "Hudl HT7S3", - "TelstraTablet": "T-Hub2", - "GenericTablet": "Android.*\\b97D\\b|Tablet(?!.*PC)|BNTV250A|MID-WCDMA|LogicPD Zoom2|\\bA7EB\\b|CatNova8|A1_07|CT704|CT1002|\\bM721\\b|rk30sdk|\\bEVOTAB\\b|M758A|ET904|ALUMIUM10|Smartfren Tab|Endeavour 1010|Tablet-PC-4" - }, - "browsers": { - "Chrome": "\\bCrMo\\b|CriOS|Android.*Chrome\/[.0-9]* (Mobile)?", - "Dolfin": "\\bDolfin\\b", - "Opera": "Opera.*Mini|Opera.*Mobi|Android.*Opera|Mobile.*OPR\/[0-9.]+|Coast\/[0-9.]+", - "Skyfire": "Skyfire", - "IE": "IEMobile|MSIEMobile", - "Firefox": "fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile", - "Bolt": "bolt", - "TeaShark": "teashark", - "Blazer": "Blazer", - "Safari": "Version.*Mobile.*Safari|Safari.*Mobile", - "Tizen": "Tizen", - "UCBrowser": "UC.*Browser|UCWEB", - "DiigoBrowser": "DiigoBrowser", - "Puffin": "Puffin", - "Mercury": "\\bMercury\\b", - "GenericBrowser": "NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger" - }, - "os": { - "AndroidOS": "Android", - "BlackBerryOS": "blackberry|\\bBB10\\b|rim tablet os", - "PalmOS": "PalmOS|avantgo|blazer|elaine|hiptop|palm|plucker|xiino", - "SymbianOS": "Symbian|SymbOS|Series60|Series40|SYB-[0-9]+|\\bS60\\b", - "WindowsMobileOS": "Windows CE.*(PPC|Smartphone|Mobile|[0-9]{3}x[0-9]{3})|Window Mobile|Windows Phone [0-9.]+|WCE;", - "WindowsPhoneOS": "Windows Phone 8.0|Windows Phone OS|XBLWP7|ZuneWP7", - "iOS": "\\biPhone.*Mobile|\\biPod|\\biPad", - "MeeGoOS": "MeeGo", - "MaemoOS": "Maemo", - "JavaOS": "J2ME\/|\\bMIDP\\b|\\bCLDC\\b", - "webOS": "webOS|hpwOS", - "badaOS": "\\bBada\\b", - "BREWOS": "BREW" - } - } -} \ No newline at end of file +{"version":"2.8.17","headerMatch":{"HTTP_ACCEPT":{"matches":["application\/x-obml2d","application\/vnd.rim.html","text\/vnd.wap.wml","application\/vnd.wap.xhtml+xml"]},"HTTP_X_WAP_PROFILE":null,"HTTP_X_WAP_CLIENTID":null,"HTTP_WAP_CONNECTION":null,"HTTP_PROFILE":null,"HTTP_X_OPERAMINI_PHONE_UA":null,"HTTP_X_NOKIA_GATEWAY_ID":null,"HTTP_X_ORANGE_ID":null,"HTTP_X_VODAFONE_3GPDPCONTEXT":null,"HTTP_X_HUAWEI_USERID":null,"HTTP_UA_OS":null,"HTTP_X_MOBILE_GATEWAY":null,"HTTP_X_ATT_DEVICEID":null,"HTTP_UA_CPU":{"matches":["ARM"]}},"uaHttpHeaders":["HTTP_USER_AGENT","HTTP_X_OPERAMINI_PHONE_UA","HTTP_X_DEVICE_USER_AGENT","HTTP_X_ORIGINAL_USER_AGENT","HTTP_X_SKYFIRE_PHONE","HTTP_X_BOLT_PHONE_UA","HTTP_DEVICE_STOCK_UA","HTTP_X_UCBROWSER_DEVICE_UA"],"uaMatch":{"phones":{"iPhone":"\\biPhone\\b|\\biPod\\b","BlackBerry":"BlackBerry|\\bBB10\\b|rim[0-9]+","HTC":"HTC|HTC.*(Sensation|Evo|Vision|Explorer|6800|8100|8900|A7272|S510e|C110e|Legend|Desire|T8282)|APX515CKT|Qtek9090|APA9292KT|HD_mini|Sensation.*Z710e|PG86100|Z715e|Desire.*(A8181|HD)|ADR6200|ADR6400L|ADR6425|001HT|Inspire 4G|Android.*\\bEVO\\b|T-Mobile G1|Z520m","Nexus":"Nexus One|Nexus S|Galaxy.*Nexus|Android.*Nexus.*Mobile|Nexus 4|Nexus 5|Nexus 6","Dell":"Dell.*Streak|Dell.*Aero|Dell.*Venue|DELL.*Venue Pro|Dell Flash|Dell Smoke|Dell Mini 3iX|XCD28|XCD35|\\b001DL\\b|\\b101DL\\b|\\bGS01\\b","Motorola":"Motorola|DROIDX|DROID BIONIC|\\bDroid\\b.*Build|Android.*Xoom|HRI39|MOT-|A1260|A1680|A555|A853|A855|A953|A955|A956|Motorola.*ELECTRIFY|Motorola.*i1|i867|i940|MB200|MB300|MB501|MB502|MB508|MB511|MB520|MB525|MB526|MB611|MB612|MB632|MB810|MB855|MB860|MB861|MB865|MB870|ME501|ME502|ME511|ME525|ME600|ME632|ME722|ME811|ME860|ME863|ME865|MT620|MT710|MT716|MT720|MT810|MT870|MT917|Motorola.*TITANIUM|WX435|WX445|XT300|XT301|XT311|XT316|XT317|XT319|XT320|XT390|XT502|XT530|XT531|XT532|XT535|XT603|XT610|XT611|XT615|XT681|XT701|XT702|XT711|XT720|XT800|XT806|XT860|XT862|XT875|XT882|XT883|XT894|XT901|XT907|XT909|XT910|XT912|XT928|XT926|XT915|XT919|XT925|XT1021|\\bMoto E\\b","Samsung":"Samsung|SM-G9250|GT-19300|SGH-I337|BGT-S5230|GT-B2100|GT-B2700|GT-B2710|GT-B3210|GT-B3310|GT-B3410|GT-B3730|GT-B3740|GT-B5510|GT-B5512|GT-B5722|GT-B6520|GT-B7300|GT-B7320|GT-B7330|GT-B7350|GT-B7510|GT-B7722|GT-B7800|GT-C3010|GT-C3011|GT-C3060|GT-C3200|GT-C3212|GT-C3212I|GT-C3262|GT-C3222|GT-C3300|GT-C3300K|GT-C3303|GT-C3303K|GT-C3310|GT-C3322|GT-C3330|GT-C3350|GT-C3500|GT-C3510|GT-C3530|GT-C3630|GT-C3780|GT-C5010|GT-C5212|GT-C6620|GT-C6625|GT-C6712|GT-E1050|GT-E1070|GT-E1075|GT-E1080|GT-E1081|GT-E1085|GT-E1087|GT-E1100|GT-E1107|GT-E1110|GT-E1120|GT-E1125|GT-E1130|GT-E1160|GT-E1170|GT-E1175|GT-E1180|GT-E1182|GT-E1200|GT-E1210|GT-E1225|GT-E1230|GT-E1390|GT-E2100|GT-E2120|GT-E2121|GT-E2152|GT-E2220|GT-E2222|GT-E2230|GT-E2232|GT-E2250|GT-E2370|GT-E2550|GT-E2652|GT-E3210|GT-E3213|GT-I5500|GT-I5503|GT-I5700|GT-I5800|GT-I5801|GT-I6410|GT-I6420|GT-I7110|GT-I7410|GT-I7500|GT-I8000|GT-I8150|GT-I8160|GT-I8190|GT-I8320|GT-I8330|GT-I8350|GT-I8530|GT-I8700|GT-I8703|GT-I8910|GT-I9000|GT-I9001|GT-I9003|GT-I9010|GT-I9020|GT-I9023|GT-I9070|GT-I9082|GT-I9100|GT-I9103|GT-I9220|GT-I9250|GT-I9300|GT-I9305|GT-I9500|GT-I9505|GT-M3510|GT-M5650|GT-M7500|GT-M7600|GT-M7603|GT-M8800|GT-M8910|GT-N7000|GT-S3110|GT-S3310|GT-S3350|GT-S3353|GT-S3370|GT-S3650|GT-S3653|GT-S3770|GT-S3850|GT-S5210|GT-S5220|GT-S5229|GT-S5230|GT-S5233|GT-S5250|GT-S5253|GT-S5260|GT-S5263|GT-S5270|GT-S5300|GT-S5330|GT-S5350|GT-S5360|GT-S5363|GT-S5369|GT-S5380|GT-S5380D|GT-S5560|GT-S5570|GT-S5600|GT-S5603|GT-S5610|GT-S5620|GT-S5660|GT-S5670|GT-S5690|GT-S5750|GT-S5780|GT-S5830|GT-S5839|GT-S6102|GT-S6500|GT-S7070|GT-S7200|GT-S7220|GT-S7230|GT-S7233|GT-S7250|GT-S7500|GT-S7530|GT-S7550|GT-S7562|GT-S7710|GT-S8000|GT-S8003|GT-S8500|GT-S8530|GT-S8600|SCH-A310|SCH-A530|SCH-A570|SCH-A610|SCH-A630|SCH-A650|SCH-A790|SCH-A795|SCH-A850|SCH-A870|SCH-A890|SCH-A930|SCH-A950|SCH-A970|SCH-A990|SCH-I100|SCH-I110|SCH-I400|SCH-I405|SCH-I500|SCH-I510|SCH-I515|SCH-I600|SCH-I730|SCH-I760|SCH-I770|SCH-I830|SCH-I910|SCH-I920|SCH-I959|SCH-LC11|SCH-N150|SCH-N300|SCH-R100|SCH-R300|SCH-R351|SCH-R400|SCH-R410|SCH-T300|SCH-U310|SCH-U320|SCH-U350|SCH-U360|SCH-U365|SCH-U370|SCH-U380|SCH-U410|SCH-U430|SCH-U450|SCH-U460|SCH-U470|SCH-U490|SCH-U540|SCH-U550|SCH-U620|SCH-U640|SCH-U650|SCH-U660|SCH-U700|SCH-U740|SCH-U750|SCH-U810|SCH-U820|SCH-U900|SCH-U940|SCH-U960|SCS-26UC|SGH-A107|SGH-A117|SGH-A127|SGH-A137|SGH-A157|SGH-A167|SGH-A177|SGH-A187|SGH-A197|SGH-A227|SGH-A237|SGH-A257|SGH-A437|SGH-A517|SGH-A597|SGH-A637|SGH-A657|SGH-A667|SGH-A687|SGH-A697|SGH-A707|SGH-A717|SGH-A727|SGH-A737|SGH-A747|SGH-A767|SGH-A777|SGH-A797|SGH-A817|SGH-A827|SGH-A837|SGH-A847|SGH-A867|SGH-A877|SGH-A887|SGH-A897|SGH-A927|SGH-B100|SGH-B130|SGH-B200|SGH-B220|SGH-C100|SGH-C110|SGH-C120|SGH-C130|SGH-C140|SGH-C160|SGH-C170|SGH-C180|SGH-C200|SGH-C207|SGH-C210|SGH-C225|SGH-C230|SGH-C417|SGH-C450|SGH-D307|SGH-D347|SGH-D357|SGH-D407|SGH-D415|SGH-D780|SGH-D807|SGH-D980|SGH-E105|SGH-E200|SGH-E315|SGH-E316|SGH-E317|SGH-E335|SGH-E590|SGH-E635|SGH-E715|SGH-E890|SGH-F300|SGH-F480|SGH-I200|SGH-I300|SGH-I320|SGH-I550|SGH-I577|SGH-I600|SGH-I607|SGH-I617|SGH-I627|SGH-I637|SGH-I677|SGH-I700|SGH-I717|SGH-I727|SGH-i747M|SGH-I777|SGH-I780|SGH-I827|SGH-I847|SGH-I857|SGH-I896|SGH-I897|SGH-I900|SGH-I907|SGH-I917|SGH-I927|SGH-I937|SGH-I997|SGH-J150|SGH-J200|SGH-L170|SGH-L700|SGH-M110|SGH-M150|SGH-M200|SGH-N105|SGH-N500|SGH-N600|SGH-N620|SGH-N625|SGH-N700|SGH-N710|SGH-P107|SGH-P207|SGH-P300|SGH-P310|SGH-P520|SGH-P735|SGH-P777|SGH-Q105|SGH-R210|SGH-R220|SGH-R225|SGH-S105|SGH-S307|SGH-T109|SGH-T119|SGH-T139|SGH-T209|SGH-T219|SGH-T229|SGH-T239|SGH-T249|SGH-T259|SGH-T309|SGH-T319|SGH-T329|SGH-T339|SGH-T349|SGH-T359|SGH-T369|SGH-T379|SGH-T409|SGH-T429|SGH-T439|SGH-T459|SGH-T469|SGH-T479|SGH-T499|SGH-T509|SGH-T519|SGH-T539|SGH-T559|SGH-T589|SGH-T609|SGH-T619|SGH-T629|SGH-T639|SGH-T659|SGH-T669|SGH-T679|SGH-T709|SGH-T719|SGH-T729|SGH-T739|SGH-T746|SGH-T749|SGH-T759|SGH-T769|SGH-T809|SGH-T819|SGH-T839|SGH-T919|SGH-T929|SGH-T939|SGH-T959|SGH-T989|SGH-U100|SGH-U200|SGH-U800|SGH-V205|SGH-V206|SGH-X100|SGH-X105|SGH-X120|SGH-X140|SGH-X426|SGH-X427|SGH-X475|SGH-X495|SGH-X497|SGH-X507|SGH-X600|SGH-X610|SGH-X620|SGH-X630|SGH-X700|SGH-X820|SGH-X890|SGH-Z130|SGH-Z150|SGH-Z170|SGH-ZX10|SGH-ZX20|SHW-M110|SPH-A120|SPH-A400|SPH-A420|SPH-A460|SPH-A500|SPH-A560|SPH-A600|SPH-A620|SPH-A660|SPH-A700|SPH-A740|SPH-A760|SPH-A790|SPH-A800|SPH-A820|SPH-A840|SPH-A880|SPH-A900|SPH-A940|SPH-A960|SPH-D600|SPH-D700|SPH-D710|SPH-D720|SPH-I300|SPH-I325|SPH-I330|SPH-I350|SPH-I500|SPH-I600|SPH-I700|SPH-L700|SPH-M100|SPH-M220|SPH-M240|SPH-M300|SPH-M305|SPH-M320|SPH-M330|SPH-M350|SPH-M360|SPH-M370|SPH-M380|SPH-M510|SPH-M540|SPH-M550|SPH-M560|SPH-M570|SPH-M580|SPH-M610|SPH-M620|SPH-M630|SPH-M800|SPH-M810|SPH-M850|SPH-M900|SPH-M910|SPH-M920|SPH-M930|SPH-N100|SPH-N200|SPH-N240|SPH-N300|SPH-N400|SPH-Z400|SWC-E100|SCH-i909|GT-N7100|GT-N7105|SCH-I535|SM-N900A|SGH-I317|SGH-T999L|GT-S5360B|GT-I8262|GT-S6802|GT-S6312|GT-S6310|GT-S5312|GT-S5310|GT-I9105|GT-I8510|GT-S6790N|SM-G7105|SM-N9005|GT-S5301|GT-I9295|GT-I9195|SM-C101|GT-S7392|GT-S7560|GT-B7610|GT-I5510|GT-S7582|GT-S7530E|GT-I8750|SM-G9006V|SM-G9008V|SM-G9009D|SM-G900A|SM-G900D|SM-G900F|SM-G900H|SM-G900I|SM-G900J|SM-G900K|SM-G900L|SM-G900M|SM-G900P|SM-G900R4|SM-G900S|SM-G900T|SM-G900V|SM-G900W8|SHV-E160K|SCH-P709|SCH-P729|SM-T2558|GT-I9205","LG":"\\bLG\\b;|LG[- ]?(C800|C900|E400|E610|E900|E-900|F160|F180K|F180L|F180S|730|855|L160|LS740|LS840|LS970|LU6200|MS690|MS695|MS770|MS840|MS870|MS910|P500|P700|P705|VM696|AS680|AS695|AX840|C729|E970|GS505|272|C395|E739BK|E960|L55C|L75C|LS696|LS860|P769BK|P350|P500|P509|P870|UN272|US730|VS840|VS950|LN272|LN510|LS670|LS855|LW690|MN270|MN510|P509|P769|P930|UN200|UN270|UN510|UN610|US670|US740|US760|UX265|UX840|VN271|VN530|VS660|VS700|VS740|VS750|VS910|VS920|VS930|VX9200|VX11000|AX840A|LW770|P506|P925|P999|E612|D955|D802)","Sony":"SonyST|SonyLT|SonyEricsson|SonyEricssonLT15iv|LT18i|E10i|LT28h|LT26w|SonyEricssonMT27i|C5303|C6902|C6903|C6906|C6943|D2533","Asus":"Asus.*Galaxy|PadFone.*Mobile","Micromax":"Micromax.*\\b(A210|A92|A88|A72|A111|A110Q|A115|A116|A110|A90S|A26|A51|A35|A54|A25|A27|A89|A68|A65|A57|A90)\\b","Palm":"PalmSource|Palm","Vertu":"Vertu|Vertu.*Ltd|Vertu.*Ascent|Vertu.*Ayxta|Vertu.*Constellation(F|Quest)?|Vertu.*Monika|Vertu.*Signature","Pantech":"PANTECH|IM-A850S|IM-A840S|IM-A830L|IM-A830K|IM-A830S|IM-A820L|IM-A810K|IM-A810S|IM-A800S|IM-T100K|IM-A725L|IM-A780L|IM-A775C|IM-A770K|IM-A760S|IM-A750K|IM-A740S|IM-A730S|IM-A720L|IM-A710K|IM-A690L|IM-A690S|IM-A650S|IM-A630K|IM-A600S|VEGA PTL21|PT003|P8010|ADR910L|P6030|P6020|P9070|P4100|P9060|P5000|CDM8992|TXT8045|ADR8995|IS11PT|P2030|P6010|P8000|PT002|IS06|CDM8999|P9050|PT001|TXT8040|P2020|P9020|P2000|P7040|P7000|C790","Fly":"IQ230|IQ444|IQ450|IQ440|IQ442|IQ441|IQ245|IQ256|IQ236|IQ255|IQ235|IQ245|IQ275|IQ240|IQ285|IQ280|IQ270|IQ260|IQ250","Wiko":"KITE 4G|HIGHWAY|GETAWAY|STAIRWAY|DARKSIDE|DARKFULL|DARKNIGHT|DARKMOON|SLIDE|WAX 4G|RAINBOW|BLOOM|SUNSET|GOA|LENNY|BARRY|IGGY|OZZY|CINK FIVE|CINK PEAX|CINK PEAX 2|CINK SLIM|CINK SLIM 2|CINK +|CINK KING|CINK PEAX|CINK SLIM|SUBLIM","iMobile":"i-mobile (IQ|i-STYLE|idea|ZAA|Hitz)","SimValley":"\\b(SP-80|XT-930|SX-340|XT-930|SX-310|SP-360|SP60|SPT-800|SP-120|SPT-800|SP-140|SPX-5|SPX-8|SP-100|SPX-8|SPX-12)\\b","Wolfgang":"AT-B24D|AT-AS50HD|AT-AS40W|AT-AS55HD|AT-AS45q2|AT-B26D|AT-AS50Q","Alcatel":"Alcatel","Nintendo":"Nintendo 3DS","Amoi":"Amoi","INQ":"INQ","GenericPhone":"Tapatalk|PDA;|SAGEM|\\bmmp\\b|pocket|\\bpsp\\b|symbian|Smartphone|smartfon|treo|up.browser|up.link|vodafone|\\bwap\\b|nokia|Series40|Series60|S60|SonyEricsson|N900|MAUI.*WAP.*Browser"},"tablets":{"iPad":"iPad|iPad.*Mobile","NexusTablet":"Android.*Nexus[\\s]+(7|9|10)","SamsungTablet":"SAMSUNG.*Tablet|Galaxy.*Tab|SC-01C|GT-P1000|GT-P1003|GT-P1010|GT-P3105|GT-P6210|GT-P6800|GT-P6810|GT-P7100|GT-P7300|GT-P7310|GT-P7500|GT-P7510|SCH-I800|SCH-I815|SCH-I905|SGH-I957|SGH-I987|SGH-T849|SGH-T859|SGH-T869|SPH-P100|GT-P3100|GT-P3108|GT-P3110|GT-P5100|GT-P5110|GT-P6200|GT-P7320|GT-P7511|GT-N8000|GT-P8510|SGH-I497|SPH-P500|SGH-T779|SCH-I705|SCH-I915|GT-N8013|GT-P3113|GT-P5113|GT-P8110|GT-N8010|GT-N8005|GT-N8020|GT-P1013|GT-P6201|GT-P7501|GT-N5100|GT-N5105|GT-N5110|SHV-E140K|SHV-E140L|SHV-E140S|SHV-E150S|SHV-E230K|SHV-E230L|SHV-E230S|SHW-M180K|SHW-M180L|SHW-M180S|SHW-M180W|SHW-M300W|SHW-M305W|SHW-M380K|SHW-M380S|SHW-M380W|SHW-M430W|SHW-M480K|SHW-M480S|SHW-M480W|SHW-M485W|SHW-M486W|SHW-M500W|GT-I9228|SCH-P739|SCH-I925|GT-I9200|GT-P5200|GT-P5210|GT-P5210X|SM-T311|SM-T310|SM-T310X|SM-T210|SM-T210R|SM-T211|SM-P600|SM-P601|SM-P605|SM-P900|SM-P901|SM-T217|SM-T217A|SM-T217S|SM-P6000|SM-T3100|SGH-I467|XE500|SM-T110|GT-P5220|GT-I9200X|GT-N5110X|GT-N5120|SM-P905|SM-T111|SM-T2105|SM-T315|SM-T320|SM-T320X|SM-T321|SM-T520|SM-T525|SM-T530NU|SM-T230NU|SM-T330NU|SM-T900|XE500T1C|SM-P605V|SM-P905V|SM-T337V|SM-T537V|SM-T707V|SM-T807V|SM-P600X|SM-P900X|SM-T210X|SM-T230|SM-T230X|SM-T325|GT-P7503|SM-T531|SM-T330|SM-T530|SM-T705|SM-T705C|SM-T535|SM-T331|SM-T800|SM-T700|SM-T537|SM-T807|SM-P907A|SM-T337A|SM-T537A|SM-T707A|SM-T807A|SM-T237|SM-T807P|SM-P607T|SM-T217T|SM-T337T|SM-T807T|SM-T116NQ|SM-P550|SM-T350|SM-T550|SM-T9000|SM-P9000|SM-T705Y|SM-T805|GT-P3113|SM-T710|SM-T810|SM-T360","Kindle":"Kindle|Silk.*Accelerated|Android.*\\b(KFOT|KFTT|KFJWI|KFJWA|KFOTE|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|WFJWAE|KFSAWA|KFSAWI|KFASWI)\\b","SurfaceTablet":"Windows NT [0-9.]+; ARM;.*(Tablet|ARMBJS)","HPTablet":"HP Slate (7|8|10)|HP ElitePad 900|hp-tablet|EliteBook.*Touch|HP 8|Slate 21|HP SlateBook 10","AsusTablet":"^.*PadFone((?!Mobile).)*$|Transformer|TF101|TF101G|TF300T|TF300TG|TF300TL|TF700T|TF700KL|TF701T|TF810C|ME171|ME301T|ME302C|ME371MG|ME370T|ME372MG|ME172V|ME173X|ME400C|Slider SL101|\\bK00F\\b|\\bK00C\\b|\\bK00E\\b|\\bK00L\\b|TX201LA|ME176C|ME102A|\\bM80TA\\b|ME372CL|ME560CG|ME372CG|ME302KL| K010 | K017 |ME572C|ME103K|ME170C|ME171C|\\bME70C\\b|ME581C|ME581CL|ME8510C|ME181C","BlackBerryTablet":"PlayBook|RIM Tablet","HTCtablet":"HTC_Flyer_P512|HTC Flyer|HTC Jetstream|HTC-P715a|HTC EVO View 4G|PG41200|PG09410","MotorolaTablet":"xoom|sholest|MZ615|MZ605|MZ505|MZ601|MZ602|MZ603|MZ604|MZ606|MZ607|MZ608|MZ609|MZ615|MZ616|MZ617","NookTablet":"Android.*Nook|NookColor|nook browser|BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2","AcerTablet":"Android.*; \\b(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700|A701|W500|W500P|W501|W501P|W510|W511|W700|G100|G100W|B1-A71|B1-710|B1-711|A1-810|A1-811|A1-830)\\b|W3-810|\\bA3-A10\\b|\\bA3-A11\\b","ToshibaTablet":"Android.*(AT100|AT105|AT200|AT205|AT270|AT275|AT300|AT305|AT1S5|AT500|AT570|AT700|AT830)|TOSHIBA.*FOLIO","LGTablet":"\\bL-06C|LG-V909|LG-V900|LG-V700|LG-V510|LG-V500|LG-V410|LG-V400|LG-VK810\\b","FujitsuTablet":"Android.*\\b(F-01D|F-02F|F-05E|F-10D|M532|Q572)\\b","PrestigioTablet":"PMP3170B|PMP3270B|PMP3470B|PMP7170B|PMP3370B|PMP3570C|PMP5870C|PMP3670B|PMP5570C|PMP5770D|PMP3970B|PMP3870C|PMP5580C|PMP5880D|PMP5780D|PMP5588C|PMP7280C|PMP7280C3G|PMP7280|PMP7880D|PMP5597D|PMP5597|PMP7100D|PER3464|PER3274|PER3574|PER3884|PER5274|PER5474|PMP5097CPRO|PMP5097|PMP7380D|PMP5297C|PMP5297C_QUAD|PMP812E|PMP812E3G|PMP812F|PMP810E|PMP880TD|PMT3017|PMT3037|PMT3047|PMT3057|PMT7008|PMT5887|PMT5001|PMT5002","LenovoTablet":"Idea(Tab|Pad)( A1|A10| K1|)|ThinkPad([ ]+)?Tablet|Lenovo.*(S2109|S2110|S5000|S6000|K3011|A3000|A3500|A1000|A2107|A2109|A1107|A5500|A7600|B6000|B8000|B8080)(-|)(FL|F|HV|H|)","DellTablet":"Venue 11|Venue 8|Venue 7|Dell Streak 10|Dell Streak 7","YarvikTablet":"Android.*\\b(TAB210|TAB211|TAB224|TAB250|TAB260|TAB264|TAB310|TAB360|TAB364|TAB410|TAB411|TAB420|TAB424|TAB450|TAB460|TAB461|TAB464|TAB465|TAB467|TAB468|TAB07-100|TAB07-101|TAB07-150|TAB07-151|TAB07-152|TAB07-200|TAB07-201-3G|TAB07-210|TAB07-211|TAB07-212|TAB07-214|TAB07-220|TAB07-400|TAB07-485|TAB08-150|TAB08-200|TAB08-201-3G|TAB08-201-30|TAB09-100|TAB09-211|TAB09-410|TAB10-150|TAB10-201|TAB10-211|TAB10-400|TAB10-410|TAB13-201|TAB274EUK|TAB275EUK|TAB374EUK|TAB462EUK|TAB474EUK|TAB9-200)\\b","MedionTablet":"Android.*\\bOYO\\b|LIFE.*(P9212|P9514|P9516|S9512)|LIFETAB","ArnovaTablet":"AN10G2|AN7bG3|AN7fG3|AN8G3|AN8cG3|AN7G3|AN9G3|AN7dG3|AN7dG3ST|AN7dG3ChildPad|AN10bG3|AN10bG3DT|AN9G2","IntensoTablet":"INM8002KP|INM1010FP|INM805ND|Intenso Tab|TAB1004","IRUTablet":"M702pro","MegafonTablet":"MegaFon V9|\\bZTE V9\\b|Android.*\\bMT7A\\b","EbodaTablet":"E-Boda (Supreme|Impresspeed|Izzycomm|Essential)","AllViewTablet":"Allview.*(Viva|Alldro|City|Speed|All TV|Frenzy|Quasar|Shine|TX1|AX1|AX2)","ArchosTablet":"\\b(101G9|80G9|A101IT)\\b|Qilive 97R|Archos5|\\bARCHOS (70|79|80|90|97|101|FAMILYPAD|)(b|)(G10| Cobalt| TITANIUM(HD|)| Xenon| Neon|XSK| 2| XS 2| PLATINUM| CARBON|GAMEPAD)\\b","AinolTablet":"NOVO7|NOVO8|NOVO10|Novo7Aurora|Novo7Basic|NOVO7PALADIN|novo9-Spark","SonyTablet":"Sony.*Tablet|Xperia Tablet|Sony Tablet S|SO-03E|SGPT12|SGPT13|SGPT114|SGPT121|SGPT122|SGPT123|SGPT111|SGPT112|SGPT113|SGPT131|SGPT132|SGPT133|SGPT211|SGPT212|SGPT213|SGP311|SGP312|SGP321|EBRD1101|EBRD1102|EBRD1201|SGP351|SGP341|SGP511|SGP512|SGP521|SGP541|SGP551|SGP621|SGP612|SOT31","PhilipsTablet":"\\b(PI2010|PI3000|PI3100|PI3105|PI3110|PI3205|PI3210|PI3900|PI4010|PI7000|PI7100)\\b","CubeTablet":"Android.*(K8GT|U9GT|U10GT|U16GT|U17GT|U18GT|U19GT|U20GT|U23GT|U30GT)|CUBE U8GT","CobyTablet":"MID1042|MID1045|MID1125|MID1126|MID7012|MID7014|MID7015|MID7034|MID7035|MID7036|MID7042|MID7048|MID7127|MID8042|MID8048|MID8127|MID9042|MID9740|MID9742|MID7022|MID7010","MIDTablet":"M9701|M9000|M9100|M806|M1052|M806|T703|MID701|MID713|MID710|MID727|MID760|MID830|MID728|MID933|MID125|MID810|MID732|MID120|MID930|MID800|MID731|MID900|MID100|MID820|MID735|MID980|MID130|MID833|MID737|MID960|MID135|MID860|MID736|MID140|MID930|MID835|MID733","MSITablet":"MSI \\b(Primo 73K|Primo 73L|Primo 81L|Primo 77|Primo 93|Primo 75|Primo 76|Primo 73|Primo 81|Primo 91|Primo 90|Enjoy 71|Enjoy 7|Enjoy 10)\\b","SMiTTablet":"Android.*(\\bMID\\b|MID-560|MTV-T1200|MTV-PND531|MTV-P1101|MTV-PND530)","RockChipTablet":"Android.*(RK2818|RK2808A|RK2918|RK3066)|RK2738|RK2808A","FlyTablet":"IQ310|Fly Vision","bqTablet":"Android.*(bq)?.*(Elcano|Curie|Edison|Maxwell|Kepler|Pascal|Tesla|Hypatia|Platon|Newton|Livingstone|Cervantes|Avant|Aquaris E10)|Maxwell.*Lite|Maxwell.*Plus","HuaweiTablet":"MediaPad|MediaPad 7 Youth|IDEOS S7|S7-201c|S7-202u|S7-101|S7-103|S7-104|S7-105|S7-106|S7-201|S7-Slim","NecTablet":"\\bN-06D|\\bN-08D","PantechTablet":"Pantech.*P4100","BronchoTablet":"Broncho.*(N701|N708|N802|a710)","VersusTablet":"TOUCHPAD.*[78910]|\\bTOUCHTAB\\b","ZyncTablet":"z1000|Z99 2G|z99|z930|z999|z990|z909|Z919|z900","PositivoTablet":"TB07STA|TB10STA|TB07FTA|TB10FTA","NabiTablet":"Android.*\\bNabi","KoboTablet":"Kobo Touch|\\bK080\\b|\\bVox\\b Build|\\bArc\\b Build","DanewTablet":"DSlide.*\\b(700|701R|702|703R|704|802|970|971|972|973|974|1010|1012)\\b","TexetTablet":"NaviPad|TB-772A|TM-7045|TM-7055|TM-9750|TM-7016|TM-7024|TM-7026|TM-7041|TM-7043|TM-7047|TM-8041|TM-9741|TM-9747|TM-9748|TM-9751|TM-7022|TM-7021|TM-7020|TM-7011|TM-7010|TM-7023|TM-7025|TM-7037W|TM-7038W|TM-7027W|TM-9720|TM-9725|TM-9737W|TM-1020|TM-9738W|TM-9740|TM-9743W|TB-807A|TB-771A|TB-727A|TB-725A|TB-719A|TB-823A|TB-805A|TB-723A|TB-715A|TB-707A|TB-705A|TB-709A|TB-711A|TB-890HD|TB-880HD|TB-790HD|TB-780HD|TB-770HD|TB-721HD|TB-710HD|TB-434HD|TB-860HD|TB-840HD|TB-760HD|TB-750HD|TB-740HD|TB-730HD|TB-722HD|TB-720HD|TB-700HD|TB-500HD|TB-470HD|TB-431HD|TB-430HD|TB-506|TB-504|TB-446|TB-436|TB-416|TB-146SE|TB-126SE","PlaystationTablet":"Playstation.*(Portable|Vita)","TrekstorTablet":"ST10416-1|VT10416-1|ST70408-1|ST702xx-1|ST702xx-2|ST80208|ST97216|ST70104-2|VT10416-2|ST10216-2A|SurfTab","PyleAudioTablet":"\\b(PTBL10CEU|PTBL10C|PTBL72BC|PTBL72BCEU|PTBL7CEU|PTBL7C|PTBL92BC|PTBL92BCEU|PTBL9CEU|PTBL9CUK|PTBL9C)\\b","AdvanTablet":"Android.* \\b(E3A|T3X|T5C|T5B|T3E|T3C|T3B|T1J|T1F|T2A|T1H|T1i|E1C|T1-E|T5-A|T4|E1-B|T2Ci|T1-B|T1-D|O1-A|E1-A|T1-A|T3A|T4i)\\b ","DanyTechTablet":"Genius Tab G3|Genius Tab S2|Genius Tab Q3|Genius Tab G4|Genius Tab Q4|Genius Tab G-II|Genius TAB GII|Genius TAB GIII|Genius Tab S1","GalapadTablet":"Android.*\\bG1\\b","MicromaxTablet":"Funbook|Micromax.*\\b(P250|P560|P360|P362|P600|P300|P350|P500|P275)\\b","KarbonnTablet":"Android.*\\b(A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2)\\b","AllFineTablet":"Fine7 Genius|Fine7 Shine|Fine7 Air|Fine8 Style|Fine9 More|Fine10 Joy|Fine11 Wide","PROSCANTablet":"\\b(PEM63|PLT1023G|PLT1041|PLT1044|PLT1044G|PLT1091|PLT4311|PLT4311PL|PLT4315|PLT7030|PLT7033|PLT7033D|PLT7035|PLT7035D|PLT7044K|PLT7045K|PLT7045KB|PLT7071KG|PLT7072|PLT7223G|PLT7225G|PLT7777G|PLT7810K|PLT7849G|PLT7851G|PLT7852G|PLT8015|PLT8031|PLT8034|PLT8036|PLT8080K|PLT8082|PLT8088|PLT8223G|PLT8234G|PLT8235G|PLT8816K|PLT9011|PLT9045K|PLT9233G|PLT9735|PLT9760G|PLT9770G)\\b","YONESTablet":"BQ1078|BC1003|BC1077|RK9702|BC9730|BC9001|IT9001|BC7008|BC7010|BC708|BC728|BC7012|BC7030|BC7027|BC7026","ChangJiaTablet":"TPC7102|TPC7103|TPC7105|TPC7106|TPC7107|TPC7201|TPC7203|TPC7205|TPC7210|TPC7708|TPC7709|TPC7712|TPC7110|TPC8101|TPC8103|TPC8105|TPC8106|TPC8203|TPC8205|TPC8503|TPC9106|TPC9701|TPC97101|TPC97103|TPC97105|TPC97106|TPC97111|TPC97113|TPC97203|TPC97603|TPC97809|TPC97205|TPC10101|TPC10103|TPC10106|TPC10111|TPC10203|TPC10205|TPC10503","GUTablet":"TX-A1301|TX-M9002|Q702|kf026","PointOfViewTablet":"TAB-P506|TAB-navi-7-3G-M|TAB-P517|TAB-P-527|TAB-P701|TAB-P703|TAB-P721|TAB-P731N|TAB-P741|TAB-P825|TAB-P905|TAB-P925|TAB-PR945|TAB-PL1015|TAB-P1025|TAB-PI1045|TAB-P1325|TAB-PROTAB[0-9]+|TAB-PROTAB25|TAB-PROTAB26|TAB-PROTAB27|TAB-PROTAB26XL|TAB-PROTAB2-IPS9|TAB-PROTAB30-IPS9|TAB-PROTAB25XXL|TAB-PROTAB26-IPS10|TAB-PROTAB30-IPS10","OvermaxTablet":"OV-(SteelCore|NewBase|Basecore|Baseone|Exellen|Quattor|EduTab|Solution|ACTION|BasicTab|TeddyTab|MagicTab|Stream|TB-08|TB-09)","HCLTablet":"HCL.*Tablet|Connect-3G-2.0|Connect-2G-2.0|ME Tablet U1|ME Tablet U2|ME Tablet G1|ME Tablet X1|ME Tablet Y2|ME Tablet Sync","DPSTablet":"DPS Dream 9|DPS Dual 7","VistureTablet":"V97 HD|i75 3G|Visture V4( HD)?|Visture V5( HD)?|Visture V10","CrestaTablet":"CTP(-)?810|CTP(-)?818|CTP(-)?828|CTP(-)?838|CTP(-)?888|CTP(-)?978|CTP(-)?980|CTP(-)?987|CTP(-)?988|CTP(-)?989","MediatekTablet":"\\bMT8125|MT8389|MT8135|MT8377\\b","ConcordeTablet":"Concorde([ ]+)?Tab|ConCorde ReadMan","GoCleverTablet":"GOCLEVER TAB|A7GOCLEVER|M1042|M7841|M742|R1042BK|R1041|TAB A975|TAB A7842|TAB A741|TAB A741L|TAB M723G|TAB M721|TAB A1021|TAB I921|TAB R721|TAB I720|TAB T76|TAB R70|TAB R76.2|TAB R106|TAB R83.2|TAB M813G|TAB I721|GCTA722|TAB I70|TAB I71|TAB S73|TAB R73|TAB R74|TAB R93|TAB R75|TAB R76.1|TAB A73|TAB A93|TAB A93.2|TAB T72|TAB R83|TAB R974|TAB R973|TAB A101|TAB A103|TAB A104|TAB A104.2|R105BK|M713G|A972BK|TAB A971|TAB R974.2|TAB R104|TAB R83.3|TAB A1042","ModecomTablet":"FreeTAB 9000|FreeTAB 7.4|FreeTAB 7004|FreeTAB 7800|FreeTAB 2096|FreeTAB 7.5|FreeTAB 1014|FreeTAB 1001 |FreeTAB 8001|FreeTAB 9706|FreeTAB 9702|FreeTAB 7003|FreeTAB 7002|FreeTAB 1002|FreeTAB 7801|FreeTAB 1331|FreeTAB 1004|FreeTAB 8002|FreeTAB 8014|FreeTAB 9704|FreeTAB 1003","VoninoTablet":"\\b(Argus[ _]?S|Diamond[ _]?79HD|Emerald[ _]?78E|Luna[ _]?70C|Onyx[ _]?S|Onyx[ _]?Z|Orin[ _]?HD|Orin[ _]?S|Otis[ _]?S|SpeedStar[ _]?S|Magnet[ _]?M9|Primus[ _]?94[ _]?3G|Primus[ _]?94HD|Primus[ _]?QS|Android.*\\bQ8\\b|Sirius[ _]?EVO[ _]?QS|Sirius[ _]?QS|Spirit[ _]?S)\\b","ECSTablet":"V07OT2|TM105A|S10OT1|TR10CS1","StorexTablet":"eZee[_']?(Tab|Go)[0-9]+|TabLC7|Looney Tunes Tab","VodafoneTablet":"SmartTab([ ]+)?[0-9]+|SmartTabII10|SmartTabII7","EssentielBTablet":"Smart[ ']?TAB[ ]+?[0-9]+|Family[ ']?TAB2","RossMoorTablet":"RM-790|RM-997|RMD-878G|RMD-974R|RMT-705A|RMT-701|RME-601|RMT-501|RMT-711","iMobileTablet":"i-mobile i-note","TolinoTablet":"tolino tab [0-9.]+|tolino shine","AudioSonicTablet":"\\bC-22Q|T7-QC|T-17B|T-17P\\b","AMPETablet":"Android.* A78 ","SkkTablet":"Android.* (SKYPAD|PHOENIX|CYCLOPS)","TecnoTablet":"TECNO P9","JXDTablet":"Android.*\\b(F3000|A3300|JXD5000|JXD3000|JXD2000|JXD300B|JXD300|S5800|S7800|S602b|S5110b|S7300|S5300|S602|S603|S5100|S5110|S601|S7100a|P3000F|P3000s|P101|P200s|P1000m|P200m|P9100|P1000s|S6600b|S908|P1000|P300|S18|S6600|S9100)\\b","iJoyTablet":"Tablet (Spirit 7|Essentia|Galatea|Fusion|Onix 7|Landa|Titan|Scooby|Deox|Stella|Themis|Argon|Unique 7|Sygnus|Hexen|Finity 7|Cream|Cream X2|Jade|Neon 7|Neron 7|Kandy|Scape|Saphyr 7|Rebel|Biox|Rebel|Rebel 8GB|Myst|Draco 7|Myst|Tab7-004|Myst|Tadeo Jones|Tablet Boing|Arrow|Draco Dual Cam|Aurix|Mint|Amity|Revolution|Finity 9|Neon 9|T9w|Amity 4GB Dual Cam|Stone 4GB|Stone 8GB|Andromeda|Silken|X2|Andromeda II|Halley|Flame|Saphyr 9,7|Touch 8|Planet|Triton|Unique 10|Hexen 10|Memphis 4GB|Memphis 8GB|Onix 10)","FX2Tablet":"FX2 PAD7|FX2 PAD10","XoroTablet":"KidsPAD 701|PAD[ ]?712|PAD[ ]?714|PAD[ ]?716|PAD[ ]?717|PAD[ ]?718|PAD[ ]?720|PAD[ ]?721|PAD[ ]?722|PAD[ ]?790|PAD[ ]?792|PAD[ ]?900|PAD[ ]?9715D|PAD[ ]?9716DR|PAD[ ]?9718DR|PAD[ ]?9719QR|PAD[ ]?9720QR|TelePAD1030|Telepad1032|TelePAD730|TelePAD731|TelePAD732|TelePAD735Q|TelePAD830|TelePAD9730|TelePAD795|MegaPAD 1331|MegaPAD 1851|MegaPAD 2151","ViewsonicTablet":"ViewPad 10pi|ViewPad 10e|ViewPad 10s|ViewPad E72|ViewPad7|ViewPad E100|ViewPad 7e|ViewSonic VB733|VB100a","OdysTablet":"LOOX|XENO10|ODYS[ -](Space|EVO|Xpress|NOON)|\\bXELIO\\b|Xelio10Pro|XELIO7PHONETAB|XELIO10EXTREME|XELIOPT2|NEO_QUAD10","CaptivaTablet":"CAPTIVA PAD","IconbitTablet":"NetTAB|NT-3702|NT-3702S|NT-3702S|NT-3603P|NT-3603P|NT-0704S|NT-0704S|NT-3805C|NT-3805C|NT-0806C|NT-0806C|NT-0909T|NT-0909T|NT-0907S|NT-0907S|NT-0902S|NT-0902S","TeclastTablet":"T98 4G|\\bP80\\b|\\bX90HD\\b|X98 Air|X98 Air 3G|\\bX89\\b|P80 3G|\\bX80h\\b|P98 Air|\\bX89HD\\b|P98 3G|\\bP90HD\\b|P89 3G|X98 3G|\\bP70h\\b|P79HD 3G|G18d 3G|\\bP79HD\\b|\\bP89s\\b|\\bA88\\b|\\bP10HD\\b|\\bP19HD\\b|G18 3G|\\bP78HD\\b|\\bA78\\b|\\bP75\\b|G17s 3G|G17h 3G|\\bP85t\\b|\\bP90\\b|\\bP11\\b|\\bP98t\\b|\\bP98HD\\b|\\bG18d\\b|\\bP85s\\b|\\bP11HD\\b|\\bP88s\\b|\\bA80HD\\b|\\bA80se\\b|\\bA10h\\b|\\bP89\\b|\\bP78s\\b|\\bG18\\b|\\bP85\\b|\\bA70h\\b|\\bA70\\b|\\bG17\\b|\\bP18\\b|\\bA80s\\b|\\bA11s\\b|\\bP88HD\\b|\\bA80h\\b|\\bP76s\\b|\\bP76h\\b|\\bP98\\b|\\bA10HD\\b|\\bP78\\b|\\bP88\\b|\\bA11\\b|\\bA10t\\b|\\bP76a\\b|\\bP76t\\b|\\bP76e\\b|\\bP85HD\\b|\\bP85a\\b|\\bP86\\b|\\bP75HD\\b|\\bP76v\\b|\\bA12\\b|\\bP75a\\b|\\bA15\\b|\\bP76Ti\\b|\\bP81HD\\b|\\bA10\\b|\\bT760VE\\b|\\bT720HD\\b|\\bP76\\b|\\bP73\\b|\\bP71\\b|\\bP72\\b|\\bT720SE\\b|\\bC520Ti\\b|\\bT760\\b|\\bT720VE\\b|T720-3GE|T720-WiFi","OndaTablet":"\\b(V975i|Vi30|VX530|V701|Vi60|V701s|Vi50|V801s|V719|Vx610w|VX610W|V819i|Vi10|VX580W|Vi10|V711s|V813|V811|V820w|V820|Vi20|V711|VI30W|V712|V891w|V972|V819w|V820w|Vi60|V820w|V711|V813s|V801|V819|V975s|V801|V819|V819|V818|V811|V712|V975m|V101w|V961w|V812|V818|V971|V971s|V919|V989|V116w|V102w|V973|Vi40)\\b[\\s]+","JaytechTablet":"TPC-PA762","BlaupunktTablet":"Endeavour 800NG|Endeavour 1010","DigmaTablet":"\\b(iDx10|iDx9|iDx8|iDx7|iDxD7|iDxD8|iDsQ8|iDsQ7|iDsQ8|iDsD10|iDnD7|3TS804H|iDsQ11|iDj7|iDs10)\\b","EvolioTablet":"ARIA_Mini_wifi|Aria[ _]Mini|Evolio X10|Evolio X7|Evolio X8|\\bEvotab\\b|\\bNeura\\b","LavaTablet":"QPAD E704|\\bIvoryS\\b|E-TAB IVORY|\\bE-TAB\\b","CelkonTablet":"CT695|CT888|CT[\\s]?910|CT7 Tab|CT9 Tab|CT3 Tab|CT2 Tab|CT1 Tab|C820|C720|\\bCT-1\\b","WolderTablet":"miTab \\b(DIAMOND|SPACE|BROOKLYN|NEO|FLY|MANHATTAN|FUNK|EVOLUTION|SKY|GOCAR|IRON|GENIUS|POP|MINT|EPSILON|BROADWAY|JUMP|HOP|LEGEND|NEW AGE|LINE|ADVANCE|FEEL|FOLLOW|LIKE|LINK|LIVE|THINK|FREEDOM|CHICAGO|CLEVELAND|BALTIMORE-GH|IOWA|BOSTON|SEATTLE|PHOENIX|DALLAS|IN 101|MasterChef)\\b","MiTablet":"\\bMI PAD\\b|\\bHM NOTE 1W\\b","NibiruTablet":"Nibiru M1|Nibiru Jupiter One","NexoTablet":"NEXO NOVA|NEXO 10|NEXO AVIO|NEXO FREE|NEXO GO|NEXO EVO|NEXO 3G|NEXO SMART|NEXO KIDDO|NEXO MOBI","LeaderTablet":"TBLT10Q|TBLT10I|TBL-10WDKB|TBL-10WDKBO2013|TBL-W230V2|TBL-W450|TBL-W500|SV572|TBLT7I|TBA-AC7-8G|TBLT79|TBL-8W16|TBL-10W32|TBL-10WKB|TBL-W100","UbislateTablet":"UbiSlate[\\s]?7C","PocketBookTablet":"Pocketbook","Hudl":"Hudl HT7S3","TelstraTablet":"T-Hub2","GenericTablet":"Android.*\\b97D\\b|Tablet(?!.*PC)|BNTV250A|MID-WCDMA|LogicPD Zoom2|\\bA7EB\\b|CatNova8|A1_07|CT704|CT1002|\\bM721\\b|rk30sdk|\\bEVOTAB\\b|M758A|ET904|ALUMIUM10|Smartfren Tab|Endeavour 1010|Tablet-PC-4|Tagi Tab|\\bM6pro\\b|CT1020W|arc 10HD|\\bJolla\\b|\\bTP750\\b"},"browsers":{"Chrome":"\\bCrMo\\b|CriOS|Android.*Chrome\/[.0-9]* (Mobile)?","Dolfin":"\\bDolfin\\b","Opera":"Opera.*Mini|Opera.*Mobi|Android.*Opera|Mobile.*OPR\/[0-9.]+|Coast\/[0-9.]+","Skyfire":"Skyfire","IE":"IEMobile|MSIEMobile","Firefox":"fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile","Bolt":"bolt","TeaShark":"teashark","Blazer":"Blazer","Safari":"Version.*Mobile.*Safari|Safari.*Mobile|MobileSafari","Tizen":"Tizen","UCBrowser":"UC.*Browser|UCWEB","baiduboxapp":"baiduboxapp","baidubrowser":"baidubrowser","DiigoBrowser":"DiigoBrowser","Puffin":"Puffin","Mercury":"\\bMercury\\b","ObigoBrowser":"Obigo","NetFront":"NF-Browser","GenericBrowser":"NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger"},"os":{"AndroidOS":"Android","BlackBerryOS":"blackberry|\\bBB10\\b|rim tablet os","PalmOS":"PalmOS|avantgo|blazer|elaine|hiptop|palm|plucker|xiino","SymbianOS":"Symbian|SymbOS|Series60|Series40|SYB-[0-9]+|\\bS60\\b","WindowsMobileOS":"Windows CE.*(PPC|Smartphone|Mobile|[0-9]{3}x[0-9]{3})|Window Mobile|Windows Phone [0-9.]+|WCE;","WindowsPhoneOS":"Windows Phone 8.1|Windows Phone 8.0|Windows Phone OS|XBLWP7|ZuneWP7|Windows NT 6.[23]; ARM;","iOS":"\\biPhone.*Mobile|\\biPod|\\biPad","MeeGoOS":"MeeGo","MaemoOS":"Maemo","JavaOS":"J2ME\/|\\bMIDP\\b|\\bCLDC\\b","webOS":"webOS|hpwOS","badaOS":"\\bBada\\b","BREWOS":"BREW"},"utilities":{"Bot":"Googlebot|facebookexternalhit|AdsBot-Google|Google Keyword Suggestion|Facebot|YandexBot|bingbot|ia_archiver|AhrefsBot|Ezooms|GSLFbot|WBSearchBot|Twitterbot|TweetmemeBot|Twikle|PaperLiBot|Wotbox|UnwindFetchor|Exabot|MJ12bot|YandexImages|TurnitinBot|Pingdom","MobileBot":"Googlebot-Mobile|AdsBot-Google-Mobile|YahooSeeker\/M1A1-R2D2","DesktopMode":"WPDesktop","TV":"SonyDTV|HbbTV","WebKit":"(webkit)[ \/]([\\w.]+)","Console":"\\b(Nintendo|Nintendo WiiU|Nintendo 3DS|PLAYSTATION|Xbox)\\b","Watch":"SM-V700"}}} \ No newline at end of file diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/Mobile_Detect.php b/htdocs/includes/mobiledetect/mobiledetectlib/Mobile_Detect.php index b6eb0da21b3..fe55d7fedc9 100644 --- a/htdocs/includes/mobiledetect/mobiledetectlib/Mobile_Detect.php +++ b/htdocs/includes/mobiledetect/mobiledetectlib/Mobile_Detect.php @@ -8,7 +8,9 @@ * Mobile_Detect is a lightweight PHP class for detecting mobile devices (including tablets). * It uses the User-Agent string combined with specific HTTP headers to detect the mobile environment. * - * @author Current authors: Serban Ghita <serbanghita@gmail.com>, Nick Ilyin <nick.ilyin@gmail.com> + * @author Current authors: Serban Ghita <serbanghita@gmail.com> + * Nick Ilyin <nick.ilyin@gmail.com> + * * Original author: Victor Stanciu <vic.stanciu@gmail.com> * * @license Code and contributions have 'MIT License' @@ -20,7 +22,7 @@ * README: https://github.com/serbanghita/Mobile-Detect/blob/master/README.md * HOWTO: https://github.com/serbanghita/Mobile-Detect/wiki/Code-examples * - * @version 2.8.3 + * @version 2.8.17 */ class Mobile_Detect @@ -64,7 +66,7 @@ class Mobile_Detect /** * Stores the version number of the current release. */ - const VERSION = '2.8.3'; + const VERSION = '2.8.17'; /** * A type for the version() method indicating a string return value. @@ -76,6 +78,12 @@ class Mobile_Detect */ const VERSION_TYPE_FLOAT = 'float'; + /** + * A cache for resolved matches + * @var array + */ + protected $cache = array(); + /** * The User-Agent HTTP header is stored in here. * @var string @@ -88,6 +96,26 @@ class Mobile_Detect */ protected $httpHeaders = array(); + /** + * CloudFront headers. E.g. CloudFront-Is-Desktop-Viewer, CloudFront-Is-Mobile-Viewer & CloudFront-Is-Tablet-Viewer. + * @var array + */ + protected $cloudfrontHeaders = array(); + + /** + * The matching Regex. + * This is good for debug. + * @var string + */ + protected $matchingRegex = null; + + /** + * The matches extracted from the regex expression. + * This is good for debug. + * @var string + */ + protected $matchesArray = null; + /** * The detection type, using self::DETECTION_TYPE_MOBILE or self::DETECTION_TYPE_EXTENDED. * @@ -127,7 +155,7 @@ class Mobile_Detect 'HTTP_UA_OS' => null, // Reported by Verizon, Vodafone proxy system. 'HTTP_X_MOBILE_GATEWAY' => null, - // Seend this on HTC Sensation. @ref: SensationXE_Beats_Z715e. + // Seen this on HTC Sensation. SensationXE_Beats_Z715e. 'HTTP_X_ATT_DEVICEID' => null, // Seen this on a HTC. 'HTTP_UA_CPU' => array('matches' => array('ARM')), @@ -139,33 +167,45 @@ class Mobile_Detect * @var array */ protected static $phoneDevices = array( - 'iPhone' => '\biPhone.*(Mobile|PhoneGap)|\biPod', // |\biTunes + 'iPhone' => '\biPhone\b|\biPod\b', // |\biTunes 'BlackBerry' => 'BlackBerry|\bBB10\b|rim[0-9]+', 'HTC' => 'HTC|HTC.*(Sensation|Evo|Vision|Explorer|6800|8100|8900|A7272|S510e|C110e|Legend|Desire|T8282)|APX515CKT|Qtek9090|APA9292KT|HD_mini|Sensation.*Z710e|PG86100|Z715e|Desire.*(A8181|HD)|ADR6200|ADR6400L|ADR6425|001HT|Inspire 4G|Android.*\bEVO\b|T-Mobile G1|Z520m', - 'Nexus' => 'Nexus One|Nexus S|Galaxy.*Nexus|Android.*Nexus.*Mobile', + 'Nexus' => 'Nexus One|Nexus S|Galaxy.*Nexus|Android.*Nexus.*Mobile|Nexus 4|Nexus 5|Nexus 6', // @todo: Is 'Dell Streak' a tablet or a phone? ;) 'Dell' => 'Dell.*Streak|Dell.*Aero|Dell.*Venue|DELL.*Venue Pro|Dell Flash|Dell Smoke|Dell Mini 3iX|XCD28|XCD35|\b001DL\b|\b101DL\b|\bGS01\b', - 'Motorola' => 'Motorola|DROIDX|DROID BIONIC|\bDroid\b.*Build|Android.*Xoom|HRI39|MOT-|A1260|A1680|A555|A853|A855|A953|A955|A956|Motorola.*ELECTRIFY|Motorola.*i1|i867|i940|MB200|MB300|MB501|MB502|MB508|MB511|MB520|MB525|MB526|MB611|MB612|MB632|MB810|MB855|MB860|MB861|MB865|MB870|ME501|ME502|ME511|ME525|ME600|ME632|ME722|ME811|ME860|ME863|ME865|MT620|MT710|MT716|MT720|MT810|MT870|MT917|Motorola.*TITANIUM|WX435|WX445|XT300|XT301|XT311|XT316|XT317|XT319|XT320|XT390|XT502|XT530|XT531|XT532|XT535|XT603|XT610|XT611|XT615|XT681|XT701|XT702|XT711|XT720|XT800|XT806|XT860|XT862|XT875|XT882|XT883|XT894|XT901|XT907|XT909|XT910|XT912|XT928|XT926|XT915|XT919|XT925', - 'Samsung' => 'Samsung|SGH-I337|BGT-S5230|GT-B2100|GT-B2700|GT-B2710|GT-B3210|GT-B3310|GT-B3410|GT-B3730|GT-B3740|GT-B5510|GT-B5512|GT-B5722|GT-B6520|GT-B7300|GT-B7320|GT-B7330|GT-B7350|GT-B7510|GT-B7722|GT-B7800|GT-C3010|GT-C3011|GT-C3060|GT-C3200|GT-C3212|GT-C3212I|GT-C3262|GT-C3222|GT-C3300|GT-C3300K|GT-C3303|GT-C3303K|GT-C3310|GT-C3322|GT-C3330|GT-C3350|GT-C3500|GT-C3510|GT-C3530|GT-C3630|GT-C3780|GT-C5010|GT-C5212|GT-C6620|GT-C6625|GT-C6712|GT-E1050|GT-E1070|GT-E1075|GT-E1080|GT-E1081|GT-E1085|GT-E1087|GT-E1100|GT-E1107|GT-E1110|GT-E1120|GT-E1125|GT-E1130|GT-E1160|GT-E1170|GT-E1175|GT-E1180|GT-E1182|GT-E1200|GT-E1210|GT-E1225|GT-E1230|GT-E1390|GT-E2100|GT-E2120|GT-E2121|GT-E2152|GT-E2220|GT-E2222|GT-E2230|GT-E2232|GT-E2250|GT-E2370|GT-E2550|GT-E2652|GT-E3210|GT-E3213|GT-I5500|GT-I5503|GT-I5700|GT-I5800|GT-I5801|GT-I6410|GT-I6420|GT-I7110|GT-I7410|GT-I7500|GT-I8000|GT-I8150|GT-I8160|GT-I8190|GT-I8320|GT-I8330|GT-I8350|GT-I8530|GT-I8700|GT-I8703|GT-I8910|GT-I9000|GT-I9001|GT-I9003|GT-I9010|GT-I9020|GT-I9023|GT-I9070|GT-I9082|GT-I9100|GT-I9103|GT-I9220|GT-I9250|GT-I9300|GT-I9305|GT-I9500|GT-I9505|GT-M3510|GT-M5650|GT-M7500|GT-M7600|GT-M7603|GT-M8800|GT-M8910|GT-N7000|GT-S3110|GT-S3310|GT-S3350|GT-S3353|GT-S3370|GT-S3650|GT-S3653|GT-S3770|GT-S3850|GT-S5210|GT-S5220|GT-S5229|GT-S5230|GT-S5233|GT-S5250|GT-S5253|GT-S5260|GT-S5263|GT-S5270|GT-S5300|GT-S5330|GT-S5350|GT-S5360|GT-S5363|GT-S5369|GT-S5380|GT-S5380D|GT-S5560|GT-S5570|GT-S5600|GT-S5603|GT-S5610|GT-S5620|GT-S5660|GT-S5670|GT-S5690|GT-S5750|GT-S5780|GT-S5830|GT-S5839|GT-S6102|GT-S6500|GT-S7070|GT-S7200|GT-S7220|GT-S7230|GT-S7233|GT-S7250|GT-S7500|GT-S7530|GT-S7550|GT-S7562|GT-S7710|GT-S8000|GT-S8003|GT-S8500|GT-S8530|GT-S8600|SCH-A310|SCH-A530|SCH-A570|SCH-A610|SCH-A630|SCH-A650|SCH-A790|SCH-A795|SCH-A850|SCH-A870|SCH-A890|SCH-A930|SCH-A950|SCH-A970|SCH-A990|SCH-I100|SCH-I110|SCH-I400|SCH-I405|SCH-I500|SCH-I510|SCH-I515|SCH-I600|SCH-I730|SCH-I760|SCH-I770|SCH-I830|SCH-I910|SCH-I920|SCH-I959|SCH-LC11|SCH-N150|SCH-N300|SCH-R100|SCH-R300|SCH-R351|SCH-R400|SCH-R410|SCH-T300|SCH-U310|SCH-U320|SCH-U350|SCH-U360|SCH-U365|SCH-U370|SCH-U380|SCH-U410|SCH-U430|SCH-U450|SCH-U460|SCH-U470|SCH-U490|SCH-U540|SCH-U550|SCH-U620|SCH-U640|SCH-U650|SCH-U660|SCH-U700|SCH-U740|SCH-U750|SCH-U810|SCH-U820|SCH-U900|SCH-U940|SCH-U960|SCS-26UC|SGH-A107|SGH-A117|SGH-A127|SGH-A137|SGH-A157|SGH-A167|SGH-A177|SGH-A187|SGH-A197|SGH-A227|SGH-A237|SGH-A257|SGH-A437|SGH-A517|SGH-A597|SGH-A637|SGH-A657|SGH-A667|SGH-A687|SGH-A697|SGH-A707|SGH-A717|SGH-A727|SGH-A737|SGH-A747|SGH-A767|SGH-A777|SGH-A797|SGH-A817|SGH-A827|SGH-A837|SGH-A847|SGH-A867|SGH-A877|SGH-A887|SGH-A897|SGH-A927|SGH-B100|SGH-B130|SGH-B200|SGH-B220|SGH-C100|SGH-C110|SGH-C120|SGH-C130|SGH-C140|SGH-C160|SGH-C170|SGH-C180|SGH-C200|SGH-C207|SGH-C210|SGH-C225|SGH-C230|SGH-C417|SGH-C450|SGH-D307|SGH-D347|SGH-D357|SGH-D407|SGH-D415|SGH-D780|SGH-D807|SGH-D980|SGH-E105|SGH-E200|SGH-E315|SGH-E316|SGH-E317|SGH-E335|SGH-E590|SGH-E635|SGH-E715|SGH-E890|SGH-F300|SGH-F480|SGH-I200|SGH-I300|SGH-I320|SGH-I550|SGH-I577|SGH-I600|SGH-I607|SGH-I617|SGH-I627|SGH-I637|SGH-I677|SGH-I700|SGH-I717|SGH-I727|SGH-i747M|SGH-I777|SGH-I780|SGH-I827|SGH-I847|SGH-I857|SGH-I896|SGH-I897|SGH-I900|SGH-I907|SGH-I917|SGH-I927|SGH-I937|SGH-I997|SGH-J150|SGH-J200|SGH-L170|SGH-L700|SGH-M110|SGH-M150|SGH-M200|SGH-N105|SGH-N500|SGH-N600|SGH-N620|SGH-N625|SGH-N700|SGH-N710|SGH-P107|SGH-P207|SGH-P300|SGH-P310|SGH-P520|SGH-P735|SGH-P777|SGH-Q105|SGH-R210|SGH-R220|SGH-R225|SGH-S105|SGH-S307|SGH-T109|SGH-T119|SGH-T139|SGH-T209|SGH-T219|SGH-T229|SGH-T239|SGH-T249|SGH-T259|SGH-T309|SGH-T319|SGH-T329|SGH-T339|SGH-T349|SGH-T359|SGH-T369|SGH-T379|SGH-T409|SGH-T429|SGH-T439|SGH-T459|SGH-T469|SGH-T479|SGH-T499|SGH-T509|SGH-T519|SGH-T539|SGH-T559|SGH-T589|SGH-T609|SGH-T619|SGH-T629|SGH-T639|SGH-T659|SGH-T669|SGH-T679|SGH-T709|SGH-T719|SGH-T729|SGH-T739|SGH-T746|SGH-T749|SGH-T759|SGH-T769|SGH-T809|SGH-T819|SGH-T839|SGH-T919|SGH-T929|SGH-T939|SGH-T959|SGH-T989|SGH-U100|SGH-U200|SGH-U800|SGH-V205|SGH-V206|SGH-X100|SGH-X105|SGH-X120|SGH-X140|SGH-X426|SGH-X427|SGH-X475|SGH-X495|SGH-X497|SGH-X507|SGH-X600|SGH-X610|SGH-X620|SGH-X630|SGH-X700|SGH-X820|SGH-X890|SGH-Z130|SGH-Z150|SGH-Z170|SGH-ZX10|SGH-ZX20|SHW-M110|SPH-A120|SPH-A400|SPH-A420|SPH-A460|SPH-A500|SPH-A560|SPH-A600|SPH-A620|SPH-A660|SPH-A700|SPH-A740|SPH-A760|SPH-A790|SPH-A800|SPH-A820|SPH-A840|SPH-A880|SPH-A900|SPH-A940|SPH-A960|SPH-D600|SPH-D700|SPH-D710|SPH-D720|SPH-I300|SPH-I325|SPH-I330|SPH-I350|SPH-I500|SPH-I600|SPH-I700|SPH-L700|SPH-M100|SPH-M220|SPH-M240|SPH-M300|SPH-M305|SPH-M320|SPH-M330|SPH-M350|SPH-M360|SPH-M370|SPH-M380|SPH-M510|SPH-M540|SPH-M550|SPH-M560|SPH-M570|SPH-M580|SPH-M610|SPH-M620|SPH-M630|SPH-M800|SPH-M810|SPH-M850|SPH-M900|SPH-M910|SPH-M920|SPH-M930|SPH-N100|SPH-N200|SPH-N240|SPH-N300|SPH-N400|SPH-Z400|SWC-E100|SCH-i909|GT-N7100|GT-N7105|SCH-I535|SM-N900A|SGH-I317|SGH-T999L|GT-S5360B|GT-I8262|GT-S6802|GT-S6312|GT-S6310|GT-S5312|GT-S5310|GT-I9105|GT-I8510|GT-S6790N|SM-G7105|SM-N9005|GT-S5301|GT-I9295|GT-I9195|SM-C101|GT-S7392|GT-S7560|GT-B7610|GT-I5510|GT-S7582|GT-S7530E', - 'LG' => '\bLG\b;|LG[- ]?(C800|C900|E400|E610|E900|E-900|F160|F180K|F180L|F180S|730|855|L160|LS840|LS970|LU6200|MS690|MS695|MS770|MS840|MS870|MS910|P500|P700|P705|VM696|AS680|AS695|AX840|C729|E970|GS505|272|C395|E739BK|E960|L55C|L75C|LS696|LS860|P769BK|P350|P500|P509|P870|UN272|US730|VS840|VS950|LN272|LN510|LS670|LS855|LW690|MN270|MN510|P509|P769|P930|UN200|UN270|UN510|UN610|US670|US740|US760|UX265|UX840|VN271|VN530|VS660|VS700|VS740|VS750|VS910|VS920|VS930|VX9200|VX11000|AX840A|LW770|P506|P925|P999|E612|D955|D802)', - 'Sony' => 'SonyST|SonyLT|SonyEricsson|SonyEricssonLT15iv|LT18i|E10i|LT28h|LT26w|SonyEricssonMT27i', + 'Motorola' => 'Motorola|DROIDX|DROID BIONIC|\bDroid\b.*Build|Android.*Xoom|HRI39|MOT-|A1260|A1680|A555|A853|A855|A953|A955|A956|Motorola.*ELECTRIFY|Motorola.*i1|i867|i940|MB200|MB300|MB501|MB502|MB508|MB511|MB520|MB525|MB526|MB611|MB612|MB632|MB810|MB855|MB860|MB861|MB865|MB870|ME501|ME502|ME511|ME525|ME600|ME632|ME722|ME811|ME860|ME863|ME865|MT620|MT710|MT716|MT720|MT810|MT870|MT917|Motorola.*TITANIUM|WX435|WX445|XT300|XT301|XT311|XT316|XT317|XT319|XT320|XT390|XT502|XT530|XT531|XT532|XT535|XT603|XT610|XT611|XT615|XT681|XT701|XT702|XT711|XT720|XT800|XT806|XT860|XT862|XT875|XT882|XT883|XT894|XT901|XT907|XT909|XT910|XT912|XT928|XT926|XT915|XT919|XT925|XT1021|\bMoto E\b', + 'Samsung' => 'Samsung|SM-G9250|GT-19300|SGH-I337|BGT-S5230|GT-B2100|GT-B2700|GT-B2710|GT-B3210|GT-B3310|GT-B3410|GT-B3730|GT-B3740|GT-B5510|GT-B5512|GT-B5722|GT-B6520|GT-B7300|GT-B7320|GT-B7330|GT-B7350|GT-B7510|GT-B7722|GT-B7800|GT-C3010|GT-C3011|GT-C3060|GT-C3200|GT-C3212|GT-C3212I|GT-C3262|GT-C3222|GT-C3300|GT-C3300K|GT-C3303|GT-C3303K|GT-C3310|GT-C3322|GT-C3330|GT-C3350|GT-C3500|GT-C3510|GT-C3530|GT-C3630|GT-C3780|GT-C5010|GT-C5212|GT-C6620|GT-C6625|GT-C6712|GT-E1050|GT-E1070|GT-E1075|GT-E1080|GT-E1081|GT-E1085|GT-E1087|GT-E1100|GT-E1107|GT-E1110|GT-E1120|GT-E1125|GT-E1130|GT-E1160|GT-E1170|GT-E1175|GT-E1180|GT-E1182|GT-E1200|GT-E1210|GT-E1225|GT-E1230|GT-E1390|GT-E2100|GT-E2120|GT-E2121|GT-E2152|GT-E2220|GT-E2222|GT-E2230|GT-E2232|GT-E2250|GT-E2370|GT-E2550|GT-E2652|GT-E3210|GT-E3213|GT-I5500|GT-I5503|GT-I5700|GT-I5800|GT-I5801|GT-I6410|GT-I6420|GT-I7110|GT-I7410|GT-I7500|GT-I8000|GT-I8150|GT-I8160|GT-I8190|GT-I8320|GT-I8330|GT-I8350|GT-I8530|GT-I8700|GT-I8703|GT-I8910|GT-I9000|GT-I9001|GT-I9003|GT-I9010|GT-I9020|GT-I9023|GT-I9070|GT-I9082|GT-I9100|GT-I9103|GT-I9220|GT-I9250|GT-I9300|GT-I9305|GT-I9500|GT-I9505|GT-M3510|GT-M5650|GT-M7500|GT-M7600|GT-M7603|GT-M8800|GT-M8910|GT-N7000|GT-S3110|GT-S3310|GT-S3350|GT-S3353|GT-S3370|GT-S3650|GT-S3653|GT-S3770|GT-S3850|GT-S5210|GT-S5220|GT-S5229|GT-S5230|GT-S5233|GT-S5250|GT-S5253|GT-S5260|GT-S5263|GT-S5270|GT-S5300|GT-S5330|GT-S5350|GT-S5360|GT-S5363|GT-S5369|GT-S5380|GT-S5380D|GT-S5560|GT-S5570|GT-S5600|GT-S5603|GT-S5610|GT-S5620|GT-S5660|GT-S5670|GT-S5690|GT-S5750|GT-S5780|GT-S5830|GT-S5839|GT-S6102|GT-S6500|GT-S7070|GT-S7200|GT-S7220|GT-S7230|GT-S7233|GT-S7250|GT-S7500|GT-S7530|GT-S7550|GT-S7562|GT-S7710|GT-S8000|GT-S8003|GT-S8500|GT-S8530|GT-S8600|SCH-A310|SCH-A530|SCH-A570|SCH-A610|SCH-A630|SCH-A650|SCH-A790|SCH-A795|SCH-A850|SCH-A870|SCH-A890|SCH-A930|SCH-A950|SCH-A970|SCH-A990|SCH-I100|SCH-I110|SCH-I400|SCH-I405|SCH-I500|SCH-I510|SCH-I515|SCH-I600|SCH-I730|SCH-I760|SCH-I770|SCH-I830|SCH-I910|SCH-I920|SCH-I959|SCH-LC11|SCH-N150|SCH-N300|SCH-R100|SCH-R300|SCH-R351|SCH-R400|SCH-R410|SCH-T300|SCH-U310|SCH-U320|SCH-U350|SCH-U360|SCH-U365|SCH-U370|SCH-U380|SCH-U410|SCH-U430|SCH-U450|SCH-U460|SCH-U470|SCH-U490|SCH-U540|SCH-U550|SCH-U620|SCH-U640|SCH-U650|SCH-U660|SCH-U700|SCH-U740|SCH-U750|SCH-U810|SCH-U820|SCH-U900|SCH-U940|SCH-U960|SCS-26UC|SGH-A107|SGH-A117|SGH-A127|SGH-A137|SGH-A157|SGH-A167|SGH-A177|SGH-A187|SGH-A197|SGH-A227|SGH-A237|SGH-A257|SGH-A437|SGH-A517|SGH-A597|SGH-A637|SGH-A657|SGH-A667|SGH-A687|SGH-A697|SGH-A707|SGH-A717|SGH-A727|SGH-A737|SGH-A747|SGH-A767|SGH-A777|SGH-A797|SGH-A817|SGH-A827|SGH-A837|SGH-A847|SGH-A867|SGH-A877|SGH-A887|SGH-A897|SGH-A927|SGH-B100|SGH-B130|SGH-B200|SGH-B220|SGH-C100|SGH-C110|SGH-C120|SGH-C130|SGH-C140|SGH-C160|SGH-C170|SGH-C180|SGH-C200|SGH-C207|SGH-C210|SGH-C225|SGH-C230|SGH-C417|SGH-C450|SGH-D307|SGH-D347|SGH-D357|SGH-D407|SGH-D415|SGH-D780|SGH-D807|SGH-D980|SGH-E105|SGH-E200|SGH-E315|SGH-E316|SGH-E317|SGH-E335|SGH-E590|SGH-E635|SGH-E715|SGH-E890|SGH-F300|SGH-F480|SGH-I200|SGH-I300|SGH-I320|SGH-I550|SGH-I577|SGH-I600|SGH-I607|SGH-I617|SGH-I627|SGH-I637|SGH-I677|SGH-I700|SGH-I717|SGH-I727|SGH-i747M|SGH-I777|SGH-I780|SGH-I827|SGH-I847|SGH-I857|SGH-I896|SGH-I897|SGH-I900|SGH-I907|SGH-I917|SGH-I927|SGH-I937|SGH-I997|SGH-J150|SGH-J200|SGH-L170|SGH-L700|SGH-M110|SGH-M150|SGH-M200|SGH-N105|SGH-N500|SGH-N600|SGH-N620|SGH-N625|SGH-N700|SGH-N710|SGH-P107|SGH-P207|SGH-P300|SGH-P310|SGH-P520|SGH-P735|SGH-P777|SGH-Q105|SGH-R210|SGH-R220|SGH-R225|SGH-S105|SGH-S307|SGH-T109|SGH-T119|SGH-T139|SGH-T209|SGH-T219|SGH-T229|SGH-T239|SGH-T249|SGH-T259|SGH-T309|SGH-T319|SGH-T329|SGH-T339|SGH-T349|SGH-T359|SGH-T369|SGH-T379|SGH-T409|SGH-T429|SGH-T439|SGH-T459|SGH-T469|SGH-T479|SGH-T499|SGH-T509|SGH-T519|SGH-T539|SGH-T559|SGH-T589|SGH-T609|SGH-T619|SGH-T629|SGH-T639|SGH-T659|SGH-T669|SGH-T679|SGH-T709|SGH-T719|SGH-T729|SGH-T739|SGH-T746|SGH-T749|SGH-T759|SGH-T769|SGH-T809|SGH-T819|SGH-T839|SGH-T919|SGH-T929|SGH-T939|SGH-T959|SGH-T989|SGH-U100|SGH-U200|SGH-U800|SGH-V205|SGH-V206|SGH-X100|SGH-X105|SGH-X120|SGH-X140|SGH-X426|SGH-X427|SGH-X475|SGH-X495|SGH-X497|SGH-X507|SGH-X600|SGH-X610|SGH-X620|SGH-X630|SGH-X700|SGH-X820|SGH-X890|SGH-Z130|SGH-Z150|SGH-Z170|SGH-ZX10|SGH-ZX20|SHW-M110|SPH-A120|SPH-A400|SPH-A420|SPH-A460|SPH-A500|SPH-A560|SPH-A600|SPH-A620|SPH-A660|SPH-A700|SPH-A740|SPH-A760|SPH-A790|SPH-A800|SPH-A820|SPH-A840|SPH-A880|SPH-A900|SPH-A940|SPH-A960|SPH-D600|SPH-D700|SPH-D710|SPH-D720|SPH-I300|SPH-I325|SPH-I330|SPH-I350|SPH-I500|SPH-I600|SPH-I700|SPH-L700|SPH-M100|SPH-M220|SPH-M240|SPH-M300|SPH-M305|SPH-M320|SPH-M330|SPH-M350|SPH-M360|SPH-M370|SPH-M380|SPH-M510|SPH-M540|SPH-M550|SPH-M560|SPH-M570|SPH-M580|SPH-M610|SPH-M620|SPH-M630|SPH-M800|SPH-M810|SPH-M850|SPH-M900|SPH-M910|SPH-M920|SPH-M930|SPH-N100|SPH-N200|SPH-N240|SPH-N300|SPH-N400|SPH-Z400|SWC-E100|SCH-i909|GT-N7100|GT-N7105|SCH-I535|SM-N900A|SGH-I317|SGH-T999L|GT-S5360B|GT-I8262|GT-S6802|GT-S6312|GT-S6310|GT-S5312|GT-S5310|GT-I9105|GT-I8510|GT-S6790N|SM-G7105|SM-N9005|GT-S5301|GT-I9295|GT-I9195|SM-C101|GT-S7392|GT-S7560|GT-B7610|GT-I5510|GT-S7582|GT-S7530E|GT-I8750|SM-G9006V|SM-G9008V|SM-G9009D|SM-G900A|SM-G900D|SM-G900F|SM-G900H|SM-G900I|SM-G900J|SM-G900K|SM-G900L|SM-G900M|SM-G900P|SM-G900R4|SM-G900S|SM-G900T|SM-G900V|SM-G900W8|SHV-E160K|SCH-P709|SCH-P729|SM-T2558|GT-I9205', + 'LG' => '\bLG\b;|LG[- ]?(C800|C900|E400|E610|E900|E-900|F160|F180K|F180L|F180S|730|855|L160|LS740|LS840|LS970|LU6200|MS690|MS695|MS770|MS840|MS870|MS910|P500|P700|P705|VM696|AS680|AS695|AX840|C729|E970|GS505|272|C395|E739BK|E960|L55C|L75C|LS696|LS860|P769BK|P350|P500|P509|P870|UN272|US730|VS840|VS950|LN272|LN510|LS670|LS855|LW690|MN270|MN510|P509|P769|P930|UN200|UN270|UN510|UN610|US670|US740|US760|UX265|UX840|VN271|VN530|VS660|VS700|VS740|VS750|VS910|VS920|VS930|VX9200|VX11000|AX840A|LW770|P506|P925|P999|E612|D955|D802)', + 'Sony' => 'SonyST|SonyLT|SonyEricsson|SonyEricssonLT15iv|LT18i|E10i|LT28h|LT26w|SonyEricssonMT27i|C5303|C6902|C6903|C6906|C6943|D2533', 'Asus' => 'Asus.*Galaxy|PadFone.*Mobile', - // @ref: http://www.micromaxinfo.com/mobiles/smartphones + // http://www.micromaxinfo.com/mobiles/smartphones // Added because the codes might conflict with Acer Tablets. 'Micromax' => 'Micromax.*\b(A210|A92|A88|A72|A111|A110Q|A115|A116|A110|A90S|A26|A51|A35|A54|A25|A27|A89|A68|A65|A57|A90)\b', - 'Palm' => 'PalmSource|Palm', // avantgo|blazer|elaine|hiptop|plucker|xiino ; @todo - complete the regex. + // @todo Complete the regex. + 'Palm' => 'PalmSource|Palm', // avantgo|blazer|elaine|hiptop|plucker|xiino ; 'Vertu' => 'Vertu|Vertu.*Ltd|Vertu.*Ascent|Vertu.*Ayxta|Vertu.*Constellation(F|Quest)?|Vertu.*Monika|Vertu.*Signature', // Just for fun ;) - // @ref: http://www.pantech.co.kr/en/prod/prodList.do?gbrand=VEGA (PANTECH) + // http://www.pantech.co.kr/en/prod/prodList.do?gbrand=VEGA (PANTECH) // Most of the VEGA devices are legacy. PANTECH seem to be newer devices based on Android. 'Pantech' => 'PANTECH|IM-A850S|IM-A840S|IM-A830L|IM-A830K|IM-A830S|IM-A820L|IM-A810K|IM-A810S|IM-A800S|IM-T100K|IM-A725L|IM-A780L|IM-A775C|IM-A770K|IM-A760S|IM-A750K|IM-A740S|IM-A730S|IM-A720L|IM-A710K|IM-A690L|IM-A690S|IM-A650S|IM-A630K|IM-A600S|VEGA PTL21|PT003|P8010|ADR910L|P6030|P6020|P9070|P4100|P9060|P5000|CDM8992|TXT8045|ADR8995|IS11PT|P2030|P6010|P8000|PT002|IS06|CDM8999|P9050|PT001|TXT8040|P2020|P9020|P2000|P7040|P7000|C790', - // @ref: http://www.fly-phone.com/devices/smartphones/ ; Included only smartphones. + // http://www.fly-phone.com/devices/smartphones/ ; Included only smartphones. 'Fly' => 'IQ230|IQ444|IQ450|IQ440|IQ442|IQ441|IQ245|IQ256|IQ236|IQ255|IQ235|IQ245|IQ275|IQ240|IQ285|IQ280|IQ270|IQ260|IQ250', - 'iMobile' => 'i-mobile (IQ|i-STYLE|idea|ZAA|Hitz)', + // http://fr.wikomobile.com + 'Wiko' => 'KITE 4G|HIGHWAY|GETAWAY|STAIRWAY|DARKSIDE|DARKFULL|DARKNIGHT|DARKMOON|SLIDE|WAX 4G|RAINBOW|BLOOM|SUNSET|GOA|LENNY|BARRY|IGGY|OZZY|CINK FIVE|CINK PEAX|CINK PEAX 2|CINK SLIM|CINK SLIM 2|CINK +|CINK KING|CINK PEAX|CINK SLIM|SUBLIM', + 'iMobile' => 'i-mobile (IQ|i-STYLE|idea|ZAA|Hitz)', // Added simvalley mobile just for fun. They have some interesting devices. - // @ref: http://www.simvalley.fr/telephonie---gps-_22_telephonie-mobile_telephones_.html + // http://www.simvalley.fr/telephonie---gps-_22_telephonie-mobile_telephones_.html 'SimValley' => '\b(SP-80|XT-930|SX-340|XT-930|SX-310|SP-360|SP60|SPT-800|SP-120|SPT-800|SP-140|SPX-5|SPX-8|SP-100|SPX-8|SPX-12)\b', - // @Tapatalk is a mobile app; @ref: http://support.tapatalk.com/threads/smf-2-0-2-os-and-browser-detection-plugin-and-tapatalk.15565/#post-79039 - 'GenericPhone' => 'Tapatalk|PDA;|SAGEM|\bmmp\b|pocket|\bpsp\b|symbian|Smartphone|smartfon|treo|up.browser|up.link|vodafone|\bwap\b|nokia|Series40|Series60|S60|SonyEricsson|N900|MAUI.*WAP.*Browser' + // Wolfgang - a brand that is sold by Aldi supermarkets. + // http://www.wolfgangmobile.com/ + 'Wolfgang' => 'AT-B24D|AT-AS50HD|AT-AS40W|AT-AS55HD|AT-AS45q2|AT-B26D|AT-AS50Q', + 'Alcatel' => 'Alcatel', + 'Nintendo' => 'Nintendo 3DS', + // http://en.wikipedia.org/wiki/Amoi + 'Amoi' => 'Amoi', + // http://en.wikipedia.org/wiki/INQ + 'INQ' => 'INQ', + // @Tapatalk is a mobile app; http://support.tapatalk.com/threads/smf-2-0-2-os-and-browser-detection-plugin-and-tapatalk.15565/#post-79039 + 'GenericPhone' => 'Tapatalk|PDA;|SAGEM|\bmmp\b|pocket|\bpsp\b|symbian|Smartphone|smartfon|treo|up.browser|up.link|vodafone|\bwap\b|nokia|Series40|Series60|S60|SonyEricsson|N900|MAUI.*WAP.*Browser', ); /** @@ -174,78 +214,94 @@ class Mobile_Detect * @var array */ protected static $tabletDevices = array( - 'iPad' => 'iPad|iPad.*Mobile', // @todo: check for mobile friendly emails topic. - 'NexusTablet' => 'Android.*Nexus[\s]+(7|10)|^.*Android.*Nexus(?:(?!Mobile).)*$', - 'SamsungTablet' => 'SAMSUNG.*Tablet|Galaxy.*Tab|SC-01C|GT-P1000|GT-P1003|GT-P1010|GT-P3105|GT-P6210|GT-P6800|GT-P6810|GT-P7100|GT-P7300|GT-P7310|GT-P7500|GT-P7510|SCH-I800|SCH-I815|SCH-I905|SGH-I957|SGH-I987|SGH-T849|SGH-T859|SGH-T869|SPH-P100|GT-P3100|GT-P3108|GT-P3110|GT-P5100|GT-P5110|GT-P6200|GT-P7320|GT-P7511|GT-N8000|GT-P8510|SGH-I497|SPH-P500|SGH-T779|SCH-I705|SCH-I915|GT-N8013|GT-P3113|GT-P5113|GT-P8110|GT-N8010|GT-N8005|GT-N8020|GT-P1013|GT-P6201|GT-P7501|GT-N5100|GT-N5105|GT-N5110|SHV-E140K|SHV-E140L|SHV-E140S|SHV-E150S|SHV-E230K|SHV-E230L|SHV-E230S|SHW-M180K|SHW-M180L|SHW-M180S|SHW-M180W|SHW-M300W|SHW-M305W|SHW-M380K|SHW-M380S|SHW-M380W|SHW-M430W|SHW-M480K|SHW-M480S|SHW-M480W|SHW-M485W|SHW-M486W|SHW-M500W|GT-I9228|SCH-P739|SCH-I925|GT-I9200|GT-I9205|GT-P5200|GT-P5210|GT-P5210X|SM-T311|SM-T310|SM-T310X|SM-T210|SM-T210R|SM-T211|SM-P600|SM-P601|SM-P605|SM-P900|SM-P901|SM-T217|SM-T217A|SM-T217S|SM-P6000|SM-T3100|SGH-I467|XE500|SM-T110|GT-P5220|GT-I9200X|GT-N5110X|GT-N5120|SM-P905|SM-T111|SM-T2105|SM-T315|SM-T320|SM-T320X|SM-T321|SM-T520|SM-T525|SM-T530NU|SM-T230NU|SM-T330NU|SM-T900|XE500T1C|SM-P605V|SM-P905V|SM-P600X|SM-P900X|SM-T210X|SM-T230|SM-T230X|SM-T325|GT-P7503|SM-T531|SM-T330|SM-T530|SM-T705C|SM-T535|SM-T331', // SCH-P709|SCH-P729|SM-T2558 - Samsung Mega - treat them like a regular phone. - // @reference: http://www.labnol.org/software/kindle-user-agent-string/20378/ - 'Kindle' => 'Kindle|Silk.*Accelerated|Android.*\b(KFOT|KFTT|KFJWI|KFJWA|KFOTE|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|WFJWAE)\b', + // @todo: check for mobile friendly emails topic. + 'iPad' => 'iPad|iPad.*Mobile', + // Removed |^.*Android.*Nexus(?!(?:Mobile).)*$ + // @see #442 + 'NexusTablet' => 'Android.*Nexus[\s]+(7|9|10)', + 'SamsungTablet' => 'SAMSUNG.*Tablet|Galaxy.*Tab|SC-01C|GT-P1000|GT-P1003|GT-P1010|GT-P3105|GT-P6210|GT-P6800|GT-P6810|GT-P7100|GT-P7300|GT-P7310|GT-P7500|GT-P7510|SCH-I800|SCH-I815|SCH-I905|SGH-I957|SGH-I987|SGH-T849|SGH-T859|SGH-T869|SPH-P100|GT-P3100|GT-P3108|GT-P3110|GT-P5100|GT-P5110|GT-P6200|GT-P7320|GT-P7511|GT-N8000|GT-P8510|SGH-I497|SPH-P500|SGH-T779|SCH-I705|SCH-I915|GT-N8013|GT-P3113|GT-P5113|GT-P8110|GT-N8010|GT-N8005|GT-N8020|GT-P1013|GT-P6201|GT-P7501|GT-N5100|GT-N5105|GT-N5110|SHV-E140K|SHV-E140L|SHV-E140S|SHV-E150S|SHV-E230K|SHV-E230L|SHV-E230S|SHW-M180K|SHW-M180L|SHW-M180S|SHW-M180W|SHW-M300W|SHW-M305W|SHW-M380K|SHW-M380S|SHW-M380W|SHW-M430W|SHW-M480K|SHW-M480S|SHW-M480W|SHW-M485W|SHW-M486W|SHW-M500W|GT-I9228|SCH-P739|SCH-I925|GT-I9200|GT-P5200|GT-P5210|GT-P5210X|SM-T311|SM-T310|SM-T310X|SM-T210|SM-T210R|SM-T211|SM-P600|SM-P601|SM-P605|SM-P900|SM-P901|SM-T217|SM-T217A|SM-T217S|SM-P6000|SM-T3100|SGH-I467|XE500|SM-T110|GT-P5220|GT-I9200X|GT-N5110X|GT-N5120|SM-P905|SM-T111|SM-T2105|SM-T315|SM-T320|SM-T320X|SM-T321|SM-T520|SM-T525|SM-T530NU|SM-T230NU|SM-T330NU|SM-T900|XE500T1C|SM-P605V|SM-P905V|SM-T337V|SM-T537V|SM-T707V|SM-T807V|SM-P600X|SM-P900X|SM-T210X|SM-T230|SM-T230X|SM-T325|GT-P7503|SM-T531|SM-T330|SM-T530|SM-T705|SM-T705C|SM-T535|SM-T331|SM-T800|SM-T700|SM-T537|SM-T807|SM-P907A|SM-T337A|SM-T537A|SM-T707A|SM-T807A|SM-T237|SM-T807P|SM-P607T|SM-T217T|SM-T337T|SM-T807T|SM-T116NQ|SM-P550|SM-T350|SM-T550|SM-T9000|SM-P9000|SM-T705Y|SM-T805|GT-P3113|SM-T710|SM-T810|SM-T360', // SCH-P709|SCH-P729|SM-T2558|GT-I9205 - Samsung Mega - treat them like a regular phone. + // http://docs.aws.amazon.com/silk/latest/developerguide/user-agent.html + 'Kindle' => 'Kindle|Silk.*Accelerated|Android.*\b(KFOT|KFTT|KFJWI|KFJWA|KFOTE|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|WFJWAE|KFSAWA|KFSAWI|KFASWI)\b', // Only the Surface tablets with Windows RT are considered mobile. - // @ref: http://msdn.microsoft.com/en-us/library/ie/hh920767(v=vs.85).aspx - 'SurfaceTablet' => 'Windows NT [0-9.]+; ARM;', - // @ref: http://shopping1.hp.com/is-bin/INTERSHOP.enfinity/WFS/WW-USSMBPublicStore-Site/en_US/-/USD/ViewStandardCatalog-Browse?CatalogCategoryID=JfIQ7EN5lqMAAAEyDcJUDwMT - 'HPTablet' => 'HP Slate 7|HP ElitePad 900|hp-tablet|EliteBook.*Touch|HP 8', - // @note: watch out for PadFone, see #132 - 'AsusTablet' => '^.*PadFone((?!Mobile).)*$|Transformer|TF101|TF101G|TF300T|TF300TG|TF300TL|TF700T|TF700KL|TF701T|TF810C|ME171|ME301T|ME302C|ME371MG|ME370T|ME372MG|ME172V|ME173X|ME400C|Slider SL101|\bK00F\b|TX201LA', + // http://msdn.microsoft.com/en-us/library/ie/hh920767(v=vs.85).aspx + 'SurfaceTablet' => 'Windows NT [0-9.]+; ARM;.*(Tablet|ARMBJS)', + // http://shopping1.hp.com/is-bin/INTERSHOP.enfinity/WFS/WW-USSMBPublicStore-Site/en_US/-/USD/ViewStandardCatalog-Browse?CatalogCategoryID=JfIQ7EN5lqMAAAEyDcJUDwMT + 'HPTablet' => 'HP Slate (7|8|10)|HP ElitePad 900|hp-tablet|EliteBook.*Touch|HP 8|Slate 21|HP SlateBook 10', + // Watch out for PadFone, see #132. + // http://www.asus.com/de/Tablets_Mobile/Memo_Pad_Products/ + 'AsusTablet' => '^.*PadFone((?!Mobile).)*$|Transformer|TF101|TF101G|TF300T|TF300TG|TF300TL|TF700T|TF700KL|TF701T|TF810C|ME171|ME301T|ME302C|ME371MG|ME370T|ME372MG|ME172V|ME173X|ME400C|Slider SL101|\bK00F\b|\bK00C\b|\bK00E\b|\bK00L\b|TX201LA|ME176C|ME102A|\bM80TA\b|ME372CL|ME560CG|ME372CG|ME302KL| K010 | K017 |ME572C|ME103K|ME170C|ME171C|\bME70C\b|ME581C|ME581CL|ME8510C|ME181C', 'BlackBerryTablet' => 'PlayBook|RIM Tablet', - 'HTCtablet' => 'HTC Flyer|HTC Jetstream|HTC-P715a|HTC EVO View 4G|PG41200', + 'HTCtablet' => 'HTC_Flyer_P512|HTC Flyer|HTC Jetstream|HTC-P715a|HTC EVO View 4G|PG41200|PG09410', 'MotorolaTablet' => 'xoom|sholest|MZ615|MZ605|MZ505|MZ601|MZ602|MZ603|MZ604|MZ606|MZ607|MZ608|MZ609|MZ615|MZ616|MZ617', 'NookTablet' => 'Android.*Nook|NookColor|nook browser|BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2', - // @ref: http://www.acer.ro/ac/ro/RO/content/drivers - // @ref: http://www.packardbell.co.uk/pb/en/GB/content/download (Packard Bell is part of Acer) - // @ref: http://us.acer.com/ac/en/US/content/group/tablets - // @note: Can conflict with Micromax and Motorola phones codes. - 'AcerTablet' => 'Android.*; \b(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700|A701|W500|W500P|W501|W501P|W510|W511|W700|G100|G100W|B1-A71|B1-710|B1-711|A1-810|A1-830)\b|W3-810|\bA3-A10\b', - // @ref: http://eu.computers.toshiba-europe.com/innovation/family/Tablets/1098744/banner_id/tablet_footerlink/ - // @ref: http://us.toshiba.com/tablets/tablet-finder - // @ref: http://www.toshiba.co.jp/regza/tablet/ + // http://www.acer.ro/ac/ro/RO/content/drivers + // http://www.packardbell.co.uk/pb/en/GB/content/download (Packard Bell is part of Acer) + // http://us.acer.com/ac/en/US/content/group/tablets + // http://www.acer.de/ac/de/DE/content/models/tablets/ + // Can conflict with Micromax and Motorola phones codes. + 'AcerTablet' => 'Android.*; \b(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700|A701|W500|W500P|W501|W501P|W510|W511|W700|G100|G100W|B1-A71|B1-710|B1-711|A1-810|A1-811|A1-830)\b|W3-810|\bA3-A10\b|\bA3-A11\b', + // http://eu.computers.toshiba-europe.com/innovation/family/Tablets/1098744/banner_id/tablet_footerlink/ + // http://us.toshiba.com/tablets/tablet-finder + // http://www.toshiba.co.jp/regza/tablet/ 'ToshibaTablet' => 'Android.*(AT100|AT105|AT200|AT205|AT270|AT275|AT300|AT305|AT1S5|AT500|AT570|AT700|AT830)|TOSHIBA.*FOLIO', - // @ref: http://www.nttdocomo.co.jp/english/service/developer/smart_phone/technical_info/spec/index.html - // @ref: http://www.lg.com/us/tablets - 'LGTablet' => '\bL-06C|LG-V900|LG-V500|LG-V909|LG-V500|LG-V510|LG-VK810\b', + // http://www.nttdocomo.co.jp/english/service/developer/smart_phone/technical_info/spec/index.html + // http://www.lg.com/us/tablets + 'LGTablet' => '\bL-06C|LG-V909|LG-V900|LG-V700|LG-V510|LG-V500|LG-V410|LG-V400|LG-VK810\b', 'FujitsuTablet' => 'Android.*\b(F-01D|F-02F|F-05E|F-10D|M532|Q572)\b', // Prestigio Tablets http://www.prestigio.com/support - 'PrestigioTablet' => 'PMP3170B|PMP3270B|PMP3470B|PMP7170B|PMP3370B|PMP3570C|PMP5870C|PMP3670B|PMP5570C|PMP5770D|PMP3970B|PMP3870C|PMP5580C|PMP5880D|PMP5780D|PMP5588C|PMP7280C|PMP7280C3G|PMP7280|PMP7880D|PMP5597D|PMP5597|PMP7100D|PER3464|PER3274|PER3574|PER3884|PER5274|PER5474|PMP5097CPRO|PMP5097|PMP7380D|PMP5297C|PMP5297C_QUAD', - // @ref: http://support.lenovo.com/en_GB/downloads/default.page?# - 'LenovoTablet' => 'IdeaTab|ThinkPad([ ]+)?Tablet|Lenovo.*(S2109|S2110|S5000|S6000|K3011|A3000|A1000|A2107|A2109|A1107|B6000|B8000|B8080-F)', - // @ref: http://www.yarvik.com/en/matrix/tablets/ + 'PrestigioTablet' => 'PMP3170B|PMP3270B|PMP3470B|PMP7170B|PMP3370B|PMP3570C|PMP5870C|PMP3670B|PMP5570C|PMP5770D|PMP3970B|PMP3870C|PMP5580C|PMP5880D|PMP5780D|PMP5588C|PMP7280C|PMP7280C3G|PMP7280|PMP7880D|PMP5597D|PMP5597|PMP7100D|PER3464|PER3274|PER3574|PER3884|PER5274|PER5474|PMP5097CPRO|PMP5097|PMP7380D|PMP5297C|PMP5297C_QUAD|PMP812E|PMP812E3G|PMP812F|PMP810E|PMP880TD|PMT3017|PMT3037|PMT3047|PMT3057|PMT7008|PMT5887|PMT5001|PMT5002', + // http://support.lenovo.com/en_GB/downloads/default.page?# + 'LenovoTablet' => 'Idea(Tab|Pad)( A1|A10| K1|)|ThinkPad([ ]+)?Tablet|Lenovo.*(S2109|S2110|S5000|S6000|K3011|A3000|A3500|A1000|A2107|A2109|A1107|A5500|A7600|B6000|B8000|B8080)(-|)(FL|F|HV|H|)', + // http://www.dell.com/support/home/us/en/04/Products/tab_mob/tablets + 'DellTablet' => 'Venue 11|Venue 8|Venue 7|Dell Streak 10|Dell Streak 7', + // http://www.yarvik.com/en/matrix/tablets/ 'YarvikTablet' => 'Android.*\b(TAB210|TAB211|TAB224|TAB250|TAB260|TAB264|TAB310|TAB360|TAB364|TAB410|TAB411|TAB420|TAB424|TAB450|TAB460|TAB461|TAB464|TAB465|TAB467|TAB468|TAB07-100|TAB07-101|TAB07-150|TAB07-151|TAB07-152|TAB07-200|TAB07-201-3G|TAB07-210|TAB07-211|TAB07-212|TAB07-214|TAB07-220|TAB07-400|TAB07-485|TAB08-150|TAB08-200|TAB08-201-3G|TAB08-201-30|TAB09-100|TAB09-211|TAB09-410|TAB10-150|TAB10-201|TAB10-211|TAB10-400|TAB10-410|TAB13-201|TAB274EUK|TAB275EUK|TAB374EUK|TAB462EUK|TAB474EUK|TAB9-200)\b', 'MedionTablet' => 'Android.*\bOYO\b|LIFE.*(P9212|P9514|P9516|S9512)|LIFETAB', - 'ArnovaTablet' => 'AN10G2|AN7bG3|AN7fG3|AN8G3|AN8cG3|AN7G3|AN9G3|AN7dG3|AN7dG3ST|AN7dG3ChildPad|AN10bG3|AN10bG3DT', + 'ArnovaTablet' => 'AN10G2|AN7bG3|AN7fG3|AN8G3|AN8cG3|AN7G3|AN9G3|AN7dG3|AN7dG3ST|AN7dG3ChildPad|AN10bG3|AN10bG3DT|AN9G2', // http://www.intenso.de/kategorie_en.php?kategorie=33 // @todo: http://www.nbhkdz.com/read/b8e64202f92a2df129126bff.html - investigate - 'IntensoTablet' => 'INM8002KP|INM1010FP|INM805ND|Intenso Tab', + 'IntensoTablet' => 'INM8002KP|INM1010FP|INM805ND|Intenso Tab|TAB1004', // IRU.ru Tablets http://www.iru.ru/catalog/soho/planetable/ 'IRUTablet' => 'M702pro', 'MegafonTablet' => 'MegaFon V9|\bZTE V9\b|Android.*\bMT7A\b', - // @ref: http://www.e-boda.ro/tablete-pc.html + // http://www.e-boda.ro/tablete-pc.html 'EbodaTablet' => 'E-Boda (Supreme|Impresspeed|Izzycomm|Essential)', - // @ref: http://www.allview.ro/produse/droseries/lista-tablete-pc/ + // http://www.allview.ro/produse/droseries/lista-tablete-pc/ 'AllViewTablet' => 'Allview.*(Viva|Alldro|City|Speed|All TV|Frenzy|Quasar|Shine|TX1|AX1|AX2)', - // @reference: http://wiki.archosfans.com/index.php?title=Main_Page - 'ArchosTablet' => '\b(101G9|80G9|A101IT)\b|Qilive 97R|ARCHOS 101G10|Archos 101 Neon', - // @ref: http://www.ainol.com/plugin.php?identifier=ainol&module=product + // http://wiki.archosfans.com/index.php?title=Main_Page + 'ArchosTablet' => '\b(101G9|80G9|A101IT)\b|Qilive 97R|Archos5|\bARCHOS (70|79|80|90|97|101|FAMILYPAD|)(b|)(G10| Cobalt| TITANIUM(HD|)| Xenon| Neon|XSK| 2| XS 2| PLATINUM| CARBON|GAMEPAD)\b', + // http://www.ainol.com/plugin.php?identifier=ainol&module=product 'AinolTablet' => 'NOVO7|NOVO8|NOVO10|Novo7Aurora|Novo7Basic|NOVO7PALADIN|novo9-Spark', // @todo: inspect http://esupport.sony.com/US/p/select-system.pl?DIRECTOR=DRIVER - // @ref: Readers http://www.atsuhiro-me.net/ebook/sony-reader/sony-reader-web-browser - // @ref: http://www.sony.jp/support/tablet/ - 'SonyTablet' => 'Sony.*Tablet|Xperia Tablet|Sony Tablet S|SO-03E|SGPT12|SGPT13|SGPT114|SGPT121|SGPT122|SGPT123|SGPT111|SGPT112|SGPT113|SGPT131|SGPT132|SGPT133|SGPT211|SGPT212|SGPT213|SGP311|SGP312|SGP321|EBRD1101|EBRD1102|EBRD1201|SGP351|SGP341|SGP511|SGP512|SGP521|SGP541|SGP551', - // @ref: db + http://www.cube-tablet.com/buy-products.html + // Readers http://www.atsuhiro-me.net/ebook/sony-reader/sony-reader-web-browser + // http://www.sony.jp/support/tablet/ + 'SonyTablet' => 'Sony.*Tablet|Xperia Tablet|Sony Tablet S|SO-03E|SGPT12|SGPT13|SGPT114|SGPT121|SGPT122|SGPT123|SGPT111|SGPT112|SGPT113|SGPT131|SGPT132|SGPT133|SGPT211|SGPT212|SGPT213|SGP311|SGP312|SGP321|EBRD1101|EBRD1102|EBRD1201|SGP351|SGP341|SGP511|SGP512|SGP521|SGP541|SGP551|SGP621|SGP612|SOT31', + // http://www.support.philips.com/support/catalog/worldproducts.jsp?userLanguage=en&userCountry=cn&categoryid=3G_LTE_TABLET_SU_CN_CARE&title=3G%20tablets%20/%20LTE%20range&_dyncharset=UTF-8 + 'PhilipsTablet' => '\b(PI2010|PI3000|PI3100|PI3105|PI3110|PI3205|PI3210|PI3900|PI4010|PI7000|PI7100)\b', + // db + http://www.cube-tablet.com/buy-products.html 'CubeTablet' => 'Android.*(K8GT|U9GT|U10GT|U16GT|U17GT|U18GT|U19GT|U20GT|U23GT|U30GT)|CUBE U8GT', - // @ref: http://www.cobyusa.com/?p=pcat&pcat_id=3001 + // http://www.cobyusa.com/?p=pcat&pcat_id=3001 'CobyTablet' => 'MID1042|MID1045|MID1125|MID1126|MID7012|MID7014|MID7015|MID7034|MID7035|MID7036|MID7042|MID7048|MID7127|MID8042|MID8048|MID8127|MID9042|MID9740|MID9742|MID7022|MID7010', - // @ref: http://www.match.net.cn/products.asp + // http://www.match.net.cn/products.asp 'MIDTablet' => 'M9701|M9000|M9100|M806|M1052|M806|T703|MID701|MID713|MID710|MID727|MID760|MID830|MID728|MID933|MID125|MID810|MID732|MID120|MID930|MID800|MID731|MID900|MID100|MID820|MID735|MID980|MID130|MID833|MID737|MID960|MID135|MID860|MID736|MID140|MID930|MID835|MID733', - // @ref: http://pdadb.net/index.php?m=pdalist&list=SMiT (NoName Chinese Tablets) - // @ref: http://www.imp3.net/14/show.php?itemid=20454 + // http://www.msi.com/support + // @todo Research the Windows Tablets. + 'MSITablet' => 'MSI \b(Primo 73K|Primo 73L|Primo 81L|Primo 77|Primo 93|Primo 75|Primo 76|Primo 73|Primo 81|Primo 91|Primo 90|Enjoy 71|Enjoy 7|Enjoy 10)\b', + // @todo http://www.kyoceramobile.com/support/drivers/ + // 'KyoceraTablet' => null, + // @todo http://intexuae.com/index.php/category/mobile-devices/tablets-products/ + // 'IntextTablet' => null, + // http://pdadb.net/index.php?m=pdalist&list=SMiT (NoName Chinese Tablets) + // http://www.imp3.net/14/show.php?itemid=20454 'SMiTTablet' => 'Android.*(\bMID\b|MID-560|MTV-T1200|MTV-PND531|MTV-P1101|MTV-PND530)', - // @ref: http://www.rock-chips.com/index.php?do=prod&pid=2 + // http://www.rock-chips.com/index.php?do=prod&pid=2 'RockChipTablet' => 'Android.*(RK2818|RK2808A|RK2918|RK3066)|RK2738|RK2808A', - // @ref: http://www.fly-phone.com/devices/tablets/ ; http://www.fly-phone.com/service/ + // http://www.fly-phone.com/devices/tablets/ ; http://www.fly-phone.com/service/ 'FlyTablet' => 'IQ310|Fly Vision', - // @ref: http://www.bqreaders.com/gb/tablets-prices-sale.html - 'bqTablet' => 'bq.*(Elcano|Curie|Edison|Maxwell|Kepler|Pascal|Tesla|Hypatia|Platon|Newton|Livingstone|Cervantes|Avant)|Maxwell.*Lite|Maxwell.*Plus', - // @ref: http://www.huaweidevice.com/worldwide/productFamily.do?method=index&directoryId=5011&treeId=3290 - // @ref: http://www.huaweidevice.com/worldwide/downloadCenter.do?method=index&directoryId=3372&treeId=0&tb=1&type=software (including legacy tablets) + // http://www.bqreaders.com/gb/tablets-prices-sale.html + 'bqTablet' => 'Android.*(bq)?.*(Elcano|Curie|Edison|Maxwell|Kepler|Pascal|Tesla|Hypatia|Platon|Newton|Livingstone|Cervantes|Avant|Aquaris E10)|Maxwell.*Lite|Maxwell.*Plus', + // http://www.huaweidevice.com/worldwide/productFamily.do?method=index&directoryId=5011&treeId=3290 + // http://www.huaweidevice.com/worldwide/downloadCenter.do?method=index&directoryId=3372&treeId=0&tb=1&type=software (including legacy tablets) 'HuaweiTablet' => 'MediaPad|MediaPad 7 Youth|IDEOS S7|S7-201c|S7-202u|S7-101|S7-103|S7-104|S7-105|S7-106|S7-201|S7-Slim', // Nec or Medias Tab 'NecTablet' => '\bN-06D|\bN-08D', @@ -253,63 +309,63 @@ class Mobile_Detect 'PantechTablet' => 'Pantech.*P4100', // Broncho Tablets: http://www.broncho.cn/ (hard to find) 'BronchoTablet' => 'Broncho.*(N701|N708|N802|a710)', - // @ref: http://versusuk.com/support.html + // http://versusuk.com/support.html 'VersusTablet' => 'TOUCHPAD.*[78910]|\bTOUCHTAB\b', - // @ref: http://www.zync.in/index.php/our-products/tablet-phablets + // http://www.zync.in/index.php/our-products/tablet-phablets 'ZyncTablet' => 'z1000|Z99 2G|z99|z930|z999|z990|z909|Z919|z900', - // @ref: http://www.positivoinformatica.com.br/www/pessoal/tablet-ypy/ + // http://www.positivoinformatica.com.br/www/pessoal/tablet-ypy/ 'PositivoTablet' => 'TB07STA|TB10STA|TB07FTA|TB10FTA', - // @ref: https://www.nabitablet.com/ + // https://www.nabitablet.com/ 'NabiTablet' => 'Android.*\bNabi', 'KoboTablet' => 'Kobo Touch|\bK080\b|\bVox\b Build|\bArc\b Build', // French Danew Tablets http://www.danew.com/produits-tablette.php 'DanewTablet' => 'DSlide.*\b(700|701R|702|703R|704|802|970|971|972|973|974|1010|1012)\b', // Texet Tablets and Readers http://www.texet.ru/tablet/ 'TexetTablet' => 'NaviPad|TB-772A|TM-7045|TM-7055|TM-9750|TM-7016|TM-7024|TM-7026|TM-7041|TM-7043|TM-7047|TM-8041|TM-9741|TM-9747|TM-9748|TM-9751|TM-7022|TM-7021|TM-7020|TM-7011|TM-7010|TM-7023|TM-7025|TM-7037W|TM-7038W|TM-7027W|TM-9720|TM-9725|TM-9737W|TM-1020|TM-9738W|TM-9740|TM-9743W|TB-807A|TB-771A|TB-727A|TB-725A|TB-719A|TB-823A|TB-805A|TB-723A|TB-715A|TB-707A|TB-705A|TB-709A|TB-711A|TB-890HD|TB-880HD|TB-790HD|TB-780HD|TB-770HD|TB-721HD|TB-710HD|TB-434HD|TB-860HD|TB-840HD|TB-760HD|TB-750HD|TB-740HD|TB-730HD|TB-722HD|TB-720HD|TB-700HD|TB-500HD|TB-470HD|TB-431HD|TB-430HD|TB-506|TB-504|TB-446|TB-436|TB-416|TB-146SE|TB-126SE', - // @note: Avoid detecting 'PLAYSTATION 3' as mobile. + // Avoid detecting 'PLAYSTATION 3' as mobile. 'PlaystationTablet' => 'Playstation.*(Portable|Vita)', - // @ref: http://www.trekstor.de/surftabs.html - 'TrekstorTablet' => 'ST10416-1|VT10416-1|ST70408-1|ST702xx-1|ST702xx-2|ST80208|ST97216|ST70104-2|VT10416-2|ST10216-2A', - // @ref: http://www.pyleaudio.com/Products.aspx?%2fproducts%2fPersonal-Electronics%2fTablets + // http://www.trekstor.de/surftabs.html + 'TrekstorTablet' => 'ST10416-1|VT10416-1|ST70408-1|ST702xx-1|ST702xx-2|ST80208|ST97216|ST70104-2|VT10416-2|ST10216-2A|SurfTab', + // http://www.pyleaudio.com/Products.aspx?%2fproducts%2fPersonal-Electronics%2fTablets 'PyleAudioTablet' => '\b(PTBL10CEU|PTBL10C|PTBL72BC|PTBL72BCEU|PTBL7CEU|PTBL7C|PTBL92BC|PTBL92BCEU|PTBL9CEU|PTBL9CUK|PTBL9C)\b', - // @ref: http://www.advandigital.com/index.php?link=content-product&jns=JP001 - // @Note: because of the short codenames we have to include whitespaces to reduce the possible conflicts. + // http://www.advandigital.com/index.php?link=content-product&jns=JP001 + // because of the short codenames we have to include whitespaces to reduce the possible conflicts. 'AdvanTablet' => 'Android.* \b(E3A|T3X|T5C|T5B|T3E|T3C|T3B|T1J|T1F|T2A|T1H|T1i|E1C|T1-E|T5-A|T4|E1-B|T2Ci|T1-B|T1-D|O1-A|E1-A|T1-A|T3A|T4i)\b ', - // @ref: http://www.danytech.com/category/tablet-pc + // http://www.danytech.com/category/tablet-pc 'DanyTechTablet' => 'Genius Tab G3|Genius Tab S2|Genius Tab Q3|Genius Tab G4|Genius Tab Q4|Genius Tab G-II|Genius TAB GII|Genius TAB GIII|Genius Tab S1', - // @ref: http://www.galapad.net/product.html + // http://www.galapad.net/product.html 'GalapadTablet' => 'Android.*\bG1\b', - // @ref: http://www.micromaxinfo.com/tablet/funbook + // http://www.micromaxinfo.com/tablet/funbook 'MicromaxTablet' => 'Funbook|Micromax.*\b(P250|P560|P360|P362|P600|P300|P350|P500|P275)\b', // http://www.karbonnmobiles.com/products_tablet.php 'KarbonnTablet' => 'Android.*\b(A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2)\b', - // @ref: http://www.myallfine.com/Products.asp + // http://www.myallfine.com/Products.asp 'AllFineTablet' => 'Fine7 Genius|Fine7 Shine|Fine7 Air|Fine8 Style|Fine9 More|Fine10 Joy|Fine11 Wide', - // @ref: http://www.proscanvideo.com/products-search.asp?itemClass=TABLET&itemnmbr= + // http://www.proscanvideo.com/products-search.asp?itemClass=TABLET&itemnmbr= 'PROSCANTablet' => '\b(PEM63|PLT1023G|PLT1041|PLT1044|PLT1044G|PLT1091|PLT4311|PLT4311PL|PLT4315|PLT7030|PLT7033|PLT7033D|PLT7035|PLT7035D|PLT7044K|PLT7045K|PLT7045KB|PLT7071KG|PLT7072|PLT7223G|PLT7225G|PLT7777G|PLT7810K|PLT7849G|PLT7851G|PLT7852G|PLT8015|PLT8031|PLT8034|PLT8036|PLT8080K|PLT8082|PLT8088|PLT8223G|PLT8234G|PLT8235G|PLT8816K|PLT9011|PLT9045K|PLT9233G|PLT9735|PLT9760G|PLT9770G)\b', - // @ref: http://www.yonesnav.com/products/products.php + // http://www.yonesnav.com/products/products.php 'YONESTablet' => 'BQ1078|BC1003|BC1077|RK9702|BC9730|BC9001|IT9001|BC7008|BC7010|BC708|BC728|BC7012|BC7030|BC7027|BC7026', - // @ref: http://www.cjshowroom.com/eproducts.aspx?classcode=004001001 + // http://www.cjshowroom.com/eproducts.aspx?classcode=004001001 // China manufacturer makes tablets for different small brands (eg. http://www.zeepad.net/index.html) 'ChangJiaTablet' => 'TPC7102|TPC7103|TPC7105|TPC7106|TPC7107|TPC7201|TPC7203|TPC7205|TPC7210|TPC7708|TPC7709|TPC7712|TPC7110|TPC8101|TPC8103|TPC8105|TPC8106|TPC8203|TPC8205|TPC8503|TPC9106|TPC9701|TPC97101|TPC97103|TPC97105|TPC97106|TPC97111|TPC97113|TPC97203|TPC97603|TPC97809|TPC97205|TPC10101|TPC10103|TPC10106|TPC10111|TPC10203|TPC10205|TPC10503', - // @ref: http://www.gloryunion.cn/products.asp - // @ref: http://www.allwinnertech.com/en/apply/mobile.html - // @ref: http://www.ptcl.com.pk/pd_content.php?pd_id=284 (EVOTAB) + // http://www.gloryunion.cn/products.asp + // http://www.allwinnertech.com/en/apply/mobile.html + // http://www.ptcl.com.pk/pd_content.php?pd_id=284 (EVOTAB) // @todo: Softwiner tablets? // aka. Cute or Cool tablets. Not sure yet, must research to avoid collisions. 'GUTablet' => 'TX-A1301|TX-M9002|Q702|kf026', // A12R|D75A|D77|D79|R83|A95|A106C|R15|A75|A76|D71|D72|R71|R73|R77|D82|R85|D92|A97|D92|R91|A10F|A77F|W71F|A78F|W78F|W81F|A97F|W91F|W97F|R16G|C72|C73E|K72|K73|R96G - // @ref: http://www.pointofview-online.com/showroom.php?shop_mode=product_listing&category_id=118 + // http://www.pointofview-online.com/showroom.php?shop_mode=product_listing&category_id=118 'PointOfViewTablet' => 'TAB-P506|TAB-navi-7-3G-M|TAB-P517|TAB-P-527|TAB-P701|TAB-P703|TAB-P721|TAB-P731N|TAB-P741|TAB-P825|TAB-P905|TAB-P925|TAB-PR945|TAB-PL1015|TAB-P1025|TAB-PI1045|TAB-P1325|TAB-PROTAB[0-9]+|TAB-PROTAB25|TAB-PROTAB26|TAB-PROTAB27|TAB-PROTAB26XL|TAB-PROTAB2-IPS9|TAB-PROTAB30-IPS9|TAB-PROTAB25XXL|TAB-PROTAB26-IPS10|TAB-PROTAB30-IPS10', - // @ref: http://www.overmax.pl/pl/katalog-produktow,p8/tablety,c14/ + // http://www.overmax.pl/pl/katalog-produktow,p8/tablety,c14/ // @todo: add more tests. 'OvermaxTablet' => 'OV-(SteelCore|NewBase|Basecore|Baseone|Exellen|Quattor|EduTab|Solution|ACTION|BasicTab|TeddyTab|MagicTab|Stream|TB-08|TB-09)', - // @ref: http://hclmetablet.com/India/index.php + // http://hclmetablet.com/India/index.php 'HCLTablet' => 'HCL.*Tablet|Connect-3G-2.0|Connect-2G-2.0|ME Tablet U1|ME Tablet U2|ME Tablet G1|ME Tablet X1|ME Tablet Y2|ME Tablet Sync', - // @ref: http://www.edigital.hu/Tablet_es_e-book_olvaso/Tablet-c18385.html + // http://www.edigital.hu/Tablet_es_e-book_olvaso/Tablet-c18385.html 'DPSTablet' => 'DPS Dream 9|DPS Dual 7', - // @ref: http://www.visture.com/index.asp + // http://www.visture.com/index.asp 'VistureTablet' => 'V97 HD|i75 3G|Visture V4( HD)?|Visture V5( HD)?|Visture V10', - // @ref: http://www.mijncresta.nl/tablet + // http://www.mijncresta.nl/tablet 'CrestaTablet' => 'CTP(-)?810|CTP(-)?818|CTP(-)?828|CTP(-)?838|CTP(-)?888|CTP(-)?978|CTP(-)?980|CTP(-)?987|CTP(-)?988|CTP(-)?989', // MediaTek - http://www.mediatek.com/_en/01_products/02_proSys.php?cata_sn=1&cata1_sn=1&cata2_sn=309 'MediatekTablet' => '\bMT8125|MT8389|MT8135|MT8377\b', @@ -327,7 +383,7 @@ class Mobile_Detect // @note: no need to add all the tablet codes since they are guided by the first regex. 'StorexTablet' => 'eZee[_\']?(Tab|Go)[0-9]+|TabLC7|Looney Tunes Tab', // Generic Vodafone tablets. - 'VodafoneTablet' => 'SmartTab([ ]+)?[0-9]+|SmartTabII10', + 'VodafoneTablet' => 'SmartTab([ ]+)?[0-9]+|SmartTabII10|SmartTabII7', // French tablets - Essentiel B http://www.boulanger.fr/tablette_tactile_e-book/tablette_tactile_essentiel_b/cl_68908.htm?multiChoiceToDelete=brand&mc_brand=essentielb // Aka: http://www.essentielb.fr/ 'EssentielBTablet' => 'Smart[ \']?TAB[ ]+?[0-9]+|Family[ \']?TAB2', @@ -335,7 +391,7 @@ class Mobile_Detect 'RossMoorTablet' => 'RM-790|RM-997|RMD-878G|RMD-974R|RMT-705A|RMT-701|RME-601|RMT-501|RMT-711', // i-mobile http://product.i-mobilephone.com/Mobile_Device 'iMobileTablet' => 'i-mobile i-note', - // @ref: http://www.tolino.de/de/vergleichen/ + // http://www.tolino.de/de/vergleichen/ 'TolinoTablet' => 'tolino tab [0-9.]+|tolino shine', // AudioSonic - a Kmart brand // http://www.kmart.com.au/webapp/wcs/stores/servlet/Search?langId=-1&storeId=10701&catalogId=10001&categoryId=193001&pageSize=72¤tPage=1&searchCategory=193001%2b4294965664&sortBy=p_MaxPrice%7c1 @@ -359,16 +415,48 @@ class Mobile_Detect // http://www1.viewsonic.com/products/computing/tablets/ 'ViewsonicTablet' => 'ViewPad 10pi|ViewPad 10e|ViewPad 10s|ViewPad E72|ViewPad7|ViewPad E100|ViewPad 7e|ViewSonic VB733|VB100a', // http://www.odys.de/web/internet-tablet_en.html - 'OdysTablet' => 'LOOX|XENO10|ODYS Space', + 'OdysTablet' => 'LOOX|XENO10|ODYS[ -](Space|EVO|Xpress|NOON)|\bXELIO\b|Xelio10Pro|XELIO7PHONETAB|XELIO10EXTREME|XELIOPT2|NEO_QUAD10', // http://www.captiva-power.de/products.html#tablets-en 'CaptivaTablet' => 'CAPTIVA PAD', // IconBIT - http://www.iconbit.com/products/tablets/ 'IconbitTablet' => 'NetTAB|NT-3702|NT-3702S|NT-3702S|NT-3603P|NT-3603P|NT-0704S|NT-0704S|NT-3805C|NT-3805C|NT-0806C|NT-0806C|NT-0909T|NT-0909T|NT-0907S|NT-0907S|NT-0902S|NT-0902S', - // @ref: http://www.tesco.com/direct/hudl/ + // http://www.teclast.com/topic.php?channelID=70&topicID=140&pid=63 + 'TeclastTablet' => 'T98 4G|\bP80\b|\bX90HD\b|X98 Air|X98 Air 3G|\bX89\b|P80 3G|\bX80h\b|P98 Air|\bX89HD\b|P98 3G|\bP90HD\b|P89 3G|X98 3G|\bP70h\b|P79HD 3G|G18d 3G|\bP79HD\b|\bP89s\b|\bA88\b|\bP10HD\b|\bP19HD\b|G18 3G|\bP78HD\b|\bA78\b|\bP75\b|G17s 3G|G17h 3G|\bP85t\b|\bP90\b|\bP11\b|\bP98t\b|\bP98HD\b|\bG18d\b|\bP85s\b|\bP11HD\b|\bP88s\b|\bA80HD\b|\bA80se\b|\bA10h\b|\bP89\b|\bP78s\b|\bG18\b|\bP85\b|\bA70h\b|\bA70\b|\bG17\b|\bP18\b|\bA80s\b|\bA11s\b|\bP88HD\b|\bA80h\b|\bP76s\b|\bP76h\b|\bP98\b|\bA10HD\b|\bP78\b|\bP88\b|\bA11\b|\bA10t\b|\bP76a\b|\bP76t\b|\bP76e\b|\bP85HD\b|\bP85a\b|\bP86\b|\bP75HD\b|\bP76v\b|\bA12\b|\bP75a\b|\bA15\b|\bP76Ti\b|\bP81HD\b|\bA10\b|\bT760VE\b|\bT720HD\b|\bP76\b|\bP73\b|\bP71\b|\bP72\b|\bT720SE\b|\bC520Ti\b|\bT760\b|\bT720VE\b|T720-3GE|T720-WiFi', + // Onda - http://www.onda-tablet.com/buy-android-onda.html?dir=desc&limit=all&order=price + 'OndaTablet' => '\b(V975i|Vi30|VX530|V701|Vi60|V701s|Vi50|V801s|V719|Vx610w|VX610W|V819i|Vi10|VX580W|Vi10|V711s|V813|V811|V820w|V820|Vi20|V711|VI30W|V712|V891w|V972|V819w|V820w|Vi60|V820w|V711|V813s|V801|V819|V975s|V801|V819|V819|V818|V811|V712|V975m|V101w|V961w|V812|V818|V971|V971s|V919|V989|V116w|V102w|V973|Vi40)\b[\s]+', + 'JaytechTablet' => 'TPC-PA762', + 'BlaupunktTablet' => 'Endeavour 800NG|Endeavour 1010', + // http://www.digma.ru/support/download/ + // @todo: Ebooks also (if requested) + 'DigmaTablet' => '\b(iDx10|iDx9|iDx8|iDx7|iDxD7|iDxD8|iDsQ8|iDsQ7|iDsQ8|iDsD10|iDnD7|3TS804H|iDsQ11|iDj7|iDs10)\b', + // http://www.evolioshop.com/ro/tablete-pc.html + // http://www.evolio.ro/support/downloads_static.html?cat=2 + // @todo: Research some more + 'EvolioTablet' => 'ARIA_Mini_wifi|Aria[ _]Mini|Evolio X10|Evolio X7|Evolio X8|\bEvotab\b|\bNeura\b', + // @todo http://www.lavamobiles.com/tablets-data-cards + 'LavaTablet' => 'QPAD E704|\bIvoryS\b|E-TAB IVORY|\bE-TAB\b', + // https://www.celkonmobiles.com/?_a=categoryphones&sid=2 + 'CelkonTablet' => 'CT695|CT888|CT[\s]?910|CT7 Tab|CT9 Tab|CT3 Tab|CT2 Tab|CT1 Tab|C820|C720|\bCT-1\b', + // http://www.wolderelectronics.com/productos/manuales-y-guias-rapidas/categoria-2-miTab + 'WolderTablet' => 'miTab \b(DIAMOND|SPACE|BROOKLYN|NEO|FLY|MANHATTAN|FUNK|EVOLUTION|SKY|GOCAR|IRON|GENIUS|POP|MINT|EPSILON|BROADWAY|JUMP|HOP|LEGEND|NEW AGE|LINE|ADVANCE|FEEL|FOLLOW|LIKE|LINK|LIVE|THINK|FREEDOM|CHICAGO|CLEVELAND|BALTIMORE-GH|IOWA|BOSTON|SEATTLE|PHOENIX|DALLAS|IN 101|MasterChef)\b', + // http://www.mi.com/en + 'MiTablet' => '\bMI PAD\b|\bHM NOTE 1W\b', + // http://www.nbru.cn/index.html + 'NibiruTablet' => 'Nibiru M1|Nibiru Jupiter One', + // http://navroad.com/products/produkty/tablety/ + 'NexoTablet' => 'NEXO NOVA|NEXO 10|NEXO AVIO|NEXO FREE|NEXO GO|NEXO EVO|NEXO 3G|NEXO SMART|NEXO KIDDO|NEXO MOBI', + // http://leader-online.com/new_site/product-category/tablets/ + // http://www.leader-online.net.au/List/Tablet + 'LeaderTablet' => 'TBLT10Q|TBLT10I|TBL-10WDKB|TBL-10WDKBO2013|TBL-W230V2|TBL-W450|TBL-W500|SV572|TBLT7I|TBA-AC7-8G|TBLT79|TBL-8W16|TBL-10W32|TBL-10WKB|TBL-W100', + // http://www.datawind.com/ubislate/ + 'UbislateTablet' => 'UbiSlate[\s]?7C', + // http://www.pocketbook-int.com/ru/support + 'PocketBookTablet' => 'Pocketbook', + // http://www.tesco.com/direct/hudl/ 'Hudl' => 'Hudl HT7S3', - // @ref: http://www.telstra.com.au/home-phone/thub-2/ + // http://www.telstra.com.au/home-phone/thub-2/ 'TelstraTablet' => 'T-Hub2', - 'GenericTablet' => 'Android.*\b97D\b|Tablet(?!.*PC)|BNTV250A|MID-WCDMA|LogicPD Zoom2|\bA7EB\b|CatNova8|A1_07|CT704|CT1002|\bM721\b|rk30sdk|\bEVOTAB\b|M758A|ET904|ALUMIUM10|Smartfren Tab|Endeavour 1010|Tablet-PC-4', + 'GenericTablet' => 'Android.*\b97D\b|Tablet(?!.*PC)|BNTV250A|MID-WCDMA|LogicPD Zoom2|\bA7EB\b|CatNova8|A1_07|CT704|CT1002|\bM721\b|rk30sdk|\bEVOTAB\b|M758A|ET904|ALUMIUM10|Smartfren Tab|Endeavour 1010|Tablet-PC-4|Tagi Tab|\bM6pro\b|CT1020W|arc 10HD|\bJolla\b|\bTP750\b' ); /** @@ -386,7 +474,8 @@ class Mobile_Detect // @reference: http://en.wikipedia.org/wiki/Windows_Phone // http://wifeng.cn/?r=blog&a=view&id=106 // http://nicksnettravels.builttoroam.com/post/2011/01/10/Bogus-Windows-Phone-7-User-Agent-String.aspx - 'WindowsPhoneOS' => 'Windows Phone 8.0|Windows Phone OS|XBLWP7|ZuneWP7', + // http://msdn.microsoft.com/library/ms537503.aspx + 'WindowsPhoneOS' => 'Windows Phone 8.1|Windows Phone 8.0|Windows Phone OS|XBLWP7|ZuneWP7|Windows NT 6.[23]; ARM;', 'iOS' => '\biPhone.*Mobile|\biPod|\biPad', // http://en.wikipedia.org/wiki/MeeGo // @todo: research MeeGo in UAs @@ -417,20 +506,26 @@ class Mobile_Detect 'TeaShark' => 'teashark', 'Blazer' => 'Blazer', // @reference: http://developer.apple.com/library/safari/#documentation/AppleApplications/Reference/SafariWebContent/OptimizingforSafarioniPhone/OptimizingforSafarioniPhone.html#//apple_ref/doc/uid/TP40006517-SW3 - 'Safari' => 'Version.*Mobile.*Safari|Safari.*Mobile', - // @ref: http://en.wikipedia.org/wiki/Midori_(web_browser) + 'Safari' => 'Version.*Mobile.*Safari|Safari.*Mobile|MobileSafari', + // http://en.wikipedia.org/wiki/Midori_(web_browser) //'Midori' => 'midori', 'Tizen' => 'Tizen', 'UCBrowser' => 'UC.*Browser|UCWEB', - // @ref: https://github.com/serbanghita/Mobile-Detect/issues/7 + 'baiduboxapp' => 'baiduboxapp', + 'baidubrowser' => 'baidubrowser', + // https://github.com/serbanghita/Mobile-Detect/issues/7 'DiigoBrowser' => 'DiigoBrowser', // http://www.puffinbrowser.com/index.php 'Puffin' => 'Puffin', - // @ref: http://mercury-browser.com/index.html + // http://mercury-browser.com/index.html 'Mercury' => '\bMercury\b', + // http://en.wikipedia.org/wiki/Obigo_Browser + 'ObigoBrowser' => 'Obigo', + // http://en.wikipedia.org/wiki/NetFront + 'NetFront' => 'NF-Browser', // @reference: http://en.wikipedia.org/wiki/Minimo // http://en.wikipedia.org/wiki/Vision_Mobile_Browser - 'GenericBrowser' => 'NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger' + 'GenericBrowser' => 'NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger', ); /** @@ -440,15 +535,16 @@ class Mobile_Detect */ protected static $utilities = array( // Experimental. When a mobile device wants to switch to 'Desktop Mode'. - // @ref: http://scottcate.com/technology/windows-phone-8-ie10-desktop-or-mobile/ - // @ref: https://github.com/serbanghita/Mobile-Detect/issues/57#issuecomment-15024011 + // http://scottcate.com/technology/windows-phone-8-ie10-desktop-or-mobile/ + // https://github.com/serbanghita/Mobile-Detect/issues/57#issuecomment-15024011 + // https://developers.facebook.com/docs/sharing/best-practices + 'Bot' => 'Googlebot|facebookexternalhit|AdsBot-Google|Google Keyword Suggestion|Facebot|YandexBot|bingbot|ia_archiver|AhrefsBot|Ezooms|GSLFbot|WBSearchBot|Twitterbot|TweetmemeBot|Twikle|PaperLiBot|Wotbox|UnwindFetchor|Exabot|MJ12bot|YandexImages|TurnitinBot|Pingdom', + 'MobileBot' => 'Googlebot-Mobile|AdsBot-Google-Mobile|YahooSeeker/M1A1-R2D2', 'DesktopMode' => 'WPDesktop', 'TV' => 'SonyDTV|HbbTV', // experimental 'WebKit' => '(webkit)[ /]([\w.]+)', - 'Bot' => 'Googlebot|DoCoMo|YandexBot|bingbot|ia_archiver|AhrefsBot|Ezooms|GSLFbot|WBSearchBot|Twitterbot|TweetmemeBot|Twikle|PaperLiBot|Wotbox|UnwindFetchor|facebookexternalhit', - 'MobileBot' => 'Googlebot-Mobile|DoCoMo|YahooSeeker/M1A1-R2D2', // @todo: Include JXD consoles. - 'Console' => '\b(Nintendo|Nintendo WiiU|PLAYSTATION|Xbox)\b', + 'Console' => '\b(Nintendo|Nintendo WiiU|Nintendo 3DS|PLAYSTATION|Xbox)\b', 'Watch' => 'SM-V700', ); @@ -500,8 +596,9 @@ class Mobile_Detect // @reference: https://developer.mozilla.org/en-US/docs/User_Agent_Strings_Reference 'Firefox' => 'Firefox/[VER]', 'Fennec' => 'Fennec/[VER]', - // @reference: http://msdn.microsoft.com/en-us/library/ms537503(v=vs.85).aspx - 'IE' => array('IEMobile/[VER];', 'IEMobile [VER]', 'MSIE [VER];'), + // http://msdn.microsoft.com/en-us/library/ms537503(v=vs.85).aspx + // https://msdn.microsoft.com/en-us/library/ie/hh869301(v=vs.85).aspx + 'IE' => array('IEMobile/[VER];', 'IEMobile [VER]', 'MSIE [VER];', 'Trident/[0-9.]+;.*rv:[VER]'), // http://en.wikipedia.org/wiki/NetFront 'NetFront' => 'NetFront/[VER]', 'NokiaBrowser' => 'NokiaBrowser/[VER]', @@ -511,6 +608,9 @@ class Mobile_Detect 'UC Browser' => 'UC Browser[VER]', 'MQQBrowser' => 'MQQBrowser/[VER]', 'MicroMessenger' => 'MicroMessenger/[VER]', + 'baiduboxapp' => 'baiduboxapp/[VER]', + 'baidubrowser' => 'baidubrowser/[VER]', + 'Iron' => 'Iron/[VER]', // @note: Safari 7534.48.3 is actually Version 5.1. // @note: On BlackBerry the Version is overwriten by the OS. 'Safari' => array( 'Version/[VER]', 'Safari/[VER]' ), @@ -524,7 +624,7 @@ class Mobile_Detect 'Presto' => 'Presto/[VER]', // OS - 'iOS' => ' \bOS\b [VER] ', + 'iOS' => ' \bi?OS\b [VER][ ;]{1}', 'Android' => 'Android [VER]', 'BlackBerry' => array('BlackBerry[\w]+/[VER]', 'BlackBerry.*Version/[VER]', 'Version/[VER]'), 'BREW' => 'BREW [VER]', @@ -543,15 +643,15 @@ class Mobile_Detect /** * Construct an instance of this class. * - * @param array $headers Specify the headers as injection. Should be PHP _SERVER flavored. - * If left empty, will use the global _SERVER['HTTP_*'] vars instead. + * @param array $headers Specify the headers as injection. Should be PHP _SERVER flavored. + * If left empty, will use the global _SERVER['HTTP_*'] vars instead. * @param string $userAgent Inject the User-Agent header. If null, will use HTTP_USER_AGENT * from the $headers array instead. */ public function __construct( array $headers = null, $userAgent = null - ){ + ) { $this->setHttpHeaders($headers); $this->setUserAgent($userAgent); } @@ -577,21 +677,24 @@ class Mobile_Detect */ public function setHttpHeaders($httpHeaders = null) { - //use global _SERVER if $httpHeaders aren't defined + // use global _SERVER if $httpHeaders aren't defined if (!is_array($httpHeaders) || !count($httpHeaders)) { $httpHeaders = $_SERVER; } - //clear existing headers + // clear existing headers $this->httpHeaders = array(); - //Only save HTTP headers. In PHP land, that means only _SERVER vars that - //start with HTTP_. + // Only save HTTP headers. In PHP land, that means only _SERVER vars that + // start with HTTP_. foreach ($httpHeaders as $key => $value) { - if (substr($key,0,5) == 'HTTP_') { + if (substr($key, 0, 5) === 'HTTP_') { $this->httpHeaders[$key] = $value; } } + + // In case we're dealing with CloudFront, we need to know. + $this->setCfHeaders($httpHeaders); } /** @@ -616,13 +719,13 @@ class Mobile_Detect */ public function getHttpHeader($header) { - //are we using PHP-flavored headers? + // are we using PHP-flavored headers? if (strpos($header, '_') === false) { $header = str_replace('-', '_', $header); $header = strtoupper($header); } - //test the alternate, too + // test the alternate, too $altHeader = 'HTTP_' . $header; //Test both the regular and the HTTP_ prefix @@ -651,6 +754,47 @@ class Mobile_Detect return self::$uaHttpHeaders; } + + /** + * Set CloudFront headers + * http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/header-caching.html#header-caching-web-device + * + * @param array $cfHeaders List of HTTP headers + * + * @return boolean If there were CloudFront headers to be set + */ + public function setCfHeaders($cfHeaders = null) { + // use global _SERVER if $cfHeaders aren't defined + if (!is_array($cfHeaders) || !count($cfHeaders)) { + $cfHeaders = $_SERVER; + } + + // clear existing headers + $this->cloudfrontHeaders = array(); + + // Only save CLOUDFRONT headers. In PHP land, that means only _SERVER vars that + // start with cloudfront-. + $response = false; + foreach ($cfHeaders as $key => $value) { + if (substr(strtolower($key), 0, 16) === 'http_cloudfront_') { + $this->cloudfrontHeaders[strtoupper($key)] = $value; + $response = true; + } + } + + return $response; + } + + /** + * Retrieves the cloudfront headers. + * + * @return array + */ + public function getCfHeaders() + { + return $this->cloudfrontHeaders; + } + /** * Set the User-Agent to be used. * @@ -660,21 +804,28 @@ class Mobile_Detect */ public function setUserAgent($userAgent = null) { - if (!empty($userAgent)) { + // Invalidate cache due to #375 + $this->cache = array(); + + if (false === empty($userAgent)) { return $this->userAgent = $userAgent; } else { - $this->userAgent = null; - - foreach($this->getUaHttpHeaders() as $altHeader){ - if(!empty($this->httpHeaders[$altHeader])){ // @todo: should use getHttpHeader(), but it would be slow. (Serban) + foreach ($this->getUaHttpHeaders() as $altHeader) { + if (false === empty($this->httpHeaders[$altHeader])) { // @todo: should use getHttpHeader(), but it would be slow. (Serban) $this->userAgent .= $this->httpHeaders[$altHeader] . " "; } } - return $this->userAgent = (!empty($this->userAgent) ? trim($this->userAgent) : null); + if (!empty($this->userAgent)) { + return $this->userAgent = trim($this->userAgent); + } + } + if (count($this->getCfHeaders()) > 0) { + return $this->userAgent = 'Amazon CloudFront'; } + return $this->userAgent = null; } /** @@ -702,13 +853,23 @@ class Mobile_Detect $type = self::DETECTION_TYPE_MOBILE; } - if ($type != self::DETECTION_TYPE_MOBILE && $type != self::DETECTION_TYPE_EXTENDED) { + if ($type !== self::DETECTION_TYPE_MOBILE && $type !== self::DETECTION_TYPE_EXTENDED) { return; } $this->detectionType = $type; } + public function getMatchingRegex() + { + return $this->matchingRegex; + } + + public function getMatchesArray() + { + return $this->matchesArray; + } + /** * Retrieve the list of known phone devices. * @@ -847,14 +1008,15 @@ class Mobile_Detect public function checkHttpHeadersForMobile() { - foreach($this->getMobileHeaders() as $mobileHeader => $matchType){ - if( isset($this->httpHeaders[$mobileHeader]) ){ - if( is_array($matchType['matches']) ){ - foreach($matchType['matches'] as $_match){ - if( strpos($this->httpHeaders[$mobileHeader], $_match) !== false ){ + foreach ($this->getMobileHeaders() as $mobileHeader => $matchType) { + if (isset($this->httpHeaders[$mobileHeader])) { + if (is_array($matchType['matches'])) { + foreach ($matchType['matches'] as $_match) { + if (strpos($this->httpHeaders[$mobileHeader], $_match) !== false) { return true; } } + return false; } else { return true; @@ -877,8 +1039,8 @@ class Mobile_Detect */ public function __call($name, $arguments) { - //make sure the name starts with 'is', otherwise - if (substr($name, 0, 2) != 'is') { + // make sure the name starts with 'is', otherwise + if (substr($name, 0, 2) !== 'is') { throw new BadMethodCallException("No such method exists: $name"); } @@ -892,7 +1054,7 @@ class Mobile_Detect /** * Find a detection rule that matches the current User-agent. * - * @param null $userAgent deprecated + * @param null $userAgent deprecated * @return boolean */ protected function matchDetectionRulesAgainstUA($userAgent = null) @@ -902,6 +1064,7 @@ class Mobile_Detect if (empty($_regex)) { continue; } + if ($this->match($_regex, $userAgent)) { return true; } @@ -913,36 +1076,38 @@ class Mobile_Detect /** * Search for a certain key in the rules array. * If the key is found the try to match the corresponding - * regex agains the User-Agent. + * regex against the User-Agent. * * @param string $key - * @param null $userAgent deprecated - * @return mixed + * + * @return boolean */ - protected function matchUAAgainstKey($key, $userAgent = null) + protected function matchUAAgainstKey($key) { // Make the keys lowercase so we can match: isIphone(), isiPhone(), isiphone(), etc. $key = strtolower($key); + if (false === isset($this->cache[$key])) { - //change the keys to lower case - $_rules = array_change_key_case($this->getRules()); + // change the keys to lower case + $_rules = array_change_key_case($this->getRules()); - if (array_key_exists($key, $_rules)) { - if (empty($_rules[$key])) { - return null; + if (false === empty($_rules[$key])) { + $this->cache[$key] = $this->match($_rules[$key]); } - return $this->match($_rules[$key], $userAgent); + if (false === isset($this->cache[$key])) { + $this->cache[$key] = false; + } } - return false; + return $this->cache[$key]; } /** * Check if the device is mobile. * Returns true if any type of mobile device detected, including special ones - * @param null $userAgent deprecated - * @param null $httpHeaders deprecated + * @param null $userAgent deprecated + * @param null $httpHeaders deprecated * @return bool */ public function isMobile($userAgent = null, $httpHeaders = null) @@ -956,6 +1121,14 @@ class Mobile_Detect $this->setUserAgent($userAgent); } + // Check specifically for cloudfront headers if the useragent === 'Amazon CloudFront' + if ($this->getUserAgent() === 'Amazon CloudFront') { + $cfHeaders = $this->getCfHeaders(); + if(array_key_exists('HTTP_CLOUDFRONT_IS_MOBILE_VIEWER', $cfHeaders) && $cfHeaders['HTTP_CLOUDFRONT_IS_MOBILE_VIEWER'] === 'true') { + return true; + } + } + $this->setDetectionType(self::DETECTION_TYPE_MOBILE); if ($this->checkHttpHeadersForMobile()) { @@ -976,6 +1149,14 @@ class Mobile_Detect */ public function isTablet($userAgent = null, $httpHeaders = null) { + // Check specifically for cloudfront headers if the useragent === 'Amazon CloudFront' + if ($this->getUserAgent() === 'Amazon CloudFront') { + $cfHeaders = $this->getCfHeaders(); + if(array_key_exists('HTTP_CLOUDFRONT_IS_TABLET_VIEWER', $cfHeaders) && $cfHeaders['HTTP_CLOUDFRONT_IS_TABLET_VIEWER'] === 'true') { + return true; + } + } + $this->setDetectionType(self::DETECTION_TYPE_MOBILE); foreach (self::$tabletDevices as $_regex) { @@ -992,9 +1173,9 @@ class Mobile_Detect * userAgent. * @todo: The httpHeaders part is not yet used. * - * @param string $key - * @param string $userAgent deprecated - * @param string $httpHeaders deprecated + * @param string $key + * @param string $userAgent deprecated + * @param string $httpHeaders deprecated * @return bool|int|null */ public function is($key, $userAgent = null, $httpHeaders = null) @@ -1030,10 +1211,14 @@ class Mobile_Detect */ public function match($regex, $userAgent = null) { - // Escape the special character which is the delimiter. - $regex = str_replace('/', '\/', $regex); + $match = (bool) preg_match(sprintf('#%s#is', $regex), (false === empty($userAgent) ? $userAgent : $this->userAgent), $matches); + // If positive match is found, store the results for debug. + if ($match) { + $this->matchingRegex = $regex; + $this->matchesArray = $matches; + } - return (bool) preg_match('/'.$regex.'/is', (!empty($userAgent) ? $userAgent : $this->userAgent)); + return $match; } /** @@ -1072,11 +1257,11 @@ class Mobile_Detect * Will return a float number. (eg. 2_0 will return 2.0, 4.3.1 will return 4.31) * * @param string $propertyName The name of the property. See self::getProperties() array - * keys for all possible properties. - * @param string $type Either self::VERSION_TYPE_STRING to get a string value or - * self::VERSION_TYPE_FLOAT indicating a float value. This parameter - * is optional and defaults to self::VERSION_TYPE_STRING. Passing an - * invalid parameter will default to the this type as well. + * keys for all possible properties. + * @param string $type Either self::VERSION_TYPE_STRING to get a string value or + * self::VERSION_TYPE_FLOAT indicating a float value. This parameter + * is optional and defaults to self::VERSION_TYPE_STRING. Passing an + * invalid parameter will default to the this type as well. * * @return string|float The version of the property we are trying to extract. */ @@ -1086,15 +1271,15 @@ class Mobile_Detect return false; } - //set the $type to the default if we don't recognize the type - if ($type != self::VERSION_TYPE_STRING && $type != self::VERSION_TYPE_FLOAT) { + // set the $type to the default if we don't recognize the type + if ($type !== self::VERSION_TYPE_STRING && $type !== self::VERSION_TYPE_FLOAT) { $type = self::VERSION_TYPE_STRING; } $properties = self::getProperties(); // Check if the property exists in the properties array. - if (array_key_exists($propertyName, $properties)) { + if (true === isset($properties[$propertyName])) { // Prepare the pattern to be matched. // Make sure we always deal with an array (string is converted). @@ -1104,14 +1289,11 @@ class Mobile_Detect $propertyPattern = str_replace('[VER]', self::VER, $propertyMatchString); - // Escape the special character which is the delimiter. - $propertyPattern = str_replace('/', '\/', $propertyPattern); - // Identify and extract the version. - preg_match('/'.$propertyPattern.'/is', $this->userAgent, $match); + preg_match(sprintf('#%s#is', $propertyPattern), $this->userAgent, $match); - if (!empty($match[1])) { - $version = ( $type == self::VERSION_TYPE_FLOAT ? $this->prepareVersionNo($match[1]) : $match[1] ); + if (false === empty($match[1])) { + $version = ($type == self::VERSION_TYPE_FLOAT ? $this->prepareVersionNo($match[1]) : $match[1]); return $version; } @@ -1133,10 +1315,10 @@ class Mobile_Detect $isMobile = $this->isMobile(); if ( - // Apple iOS 3.2-5.1 - Tested on the original iPad (4.3 / 5.0), iPad 2 (4.3), iPad 3 (5.1), original iPhone (3.1), iPhone 3 (3.2), 3GS (4.3), 4 (4.3 / 5.0), and 4S (5.1) - $this->isIOS() && $this->version('iPad', self::VERSION_TYPE_FLOAT)>=4.3 || - $this->isIOS() && $this->version('iPhone', self::VERSION_TYPE_FLOAT)>=3.1 || - $this->isIOS() && $this->version('iPod', self::VERSION_TYPE_FLOAT)>=3.1 || + // Apple iOS 4-7.0 – Tested on the original iPad (4.3 / 5.0), iPad 2 (4.3 / 5.1 / 6.1), iPad 3 (5.1 / 6.0), iPad Mini (6.1), iPad Retina (7.0), iPhone 3GS (4.3), iPhone 4 (4.3 / 5.1), iPhone 4S (5.1 / 6.0), iPhone 5 (6.0), and iPhone 5S (7.0) + $this->is('iOS') && $this->version('iPad', self::VERSION_TYPE_FLOAT) >= 4.3 || + $this->is('iOS') && $this->version('iPhone', self::VERSION_TYPE_FLOAT) >= 4.3 || + $this->is('iOS') && $this->version('iPod', self::VERSION_TYPE_FLOAT) >= 4.3 || // Android 2.1-2.3 - Tested on the HTC Incredible (2.2), original Droid (2.2), HTC Aria (2.1), Google Nexus S (2.3). Functional on 1.5 & 1.6 but performance may be sluggish, tested on Google G1 (1.5) // Android 3.1 (Honeycomb) - Tested on the Samsung Galaxy Tab 10.1 and Motorola XOOM @@ -1144,31 +1326,30 @@ class Mobile_Detect // Android 4.1 (Jelly Bean) - Tested on a Galaxy Nexus and Galaxy 7 ( $this->version('Android', self::VERSION_TYPE_FLOAT)>2.1 && $this->is('Webkit') ) || - // Windows Phone 7-7.5 - Tested on the HTC Surround (7.0) HTC Trophy (7.5), LG-E900 (7.5), Nokia Lumia 800 - $this->version('Windows Phone OS', self::VERSION_TYPE_FLOAT)>=7.0 || + // Windows Phone 7.5-8 - Tested on the HTC Surround (7.5), HTC Trophy (7.5), LG-E900 (7.5), Nokia 800 (7.8), HTC Mazaa (7.8), Nokia Lumia 520 (8), Nokia Lumia 920 (8), HTC 8x (8) + $this->version('Windows Phone OS', self::VERSION_TYPE_FLOAT) >= 7.5 || - // Blackberry 7 - Tested on BlackBerry Torch 9810 - // Blackberry 6.0 - Tested on the Torch 9800 and Style 9670 - $this->is('BlackBerry') && $this->version('BlackBerry', self::VERSION_TYPE_FLOAT)>=6.0 || + // Tested on the Torch 9800 (6) and Style 9670 (6), BlackBerry® Torch 9810 (7), BlackBerry Z10 (10) + $this->is('BlackBerry') && $this->version('BlackBerry', self::VERSION_TYPE_FLOAT) >= 6.0 || // Blackberry Playbook (1.0-2.0) - Tested on PlayBook $this->match('Playbook.*Tablet') || - // Palm WebOS (1.4-2.0) - Tested on the Palm Pixi (1.4), Pre (1.4), Pre 2 (2.0) - ( $this->version('webOS', self::VERSION_TYPE_FLOAT)>=1.4 && $this->match('Palm|Pre|Pixi') ) || + // Palm WebOS (1.4-3.0) - Tested on the Palm Pixi (1.4), Pre (1.4), Pre 2 (2.0), HP TouchPad (3.0) + ( $this->version('webOS', self::VERSION_TYPE_FLOAT) >= 1.4 && $this->match('Palm|Pre|Pixi') ) || // Palm WebOS 3.0 - Tested on HP TouchPad $this->match('hp.*TouchPad') || - // Firefox Mobile (12 Beta) - Tested on Android 2.3 device - ( $this->is('Firefox') && $this->version('Firefox', self::VERSION_TYPE_FLOAT)>=12 ) || + // Firefox Mobile 18 - Tested on Android 2.3 and 4.1 devices + ( $this->is('Firefox') && $this->version('Firefox', self::VERSION_TYPE_FLOAT) >= 18 ) || // Chrome for Android - Tested on Android 4.0, 4.1 device - ( $this->is('Chrome') && $this->is('AndroidOS') && $this->version('Android', self::VERSION_TYPE_FLOAT)>=4.0 ) || + ( $this->is('Chrome') && $this->is('AndroidOS') && $this->version('Android', self::VERSION_TYPE_FLOAT) >= 4.0 ) || // Skyfire 4.1 - Tested on Android 2.3 device - ( $this->is('Skyfire') && $this->version('Skyfire', self::VERSION_TYPE_FLOAT)>=4.1 && $this->is('AndroidOS') && $this->version('Android', self::VERSION_TYPE_FLOAT)>=2.3 ) || + ( $this->is('Skyfire') && $this->version('Skyfire', self::VERSION_TYPE_FLOAT) >= 4.1 && $this->is('AndroidOS') && $this->version('Android', self::VERSION_TYPE_FLOAT) >= 2.3 ) || // Opera Mobile 11.5-12: Tested on Android 2.3 - ( $this->is('Opera') && $this->version('Opera Mobi', self::VERSION_TYPE_FLOAT)>11 && $this->is('AndroidOS') ) || + ( $this->is('Opera') && $this->version('Opera Mobi', self::VERSION_TYPE_FLOAT) >= 11.5 && $this->is('AndroidOS') ) || // Meego 1.2 - Tested on Nokia 950 and N9 $this->is('MeeGoOS') || @@ -1178,71 +1359,76 @@ class Mobile_Detect // Samsung Bada 2.0 - Tested on a Samsung Wave 3, Dolphin browser // @todo: more tests here! - $this->is('Dolfin') && $this->version('Bada', self::VERSION_TYPE_FLOAT)>=2.0 || + $this->is('Dolfin') && $this->version('Bada', self::VERSION_TYPE_FLOAT) >= 2.0 || // UC Browser - Tested on Android 2.3 device - ( ($this->is('UC Browser') || $this->is('Dolfin')) && $this->version('Android', self::VERSION_TYPE_FLOAT)>=2.3 ) || + ( ($this->is('UC Browser') || $this->is('Dolfin')) && $this->version('Android', self::VERSION_TYPE_FLOAT) >= 2.3 ) || // Kindle 3 and Fire - Tested on the built-in WebKit browser for each ( $this->match('Kindle Fire') || - $this->is('Kindle') && $this->version('Kindle', self::VERSION_TYPE_FLOAT)>=3.0 ) || + $this->is('Kindle') && $this->version('Kindle', self::VERSION_TYPE_FLOAT) >= 3.0 ) || // Nook Color 1.4.1 - Tested on original Nook Color, not Nook Tablet $this->is('AndroidOS') && $this->is('NookTablet') || - // Chrome Desktop 11-21 - Tested on OS X 10.7 and Windows 7 - $this->version('Chrome', self::VERSION_TYPE_FLOAT)>=11 && !$isMobile || + // Chrome Desktop 16-24 - Tested on OS X 10.7 and Windows 7 + $this->version('Chrome', self::VERSION_TYPE_FLOAT) >= 16 && !$isMobile || - // Safari Desktop 4-5 - Tested on OS X 10.7 and Windows 7 - $this->version('Safari', self::VERSION_TYPE_FLOAT)>=5.0 && !$isMobile || + // Safari Desktop 5-6 - Tested on OS X 10.7 and Windows 7 + $this->version('Safari', self::VERSION_TYPE_FLOAT) >= 5.0 && !$isMobile || - // Firefox Desktop 4-13 - Tested on OS X 10.7 and Windows 7 - $this->version('Firefox', self::VERSION_TYPE_FLOAT)>=4.0 && !$isMobile || + // Firefox Desktop 10-18 - Tested on OS X 10.7 and Windows 7 + $this->version('Firefox', self::VERSION_TYPE_FLOAT) >= 10.0 && !$isMobile || // Internet Explorer 7-9 - Tested on Windows XP, Vista and 7 - $this->version('MSIE', self::VERSION_TYPE_FLOAT)>=7.0 && !$isMobile || + $this->version('IE', self::VERSION_TYPE_FLOAT) >= 7.0 && !$isMobile || // Opera Desktop 10-12 - Tested on OS X 10.7 and Windows 7 - // @reference: http://my.opera.com/community/openweb/idopera/ - $this->version('Opera', self::VERSION_TYPE_FLOAT)>=10 && !$isMobile - + $this->version('Opera', self::VERSION_TYPE_FLOAT) >= 10 && !$isMobile ){ return self::MOBILE_GRADE_A; } if ( - $this->isIOS() && $this->version('iPad', self::VERSION_TYPE_FLOAT)<4.3 || - $this->isIOS() && $this->version('iPhone', self::VERSION_TYPE_FLOAT)<3.1 || - $this->isIOS() && $this->version('iPod', self::VERSION_TYPE_FLOAT)<3.1 || + $this->is('iOS') && $this->version('iPad', self::VERSION_TYPE_FLOAT)<4.3 || + $this->is('iOS') && $this->version('iPhone', self::VERSION_TYPE_FLOAT)<4.3 || + $this->is('iOS') && $this->version('iPod', self::VERSION_TYPE_FLOAT)<4.3 || // Blackberry 5.0: Tested on the Storm 2 9550, Bold 9770 - $this->is('Blackberry') && $this->version('BlackBerry', self::VERSION_TYPE_FLOAT)>=5 && $this->version('BlackBerry', self::VERSION_TYPE_FLOAT)<6 || + $this->is('Blackberry') && $this->version('BlackBerry', self::VERSION_TYPE_FLOAT) >= 5 && $this->version('BlackBerry', self::VERSION_TYPE_FLOAT)<6 || //Opera Mini (5.0-6.5) - Tested on iOS 3.2/4.3 and Android 2.3 - ( $this->version('Opera Mini', self::VERSION_TYPE_FLOAT)>=5.0 && $this->version('Opera Mini', self::VERSION_TYPE_FLOAT)<=6.5 && - ($this->version('Android', self::VERSION_TYPE_FLOAT)>=2.3 || $this->is('iOS')) ) || + ($this->version('Opera Mini', self::VERSION_TYPE_FLOAT) >= 5.0 && $this->version('Opera Mini', self::VERSION_TYPE_FLOAT) <= 7.0 && + ($this->version('Android', self::VERSION_TYPE_FLOAT) >= 2.3 || $this->is('iOS')) ) || // Nokia Symbian^3 - Tested on Nokia N8 (Symbian^3), C7 (Symbian^3), also works on N97 (Symbian^1) $this->match('NokiaN8|NokiaC7|N97.*Series60|Symbian/3') || // @todo: report this (tested on Nokia N71) - $this->version('Opera Mobi', self::VERSION_TYPE_FLOAT)>=11 && $this->is('SymbianOS') + $this->version('Opera Mobi', self::VERSION_TYPE_FLOAT) >= 11 && $this->is('SymbianOS') ){ return self::MOBILE_GRADE_B; } if ( // Blackberry 4.x - Tested on the Curve 8330 - $this->version('BlackBerry', self::VERSION_TYPE_FLOAT)<5.0 || + $this->version('BlackBerry', self::VERSION_TYPE_FLOAT) <= 5.0 || // Windows Mobile - Tested on the HTC Leo (WinMo 5.2) - $this->match('MSIEMobile|Windows CE.*Mobile') || $this->version('Windows Mobile', self::VERSION_TYPE_FLOAT)<=5.2 + $this->match('MSIEMobile|Windows CE.*Mobile') || $this->version('Windows Mobile', self::VERSION_TYPE_FLOAT) <= 5.2 || + + // Tested on original iPhone (3.1), iPhone 3 (3.2) + $this->is('iOS') && $this->version('iPad', self::VERSION_TYPE_FLOAT) <= 3.2 || + $this->is('iOS') && $this->version('iPhone', self::VERSION_TYPE_FLOAT) <= 3.2 || + $this->is('iOS') && $this->version('iPod', self::VERSION_TYPE_FLOAT) <= 3.2 || + // Internet Explorer 7 and older - Tested on Windows XP + $this->version('IE', self::VERSION_TYPE_FLOAT) <= 7.0 && !$isMobile ){ return self::MOBILE_GRADE_C; } - //All older smartphone platforms and featurephones - Any device that doesn't support media queries - //will receive the basic, C grade experience. + // All older smartphone platforms and featurephones - Any device that doesn't support media queries + // will receive the basic, C grade experience. return self::MOBILE_GRADE_C; } } diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/README.md b/htdocs/includes/mobiledetect/mobiledetectlib/README.md index acc861a1927..d96db2dea3d 100644 --- a/htdocs/includes/mobiledetect/mobiledetectlib/README.md +++ b/htdocs/includes/mobiledetect/mobiledetectlib/README.md @@ -1,38 +1,66 @@ -<img src="http://demo.mobiledetect.net/logo-github.png"> +[](https://travis-ci.org/serbanghita/Mobile-Detect) [](https://packagist.org/packages/mobiledetect/mobiledetectlib) [](https://packagist.org/packages/mobiledetect/mobiledetectlib) [](https://packagist.org/packages/mobiledetect/mobiledetectlib) [](https://packagist.org/packages/mobiledetect/mobiledetectlib) +[](https://gitter.im/serbanghita/Mobile-Detect?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) + + > Motto: "Every business should have a mobile detection script to detect mobile readers." -<i>Mobile_Detect is a lightweight PHP class for detecting mobile devices (including tablets). -It uses the User-Agent string combined with specific HTTP headers to detect the mobile environment.</i> +*Mobile_Detect is a lightweight PHP class for detecting mobile devices (including tablets). +It uses the User-Agent string combined with specific HTTP headers to detect the mobile environment.* + +We're committed to make Mobile_Detect the best open-source mobile detection resource and this is why before +each release we're running [unit tests](./tests), we also research and update the detection rules on **daily** +and **weekly** basis. -Nowadays web site/app <b>content strategy</b> matters, this is why you need all the tools to deliver the best and the fastest experience for the small screens. Mobile_Detect class is a [server-side detection](http://www.w3.org/TR/mwabp/#bp-devcap-detection) tool, it is not a replacement for Responsive Web Design (media queries) or other forms of client-side feature detection. +Your website's _content strategy_ is important! You need a complete toolkit to deliver an experience that is _optimized_, _fast_ and _relevant_ to your users. Mobile_Detect class is a [server-side detection](http://www.w3.org/TR/mwabp/#bp-devcap-detection) tool that can help you with your RWD strategy, it is not a replacement for CSS3 media queries or other forms of client-side feature detection. -We're commited to make Mobile_Detect the best open-source mobile detection resource and this is why before each release we're running [unit tests](./tests), we also research and update the detection rules on <b>daily</b> and <b>weekly</b> basis. +##### This month updates -<p> -<img src="https://dl.dropboxusercontent.com/u/70897251/impress_ghita_460px.jpg"><br> -<b>Thanks <a href="http://impresspages.org">ImpressPages</a> CMS for showing us some love!</b></p> +**THANK YOU** for your continuous support and feedback! +Still working on `3.0.0` branch to provide you with device detection! We're really excited on this one! +We would like to speed this up, but life and family gets in the way ;) +Special thanks to **JetBrains** for providing licenses for **PHPStorm**. In case you never heard or tried PHPStorm, you're +clearly missing out! [Check PHPStorm](https://www.jetbrains.com/phpstorm/) out! ##### Download and demo -<a href="https://github.com/serbanghita/Mobile-Detect/tags">Latest releases</a>, <a href="https://github.com/serbanghita/Mobile-Detect/blob/devel/Mobile_Detect.php">Latest dev branch</a>, <a href="https://packagist.org/packages/mobiledetect/mobiledetectlib">composer package</a> +|Download|Docs|Examples| +|-------------|-------------|-------------| +|[Go to releases](../../tags)|[Become a contributor](../../wiki/Become-a-contributor)|[Code examples](../../wiki/Code-examples) +|[Mobile_Detect.php](./Mobile_Detect.php)|[History](../../wiki/History)|[:iphone: Live demo!](http://is.gd/mobiletest) +|[Composer package](https://packagist.org/packages/mobiledetect/mobiledetectlib)| + +#### Continuous updates + +You can use [composer](https://getcomposer.org/doc/00-intro.md) in your release and update process to make sure you have the latest Mobile_Detect version. -See also: <a href="https://github.com/serbanghita/Mobile-Detect/wiki/Become-a-contributor">:bulb: Become a contributor</a> / <a href="https://github.com/serbanghita/Mobile-Detect/wiki/History">:coffee: History</a> / <a href="https://github.com/serbanghita/Mobile-Detect/wiki/Code-examples">:point_right: Code examples</a> / -<a href="http://is.gd/mobiletest">:iphone: Live demo!</a> (point your device browser to this URL) +``` +composer require mobiledetect/mobiledetectlib +``` + +```json +{ + "require": { + "mobiledetect/mobiledetectlib": "^2.8" + } +} +``` ##### Help -<a href="http://pledgie.com/campaigns/21856"><img alt='Click here to lend your support to: Research and development of Mobile Detect library!' src='http://www.pledgie.com/campaigns/21856.png?skin_name=chrome' border='0' /></a> -<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=mobiledetectlib%40gmail%2ecom&lc=US&item_name=Mobile%20Detect¤cy_code=USD&bn=PP%2dDonationsBF%3abtn_donate_SM%2egif%3aNonHosted"><img src="https://www.paypalobjects.com/en_US/i/btn/btn_donate_SM.gif" border="0"></a> +|Pledgie|Paypal| +|-------|------| +|[Donate :+1:](http://pledgie.com/campaigns/21856)|[Donate :beer:](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=mobiledetectlib%40gmail%2ecom&lc=US&item_name=Mobile%20Detect¤cy_code=USD&bn=PP%2dDonationsBF%3abtn_donate_SM%2egif%3aNonHosted)| + -I'm currently paying for hosting and spend a lot of my family time :family: to maintain the project and planning the future releases. +I'm currently paying for hosting and spend a lot of my family time to maintain the project and planning the future releases. I would highly appreciate any money donations that will keep the research going. Special thanks to the community :+1: for donations, [BrowserStack](http://browserstack.com) - for providing access to their great platform, [Zend](http://zend.com) - for donating licenses, [Dragos Gavrila](https://twitter.com/grafician) who contributed with the logo. -##### 3rd party modules / [Submit new](https://github.com/serbanghita/Mobile-Detect/issues/new?title=New%203rd%20party%20module&body=Name, Link and Description of the module.) +##### 3rd party modules / [Submit new](../../issues/new?title=New%203rd%20party%20module&body=Name, Link and Description of the module.) :point_right: Keep `Mobile_Detect.php` class in a separate `module` and do NOT include it in your script core because of the high frequency of updates. :point_right: When including the class into you `web application` or `module` always use `include_once '../path/to/Mobile_Detect.php` to prevent conflicts. @@ -40,20 +68,23 @@ Special thanks to the community :+1: for donations, [BrowserStack](http://browse <table> <tr> -<td>Varnish Cache</td> -<td><p><a href="https://github.com/willemk/varnish-mobiletranslate">Varnish Mobile Detect</a> - Drop-in varnish solution to mobile user detection based on the Mobile-Detect library. Made by <a href="https://github.com/willemk">willemk</a></p></td> + <td>Varnish Cache</td> + <td> + <p><a href="https://github.com/willemk/varnish-mobiletranslate">Varnish Mobile Detect</a> - Drop-in varnish solution to mobile user detection based on the Mobile-Detect library. Made by <a href="https://github.com/willemk">willemk</a></p> + <p><a href="https://github.com/carlosabalde/mobiledetect2vcl">mobiledetect2vcl</a> - Python script to transform the Mobile Detect JSON database into an UA-based mobile detection VCL subroutine easily integrable in any Varnish Cache configuration. Made by <a href="https://github.com/carlosabalde">Carlos Abalde</a></p> + </td> </tr> <tr> <td>WordPress</td> <td> - <p><a href="http://wordpress.org/extend/plugins/wp-mobile-detect/">WordPress Mobile Detect</a> - Gives you the ability to wrap that infographic in a [notdevice][/notdevice] shortcode so at the server level <code>WordPress</code> will decide to show that content only if the user is NOT on a phone or tablet. Made by <a href="http://profiles.wordpress.org/professor44/">Jesse Friedman</a>.</p> + <p><a href="http://wordpress.org/extend/plugins/wp-mobile-detect/">WordPress Mobile Detect</a> - Gives you the ability to wrap that infographic in a <code>[notdevice][/notdevice]</code> shortcode so at the server level <code>WordPress</code> will decide to show that content only if the user is NOT on a phone or tablet. Made by <a href="http://profiles.wordpress.org/professor44/">Jesse Friedman</a>.</p> <p><a href="http://wordpress.org/plugins/mobble/">mobble</a> - provides mobile related conditional functions for your site. e.g. is_iphone(), is_mobile() and is_tablet(). Made by Scott Evans.</p> <p><a href="https://github.com/iamspacehead/responsage">WordPress Responsage</a> - A small <code>WordPress</code> theme plugin that allows you to make your images responsive. Made by <a href="https://github.com/iamspacehead">Adrian Ciaschetti</a>.</p> - - <p><a href="http://wordpress.org/plugins/social-popup/">Social PopUP</a> - This plugin will display a popup or splash screen when a new user visit your site showing a Google+, Twitter and Facebook follow links. It uses Mobile_Detect to detect mobile devices.</p> + + <p><a href="https://wordpress.org/plugins/wp247-body-classes/">WP247 Body Classes</a> - Add unique classes to the <code>body</code> tag for easy styling based on various attributes (archive, user, post, mobile) and various WordPress "is" functions. Mobile attributes include type of device, Operating System, Browser, etc. Examples: .is-mobile, .is-not-mobile, .is-tablet, .is-ios, .is-not-ios, .is-androidos, .is-chromebrowser. Made by <a href="https://github.com/wescleveland56">wescleveland56</a></p> </td> </tr> @@ -63,16 +94,23 @@ Special thanks to the community :+1: for donations, [BrowserStack](http://browse <p><a href="http://drupal.org/project/mobile_switch">Drupal Mobile Switch</a> - The Mobile Switch <code>Drupal</code> module provides a automatic theme switch functionality for mobile devices, detected by Browscap or Mobile Detect. Made by <a href="http://drupal.org/user/45267">Siegfried Neumann</a>.</p> - <p><a href="http://drupal.org/project/context_mobile_detect">Drupal Context Mobile Detect</a> - This is a <code>Drupal context</code> module which integrates Context and PHP Mobile Detect library. + <p><a href="http://drupal.org/project/context_mobile_detect">Drupal Context Mobile Detect</a> - This is a <code>Drupal context</code> module which integrates Context and PHP Mobile Detect library. Created by <a href="http://drupal.org/user/432492">Artem Shymko</a>.</p> - <p><a href="http://drupal.org/project/mobile_detect">Drupal Mobile Detect</a> - Lightweight mobile detect module for <code>Drupal</code> created by <a href="http://drupal.org/user/325244">Matthew Donadio</a></p> + <p><a href="http://drupal.org/project/mobile_detect">Drupal Mobile Detect</a> - Lightweight mobile detect module for <code>Drupal</code> created by <a href="http://drupal.org/user/325244">Matthew Donadio</a></p> </td> </tr> <tr> <td>Joomla</td> - <td><p><a href="http://www.yagendoo.com/en/blog/free-mobile-detection-plugin-for-joomla.html">yagendoo Joomla! Mobile Detection Plugin</a> - Lightweight PHP plugin for Joomla! that detects a mobile browser using the Mobile Detect class. Made by <a href="http://www.yagendoo.com/">yagendoo media</a>.</p></td> + <td> + <p><a href="http://www.yagendoo.com/en/blog/free-mobile-detection-plugin-for-joomla.html">yagendoo Joomla! Mobile Detection Plugin</a> - Lightweight PHP plugin for Joomla! + that detects a mobile browser using the Mobile Detect class. Made by <a href="http://www.yagendoo.com/">yagendoo media</a>.</p> + + <p><a href="https://github.com/renekreijveld/UserAgentDetector">User Agent Detector plugin</a> by @ReneKreijveld. This system plugin detects the user agent of your + website visitor and sets a session variable accordingly. Based on the user agent, the plugin detects if the site is running on a desktop pc, tablet or smartphone. + It can also detect if the visitor is a spider bot (search engine). Session variable that is set: ualayout. Possible values: desktop, tablet, mobile, bot..</p> + </td> </tr> <tr> @@ -91,7 +129,7 @@ Special thanks to the community :+1: for donations, [BrowserStack](http://browse <td> <p><a href="https://github.com/neilime/zf2-mobile-detect.git">ZF2 Mobile-Detect</a> - Zend Framework 2 module that provides Mobile-Detect features (Mobile_Detect class as a service, helper for views and plugin controllers). Made by <a href="https://github.com/neilime">neilime</a></p> - <p><a href="https://github.com/nikolaposa/MobileDetectModule">ZF2 MobileDetectModule</a> - Facilitates integration of a PHP MobileDetect class with some ZF2-based application. Has similar idea like the existing ZF2 Mobile-Detect module, but differs in initialization and provision routine of the actual Mobile_Detect class. Appropriate view helper and controller plugin also have different conceptions. Made by <a href="https://github.com/nikolaposa">Nikola Posa</a></p> + <p><a href="https://github.com/nikolaposa/MobileDetectModule">ZF2 MobileDetectModule</a> - Facilitates integration of a PHP MobileDetect class with some ZF2-based application. Has similar idea like the existing ZF2 Mobile-Detect module, but differs in initialization and provision routine of the actual Mobile_Detect class. Appropriate view helper and controller plugin also have different conceptions. Made by <a href="https://github.com/nikolaposa">Nikola Posa</a></p> </td> </tr> @@ -107,7 +145,7 @@ Special thanks to the community :+1: for donations, [BrowserStack](http://browse <td>Laravel</td> <td> <p><a href="https://github.com/jenssegers/Laravel-Agent">Laravel-Agent</a> a user agent class for Laravel, based on Mobile Detect with some additional functionality. Made by <a href="https://github.com/jenssegers">Jens Segers</a>.</p> - <p><a href="https://github.com/hisorange/browser-detect">BrowserDetect</a>is a browser & mobile detection package, collects and wrap together the best user-agent identifiers for Laravel. Created by <a href="https://github.com/hisorange">Varga Zsolt</a>.</p> + <p><a href="https://github.com/hisorange/browser-detect">BrowserDetect</a> is a browser & mobile detection package, collects and wrap together the best user-agent identifiers for Laravel. Created by <a href="https://github.com/hisorange">Varga Zsolt</a>.</p> </td> </tr> @@ -118,7 +156,13 @@ Special thanks to the community :+1: for donations, [BrowserStack](http://browse <tr> <td>Yii Framework</td> - <td><p><a href="https://github.com/iamsalnikov/MobileDetect">Yii Extension</a> - Mobile detect plugin for Yii framework. Made by <a href="https://github.com/iamsalnikov">Alexey Salnikov</a>.</p></td> + <td> + <p><a href="https://github.com/iamsalnikov/MobileDetect">Yii Extension</a> - Mobile detect plugin for Yii framework. + Made by <a href="https://github.com/iamsalnikov">Alexey Salnikov</a>.</p> + + <p><a href="https://github.com/alexandernst/yii2-device-detect/">Yii2 Device Detect</a> - Yii2 extension for Mobile-Detect library. Made by <a href="https://github.com/alexandernst">Alexander Nestorov</a></p> + + </td> </tr> <tr> @@ -139,7 +183,12 @@ It overrides the Fuelphp Agent class its methods. Made by <a href="https://githu <tr> <td>Statamic</td> - <td><p><a href="https://github.com/sergeifilippov/statamic-mobile-detect">Statamic CMS Mobile Detect</a> - <code>plugin</code>. Made by <a href="https://github.com/haikulab/statamic-mobile-detect">Sergei Filippov of Haiku Lab</a>.</p></td> + <td><p><a href="https://github.com/haikulab/statamic-mobile-detect">Statamic CMS Mobile Detect</a> - <code>plugin</code>. Made by <a href="https://github.com/haikulab/statamic-mobile-detect">Sergei Filippov of Haiku Lab</a>.</p></td> +</tr> + +<tr> + <td>Kohana</td> + <td><p><a href="https://github.com/madeinnordeste/kohana-mobile-detect">Kohana Mobile Detect</a> - an example of implementation of <code>Mobile_Detect</code> class with Kohana framework. Written by <a href="https://github.com/madeinnordeste">Luiz Alberto S. Ribeiro</a>.</p></td> </tr> <tr> @@ -147,14 +196,29 @@ It overrides the Fuelphp Agent class its methods. Made by <a href="https://githu <td><p>A <a href="https://github.com/hgoebl/mobile-detect.js">JavaScript port</a> of Mobile-Detect class. Made by <a href="https://github.com/hgoebl">Heinrich Goebl</a></p></td> </tr> + <tr> + <td>Perl</td> + <td><p><a href="http://www.buzzerstar.com/development/">MobileDetect.pm</a> - <code>Perl module</code> for Mobile Detect. Made by <a href="http://www.buzzerstar.com/">Sebastian Enger</a>.</p></td> + </tr> + <tr> <td>python</td> <td><p><a href="http://pypi.python.org/pypi/pymobiledetect">pymobiledetect</a> - Mobile detect <code>python package</code>. Made by Bas van Oostveen.</p></td> </tr> + + <tr> + <td>Ruby</td> + <td><p><a href="https://github.com/ktaragorn/mobile_detect">mobile_detect.rb</a> - A <code>Ruby gem</code> using the JSON data exposed by the php project and implementing a basic subset of the API (as much as can be done by the exposed data). Made by <a href="https://github.com/ktaragorn">Karthik T</a>.</p></td> + </tr> <tr> <td>GoMobileDetect</td> - <td><p><a href="https://github.com/Shaked/gomobiledetect">GoMobileDetect</a> - Go port of Mobile Detect class. Made by <a href="https://github.com/Shaked">Shaked</a>.</p></td> + <td><p><a href="https://github.com/Shaked/gomobiledetect">GoMobileDetect</a> - <code>Go</code> port of Mobile Detect class. Made by <a href="https://github.com/Shaked">Shaked</a>.</p></td> +</tr> + +<tr> + <td>LUA</td> + <td><p><a href="https://github.com/robinef/ua-lua">ua-lua</a> is a small lib written in <code>LUA</code> providing device type detection. ua-lua is detecting mobile or tablet devices based on user-agent inside nginx daemon. Made by <a href="https://github.com/robinef">Frédéric Robinet</a>.</p></td> </tr> <tr> diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/composer.json b/htdocs/includes/mobiledetect/mobiledetectlib/composer.json index 0131e4937ec..c56611fb6b7 100644 --- a/htdocs/includes/mobiledetect/mobiledetectlib/composer.json +++ b/htdocs/includes/mobiledetect/mobiledetectlib/composer.json @@ -17,7 +17,9 @@ "php": ">=5.0.0" }, "require-dev": { - "phpunit/phpunit": "*" + "phpunit/phpunit": "*", + "johnkary/phpunit-speedtrap": "~1.0@dev", + "codeclimate/php-test-reporter": "dev-master" }, "autoload": { "classmap": ["Mobile_Detect.php"], diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/composer.lock b/htdocs/includes/mobiledetect/mobiledetectlib/composer.lock deleted file mode 100644 index 2b214625190..00000000000 --- a/htdocs/includes/mobiledetect/mobiledetectlib/composer.lock +++ /dev/null @@ -1,439 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file" - ], - "hash": "5b2d87ea9e6c115194bd355b7b697cec", - "packages": [ - - ], - "packages-dev": [ - { - "name": "phpunit/php-code-coverage", - "version": "1.2.12", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "1.2.12" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/1.2.12", - "reference": "1.2.12", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "phpunit/php-file-iterator": ">=1.3.0@stable", - "phpunit/php-text-template": ">=1.1.1@stable", - "phpunit/php-token-stream": ">=1.1.3@stable" - }, - "require-dev": { - "phpunit/phpunit": "3.7.*@dev" - }, - "suggest": { - "ext-dom": "*", - "ext-xdebug": ">=2.0.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, - "autoload": { - "classmap": [ - "PHP/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", - "keywords": [ - "coverage", - "testing", - "xunit" - ], - "time": "2013-07-06 06:26:16" - }, - { - "name": "phpunit/php-file-iterator", - "version": "1.3.3", - "source": { - "type": "git", - "url": "git://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "1.3.3" - }, - "dist": { - "type": "zip", - "url": "https://github.com/sebastianbergmann/php-file-iterator/zipball/1.3.3", - "reference": "1.3.3", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "autoload": { - "classmap": [ - "File/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "http://www.phpunit.de/", - "keywords": [ - "filesystem", - "iterator" - ], - "time": "2012-10-11 04:44:38" - }, - { - "name": "phpunit/php-text-template", - "version": "1.1.4", - "source": { - "type": "git", - "url": "git://github.com/sebastianbergmann/php-text-template.git", - "reference": "1.1.4" - }, - "dist": { - "type": "zip", - "url": "https://github.com/sebastianbergmann/php-text-template/zipball/1.1.4", - "reference": "1.1.4", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "autoload": { - "classmap": [ - "Text/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "time": "2012-10-31 11:15:28" - }, - { - "name": "phpunit/php-timer", - "version": "1.0.5", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "1.0.5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/1.0.5", - "reference": "1.0.5", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "autoload": { - "classmap": [ - "PHP/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", - "keywords": [ - "timer" - ], - "time": "2013-08-02 07:42:54" - }, - { - "name": "phpunit/php-token-stream", - "version": "1.2.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "1.2.0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/1.2.0", - "reference": "1.2.0", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2-dev" - } - }, - "autoload": { - "classmap": [ - "PHP/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Wrapper around PHP's tokenizer extension.", - "homepage": "https://github.com/sebastianbergmann/php-token-stream/", - "keywords": [ - "tokenizer" - ], - "time": "2013-08-04 05:57:48" - }, - { - "name": "phpunit/phpunit", - "version": "3.7.23", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "3.7.23" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3.7.23", - "reference": "3.7.23", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-pcre": "*", - "ext-reflection": "*", - "ext-spl": "*", - "php": ">=5.3.3", - "phpunit/php-code-coverage": "~1.2.1", - "phpunit/php-file-iterator": ">=1.3.1", - "phpunit/php-text-template": ">=1.1.1", - "phpunit/php-timer": ">=1.0.4", - "phpunit/phpunit-mock-objects": "~1.2.0", - "symfony/yaml": "~2.0" - }, - "require-dev": { - "pear-pear/pear": "1.9.4" - }, - "suggest": { - "ext-json": "*", - "ext-simplexml": "*", - "ext-tokenizer": "*", - "phpunit/php-invoker": ">=1.1.0,<1.2.0" - }, - "bin": [ - "composer/bin/phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.7.x-dev" - } - }, - "autoload": { - "classmap": [ - "PHPUnit/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "", - "../../symfony/yaml/" - ], - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "The PHP Unit Testing framework.", - "homepage": "http://www.phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], - "time": "2013-08-02 19:14:44" - }, - { - "name": "phpunit/phpunit-mock-objects", - "version": "1.2.3", - "source": { - "type": "git", - "url": "git://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "1.2.3" - }, - "dist": { - "type": "zip", - "url": "https://github.com/sebastianbergmann/phpunit-mock-objects/archive/1.2.3.zip", - "reference": "1.2.3", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "phpunit/php-text-template": ">=1.1.1@stable" - }, - "suggest": { - "ext-soap": "*" - }, - "type": "library", - "autoload": { - "classmap": [ - "PHPUnit/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Mock Object library for PHPUnit", - "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", - "keywords": [ - "mock", - "xunit" - ], - "time": "2013-01-13 10:24:48" - }, - { - "name": "symfony/yaml", - "version": "v2.3.2", - "target-dir": "Symfony/Component/Yaml", - "source": { - "type": "git", - "url": "https://github.com/symfony/Yaml.git", - "reference": "v2.3.2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/Yaml/zipball/v2.3.2", - "reference": "v2.3.2", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-dev" - } - }, - "autoload": { - "psr-0": { - "Symfony\\Component\\Yaml\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - } - ], - "description": "Symfony Yaml Component", - "homepage": "http://symfony.com", - "time": "2013-07-11 19:36:36" - } - ], - "aliases": [ - - ], - "minimum-stability": "stable", - "stability-flags": [ - - ], - "platform": { - "php": ">=5.0.0" - }, - "platform-dev": [ - - ] -} diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/examples/demo.php b/htdocs/includes/mobiledetect/mobiledetectlib/examples/demo.php index 82fec6cdb3e..38dad6b2879 100644 --- a/htdocs/includes/mobiledetect/mobiledetectlib/examples/demo.php +++ b/htdocs/includes/mobiledetect/mobiledetectlib/examples/demo.php @@ -34,6 +34,7 @@ require_once '../Mobile_Detect.php'; $detect = new Mobile_Detect; + $deviceType = ($detect->isMobile() ? ($detect->isTablet() ? 'tablet' : 'phone') : 'computer'); $scriptVersion = $detect->getScriptVersion(); @@ -157,7 +158,7 @@ $scriptVersion = $detect->getScriptVersion(); <p>This is a <b><?php echo $deviceType; ?></b>. Your UA is <b class="<?php echo $deviceType; ?>"><?php echo htmlentities($_SERVER['HTTP_USER_AGENT']); ?></b></p> <p class="infoText">Please help us improve the mobile detection by choosing the correct answer.<br> - Before sending an answer double check if you are using the browser in 'Desktop mode'.<br> + Before sending an answer double check that you are using the browser in its normal mode, not in 'Desktop mode'.<br> You can contribute by:<br> 1. <a href="https://github.com/serbanghita/Mobile-Detect">forking</a> the project<br> 2. <a href="https://github.com/serbanghita/Mobile-Detect/issues/new?body=Please%20specify%20the%20User-Agent.%20Go%20to%20http://is.gd/mobiletest%20and%20copy-paste%20it%20here.">submiting an issue</a><br> @@ -250,6 +251,19 @@ $scriptVersion = $detect->getScriptVersion(); <td class="randomcrap"><?php var_dump($detect->isWhateverYouWant()); ?></td> </tr> </tbody> + <tbody> + <tr> + <th colspan="2">Debug</th> + </tr> + <tr> + <td>Matching Regex</td> + <td><?php var_dump($detect->getMatchingRegex()); ?></td> + </tr> + <tr> + <td>Matching Array</td> + <td><?php var_dump($detect->getMatchesArray()); ?></td> + </tr> + </tbody> </table> </section> diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/examples/test.php b/htdocs/includes/mobiledetect/mobiledetectlib/examples/test.php new file mode 100644 index 00000000000..85f3c2c0b07 --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/examples/test.php @@ -0,0 +1,29 @@ +<?php +require_once '../Mobile_Detect.php'; +/* +$detect = new Mobile_Detect; +$detect->setUserAgent('Mozilla/5.0 (iPhone; CPU iPhone OS 8_0_2 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) CriOS/38.0.2125.59 Mobile/12A405 Safari/600.1.4'); +var_dump($detect->version('Chrome')); +var_dump($detect->version('iPhone')); +*/ + +/* +$user_agents = array( + 'android' => 'Mozilla/5.0 (Linux; Android 4.2; Nexus 7 Build/JOP40C) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19', + 'iphone6' => 'Mozilla/5.0 (iPhone; CPU iPhone OS 6_0_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A523 Safari/8536.25', + 'blackberry' => 'Mozilla/5.0 (BB10; Touch) AppleWebKit/537.10+ (KHTML, like Gecko) Version/10.0.9.2372 Mobile Safari/537.10+' +); +$mobile_detect = new Mobile_Detect; + +foreach($user_agents as $user_agent) +{ + $mobile_detect->setUserAgent($user_agent); + var_dump($mobile_detect->isAndroidOS()); +} +*/ + +$detect = new Mobile_Detect; +//$detect->setUserAgent('Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko'); +//var_dump($detect->version('IE')); +$detect->setUserAgent('Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; Touch; rv:11.0) like Gecko'); +var_dump($detect->version('IE')); \ No newline at end of file diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/export/exportToJSON.php b/htdocs/includes/mobiledetect/mobiledetectlib/export/exportToJSON.php index f7735de7bf7..88ff6a10991 100644 --- a/htdocs/includes/mobiledetect/mobiledetectlib/export/exportToJSON.php +++ b/htdocs/includes/mobiledetect/mobiledetectlib/export/exportToJSON.php @@ -47,7 +47,9 @@ $json = array( // If match is found, triggers 'isMobile' to be true. 'browsers' => $detect->getBrowsers(), // If match is found, triggers 'isMobile' to be true. - 'os' => $detect->getOperatingSystems() + 'os' => $detect->getOperatingSystems(), + // Various utilities. To be further discussed. + 'utilities' => $detect->getUtilities() ) ); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/BasicsTest.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/BasicsTest.php old mode 100644 new mode 100755 index 897a3ec764c..5519665ee7a --- a/htdocs/includes/mobiledetect/mobiledetectlib/tests/BasicsTest.php +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/BasicsTest.php @@ -1,29 +1,5 @@ <?php /** - * MIT License - * =========== - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * - * @author Serban Ghita <serbanghita@gmail.com> * @license MIT License https://github.com/serbanghita/Mobile-Detect/blob/master/LICENSE.txt * @link http://mobiledetect.net */ @@ -177,7 +153,8 @@ class BasicTest extends PHPUnit_Framework_TestCase /** * @dataProvider userAgentProvider - * @covers Mobile_Detect::setUserAgent, Mobile_Detect::getUserAgent + * @covers Mobile_Detect::setUserAgent + * @covers Mobile_Detect::getUserAgent */ public function testGetUserAgent($headers, $expectedUserAgent) { @@ -203,7 +180,56 @@ class BasicTest extends PHPUnit_Framework_TestCase } /** - * @covers Mobile_Detect::setUserAgent, Mobile_Detect::getUserAgent + * Read response from cloudfront, if the cloudfront headers are detected + * @covers Mobile_Detect::setCfHeaders + */ + public function testSetCfHeaders() + { + // Test mobile detected + $header1 = array( + 'HTTP_CLOUDFRONT_IS_DESKTOP_VIEWER' => 'false', + 'HTTP_CLOUDFRONT_IS_MOBILE_VIEWER' => 'true', + 'HTTP_CLOUDFRONT_IS_TABLET_VIEWER' => 'false' + ); + $md = new Mobile_Detect($header1); + $this->assertSame($md->getCfHeaders(), $header1); + $this->assertSame($md->getUserAgent(), 'Amazon CloudFront'); + $this->assertSame($md->isTablet(), false); + $this->assertSame($md->isMobile(), true); + + // Test neither mobile nor tablet (desktop) + $header2 = array( + 'HTTP_CLOUDFRONT_IS_DESKTOP_VIEWER' => 'true', + 'HTTP_CLOUDFRONT_IS_MOBILE_VIEWER' => 'false', + 'HTTP_CLOUDFRONT_IS_TABLET_VIEWER' => 'false' + ); + $md->setHttpHeaders($header2); + $this->assertSame($md->getCfHeaders(), $header2); + $this->assertSame($md->getUserAgent(), 'Amazon CloudFront'); + $this->assertSame($md->isTablet(), false); + $this->assertSame($md->isMobile(), false); + + // Test tablet detected + $header3 = array( + 'HTTP_CLOUDFRONT_IS_DESKTOP_VIEWER' => 'false', + 'HTTP_CLOUDFRONT_IS_MOBILE_VIEWER' => 'false', + 'HTTP_CLOUDFRONT_IS_TABLET_VIEWER' => 'true' + ); + $md->setCfHeaders($header3); + $this->assertSame($md->getCfHeaders(), $header3); + $this->assertSame($md->getUserAgent(), 'Amazon CloudFront'); + $this->assertSame($md->isTablet(), true); + $this->assertSame($md->isMobile(), false); + + // Check if the headers are cleared + $header4 = array(); + $md->setHttpHeaders($header4); + $this->assertSame($md->getCfHeaders(), $header4); + } + + /** + * @covers Mobile_Detect::setUserAgent + * @covers Mobile_Detect::getUserAgent */ public function testSetUserAgent() { @@ -461,7 +487,7 @@ class BasicTest extends PHPUnit_Framework_TestCase public function testScriptVersion() { $v = Mobile_Detect::getScriptVersion(); - $formatCheck = (bool)preg_match('/^[0-9]+\.[0-9]+\.[0-9](-[a-zA-Z0-9])?$/', $v); + $formatCheck = (bool)preg_match('/^[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z0-9])?$/', $v); $this->assertTrue($formatCheck, "Fails the semantic version test. The version " . var_export($v, true) . ' does not match X.Y.Z pattern'); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/UA_List.inc.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/UA_List.inc.php index dc87bfb2b14..5c4df79b9a4 100644 --- a/htdocs/includes/mobiledetect/mobiledetectlib/tests/UA_List.inc.php +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/UA_List.inc.php @@ -1,1220 +1,27 @@ <?php /** - * MIT License - * =========== - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * - * @author Serban Ghita <serbanghita@gmail.com> - * * @license MIT License https://github.com/serbanghita/Mobile-Detect/blob/master/LICENSE.txt * @link http://mobiledetect.net * - * This file is updated weekly. + * Compile the providers list. + * The providers list is updated weekly. * You can contribute by adding new user agents and tests. - * */ -return array( - - 'Acer' => array( - 'Mozilla/5.0 (Linux; U; Android 3.2.1; en-us; A100 Build/HTK55D) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.1; en-us; A110 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; de-de; A200 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( 'isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.3', 'Webkit' => '534.30', 'Safari' => '4.0', 'Build' => 'IML74K'), 'model' => 'A200' ), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; A500 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; A501 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.1.1; A701 Build/JRO03H) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.1.2; B1-A71 Build/JZO54K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.1.2; B1-710 Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.2.2; A1-810 Build/JDQ39) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Safari/537.31' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.2.2; nl-nl; A1-810 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Acer; Allegro)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.2.2; A3-A10 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Safari/537.36' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.2.2', 'Build' => 'JDQ39', 'Webkit' => '537.36', 'Chrome' => '32.0.1700.99')), - 'Mozilla/5.0 (Linux; Android 4.2.2; A1-830 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), - ), - - 'AdvanDigital' => array( - 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; E1C Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.2.2; id-id; T3C Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - ), - - 'Ainol' => array( - - 'Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Ainol Novo8 Advanced Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.1.1; Novo10 Hero Build/20121115) AppleWebKit/535.19 (KHTML like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.2.2; es-es; novo9-Spark Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - - ), - 'AllFine' => array( - - 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-gb; FINE7 GENIUS Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - - ), - - 'ASUS' => array( - 'Mozilla/5.0 (Linux; U; Android 3.2.1; en-us; Transformer TF101 Build/HTK75) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array( 'isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '3.2.1', 'Webkit' => '534.13', 'Safari' => '4.0'), 'model' => 'Transformer TF101' ), - 'Mozilla/5.0 (Linux; Android 4.1.1; Transformer Build/JRO03L) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.1.1; ASUS Transformer Pad TF300T Build/JRO03C) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.1.2; fr-fr; Transformer Build/JZO54K; CyanogenMod-10) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; asus_laptop Build/IMM76L) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-gb; PadFone 2 Build/JRO03L) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-gb; PadFone 2 Build/JRO03L) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.1', 'Build' => 'JRO03L', 'Webkit' => '534.30', 'Safari' => '4.0') ), - 'Mozilla/5.0 (Linux; Android 4.2.1; ME301T Build/JOP40D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Safari/537.36' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.2.1', 'Build' => 'JOP40D') ), - 'Mozilla/5.0 (Linux; Android 4.2.1; ME173X Build/JOP40D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Safari/537.36' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.2.1', 'Build' => 'JOP40D') ), - 'Mozilla/5.0 (Linux; Android 4.2.2; TF300T Build/JDQ39E) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.2.2', 'Build' => 'JDQ39E') ), - ), - - 'Alcatel' => array( - 'Mozilla/5.0 (Linux; U; Android 2.3.7; en-in; MB525 Build/GWK74; CyanogenMod-7.2.0) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.5; it-it; ALCATEL ONE TOUCH 918D Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Android' => '2.3.5', 'Webkit' => '533.1', 'Safari' => '4.0', 'Build' => 'GRJ90'), 'model' => 'ONE TOUCH 918D' ), - 'Mozilla/5.0 (Linux; U; Android 2.3.6; ru-ru; ALCATEL ONE TOUCH 991 Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Android' => '2.3.6', 'Webkit' => '533.1', 'Safari' => '4.0', 'Build' => 'GRJ90'), 'model' => 'ONE TOUCH 991' ), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; ru-ru; ALCATEL ONE TOUCH 993D Build/ICECREAM) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Android' => '4.0.4', 'Webkit' => '534.30', 'Safari' => '4.0', 'Build' => 'ICECREAM'), 'model' => 'ONE TOUCH 993D' ), - ), - - 'Allview' => array( - - 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; ALLVIEW P5 Build/IML74K) AppleWebKit/534.30 (KHTML like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us ; ALLVIEW SPEEDI Build/IMM76D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1/UCBrowser/8.5.3.246/145/355' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; AllviewCity Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; ALLVIEWSPEED Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - - ), - - 'Amazon' => array( - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; KFTT Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.4 Mobile Safari/535.19 Silk-Accelerated=true' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; en-US) AppleWebKit/528.5+ (KHTML, like Gecko, Safari/528.5+) Version/4.0 Kindle/3.0 (screen 600x800; rotate)' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Webkit' => '528.5+', 'Kindle' => '3.0', 'Safari' => '4.0'), 'model' => 'Kindle' ), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; KFOTE Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.3', 'Build' => 'IML74K', 'Webkit' => '534.30', 'Safari' => '4.0') ), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; WFJWAE Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - ), - - 'Apple' => array( - 'iTunes/9.1.1' => array('isMobile' => false, 'isTablet' => false), - 'iTunes/11.0.2 (Windows; Microsoft Windows 8 x64 Business Edition (Build 9200)) AppleWebKit/536.27.1' => array('isMobile' => false, 'isTablet' => false), - 'Mozilla/5.0 (iPod touch; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A4449d Safari/9537.53' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543 Safari/419.3' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Webkit' => '420+', 'Safari' => '3.0') ), - 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16' => array('isMobile' => true, 'isTablet' => false, 'version' => array('iOS' => '3_0', 'Webkit' => '528.18', 'Safari' => '4.0'), 'model' => 'iPhone', 'mobileGrade' => 'B' ), - 'Mozilla/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B206 Safari/7534.48.3' => array('isMobile' => true, 'isTablet' => false, 'version' => array('iOS' => '5_1_1', 'Webkit' => '534.46', 'Mobile' => '9B206', 'Safari' => '5.1'), 'model' => 'iPhone' ), - 'Mozilla/5.0 (iPod; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A403 Safari/8536.25' => array('isMobile' => true, 'isTablet' => false, 'version' => array('iOS' => '6_0', 'Webkit' => '536.26', 'Mobile' => '10A403', 'Safari' => '6.0'), 'model' => 'iPod'), - 'Mozilla/5.0 (iPad; CPU OS 5_1_1 like Mac OS X; en-us) AppleWebKit/534.46.0 (KHTML, like Gecko) CriOS/21.0.1180.80 Mobile/9B206 Safari/7534.48.3 (6FF046A0-1BC4-4E7D-8A9D-6BF17622A123)' => array('isMobile' => true, 'isTablet' => true, 'version' => array('iOS' => '5_1_1', 'Webkit' => '534.46.0', 'Chrome' => '21.0.1180.80', 'Mobile' => '9B206'), 'model' => 'iPad' ), - 'Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A403 Safari/8536.25' => array('isMobile' => true, 'isTablet' => true, 'version' => array('iOS' => '6_0', 'Webkit' => '536.26', 'Safari' => '6.0', 'Mobile' => '10A403'), 'model' => 'iPad' ), - 'Mozilla/5.0 (iPad; U; CPU OS 4_2_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5' => array('isMobile' => true, 'isTablet' => true, 'version' => array('iOS' => '4_2_1', 'Webkit' => '533.17.9', 'Safari' => '5.0.2', 'Mobile' => '8C148'), 'model' => 'iPad', 'mobileGrade' => 'B' ), - 'Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.10' => array('isMobile' => true, 'isTablet' => true, 'version' => array('iOS' => '3_2', 'Webkit' => '531.21.10', 'Safari' => '4.0.4', 'Mobile' => '7B334b'), 'model' => 'iPad', 'mobileGrade' => 'B' ), - 'Mozilla/5.0 (iPhone; CPU iPhone OS 6_0_1 like Mac OS X; da-dk) AppleWebKit/534.46.0 (KHTML, like Gecko) CriOS/21.0.1180.82 Mobile/10A523 Safari/7534.48.3' => array('isMobile' => true, 'isTablet' => false, 'version' => array('iOS' => '6_0_1', 'Webkit' => '534.46.0', 'Chrome' => '21.0.1180.82', 'Mobile' => '10A523'), 'model' => 'iPhone', 'mobileGrade' => 'A' ), - 'Mozilla/5.0 (iPhone; CPU iPhone OS 6_0_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A523 Safari/8536.25' => array('isMobile' => true, 'isTablet' => false, 'version' => array('iOS' => '6_0_1', 'Webkit' => '536.26', 'Safari' => '6.0', 'Mobile' => '10A523'), 'model' => 'iPhone', 'mobileGrade' => 'A' ), - 'Mozilla/5.0 (iPhone; CPU iPhone OS 6_1 like Mac OS X; ru-ru) AppleWebKit/536.26 (KHTML, like Gecko) CriOS/23.0.1271.100 Mobile/10B142 Safari/8536.25' => array('isMobile' => true, 'isTablet' => false, 'version' => array('iOS' => '6_1', 'Webkit' => '536.26', 'Chrome' => '23.0.1271.100', 'Mobile' => '10B142'), 'model' => 'iPhone', 'mobileGrade' => 'A' ), - 'Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10B329 Safari/8536.25' => array('isMobile' => true, 'isTablet' => false, 'version' => array('iOS' => '6_1_3', 'Webkit' => '536.26', 'Safari' => '6.0', 'Mobile' => '10B329'), 'model' => 'iPhone', 'mobileGrade' => 'A' ), - 'Mozilla/5.0 (iPad; CPU OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Coast/1.0.2.62956 Mobile/10B329 Safari/7534.48.3' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Coast' => '1.0.2.62956')), - ), - - 'Archos' => array( - - 'Mozilla/5.0 (Linux; Android 4.2.2; Qilive 97R Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.92 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.1.2; Archos 50 Platinum Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.0.4; ARCHOS 80G9 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 2.2.1; fr-fr; A101IT Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.2.2; Archos 101 Neon Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Safari/537.36' => array( - 'isMobile' => true, 'isTablet' => true - ), - ), - - 'AudioSonic' => array( - 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-au; T-17B Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - ), - - 'BlackBerry' => array( - 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9300; en) AppleWebKit/534.8+ (KHTML, like Gecko) Version/6.0.0.546 Mobile Safari/534.8+' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Webkit' => '534.8+', 'BlackBerry' => '6.0.0.546'), 'model' => 'BlackBerry 9300' ), - 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9360; en-US) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.0.0.400 Mobile Safari/534.11+' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9700; he) AppleWebKit/534.8+ (KHTML, like Gecko) Version/6.0.0.723 Mobile Safari/534.8+' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9700; en-US) AppleWebKit/534.8 (KHTML, like Gecko) Version/6.0.0.448 Mobile Safari/534.8' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9790; en-GB) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.714 Mobile Safari/534.11+' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Webkit' => '534.11+', 'BlackBerry' => '7.1.0.714'), 'model' => 'BlackBerry 9790' ), - 'Opera/9.80 (BlackBerry; Opera Mini/7.0.29990/28.2504; U; en) Presto/2.8.119 Version/11.10' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9981; en-GB) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.342 Mobile Safari/534.11+' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9800; en-GB) AppleWebKit/534.8+ (KHTML, like Gecko) Version/6.0.0.546 Mobile Safari/534.8+' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9780; es) AppleWebKit/534.8 (KHTML, like Gecko) Version/6.0.0.480 Mobile Safari/534.8' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9810; en-US) AppleWebKit/534.11 (KHTML, like Gecko) Version/7.0.0.583 Mobile Safari/534.11' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9860; es) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.0.0.576 Mobile Safari/534.11+' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9900; en-US) AppleWebKit/534.11 (KHTML, like Gecko) Version/7.1.0.523 Mobile Safari/534.11' => array('isMobile' => true, 'isTablet' => false), - 'BlackBerry8520/5.0.0.592 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/136' => array('isMobile' => true, 'isTablet' => false), - 'BlackBerry8520/5.0.0.1067 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/603' => array('isMobile' => true, 'isTablet' => false), - 'BlackBerry8520/5.0.0.1036 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/611' => array( 'isMobile' => true, 'isTablet' => false, 'version' => array('BlackBerry' => '5.0.0.1036', 'VendorID' => '611'), 'model' => 'BlackBerry8520' ), - 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9220; en) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.337 Mobile Safari/534.11+' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (PlayBook; U; RIM Tablet OS 2.1.0; en-US) AppleWebKit/536.2+ (KHTML, like Gecko) Version/7.2.1.0 Safari/536.2+' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (BB10; Touch) AppleWebKit/537.1+ (KHTML, like Gecko) Version/10.0.0.1337 Mobile Safari/537.1+' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (BB10; Touch) AppleWebKit/537.10+ (KHTML, like Gecko) Version/10.0.9.2372 Mobile Safari/537.10+' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (BB10; Touch) /537.10+ (KHTML, like Gecko) Version/10.0.9.2372 Mobile Safari/537.10+' => array( 'isMobile' => true, 'isTablet' => false, 'version' => array('BlackBerry' => '10.0.9.2372') ), - 'Mozilla/5.0 (Linux; U; Android 3.2.1; en-us; Transformer TF101 Build/HTK75) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '3.2.1', 'Webkit' => '534.13', 'Safari' => '4.0'), 'model' => 'Transformer TF101' ), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; de-de; A200 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.3', 'Webkit' => '534.30', 'Safari' => '4.0'), 'model' => 'A200' ), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; A500 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.3', 'Webkit' => '534.30', 'Safari' => '4.0'), 'model' => 'A500' ), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; A501 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.3', 'Webkit' => '534.30', 'Safari' => '4.0'), 'model' => 'A501' ), - 'Mozilla/5.0 (Linux; Android 4.1.1; Transformer Build/JRO03L) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.1', 'Webkit' => '535.19', 'Chrome' => '18.0.1025.166'), 'model' => 'Transformer' ), - 'Mozilla/5.0 (Linux; Android 4.1.1; ASUS Transformer Pad TF300T Build/JRO03C) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.1', 'Webkit' => '535.19', 'Chrome' => '18.0.1025.166'), 'model' => 'Transformer Pad TF300T' ), - 'Mozilla/5.0 (Linux; U; Android 4.1.2; fr-fr; Transformer Build/JZO54K; CyanogenMod-10) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.2', 'Webkit' => '534.30', 'Safari' => '4.0', 'Build' => 'JZO54K'), 'model' => 'Transformer' ), - 'Mozilla/5.0 (Linux; Android 4.1.2; B1-A71 Build/JZO54K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.2', 'Webkit' => '535.19', 'Chrome' => '18.0.1025.166'), 'model' => 'B1-A71' ), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Acer; Allegro)' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Windows Phone OS' => '7.5', 'Trident' => '5.0', 'IE' => '9.0'), 'model' => 'Allegro' ), - ), - - 'Broncho' => array( - - 'Mozilla/5.0 (Linux; U; Android 2.2; es-es; Broncho N701 Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), - - ), - - // @ref: http://www.bqreaders.com/gb/tablets-prices-sale.html - 'bq' => array( - 'Mozilla/5.0 (Linux; U; Android 4.0.4; es-es; bq Livingstone 2 Build/1.1.7 20121018-10:33) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; es-es; bq Edison Build/1.1.10-1015 20121230-18:00) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.0.3; Maxwell Lite Build/v1.0.0.ICS.maxwell.20120920) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; zh-tw; bq Maxwell Plus Build/1.0.0 20120913-10:39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - ), - - 'Captiva' => array( - 'Opera/9.80 (X11; Linux zvav; U; de) Presto/2.8.119 Version/11.10 Mozilla/5.0 (Linux; U; Android 4.1.1; de-de; CAPTIVA PAD 10.1 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( - 'isMobile' => true, 'isTablet' => true, - ), - ), - - 'Casio' => array( - 'Mozilla/5.0 (Linux; U; Android 2.3.3; en-us; C771 Build/C771M120) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - ), - - 'ChangJia' => array( - - 'Mozilla/5.0 (Linux; U; Android 4.0.4; pt-br; TPC97113 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; TPC7102 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true) - - ), - - // @ref: http://www.cobyusa.com/?p=pcat&pcat_id=3001 - 'Coby' => array( - 'Mozilla/5.0 (Linux; U; Android 2.2; en-us; MID7010 Build/FRF85B) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; MID7048 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; MID8042 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - ), - - 'Concorde' => array( - 'Mozilla/5.0 (Linux; U; Android 4.1.1; hu-hu; ConCorde Tab T10 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; hu-hu; ConCorde tab PLAY Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - ), - - 'Cresta' => array( - 'Mozilla/5.0 (Linux; U; Android 4.0.4; nl-nl; CRESTA.CTP888 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - ), - - 'Cube' => array( - 'Mozilla/5.0 (Linux; U; Android 4.0.3; ru-ru; CUBE U9GT 2 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - ), - - 'Danew' => array( - - 'Mozilla/5.0 (Linux; U; Android 4.0.3; es-es; Dslide 700 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( 'isMobile' => true, 'isTablet' => true, 'version' => array( 'Android' => '4.0.3', 'Build' => 'IML74K', 'Webkit' => '534.30', 'Safari' => '4.0' ), 'model' => 'Dslide 700' ) - - ), - - 'DanyTech' => array( - 'Mozilla/5.0 (Linux; Android 4.2.2; Genius Tab Q4 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), - ), - - 'Dell' => array( - 'Mozilla/5.0 (Linux; U; Android 1.6; en-gb; Dell Streak Build/Donut AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/ 525.20.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.7; hd-us; Dell Venue Build/GWK74; CyanogenMod-7.2.0) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; DELL; Venue Pro)' => array('isMobile' => true, 'isTablet' => false), - ), - - 'DPS' => array( - 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; DPS Dream 9 Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - ), - - 'ECS' => array( - 'Mozilla/5.0 (Linux; U; Android 4.0.4; it-it; TM105A Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.4', 'Build' => 'IMM76D', 'Webkit' => '534.30')) - ), - - 'Eboda' => array( - 'Mozilla/5.0 (Linux; U; Android 4.1.1; ro-ro; E-Boda Supreme Dual Core X190 Build/JRO03C) AppleWebKit/534.30 (KHTML like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.1', 'Webkit' => '534.30', 'Safari' => '4.0')), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; ro-ro; E-Boda Essential A160 Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.0.3; E-Boda Supreme X80 Dual Core Build/ICS.g12refM806A1YBD.20120925) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; ro-ro; E-boda essential smile Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - ), - - 'Fly' => array( - 'Mozilla/5.0 (Linux; U; Android 4.0.4; ru-ru; Fly IQ440; Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.6; ru-ru; FLY IQ256 Build/GRK39F) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - ), - - 'Fujitsu' => array( - - 'Mozilla/5.0 (Linux; U; Android 4.0.3; ja-jp; F-10D Build/V21R48A) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.3', 'Build' => 'V21R48A', 'Webkit' => '534.30', 'Safari' => '4.0') ), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; ru-ru; M532 Build/IML74K) AppleWebKit/534.30 (KHTML like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.3', 'Build' => 'IML74K', 'Webkit' => '534.30', 'Safari' => '4.0') ), - - ), - - 'FX2' => array( - - 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; FX2 PAD7 RK Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - - ), - - // @ref: http://www.galapad.net/product.html - 'Galapad' => array( - - 'Mozilla/5.0 (Linux; U; Android 4.1.1; zh-tw; G1 Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.1', 'Webkit' => '534.30', 'Safari' => '4.0', 'Build' => 'JRO03C') ), - - ), - - 'GoClever' => array( - 'Mozilla/5.0 (Linux; U; Android 4.0.3; el-gr; GOCLEVER TAB A103 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 2.3.4; zh-tw; A7GOCLEVER Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.0.4; GOCLEVER TAB A104 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; cs-cz; GOCLEVER TAB A93.2 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; sk-sk; GOCLEVER TAB A971 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; lv-lv; GOCLEVER TAB A972BK Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; fr-fr; GOCLEVER TAB A104.2 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; pt-pt; GOCLEVER TAB T76 Build/MID) AppleWebKit/534.30 (KHTML like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - ), - - 'Google' => array( - 'Mozilla/5.0 (Linux; U; Android 2.2; en-us; Nexus One Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.2.2; Nexus 4 Build/JDQ39) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.40 Mobile Safari/537.31 OPR/14.0.1074.54070' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Android' => '4.2.2', 'Build' => 'JDQ39', 'Webkit' => '537.31', 'Opera' => '14.0.1074.54070') ), - 'Mozilla/5.0 (Linux; Android 4.2.2; Nexus 4 Build/JDQ39) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Android' => '4.2.2', 'Chrome' => '26.0.1410.58')), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; Google Nexus 4 - 4.1.1 - API 16 - 768x1280 Build/JRO03S) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; Google Galaxy Nexus - 4.1.1 - API 16 - 720x1280 Build/JRO03S) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.2; Nexus 7 Build/JOP40C) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.1.2; Nexus 7 Build/JZ054K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.2', 'Chrome' => '18.0.1025.166') ), - 'Mozilla/5.0 (Linux; U; Android 4.1.2; cs-cz; Nexus S Build/JZO54K; CyanogenMod-10.0.0) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.3; Nexus 10 Build/JWR66Y) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android; en_us; Nexus 7 Build/) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 NetFrontLifeBrowser/2.3 Mobile (Dragonfruit)' => array('isMobile' => true, 'isTablet' => true), - ), - - 'GU' => array( - - 'Mozilla/5.0 (Linux; U; Android 4.0.4; vi-vn; TX-A1301 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.4', 'Build' => 'IMM76D', 'Webkit' => '534.30', 'Safari' => '4.0')), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; da-dk; Q702 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.3', 'Build' => 'IML74K', 'Webkit' => '534.30', 'Safari' => '4.0')), - - ), - - 'HCL' => array( - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; U1 Build/HCL ME Tablet U1) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; U1 Build/HCL ME Tablet U1) AppleWebKit/534.30 (KHTML like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.1.2; Connect-3G-2.0 Build/HCL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 2.3.3; pt-br; X1 Build/HCL ME Tablet X1) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), - ), - - 'HP' => array( - 'Mozilla/5.0 (hp-tablet; Linux; hpwOS/3.0.5; U; en-GB) AppleWebKit/534.6 (KHTML, like Gecko) wOSBrowser/234.83 Safari/534.6 TouchPad/1.0' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-gb; HP Slate 7 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.1.1; HP Slate 7 Build/JRO03H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; HP 8 Build/1.0.7_WW-FIR-13) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - ), - - 'HTC' => array( - 'Mozilla/5.0 (X11; Linux x86_64; Z520m; en-ca) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.34 Safari/534.24' => array('isMobile' => true, 'isTablet' => false), - 'HTC_Touch_HD_T8282 Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.11)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 1.5; en-us; ADR6200 Build/CUPCAKE) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.1; xx-xx; Desire_A8181 Build/ERE27) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.1-update1; de-de; HTC Desire 1.19.161.5 Build/ERE27) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.1-update1; en-gb; HTC Desire Build/ERE27) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.2; fr-fr; HTC Desire Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.2; en-dk; Desire_A8181 Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.2; xx-xx; 001HT Build/FRF91) AppleWebKit/525.10+ (KHTML, like Gecko) Version/3.0.4 Mobile Safari/523.12.2' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.2; xx-xx; HTCA8180/1.0 Android/2.2 release/06.23.2010 Browser/WAP 2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.2.2; de-at; HTC Desire Build/FRG83G) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.2.2; en-sk; Desire_A8181 Build/FRG83G) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3; xx-xx; HTC/DesireS/1.07.163.1 Build/GRH78C) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.3; en-lv; HTC_DesireZ_A7272 Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; ADR6300 Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.5; en-gb; HTC/DesireS/2.10.161.3 Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.5; ru-ru; HTC_DesireS_S510e Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.5; en-us; Inspire 4G Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.5; de-de; HTC Explorer A310e Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.5; en-gb; HTC_ChaCha_A810e Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.5; nl-nl; HTC_DesireHD_A9191 Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.5; ru-ru; HTC Desire S Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.3; en-au; HTC Desire Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.5; de-de; HTC_DesireHD Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.5; ru-ua; HTC_WildfireS_A510e Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.7; en-us; HTC Vision Build/GRI40; ILWT-CM7) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0; xx-xx; HTC_GOF_U/1.05.161.1 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; hu-hu; HTC Sensation Z710e Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; pl-pl; EVO3D_X515m Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; ru-ru; HTC_One_S Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; ru-ru; HTC_One_V Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; zh-cn; HTC_A320e Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; zh-tw; HTC Desire V Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.0.3; PG86100 Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-nl; SensationXE_Beats_Z715e Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; ADR6425LVW 4G Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.0.3; HTC One V Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; cs-ee; Sensation_Z710e Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; HTC Evo 4G Build/MIUI) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.0.4; Desire HD Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-my; HTC_One_X Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; it-it; IncredibleS_S710e Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; fr-fr; HTC_Desire_S Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One X Build/JRO03C) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.1.1; HTC Butterfly Build/JRO03C) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.1.1; EVO Build/JRO03C) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.169 Mobile Safari/537.22' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.1.2; HTCSensation Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC 7 Mozart T8698; QSD8x50)' => array( - 'isMobile' => true, 'isTablet' => false, 'version' => array('IE' => '9.0', 'Windows Phone OS' => '7.5', 'Trident' => '5.0'), 'model' => '7 Mozart T8698', - ), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 HTC MOZART)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 Mondrian T8788)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 Mozart T8698)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 Mozart)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 Mozart; Orange)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 Pro T7576)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 Pro)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 Schubert T9292)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 Surround)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 Trophy T8686)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 Trophy)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Eternity)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Gold)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; HD2 LEO)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; HD2)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; HD7 T9292)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; HD7)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; iPad 3)' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; LEO)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Mazaa)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Mondrian)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Mozart T8698)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Mozart)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; mwp6985)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; PC40100)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; PC40200)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; PD67100)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; PI39100)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; PI86100)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Radar 4G)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Radar C110e)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Radar C110e; 1.08.164.02)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Radar C110e; 2.05.164.01)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Radar C110e; 2.05.168.02)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Radar)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Radar; Orange)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Schuber)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Schubert T9292)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Schubert)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Spark)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Surround)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; T7575)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; T8697)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; T8788)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; T9295)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; T9296)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; TITAN X310e)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Titan)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Torphy T8686)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; X310e)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC_blocked; T8788)' => array( - 'isMobile' => true, 'isTablet' => false, 'version' => array('IE' => '9.0', 'Windows Phone OS' => '7.5', 'Trident' => '5.0'), 'model' => 'T8788', - ), - - ), - - 'Hudl' => array( - 'Mozilla/5.0 (Linux; Android 4.2.2; Hudl HT7S3 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.82 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), - ), - - 'Huwaei' => array( - 'Mozilla/5.0 (Linux; U; Android 2.1-update1; bg-bg; Ideos S7 Build/ERE27) AppleWebKit/525.10+ (KHTML, like Gecko) Version/3.0.4 Mobile Safari/523.12.2' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 2.1; en-us; Ideos S7 Build/ERE27) AppleWebKit/525.10+ (KHTML, like Gecko) Version/3.0.4 Mobile Safari/523.12.2' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 2.3.6; lt-lt; U8660 Build/HuaweiU8660) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.7; ru-ru; HUAWEI-U8850 Build/HuaweiU8850) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 3.2; pl-pl; MediaPad Build/HuaweiMediaPad) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 3.2; nl-nl; HUAWEI MediaPad Build/HuaweiMediaPad) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true), - 'HUAWEI_T8951_TD/1.0 Android/4.0.4 (Linux; U; Android 4.0.4; zh-cn) Release/05.31.2012 Browser/WAP2.0 (AppleWebKit/534.30) Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.1.2; ar-eg; MediaPad 7 Youth Build/HuaweiMediaPad) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.1.2; zh-cn; HW-HUAWEI_C8815/C8815V100R001C541B135; 540*960; CTC/2.0) AppleWebKit/534.30 (KHTML, like Gecko) Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; zh-cn; HW-HUAWEI_C8813D/C8813DV100R001C92B172; 480*854; CTC/2.0) AppleWebKit/534.30 (KHTML, like Gecko) Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; zh-cn; HW-HUAWEI_Y300C/Y300CV100R001C92B168; 480*800; CTC/2.0) AppleWebKit/534.30 (KHTML, like Gecko) Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false) - ), - - 'Iconbit' => array( - 'Mozilla/5.0 (Linux; Android 4.1.1; NT-3702M Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Safari/537.36 OPR/16.0.1212.65583' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; ru-ru; NetTAB SPACE II Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - ), - - 'iJoy' => array('Mozilla/5.0 (Linux; U; Android 4.1.1; fr-fr; Tablet Planet II-v3 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true)), - - 'Intenso' => array( - 'Mozilla/5.0 (Linux; U; Android 4.1.1.;de-de; INM8002KP Build/JR003H) AppleWebKit/534.30 (KHTML, like Gecko)Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.1.', 'Webkit' => '534.30', 'Safari' => '4.0') ), - ), - - 'IRU' => array( - - 'Mozilla/5.0 (Linux; U; Android 4.1.1; ru-ru; M702pro Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - - ), - - 'JXD' => array('Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; F3000 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true) - ), - - 'Karbonn' => array( - 'Mozilla/5.0 (Linux; Android 4.1.1; ST10 Build/JRO03C) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), - ), - - 'Kobo' => array( - 'Mozilla/5.0 (Linux; U; Android 2.0; en-us;) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 (Kobo Touch)' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '2.0', 'Webkit' => '533.1', 'Safari' => '4.0') ), - ), - - 'Lenovo' => array( - - 'Mozilla/5.0 (Linux; U; Android 4.0.4; es-es; IdeaTab_A1107 Build/MR1) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.0.3; IdeaTab A2107A-H Build/IML74K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.90 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-au; ThinkPad Tablet Build/ThinkPadTablet_A400_03) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'UCWEB/2.0 (Linux; U; Opera Mini/7.1.32052/30.3697; en-US; IdeaTabA1000-G) U2/1.0.0 UCBrowser/9.2.0.419 Mobile' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.1.2; IdeaTabA1000-F Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.2.1; Lenovo A3000-H Build/JOP40D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.117 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.2.2; IdeaTab A3000-F Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Safari/537.360' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.1; zh-cn; Lenovo-A3000-H/S100) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.1 Mobile Safari/534.300' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.2.2; es-us; IdeaTab A3000-F Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.0.3; IdeaTab A2107A-H Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; de-de; IdeaTab A2107A-H Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; es-es; IdeaTabA2109A Build/JRO03R) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; nl-nl; IdeaTabA2109A Build/JRO03R) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; es-es; IdeaTab_A1107 Build/MR1) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.300' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.2.2; IdeaTab S6000-H Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.138 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-gb; IdeaTab S6000-F Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.2.2; Lenovo B8000-F Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.2.2;it-it; Lenovo B8000-F/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.2.2 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.2.2; it-it; Lenovo B6000-F/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.2.2 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.2.2; Lenovo B6000-F Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), - - ), - - 'LG' => array( - 'Mozilla/5.0 (Linux; U; Android 2.2; en-us; LG-P509 Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 MMS/LG-Android-MMS-V1.0/1.2' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.2.2; pt-br; LG-P350f Build/FRG83G) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 MMS/LG-Android-MMS-V1.0/1.2' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.3; en-us; LG-P500 Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 MMS/LG-Android-MMS-V1.0/1.2' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.3; en-us; LS670 Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.4; ru-ru; LG-E510 Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 MMS/LG-Android-MMS-V1.0/1.2' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; VS910 4G Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; nl-nl; LG-P700 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; ko-kr; LG-L160L Build/IML74K) AppleWebkit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; LG-F160S Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; nl-nl; LG-E610v/V10f Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; LG-E612 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.1.2; LG-F180K Build/JZO54K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.2.2; LG-V500 Build/JDQ39B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; LG-LW770 Build/IMM76I) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.4.2; LG-V510 Build/KOT49H.L004) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), - - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; LG; LG E-900)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; LG; LG-C900)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; LG; LG-C900k)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; LG; LG-E900)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; LG; LG-E900; Orange)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; LG; LG-E900h)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; LG; LG-Optimus 7)' => array('isMobile' => true, 'isTablet' => false), - // @ref: http://ja.wikipedia.org/wiki/L-06C - 'Mozilla/5.0 (Linux; U; Android 3.0.1; ja-jp; L-06C Build/HRI66) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 3.0; en-us; LG-V900 Build/HRI39) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true), - ), - - 'Megafon' => array( - - 'Mozilla/5.0 (Linux; U; Android 2.3.5; ru-ru; MegaFon V9 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.1.1; MT7A Build/JRO03C) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Safari/537.31' => array('isMobile' => true, 'isTablet' => true), - - ), - - 'MediaTek' => array( - 'Mozilla/5.0 (Linux; U; Android 4.1.1; fr-fr; MT8377 Build/JRO03C) AppleWebKit/534.30 (KHTML like Gecko) Version/4.0 Safari/534.30/4.05d.1002.m7' => array('isMobile' => true, 'isTablet' => true), - ), - - 'Micromax' => array( - - 'Mozilla/5.0 (Linux; Android 4.1.1; Micromax A110 Build/JRO03C) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.169 Mobile Safari/537.22' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Android' => '4.1.1', 'Build' => 'JRO03C', 'Webkit' => '537.22', 'Chrome' => '25.0.1364.169') ), - 'Mozilla/5.0 (Linux; U; Android 4.0; xx-xx; Micromax P250(Funbook) Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Webkit' => '534.30', 'Android' => '4.0', 'Build' => 'IMM76D', 'Safari' => '4.0') ), - - ), - - 'Microsoft' => array( - - // Surface tablet - 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0; Touch; .NET4.0E; .NET4.0C; Tablet PC 2.0)' => array('isMobile' => true, 'isTablet' => true, 'version' => array('IE' => '10.0', 'Windows NT' => '6.2', 'Trident' => '6.0') ), - 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0)' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0; Touch)' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0; Touch; ARMBJS)' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident/6.0; Touch; MASMJS)' => array('isMobile' => false, 'isTablet' => false), - - // Thanks to Jonathan Donzallaz! - // Firefox (nightly) in metro mode on Dell XPS 12 - 'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:25.0) Gecko/20130626 Firefox/25.0' => array('isMobile' => false, 'isTablet' => false), - // Firefox in desktop mode on Dell XPS 12 - 'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0' => array('isMobile' => false, 'isTablet' => false), - // IE10 in metro mode on Dell XPS 12 - 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident/6.0; MDDCJS)' => array('isMobile' => false, 'isTablet' => false), - // IE10 in desktop mode on Dell XPS 12 - 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0; MDDCJS)' => array('isMobile' => false, 'isTablet' => false), - // Opera on Dell XPS 12 - 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.52 Safari/537.36 OPR/15.0.1147.130' => array('isMobile' => false, 'isTablet' => false), - // Chrome on Dell XPS 12 - 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36' => array('isMobile' => false, 'isTablet' => false), - // Google search app from Windows Store - 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident/6.0; Touch; MDDCJS; WebView/1.0)' => array('isMobile' => false, 'isTablet' => false), - ), - - 'Modecom' => array( - 'Mozilla/5.0 (Linux; U; Android 4.2.2; pl-pl; FreeTAB 1014 IPS X4+ Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - ), - - 'Motorola' => array( - 'MOT-W510/08.11.05R MIB/BER2.2 Profile/MIDP-2.0 Configuration/CLDC-1.1 EGE/1.0 UP.Link/6.3.0.0.0' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.2.2; zh-cn; ME722 Build/MLS2GC_2.6.0) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; DROIDX Build/4.5.1_57_DX8-51) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.5; en-us; MB855 Build/4.5.1A-1_SUN-254_13) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.5; es-us; MB526 Build/4.5.2-51_DFL-50) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.6; en-ca; MB860 Build/4.5.2A-51_OLL-17.8) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.7; en-us; MOT-XT535 Build/V1.540) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.7; ko-kr; A853 Build/SHOLS_U2_05.26.3; CyanogenMod-7.1.2) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 3.0; en-us; Xoom Build/HRI39) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 3.1; en-us; Xoom Build/HMJ25) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; DROID RAZR 4G Build/6.7.2-180_DHD-16_M4-31) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; Xoom Build/IMM76L) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; pt-br; XT687 Build/V2.27D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Android' => '4.0.4', 'Webkit' => '534.30', 'Safari' => '4.0'), 'model' => 'XT687' ), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; es-es; MOT-XT910 Build/6.7.2-180_SPU-19-TA-11.6) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.1.2; XT910 Build/9.8.2O-124_SPUL-17) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.1.2; XT915 Build/2_32A_2031) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.1.2; XT919 Build/2_290_2017) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.64 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.1.2; XT925 Build/9.8.2Q-50-XT925_VQLM-20) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.90 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.1.2; XT907 Build/9.8.1Q-66) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.90 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.1.2; XT901 Build/9.8.2Q-50_SLS-13) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.1.2; DROID BIONIC Build/9.8.2O-72_VZW-22) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - ), - - // @ref: https://www.nabitablet.com/ - 'Nabi' => array( - 'Mozilla/5.0 (Linux; U; Android 2.2.1; en-us; NABI-A Build/MASTER) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), - ), - - 'NEC' => array( - // @ref: http://www.n-keitai.com/n-08d/?from=mediasnet - // @ref: http://devlog.dcm-gate.com/2012/03/medias-tab-n-06duseragnet.html - // @ref: http://keitaiall.jp/N-08D.html aka MEDIAS TAB - 'Mozilla/5.0 (Linux; U; Android 4.0.4; ja-jp; N-08D Build/A5001911) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android AAA; BBB; N-06D Build/CCC) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), - - ), - - 'Nook' => array( - - 'Mozilla/5.0 (Linux; U; Android 2.2.1; en-us; NOOK BNRV200 Build/ERD79 1.4.3) Apple WebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array( 'isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '2.2.1', 'Webkit' => '533.1', 'Safari' => '4.0') ), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; NOOK BNTV400 Build/ICS) AppleWebKit/534.30 (KHTML like Gecko) Version/4.0 Safari/534.30' => array( 'isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.4', 'Build' => 'ICS', 'Webkit' => '534.30', 'Safari' => '4.0') ), - 'Mozilla/5.0 (Linux; Android 4.0.4; BNTV600 Build/IMM76L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Safari/537.36 Hughes-PFB/CID5391275.AID1376709964' => array( 'isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.4', 'Build' => 'IMM76L', 'Webkit' => '537.36', 'Chrome' => '28.0.1500.94') ), - - ), - - 'Nokia' => array( - 'Nokia200/2.0 (12.04) Profile/MIDP-2.1 Configuration/CLDC-1.1 UCWEB/2.0 (Java; U; MIDP-2.0; en-US; nokia200) U2/1.0.0 UCBrowser/8.9.0.251 U2/1.0.0 Mobile UNTRUSTED/1.0' => array('isMobile' => true, 'isTablet' => false), - 'Nokia6303iclassic/5.0 (06.61) Profile/MIDP-2.1 Configuration/CLDC-1.1 Mozilla/5.0 AppleWebKit/420+ (KHTML, like Gecko) Safari/420+' => array('isMobile' => true, 'isTablet' => false), - 'nokian73-1/UC Browser7.8.0.95/69/400 UNTRUSTED/1.0' => array('isMobile' => true, 'isTablet' => false), - 'Nokia2760/2.0 (06.82) Profile/MIDP-2.1 Configuration/CLDC-1.1' => array('isMobile' => true, 'isTablet' => false), - 'Nokia3650/1.0 SymbianOS/6.1 Series60/1.2 Profile/MIDP-1.0 Configuration/CLDC-1.0' => array('isMobile' => true, 'isTablet' => false), - 'NokiaN70-1/5.0737.3.0.1 Series60/2.8 Profile/MIDP-2.0 Configuration/CLDC-1.1/UC Browser7.8.0.95/27/352' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (S60V3; U; ru; NokiaN73) AppleWebKit/530.13 (KHTML, like Gecko) UCBrowser/8.6.0.199/28/444/UCWEB Mobile' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (S60V3; U; ru; NokiaC5-00.2)/UC Browser8.5.0.183/28/444/UCWEB Mobile' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (S60V3; U; ru; NokiaC5-00.2) AppleWebKit/530.13 (KHTML, like Gecko) UCBrowser/8.7.0.218/28/352/UCWEB Mobile' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Series40; NokiaC3-00/08.63; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/2.2.0.0.33' => array('isMobile' => true, 'isTablet' => false), - 'Opera/9.80 (Series 60; Opera Mini/7.0.31380/28.2725; U; es) Presto/2.8.119 Version/11.10' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Opera Mini' => '7.0.31380', 'Presto' => '2.8.119')), - 'Mozilla/5.0 (Symbian/3; Series60/5.2 NokiaC7-00/025.007; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.37 Mobile Safari/533.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Symbian/3; Series60/5.2 NokiaX7-00/022.014; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.37 Mobile Safari/533.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Symbian/3; Series60/5.3 NokiaE6-00/111.140.0058; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/535.1 (KHTML, like Gecko) NokiaBrowser/8.3.1.4 Mobile Safari/535.1 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Symbian/3; Series60/5.3 NokiaC6-01/111.040.1511; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/535.1 (KHTML, like Gecko) NokiaBrowser/8.3.1.4 Mobile Safari/535.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Symbian/3; Series60/5.3 NokiaC6-01; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.4.2.6 Mobile Safari/533.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Symbian/3; Series60/5.3 Nokia700/111.030.0609; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.4.2.6 Mobile Safari/533.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Symbian/3; Series60/5.3 Nokia700/111.020.0308; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.4.1.14 Mobile Safari/533.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Symbian/3; Series60/5.3 NokiaN8-00/111.040.1511; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/535.1 (KHTML, like Gecko) NokiaBrowser/8.3.1.4 Mobile Safari/535.1 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Symbian/3; Series60/5.3 Nokia701/111.030.0609; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.4.2.6 Mobile Safari/533.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 Nokia6120c/3.83; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 Nokia6120ci/7.02; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 Nokia6120c/7.10; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaE66-1/510.21.009; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaE71-1/110.07.127; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaN95-3/20.2.011 Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaE51-1/200.34.36; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaE63-1/500.21.009; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaN82/10.0.046; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.3; Series60/3.2 NokiaE52-1/052.003; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 BrowserNG/7.2.6.2' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.3; Series60/3.2 NokiaE52-1/@version@; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.26 Mobile Safari/533.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.3; Series60/3.2 NokiaC5-00/031.022; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 BrowserNG/7.2.3.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.3; Series60/3.2 NokiaC5-00.2/081.003; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.32 Mobile Safari/533.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.3; U; Series60/3.2 NokiaN79-1/32.001; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.3; U; Series60/3.2 Nokia6220c-1/06.101; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.3; Series60/3.2 NokiaC5-00.2/071.003; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.26 Mobile Safari/533.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.3; Series60/3.2 NokiaE72-1/081.003; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.32 Mobile Safari/533.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.3; Series60/3.2 NokiaC5-00/061.005; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 BrowserNG/7.2.6.2 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 NokiaX6-00/40.0.002; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.33 Mobile Safari/533.4 3gpp-gb' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 Nokia5800d-1/60.0.003; Profile/MIDP-2.1 Configuration/CLDC-1.1 AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.33 Mobile Safari/533.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 NokiaC5-03/12.0.023; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 BrowserNG/7.2.6.9 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 Nokia5228/40.1.003; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 BrowserNG/7.2.7.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 Nokia5230/51.0.002; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.33 Mobile Safari/533.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 Nokia5530c-2/32.0.007; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 BrowserNG/7.2.6.9 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 NokiaN97-1/21.0.045; Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/525 (KHTML, like Gecko) BrowserNG/7.1.4' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 NokiaN97-4/30.0.004; Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.28 3gpp-gba' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Symbian' => '9.4', 'Webkit' => '533.4', 'NokiaBrowser' => '7.3.1.28'), 'model' => 'NokiaN97-4' ), - - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; 7 Mozart T8698)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; 710)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; 800)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; 800C)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; 800C; Orange)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; 900)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; HD7 T9292)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; LG E-900)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 610)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 710)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 710; Orange)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 710; T-Mobile)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 710; Vodafone)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 800)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 800) UP.Link/5.1.2.6' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 800; Orange)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 800; SFR)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 800; T-Mobile)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 800; vodafone)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; Lumia 800c)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 900)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; Lumia 920)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920)' => array('isMobile' => true, 'isTablet' => false, 'version' => array('IE' => '10.0', 'Windows Phone OS' => '8.0', 'Trident' => '6.0'), 'model' => 'Lumia 920' ), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; lumia800)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Nokia 610)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Nokia 710)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Nokia 800)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Nokia 800C)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Nokia 900)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; Nokia)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; SGH-i917)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; TITAN X310e)' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Windows Phone OS' => '7.5', 'Trident' => '5.0'), 'model' => 'TITAN X310e' ), - ), - - 'Odys' => array( - 'Mozilla/5.0 (Linux; U; Android 4.0.3; de-de; LOOX Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; de-de; LOOX Plus Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.1.X; de-de; XENO10 Build/ODYS XENO 10) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 2.2.2; de-de; ODYS Space Build/I700T_P7_T04_TSCL_FT_R_0_03_1010_110623) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), - ), - - 'OverMax' => array( - 'OV-SteelCore(B) Mozilla/5.0 (iPad; CPU OS 5_0_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A405 Safari/7534.48.3' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; pl-pl; OV-SteelCore Build/ICS.g08refem611.20121010) AppleWebKit/534.30 (KHTML like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - ), - - 'YONESTablet' => array( - 'Mozilla/5.0 (Linux; U; Android 4.0.4; pl-pl; BC1077 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - ), - - // @todo: Research http://www.pantech.com/ - 'Pantech' => array( - 'PANTECH-C790/JAUS08312009 Browser/Obigo/Q05A Profile/MIDP-2.0 Configuration/CLDC-1.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.2.1; ko-kr; SKY IM-A600S Build/FRG83) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.3; en-us; ADR8995 4G Build/GRI40) AppleWebKit/533.1 (KHTML like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 3.2.1; en-us; PantechP4100 Build/HTK75) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true), - ), - - 'Philips' => array( - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; W732 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - - ), - - 'PointOfView' => array( - 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; POV_TAB-PROTAB30-IPS10 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - ), - - 'Prestigio' => array( - 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-gb; PMP5297C_QUAD Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; sk-sk; PMP7100D3G Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.4', 'Build' => 'IMM76D', 'Webkit' => '534.30', 'Safari' => '4.0'), 'model' => 'PMP7100D3G' ), - 'Mozilla/5.0 (Linux; U; Android 4.1.2; sk-sk; PMP7280C3G Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 MobilSafari/534.30' => array('isMobile' => true, 'isTablet' => true), - ), - - 'PROSCAN' => array( - 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; PLT8088 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.1', 'Build' => 'JRO03H', 'Webkit' => '534.30', 'Safari' => '4.0') ), - ), - - 'PyleAudio' => array( - 'Mozilla/5.0 (Linux; Android 4.0.4; PTBL92BC Build/IMM76D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.4', 'Build' => 'IMM76D', 'Webkit' => '537.36', 'Chrome' => '31.0.1650.59')), - - ), - - 'RockChip' => array( - 'Mozilla/5.0 (Linux; U; Android 2.2.1; hu-hu; RK2818, Build/MASTER) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android Android 2.1-RK2818-1.0.0; zh-cn; MD701 Build/ECLAIR) AppleWebKit/530.17 (KHTML like Gecko) Version/4.0 Mobile Safari/530.17' => array('isMobile' => true, 'isTablet' => true), - ), - - 'RossMoor' => array( - 'Mozilla/5.0 (Linux; U; Android 4.2.1; ru-ru; RM-790 Build/JOP40D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true) - - ), - - // @ref: http://www.qmobile.com.pk/complete_range.php# - 'QMobile' => array( - 'Mozilla/5.0 (Linux; U; Android 2.3.6; en-us; A2 Build/GRK39F) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - ), - - 'Samsung' => array( - 'MQQBrowser/4.0/Mozilla/5.0 (Linux; U; Android 3.2; zh-cn; GT-P6800 Build/HTJ85B) AppleWebKit/533.1 (KHTML, like Gecko) Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true, 'version' => array('MQQBrowser' => '4.0')), - 'SAMSUNG-SGH-P250-ORANGE/P250BVHH8 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0' => array('isMobile' => true, 'isTablet' => false), - 'SAMSUNG-GT-B2710/B271MCXKF1 SHP/VPP/R5 Dolfin/2.0 QTV/5.3 SMM-MMS/1.2.0 profile/MIDP-2.1 configuration/CLDC-1.1 OPN-B' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Dolfin' => '2.0') ), - 'SAMSUNG-SGH-D900i/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0' => array('isMobile' => true, 'isTablet' => false), - 'SAMSUNG-GT-S5233T/S5233TXEJE3 SHP/VPP/R5 Jasmine/0.8 Qtv5.3 SMM-MMS/1.2.0 profile/MIDP-2.1 configuration/CLDC-1.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S5380D/S5380FXXKL3; U; Bada/2.0; ru-ru) AppleWebKit/534.20 (KHTML, like Gecko) Dolfin/3.0 Mobile HVGA SMM-MMS/1.2.0 OPN-B' => array('isMobile' => true, 'isTablet' => false), - 'SAMSUNG-GT-C3312/1.0 NetFront/4.2 Profile/MIDP-2.0 Configuration/CLDC-1.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 1.5; de-de; Galaxy Build/CUPCAKE) AppleWebKit/528.5 (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1' => array('isMobile' => true, 'isTablet' => false), - 'SAMSUNG-GT-S3650/S3650XEII3 SHP/VPP/R5 Jasmine/1.0 Nextreaming SMM-MMS/1.2.0 profile/MIDP-2.1 configuration/CLDC-1.1' => array('isMobile' => true, 'isTablet' => false), - 'JUC (Linux; U; 2.3.6; zh-cn; GT-S5360; 240*320) UCWEB7.9.0.94/140/352' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S5250/S5250XEKJ3; U; Bada/1.0; ru-ru) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.0 Mobile WQVGA SMM-MMS/1.2.0 NexPlayer/3.0 profile/MIDP-2.1 configuration/CLDC-1.1 OPN-B' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; SAMSUNG; SGH-i917)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S8530/S8530XXJKA; U; Bada/1.2; cs-cz) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.2 Mobile WVGA SMM-MMS/1.2.0 OPN-B' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 1.6; ru-ru; Galaxy Build/Donut) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.1-update1; ru-ru; GT-I5500 Build/ERE27) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.2; en-us; GALAXY_Tab Build/MASTER) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 2.2; ja-jp; SC-01C Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), - // @about FROYO: http://gizmodo.com/5543853/what-is-froyo - 'Mozilla/5.0 (Linux; U; Android 2.2; fr-fr; GT-I9000 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.2.1; zh-cn; SCH-i909 Build/FROYO) UC AppleWebKit/534.31 (KHTML, like Gecko) Mobile Safari/534.31' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.3; ja-jp; SC-01C Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 2.3.3; en-gb; GT-P1000 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 2.3.3; el-gr; GT-I9001 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.3; en-ca; SGH-I896 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.4; es-us; GT-S5660L Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 MicroMessenger/4.5.1.261' => array('isMobile' => true, 'isTablet' => false, 'version' => array('MicroMessenger' => '4.5.1.261')), - 'Mozilla/5.0 (Linux; U; Android 2.3.6; en-us; GT-S5660 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.6; ru-ru; GT-S6102 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.6; pt-br; GT-S5367 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.6; fr-fr; GT-S5839i Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.6; en-gb; GT-S7500 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.6; en-gb; GT-S5830 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.6; es-us; GT-B5510L Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.6; pl-pl; GT-I9001-ORANGE/I9001BVKPC Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.6; en-us; GT-I8150 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.6; nl-nl; GT-I9070 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.6; en-gb; GT-S5360 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.6; es-us; GT-S6102B Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.6; en-us; GT-S5830i Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.6; ru-ru; GT-I8160 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.6; ru-ru; GT-S6802 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.7; ru-ru; GT-S5830 Build/GRWK74; LeWa_ROM_Cooper_12.09.21) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.6; ru-ru; GT-N7000 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 3.0.1; en-us; GT-P7100 Build/HRI83) AppleWebkit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 3.2; he-il; GT-P7300 Build/HTJ85B) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 3.2; en-gb; GT-P6200 Build/HTJ85B) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-gb; GT-I9100 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; GT-I9100G Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; nl-nl; GT-P5100 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android-4.0.3; en-us; Galaxy Nexus Build/IML74K) AppleWebKit/535.7 (KHTML, like Gecko) CrMo/16.0.912.75 Mobile Safari/535.7' => array( 'isMobile' => true, 'isTablet' => false, 'version' => array('Chrome' => '16.0.912.75') ), - 'Mozilla/5.0 (Linux; Android 4.0.3; SGH-T989 Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Chrome' => '18.0.1025.166') ), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; ru-ru; GT-P5100 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.0.4; GT-I9300 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.0.4; SPH-D710 Build/IMM76I) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; zh-cn; GT-I9300 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-gb; GT-I9300-ORANGE/I9300BVBLG2 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; th-th; GT-I9300T Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; ru-ru; GT-I9100 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us ; GT-I9100 Build/IMM76D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1/UCBrowser/8.4.1.204/145/355' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-gb; GT-N7000 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; th-th; GT-P6800 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.0.4; SAMSUNG-SGH-I747 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; es-es; GT-P5110 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.0.4; GT-P5110 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; zh-cn; SAMSUNG-GT-S7568_TD/1.0 Android/4.0.4 Release/07.15.2012 Browser/AppleWebKit534.30 Build/IMM76D) ApplelWebkit/534.30 (KHTML,like Gecko) Version/4.0 Mobile Safari/534.30' => array( 'isMobile' => true, 'isTablet' => false, 'version' => array('Android' => '4.0.4') ), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; ru-ru; GT-P3100 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; tr-tr; GT-P3105 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-ca; GT-N8010 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; ru-ru; GT-S7562 Build/IMM76I) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; GT-N7100 Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.1.2; GT-N7100 Build/JZO54K) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.123 Mobile Safari/537.22 OPR/14.0.1025.52315' => array( 'isMobile' => true, 'isTablet' => false, 'version' => array( 'Build' => 'JZO54K', 'Webkit' => '537.22', 'Opera' => '14.0.1025.52315' ) ), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; zh-hk; GT-N7105 Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; ru-ru; GT-N8000 Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.1.1; SGH-i747M Build/JRO03L) AppleWebKit/535.19(KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-gb; Galaxy Nexus - 4.1.1 - with Google Apps - API 16 - 720x1280 Build/JRO03S) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.1.2; GT-I8262 Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.1.2; it-it; Galaxy Nexus Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; SGH-I777 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; GT-S7710 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; GT-I9082 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; SGH-T999L Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.2.2; GT-P5210 Build/JDQ39) AppleWebKit/537.36 (KHTML, Like Gecko) Chrome/27.0.1453.90 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.2.2; en-us; SAMSUNG GT-I9200 Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Version/1.0 Chrome/18.0.1025.308 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.2.2; zh-cn; SCH-I959 Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Version/1.0 Chrome/18.0.1025.308 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.2.2; nl-nl; SM-T310 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.3; en-us; SAMSUNG SM-P600 Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), - - 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-gb; GT-N5100 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.4.2; en-us; SAMSUNG SM-T530NU Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), - - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; CETUS)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; Focus I917 By TC)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; Focus i917)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; FOCUS S)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; GT-I8350)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; GT-i8700)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; GT-S7530)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; Hljchm\'s Wp)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; I917)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; OMNIA 7)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; OMNIA7 By MWP_HS)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; OMNIA7)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; OMNIA7; Orange)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; SGH-i677)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; SGH-i917)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; SGH-i917.)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; SGH-i917R)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; SGH-i937)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; SMG-917R)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG_blocked_blocked_blocked; OMNIA7; Orange)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG_blocked_blocked_blocked_blocked; OMNIA7; Orange)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SUMSUNG; OMNIA 7)' => array('isMobile' => true, 'isTablet' => false), - - ), - - 'simvalley' => array( - - 'Mozilla/5.0 (Linux; U; Android 2.3.4; de-de; SP-80 Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - - ), - - 'Sony' => array( - 'SonyEricssonK800i/R1AA Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.1-update1; es-ar; SonyEricssonE15a Build/2.0.1.A.0.47) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.1-update1; pt-br; SonyEricssonU20a Build/2.1.1.A.0.6) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.3; en-au; SonyEricssonX10i Build/3.0.1.G.0.75) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.4; ru-ru; SonyEricssonST18i Build/4.0.2.A.0.62) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.4; hr-hr; SonyEricssonST15i Build/4.0.2.A.0.62) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.4; sk-sk; SonyEricssonLT15i Build/4.0.2.A.0.62) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.7; th-th; SonyEricssonST27i Build/6.0.B.3.184) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.7; de-de; SonyEricssonST25i Build/6.0.B.3.184) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; pt-br; Xperia Tablet S Build/TID0092) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.3', 'Build' => 'TID0092', 'Webkit' => '534.30', 'Safari' => '4.0') ), - 'Mozilla/5.0 (Linux; Android 4.0.3; LT18i Build/4.1.A.0.562) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.0.3; Sony Tablet S Build/TISU0R0110) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; es-es; Sony Tablet S Build/TISU0143) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-gb; SonyEricssonLT18i Build/4.1.B.0.587) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; fr-ch; SonyEricssonSK17i Build/4.1.B.0.587) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; SonyEricssonLT26i Build/6.1.A.2.45) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.0.4; LT22i Build/6.1.B.0.544) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; vi-vn; SonyEricssonLT22i Build/6.1.B.0.544) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.0.4; ST23i Build/11.0.A.5.5) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.0.4; ST23i Build/11.0.A.2.10) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.0.4; LT28h Build/6.1.E.3.7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; SGPT13 Build/TJDS0170) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.1.2; ja-jp; SonySO-03E Build/10.1.E.0.265) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.2', 'Build' => '10.1.E.0.265', 'Webkit' => '534.30', 'Safari' => '4.0') ), - 'Mozilla/5.0 (Linux; Android 4.1.2; LT26w Build/6.2.B.1.96) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.2.2; SGP321 Build/10.3.1.A.0.33) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Safari/537.31' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.2.2', 'Build' => '10.3.1.A.0.33', 'Webkit' => '537.31', 'Chrome' => '26.0.1410.58') ), - - 'Mozilla/5.0 (Linux; U; Android 4.3; zh-cn; XL39h Build/14.2.A.1.136) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.1.2; sv-se; C5503 Build/10.1.1.A.1.273) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; C5502 Build/10.1.1.A.1.310) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.2.2; zh-cn; SonyL39t Build/14.1.M.0.202) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.2.2; zh-cn; L39u Build/14.1.n.0.63) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.1.2; zh-tw; M35c Build/12.0.B.5.37) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.1.2; M35c Build/12.0.B.2.42) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.90 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.1.2; zh-CN; M35t Build/12.0.C.2.42) AppleWebKit/534.31 (KHTML, like Gecko) UCBrowser/9.3.2.349 U3/0.8.0 Mobile Safari/534.31' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.4.2; D6502 Build/17.1.A.2.69) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.4.2; D6503 Build/17.1.A.0.504) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.4.2; D6543 Build/17.1.A.2.55) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.3; D2004 Build/20.0.A.0.29) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.3; en-gb; D2005 Build/20.0.A.1.12) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.3; D2104 Build/20.0.B.0.84) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.3; D2105 Build/20.0.B.0.74) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.170 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.3; pt-br; D2114 Build/20.0.B.0.85) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.3; D2302 Build/18.0.B.1.23) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.138 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.3; zh-cn; S50h Build/18.0.b.1.23) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/9.6.3.413 U3/0.8.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.3; D2303 Build/18.0.C.1.13) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.138 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.3; D2305 Build/18.0.A.1.30) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.138 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.3; D2306 Build/18.0.C.1.7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.136 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.3; D5303 Build/19.0.1.A.0.207) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.4.2; D5306 Build/19.1.A.0.264) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.136 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.3; zh-CN; XM50h Build/19.0.D.0.269) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/9.7.6.428 U3/0.8.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.3; zh-cn; XM50t Build/19.0.C.2.59) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.3; D5322 Build/19.0.D.0.253) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.3; zh-cn; M51w Build/14.2.A.1.146) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.3; M51w Build/14.2.A.1.146) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.136 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.4.1; D5102 Build/18.2.A.0.9) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.4.1; D5103 Build/18.1.A.0.11) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.92 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.4.1; D5106 Build/18.1.A.0.11) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.3; en-gb; C6902 Build/14.2.A.1.136) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 GSA/3.2.17.1009776.arm' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.2.2; es-es; C6943 Build/14.1.G.2.257) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.4.2; C6943 Build/14.3.A.0.681) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.2.2; SGP412 Build/14.1.B.3.320) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - - 'Mozilla/5.0 (Linux; U; Android 4.1; en-us; SonySGP321 Build/10.2.C.0.143) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.1.2; SGP351 Build/10.1.1.A.1.307) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.3; SGP341 Build/10.4.B.0.569) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.4.2; SGP511 Build/17.1.A.2.36) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.122 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.4.2; SGP512 Build/17.1.A.2.36) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.122 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.1.2; fr-ch; SGP311 Build/10.1.C.0.344) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; SGP312 Build/10.1.C.0.344) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.4.2; de-de; SGP521 Build/17.1.A.2.69) AppleWebKit/537.16 (KHTML, like Gecko) Version/4.0 Safari/537.16' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.4.2; zh-cn; SGP541 Build/17.1.A.2.36) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.4.2; SGP551 Build/17.1.A.2.72) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), - - 'SonyEricssonU5i/R2CA; Mozilla/5.0 (SymbianOS/9.4; U; Series60/5.0 Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 Safari/525' => array('isMobile' => true, 'isTablet' => false), - 'SonyEricssonU5i/R2AA; Mozilla/5.0 (SymbianOS/9.4; U; Series60/5.0 Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 Safari/525' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/4.0 (PDA; PalmOS/sony/model prmr/Revision:1.1.54 (en)) NetFront/3.0' => array('isMobile' => true, 'isTablet' => false), - 'Opera/9.80 (Linux mips; U; InettvBrowser/2.2 (00014A;SonyDTV115;0002;0100) KDL40EX720; CC/BEL; en) Presto/2.7.61 Version/11.00' => array('isMobile' => false, 'isTablet' => false), - 'Opera/9.80 (Linux armv7l; HbbTV/1.1.1 (; Sony; KDL32W650A; PKG3.211EUA; 2013;); ) Presto/2.12.362 Version/12.11' => array('isMobile' => false, 'isTablet' => false), - ), - - 'Skk' => array('Mozilla/5.0 (Linux; U; Android 4.1; en-us; CYCLOPS Build/F10) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true)), - - 'Storex' => array( - 'Mozilla/5.0 (Linux; Android 4.1.1; eZee_Tab903 Build/JRO03H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Safari/537.36' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.1', 'Build' => 'JRO03H', 'Webkit' => '537.36')), - "Mozilla/5.0 (Linux; Android 4.1.1; eZee'Tab785 Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Safari/537.36" => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.1', 'Build' => 'JRO03C', 'Webkit' => '537.36')), - "Mozilla/5.0 (Linux; Android 4.0.3; eZee'Tab971 Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19" => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.3', 'Build' => 'IML74K', 'Webkit' => '535.19')), - ), - - 'Tecno' => array('Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; TECNO P9 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true)), - - 'Telstra' => array( - 'Mozilla/5.0 (Linux; U; Android 2.3.7; en-au; T-Hub2 Build/TVA301TELBG3) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), - ), - - // @info: http://www.texet.ru/tablet/ - 'texet' => array( - - 'Mozilla/5.0 (Linux; U; Android 2.3.4; ru-ru; TM-7021 Build/GB.m1ref.20120116) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '2.3.4', 'Webkit' => '533.1', 'Safari' => '4.0'), 'model' => 'TM-7021' ), - - ), - - 'Tolino' => array( - 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; tolino tab 7 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.2.2', 'Build' => 'JDQ39', 'Webkit' => '534.30', 'Safari' => '4.0')), - 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; tolino tab 8.9 Build/JDQ39) AppleWebKit/534.30 (KHTML like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.2.2', 'Build' => 'JDQ39', 'Webkit' => '534.30', 'Safari' => '4.0')), - 'Mozilla/5.0 (Linux; Android 4.2.2; tolino tab 7 Build/JDQ39) AppleWebkit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36 OPR/18.0.1290.67495' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; tolino tab 7 Build/JDQ39) AppleWebkit/537.36 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - ), - - 'Toshiba' => array( - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; TOSHIBA; TSUNAGI)' => array('isMobile' => true, 'isTablet' => false), - // @ref: http://www.toshiba.co.uk/discontinued-products/folio-100/ - 'Mozilla/5.0 (Linux; U; Android 2.2; it-it; TOSHIBA_FOLIO_AND_A Build/TOSHIBA_FOLIO_AND_A) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '2.2', 'Webkit' => '533.1', 'Safari' => '4.0') ), - ), - - 'Trekstor' => array( - 'Mozilla/5.0 (Linux; Android 4.2.2; ST70408-1 Build/JDQ39) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Safari/537.31' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.2.2', 'Build' => 'JDQ39', 'Webkit' => '537.31', 'Chrome' => '26.0.1410.58')), - 'Mozilla/5.0 (Linux; Android 4.2.2; VT10416-2 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Safari/537.36' => array( - 'isMobile' => true, 'isTablet' => true - ), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; de-de; ST10216-2A Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30;SurfTab_10.1' => array( - 'isMobile' => true, 'isTablet' => true - ), - ), - - 'Visture' => array( - - 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-gb; V97 HD Build/LR-97JC) Apple WebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; Visture V4 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; ru-ru; Visture V4 HD Build/Visture V4 HD) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; es-es; Visture V5 HD Build/Visture V5 HD) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; ru-ru; Visture V10 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - ), - - 'Versus' => array( - 'Mozilla/5.0 (Linux; Android 4.0.4; VS-TOUCHPAD 9 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-gb; Versus Touchpad 9.7 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-gb; CnM-TOUCHPAD7 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30 BMID/E67A45B1AB' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-gb; CnM TouchPad 7DC Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30 TwonkyBeamBrowser/3.3.5-95 (Android 4.1.1; rockchip CnM TouchPad 7DC Build/meizhi_V2.80.wifi8723.20121225.b11c800)' => array('isMobile' => true, 'isTablet' => true), - 'OneBrowser/3.5/Mozilla/5.0 (Linux; U; Android 4.0.4; en-gb; TOUCHPAD 7 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-gb; TOUCHTAB Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.1', 'Build' => 'JRO03H', 'Webkit' => '534.30', 'Safari' => '4.0') ), - ), - - 'Viewsonic' => array( - 'Mozilla/5.0 (Linux; U; Android 4.0.3; de-de; ViewPad 10e Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 2.2; it-it; ViewPad7 Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' =>array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 2.2.1; en-ca; ViewSonic VB733 Build/FRG83) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 3.2; en-gb; ViewPad7X Build/HTJ85B) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Safari/533.1' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 2.2; pt-br; ViewPad 10S Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; VB100a Pro Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - ), - - 'Vodafone' => array( - 'Mozilla/5.0 (Linux; U; Android 3.2; hu-hu; SmartTab10-MSM8260-V02d-Dec022011-Vodafone-HU) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.0.3; SmartTabII10 Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; fr-fr; SmartTAB 1002 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - ), - - 'Vonino' => array( - 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; Sirius_Evo_QS Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-gb; Q8 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - - ), - - 'Xoro' => array( - 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; PAD 9720QR Build/PAD 9719QR) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.2.2; PAD720 Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => true) - ), - - 'ZTE' => array( - 'Mozilla/5.0 (Linux; U; Android 4.2.1;zh-cn; ZTE V987 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30;' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.5; pt-pt; Blade Build/tejosunhsine) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; ZTE; N880e_Dawoer_Fulllock; China Telecom)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; ZTE; V965W)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; ZTE; Windows Phone - Internet 7; SFR)' => array('isMobile' => true, 'isTablet' => false), - ), - - 'Zync' => array( - 'Mozilla/5.0 (Linux; U; Android 2.3.3; en-us ; Z909 Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1/UCBrowser/8.4.1.204/145/444' => array('isMobile' => true, 'isTablet' => true), - ), - - 'Console' => array( - - //Nintendo Wii: - 'Mozilla/5.0 (Nintendo WiiU) AppleWebKit/534.52 (KHTML, like Gecko) NX/{Version No} NintendoBrowser/{Version No}.US' => array('isMobile' => false, 'isTablet' => false), - - //Sony PlayStation: - 'Mozilla/5.0 (PLAYSTATION 3 4.21) AppleWebKit/531.22.8 (KHTML, like Gecko)' => array('isMobile' => false, 'isTablet' => false), - - //Microsoft Xbox: - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; Xbox)' => array('isMobile' => false, 'isTablet' => false), - // WTF? Must investigate. - //'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Xbox)' => array('isMobile' => false, 'isTablet' => false), - - ), - - 'Other' => array( - 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/32.0.1700.102 Chrome/32.0.1700.102 Safari/537.36' => array('isMobile' => false, 'isTablet' => false), - 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0' => array('isMobile' => false, 'isTablet' => false), - 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0 AlexaToolbar/psPCtGhf-2.2' => array('isMobile' => false, 'isTablet' => false), - 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:22.0) Gecko/20100101 Firefox/22.0' => array('isMobile' => false, 'isTablet' => false), - 'Mozilla/5.0 (X11; Linux ppc; rv:17.0) Gecko/20130626 Firefox/17.0 Iceweasel/17.0.7' => array('isMobile' => false, 'isTablet' => false), - 'Mozilla/5.0 (X11; Linux) AppleWebKit/535.22+ Midori/0.4' => array('isMobile' => false, 'isTablet' => false), - 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-us) AppleWebKit/535+ (KHTML, like Gecko) Version/5.0 Safari/535.20+ Midori/0.4' => array('isMobile' => false, 'isTablet' => false), - 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.20 Safari/537.36 OPR/15.0.1147.18 (Edition Next)' => array('isMobile' => false, 'isTablet' => false), - 'Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36' => array('isMobile' => false, 'isTablet' => false), - 'Mozilla/5.0 (Windows NT 5.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36' => array('isMobile' => false, 'isTablet' => false), - 'Mozilla/5.0 (Windows NT 5.2; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0' => array('isMobile' => false, 'isTablet' => false), - 'Opera/9.80 (Windows NT 5.2; WOW64) Presto/2.12.388 Version/12.14' => array('isMobile' => false, 'isTablet' => false), - 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:19.0) Gecko/20100101 Firefox/19.0' => array('isMobile' => false, 'isTablet' => false), - 'Mozilla/5.0 (X11; FreeBSD amd64; rv:14.0) Gecko/20100101 Firefox/14.0.1' => array('isMobile' => false, 'isTablet' => false), - 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.2; Win64; x64; Trident/6.0; Touch; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 2.0.50727; Tablet PC 2.0; MASMJS)' => array('isMobile' => false, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0; MANMJS)' => array('isMobile' => false, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident/6.0; MASMJS)' => array('isMobile' => false, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0; Touch; MASMJS)' => array('isMobile' => false, 'isTablet' => false), - 'Opera/9.80 (Windows NT 6.2; WOW64; MRA 8.0 (build 5784)) Presto/2.12.388 Version/12.11' => array('isMobile' => false, 'isTablet' => false), - // IE 10 - 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)' => array('isMobile' => false, 'isTablet' => false), - // IE 11 @todo: Trident(.*)rv.(\d+)\.(\d+) - 'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv 11.0) like Gecko' => array('isMobile' => false, 'isTablet' => false), - 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; Touch; rv:11.0) like Gecko' => array('isMobile' => false, 'isTablet' => false), - - // TV - 'Mozilla/5.0 (Unknown; Linux armv7l) AppleWebKit/537.1+ (KHTML, like Gecko) Safari/537.1+ HbbTV/1.1.1 ( ;LGE ;NetCast 4.0 ;03.20.30 ;1.0M ;)' => array('isMobile' => false, 'isTablet' => false), - 'HbbTV/1.1.1 (;Panasonic;VIERA 2012;1.261;0071-3103 2000-0000;)' => array('isMobile' => false, 'isTablet' => false), - 'Opera/9.80 (Linux armv7l; HbbTV/1.1.1 (; Sony; KDL32W650A; PKG3.211EUA; 2013;); ) Presto/2.12.362 Version/12.11' => array('isMobile' => false, 'isTablet' => false), - ), - - 'Generic' => array( - - 'Mozilla/5.0 (Linux; Android 4.0.3; ALUMIUM10 Build/IML74K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.2.1; en-us; JY-G3 Build/JOP40D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; hu-hu; M758A Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - - 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; EVOTAB Build/IMM76I) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Java/1.6.0_22' => array('isMobile' => false, 'isTablet' => false, 'version' => array('Java' => '1.6.0_22') ), - 'Opera/9.80 (Series 60; Opera Mini/6.5.29260/29.3417; U; ru) Presto/2.8.119 Version/11.10' => array('isMobile' => true, 'isTablet' => false), - 'Opera/9.80 (Android; Opera Mini/6.5.27452/29.3417; U; ru) Presto/2.8.119 Version/11.10' => array('isMobile' => true, 'isTablet' => false), - // New Opera - 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.60 Safari/537.17 OPR/14.0.1025.52315' => array('isMobile' => false, 'isTablet' => false), - // Unknown yet - // Looks like Chromebook - 'Mozilla/5.0 (X11; CrOS armv7l 4920.83.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.103 Safari/537.36', - 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_2 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari/6533.18.5', - 'Mozilla/5.0 (Linux; U; Android 4.1.2; fr-fr; GT-I9070 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30', - 'Opera/9.80 (Android 2.3.7; Linux; Opera Mobi/46154) Presto/2.11.355 Version/12.10', - 'Mozilla/5.0 (Linux; U; Android 4.0.3; it-it; DATAM819HD_C Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30', - 'Mozilla/5.0 (Linux; U; Android 4.0.3; nl-nl; SGPT12 Build/TID0142) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30', - 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; cm_tenderloin Build/IMM76L; CyanogenMod-9) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30', - - 'Mozilla/5.0 (Linux; U; Android 4.1.1; fr-fr; A210 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30', // Acer Iconia Tab - 'Mozilla/5.0 (iPad; CPU OS 6_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10B141 Safari/8536.25', - 'Mozilla/5.0 (Linux; U; Android 2.3.6; en-gb; GT-I8150 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1', - 'Mozilla/5.0 (iPad; CPU OS 6_0_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mercury/7.2 Mobile/10A523 Safari/8536.25', // Mercurio Browser - 'Opera/9.80 (Android 2.3.7; Linux; Opera Tablet/46154) Presto/2.11.355 Version/12.10', - 'Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; sdk Build/MASTER) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30', // sdk - 'Mozilla/5.0 (Linux; U; Android 4.2; en-us; sdk Build/JB_MR1) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30', // sdk - 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; GT-P7510 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30', - 'Opera/9.80 (X11; Linux zbov) Presto/2.11.355 Version/12.10', - 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-gb; TOUCHPAD 7 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30', // 7" Verso Android tablet - 'Mozilla/5.0 (iPhone; U; CPU OS 4_2_1 like Mac OS X) AppleWebKit/532.9 (KHTML, like Gecko) Version/5.0.3 Mobile/8B5097d Safari/6531.22.7', - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-gb; SGPT12 Build/TID0142) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30', // sony xperia tablet s unforts - 'Mozilla/5.0 (Nintendo 3DS; U; ; en) Version/1.7498.US', - 'Mozilla/5.0 (Linux; U; Android 2.0.6_b1; ru-ru Build/ECLAIR) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17', // PocketBook IQ701 (tablet) - 'Mozilla/5.0 (Linux; Android 4.0.4; z1000 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19', // It is a tablet with calling - 'Mozilla/5.0 (Linux; Android 4.0.3; cm_tenderloin Build/GWK74) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19', // HP touch pad running android cyanogenmod - 'Mozilla/5.0 (Linux; U; Android 2.3.3; en-us; Android for Techvision TV1T808 Board Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1', // My device is tablet but its detected as phone - 'BlackBerry8520/5.0.0.592 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/136', - 'Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17', // its a lenovo tablet 2 with windows 8 pro - 'Mozilla/5.0 (Linux; U; Android 3.1; ru-ru; LG-V900 Build/HMJ37) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13', - 'Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; HTC; Windows Phone 8S by HTC)', - 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0; Touch)', // MS Surface RT tablet actually! - 'Mozilla/5.0 (PLAYSTATION 3 4.11) AppleWebKit/531.22.8 (KHTML, like Gecko)', - 'Mozilla/5.0 (Linux; U; Android 3.2; ru-ru; V9S_V1.4) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13', // Wrong detection - 7-inch tablet was detected as a phone. Android 3.2.1, native browser - 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0; Touch)', // Nope, its a Microsoft Surface tablet running Windows RT (8) with MSIE 10 - 'Mozilla/5.0 (Linux; U; Android 2.2; es-es; Broncho N701 Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1', // Tablet! - 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0; Touch)', // its a Microsoft surface rt (tablet) - 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0; Touch; WebView/1.0)', - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; Next7P12 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30', // Nextbook 7SE Tablet - 'Opera/9.80 (X11; Linux zbov) Presto/2.11.355 Version/12.10', // allview alldro speed tablet, android ics, opera mobile - 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0; Touch)', // Its a surface in portrait - 'Mozilla/5.0 (Linux; U; Android 2.3.6; es-es; SAMSUNG GT-S5830/S5830BUKT2 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1', - 'Mozilla/5.0 (Linux; U; Android 3.2.1; en-gb;HTC_Flyer_P512 Build/HTK75C) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13', - // Am ramas la pozitia: 207 - - // Android on Windows :) www.socketeq.com - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; full Android on Microsoft Windows, pad, pc, n*books Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30', - - // TV - 'Opera/9.80 (Linux mips; U; InettvBrowser/2.2 (00014A;SonyDTV115;0002;0100) KDL40EX720; CC/BEL; en) Presto/2.7.61 Version/11.00', - - 'Mozilla/5.0 (Android; Mobile; rv:18.0) Gecko/18.0 Firefox/18.0', - // Maxthon - 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.12 (KHTML, like Gecko) Maxthon/3.0 Chrome/18.0.966.0 Safari/535.12', - 'Opera/9.80 (Windows NT 5.1; U; Edition Yx; ru) Presto/2.10.289 Version/12.02', - 'Mozilla/5.0 (Linux; U; Android 4.2; en-us; sdk Build/JB_MR1) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30', - 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Windows Phone 6.5.3.5)', - 'PalmCentro/v0001 Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; PalmSource/Palm-D061; Blazer/4.5) 16;320x320', - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0)', - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Microsoft; XDeviceEmulator)', - // @todo: research N880E - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; MAL; N880E; China Telecom)', - 'Opera/9.80 (Series 60; Opera Mini/7.0.29482/28.2859; U; ru) Presto/2.8.119 Version/11.10', - 'Opera/9.80 (S60; SymbOS; Opera Mobi/SYB-1202242143; U; en-GB) Presto/2.10.254 Version/12.00', - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-au; 97D Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30', - 'Opera/9.80 (Android; Opera Mini/7.0.29952/28.2647; U; ru) Presto/2.8.119 Version/11.10', - 'Opera/9.80 (Android; Opera Mini/6.1.25375/28.2555; U; en) Presto/2.8.119 Version/11.10', - 'Opera/9.80 (Mac OS X; Opera Tablet/35779; U; en) Presto/2.10.254 Version/12.00', - 'Mozilla/5.0 (Android; Tablet; rv:10.0.4) Gecko/10.0.4 Firefox/10.0.4 Fennec/10.0.4', - 'Mozilla/5.0 (Android; Tablet; rv:18.0) Gecko/18.0 Firefox/18.0', - 'Opera/9.80 (Linux armv7l; Maemo; Opera Mobi/14; U; en) Presto/2.9.201 Version/11.50', - 'Opera/9.80 (Android 2.2.1; Linux; Opera Mobi/ADR-1207201819; U; en) Presto/2.10.254 Version/12.00' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; sdk Build/JRO03E) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30', - 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; Endeavour 1010 Build/ONDA_MID) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), // Blaupunkt Endeavour 1010 - 'Mozilla/5.0 (Linux; U; Android 4.0.4; de-de; Tablet-PC-4 Build/ICS.g08refem618.20121102) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - ), - - 'Bot' => array( - 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)' => array('isMobile' => false, 'isTablet' => false, /*'isBot' => true*/), - 'grub-client-1.5.3; (grub-client-1.5.3; Crawl your own stuff with http://grub.org)' => array('isMobile' => false, 'isTablet' => false, /*'isBot' => true*/), - 'Googlebot-Image/1.0' => array('isMobile' => false, 'isTablet' => false, /*'isBot' => true*/), - 'Python-urllib/2.5' => array('isMobile' => false, 'isTablet' => false, /*'isBot' => true*/), - 'facebookexternalhit/1.0 (+http://www.facebook.com/externalhit_uatext.php)' => array('isMobile' => false, 'isTablet' => false, /*'isBot' => true*/) - ), - -); +// Setup. +$includeBasePath = dirname(__FILE__) . '/providers/vendors'; +$list = array(); + +// Scan. +$dir = new DirectoryIterator($includeBasePath); +foreach ($dir as $fileInfo) { + if ($fileInfo->isDot()) { + continue; + } + $listNew = include $includeBasePath . '/' . $fileInfo->getFilename(); + if (is_array($listNew)) { + $list = array_merge($list, $listNew); + } +} + +return $list; diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/UserAgentTest.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/UserAgentTest.php index 77cbc753858..6aca913ae66 100644 --- a/htdocs/includes/mobiledetect/mobiledetectlib/tests/UserAgentTest.php +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/UserAgentTest.php @@ -1,37 +1,19 @@ <?php /** - * MIT License - * =========== - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * - * @author Serban Ghita <serbanghita@gmail.com> * @license MIT License https://github.com/serbanghita/Mobile-Detect/blob/master/LICENSE.txt * @link http://mobiledetect.net */ class UserAgentTest extends PHPUnit_Framework_TestCase { + protected $detect; protected static $ualist = array(); protected static $json; + public function setUp() + { + $this->detect = new Mobile_Detect; + } + public static function generateJson() { //in case this gets run multiple times @@ -43,6 +25,9 @@ class UserAgentTest extends PHPUnit_Framework_TestCase $jsonFile = dirname(__FILE__) . '/ualist.json'; $phpFile = dirname(__FILE__) . '/UA_List.inc.php'; + //currently stored as a PHP array + $list = include $phpFile; + //check recency of the file if (file_exists($jsonFile) && is_readable($jsonFile)) { //read the json file @@ -51,7 +36,7 @@ class UserAgentTest extends PHPUnit_Framework_TestCase //check that the hash matches $hash = isset($json['hash']) ? $json['hash'] : null; - if ($hash == sha1_file($phpFile)) { + if ($hash == sha1(serialize($list))) { //file is up to date, just read the json file self::$json = $json['user_agents']; @@ -59,6 +44,7 @@ class UserAgentTest extends PHPUnit_Framework_TestCase } } + //uses the UA_List.inc.php to generate a json file if (file_exists($jsonFile) && !is_writable($jsonFile)) { throw new RuntimeException("Need to be able to create/update $jsonFile from UA_List.inc.php."); @@ -68,8 +54,9 @@ class UserAgentTest extends PHPUnit_Framework_TestCase throw new RuntimeException("Insufficient permissions to create this file: $jsonFile"); } - //currently stored as a PHP array - $list = include $phpFile; + + + //print_r($list['Acer']); exit; $json = array(); @@ -107,7 +94,7 @@ class UserAgentTest extends PHPUnit_Framework_TestCase } //save the hash - $hash = sha1_file($phpFile); + $hash = sha1(serialize($list)); $json = array( 'hash' => $hash, 'user_agents' => $json @@ -149,8 +136,9 @@ class UserAgentTest extends PHPUnit_Framework_TestCase public function userAgentData() { - if (!count(self::$ualist)) + if (!count(self::$ualist)) { self::setUpBeforeClass(); + } return self::$ualist; } @@ -169,25 +157,24 @@ class UserAgentTest extends PHPUnit_Framework_TestCase } //setup - $md = new Mobile_Detect; - $md->setUserAgent($userAgent); + $this->detect->setUserAgent($userAgent); //is mobile? - $this->assertEquals($md->isMobile(), $isMobile); + $this->assertEquals($this->detect->isMobile(), $isMobile); //is tablet? - $this->assertEquals($md->isTablet(), $isTablet); + $this->assertEquals($this->detect->isTablet(), $isTablet, 'FAILED: ' . $userAgent . ' isTablet: ' . $isTablet); if (isset($version)) { foreach ($version as $condition => $assertion) { - $this->assertEquals($assertion, $md->version($condition), 'FAILED UA (version("'.$condition.'")): '.$userAgent); + $this->assertEquals($assertion, $this->detect->version($condition), 'FAILED UA (version("'.$condition.'")): '.$userAgent); } } //version property tests if (isset($version)) { foreach ($version as $property => $stringVersion) { - $v = $md->version($property); + $v = $this->detect->version($property); $this->assertSame($stringVersion, $v); } } @@ -196,7 +183,7 @@ class UserAgentTest extends PHPUnit_Framework_TestCase //@todo: vendor test. The below is theoretical, but fails 50% of the tests... /*if (isset($vendor)) { $method = "is$vendor"; - $this->assertTrue($md->{$method}(), "Expected Mobile_Detect::{$method}() to be true."); + $this->assertTrue($this->detect->{$method}(), "Expected Mobile_Detect::{$method}() to be true."); }*/ } } diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/VendorsTest.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/VendorsTest_tmp.php similarity index 60% rename from htdocs/includes/mobiledetect/mobiledetectlib/tests/VendorsTest.php rename to htdocs/includes/mobiledetect/mobiledetectlib/tests/VendorsTest_tmp.php index 06724144505..b2d7bf215d8 100644 --- a/htdocs/includes/mobiledetect/mobiledetectlib/tests/VendorsTest.php +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/VendorsTest_tmp.php @@ -1,29 +1,5 @@ <?php /** - * MIT License - * =========== - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * - * @author Serban Ghita <serbanghita@gmail.com> * @license MIT License https://github.com/serbanghita/Mobile-Detect/blob/master/LICENSE.txt * @link http://mobiledetect.net */ @@ -49,21 +25,21 @@ class VendorsTest extends PHPUnit_Framework_TestCase public function testisMobileIsTablet() { foreach (self::$items as $brand => $deviceArr) { - foreach ($deviceArr as $userAgent => $conditions) { - - if (!is_array($conditions)) { continue; } + if (!is_array($conditions)) { + continue; + } $this->detect->setUserAgent($userAgent); foreach ($conditions as $condition => $assert) { - // Currently not supporting version and model here. // @todo: I need to split this tests! - if ( in_array($condition, array('model') ) ) { continue; } // 'version', + if (in_array($condition, array('model'))) { + continue; + } // 'version', switch ($condition) { - case 'version': // Android, iOS, Chrome, Build, etc. foreach ($assert as $assertKey => $assertValue) { @@ -72,13 +48,11 @@ class VendorsTest extends PHPUnit_Framework_TestCase //} $this->assertTrue( $this->detect->$condition( $assertKey ) == $assertValue, 'UA ('.$condition.'('.$assertKey.') === '.$assertValue.'): '.$userAgent); } - - break; + break; default: - $this->assertTrue( $this->detect->$condition() === $assert, 'UA ('.$condition.'): '.$userAgent); - break; - + $this->assertTrue($this->detect->$condition() === $assert, 'UA ('.$condition.'): '.$userAgent); + break; } } diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/phpunit.xml b/htdocs/includes/mobiledetect/mobiledetectlib/tests/phpunit.xml index c780cebe223..2b10958d550 100644 --- a/htdocs/includes/mobiledetect/mobiledetectlib/tests/phpunit.xml +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/phpunit.xml @@ -1,15 +1,15 @@ <?xml version="1.0" encoding="UTF-8"?> <phpunit backupGlobals="false" - strict="true" colors="false" - verbose="false" + verbose="true" + stopOnFailure="true" + stopOnIncomplete="false" bootstrap="bootstrap.php" convertErrorsToExceptions="true" convertNoticesToExceptions="true" convertWarningsToExceptions="true" - mapTestClassNameToCoveredClassName="true" - timeoutForSmallTests="2"> + mapTestClassNameToCoveredClassName="true"> <php> <ini name="error_reporting" value="-1"/> @@ -17,9 +17,11 @@ </php> <testsuite name="All Mobile Detect tests"> - <directory suffix="Test.php">./</directory> + <directory suffix="Test.php">./</directory> </testsuite> - + <listeners> + <listener class="JohnKary\PHPUnit\Listener\SpeedTrapListener" /> + </listeners> </phpunit> diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Acer.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Acer.php new file mode 100644 index 00000000000..d8fc582085f --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Acer.php @@ -0,0 +1,28 @@ +<?php +return array( + 'Acer' => array( + 'Mozilla/5.0 (Linux; U; Android 3.2.1; en-us; A100 Build/HTK55D) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1; en-us; A110 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; de-de; A200 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( 'isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.3', 'Webkit' => '534.30', 'Safari' => '4.0', 'Build' => 'IML74K'), 'model' => 'A200' ), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; A500 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; A501 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.1.1; A701 Build/JRO03H) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.1.2; B1-A71 Build/JZO54K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.1.2; B1-710 Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.2.2; A1-810 Build/JDQ39) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Safari/537.31' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; nl-nl; A1-810 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Acer; Allegro)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; A3-A10 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Safari/537.36' => array( + 'isMobile' => true, 'isTablet' => true, 'version' => array( + 'Android' => '4.2.2', 'Build' => 'JDQ39', 'Webkit' => '537.36', 'Chrome' => '32.0.1700.99', + ), + ), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; A1-811 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; Android 4.2.2; A1-830 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Safari/537.36' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; Android 4.2.2; A3-A11 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Safari/537.36'=> array('isMobile' => true, 'isTablet' => true) + ), +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Alcatel.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Alcatel.php new file mode 100644 index 00000000000..96a36ac35e0 --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Alcatel.php @@ -0,0 +1,49 @@ +<?php +return array( + 'Alcatel' => array( + 'Mozilla/5.0 (Linux; U; Android 2.3.7; en-in; MB525 Build/GWK74; CyanogenMod-7.2.0) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.5; it-it; ALCATEL ONE TOUCH 918D Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Android' => '2.3.5', 'Webkit' => '533.1', 'Safari' => '4.0', 'Build' => 'GRJ90'), 'model' => 'ONE TOUCH 918D' ), + 'Mozilla/5.0 (Linux; U; Android 2.3.6; ru-ru; ALCATEL ONE TOUCH 991 Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Android' => '2.3.6', 'Webkit' => '533.1', 'Safari' => '4.0', 'Build' => 'GRJ90'), 'model' => 'ONE TOUCH 991' ), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; ru-ru; ALCATEL ONE TOUCH 993D Build/ICECREAM) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Android' => '4.0.4', 'Webkit' => '534.30', 'Safari' => '4.0', 'Build' => 'ICECREAM'), 'model' => 'ONE TOUCH 993D' ), + 'ALCATEL_A392G/1.0 ObigoInternetBrowser/Q05A[TF013513002719521000000013182904148]' => array('isMobile' => true, 'isTablet' => false, 'model' => 'A392G'), + 'ALCATEL_3020D/1.0 ObigoInternetBrowser/Q03C' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2; ALCATEL ONE TOUCH 5037A Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'ALCATEL_3020G/1.0 ObigoInternetBrowser/Q03C' => array('isMobile' => true, 'isTablet' => false), + 'ALCATEL_3041D/1.0 ObigoInternetBrowser/Q03C' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; ALCATEL ONE TOUCH 5037E Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.2 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; ALCATEL ONE TOUCH 5037X Build/JDQ39) AppleWebKit/537.36 (KHTML like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; ALCATEL ONE TOUCH 5037X Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.2 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; ONE TOUCH 6012A Build/JDQ39) AppleWebKit/537.36 (KHTML like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-nz; ONE TOUCH 6012A Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.2 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; ONE TOUCH 6012D Build/JDQ39) AppleWebKit/537.36 (KHTML like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; ONE TOUCH 6012D Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.2 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; En-us; ONE TOUCH 6012E Build/JDQ39) AppleWebKit/534.30 (KHTML, Like Gecko) Version/4.2 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; ONE TOUCH 6012X Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.12975 YaBrowser/13.12.1599.12975 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; bg-bg; ONE TOUCH 6012X Build/JDQ39) AppleWebKit/534.30 (KHTML like Gecko) Version/4.2 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; ALCATEL ONE TOUCH 6012X_orange Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.59 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; fr-fr; ALCATEL ONE TOUCH 6012X_orange Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.2 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.3; fr-fr; 6016E Build/JLS36C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.3; en-us; ALCATEL ONE TOUCH 6016E Build/JLS36C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; 6016X Build/JLS36C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; ALCATEL ONE TOUCH 6016X Build/JLS36C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.122 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.3; ru-ru; 6016X Build/JLS36C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; ALCATEL ONE TOUCH 6032A Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.170 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; ru-ru; ALCATEL ONE TOUCH 6032X Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.2 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-nz; ALCATEL ONE TOUCH 7040A Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.2 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; th-th; ALCATEL ONE TOUCH 7040D Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.2 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; ALCATEL ONE TOUCH 7040D Build/JDQ39) AppleWebKit/537.36 (KHTML like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; ALCATEL ONE TOUCH 7040E Build/JDQ39) AppleWebKit/537.36 (KHTML like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; it-it; ALCATEL ONE TOUCH 7041D Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.2 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; ALCATEL ONE TOUCH 7041D Build/JDQ39) AppleWebKit/537.36 (KHTML like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; ALCATEL ONE TOUCH 7041X Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.138 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; pt-pt; ALCATEL ONE TOUCH 7041X Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.2 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; ALCATEL ONE TOUCH 8020A Build/JDQ39) AppleWebKit/537.36 (KHTML, Like Gecko) Chrome/30.0.1599.92 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; ALCATEL ONE TOUCH 8020A Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.2 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; ALCATEL ONE TOUCH 8020D Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; es-es; ALCATEL ONE TOUCH 8020D Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.2 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; ALCATEL ONE TOUCH 8020E Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; ALCATEL ONE TOUCH 8020E Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.2 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; ALCATEL ONE TOUCH 8020X Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.136 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; ALCATEL ONE TOUCH 8020X Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.2 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + ), +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Allview.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Allview.php new file mode 100644 index 00000000000..7bbcb5ea25d --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Allview.php @@ -0,0 +1,11 @@ + <?php + return array( + 'Allview' => array( + + 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; ALLVIEW P5 Build/IML74K) AppleWebKit/534.30 (KHTML like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us ; ALLVIEW SPEEDI Build/IMM76D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1/UCBrowser/8.5.3.246/145/355' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; AllviewCity Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; ALLVIEWSPEED Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + + ), +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Amazon.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Amazon.php new file mode 100644 index 00000000000..82fa5ac44d2 --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Amazon.php @@ -0,0 +1,14 @@ +<?php +return array( + 'Amazon' => array( + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; KFTT Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.4 Mobile Safari/535.19 Silk-Accelerated =true' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; en-US) AppleWebKit/528.5+ (KHTML, like Gecko, Safari/528.5+) Version/4.0 Kindle/3.0 (screen 600x800; rotate)' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Webkit' => '528.5+', 'Kindle' => '3.0', 'Safari' => '4.0'), 'model' => 'Kindle' ), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; KFOTE Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.3', 'Build' => 'IML74K', 'Webkit' => '534.30', 'Safari' => '4.0') ), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; WFJWAE Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; en-us; KFTT Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.21 Safari/535.19 Silk-Accelerated=true' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; en-us; KFTHWI Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.21 Safari/535.19 Silk-Accelerated=true' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; en-us; KFJWI Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.21 Safari/535.19 Silk-Accelerated=true' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; en-us; KFSOWI Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.21 Safari/535.19 Silk-Accelerated=true' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 2.1; xx-xx; T720-WIFI Build/ECLAIR) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' => array('isMobile' => true, 'isTablet' => true), + ), +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Apple.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Apple.php new file mode 100644 index 00000000000..931de962eba --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Apple.php @@ -0,0 +1,27 @@ +<?php +return array( + 'Apple' => array( + 'iTunes/9.1.1' => array('isMobile' => false, 'isTablet' => false), + 'iTunes/11.0.2 (Windows; Microsoft Windows 8 x64 Business Edition (Build 9200)) AppleWebKit/536.27.1' => array('isMobile' => false, 'isTablet' => false), + 'Mozilla/5.0 (iPod touch; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A4449d Safari/9537.53' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543 Safari/419.3' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Webkit' => '420+', 'Safari' => '3.0') ), + 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16' => array('isMobile' => true, 'isTablet' => false, 'version' => array('iOS' => '3_0', 'Webkit' => '528.18', 'Safari' => '4.0'), 'model' => 'iPhone', 'mobileGrade' => 'B' ), + 'Mozilla/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B206 Safari/7534.48.3' => array('isMobile' => true, 'isTablet' => false, 'version' => array('iOS' => '5_1_1', 'Webkit' => '534.46', 'Mobile' => '9B206', 'Safari' => '5.1'), 'model' => 'iPhone' ), + 'Mozilla/5.0 (iPod; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A403 Safari/8536.25' => array('isMobile' => true, 'isTablet' => false, 'version' => array('iOS' => '6_0', 'Webkit' => '536.26', 'Mobile' => '10A403', 'Safari' => '6.0'), 'model' => 'iPod'), + 'Mozilla/5.0 (iPad; CPU OS 5_1_1 like Mac OS X; en-us) AppleWebKit/534.46.0 (KHTML, like Gecko) CriOS/21.0.1180.80 Mobile/9B206 Safari/7534.48.3 (6FF046A0-1BC4-4E7D-8A9D-6BF17622A123)' => array('isMobile' => true, 'isTablet' => true, 'version' => array('iOS' => '5_1_1', 'Webkit' => '534.46.0', 'Chrome' => '21.0.1180.80', 'Mobile' => '9B206'), 'model' => 'iPad' ), + 'Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A403 Safari/8536.25' => array('isMobile' => true, 'isTablet' => true, 'version' => array('iOS' => '6_0', 'Webkit' => '536.26', 'Safari' => '6.0', 'Mobile' => '10A403'), 'model' => 'iPad' ), + 'Mozilla/5.0 (iPad; U; CPU OS 4_2_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5' => array('isMobile' => true, 'isTablet' => true, 'version' => array('iOS' => '4_2_1', 'Webkit' => '533.17.9', 'Safari' => '5.0.2', 'Mobile' => '8C148'), 'model' => 'iPad', 'mobileGrade' => 'B' ), + 'Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.10' => array('isMobile' => true, 'isTablet' => true, 'version' => array('iOS' => '3_2', 'Webkit' => '531.21.10', 'Safari' => '4.0.4', 'Mobile' => '7B334b'), 'model' => 'iPad', 'mobileGrade' => 'B' ), + 'Mozilla/5.0 (iPhone; CPU iPhone OS 6_0_1 like Mac OS X; da-dk) AppleWebKit/534.46.0 (KHTML, like Gecko) CriOS/21.0.1180.82 Mobile/10A523 Safari/7534.48.3' => array('isMobile' => true, 'isTablet' => false, 'version' => array('iOS' => '6_0_1', 'Webkit' => '534.46.0', 'Chrome' => '21.0.1180.82', 'Mobile' => '10A523'), 'model' => 'iPhone', 'mobileGrade' => 'A' ), + 'Mozilla/5.0 (iPhone; CPU iPhone OS 6_0_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A523 Safari/8536.25' => array('isMobile' => true, 'isTablet' => false, 'version' => array('iOS' => '6_0_1', 'Webkit' => '536.26', 'Safari' => '6.0', 'Mobile' => '10A523'), 'model' => 'iPhone', 'mobileGrade' => 'A' ), + 'Mozilla/5.0 (iPhone; CPU iPhone OS 6_1 like Mac OS X; ru-ru) AppleWebKit/536.26 (KHTML, like Gecko) CriOS/23.0.1271.100 Mobile/10B142 Safari/8536.25' => array('isMobile' => true, 'isTablet' => false, 'version' => array('iOS' => '6_1', 'Webkit' => '536.26', 'Chrome' => '23.0.1271.100', 'Mobile' => '10B142'), 'model' => 'iPhone', 'mobileGrade' => 'A' ), + 'Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10B329 Safari/8536.25' => array('isMobile' => true, 'isTablet' => false, 'version' => array('iOS' => '6_1_3', 'Webkit' => '536.26', 'Safari' => '6.0', 'Mobile' => '10B329'), 'model' => 'iPhone', 'mobileGrade' => 'A' ), + 'Mozilla/5.0 (iPad; CPU OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Coast/1.0.2.62956 Mobile/10B329 Safari/7534.48.3' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Coast' => '1.0.2.62956')), + 'CheckMyBus iOS mobile App 0.9.0 (iPhone; iPhone OS/7.1.1)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (iPad; CPU OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (iPhone; CPU iPhone OS 8_0_2 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) CriOS/38.0.2125.59 Mobile/12A405 Safari/600.1.4' => array('isMobile' => true, 'isTablet' => false), + 'VendorAppName/1.7.0 (iPhone; iOS 8.1.2; Scale/3.00)' => array('isMobile' => true, 'isTablet' => false, 'version' => array('iOS' => '8.1.2'), 'model' => 'iPhone', 'mobileGrade' => 'A' ), + 'Mozilla/5.0 (iPad; CPU OS 9_0 like Mac OS X) AppleWebKit/601.1.17 (KHTML, like Gecko) Version/8.0 Mobile/13A175 Safari/600.1.4' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (iPhone; CPU iPhone OS 9_0 like Mac OS X) AppleWebKit/601.1.37 (KHTML, like Gecko) Version/8.0 Mobile/13A4293g Safari/600.1.4' => array('isMobile' => true, 'isTablet' => false), + ), +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Archos.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Archos.php new file mode 100644 index 00000000000..3fda3c9ab9c --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Archos.php @@ -0,0 +1,67 @@ +<?php +return array( + 'Archos' => array( + + 'Mozilla/5.0 (Linux; Android 4.2.2; Qilive 97R Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.92 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.1.2; Archos 50 Platinum Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.4; ARCHOS 80G9 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 2.2.1; fr-fr; A101IT Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.2.2; Archos 101 Neon Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Safari/537.36' => array( + 'isMobile' => true, 'isTablet' => true + ), + 'Mozilla/5.0 (Linux; Android 4.2.2; Archos 101 Cobalt Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Safari/537.36' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; de-de; ARCHOS 80 TITANIUM Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; Android 4.1.1; ARCHOS 101 Titanium Build/JRO03H) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; de-de; ARCHOS 70b TITANIUM Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; de-de; Archos 80 Xenon Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; Android 4.2.2; Archos 79 Xenon Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Safari/537.36' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; de-de; ARCHOS 101 Titanium Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; de-de; ARCHOS 80XSK Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; de-de; ARCHOS FAMILYPAD 2 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; Android 4.1.1; ARCHOS 97B TITANIUM Build/JRO03H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Safari/537.36' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; Android 4.2.2; ARCHOS 101 XS 2 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Safari/537.36' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; ARCHOS 80b PLATINUM Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; Android 4.2.2; Archos 70 Xenon Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Safari/537.36' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; de-de; ARCHOS 97 CARBON Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; de-de; ARCHOS 97 TITANIUMHD Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; Android 4.2.2; Archos 90 Neon Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Safari/537.36' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; U; Android 1.6; de-de; Archos5 Build/Donut) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; de-de; ARCHOS GAMEPAD Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true, + ), + ), +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Asus.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Asus.php new file mode 100644 index 00000000000..5d817e34a94 --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Asus.php @@ -0,0 +1,22 @@ +<?php +return array( + 'ASUS' => array( + 'Mozilla/5.0 (Linux; U; Android 3.2.1; en-us; Transformer TF101 Build/HTK75) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array( 'isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '3.2.1', 'Webkit' => '534.13', 'Safari' => '4.0'), 'model' => 'Transformer TF101' ), + 'Mozilla/5.0 (Linux; Android 4.1.1; Transformer Build/JRO03L) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.1.1; ASUS Transformer Pad TF300T Build/JRO03C) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; fr-fr; Transformer Build/JZO54K; CyanogenMod-10) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; asus_laptop Build/IMM76L) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-gb; PadFone 2 Build/JRO03L) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-gb; PadFone 2 Build/JRO03L) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.1', 'Build' => 'JRO03L', 'Webkit' => '534.30', 'Safari' => '4.0') ), + 'Mozilla/5.0 (Linux; Android 4.2.1; ME301T Build/JOP40D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Safari/537.36' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.2.1', 'Build' => 'JOP40D') ), + 'Mozilla/5.0 (Linux; Android 4.2.1; ME173X Build/JOP40D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Safari/537.36' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.2.1', 'Build' => 'JOP40D') ), + 'Mozilla/5.0 (Linux; Android 4.2.2; TF300T Build/JDQ39E) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.2.2', 'Build' => 'JDQ39E') ), + 'Mozilla/5.0 (Linux; Android 4.2.2; K00C Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.2.2; K00E Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.2.2; K00F Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.2.2; K00L Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.131 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.2.2; ME302KL Build/JDQ39) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Safari/537.31' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.4.2; K010 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.111 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.4.2; K017 Build/KVT49L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.111 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + ), +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Blackberry.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Blackberry.php new file mode 100644 index 00000000000..7f1c106e47d --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Blackberry.php @@ -0,0 +1,35 @@ +<?php +return array( + 'BlackBerry' => array( + 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9300; en) AppleWebKit/534.8+ (KHTML, like Gecko) Version/6.0.0.546 Mobile Safari/534.8+' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Webkit' => '534.8+', 'BlackBerry' => '6.0.0.546'), 'model' => 'BlackBerry 9300' ), + 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9360; en-US) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.0.0.400 Mobile Safari/534.11+' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9700; he) AppleWebKit/534.8+ (KHTML, like Gecko) Version/6.0.0.723 Mobile Safari/534.8+' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9700; en-US) AppleWebKit/534.8 (KHTML, like Gecko) Version/6.0.0.448 Mobile Safari/534.8' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9790; en-GB) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.714 Mobile Safari/534.11+' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Webkit' => '534.11+', 'BlackBerry' => '7.1.0.714'), 'model' => 'BlackBerry 9790' ), + 'Opera/9.80 (BlackBerry; Opera Mini/7.0.29990/28.2504; U; en) Presto/2.8.119 Version/11.10' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9981; en-GB) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.342 Mobile Safari/534.11+' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9800; en-GB) AppleWebKit/534.8+ (KHTML, like Gecko) Version/6.0.0.546 Mobile Safari/534.8+' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9780; es) AppleWebKit/534.8 (KHTML, like Gecko) Version/6.0.0.480 Mobile Safari/534.8' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9810; en-US) AppleWebKit/534.11 (KHTML, like Gecko) Version/7.0.0.583 Mobile Safari/534.11' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9860; es) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.0.0.576 Mobile Safari/534.11+' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9900; en-US) AppleWebKit/534.11 (KHTML, like Gecko) Version/7.1.0.523 Mobile Safari/534.11' => array('isMobile' => true, 'isTablet' => false), + 'BlackBerry8520/5.0.0.592 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/136' => array('isMobile' => true, 'isTablet' => false), + 'BlackBerry8520/5.0.0.1067 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/603' => array('isMobile' => true, 'isTablet' => false), + 'BlackBerry8520/5.0.0.1036 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/611' => array( 'isMobile' => true, 'isTablet' => false, 'version' => array('BlackBerry' => '5.0.0.1036', 'VendorID' => '611'), 'model' => 'BlackBerry8520' ), + 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9220; en) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.337 Mobile Safari/534.11+' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (PlayBook; U; RIM Tablet OS 2.1.0; en-US) AppleWebKit/536.2+ (KHTML, like Gecko) Version/7.2.1.0 Safari/536.2+' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (BB10; Touch) AppleWebKit/537.1+ (KHTML, like Gecko) Version/10.0.0.1337 Mobile Safari/537.1+' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (BB10; Touch) AppleWebKit/537.10+ (KHTML, like Gecko) Version/10.0.9.2372 Mobile Safari/537.10+' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (BB10; Touch) /537.10+ (KHTML, like Gecko) Version/10.0.9.2372 Mobile Safari/537.10+' => array( 'isMobile' => true, 'isTablet' => false, 'version' => array('BlackBerry' => '10.0.9.2372') ), + 'Mozilla/5.0 (Linux; U; Android 3.2.1; en-us; Transformer TF101 Build/HTK75) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '3.2.1', 'Webkit' => '534.13', 'Safari' => '4.0'), 'model' => 'Transformer TF101' ), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; de-de; A200 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.3', 'Webkit' => '534.30', 'Safari' => '4.0'), 'model' => 'A200' ), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; A500 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.3', 'Webkit' => '534.30', 'Safari' => '4.0'), 'model' => 'A500' ), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; A501 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.3', 'Webkit' => '534.30', 'Safari' => '4.0'), 'model' => 'A501' ), + 'Mozilla/5.0 (Linux; Android 4.1.1; Transformer Build/JRO03L) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.1', 'Webkit' => '535.19', 'Chrome' => '18.0.1025.166'), 'model' => 'Transformer' ), + 'Mozilla/5.0 (Linux; Android 4.1.1; ASUS Transformer Pad TF300T Build/JRO03C) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.1', 'Webkit' => '535.19', 'Chrome' => '18.0.1025.166'), 'model' => 'Transformer Pad TF300T' ), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; fr-fr; Transformer Build/JZO54K; CyanogenMod-10) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.2', 'Webkit' => '534.30', 'Safari' => '4.0', 'Build' => 'JZO54K'), 'model' => 'Transformer' ), + 'Mozilla/5.0 (Linux; Android 4.1.2; B1-A71 Build/JZO54K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.2', 'Webkit' => '535.19', 'Chrome' => '18.0.1025.166'), 'model' => 'B1-A71' ), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Acer; Allegro)' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Windows Phone OS' => '7.5', 'Trident' => '5.0', 'IE' => '9.0'), 'model' => 'Allegro' ), + ), + +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Dell.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Dell.php new file mode 100644 index 00000000000..2c94b9728a1 --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Dell.php @@ -0,0 +1,13 @@ +<?php +return array( + 'Dell' => array( + 'Mozilla/5.0 (Linux; U; Android 1.6; en-gb; Dell Streak Build/Donut AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/ 525.20.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.7; hd-us; Dell Venue Build/GWK74; CyanogenMod-7.2.0) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; DELL; Venue Pro)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; Venue 8 3830 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.4.2; Venue 7 3730 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.4.2; Venue 7 HSPA+ Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.117 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.3; en-us; Venue 8 3830 Build/JSS15Q) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 3.2; zh-cn; Dell Streak 10 Pro Build/HTJ85B) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true), + ), +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Google.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Google.php new file mode 100644 index 00000000000..688653304cd --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Google.php @@ -0,0 +1,18 @@ +<?php +return array( + 'Google' => array( + 'Mozilla/5.0 (Linux; U; Android 2.2; en-us; Nexus One Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; Nexus 4 Build/JDQ39) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.40 Mobile Safari/537.31 OPR/14.0.1074.54070' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Android' => '4.2.2', 'Build' => 'JDQ39', 'Webkit' => '537.31', 'Opera' => '14.0.1074.54070') ), + 'Mozilla/5.0 (Linux; Android 4.2.2; Nexus 4 Build/JDQ39) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Android' => '4.2.2', 'Chrome' => '26.0.1410.58')), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; Google Nexus 4 - 4.1.1 - API 16 - 768x1280 Build/JRO03S) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; Google Galaxy Nexus - 4.1.1 - API 16 - 720x1280 Build/JRO03S) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.2; Nexus 7 Build/JOP40C) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.1.2; Nexus 7 Build/JZ054K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.2', 'Chrome' => '18.0.1025.166') ), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; cs-cz; Nexus S Build/JZO54K; CyanogenMod-10.0.0) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; Nexus 10 Build/JWR66Y) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android; en_us; Nexus 7 Build/) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 NetFrontLifeBrowser/2.3 Mobile (Dragonfruit)' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 5.1; Nexus 5 Build/LMY47D) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/39.0.0.0 Mobile Safari/537.36 momoWebView/6.3.1 android/404(Nexus 5;android 5.1;zh_CN;10;netType/1)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; Nexus 10 Build/JWR66Y) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.92 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + ), +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/HP.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/HP.php new file mode 100644 index 00000000000..4f8b14a8217 --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/HP.php @@ -0,0 +1,21 @@ +<?php +return array( + 'HP' => array( + 'Mozilla/5.0 (hp-tablet; Linux; hpwOS/3.0.5; U; en-GB) AppleWebKit/534.6 (KHTML, like Gecko) wOSBrowser/234.83 Safari/534.6 TouchPad/1.0' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-gb; HP Slate 7 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.1.1; HP Slate 7 Build/JRO03H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; HP 8 Build/1.0.7_WW-FIR-13) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.2.2; HP Slate 10 HD Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Safari/537.36' => array( + 'isMobile' => true, 'isTablet' => true + ), + 'Mozilla/5.0 (Linux; Android 4.4.2; HP Slate 8 Pro Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Safari/537.36' => array( + 'isMobile' => true, 'isTablet' => true + ), + 'Mozilla/5.0 (Linux; Android 4.2.2; Slate 21 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.138 Safari/537.36 OPR/22.0.1485.78487' => array( + 'isMobile' => true, 'isTablet' => true + ), + 'Mozilla/5.0 (Linux; Android 4.3; HP SlateBook 10 x2 PC Build/4.3-17r20-03-23) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Safari/537.36' => array( + 'isMobile' => true, 'isTablet' => true + ), + ), +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/HTC.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/HTC.php new file mode 100644 index 00000000000..cf6caebacc1 --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/HTC.php @@ -0,0 +1,363 @@ +<?php +return array( + 'HTC' => array( + 'Mozilla/5.0 (X11; Linux x86_64; Z520m; en-ca) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.34 Safari/534.24' => array('isMobile' => true, 'isTablet' => false), + 'HTC_Touch_HD_T8282 Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.11)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 1.5; en-us; ADR6200 Build/CUPCAKE) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.1; xx-xx; Desire_A8181 Build/ERE27) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.1-update1; de-de; HTC Desire 1.19.161.5 Build/ERE27) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.1-update1; en-gb; HTC Desire Build/ERE27) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.2; fr-fr; HTC Desire Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.2; en-dk; Desire_A8181 Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.2; xx-xx; 001HT Build/FRF91) AppleWebKit/525.10+ (KHTML, like Gecko) Version/3.0.4 Mobile Safari/523.12.2' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.2; xx-xx; HTCA8180/1.0 Android/2.2 release/06.23.2010 Browser/WAP 2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.2.2; de-at; HTC Desire Build/FRG83G) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.2.2; en-sk; Desire_A8181 Build/FRG83G) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3; xx-xx; HTC/DesireS/1.07.163.1 Build/GRH78C) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.3; en-lv; HTC_DesireZ_A7272 Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; ADR6300 Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.5; en-gb; HTC/DesireS/2.10.161.3 Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.5; ru-ru; HTC_DesireS_S510e Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.5; en-us; Inspire 4G Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.5; de-de; HTC Explorer A310e Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.5; en-gb; HTC_ChaCha_A810e Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.5; nl-nl; HTC_DesireHD_A9191 Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.5; ru-ru; HTC Desire S Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.3; en-au; HTC Desire Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.5; de-de; HTC_DesireHD Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.5; ru-ua; HTC_WildfireS_A510e Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.7; en-us; HTC Vision Build/GRI40; ILWT-CM7) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0; xx-xx; HTC_GOF_U/1.05.161.1 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; hu-hu; HTC Sensation Z710e Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; zh-cn; HTC Sensation XE with Beats Audio Z715e Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 XiaoMi/MiuiBrowser/1.0' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; pl-pl; EVO3D_X515m Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; ru-ru; HTC_One_S Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; ru-ru; HTC_One_V Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; zh-cn; HTC_A320e Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; zh-tw; HTC Desire V Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.3; PG86100 Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-nl; SensationXE_Beats_Z715e Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; ADR6425LVW 4G Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.3; HTC One V Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; cs-ee; Sensation_Z710e Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; HTC Evo 4G Build/MIUI) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.4; Desire HD Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-my; HTC_One_X Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; it-it; IncredibleS_S710e Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; fr-fr; HTC_Desire_S Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One X Build/JRO03C) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC Butterfly Build/JRO03C) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; EVO Build/JRO03C) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.169 Mobile Safari/537.22' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; HTCSensation Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; GT-S6312 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC 7 Mozart T8698; QSD8x50)' => array( + 'isMobile' => true, 'isTablet' => false, 'version' => array('IE' => '9.0', 'Windows Phone OS' => '7.5', 'Trident' => '5.0'), 'model' => '7 Mozart T8698', + ), + 'Mozilla/5.0 (Linux; U; Android 3.2.1; en-gb;HTC_Flyer_P512 Build/HTK75C) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true), + + 'Mozilla/5.0 (Linux; U; Android 3.1; zh-tw; HTC PG09410 Build/HMJ15) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true), + + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 HTC MOZART)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 Mondrian T8788)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 Mozart T8698)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 Mozart)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 Mozart; Orange)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 Pro T7576)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 Pro)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 Schubert T9292)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 Surround)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 Trophy T8686)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 Trophy)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Eternity)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Gold)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; HD2 LEO)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; HD2)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; HD7 T9292)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; HD7)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; iPad 3)' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; LEO)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Mazaa)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Mondrian)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Mozart T8698)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Mozart)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; mwp6985)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; PC40100)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; PC40200)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; PD67100)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; PI39100)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; PI86100)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Radar 4G)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Radar C110e)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Radar C110e; 1.08.164.02)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Radar C110e; 2.05.164.01)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Radar C110e; 2.05.168.02)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Radar)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Radar; Orange)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Schuber)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Schubert T9292)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Schubert)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Spark)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Surround)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; T7575)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; T8697)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; T8788)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; T9295)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; T9296)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; TITAN X310e)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Titan)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Torphy T8686)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; X310e)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC_blocked; T8788)' => array( + 'isMobile' => true, 'isTablet' => false, 'version' => array('IE' => '9.0', 'Windows Phone OS' => '7.5', 'Trident' => '5.0'), 'model' => 'T8788', + ), + + 'Mozilla/5.0 (Linux; Android 4.0.4; HTC One S Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; de-de; HTC One X Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-th; HTC One V Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.4; HTC One X Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-id; HTC One X Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.3; HTC One S Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One S Build/JRO03C) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.3; HTC One X Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; de-at; HTC One S Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One X Build/JRO03L) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-gb; HTC One S Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One X Build/JRO03C) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.123 Mobile Safari/537.22' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One S Build/JRO03C) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.123 Mobile Safari/537.22' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One X Build/JRO03C) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.169 Mobile Safari/537.22' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; HTC One X Build/JZO54K) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.169 Mobile Safari/537.22' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; es-pe; HTC One V Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One S Build/JRO03C) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.169 Mobile Safari/537.22' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.3; HTC One V Build/IML74K) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; de-de; HTC One X Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 Maxthon/4.0.4.1000' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.3; HTC One X Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19 AlexaToolbar/alxf-2.17' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One X Build/JRO03C) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; HTC One Build/JZO54K) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.3; HTC One S Build/IML74K) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One S Build/JRO03C) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One X Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.90 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One S Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.90 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; HTC One Build/JZO54K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; HTC One Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.90 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; de-de; HTC One Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One S Build/JRO03C) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31 OPR/14.0.1074.58201' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; es-es; HTC One S Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; HTC One Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.64 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One S Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.64 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.3; HTC One V Build/IML74K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.64 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One X Build/JDQ39E) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One XL Build/JRO03C) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One S Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.63 Mobile Safari/537.36 OPR/15.0.1162.60140' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; de-de; HTC One S Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; HTC One Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One X Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.3; HTC One X Build/IML74K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One S Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; HTC One Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.59 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.59 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One S Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.24 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'HTC One X Linux/3.0.13 Android/4.1.9 Release/10.12.2012 Browser/AppleWebKit534.30 Profile/MIDP-2.0 Configuration/CLDC-1.1 Mobile Safari/534.30 Android 4.0.1;' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One X Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.59 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; zh-tw; HTC One 801e Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.4; HTC One X Build/IMM76D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.63 Mobile Safari/537.36 OPR/15.0.1162.61541' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.3; HTC One XL Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; HTC One Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One X Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One X+ Build/JRO03C) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; HTC One X Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30/4.05d.1002.m7' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-in; HTC One V Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One X Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.3; HTC One V Build/IML74K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; ru-ru; HTC One X Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 MicroMessenger/5.0.1.352' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; HTC One X Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-gb; HTC One Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One S Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; HTC One SV Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.82 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One S Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.82 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.3; HTC One V Build/IML74K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.82 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.82 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One X Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.82 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One S Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.92 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One mini Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.82 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; HTC One Build/IMM76D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; HTC One Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.82 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; HTC One 801e Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One X Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.92 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.92 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One X Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.92 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-ch; HTC One Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; nl-nl; HTC One X Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; HTC One Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.92 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One X Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; HTC One Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One S Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; zh-cn; HTC One S Build/IML74K) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17 T5/2.0 baidubrowser/3.1.6.4 (Baidu; P1 4.0.3)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One X Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One X+ Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.3; en-us; HTC One 801e Build/JSS15J) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/9.4.1.362 U3/0.8.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4; HTC One Build/KRT16S.H5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One S Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.94 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; HTC One SV Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.1; ru-ru; HTC One Build/JOP40D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; HTC One Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One X Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; ru-ru; HTC One 801e Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One 801e Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One mini Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.12975 YaBrowser/13.12.1599.12975 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4; HTC One Build/KRT16S) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.3; en-us; HTC One Build/JSS15J) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One X Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; HTC One X Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; HTC One Build/JWR66Y.H1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.93 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.3; de-at; HTC One Build/JSS15J) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; HTC One Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.136 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.135 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One X+ Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.136 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One dual sim Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.136 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.4; HTC One S Build/IMM76D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.136 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One max Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.132 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One S Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.136 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; HTC One mini Build/JSS15Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.136 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; HTC One 801e Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.136 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; zh-cn; HTC One Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 MicroMessenger/5.2.380' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.136 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.166 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.3; HTC One X Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; HTC One Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.166 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One X Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.166 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One X+ Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.166 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.132 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; HTC One Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.4; HTC One X Build/IMM76D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; it-it; HTC One S Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-kw; HTC One X+ Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One max Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36 MicroMessenger/5.3.0.49_r693790.420' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One S Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.122 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; HTC One Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.122 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One X Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.122 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; ru; HTC One V Build/IML74K) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/9.7.5.418 U3/0.8.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.138 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36 MicroMessenger/5.2.1.381' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One S Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.122 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One mini Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.138 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.4.2; ru-ru; HTC One mini Build/KOT49H) AppleWebKit/537.16 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.16' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; ru; HTC One V Build/IML74K) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/9.8.0.435 U3/0.8.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One 801e Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One X Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; HTC One X - 4.2.2 - API 17 - 720x1280 Build/JDQ39E) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One S Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One_M8 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.3; HTC One V Build/IML74K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.138 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One X Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.94 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One X+ Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.128 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One_M8 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.128 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One X Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.128 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One_M8 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.131 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.131 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One X Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.131 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.3; HTC One_M8 Build/KTU84L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.131 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; HTC One VX Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.131 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.76 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One_M8 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.135 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.135 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.3; HTC One V Build/IML74K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One dual sim Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One S Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.135 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One dual sim Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.138 Mobile Safari/537.36 OPR/22.0.1485.78487' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One X+ Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.135 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; HTC One Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.131 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.3; HTC One_M8 Build/KTU84L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.135 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One X Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.135 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; HTC One Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.117 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.3; HTC One Build/KTU84L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.135 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.3; HTC One 801e Build/KTU84L) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/33.0.0.0 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.3; HTC One 801e Build/KTU84L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.117 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.3; HTC One X Build/IML74K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.138 Mobile Safari/537.36 OPR/22.0.1485.81203' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One X Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.117 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One 801e Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.3; HTC One Build/KTU84L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.117 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One mini Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.135 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One S Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.117 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; zh-tw; HTC One S Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.3; HTC One_M8 Build/KTU84L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.117 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; HTC One V Build/IML74K) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/9.9.2.467 U3/0.8.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.117 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; HTC One mini Build/JSS15Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.117 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.4.2; en-us; HTC One_M8 Build/KOT49H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.117 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.3; HTC One dual sim Build/KTU84L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.117 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One X Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.72 Mobile Safari/537.36 OPR/19.0.1340.69721' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; HTC One Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.102 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.3; HTC One Build/KTU84L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.102 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.3; HTC One_M8 Build/KTU84L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.102 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One_M8 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.102 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One SV Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.102 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.3; HTC One Build/KTU84L) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/33.0.0.0 Mobile Safari/537.36 ACHEETAHI/2100050056' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.4; HTC One_M8 Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.102 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One X Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.102 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.3; HTC One Build/KTU84L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.114 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.3; HTC One_M8 Build/KTU84L) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/33.0.0.0 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One X Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.114 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; HTC One Build/JWR66Y.H1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.114 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; zh-tw; HTC One SV Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One mini Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.114 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.114 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.4; HTC One_M8 Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/33.0.0.0 Mobile Safari/537.36 [FBAN/FB4A;FBAV/21.0.0.23.12;]' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; zh-tw; HTC One X Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.4; HTC One_M8 Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.59 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.3; HTC One Build/KTU84L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.59 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; ru-si; HTC One X Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 MicroMessenger/6.0.0.67_r853700.483 NetType/WIFI' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One_M8 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36 [FBAN/FB4A;FBAV/22.0.0.15.13;]' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-US; HTC One X Build/JRO03C) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/10.0.1.512 U3/0.8.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.4; HTC One Build/KTU84P.H1) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/33.0.0.0 Mobile Safari/537.36 [FBAN/FB4A;FBAV/22.0.0.15.13;]' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One mini Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36 [FBAN/FB4A;FBAV/22.0.0.15.13;]' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One SV Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.59 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.4; HTC One_M8 Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.93 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.3; HTC One Build/KTU84L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.93 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.3; HTC One Build/KTU84L) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/33.0.0.0 Mobile Safari/537.36 [FBAN/FB4A;FBAV/22.0.0.15.13;]' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One_M8 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; zh-tw; HTC One X+ Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.4; HTC One_M8 Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/33.0.0.0 Mobile Safari/537.36 BingWeb/5.2.0.20140710' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; HTC One Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.93 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; es-mx; HTC One S Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 [FBAN/FB4A;FBAV/23.0.0.22.14;]' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One mini Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.4.3; es-es; HTC One 801e Build/KTU84L) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One mini Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.93 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One X+ Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.93 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One_M8 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.69 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; ru-ru; HTC One S Build/JRO03C) AppleWebKit/537.16 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.16' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.3; HTC One Build/KTU84L) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/33.0.0.0 Mobile Safari/537.36 [FB_IAB/FB4A;FBAV/24.0.0.30.15;]' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.4.2; en-th; HTC One Build/KOT49H) AppleWebKit/537.16 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.16' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; es-ar; HTC One X Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 [FB_IAB/FB4A;FBAV/24.0.0.30.15;]' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One_M8 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36 [FB_IAB/FB4A;FBAV/24.0.0.30.15;]' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.93 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; es-us; HTC One X+ Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 [FB_IAB/FB4A;FBAV/24.0.0.30.15;]' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; es-mx; HTC One S Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 [FB_IAB/FB4A;FBAV/24.0.0.30.15;]' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36 [FB_IAB/FB4A;FBAV/24.0.0.30.15;]' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.136 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.3; HTC One Build/KTU84L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.89 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One dual sim Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.89 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36 [FB_IAB/FB4A;FBAV/25.0.0.19.30;]' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 5.0.1; HTC One_M8 Build/LRX22C) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/37.0.0.0 Mobile Safari/537.36 [FB_IAB/FB4A;FBAV/25.0.0.19.30;]' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.89 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.4; HTC One_M8 Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.109 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One X Build/JDQ39) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One mini Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.109 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 5.0.1; HTC One_M8 Build/LRX22C.H5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.109 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + + ), +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Huawei.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Huawei.php new file mode 100644 index 00000000000..f5ffca8e568 --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Huawei.php @@ -0,0 +1,17 @@ +<?php +return array( + 'Huwaei' => array( + 'Mozilla/5.0 (Linux; U; Android 2.1-update1; bg-bg; Ideos S7 Build/ERE27) AppleWebKit/525.10+ (KHTML, like Gecko) Version/3.0.4 Mobile Safari/523.12.2' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 2.1; en-us; Ideos S7 Build/ERE27) AppleWebKit/525.10+ (KHTML, like Gecko) Version/3.0.4 Mobile Safari/523.12.2' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 2.3.6; lt-lt; U8660 Build/HuaweiU8660) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.7; ru-ru; HUAWEI-U8850 Build/HuaweiU8850) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 3.2; pl-pl; MediaPad Build/HuaweiMediaPad) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 3.2; nl-nl; HUAWEI MediaPad Build/HuaweiMediaPad) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true), + 'HUAWEI_T8951_TD/1.0 Android/4.0.4 (Linux; U; Android 4.0.4; zh-cn) Release/05.31.2012 Browser/WAP2.0 (AppleWebKit/534.30) Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; ar-eg; MediaPad 7 Youth Build/HuaweiMediaPad) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; zh-cn; HW-HUAWEI_C8815/C8815V100R001C541B135; 540*960; CTC/2.0) AppleWebKit/534.30 (KHTML, like Gecko) Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; zh-cn; HW-HUAWEI_C8813D/C8813DV100R001C92B172; 480*854; CTC/2.0) AppleWebKit/534.30 (KHTML, like Gecko) Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; zh-cn; HW-HUAWEI_Y300C/Y300CV100R001C92B168; 480*800; CTC/2.0) AppleWebKit/534.30 (KHTML, like Gecko) Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false) + ), + +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/LG.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/LG.php new file mode 100644 index 00000000000..1b0bc7dd767 --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/LG.php @@ -0,0 +1,35 @@ +<?php +return array( + 'LG' => array( + 'Mozilla/5.0 (Linux; U; Android 2.3.6; en-us; LG-VS410PP Build/GRK39F) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.2; en-us; LG-P509 Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 MMS/LG-Android-MMS-V1.0/1.2' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.2.2; pt-br; LG-P350f Build/FRG83G) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 MMS/LG-Android-MMS-V1.0/1.2' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.3; en-us; LG-P500 Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 MMS/LG-Android-MMS-V1.0/1.2' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.3; en-us; LS670 Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.4; ru-ru; LG-E510 Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 MMS/LG-Android-MMS-V1.0/1.2' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; VS910 4G Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; nl-nl; LG-P700 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; ko-kr; LG-L160L Build/IML74K) AppleWebkit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; LG-F160S Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; nl-nl; LG-E610v/V10f Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; LG-E612 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; LG-F180K Build/JZO54K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; LG-V500 Build/JDQ39B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; LG-LW770 Build/IMM76I) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; LG-V510 Build/KOT49H.L004) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; LG; LG E-900)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; LG; LG-C900)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; LG; LG-C900k)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; LG; LG-E900)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; LG; LG-E900; Orange)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; LG; LG-E900h)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; LG; LG-Optimus 7)' => array('isMobile' => true, 'isTablet' => false), + // @ref: http://ja.wikipedia.org/wiki/L-06C + 'Mozilla/5.0 (Linux; U; Android 3.0.1; ja-jp; L-06C Build/HRI66) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 3.0; en-us; LG-V900 Build/HRI39) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.4.2; en-gb; LG-V700 Build/KOT49I.A1403851714) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.1599.103 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.4.2; LG-V500 Build/KOT49I.V50020d) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.102 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.4.2; en-us; LG-V410/V41010d Build/KOT49I.V41010d) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.1599.103 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + ), +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Lava.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Lava.php new file mode 100644 index 00000000000..95c37868842 --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Lava.php @@ -0,0 +1,23 @@ +<?php +return array( + 'Lava' => array( + 'Mozilla/5.0 (Linux; U; Android 2.3.6; en-us; Iris 349 Build/MocorDroid2.3.5) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; iris402+ Build/iris402+) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; IRIS402 Build/LAVAIRIS402) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; iris405 Build/LAVAIRIS405) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; IRIS_501 Build/LAVAIRIS501) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; iris402e Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; iris503e Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'UCWEB/2.0 (Linux; U; Opera Mini/7.1.32052/30.3697; en-US; IRIS402) U2/1.0.0 UCBrowser/9.1.1.420 Mobile' => array('isMobile' => true, 'isTablet' => false), + 'UCWEB/2.0 (MIDP-2.0; U; Adr 4.2.2; en-US; IRIS402) U2/1.0.0 UCBrowser/9.1.1.420 U2/1.0.0 Mobile' => array('isMobile' => true, 'isTablet' => false), + 'UCWEB/2.0 (Linux; U; Opera Mini/7.1.32052/30.3697; en-US; IRIS355) U2/1.0.0 UCBrowser/9.1.1.420 Mobile' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; iris356 Build/irisIRIS356) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/9.5.0.360 U3/0.8.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'UCWEB/2.0 (Linux; U; Opera Mini/7.1.32052/30.3697; en-US; iris356) U2/1.0.0 UCBrowser/9.0.2.389 Mobile' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; iris500 Build/iris500) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; iris700 Build/iris700) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; QPAD E704 Build/JDQ39) AppleWebKit/537.36 (KHTML like Gecko) Chrome/36.0.1985.131 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.2; xx-xx; IvoryS Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; en-US; E-TAB IVORY Build/E702) AppleWebKit/534.31 (KHTML, like Gecko) UCBrowser/9.3.0.321 U3/0.8.0 Mobile Safari/534.31' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 2.3.4; tr-tr; E-TAB Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true) + ), +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Leader.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Leader.php new file mode 100644 index 00000000000..fbdf4b5cdc1 --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Leader.php @@ -0,0 +1,6 @@ +<?php +return array( + array( + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-au; TBLT10Q-32GB Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true) + ) +); \ No newline at end of file diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Lenovo.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Lenovo.php new file mode 100644 index 00000000000..d4f6e6fd53e --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Lenovo.php @@ -0,0 +1,46 @@ +<?php +return array( + 'Lenovo' => array( + + 'Mozilla/5.0 (Linux; U; Android 4.0.4; es-es; IdeaTab_A1107 Build/MR1) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.0.3; IdeaTab A2107A-H Build/IML74K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.90 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-au; ThinkPad Tablet Build/ThinkPadTablet_A400_03) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'UCWEB/2.0 (Linux; U; Opera Mini/7.1.32052/30.3697; en-US; IdeaTabA1000-G) U2/1.0.0 UCBrowser/9.2.0.419 Mobile' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.1.2; IdeaTabA1000-F Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.2.1; Lenovo A3000-H Build/JOP40D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.117 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.2.2; IdeaTab A3000-F Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Safari/537.360' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1; zh-cn; Lenovo-A3000-H/S100) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.1 Mobile Safari/534.300' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; es-us; IdeaTab A3000-F Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.0.3; IdeaTab A2107A-H Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; de-de; IdeaTab A2107A-H Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; es-es; IdeaTabA2109A Build/JRO03R) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; nl-nl; IdeaTabA2109A Build/JRO03R) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; es-es; IdeaTab_A1107 Build/MR1) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.300' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.2.2; IdeaTab S6000-H Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.138 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-gb; IdeaTab S6000-F Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.2.2; Lenovo B8000-F Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.2.2;it-it; Lenovo B8000-F/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.2.2 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; it-it; Lenovo B6000-F/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.2.2 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.2.2; Lenovo B6000-F Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.2.2; IdeaPadA10 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.166 Safari/537.36' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; Android 4.1.2; Ideapad K1 Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Safari/537.36' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; U; Android 2.3.7; de-de; IdeaPad A1 Build/GRK393; CyanogenMod-7) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; Android 4.3; Lenovo B8080-H Build/JLS36C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Safari/537.36' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; hu-hu; Lenovo A3500-FL Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; Lenovo A7600-F Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; Android 4.4.2; Lenovo A5500-F Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.131 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Lenovo A390 Linux/3.0.13 Android/4.4.2 Release/04.03.2013 Browser/AppleWebKit534.30 Profile/MIDP-2.0 Configuration/CLDC-1.1 Mobile Safari/534.30 Android 4.0.1;' => array('isMobile' => true, 'isTablet' => false), + ), +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Mi.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Mi.php new file mode 100644 index 00000000000..4cd332fcdd2 --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Mi.php @@ -0,0 +1,22 @@ +<?php +return array( + 'Mi' => array( + 'Mozilla/5.0 (Linux; U; Android 4.2; xx-xx; HM NOTE 1W Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 MobilSafari/534.30 XiaoMi/MiuiBrowser/1.0' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.1; zh-cn; MI-ONE Plus Build/ITL41D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 XiaoMi/MiuiBrowser/1.0' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.1; zh-cn; MI-ONE Plus Build/ITL41D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 XiaoMi/MiuiBrowser/1.0' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; zh-cn; MI 2SC Build/JRO03L) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 XiaoMi/MiuiBrowser/1.0' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; zh-cn; MI 2S Build/JRO03L) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 XiaoMi/MiuiBrowser/1.0' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; zh-tw; MI 1S Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 XiaoMi/MiuiBrowser/1.0' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.8; zh-cn; xiaomi2 Build/GRK39F) AppleWebKit/533.1 (KHTML, like Gecko)Version/4.0 MQQBrowser/4.4 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; es-es; MI 2A Build/miui.es JRO03L) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 XiaoMi/MiuiBrowser/1.0' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.1; zh-cn; MI 3 Build/JOP40D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 XiaoMi/MiuiBrowser/1.0' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; MI 1S Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 XiaoMi/MiuiBrowser/1.0' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.3; zh-cn; MI 3W Build/JLS36C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 XiaoMi/MiuiBrowser/1.0' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.3; zh-cn; HM 1SC Build/JLS36C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 XiaoMi/MiuiBrowser/1.0' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.3; en-us; HM 1SW Build/JLS36C) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36 XiaoMi/MiuiBrowser/2.0.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; HM NOTE 1W Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36 XiaoMi/MiuiBrowser/2.0.1' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; MI-ONE C1 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 XiaoMi/MiuiBrowser/1.0' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.4.4; en-us; MI 4W Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36 XiaoMi/MiuiBrowser/2.0.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4; MI PAD Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/33.0.0.0 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + ), +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Microsoft.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Microsoft.php new file mode 100644 index 00000000000..e46edc0904b --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Microsoft.php @@ -0,0 +1,30 @@ +<?php +return array( + 'Microsoft' => array( + // Surface tablet + 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0; Touch; .NET4.0E; .NET4.0C; Tablet PC 2.0)' => array('isMobile' => true, 'isTablet' => true, 'version' => array('IE' => '10.0', 'Windows NT' => '6.2', 'Trident' => '6.0') ), + // Ambiguos. + 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0)' => array('isMobile' => true, 'isTablet' => false), + // Ambiguos. + 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0; Touch)' => array('isMobile' => true, 'isTablet' => false), + // http://www.whatismybrowser.com/developers/unknown-user-agent-fragments + 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0; Touch; ARMBJS)' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident/6.0; Touch; MASMJS)' => array('isMobile' => false, 'isTablet' => false), + + // Thanks to Jonathan Donzallaz! + // Firefox (nightly) in metro mode on Dell XPS 12 + 'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:25.0) Gecko/20130626 Firefox/25.0' => array('isMobile' => false, 'isTablet' => false), + // Firefox in desktop mode on Dell XPS 12 + 'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0' => array('isMobile' => false, 'isTablet' => false), + // IE10 in metro mode on Dell XPS 12 + 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident/6.0; MDDCJS)' => array('isMobile' => false, 'isTablet' => false), + // IE10 in desktop mode on Dell XPS 12 + 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0; MDDCJS)' => array('isMobile' => false, 'isTablet' => false), + // Opera on Dell XPS 12 + 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.52 Safari/537.36 OPR/15.0.1147.130' => array('isMobile' => false, 'isTablet' => false), + // Chrome on Dell XPS 12 + 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36' => array('isMobile' => false, 'isTablet' => false), + // Google search app from Windows Store + 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident/6.0; Touch; MDDCJS; WebView/1.0)' => array('isMobile' => false, 'isTablet' => false), + ), +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Motorola.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Motorola.php new file mode 100644 index 00000000000..d322660d1f3 --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Motorola.php @@ -0,0 +1,52 @@ +<?php +return array( + 'Motorola' => array( + 'MOT-W510/08.11.05R MIB/BER2.2 Profile/MIDP-2.0 Configuration/CLDC-1.1 EGE/1.0 UP.Link/6.3.0.0.0' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.2.2; zh-cn; ME722 Build/MLS2GC_2.6.0) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; DROIDX Build/4.5.1_57_DX8-51) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.5; en-us; MB855 Build/4.5.1A-1_SUN-254_13) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.5; es-us; MB526 Build/4.5.2-51_DFL-50) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.6; en-ca; MB860 Build/4.5.2A-51_OLL-17.8) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.7; en-us; MOT-XT535 Build/V1.540) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.7; ko-kr; A853 Build/SHOLS_U2_05.26.3; CyanogenMod-7.1.2) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 3.0; en-us; Xoom Build/HRI39) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 3.1; en-us; Xoom Build/HMJ25) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; DROID RAZR 4G Build/6.7.2-180_DHD-16_M4-31) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; Xoom Build/IMM76L) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; pt-br; XT687 Build/V2.27D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Android' => '4.0.4', 'Webkit' => '534.30', 'Safari' => '4.0'), 'model' => 'XT687' ), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; es-es; MOT-XT910 Build/6.7.2-180_SPU-19-TA-11.6) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; XT910 Build/9.8.2O-124_SPUL-17) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; XT915 Build/2_32A_2031) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; XT919 Build/2_290_2017) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.64 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; XT925 Build/9.8.2Q-50-XT925_VQLM-20) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.90 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; XT907 Build/9.8.1Q-66) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.90 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; XT901 Build/9.8.2Q-50_SLS-13) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; DROID BIONIC Build/9.8.2O-72_VZW-22) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + + 'Mozilla/5.0 (Linux; Android 4.4.2; XT1022 Build/KXC20.82-14) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.4.4; en-in; XT1022 Build/KXC21.5-40) AppleWebKit/537.16 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.16'=> array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; XT1025 Build/KXC20.82-13) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; XT1052 Build/KLA20.16-2.16.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-gb; XT1052 Build/13.9.0Q2.X_83) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; XT1053 Build/13.9.0Q2.X_61) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; XT1053 Build/13.9.0Q2.X_55) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; XT1056 Build/13.9.0Q2.X-116-MX-17-6-2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.64 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; XT1031 Build/KXB20.9-1.10-1.18-1.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.4; XT1032 Build/KXB21.14-L1.40) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.4.2; de-de; XT1032 Build/KLB20.9-1.10-1.24-1.1) AppleWebKit/537.16 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.16' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; XT1034 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.3; en-us; XT1034 Build/14.10.0Q3.X-84-16) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; XT1035 Build/14.10.0Q3.X-23) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.59 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.3; XT1039 Build/KXB21.14-L1.31) AppleWebKit/537.36 (KHTML like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; XT919 Build/2_290_2002) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; XT919 Build/2_290_2004) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.90 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; XT920 Build/2_290_2014) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; XT920 Build/2_310_2014) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.4; XT905 Build/7.7.1Q_GCIRD-16) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.169 Mobile Safari/537.22' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; XT908 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; XT897 Build/7.7.1Q-6_SPR-ASANTI_LE-18) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 5.0.2; XT1032 Build/LXB22.46-28.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.92 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 5.1.1; Moto E Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/39.0.0.0 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.4; XT1021 Build/KTU84Q) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/33.0.0.0 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + ), +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Nokia.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Nokia.php new file mode 100644 index 00000000000..99cf9d9bb62 --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Nokia.php @@ -0,0 +1,84 @@ +<?php +return array( + 'Nokia' => array( + 'Nokia200/2.0 (12.04) Profile/MIDP-2.1 Configuration/CLDC-1.1 UCWEB/2.0 (Java; U; MIDP-2.0; en-US; nokia200) U2/1.0.0 UCBrowser/8.9.0.251 U2/1.0.0 Mobile UNTRUSTED/1.0' => array('isMobile' => true, 'isTablet' => false), + 'Nokia6303iclassic/5.0 (06.61) Profile/MIDP-2.1 Configuration/CLDC-1.1 Mozilla/5.0 AppleWebKit/420+ (KHTML, like Gecko) Safari/420+' => array('isMobile' => true, 'isTablet' => false), + 'nokian73-1/UC Browser7.8.0.95/69/400 UNTRUSTED/1.0' => array('isMobile' => true, 'isTablet' => false), + 'Nokia2760/2.0 (06.82) Profile/MIDP-2.1 Configuration/CLDC-1.1' => array('isMobile' => true, 'isTablet' => false), + 'Nokia3650/1.0 SymbianOS/6.1 Series60/1.2 Profile/MIDP-1.0 Configuration/CLDC-1.0' => array('isMobile' => true, 'isTablet' => false), + 'NokiaN70-1/5.0737.3.0.1 Series60/2.8 Profile/MIDP-2.0 Configuration/CLDC-1.1/UC Browser7.8.0.95/27/352' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (S60V3; U; ru; NokiaN73) AppleWebKit/530.13 (KHTML, like Gecko) UCBrowser/8.6.0.199/28/444/UCWEB Mobile' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (S60V3; U; ru; NokiaC5-00.2)/UC Browser8.5.0.183/28/444/UCWEB Mobile' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (S60V3; U; ru; NokiaC5-00.2) AppleWebKit/530.13 (KHTML, like Gecko) UCBrowser/8.7.0.218/28/352/UCWEB Mobile' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Series40; NokiaC3-00/08.63; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/2.2.0.0.33' => array('isMobile' => true, 'isTablet' => false), + 'Opera/9.80 (Series 60; Opera Mini/7.0.31380/28.2725; U; es) Presto/2.8.119 Version/11.10' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Opera Mini' => '7.0.31380', 'Presto' => '2.8.119')), + 'Mozilla/5.0 (Symbian/3; Series60/5.2 NokiaC7-00/025.007; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.37 Mobile Safari/533.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Symbian/3; Series60/5.2 NokiaX7-00/022.014; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.37 Mobile Safari/533.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Symbian/3; Series60/5.3 NokiaE6-00/111.140.0058; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/535.1 (KHTML, like Gecko) NokiaBrowser/8.3.1.4 Mobile Safari/535.1 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Symbian/3; Series60/5.3 NokiaC6-01/111.040.1511; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/535.1 (KHTML, like Gecko) NokiaBrowser/8.3.1.4 Mobile Safari/535.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Symbian/3; Series60/5.3 NokiaC6-01; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.4.2.6 Mobile Safari/533.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Symbian/3; Series60/5.3 Nokia700/111.030.0609; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.4.2.6 Mobile Safari/533.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Symbian/3; Series60/5.3 Nokia700/111.020.0308; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.4.1.14 Mobile Safari/533.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Symbian/3; Series60/5.3 NokiaN8-00/111.040.1511; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/535.1 (KHTML, like Gecko) NokiaBrowser/8.3.1.4 Mobile Safari/535.1 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Symbian/3; Series60/5.3 Nokia701/111.030.0609; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.4.2.6 Mobile Safari/533.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 Nokia6120c/3.83; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 Nokia6120ci/7.02; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 Nokia6120c/7.10; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaE66-1/510.21.009; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaE71-1/110.07.127; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaN95-3/20.2.011 Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaE51-1/200.34.36; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaE63-1/500.21.009; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaN82/10.0.046; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.3; Series60/3.2 NokiaE52-1/052.003; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 BrowserNG/7.2.6.2' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.3; Series60/3.2 NokiaE52-1/@version@; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.26 Mobile Safari/533.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.3; Series60/3.2 NokiaC5-00/031.022; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 BrowserNG/7.2.3.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.3; Series60/3.2 NokiaC5-00.2/081.003; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.32 Mobile Safari/533.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.3; U; Series60/3.2 NokiaN79-1/32.001; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.3; U; Series60/3.2 Nokia6220c-1/06.101; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.3; Series60/3.2 NokiaC5-00.2/071.003; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.26 Mobile Safari/533.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.3; Series60/3.2 NokiaE72-1/081.003; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.32 Mobile Safari/533.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.3; Series60/3.2 NokiaC5-00/061.005; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 BrowserNG/7.2.6.2 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 NokiaX6-00/40.0.002; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.33 Mobile Safari/533.4 3gpp-gb' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 Nokia5800d-1/60.0.003; Profile/MIDP-2.1 Configuration/CLDC-1.1 AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.33 Mobile Safari/533.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 NokiaC5-03/12.0.023; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 BrowserNG/7.2.6.9 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 Nokia5228/40.1.003; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 BrowserNG/7.2.7.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 Nokia5230/51.0.002; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.33 Mobile Safari/533.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 Nokia5530c-2/32.0.007; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 BrowserNG/7.2.6.9 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 NokiaN97-1/21.0.045; Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/525 (KHTML, like Gecko) BrowserNG/7.1.4' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 NokiaN97-4/30.0.004; Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.28 3gpp-gba' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Symbian' => '9.4', 'Webkit' => '533.4', 'NokiaBrowser' => '7.3.1.28'), 'model' => 'NokiaN97-4' ), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; 7 Mozart T8698)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; 710)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; 800)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; 800C)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; 800C; Orange)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; 900)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; HD7 T9292)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; LG E-900)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 610)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 710)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 710; Orange)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 710; T-Mobile)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 710; Vodafone)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 800)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 800) UP.Link/5.1.2.6' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 800; Orange)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 800; SFR)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 800; T-Mobile)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 800; vodafone)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; Lumia 800c)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 900)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; Lumia 920)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920)' => array('isMobile' => true, 'isTablet' => false, 'version' => array('IE' => '10.0', 'Windows Phone OS' => '8.0', 'Trident' => '6.0'), 'model' => 'Lumia 920' ), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; lumia800)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Nokia 610)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Nokia 710)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Nokia 800)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Nokia 800C)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Nokia 900)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; Nokia)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; SGH-i917)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; TITAN X310e)' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Windows Phone OS' => '7.5', 'Trident' => '5.0'), 'model' => 'TITAN X310e' ), + 'Mozilla/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 520) like iPhone OS 7_0_3 Mac OS X AppleWebKit/537 (KHTML, like Gecko) Mobile Safari/537' => array('isMobile' => true, 'isTablet' => false), + ), +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Onda.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Onda.php new file mode 100644 index 00000000000..3887f5d8018 --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Onda.php @@ -0,0 +1,12 @@ +<?php +return array( + 'Onda' => array( + 'Mozilla/5.0 (Linux; Android 4.2.2; V975i Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.108 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Android; Tablet; rv:37.0) Gecko/37.0 Firefox/37.0' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.4.2; V975m Core4 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.3; fr-fr; V975m Core4 Build/JSS15J) AppleWebKit/537.16 (KHTML, like Gecko) Version/4.0 Safari/537.16' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.3; V975m Core4 Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.96 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.4.2; V812 Core4 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.93 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + ) + +); \ No newline at end of file diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Others.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Others.php new file mode 100644 index 00000000000..56d64079ca2 --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Others.php @@ -0,0 +1,531 @@ +<?php +return array( + + 'AdvanDigital' => array( + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; E1C Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; id-id; T3C Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + ), + + 'Ainol' => array( + + 'Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Ainol Novo8 Advanced Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.1.1; Novo10 Hero Build/20121115) AppleWebKit/535.19 (KHTML like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; es-es; novo9-Spark Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + + ), + 'AllFine' => array( + 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-gb; FINE7 GENIUS Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + ), + + 'Amoi' => array( + 'Amoi 8512/R18.0 NF-Browser/3.3' => array('isMobile' => true, 'isTablet' => false, 'model' => '8512'), + ), + + 'Arnova' => array( + 'Mozilla/5.0 (Linux; U; Android 4.0.3; fr-fr; AN9G2I Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + ), + + 'AudioSonic' => array( + 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-au; T-17B Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + ), + + + 'Blaupunkt' => array( + 'Mozilla/5.0 (Linux; U; Android 4.1.1; de-de; Endeavour 800NG Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true, + ), + ), + + 'Broncho' => array( + + 'Mozilla/5.0 (Linux; U; Android 2.2; es-es; Broncho N701 Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), + + ), + + // @ref: http://www.bqreaders.com/gb/tablets-prices-sale.html + 'bq' => array( + 'Mozilla/5.0 (Linux; U; Android 4.0.4; es-es; bq Livingstone 2 Build/1.1.7 20121018-10:33) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; es-es; bq Edison Build/1.1.10-1015 20121230-18:00) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.0.3; Maxwell Lite Build/v1.0.0.ICS.maxwell.20120920) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; zh-tw; bq Maxwell Plus Build/1.0.0 20120913-10:39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.4.2; Aquaris E10 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.93 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + ), + + 'Captiva' => array( + 'Opera/9.80 (X11; Linux zvav; U; de) Presto/2.8.119 Version/11.10 Mozilla/5.0 (Linux; U; Android 4.1.1; de-de; CAPTIVA PAD 10.1 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true, + ), + ), + + 'Casio' => array( + 'Mozilla/5.0 (Linux; U; Android 2.3.3; en-us; C771 Build/C771M120) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + ), + + 'ChangJia' => array( + + 'Mozilla/5.0 (Linux; U; Android 4.0.4; pt-br; TPC97113 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; TPC7102 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true) + + ), + + + 'Celkon' => array( + 'Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; Celkon CT 910+ Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-in; CT-1 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'CELKON.C64/R2AE SEMC-Browser/4.0.3 Profile/MIDP-2.0 Configuration/CLDC-1.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; Celkon A125 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.6; en-US; Celkon*A86 Build/Celkon_A86) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1 UCBrowser/8.7.0.315 Mobile' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; Celkon A.R 40 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + ), + + // @ref: http://www.cobyusa.com/?p=pcat&pcat_id=3001 + 'Coby' => array( + 'Mozilla/5.0 (Linux; U; Android 2.2; en-us; MID7010 Build/FRF85B) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; MID7048 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; MID8042 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + ), + + 'Concorde' => array( + 'Mozilla/5.0 (Linux; U; Android 4.1.1; hu-hu; ConCorde Tab T10 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; hu-hu; ConCorde tab PLAY Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + ), + + 'Cresta' => array( + 'Mozilla/5.0 (Linux; U; Android 4.0.4; nl-nl; CRESTA.CTP888 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + ), + + 'Cube' => array( + 'Mozilla/5.0 (Linux; U; Android 4.0.3; ru-ru; CUBE U9GT 2 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + ), + + 'Danew' => array( + + 'Mozilla/5.0 (Linux; U; Android 4.0.3; es-es; Dslide 700 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( 'isMobile' => true, 'isTablet' => true, 'version' => array( 'Android' => '4.0.3', 'Build' => 'IML74K', 'Webkit' => '534.30', 'Safari' => '4.0' ), 'model' => 'Dslide 700' ) + + ), + + 'DanyTech' => array( + 'Mozilla/5.0 (Linux; Android 4.2.2; Genius Tab Q4 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + ), + + + + 'Digma' => array( + 'Mozilla/5.0 (Linux; U; Android 4.0.3; ru-ru; iDx10 3G Build/ICS.b02ref.20120331) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + ), + + 'DPS' => array( + 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; DPS Dream 9 Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + ), + + 'ECS' => array( + 'Mozilla/5.0 (Linux; U; Android 4.0.4; it-it; TM105A Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.4', 'Build' => 'IMM76D', 'Webkit' => '534.30')) + ), + + 'Eboda' => array( + 'Mozilla/5.0 (Linux; U; Android 4.1.1; ro-ro; E-Boda Supreme Dual Core X190 Build/JRO03C) AppleWebKit/534.30 (KHTML like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.1', 'Webkit' => '534.30', 'Safari' => '4.0')), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; ro-ro; E-Boda Essential A160 Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.0.3; E-Boda Supreme X80 Dual Core Build/ICS.g12refM806A1YBD.20120925) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; ro-ro; E-boda essential smile Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; ro-ro; E-Boda Supreme X80 Dual Core Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; ro-ro; E-Boda Supreme XL200IPS Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + ), + + 'Evolio' => array( + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; Evolio X7 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; ro-ro; ARIA_Mini_wifi Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + ), + + 'Fly' => array( + 'Mozilla/5.0 (Linux; U; Android 4.0.4; ru-ru; Fly IQ440; Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.6; ru-ru; FLY IQ256 Build/GRK39F) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + ), + + 'Fujitsu' => array( + + 'Mozilla/5.0 (Linux; U; Android 4.0.3; ja-jp; F-10D Build/V21R48A) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.3', 'Build' => 'V21R48A', 'Webkit' => '534.30', 'Safari' => '4.0') ), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; ru-ru; M532 Build/IML74K) AppleWebKit/534.30 (KHTML like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.3', 'Build' => 'IML74K', 'Webkit' => '534.30', 'Safari' => '4.0') ), + + ), + + 'FX2' => array( + + 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; FX2 PAD7 RK Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + + ), + + // @ref: http://www.galapad.net/product.html + 'Galapad' => array( + + 'Mozilla/5.0 (Linux; U; Android 4.1.1; zh-tw; G1 Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.1', 'Webkit' => '534.30', 'Safari' => '4.0', 'Build' => 'JRO03C') ), + + ), + + 'GoClever' => array( + 'Mozilla/5.0 (Linux; U; Android 4.0.3; el-gr; GOCLEVER TAB A103 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 2.3.4; zh-tw; A7GOCLEVER Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.0.4; GOCLEVER TAB A104 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; cs-cz; GOCLEVER TAB A93.2 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; sk-sk; GOCLEVER TAB A971 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; lv-lv; GOCLEVER TAB A972BK Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; fr-fr; GOCLEVER TAB A104.2 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; pt-pt; GOCLEVER TAB T76 Build/MID) AppleWebKit/534.30 (KHTML like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + ), + + 'GU' => array( + + 'Mozilla/5.0 (Linux; U; Android 4.0.4; vi-vn; TX-A1301 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.4', 'Build' => 'IMM76D', 'Webkit' => '534.30', 'Safari' => '4.0')), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; da-dk; Q702 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.3', 'Build' => 'IML74K', 'Webkit' => '534.30', 'Safari' => '4.0')), + + ), + + 'HCL' => array( + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; U1 Build/HCL ME Tablet U1) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; U1 Build/HCL ME Tablet U1) AppleWebKit/534.30 (KHTML like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.1.2; Connect-3G-2.0 Build/HCL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 2.3.3; pt-br; X1 Build/HCL ME Tablet X1) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), + ), + + + + 'Hudl' => array( + 'Mozilla/5.0 (Linux; Android 4.2.2; Hudl HT7S3 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.82 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + ), + + + 'Iconbit' => array( + 'Mozilla/5.0 (Linux; Android 4.1.1; NT-3702M Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Safari/537.36 OPR/16.0.1212.65583' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; ru-ru; NetTAB SPACE II Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + ), + + 'iJoy' => array('Mozilla/5.0 (Linux; U; Android 4.1.1; fr-fr; Tablet Planet II-v3 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true)), + + 'Intenso' => array( + 'Mozilla/5.0 (Linux; U; Android 4.1.1.;de-de; INM8002KP Build/JR003H) AppleWebKit/534.30 (KHTML, like Gecko)Version/4.0 Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true, 'version' => array( + 'Android' => '4.1.1.', 'Webkit' => '534.30', 'Safari' => '4.0' + ), + ), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; TAB1004 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true, + ), + ), + + 'INQ' => array( + 'INQ1/R3.9.12 NF-Browser/3.5' => array('isMobile' => true, 'isTablet' => false, 'model' => 'INQ1'), + ), + + // @todo: Test this + 'Intex' => array( + 'Mozilla/5.0 (Linux; U; Android 2.3; en-US; Cloud_X2 Build/MocorDroid4.0.1) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1 UCBrowser/9.2.0.419 Mobile' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; Cloud Y2 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-in; Cloud X5 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + ), + + 'IRU' => array( + + 'Mozilla/5.0 (Linux; U; Android 4.1.1; ru-ru; M702pro Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + + ), + + 'JXD' => array('Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; F3000 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true) + ), + + 'Karbonn' => array( + 'Mozilla/5.0 (Linux; Android 4.1.1; ST10 Build/JRO03C) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), + ), + + 'Kobo' => array( + 'Mozilla/5.0 (Linux; U; Android 2.0; en-us;) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 (Kobo Touch)' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '2.0', 'Webkit' => '533.1', 'Safari' => '4.0') ), + ), + + 'Megafon' => array( + 'Mozilla/5.0 (Linux; U; Android 2.3.5; ru-ru; MegaFon V9 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.1.1; MT7A Build/JRO03C) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Safari/537.31' => array('isMobile' => true, 'isTablet' => true), + ), + + 'MediaTek' => array( + 'Mozilla/5.0 (Linux; U; Android 4.1.1; fr-fr; MT8377 Build/JRO03C) AppleWebKit/534.30 (KHTML like Gecko) Version/4.0 Safari/534.30/4.05d.1002.m7' => array('isMobile' => true, 'isTablet' => true), + ), + + 'Micromax' => array( + + 'Mozilla/5.0 (Linux; Android 4.1.1; Micromax A110 Build/JRO03C) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.169 Mobile Safari/537.22' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Android' => '4.1.1', 'Build' => 'JRO03C', 'Webkit' => '537.22', 'Chrome' => '25.0.1364.169') ), + 'Mozilla/5.0 (Linux; U; Android 4.0; xx-xx; Micromax P250(Funbook) Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Webkit' => '534.30', 'Android' => '4.0', 'Build' => 'IMM76D', 'Safari' => '4.0') ), + + ), + + 'Modecom' => array( + 'Mozilla/5.0 (Linux; U; Android 4.2.2; pl-pl; FreeTAB 1014 IPS X4+ Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + ), + + 'MSI' => array( + 'Mozilla/5.0 (Linux; U; Android 2.3.5; el-gr; MSI Enjoy 10 Plus Build/1.2) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), + ), + + // @ref: https://www.nabitablet.com/ + 'Nabi' => array( + 'Mozilla/5.0 (Linux; U; Android 2.2.1; en-us; NABI-A Build/MASTER) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), + ), + + 'NEC' => array( + // @ref: http://www.n-keitai.com/n-08d/?from=mediasnet + // @ref: http://devlog.dcm-gate.com/2012/03/medias-tab-n-06duseragnet.html + // @ref: http://keitaiall.jp/N-08D.html aka MEDIAS TAB + 'Mozilla/5.0 (Linux; U; Android 4.0.4; ja-jp; N-08D Build/A5001911) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android AAA; BBB; N-06D Build/CCC) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), + + ), + + 'Nexo' => array( + 'Mozilla/5.0 (Linux; U; Android 4.1.1; pl-pl; NEXO 3G Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30 ACHEETAHI/2100050074' => array('isMobile' => true, 'isTablet' => true), + ), + + 'Nibiru' => array( + 'Mozilla/5.0 (Linux; U; Android 4.2.2; zh-tw; Nibiru H1 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 XiaoMi/MiuiBrowser/1.0' => array('isMobile' => true, 'isTablet' => false), + ), + + 'Nook' => array( + + 'Mozilla/5.0 (Linux; U; Android 2.2.1; en-us; NOOK BNRV200 Build/ERD79 1.4.3) Apple WebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array( 'isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '2.2.1', 'Webkit' => '533.1', 'Safari' => '4.0') ), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; NOOK BNTV400 Build/ICS) AppleWebKit/534.30 (KHTML like Gecko) Version/4.0 Safari/534.30' => array( 'isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.4', 'Build' => 'ICS', 'Webkit' => '534.30', 'Safari' => '4.0') ), + 'Mozilla/5.0 (Linux; Android 4.0.4; BNTV600 Build/IMM76L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Safari/537.36 Hughes-PFB/CID5391275.AID1376709964' => array( 'isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.4', 'Build' => 'IMM76L', 'Webkit' => '537.36', 'Chrome' => '28.0.1500.94') ), + + ), + + 'Oneplus' => array( + 'Mozilla/5.0 (Linux; Android 4.3; A0001 Build/JLS36C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.3; xx-xx; A0001 Build/JLS36C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + ), + + 'Odys' => array( + 'Mozilla/5.0 (Linux; U; Android 4.0.3; de-de; LOOX Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; de-de; LOOX Plus Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.X; de-de; XENO10 Build/ODYS XENO 10) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 2.2.2; de-de; ODYS Space Build/I700T_P7_T04_TSCL_FT_R_0_03_1010_110623) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; de-de; ODYS-EVO Build/ODYS-EVO) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true + ), + 'Mozilla/5.0 (Linux; U; Android 4.1.X; de-de; Xelio 10 Pro Build/ODYS_Xelio) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true + ), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; NEO_QUAD10 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true + ), + 'Mozilla/5.0 (Linux; U; Android 4.1.X; de-de; Xelio10Pro Build/ODYS_Xelio) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; U; Android 2.3.1; en-us; ODYS-Xpress Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; de-de; XELIO7PHONETAB Build/IMM76I) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; XELIO10EXTREME Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; de-de; XELIO Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30 Mobile UCBrowser/3.2.1.441' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; XELIOPT2 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; nl-nl; ODYS-NOON Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + ), + + 'OverMax' => array( + 'OV-SteelCore(B) Mozilla/5.0 (iPad; CPU OS 5_0_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A405 Safari/7534.48.3' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; pl-pl; OV-SteelCore Build/ICS.g08refem611.20121010) AppleWebKit/534.30 (KHTML like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + ), + + 'YONESTablet' => array( + 'Mozilla/5.0 (Linux; U; Android 4.0.4; pl-pl; BC1077 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + ), + + // @todo: Research http://www.pantech.com/ + 'Pantech' => array( + 'PANTECH-C790/JAUS08312009 Browser/Obigo/Q05A Profile/MIDP-2.0 Configuration/CLDC-1.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.2.1; ko-kr; SKY IM-A600S Build/FRG83) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.3; en-us; ADR8995 4G Build/GRI40) AppleWebKit/533.1 (KHTML like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 3.2.1; en-us; PantechP4100 Build/HTK75) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array( + 'isMobile' => true, 'isTablet' => true), + ), + + 'Philips' => array( + 'Mozilla/5.0 (Linux; Android 4.0.4; Philips W336 Build/IMM76D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.45 Mobile Safari/537.36 OPR/15.0.1162.59192' => array('isMobile' => true, 'isTablet' => false), + 'Philips_T3500/V1 Linux/3.4.5 Android/4.2.2 Release/03.26.2013 Browser/AppleWebKit534.30 Mobile Safari/534.30 MBBMS/2.2 System/Android 4.2.2;' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; Philips W3568 Build/Philips_W3568) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; ru-ru; Philips W832 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux;U;Android 4.2.2;es-us;Philips S388 Build/JDQ39) AppleWebkit/534.30 (HTML,like Gecko) Version/4.0 Mobile Safari/534.30;' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.4; Philips W536 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux;U;Android 4.2.2;es-us;Philips S308 Build/JDQ39) AppleWebkit/534.30 (HTML,like Gecko) Version/4.0 Mobile Safari/534.30;' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; ru-ru; Philips-W8500 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; ru; Philips W8510 Build/JDQ39) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/9.8.9.457 U3/0.8.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; ru-RU; Philips W3568 Build/Philips W3568) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.1 Mobile Safari/534.30;' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; Philips S388 Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; Build/PI3100.00.00.24) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; W732 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.1; PI7100_93 Build/PI7100.C.00.00.11) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.92 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + ), + + 'PocketBook' => array( + 'Mozilla/5.0 (Linux; U; Android 2.3.7; en-ru; PocketBook A10 3G Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), + ), + + 'PointOfView' => array( + 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; POV_TAB-PROTAB30-IPS10 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + ), + + 'Praktica' => array( + 'Mozilla/5.0 (Linux; Android 4.0.4; TP750 3GGSM Build/IMM76I) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.93 Safari/537.36' => array('isMobile' => true, 'isTablet' => true) + ), + + 'PROSCAN' => array( + 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; PLT8088 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.1', 'Build' => 'JRO03H', 'Webkit' => '534.30', 'Safari' => '4.0') ), + ), + + 'PyleAudio' => array( + 'Mozilla/5.0 (Linux; Android 4.0.4; PTBL92BC Build/IMM76D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.4', 'Build' => 'IMM76D', 'Webkit' => '537.36', 'Chrome' => '31.0.1650.59')), + + ), + + 'RockChip' => array( + 'Mozilla/5.0 (Linux; U; Android 2.2.1; hu-hu; RK2818, Build/MASTER) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android Android 2.1-RK2818-1.0.0; zh-cn; MD701 Build/ECLAIR) AppleWebKit/530.17 (KHTML like Gecko) Version/4.0 Mobile Safari/530.17' => array('isMobile' => true, 'isTablet' => true), + ), + + 'RossMoor' => array( + 'Mozilla/5.0 (Linux; U; Android 4.2.1; ru-ru; RM-790 Build/JOP40D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true) + + ), + + // @ref: http://www.qmobile.com.pk/complete_range.php# + 'QMobile' => array( + 'Mozilla/5.0 (Linux; U; Android 2.3.6; en-us; A2 Build/GRK39F) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + ), + + 'simvalley' => array( + 'Mozilla/5.0 (Linux; U; Android 2.3.4; de-de; SP-80 Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + ), + + 'Skk' => array('Mozilla/5.0 (Linux; U; Android 4.1; en-us; CYCLOPS Build/F10) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true)), + + 'Storex' => array( + 'Mozilla/5.0 (Linux; Android 4.1.1; eZee_Tab903 Build/JRO03H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Safari/537.36' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.1', 'Build' => 'JRO03H', 'Webkit' => '537.36')), + "Mozilla/5.0 (Linux; Android 4.1.1; eZee'Tab785 Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Safari/537.36" => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.1', 'Build' => 'JRO03C', 'Webkit' => '537.36')), + "Mozilla/5.0 (Linux; Android 4.0.3; eZee'Tab971 Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19" => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.3', 'Build' => 'IML74K', 'Webkit' => '535.19')), + ), + + 'Teclast' => array( + 'Mozilla/5.0 (Linux; Android 4.4.2; P98 3G\xE5\x85\xAB\xE6\xA0\xB8(A3HY) Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'QQ\xe9\x9f\xb3\xe4\xb9\x90HD 4.0.1 (iPad; iPhone OS 8.0; zh_CN)' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0; xx-xx; A15(E6C2) Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 2.3; xx-xx; A10 Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; Teclast A10T Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; zh-cn; Teclast P85(A9D3) Build/IMM76D) AppleWebKit/534.30 (KHTML like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; A70H Build/JDQ39) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/9.8.0.435 U3/0.8.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), + ), + + 'Tecno' => array( + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; TECNO P9 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true) + ), + + 'Telstra' => array( + 'Mozilla/5.0 (Linux; U; Android 2.3.7; en-au; T-Hub2 Build/TVA301TELBG3) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), + ), + + // @info: http://www.texet.ru/tablet/ + 'texet' => array( + 'Mozilla/5.0 (Linux; U; Android 2.3.4; ru-ru; TM-7021 Build/GB.m1ref.20120116) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '2.3.4', 'Webkit' => '533.1', 'Safari' => '4.0'), 'model' => 'TM-7021' ), + ), + + 'Tolino' => array( + 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; tolino tab 7 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.2.2', 'Build' => 'JDQ39', 'Webkit' => '534.30', 'Safari' => '4.0')), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; tolino tab 8.9 Build/JDQ39) AppleWebKit/534.30 (KHTML like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.2.2', 'Build' => 'JDQ39', 'Webkit' => '534.30', 'Safari' => '4.0')), + 'Mozilla/5.0 (Linux; Android 4.2.2; tolino tab 7 Build/JDQ39) AppleWebkit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36 OPR/18.0.1290.67495' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; tolino tab 7 Build/JDQ39) AppleWebkit/537.36 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + ), + + 'Toshiba' => array( + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; TOSHIBA; TSUNAGI)' => array('isMobile' => true, 'isTablet' => false), + // @ref: http://www.toshiba.co.uk/discontinued-products/folio-100/ + 'Mozilla/5.0 (Linux; U; Android 2.2; it-it; TOSHIBA_FOLIO_AND_A Build/TOSHIBA_FOLIO_AND_A) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '2.2', 'Webkit' => '533.1', 'Safari' => '4.0') ), + ), + + 'Trekstor' => array( + 'Mozilla/5.0 (Linux; Android 4.2.2; ST70408-1 Build/JDQ39) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Safari/537.31' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.2.2', 'Build' => 'JDQ39', 'Webkit' => '537.31', 'Chrome' => '26.0.1410.58')), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; engb; Build/IMM76D) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A405 Safari/7534.48.3 SurfTab_7.0' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; Android 4.2.2; VT10416-2 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Safari/537.36' => array( + 'isMobile' => true, 'isTablet' => true + ), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; de-de; ST10216-2A Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30;SurfTab_10.1' => array( + 'isMobile' => true, 'isTablet' => true + ), + ), + + 'Ubislate' => array( + 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; UBISLATE7C+ Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true) + ), + + 'Visture' => array( + + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-gb; V97 HD Build/LR-97JC) Apple WebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; Visture V4 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; ru-ru; Visture V4 HD Build/Visture V4 HD) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; es-es; Visture V5 HD Build/Visture V5 HD) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; ru-ru; Visture V10 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + ), + + 'Versus' => array( + 'Mozilla/5.0 (Linux; Android 4.0.4; VS-TOUCHPAD 9 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-gb; Versus Touchpad 9.7 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-gb; CnM-TOUCHPAD7 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30 BMID/E67A45B1AB' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-gb; CnM TouchPad 7DC Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30 TwonkyBeamBrowser/3.3.5-95 (Android 4.1.1; rockchip CnM TouchPad 7DC Build/meizhi_V2.80.wifi8723.20121225.b11c800)' => array('isMobile' => true, 'isTablet' => true), + 'OneBrowser/3.5/Mozilla/5.0 (Linux; U; Android 4.0.4; en-gb; TOUCHPAD 7 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-gb; TOUCHTAB Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.1', 'Build' => 'JRO03H', 'Webkit' => '534.30', 'Safari' => '4.0') ), + ), + + 'Viewsonic' => array( + 'Mozilla/5.0 (Linux; U; Android 4.0.3; de-de; ViewPad 10e Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 2.2; it-it; ViewPad7 Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' =>array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 2.2.1; en-ca; ViewSonic VB733 Build/FRG83) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 3.2; en-gb; ViewPad7X Build/HTJ85B) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Safari/533.1' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 2.2; pt-br; ViewPad 10S Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; VB100a Pro Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + ), + + 'Vonino' => array( + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; Sirius_Evo_QS Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-gb; Q8 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + + ), + + 'Wolder' => array( + 'Mozilla/5.0 (Linux; Android 4.4; miTab LIVE Build/KVT49L) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; pt-pt; miTab FUNK Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + ), + + 'Wolfgang' => array( + 'Mozilla/5.0 (Linux; U; Android 4.2.1; nl-nl; AT-AS45q2 Build/JOP40D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false) + ), + + 'Xoro' => array( + 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; PAD 9720QR Build/PAD 9719QR) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.2.2; PAD720 Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => true) + ), + + 'ZTE' => array( + 'Mozilla/5.0 (Linux; U; Android 4.2.1;zh-cn; ZTE V987 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30;' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.5; pt-pt; Blade Build/tejosunhsine) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; ZTE; N880e_Dawoer_Fulllock; China Telecom)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; ZTE; V965W)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; ZTE; Windows Phone - Internet 7; SFR)' => array('isMobile' => true, 'isTablet' => false), + ), + + 'Zync' => array( + 'Mozilla/5.0 (Linux; U; Android 2.3.3; en-us ; Z909 Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1/UCBrowser/8.4.1.204/145/444' => array('isMobile' => true, 'isTablet' => true) + ) + +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Prestigio.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Prestigio.php new file mode 100644 index 00000000000..c86e3b192eb --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Prestigio.php @@ -0,0 +1,12 @@ +<?php +return array( + 'Prestigio' => array( + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-gb; PMP5297C_QUAD Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; sk-sk; PMP7100D3G Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.4', 'Build' => 'IMM76D', 'Webkit' => '534.30', 'Safari' => '4.0'), 'model' => 'PMP7100D3G' ), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; sk-sk; PMP7280C3G Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 MobilSafari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.4.2; PMT3017_WI Build/KVT49L) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.4.2; PMT3037_3G Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.4.2; PMT5002_Wi Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.93 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; el-gr; PMT5887_3G Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + ), +); \ No newline at end of file diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Samsung.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Samsung.php new file mode 100644 index 00000000000..e7099c5efc2 --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Samsung.php @@ -0,0 +1,131 @@ +<?php +return array( + 'Samsung' => array( + 'MQQBrowser/4.0/Mozilla/5.0 (Linux; U; Android 3.2; zh-cn; GT-P6800 Build/HTJ85B) AppleWebKit/533.1 (KHTML, like Gecko) Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true, 'version' => array('MQQBrowser' => '4.0')), + 'SAMSUNG-SGH-P250-ORANGE/P250BVHH8 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0' => array('isMobile' => true, 'isTablet' => false), + 'SAMSUNG-GT-B2710/B271MCXKF1 SHP/VPP/R5 Dolfin/2.0 QTV/5.3 SMM-MMS/1.2.0 profile/MIDP-2.1 configuration/CLDC-1.1 OPN-B' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Dolfin' => '2.0') ), + 'SAMSUNG-SGH-D900i/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0' => array('isMobile' => true, 'isTablet' => false), + 'SAMSUNG-GT-S5233T/S5233TXEJE3 SHP/VPP/R5 Jasmine/0.8 Qtv5.3 SMM-MMS/1.2.0 profile/MIDP-2.1 configuration/CLDC-1.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S5380D/S5380FXXKL3; U; Bada/2.0; ru-ru) AppleWebKit/534.20 (KHTML, like Gecko) Dolfin/3.0 Mobile HVGA SMM-MMS/1.2.0 OPN-B' => array('isMobile' => true, 'isTablet' => false), + 'SAMSUNG-GT-C3312/1.0 NetFront/4.2 Profile/MIDP-2.0 Configuration/CLDC-1.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 1.5; de-de; Galaxy Build/CUPCAKE) AppleWebKit/528.5 (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1' => array('isMobile' => true, 'isTablet' => false), + 'SAMSUNG-GT-S3650/S3650XEII3 SHP/VPP/R5 Jasmine/1.0 Nextreaming SMM-MMS/1.2.0 profile/MIDP-2.1 configuration/CLDC-1.1' => array('isMobile' => true, 'isTablet' => false), + 'JUC (Linux; U; 2.3.6; zh-cn; GT-S5360; 240*320) UCWEB7.9.0.94/140/352' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S5250/S5250XEKJ3; U; Bada/1.0; ru-ru) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.0 Mobile WQVGA SMM-MMS/1.2.0 NexPlayer/3.0 profile/MIDP-2.1 configuration/CLDC-1.1 OPN-B' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; SAMSUNG; SGH-i917)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S8530/S8530XXJKA; U; Bada/1.2; cs-cz) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.2 Mobile WVGA SMM-MMS/1.2.0 OPN-B' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 1.6; ru-ru; Galaxy Build/Donut) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.1-update1; ru-ru; GT-I5500 Build/ERE27) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.2; en-us; GALAXY_Tab Build/MASTER) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 2.2; ja-jp; SC-01C Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), + // @about FROYO: http://gizmodo.com/5543853/what-is-froyo + 'Mozilla/5.0 (Linux; U; Android 2.2; fr-fr; GT-I9000 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.2.1; zh-cn; SCH-i909 Build/FROYO) UC AppleWebKit/534.31 (KHTML, like Gecko) Mobile Safari/534.31' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.3; ja-jp; SC-01C Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 2.3.3; en-gb; GT-P1000 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 2.3.3; el-gr; GT-I9001 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.3; en-ca; SGH-I896 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.4; es-us; GT-S5660L Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 MicroMessenger/4.5.1.261' => array('isMobile' => true, 'isTablet' => false, 'version' => array('MicroMessenger' => '4.5.1.261')), + 'Mozilla/5.0 (Linux; U; Android 2.3.6; en-us; GT-S5660 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.6; ru-ru; GT-S6102 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.6; pt-br; GT-S5367 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.6; fr-fr; GT-S5839i Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.6; en-gb; GT-S7500 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.6; en-gb; GT-S5830 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.6; es-us; GT-B5510L Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.6; pl-pl; GT-I9001-ORANGE/I9001BVKPC Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.6; en-us; GT-I8150 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.6; nl-nl; GT-I9070 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.6; en-gb; GT-S5360 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.6; es-us; GT-S6102B Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.6; en-us; GT-S5830i Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.6; ru-ru; GT-I8160 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.6; ru-ru; GT-S6802 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.7; ru-ru; GT-S5830 Build/GRWK74; LeWa_ROM_Cooper_12.09.21) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.6; ru-ru; GT-N7000 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 3.0.1; en-us; GT-P7100 Build/HRI83) AppleWebkit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 3.2; he-il; GT-P7300 Build/HTJ85B) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 3.2; en-gb; GT-P6200 Build/HTJ85B) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-gb; GT-I9100 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; GT-I9100G Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; nl-nl; GT-P5100 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android-4.0.3; en-us; Galaxy Nexus Build/IML74K) AppleWebKit/535.7 (KHTML, like Gecko) CrMo/16.0.912.75 Mobile Safari/535.7' => array( 'isMobile' => true, 'isTablet' => false, 'version' => array('Chrome' => '16.0.912.75') ), + 'Mozilla/5.0 (Linux; Android 4.0.3; SGH-T989 Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Chrome' => '18.0.1025.166') ), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; ru-ru; GT-P5100 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.0.4; GT-I9300 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.4; SPH-D710 Build/IMM76I) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; zh-cn; GT-I9300 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-gb; GT-I9300-ORANGE/I9300BVBLG2 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; th-th; GT-I9300T Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; ru-ru; GT-I9100 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us ; GT-I9100 Build/IMM76D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1/UCBrowser/8.4.1.204/145/355' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-gb; GT-N7000 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; th-th; GT-P6800 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.0.4; SAMSUNG-SGH-I747 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; es-es; GT-P5110 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.0.4; GT-P5110 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; zh-cn; SAMSUNG-GT-S7568_TD/1.0 Android/4.0.4 Release/07.15.2012 Browser/AppleWebKit534.30 Build/IMM76D) ApplelWebkit/534.30 (KHTML,like Gecko) Version/4.0 Mobile Safari/534.30' => array( 'isMobile' => true, 'isTablet' => false, 'version' => array('Android' => '4.0.4') ), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; ru-ru; GT-P3100 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; tr-tr; GT-P3105 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-ca; GT-N8010 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; ru-ru; GT-S7562 Build/IMM76I) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; GT-N7100 Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; GT-N7100 Build/JZO54K) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.123 Mobile Safari/537.22 OPR/14.0.1025.52315' => array( 'isMobile' => true, 'isTablet' => false, 'version' => array( 'Build' => 'JZO54K', 'Webkit' => '537.22', 'Opera' => '14.0.1025.52315' ) ), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; zh-hk; GT-N7105 Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; ru-ru; GT-N8000 Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.1.1; SGH-i747M Build/JRO03L) AppleWebKit/535.19(KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-gb; Galaxy Nexus - 4.1.1 - with Google Apps - API 16 - 720x1280 Build/JRO03S) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; GT-I8262 Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; it-it; Galaxy Nexus Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; SGH-I777 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; GT-S7710 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; GT-I9082 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; SGH-T999L Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; GT-P5210 Build/JDQ39) AppleWebKit/537.36 (KHTML, Like Gecko) Chrome/27.0.1453.90 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.2.2; en-us; SAMSUNG GT-I9200 Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Version/1.0 Chrome/18.0.1025.308 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.2.2; zh-cn; SCH-I959 Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Version/1.0 Chrome/18.0.1025.308 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; nl-nl; SM-T310 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.3; en-us; SAMSUNG SM-P600 Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-gb; GT-N5100 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.4.2; en-us; SAMSUNG SM-T530NU Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.4.2; SM-T800 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.135 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.4.2; fr-fr; SAMSUNG SM-T800 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.4.2; SM-T700 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.517 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; CETUS)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; Focus I917 By TC)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; Focus i917)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; FOCUS S)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; GT-I8350)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; GT-i8700)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; GT-S7530)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; Hljchm\'s Wp)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; I917)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; OMNIA 7)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; OMNIA7 By MWP_HS)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; OMNIA7)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; OMNIA7; Orange)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; SGH-i677)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; SGH-i917)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; SGH-i917.)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; SGH-i917R)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; SGH-i937)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; SMG-917R)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG_blocked_blocked_blocked; OMNIA7; Orange)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG_blocked_blocked_blocked_blocked; OMNIA7; Orange)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SUMSUNG; OMNIA 7)' => array('isMobile' => true, 'isTablet' => false), + + 'Mozilla/5.0 (Windows NT 6.2; ARM; Trident/7.0; Touch; rv:11.0; WPDesktop; SAMSUNG; GT-I8750) like Gecko' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Windows NT 6.2; ARM; Trident/7.0; Touch; rv:11.0; WPDesktop; GT-I8750) like Gecko' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; en-gb; SAMSUNG GT-I9205 Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Version/1.0 Chrome/18.0.1025.308 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; GT-P7510 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; SHV-E160K/VI10.1802 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + + 'Mozilla/5.0 (Linux; Android 5.0.2; SM-T805 Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.92 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.4.4; SM-T116NQ Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.92 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 5.0.2; SM-G9250 Build/LRX22G; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/43.0.2357.121 Mobile Safari/537.36 [FB_IAB/FB4A;FBAV/35.0.0.48.273;]' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; SM-T705Y Build/KOT49H) AppleWebKit/537.36(KHTML, like Gecko) Chrome/42.0.2311.111 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.4.2; GT-I9505 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; SM-T705 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.45 Safari/537.36' => array('isMobile' => true, 'isTablet' => true) + ), +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Sony.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Sony.php new file mode 100644 index 00000000000..4155daf0496 --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Sony.php @@ -0,0 +1,85 @@ +<?php +return array( + 'Sony' => array( + 'SonyEricssonK800i/R1AA Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.1-update1; es-ar; SonyEricssonE15a Build/2.0.1.A.0.47) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.1-update1; pt-br; SonyEricssonU20a Build/2.1.1.A.0.6) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.3; en-au; SonyEricssonX10i Build/3.0.1.G.0.75) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.4; ru-ru; SonyEricssonST18i Build/4.0.2.A.0.62) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.4; hr-hr; SonyEricssonST15i Build/4.0.2.A.0.62) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.4; sk-sk; SonyEricssonLT15i Build/4.0.2.A.0.62) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.7; th-th; SonyEricssonST27i Build/6.0.B.3.184) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.7; de-de; SonyEricssonST25i Build/6.0.B.3.184) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; pt-br; Xperia Tablet S Build/TID0092) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.3', 'Build' => 'TID0092', 'Webkit' => '534.30', 'Safari' => '4.0') ), + 'Mozilla/5.0 (Linux; Android 4.0.3; LT18i Build/4.1.A.0.562) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.3; Sony Tablet S Build/TISU0R0110) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; es-es; Sony Tablet S Build/TISU0143) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-gb; SonyEricssonLT18i Build/4.1.B.0.587) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; fr-ch; SonyEricssonSK17i Build/4.1.B.0.587) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; SonyEricssonLT26i Build/6.1.A.2.45) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.4; LT22i Build/6.1.B.0.544) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; vi-vn; SonyEricssonLT22i Build/6.1.B.0.544) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.4; ST23i Build/11.0.A.5.5) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.4; ST23i Build/11.0.A.2.10) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.4; LT28h Build/6.1.E.3.7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; SGPT13 Build/TJDS0170) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; ja-jp; SonySO-03E Build/10.1.E.0.265) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.2', 'Build' => '10.1.E.0.265', 'Webkit' => '534.30', 'Safari' => '4.0') ), + 'Mozilla/5.0 (Linux; Android 4.1.2; LT26w Build/6.2.B.1.96) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; SGP321 Build/10.3.1.A.0.33) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Safari/537.31' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.2.2', 'Build' => '10.3.1.A.0.33', 'Webkit' => '537.31', 'Chrome' => '26.0.1410.58') ), + 'Mozilla/5.0 (Linux; Android 4.3; C5303 Build/12.1.A.1.205) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.135 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.3; zh-cn; XL39h Build/14.2.A.1.136) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; sv-se; C5503 Build/10.1.1.A.1.273) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; C5502 Build/10.1.1.A.1.310) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; zh-cn; SonyL39t Build/14.1.M.0.202) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; zh-cn; L39u Build/14.1.n.0.63) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; zh-tw; M35c Build/12.0.B.5.37) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; M35c Build/12.0.B.2.42) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.90 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; zh-CN; M35t Build/12.0.C.2.42) AppleWebKit/534.31 (KHTML, like Gecko) UCBrowser/9.3.2.349 U3/0.8.0 Mobile Safari/534.31' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; D6502 Build/17.1.A.2.69) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; D6503 Build/17.1.A.0.504) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; D6543 Build/17.1.A.2.55) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; D2004 Build/20.0.A.0.29) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.3; en-gb; D2005 Build/20.0.A.1.12) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; D2104 Build/20.0.B.0.84) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; D2105 Build/20.0.B.0.74) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.170 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.3; pt-br; D2114 Build/20.0.B.0.85) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; D2302 Build/18.0.B.1.23) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.138 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.3; zh-cn; S50h Build/18.0.b.1.23) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/9.6.3.413 U3/0.8.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; D2303 Build/18.0.C.1.13) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.138 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; D2305 Build/18.0.A.1.30) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.138 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; D2306 Build/18.0.C.1.7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.136 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; D5303 Build/19.0.1.A.0.207) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; D5306 Build/19.1.A.0.264) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.136 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.3; zh-CN; XM50h Build/19.0.D.0.269) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/9.7.6.428 U3/0.8.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.3; zh-cn; XM50t Build/19.0.C.2.59) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; D5322 Build/19.0.D.0.253) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.3; zh-cn; M51w Build/14.2.A.1.146) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; M51w Build/14.2.A.1.146) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.136 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.1; D5102 Build/18.2.A.0.9) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.1; D5103 Build/18.1.A.0.11) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.92 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.1; D5106 Build/18.1.A.0.11) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.3; en-gb; C6902 Build/14.2.A.1.136) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 GSA/3.2.17.1009776.arm' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; es-es; C6943 Build/14.1.G.2.257) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; C6943 Build/14.3.A.0.681) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; SGP412 Build/14.1.B.3.320) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1; en-us; SonySGP321 Build/10.2.C.0.143) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.1.2; SGP351 Build/10.1.1.A.1.307) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.3; SGP341 Build/10.4.B.0.569) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.4.2; SGP511 Build/17.1.A.2.36) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.122 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.4.2; SGP512 Build/17.1.A.2.36) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.122 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; fr-ch; SGP311 Build/10.1.C.0.344) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; SGP312 Build/10.1.C.0.344) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.4.2; de-de; SGP521 Build/17.1.A.2.69) AppleWebKit/537.16 (KHTML, like Gecko) Version/4.0 Safari/537.16' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.4.2; zh-cn; SGP541 Build/17.1.A.2.36) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.4.2; SGP551 Build/17.1.A.2.72) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'SonyEricssonU5i/R2CA; Mozilla/5.0 (SymbianOS/9.4; U; Series60/5.0 Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 Safari/525' => array('isMobile' => true, 'isTablet' => false), + 'SonyEricssonU5i/R2AA; Mozilla/5.0 (SymbianOS/9.4; U; Series60/5.0 Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 Safari/525' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/4.0 (PDA; PalmOS/sony/model prmr/Revision:1.1.54 (en)) NetFront/3.0' => array('isMobile' => true, 'isTablet' => false), + 'Opera/9.80 (Linux mips; U; InettvBrowser/2.2 (00014A;SonyDTV115;0002;0100) KDL40EX720; CC/BEL; en) Presto/2.7.61 Version/11.00' => array('isMobile' => false, 'isTablet' => false), + 'Opera/9.80 (Linux armv7l; HbbTV/1.1.1 (; Sony; KDL32W650A; PKG3.211EUA; 2013;); ) Presto/2.12.362 Version/12.11' => array('isMobile' => false, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; es-ve; SonyST21a2 Build/11.0.A.6.5) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; D2533 Build/19.2.A.0.391) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.4; Xperia SP Build/KTU84Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.96 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla / 5.0 (Linux; Android 5.0.2; SOT31 Build / 28.0.D.6.71) AppleWebKit / 537.36 (KHTML, like Gecko) Chrome / 39.0.2171.93 Safari / 537.36' => array('isMobile' => true, 'isTablet' => true), + ), +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/SpecialCases.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/SpecialCases.php new file mode 100644 index 00000000000..363aac9fcc1 --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/SpecialCases.php @@ -0,0 +1,206 @@ +<?php +return array( + 'Avant' => array( + 'Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; Avant Browser; rv:11.0) like Gecko' => array('isMobile' => false, 'isTablet' => false), + 'Mozilla/5.0 (Windows NT 6.1; WOW64; Avant TriCore) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36' => array('isMobile' => false, 'isTablet' => false), + 'Mozilla/5.0 (Windows NT 5.1; rv:27.0; Avant TriCore) Gecko/20100101 Firefox/27.0' => array('isMobile' => false, 'isTablet' => false), + ), + 'Console' => array( + + //Nintendo Wii: + 'Mozilla/5.0 (Nintendo WiiU) AppleWebKit/536.28 (KHTML, like Gecko) NX/3.0.3.12.14 NintendoBrowser/3.1.1.9577.EU' => array('isMobile' => false, 'isTablet' => false), + 'Mozilla/5.0 (Nintendo WiiU) AppleWebKit/534.52 (KHTML, like Gecko) NX/{Version No} NintendoBrowser/{Version No}.US' => array('isMobile' => false, 'isTablet' => false), + 'Mozilla/5.0 (Nintendo 3DS; U; ; en) Version/1.7567.US' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Nintendo 3DS; U; ; en) Version/1.7498.US' => array('isMobile' => true, 'isTablet' => false), + //Sony PlayStation: + 'Mozilla/5.0 (PLAYSTATION 3 4.21) AppleWebKit/531.22.8 (KHTML, like Gecko)' => array('isMobile' => false, 'isTablet' => false), + //Microsoft Xbox: + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; Xbox)' => array('isMobile' => false, 'isTablet' => false), + // WTF? Must investigate. + //'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Xbox)' => array('isMobile' => false, 'isTablet' => false), + + ), + + 'Other' => array( + // Unknown + 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SV1; [eburo v4.0]; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; InfoPath.3; .NET4.0C; .NET4.0E)' => array('isMobile' => false, 'isTablet' => false), + + 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10) AppleWebKit/600.1.25 (KHTML, like Gecko) Version/8.0 Safari/600.1.25' => array('isMobile' => false, 'isTablet' => false), + 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36' => array('isMobile' => false, 'isTablet' => false), + + // @todo 3Q - http://3q-int.com/en/download/tablets7/ + //'Mozilla/5.0 (Linux; U; Android 4.0.4; it-it; MT0729B Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => null, + //'Mozilla/5.0 (Linux; U; Android 4.0.4; uk-us; RC9716B Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => null, + + // Sogou Explorer (Browser) + //'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36 SE 2.X MetaSr 1.0' => null, + //'Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1; SV1; SE 2.x)' => null, + + 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Iron/37.0.2000.0 Chrome/37.0.2000.0 Safari/537.36' => array('isMobile' => false, 'isTablet' => false, 'version' => array('Iron' => '37.0.2000.0')), + // Liebao Browser + //'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.137 Safari/537.36 LBBROWSER', + 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/32.0.1700.102 Chrome/32.0.1700.102 Safari/537.36' => array('isMobile' => false, 'isTablet' => false), + 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0' => array('isMobile' => false, 'isTablet' => false), + 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0 AlexaToolbar/psPCtGhf-2.2' => array('isMobile' => false, 'isTablet' => false), + 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:22.0) Gecko/20100101 Firefox/22.0' => array('isMobile' => false, 'isTablet' => false), + 'Mozilla/5.0 (X11; Linux ppc; rv:17.0) Gecko/20130626 Firefox/17.0 Iceweasel/17.0.7' => array('isMobile' => false, 'isTablet' => false), + 'Mozilla/5.0 (X11; Linux) AppleWebKit/535.22+ Midori/0.4' => array('isMobile' => false, 'isTablet' => false), + 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-us) AppleWebKit/535+ (KHTML, like Gecko) Version/5.0 Safari/535.20+ Midori/0.4' => array('isMobile' => false, 'isTablet' => false), + 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.20 Safari/537.36 OPR/15.0.1147.18 (Edition Next)' => array('isMobile' => false, 'isTablet' => false), + 'Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36' => array('isMobile' => false, 'isTablet' => false), + 'Mozilla/5.0 (Windows NT 5.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36' => array('isMobile' => false, 'isTablet' => false), + 'Mozilla/5.0 (Windows NT 5.2; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0' => array('isMobile' => false, 'isTablet' => false), + 'Opera/9.80 (Windows NT 5.2; WOW64) Presto/2.12.388 Version/12.14' => array('isMobile' => false, 'isTablet' => false), + 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:19.0) Gecko/20100101 Firefox/19.0' => array('isMobile' => false, 'isTablet' => false), + 'Mozilla/5.0 (X11; FreeBSD amd64; rv:14.0) Gecko/20100101 Firefox/14.0.1' => array('isMobile' => false, 'isTablet' => false), + // @todo Inspect https://gist.githubusercontent.com/pongacm/b7775bebf2b26c09e1f8/raw/0aff83747959386663f3a5c68d7f7150764a8e2d/Varnish%20-%20Tablet%20PC%20(TAB) + // https://github.com/varnish/varnish-devicedetect/issues/19 + 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.2; Win64; x64; Trident/6.0; Touch; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 2.0.50727; Tablet PC 2.0; MASMJS)' => array('isMobile' => false, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0; MANMJS)' => array('isMobile' => false, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident/6.0; MASMJS)' => array('isMobile' => false, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0; Touch; MASMJS)' => array('isMobile' => false, 'isTablet' => false), + 'Opera/9.80 (Windows NT 6.2; WOW64; MRA 8.0 (build 5784)) Presto/2.12.388 Version/12.11' => array('isMobile' => false, 'isTablet' => false), + // IE 10 + 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)' => array('isMobile' => false, 'isTablet' => false), + // IE 11 @todo: Trident(.*)rv.(\d+)\.(\d+) + 'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv 11.0) like Gecko' => array('isMobile' => false, 'isTablet' => false), + 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; Touch; rv:11.0) like Gecko' => array('isMobile' => false, 'isTablet' => false), + + // TV + 'Mozilla/5.0 (Unknown; Linux armv7l) AppleWebKit/537.1+ (KHTML, like Gecko) Safari/537.1+ HbbTV/1.1.1 ( ;LGE ;NetCast 4.0 ;03.20.30 ;1.0M ;)' => array('isMobile' => false, 'isTablet' => false), + 'HbbTV/1.1.1 (;Panasonic;VIERA 2012;1.261;0071-3103 2000-0000;)' => array('isMobile' => false, 'isTablet' => false), + 'Opera/9.80 (Linux armv7l; HbbTV/1.1.1 (; Sony; KDL32W650A; PKG3.211EUA; 2013;); ) Presto/2.12.362 Version/12.11' => array('isMobile' => false, 'isTablet' => false), + ), + + 'TV' => array( + //'Opera/9.80 (Linux mips ; U; HbbTV/1.1.1 (; Philips; ; ; ; ) CE-HTML/1.0 NETTV/3.2.1; en) Presto/2.6.33 Version/10.70' => null + ), + + 'Generic' => array( + + 'Mozilla/5.0 (Linux; U; Jolla; Sailfish; Mobile; rv:20.0) Gecko/20.0 Firefox/20.0 Sailfish Browser/1.0 like Safari/535.19' => array('isMobile' => true, 'isTablet' => true), + + // Generic Firefox User-agents + // https://developer.mozilla.org/en-US/docs/Web/HTTP/Gecko_user_agent_string_reference#Firefox_OS + 'Mozilla/5.0 (Mobile; rv:26.0) Gecko/26.0 Firefox/26.0' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Tablet; rv:26.0) Gecko/26.0 Firefox/26.0' => array('isMobile' => true, 'isTablet' => true), + + // Facebook WebView + //'Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Mobile/11D201 [FBAN/FBIOS;FBAV/12.1.0.24.20;FBBV/3214247;FBDV/iPhone6,1;FBMD/iPhone;FBSN/iPhone OS;FBSV/7.1.1;FBSS/2; FBCR/AT&T;FBID/phone;FBLC/en_US;FBOP/5]' => null, + + // Outlook + //'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E; InfoPath.3; IM-2014-026; IM-2014-043; Microsoft Outlook 14.0.7113; ms-office; MSOffice 14)' => null, + + // Carrefour tablet + 'Mozilla/5.0 (Linux; Android 4.2.2; CT1020W Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + + // @comment: Pipo m6pro tablet + 'Mozilla/5.0 (Linux; Android 4.2.2; M6pro Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + + // https://github.com/varnish/varnish-devicedetect/issues/17 + // To be researched. + 'MobileSafari/9537.53 CFNetwork/672.1.13 Darwin/13.1.0' => array('isMobile' => true, 'isTablet' => false), + 'Appcelerator Titanium/3.2.2.GA (iPod touch/6.1.6; iPhone OS; en_US;)' => array('isMobile' => true, 'isTablet' => false), + + 'Opera Coast/3.0.3.78307 CFNetwork/672.1.15 Darwin/14.0.0' => array('isMobile' => true, 'isTablet' => false), + + 'Mozilla/5.0 (Linux; Android 4.0.3; ALUMIUM10 Build/IML74K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.2.1; en-us; JY-G3 Build/JOP40D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; hu-hu; M758A Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + + 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; EVOTAB Build/IMM76I) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Java/1.6.0_22' => array('isMobile' => false, 'isTablet' => false, 'version' => array('Java' => '1.6.0_22') ), + 'Opera/9.80 (Series 60; Opera Mini/6.5.29260/29.3417; U; ru) Presto/2.8.119 Version/11.10' => array('isMobile' => true, 'isTablet' => false), + 'Opera/9.80 (Android; Opera Mini/6.5.27452/29.3417; U; ru) Presto/2.8.119 Version/11.10' => array('isMobile' => true, 'isTablet' => false), + 'Opera/9.80 (iPhone; Opera Mini/7.1.32694/27.1407; U; en) Presto/2.8.119 Version/11.10' => array('isMobile' => true, 'isTablet' => false), + // New Opera + 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.60 Safari/537.17 OPR/14.0.1025.52315' => array('isMobile' => false, 'isTablet' => false), + // Unknown yet + // Looks like Chromebook + //'Mozilla/5.0 (X11; CrOS armv7l 4920.83.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.103 Safari/537.36' => null, + 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_2 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari/6533.18.5' => array('isMobile' => true, 'isTablet' => false), + 'Opera/9.80 (Android 2.3.7; Linux; Opera Mobi/46154) Presto/2.11.355 Version/12.10' => array('isMobile' => true, 'isTablet' => false), + //'Mozilla/5.0 (Linux; U; Android 4.0.3; it-it; DATAM819HD_C Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => null, + //'Mozilla/5.0 (Linux; U; Android 4.0.3; nl-nl; SGPT12 Build/TID0142) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => null, + //'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; cm_tenderloin Build/IMM76L; CyanogenMod-9) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => null, + + //'Mozilla/5.0 (Linux; U; Android 4.1.1; fr-fr; A210 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => null, // Acer Iconia Tab + 'Mozilla/5.0 (iPad; CPU OS 6_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10B141 Safari/8536.25' => array('isMobile' => true, 'isTablet' => true), + //'Mozilla/5.0 (Linux; U; Android 2.3.6; en-gb; GT-I8150 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => null, + //'Mozilla/5.0 (iPad; CPU OS 6_0_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mercury/7.2 Mobile/10A523 Safari/8536.25' => null, // Mercurio Browser + //'Opera/9.80 (Android 2.3.7; Linux; Opera Tablet/46154) Presto/2.11.355 Version/12.10' => null, + 'Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; sdk Build/MASTER) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => false), // sdk + 'Mozilla/5.0 (Linux; U; Android 4.2; en-us; sdk Build/JB_MR1) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), // sdk + + //'Opera/9.80 (X11; Linux zbov) Presto/2.11.355 Version/12.10' => null, + //'Mozilla/5.0 (Linux; U; Android 4.0.4; en-gb; TOUCHPAD 7 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => null, // 7" Verso Android tablet + //'Mozilla/5.0 (iPhone; U; CPU OS 4_2_1 like Mac OS X) AppleWebKit/532.9 (KHTML, like Gecko) Version/5.0.3 Mobile/8B5097d Safari/6531.22.7' => null, + //'Mozilla/5.0 (Linux; U; Android 4.0.3; en-gb; SGPT12 Build/TID0142) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => null, // sony xperia tablet s unforts + //'Mozilla/5.0 (Linux; U; Android 2.0.6_b1; ru-ru Build/ECLAIR) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' => null, // PocketBook IQ701 (tablet) + //'Mozilla/5.0 (Linux; Android 4.0.4; z1000 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => null, // It is a tablet with calling + //'Mozilla/5.0 (Linux; Android 4.0.3; cm_tenderloin Build/GWK74) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => null, // HP touch pad running android cyanogenmod + //'Mozilla/5.0 (Linux; U; Android 2.3.3; en-us; Android for Techvision TV1T808 Board Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => null, // My device is tablet but its detected as phone + //'BlackBerry8520/5.0.0.592 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/136' => null, + //'Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17' => null, // its a lenovo tablet 2 with windows 8 pro + //'Mozilla/5.0 (Linux; U; Android 3.1; ru-ru; LG-V900 Build/HMJ37) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => null, + //'Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; HTC; Windows Phone 8S by HTC)' => null, + //'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0; Touch)' => null, // MS Surface RT tablet actually! + //'Mozilla/5.0 (PLAYSTATION 3 4.11) AppleWebKit/531.22.8 (KHTML, like Gecko)' => null, + //'Mozilla/5.0 (Linux; U; Android 3.2; ru-ru; V9S_V1.4) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => null, // Wrong detection - 7-inch tablet was detected as a phone. Android 3.2.1, native browser + //'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0; Touch)' => null, // Nope, its a Microsoft Surface tablet running Windows RT (8) with MSIE 10 + //'Mozilla/5.0 (Linux; U; Android 2.2; es-es; Broncho N701 Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => null, // Tablet! + //'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0; Touch)' => null, // its a Microsoft surface rt (tablet) + //'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0; Touch; WebView/1.0)' => null, + //'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; Next7P12 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => null, // Nextbook 7SE Tablet + //'Opera/9.80 (X11; Linux zbov) Presto/2.11.355 Version/12.10' => null, // allview alldro speed tablet, android ics, opera mobile + //'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0; Touch)' => null, // Its a surface in portrait + // Am ramas la pozitia: 207 + + // Android on Windows :) www.socketeq.com + //'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; full Android on Microsoft Windows, pad, pc, n*books Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => null, + + // TV + //'Opera/9.80 (Linux mips; U; InettvBrowser/2.2 (00014A;SonyDTV115;0002;0100) KDL40EX720; CC/BEL; en) Presto/2.7.61 Version/11.00' => null, + + 'Mozilla/5.0 (Android; Mobile; rv:18.0) Gecko/18.0 Firefox/18.0' => array('isMobile' => true, 'isTablet' => false), + // Maxthon + 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.12 (KHTML, like Gecko) Maxthon/3.0 Chrome/18.0.966.0 Safari/535.12' => array('isMobile' => false, 'isTablet' => false), + 'Opera/9.80 (Windows NT 5.1; U; Edition Yx; ru) Presto/2.10.289 Version/12.02' => array('isMobile' => false, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2; en-us; sdk Build/JB_MR1) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Windows Phone 6.5.3.5)' => array('isMobile' => true, 'isTablet' => false), + 'PalmCentro/v0001 Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; PalmSource/Palm-D061; Blazer/4.5) 16;320x320' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Microsoft; XDeviceEmulator)' => array('isMobile' => true, 'isTablet' => false), + // ZTE phone + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; MAL; N880E; China Telecom)' => array('isMobile' => true, 'isTablet' => false), + 'Opera/9.80 (Series 60; Opera Mini/7.0.29482/28.2859; U; ru) Presto/2.8.119 Version/11.10' => array('isMobile' => true, 'isTablet' => false), + 'Opera/9.80 (S60; SymbOS; Opera Mobi/SYB-1202242143; U; en-GB) Presto/2.10.254 Version/12.00' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-au; 97D Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Opera/9.80 (Android; Opera Mini/7.0.29952/28.2647; U; ru) Presto/2.8.119 Version/11.10' => array('isMobile' => true, 'isTablet' => false), + 'Opera/9.80 (Android; Opera Mini/6.1.25375/28.2555; U; en) Presto/2.8.119 Version/11.10' => array('isMobile' => true, 'isTablet' => false), + 'Opera/9.80 (Mac OS X; Opera Tablet/35779; U; en) Presto/2.10.254 Version/12.00' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Android; Tablet; rv:10.0.4) Gecko/10.0.4 Firefox/10.0.4 Fennec/10.0.4' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Android; Tablet; rv:18.0) Gecko/18.0 Firefox/18.0' => array('isMobile' => true, 'isTablet' => true), + 'Opera/9.80 (Linux armv7l; Maemo; Opera Mobi/14; U; en) Presto/2.9.201 Version/11.50' => array('isMobile' => true, 'isTablet' => false), + 'Opera/9.80 (Android 2.2.1; Linux; Opera Mobi/ADR-1207201819; U; en) Presto/2.10.254 Version/12.00' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; sdk Build/JRO03E) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; Endeavour 1010 Build/ONDA_MID) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), // Blaupunkt Endeavour 1010 + 'Mozilla/5.0 (Linux; U; Android 4.0.4; de-de; Tablet-PC-4 Build/ICS.g08refem618.20121102) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + // Tagi tablets + 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; Tagi Tab S10 Build/8089) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true, + ), + ), + + 'Bot' => array( + 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)' => array('isMobile' => false, 'isTablet' => false, /*'isBot' => true*/), + 'grub-client-1.5.3; (grub-client-1.5.3; Crawl your own stuff with http://grub.org)' => array('isMobile' => false, 'isTablet' => false, /*'isBot' => true*/), + 'Googlebot-Image/1.0' => array('isMobile' => false, 'isTablet' => false, /*'isBot' => true*/), + 'Python-urllib/2.5' => array('isMobile' => false, 'isTablet' => false, /*'isBot' => true*/), + 'facebookexternalhit/1.0 (+http://www.facebook.com/externalhit_uatext.php)' => array('isMobile' => false, 'isTablet' => false, /*'isBot' => true*/), + 'AdsBot-Google (+http://www.google.com/adsbot.html)' => array('isMobile' => false, 'isTablet' => false, /*'isBot' => true*/), + 'AdsBot-Google-Mobile (+http://www.google.com/mobile/adsbot.html) Mozilla (iPhone; U; CPU iPhone OS 3 0 like Mac OS X) AppleWebKit (KHTML, like Gecko) Mobile Safari' => array('isMobile' => true, 'isTablet' => false, /*'isBot' => true*/), + 'Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.16 (KHTML, like Gecko, Google Keyword Suggestion) Chrome/10.0.648.127 Safari/534.16' => array('isMobile' => false, 'isTablet' => false, /*'isBot' => true*/), + 'Facebot' => array('isMobile' => false, 'isTablet' => false, /*'isBot' => true*/) + ), +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Vodafone.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Vodafone.php new file mode 100644 index 00000000000..2074a041de0 --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Vodafone.php @@ -0,0 +1,11 @@ +<?php +return array( + 'Vodafone' => array( + 'Mozilla/5.0 (Linux; U; Android 3.2; hu-hu; SmartTab10-MSM8260-V02d-Dec022011-Vodafone-HU) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.0.3; SmartTabII10 Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; fr-fr; SmartTAB 1002 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; de-de, SmartTabII7 Build/A2107A_A404_107_055_130124_VODA) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true, + ), + ), +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/ZTE.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/ZTE.php new file mode 100644 index 00000000000..4f29b7a633b --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/ZTE.php @@ -0,0 +1,6 @@ +<?php +return array( + 'ZTE' => array( + 'Mozilla/5.0 (Linux; Android 4.0.4; V8200plus Build/IMM76I) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.166 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false) + ) +); \ No newline at end of file diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/ualist.json b/htdocs/includes/mobiledetect/mobiledetectlib/tests/ualist.json index c8b6db5b3ee..165832d6e6f 100644 --- a/htdocs/includes/mobiledetect/mobiledetectlib/tests/ualist.json +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/ualist.json @@ -1 +1,8196 @@ -{"hash":"0f2ce8fdb263e38dc366cecd67ec5ac87ad4c637","user_agents":[{"vendor":"Acer","user_agent":"Mozilla\/5.0 (Linux; U; Android 3.2.1; en-us; A100 Build\/HTK55D) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13","mobile":true,"tablet":true},{"vendor":"Acer","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1; en-us; A110 Build\/JZO54K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Acer","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; de-de; A200 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true,"version":{"Android":"4.0.3","Webkit":"534.30","Safari":"4.0","Build":"IML74K"},"model":"A200"},{"vendor":"Acer","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; A500 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Acer","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; A501 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Acer","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.1; A701 Build\/JRO03H) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19","mobile":true,"tablet":true},{"vendor":"Acer","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.2; B1-A71 Build\/JZO54K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19","mobile":true,"tablet":true},{"vendor":"Acer","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.2; B1-710 Build\/JZO54K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/29.0.1547.72 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"Acer","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.2; A1-810 Build\/JDQ39) AppleWebKit\/537.31 (KHTML, like Gecko) Chrome\/26.0.1410.58 Safari\/537.31","mobile":true,"tablet":true},{"vendor":"Acer","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2; nl-nl; A1-810 Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Acer","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Acer; Allegro)","mobile":true,"tablet":false},{"vendor":"Acer","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.2; A3-A10 Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Safari\/537.36","mobile":true,"tablet":true,"version":{"Android":"4.2.2","Build":"JDQ39","Webkit":"537.36","Chrome":"32.0.1700.99"}},{"vendor":"Acer","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.2; A1-830 Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"AdvanDigital","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2; en-us; E1C Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":true},{"vendor":"AdvanDigital","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2; id-id; T3C Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Ainol","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.4; en-us; Ainol Novo8 Advanced Build\/GRJ22) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":true},{"vendor":"Ainol","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.1; Novo10 Hero Build\/20121115) AppleWebKit\/535.19 (KHTML like Gecko) Chrome\/18.0.1025.166 Safari\/535.19","mobile":true,"tablet":true},{"vendor":"Ainol","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2; es-es; novo9-Spark Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"AllFine","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; en-gb; FINE7 GENIUS Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"ASUS","user_agent":"Mozilla\/5.0 (Linux; U; Android 3.2.1; en-us; Transformer TF101 Build\/HTK75) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13","mobile":true,"tablet":true,"version":{"Android":"3.2.1","Webkit":"534.13","Safari":"4.0"},"model":"Transformer TF101"},{"vendor":"ASUS","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.1; Transformer Build\/JRO03L) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19","mobile":true,"tablet":true},{"vendor":"ASUS","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.1; ASUS Transformer Pad TF300T Build\/JRO03C) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19","mobile":true,"tablet":true},{"vendor":"ASUS","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.2; fr-fr; Transformer Build\/JZO54K; CyanogenMod-10) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"ASUS","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; asus_laptop Build\/IMM76L) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":false},{"vendor":"ASUS","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; en-gb; PadFone 2 Build\/JRO03L) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"ASUS","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; en-gb; PadFone 2 Build\/JRO03L) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true,"version":{"Android":"4.1.1","Build":"JRO03L","Webkit":"534.30","Safari":"4.0"}},{"vendor":"ASUS","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.1; ME301T Build\/JOP40D) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.94 Safari\/537.36","mobile":true,"tablet":true,"version":{"Android":"4.2.1","Build":"JOP40D"}},{"vendor":"ASUS","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.1; ME173X Build\/JOP40D) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.94 Safari\/537.36","mobile":true,"tablet":true,"version":{"Android":"4.2.1","Build":"JOP40D"}},{"vendor":"ASUS","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.2; TF300T Build\/JDQ39E) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19","mobile":true,"tablet":true,"version":{"Android":"4.2.2","Build":"JDQ39E"}},{"vendor":"Alcatel","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.7; en-in; MB525 Build\/GWK74; CyanogenMod-7.2.0) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Alcatel","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.5; it-it; ALCATEL ONE TOUCH 918D Build\/GRJ90) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false,"version":{"Android":"2.3.5","Webkit":"533.1","Safari":"4.0","Build":"GRJ90"},"model":"ONE TOUCH 918D"},{"vendor":"Alcatel","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.6; ru-ru; ALCATEL ONE TOUCH 991 Build\/GRJ90) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false,"version":{"Android":"2.3.6","Webkit":"533.1","Safari":"4.0","Build":"GRJ90"},"model":"ONE TOUCH 991"},{"vendor":"Alcatel","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; ru-ru; ALCATEL ONE TOUCH 993D Build\/ICECREAM) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false,"version":{"Android":"4.0.4","Webkit":"534.30","Safari":"4.0","Build":"ICECREAM"},"model":"ONE TOUCH 993D"},{"vendor":"Allview","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; ALLVIEW P5 Build\/IML74K) AppleWebKit\/534.30 (KHTML like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Allview","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us ; ALLVIEW SPEEDI Build\/IMM76D) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1\/UCBrowser\/8.5.3.246\/145\/355","mobile":true,"tablet":true},{"vendor":"Allview","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; en-us; AllviewCity Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Allview","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; ALLVIEWSPEED Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Amazon","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; KFTT Build\/IML74K) AppleWebKit\/535.19 (KHTML, like Gecko) Silk\/3.4 Mobile Safari\/535.19 Silk-Accelerated=true","mobile":true,"tablet":true},{"vendor":"Amazon","user_agent":"Mozilla\/5.0 (Linux; U; en-US) AppleWebKit\/528.5+ (KHTML, like Gecko, Safari\/528.5+) Version\/4.0 Kindle\/3.0 (screen 600x800; rotate)","mobile":true,"tablet":true,"version":{"Webkit":"528.5+","Kindle":"3.0","Safari":"4.0"},"model":"Kindle"},{"vendor":"Amazon","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; KFOTE Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true,"version":{"Android":"4.0.3","Build":"IML74K","Webkit":"534.30","Safari":"4.0"}},{"vendor":"Amazon","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; WFJWAE Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Apple","user_agent":"iTunes\/9.1.1","mobile":false,"tablet":false},{"vendor":"Apple","user_agent":"iTunes\/11.0.2 (Windows; Microsoft Windows 8 x64 Business Edition (Build 9200)) AppleWebKit\/536.27.1","mobile":false,"tablet":false},{"vendor":"Apple","user_agent":"Mozilla\/5.0 (iPod touch; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit\/537.51.1 (KHTML, like Gecko) Version\/7.0 Mobile\/11A4449d Safari\/9537.53","mobile":true,"tablet":false},{"vendor":"Apple","user_agent":"Mozilla\/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit\/420+ (KHTML, like Gecko) Version\/3.0 Mobile\/1A543 Safari\/419.3","mobile":true,"tablet":false,"version":{"Webkit":"420+","Safari":"3.0"}},{"vendor":"Apple","user_agent":"Mozilla\/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit\/528.18 (KHTML, like Gecko) Version\/4.0 Mobile\/7A341 Safari\/528.16","mobile":true,"tablet":false,"version":{"iOS":"3_0","Webkit":"528.18","Safari":"4.0"},"model":"iPhone"},{"vendor":"Apple","user_agent":"Mozilla\/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit\/534.46 (KHTML, like Gecko) Version\/5.1 Mobile\/9B206 Safari\/7534.48.3","mobile":true,"tablet":false,"version":{"iOS":"5_1_1","Webkit":"534.46","Mobile":"9B206","Safari":"5.1"},"model":"iPhone"},{"vendor":"Apple","user_agent":"Mozilla\/5.0 (iPod; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit\/536.26 (KHTML, like Gecko) Version\/6.0 Mobile\/10A403 Safari\/8536.25","mobile":true,"tablet":false,"version":{"iOS":"6_0","Webkit":"536.26","Mobile":"10A403","Safari":"6.0"},"model":"iPod"},{"vendor":"Apple","user_agent":"Mozilla\/5.0 (iPad; CPU OS 5_1_1 like Mac OS X; en-us) AppleWebKit\/534.46.0 (KHTML, like Gecko) CriOS\/21.0.1180.80 Mobile\/9B206 Safari\/7534.48.3 (6FF046A0-1BC4-4E7D-8A9D-6BF17622A123)","mobile":true,"tablet":true,"version":{"iOS":"5_1_1","Webkit":"534.46.0","Chrome":"21.0.1180.80","Mobile":"9B206"},"model":"iPad"},{"vendor":"Apple","user_agent":"Mozilla\/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit\/536.26 (KHTML, like Gecko) Version\/6.0 Mobile\/10A403 Safari\/8536.25","mobile":true,"tablet":true,"version":{"iOS":"6_0","Webkit":"536.26","Safari":"6.0","Mobile":"10A403"},"model":"iPad"},{"vendor":"Apple","user_agent":"Mozilla\/5.0 (iPad; U; CPU OS 4_2_1 like Mac OS X; en-us) AppleWebKit\/533.17.9 (KHTML, like Gecko) Version\/5.0.2 Mobile\/8C148 Safari\/6533.18.5","mobile":true,"tablet":true,"version":{"iOS":"4_2_1","Webkit":"533.17.9","Safari":"5.0.2","Mobile":"8C148"},"model":"iPad"},{"vendor":"Apple","user_agent":"Mozilla\/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit\/531.21.10 (KHTML, like Gecko) Version\/4.0.4 Mobile\/7B334b Safari\/531.21.10","mobile":true,"tablet":true,"version":{"iOS":"3_2","Webkit":"531.21.10","Safari":"4.0.4","Mobile":"7B334b"},"model":"iPad"},{"vendor":"Apple","user_agent":"Mozilla\/5.0 (iPhone; CPU iPhone OS 6_0_1 like Mac OS X; da-dk) AppleWebKit\/534.46.0 (KHTML, like Gecko) CriOS\/21.0.1180.82 Mobile\/10A523 Safari\/7534.48.3","mobile":true,"tablet":false,"version":{"iOS":"6_0_1","Webkit":"534.46.0","Chrome":"21.0.1180.82","Mobile":"10A523"},"model":"iPhone"},{"vendor":"Apple","user_agent":"Mozilla\/5.0 (iPhone; CPU iPhone OS 6_0_1 like Mac OS X) AppleWebKit\/536.26 (KHTML, like Gecko) Version\/6.0 Mobile\/10A523 Safari\/8536.25","mobile":true,"tablet":false,"version":{"iOS":"6_0_1","Webkit":"536.26","Safari":"6.0","Mobile":"10A523"},"model":"iPhone"},{"vendor":"Apple","user_agent":"Mozilla\/5.0 (iPhone; CPU iPhone OS 6_1 like Mac OS X; ru-ru) AppleWebKit\/536.26 (KHTML, like Gecko) CriOS\/23.0.1271.100 Mobile\/10B142 Safari\/8536.25","mobile":true,"tablet":false,"version":{"iOS":"6_1","Webkit":"536.26","Chrome":"23.0.1271.100","Mobile":"10B142"},"model":"iPhone"},{"vendor":"Apple","user_agent":"Mozilla\/5.0 (iPhone; CPU iPhone OS 6_1_3 like Mac OS X) AppleWebKit\/536.26 (KHTML, like Gecko) Version\/6.0 Mobile\/10B329 Safari\/8536.25","mobile":true,"tablet":false,"version":{"iOS":"6_1_3","Webkit":"536.26","Safari":"6.0","Mobile":"10B329"},"model":"iPhone"},{"vendor":"Apple","user_agent":"Mozilla\/5.0 (iPad; CPU OS 6_1_3 like Mac OS X) AppleWebKit\/536.26 (KHTML, like Gecko) Coast\/1.0.2.62956 Mobile\/10B329 Safari\/7534.48.3","mobile":true,"tablet":true,"version":{"Coast":"1.0.2.62956"}},{"vendor":"Archos","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.2; Qilive 97R Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/30.0.1599.92 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"Archos","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.2; Archos 50 Platinum Build\/JZO54K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.94 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Archos","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.4; ARCHOS 80G9 Build\/IMM76D) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19","mobile":true,"tablet":true},{"vendor":"Archos","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2.1; fr-fr; A101IT Build\/FROYO) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":true},{"vendor":"Archos","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.2; Archos 101 Neon Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"AudioSonic","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; en-au; T-17B Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (BlackBerry; U; BlackBerry 9300; en) AppleWebKit\/534.8+ (KHTML, like Gecko) Version\/6.0.0.546 Mobile Safari\/534.8+","mobile":true,"tablet":false,"version":{"Webkit":"534.8+","BlackBerry":"6.0.0.546"},"model":"BlackBerry 9300"},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (BlackBerry; U; BlackBerry 9360; en-US) AppleWebKit\/534.11+ (KHTML, like Gecko) Version\/7.0.0.400 Mobile Safari\/534.11+","mobile":true,"tablet":false},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (BlackBerry; U; BlackBerry 9700; he) AppleWebKit\/534.8+ (KHTML, like Gecko) Version\/6.0.0.723 Mobile Safari\/534.8+","mobile":true,"tablet":false},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (BlackBerry; U; BlackBerry 9700; en-US) AppleWebKit\/534.8 (KHTML, like Gecko) Version\/6.0.0.448 Mobile Safari\/534.8","mobile":true,"tablet":false},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (BlackBerry; U; BlackBerry 9790; en-GB) AppleWebKit\/534.11+ (KHTML, like Gecko) Version\/7.1.0.714 Mobile Safari\/534.11+","mobile":true,"tablet":false,"version":{"Webkit":"534.11+","BlackBerry":"7.1.0.714"},"model":"BlackBerry 9790"},{"vendor":"BlackBerry","user_agent":"Opera\/9.80 (BlackBerry; Opera Mini\/7.0.29990\/28.2504; U; en) Presto\/2.8.119 Version\/11.10","mobile":true,"tablet":false},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (BlackBerry; U; BlackBerry 9981; en-GB) AppleWebKit\/534.11+ (KHTML, like Gecko) Version\/7.1.0.342 Mobile Safari\/534.11+","mobile":true,"tablet":false},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (BlackBerry; U; BlackBerry 9800; en-GB) AppleWebKit\/534.8+ (KHTML, like Gecko) Version\/6.0.0.546 Mobile Safari\/534.8+","mobile":true,"tablet":false},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (BlackBerry; U; BlackBerry 9780; es) AppleWebKit\/534.8 (KHTML, like Gecko) Version\/6.0.0.480 Mobile Safari\/534.8","mobile":true,"tablet":false},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (BlackBerry; U; BlackBerry 9810; en-US) AppleWebKit\/534.11 (KHTML, like Gecko) Version\/7.0.0.583 Mobile Safari\/534.11","mobile":true,"tablet":false},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (BlackBerry; U; BlackBerry 9860; es) AppleWebKit\/534.11+ (KHTML, like Gecko) Version\/7.0.0.576 Mobile Safari\/534.11+","mobile":true,"tablet":false},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (BlackBerry; U; BlackBerry 9900; en-US) AppleWebKit\/534.11 (KHTML, like Gecko) Version\/7.1.0.523 Mobile Safari\/534.11","mobile":true,"tablet":false},{"vendor":"BlackBerry","user_agent":"BlackBerry8520\/5.0.0.592 Profile\/MIDP-2.1 Configuration\/CLDC-1.1 VendorID\/136","mobile":true,"tablet":false},{"vendor":"BlackBerry","user_agent":"BlackBerry8520\/5.0.0.1067 Profile\/MIDP-2.1 Configuration\/CLDC-1.1 VendorID\/603","mobile":true,"tablet":false},{"vendor":"BlackBerry","user_agent":"BlackBerry8520\/5.0.0.1036 Profile\/MIDP-2.1 Configuration\/CLDC-1.1 VendorID\/611","mobile":true,"tablet":false,"version":{"BlackBerry":"5.0.0.1036","VendorID":"611"},"model":"BlackBerry8520"},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (BlackBerry; U; BlackBerry 9220; en) AppleWebKit\/534.11+ (KHTML, like Gecko) Version\/7.1.0.337 Mobile Safari\/534.11+","mobile":true,"tablet":false},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (PlayBook; U; RIM Tablet OS 2.1.0; en-US) AppleWebKit\/536.2+ (KHTML, like Gecko) Version\/7.2.1.0 Safari\/536.2+","mobile":true,"tablet":true},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (BB10; Touch) AppleWebKit\/537.1+ (KHTML, like Gecko) Version\/10.0.0.1337 Mobile Safari\/537.1+","mobile":true,"tablet":false},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (BB10; Touch) AppleWebKit\/537.10+ (KHTML, like Gecko) Version\/10.0.9.2372 Mobile Safari\/537.10+","mobile":true,"tablet":false},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (BB10; Touch) \/537.10+ (KHTML, like Gecko) Version\/10.0.9.2372 Mobile Safari\/537.10+","mobile":true,"tablet":false,"version":{"BlackBerry":"10.0.9.2372"}},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (Linux; U; Android 3.2.1; en-us; Transformer TF101 Build\/HTK75) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13","mobile":true,"tablet":true,"version":{"Android":"3.2.1","Webkit":"534.13","Safari":"4.0"},"model":"Transformer TF101"},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; de-de; A200 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true,"version":{"Android":"4.0.3","Webkit":"534.30","Safari":"4.0"},"model":"A200"},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; A500 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true,"version":{"Android":"4.0.3","Webkit":"534.30","Safari":"4.0"},"model":"A500"},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; A501 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true,"version":{"Android":"4.0.3","Webkit":"534.30","Safari":"4.0"},"model":"A501"},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.1; Transformer Build\/JRO03L) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19","mobile":true,"tablet":true,"version":{"Android":"4.1.1","Webkit":"535.19","Chrome":"18.0.1025.166"},"model":"Transformer"},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.1; ASUS Transformer Pad TF300T Build\/JRO03C) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19","mobile":true,"tablet":true,"version":{"Android":"4.1.1","Webkit":"535.19","Chrome":"18.0.1025.166"},"model":"Transformer Pad TF300T"},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.2; fr-fr; Transformer Build\/JZO54K; CyanogenMod-10) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true,"version":{"Android":"4.1.2","Webkit":"534.30","Safari":"4.0","Build":"JZO54K"},"model":"Transformer"},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.2; B1-A71 Build\/JZO54K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19","mobile":true,"tablet":true,"version":{"Android":"4.1.2","Webkit":"535.19","Chrome":"18.0.1025.166"},"model":"B1-A71"},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Acer; Allegro)","mobile":true,"tablet":false,"version":{"Windows Phone OS":"7.5","Trident":"5.0","IE":"9.0"},"model":"Allegro"},{"vendor":"Broncho","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2; es-es; Broncho N701 Build\/FRF91) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":true},{"vendor":"bq","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; es-es; bq Livingstone 2 Build\/1.1.7 20121018-10:33) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"bq","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; es-es; bq Edison Build\/1.1.10-1015 20121230-18:00) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"bq","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.3; Maxwell Lite Build\/v1.0.0.ICS.maxwell.20120920) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19","mobile":true,"tablet":true},{"vendor":"bq","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; zh-tw; bq Maxwell Plus Build\/1.0.0 20120913-10:39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Captiva","user_agent":"Opera\/9.80 (X11; Linux zvav; U; de) Presto\/2.8.119 Version\/11.10 Mozilla\/5.0 (Linux; U; Android 4.1.1; de-de; CAPTIVA PAD 10.1 Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Casio","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.3; en-us; C771 Build\/C771M120) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"ChangJia","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; pt-br; TPC97113 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"ChangJia","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; TPC7102 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Coby","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2; en-us; MID7010 Build\/FRF85B) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":true},{"vendor":"Coby","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; MID7048 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Coby","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; MID8042 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Concorde","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; hu-hu; ConCorde Tab T10 Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Concorde","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; hu-hu; ConCorde tab PLAY Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Cresta","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; nl-nl; CRESTA.CTP888 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Cube","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; ru-ru; CUBE U9GT 2 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Danew","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; es-es; Dslide 700 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true,"version":{"Android":"4.0.3","Build":"IML74K","Webkit":"534.30","Safari":"4.0"},"model":"Dslide 700"},{"vendor":"DanyTech","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.2; Genius Tab Q4 Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/31.0.1650.59 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"Dell","user_agent":"Mozilla\/5.0 (Linux; U; Android 1.6; en-gb; Dell Streak Build\/Donut AppleWebKit\/528.5+ (KHTML, like Gecko) Version\/3.1.2 Mobile Safari\/ 525.20.1","mobile":true,"tablet":false},{"vendor":"Dell","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.7; hd-us; Dell Venue Build\/GWK74; CyanogenMod-7.2.0) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Dell","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; DELL; Venue Pro)","mobile":true,"tablet":false},{"vendor":"DPS","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; en-us; DPS Dream 9 Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"ECS","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; it-it; TM105A Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true,"version":{"Android":"4.0.4","Build":"IMM76D","Webkit":"534.30"}},{"vendor":"Eboda","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; ro-ro; E-Boda Supreme Dual Core X190 Build\/JRO03C) AppleWebKit\/534.30 (KHTML like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true,"version":{"Android":"4.1.1","Webkit":"534.30","Safari":"4.0"}},{"vendor":"Eboda","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; ro-ro; E-Boda Essential A160 Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Eboda","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.3; E-Boda Supreme X80 Dual Core Build\/ICS.g12refM806A1YBD.20120925) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19","mobile":true,"tablet":true},{"vendor":"Eboda","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; ro-ro; E-boda essential smile Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Fly","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; ru-ru; Fly IQ440; Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Fly","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.6; ru-ru; FLY IQ256 Build\/GRK39F) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Fujitsu","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; ja-jp; F-10D Build\/V21R48A) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":true,"version":{"Android":"4.0.3","Build":"V21R48A","Webkit":"534.30","Safari":"4.0"}},{"vendor":"Fujitsu","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; ru-ru; M532 Build\/IML74K) AppleWebKit\/534.30 (KHTML like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true,"version":{"Android":"4.0.3","Build":"IML74K","Webkit":"534.30","Safari":"4.0"}},{"vendor":"FX2","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2; de-de; FX2 PAD7 RK Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Galapad","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; zh-tw; G1 Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true,"version":{"Android":"4.1.1","Webkit":"534.30","Safari":"4.0","Build":"JRO03C"}},{"vendor":"GoClever","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; el-gr; GOCLEVER TAB A103 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"GoClever","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.4; zh-tw; A7GOCLEVER Build\/GRJ22) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":true},{"vendor":"GoClever","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.4; GOCLEVER TAB A104 Build\/IMM76D) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19","mobile":true,"tablet":true},{"vendor":"GoClever","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; cs-cz; GOCLEVER TAB A93.2 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"GoClever","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; sk-sk; GOCLEVER TAB A971 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"GoClever","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; lv-lv; GOCLEVER TAB A972BK Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"GoClever","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; fr-fr; GOCLEVER TAB A104.2 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"GoClever","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; pt-pt; GOCLEVER TAB T76 Build\/MID) AppleWebKit\/534.30 (KHTML like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Google","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2; en-us; Nexus One Build\/FRF91) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Google","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.2; Nexus 4 Build\/JDQ39) AppleWebKit\/537.31 (KHTML, like Gecko) Chrome\/26.0.1410.40 Mobile Safari\/537.31 OPR\/14.0.1074.54070","mobile":true,"tablet":false,"version":{"Android":"4.2.2","Build":"JDQ39","Webkit":"537.31","Opera":"14.0.1074.54070"}},{"vendor":"Google","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.2; Nexus 4 Build\/JDQ39) AppleWebKit\/537.31 (KHTML, like Gecko) Chrome\/26.0.1410.58 Mobile Safari\/537.31","mobile":true,"tablet":false,"version":{"Android":"4.2.2","Chrome":"26.0.1410.58"}},{"vendor":"Google","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; en-us; Google Nexus 4 - 4.1.1 - API 16 - 768x1280 Build\/JRO03S) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Google","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; en-us; Google Galaxy Nexus - 4.1.1 - API 16 - 720x1280 Build\/JRO03S) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Google","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.1; Nexus 7 Build\/JRO03D) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19","mobile":true,"tablet":true},{"vendor":"Google","user_agent":"Mozilla\/5.0 (Linux; Android 4.2; Nexus 7 Build\/JOP40C) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19","mobile":true,"tablet":true},{"vendor":"Google","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.2; Nexus 7 Build\/JZ054K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19","mobile":true,"tablet":true,"version":{"Android":"4.1.2","Chrome":"18.0.1025.166"}},{"vendor":"Google","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.2; cs-cz; Nexus S Build\/JZO54K; CyanogenMod-10.0.0) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Google","user_agent":"Mozilla\/5.0 (Linux; Android 4.3; Nexus 10 Build\/JWR66Y) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/29.0.1547.72 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"Google","user_agent":"Mozilla\/5.0 (Linux; U; Android; en_us; Nexus 7 Build\/) AppleWebKit\/530.17 (KHTML, like Gecko) Version\/4.0 NetFrontLifeBrowser\/2.3 Mobile (Dragonfruit)","mobile":true,"tablet":true},{"vendor":"GU","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; vi-vn; TX-A1301 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true,"version":{"Android":"4.0.4","Build":"IMM76D","Webkit":"534.30","Safari":"4.0"}},{"vendor":"GU","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; da-dk; Q702 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true,"version":{"Android":"4.0.3","Build":"IML74K","Webkit":"534.30","Safari":"4.0"}},{"vendor":"HCL","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; U1 Build\/HCL ME Tablet U1) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":true},{"vendor":"HCL","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; U1 Build\/HCL ME Tablet U1) AppleWebKit\/534.30 (KHTML like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":true},{"vendor":"HCL","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.2; Connect-3G-2.0 Build\/HCL) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/29.0.1547.72 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"HCL","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.3; pt-br; X1 Build\/HCL ME Tablet X1) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":true},{"vendor":"HP","user_agent":"Mozilla\/5.0 (hp-tablet; Linux; hpwOS\/3.0.5; U; en-GB) AppleWebKit\/534.6 (KHTML, like Gecko) wOSBrowser\/234.83 Safari\/534.6 TouchPad\/1.0","mobile":true,"tablet":true},{"vendor":"HP","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; en-gb; HP Slate 7 Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"HP","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.1; HP Slate 7 Build\/JRO03H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.94 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"HP","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2; de-de; HP 8 Build\/1.0.7_WW-FIR-13) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (X11; Linux x86_64; Z520m; en-ca) AppleWebKit\/534.24 (KHTML, like Gecko) Chrome\/11.0.696.34 Safari\/534.24","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"HTC_Touch_HD_T8282 Mozilla\/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.11)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 1.5; en-us; ADR6200 Build\/CUPCAKE) AppleWebKit\/528.5+ (KHTML, like Gecko) Version\/3.1.2 Mobile Safari\/525.20.1","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.1; xx-xx; Desire_A8181 Build\/ERE27) AppleWebKit\/530.17 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/530.17","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.1-update1; de-de; HTC Desire 1.19.161.5 Build\/ERE27) AppleWebKit\/530.17 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/530.17","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.1-update1; en-gb; HTC Desire Build\/ERE27) AppleWebKit\/530.17 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/530.17","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2; fr-fr; HTC Desire Build\/FRF91) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2; en-dk; Desire_A8181 Build\/FRF91) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2; xx-xx; 001HT Build\/FRF91) AppleWebKit\/525.10+ (KHTML, like Gecko) Version\/3.0.4 Mobile Safari\/523.12.2","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2; xx-xx; HTCA8180\/1.0 Android\/2.2 release\/06.23.2010 Browser\/WAP 2.0 Profile\/MIDP-2.0 Configuration\/CLDC-1.1 Build\/FRF91) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2.2; de-at; HTC Desire Build\/FRG83G) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2.2; en-sk; Desire_A8181 Build\/FRG83G) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3; xx-xx; HTC\/DesireS\/1.07.163.1 Build\/GRH78C) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.3; en-lv; HTC_DesireZ_A7272 Build\/GRI40) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.4; en-us; ADR6300 Build\/GRJ22) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.5; en-gb; HTC\/DesireS\/2.10.161.3 Build\/GRJ90) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.5; ru-ru; HTC_DesireS_S510e Build\/GRJ90) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.5; en-us; Inspire 4G Build\/GRJ90) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.5; de-de; HTC Explorer A310e Build\/GRJ90) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.5; en-gb; HTC_ChaCha_A810e Build\/GRJ90) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.5; nl-nl; HTC_DesireHD_A9191 Build\/GRJ90) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.5; ru-ru; HTC Desire S Build\/GRJ90) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.3; en-au; HTC Desire Build\/GRI40) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.5; de-de; HTC_DesireHD Build\/GRJ90) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.5; ru-ua; HTC_WildfireS_A510e Build\/GRJ90) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.7; en-us; HTC Vision Build\/GRI40; ILWT-CM7) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0; xx-xx; HTC_GOF_U\/1.05.161.1 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; hu-hu; HTC Sensation Z710e Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; pl-pl; EVO3D_X515m Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; ru-ru; HTC_One_S Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; ru-ru; HTC_One_V Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; zh-cn; HTC_A320e Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; zh-tw; HTC Desire V Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.3; PG86100 Build\/IML74K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-nl; SensationXE_Beats_Z715e Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; ADR6425LVW 4G Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.3; HTC One V Build\/IML74K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; cs-ee; Sensation_Z710e Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; HTC Evo 4G Build\/MIUI) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.4; Desire HD Build\/IMM76D) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; en-my; HTC_One_X Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; it-it; IncredibleS_S710e Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; fr-fr; HTC_Desire_S Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.1; HTC One X Build\/JRO03C) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.1; HTC Butterfly Build\/JRO03C) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.1; EVO Build\/JRO03C) AppleWebKit\/537.22 (KHTML, like Gecko) Chrome\/25.0.1364.169 Mobile Safari\/537.22","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.2; HTCSensation Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC 7 Mozart T8698; QSD8x50)","mobile":true,"tablet":false,"version":{"IE":"9.0","Windows Phone OS":"7.5","Trident":"5.0"},"model":"7 Mozart T8698"},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; 7 HTC MOZART)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; 7 Mondrian T8788)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; 7 Mozart T8698)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; 7 Mozart)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; 7 Mozart; Orange)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; 7 Pro T7576)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; 7 Pro)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; 7 Schubert T9292)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; 7 Surround)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; 7 Trophy T8686)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; 7 Trophy)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Eternity)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Gold)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; HD2 LEO)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; HD2)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; HD7 T9292)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; HD7)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; iPad 3)","mobile":true,"tablet":true},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; LEO)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Mazaa)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Mondrian)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Mozart T8698)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Mozart)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; mwp6985)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; PC40100)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; PC40200)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; PD67100)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; PI39100)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; PI86100)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Radar 4G)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Radar C110e)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Radar C110e; 1.08.164.02)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Radar C110e; 2.05.164.01)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Radar C110e; 2.05.168.02)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Radar)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Radar; Orange)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Schuber)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Schubert T9292)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Schubert)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Spark)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Surround)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; T7575)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; T8697)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; T8788)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; T9295)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; T9296)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; TITAN X310e)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Titan)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Torphy T8686)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; X310e)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC_blocked; T8788)","mobile":true,"tablet":false,"version":{"IE":"9.0","Windows Phone OS":"7.5","Trident":"5.0"},"model":"T8788"},{"vendor":"Hudl","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.2; Hudl HT7S3 Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/30.0.1599.82 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"Huwaei","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.1-update1; bg-bg; Ideos S7 Build\/ERE27) AppleWebKit\/525.10+ (KHTML, like Gecko) Version\/3.0.4 Mobile Safari\/523.12.2","mobile":true,"tablet":true},{"vendor":"Huwaei","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.1; en-us; Ideos S7 Build\/ERE27) AppleWebKit\/525.10+ (KHTML, like Gecko) Version\/3.0.4 Mobile Safari\/523.12.2","mobile":true,"tablet":true},{"vendor":"Huwaei","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.6; lt-lt; U8660 Build\/HuaweiU8660) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Huwaei","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.7; ru-ru; HUAWEI-U8850 Build\/HuaweiU8850) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Huwaei","user_agent":"Mozilla\/5.0 (Linux; U; Android 3.2; pl-pl; MediaPad Build\/HuaweiMediaPad) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13","mobile":true,"tablet":true},{"vendor":"Huwaei","user_agent":"Mozilla\/5.0 (Linux; U; Android 3.2; nl-nl; HUAWEI MediaPad Build\/HuaweiMediaPad) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13","mobile":true,"tablet":true},{"vendor":"Huwaei","user_agent":"HUAWEI_T8951_TD\/1.0 Android\/4.0.4 (Linux; U; Android 4.0.4; zh-cn) Release\/05.31.2012 Browser\/WAP2.0 (AppleWebKit\/534.30) Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Huwaei","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.2; ar-eg; MediaPad 7 Youth Build\/HuaweiMediaPad) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Huwaei","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.2; zh-cn; HW-HUAWEI_C8815\/C8815V100R001C541B135; 540*960; CTC\/2.0) AppleWebKit\/534.30 (KHTML, like Gecko) Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Huwaei","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; zh-cn; HW-HUAWEI_C8813D\/C8813DV100R001C92B172; 480*854; CTC\/2.0) AppleWebKit\/534.30 (KHTML, like Gecko) Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Huwaei","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; zh-cn; HW-HUAWEI_Y300C\/Y300CV100R001C92B168; 480*800; CTC\/2.0) AppleWebKit\/534.30 (KHTML, like Gecko) Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Iconbit","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.1; NT-3702M Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/29.0.1547.72 Safari\/537.36 OPR\/16.0.1212.65583","mobile":true,"tablet":true},{"vendor":"Iconbit","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; ru-ru; NetTAB SPACE II Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"iJoy","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; fr-fr; Tablet Planet II-v3 Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Intenso","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1.;de-de; INM8002KP Build\/JR003H) AppleWebKit\/534.30 (KHTML, like Gecko)Version\/4.0 Safari\/534.30","mobile":true,"tablet":true,"version":{"Android":"4.1.1.","Webkit":"534.30","Safari":"4.0"}},{"vendor":"IRU","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; ru-ru; M702pro Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"JXD","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; F3000 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Karbonn","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.1; ST10 Build\/JRO03C) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19","mobile":true,"tablet":true},{"vendor":"Kobo","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.0; en-us;) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1 (Kobo Touch)","mobile":true,"tablet":true,"version":{"Android":"2.0","Webkit":"533.1","Safari":"4.0"}},{"vendor":"Lenovo","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; es-es; IdeaTab_A1107 Build\/MR1) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Lenovo","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.3; IdeaTab A2107A-H Build\/IML74K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/27.0.1453.90 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"Lenovo","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-au; ThinkPad Tablet Build\/ThinkPadTablet_A400_03) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Lenovo","user_agent":"UCWEB\/2.0 (Linux; U; Opera Mini\/7.1.32052\/30.3697; en-US; IdeaTabA1000-G) U2\/1.0.0 UCBrowser\/9.2.0.419 Mobile","mobile":true,"tablet":true},{"vendor":"Lenovo","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.2; IdeaTabA1000-F Build\/JZO54K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"Lenovo","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.1; Lenovo A3000-H Build\/JOP40D) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.117 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"Lenovo","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.2; IdeaTab A3000-F Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Safari\/537.360","mobile":true,"tablet":true},{"vendor":"Lenovo","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1; zh-cn; Lenovo-A3000-H\/S100) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.1 Mobile Safari\/534.300","mobile":true,"tablet":true},{"vendor":"Lenovo","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2; es-us; IdeaTab A3000-F Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Lenovo","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.3; IdeaTab A2107A-H Build\/IML74K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19","mobile":true,"tablet":true},{"vendor":"Lenovo","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; de-de; IdeaTab A2107A-H Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Lenovo","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; es-es; IdeaTabA2109A Build\/JRO03R) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Lenovo","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; nl-nl; IdeaTabA2109A Build\/JRO03R) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Lenovo","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; es-es; IdeaTab_A1107 Build\/MR1) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.300","mobile":true,"tablet":true},{"vendor":"Lenovo","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.2; IdeaTab S6000-H Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.138 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"Lenovo","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2; en-gb; IdeaTab S6000-F Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Lenovo","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.2; Lenovo B8000-F Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"Lenovo","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2;it-it; Lenovo B8000-F\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.2.2 Mobile Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Lenovo","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2; it-it; Lenovo B6000-F\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.2.2 Mobile Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Lenovo","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.2; Lenovo B6000-F Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"LG","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2; en-us; LG-P509 Build\/FRF91) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1 MMS\/LG-Android-MMS-V1.0\/1.2","mobile":true,"tablet":false},{"vendor":"LG","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2.2; pt-br; LG-P350f Build\/FRG83G) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1 MMS\/LG-Android-MMS-V1.0\/1.2","mobile":true,"tablet":false},{"vendor":"LG","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.3; en-us; LG-P500 Build\/GRI40) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1 MMS\/LG-Android-MMS-V1.0\/1.2","mobile":true,"tablet":false},{"vendor":"LG","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.3; en-us; LS670 Build\/GRI40) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"LG","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.4; ru-ru; LG-E510 Build\/GRJ22) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1 MMS\/LG-Android-MMS-V1.0\/1.2","mobile":true,"tablet":false},{"vendor":"LG","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.4; en-us; VS910 4G Build\/GRJ22) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"LG","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; nl-nl; LG-P700 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"LG","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; ko-kr; LG-L160L Build\/IML74K) AppleWebkit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"LG","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; LG-F160S Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"LG","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; nl-nl; LG-E610v\/V10f Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"LG","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; LG-E612 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"LG","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.2; LG-F180K Build\/JZO54K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19","mobile":true,"tablet":false},{"vendor":"LG","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.2; LG-V500 Build\/JDQ39B) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/31.0.1650.59 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"LG","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; LG-LW770 Build\/IMM76I) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"LG","user_agent":"Mozilla\/5.0 (Linux; Android 4.4.2; LG-V510 Build\/KOT49H.L004) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"LG","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; LG; LG E-900)","mobile":true,"tablet":false},{"vendor":"LG","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; LG; LG-C900)","mobile":true,"tablet":false},{"vendor":"LG","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; LG; LG-C900k)","mobile":true,"tablet":false},{"vendor":"LG","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; LG; LG-E900)","mobile":true,"tablet":false},{"vendor":"LG","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; LG; LG-E900; Orange)","mobile":true,"tablet":false},{"vendor":"LG","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; LG; LG-E900h)","mobile":true,"tablet":false},{"vendor":"LG","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; LG; LG-Optimus 7)","mobile":true,"tablet":false},{"vendor":"LG","user_agent":"Mozilla\/5.0 (Linux; U; Android 3.0.1; ja-jp; L-06C Build\/HRI66) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13","mobile":true,"tablet":true},{"vendor":"LG","user_agent":"Mozilla\/5.0 (Linux; U; Android 3.0; en-us; LG-V900 Build\/HRI39) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13","mobile":true,"tablet":true},{"vendor":"Megafon","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.5; ru-ru; MegaFon V9 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":true},{"vendor":"Megafon","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.1; MT7A Build\/JRO03C) AppleWebKit\/537.31 (KHTML, like Gecko) Chrome\/26.0.1410.58 Safari\/537.31","mobile":true,"tablet":true},{"vendor":"MediaTek","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; fr-fr; MT8377 Build\/JRO03C) AppleWebKit\/534.30 (KHTML like Gecko) Version\/4.0 Safari\/534.30\/4.05d.1002.m7","mobile":true,"tablet":true},{"vendor":"Micromax","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.1; Micromax A110 Build\/JRO03C) AppleWebKit\/537.22 (KHTML, like Gecko) Chrome\/25.0.1364.169 Mobile Safari\/537.22","mobile":true,"tablet":false,"version":{"Android":"4.1.1","Build":"JRO03C","Webkit":"537.22","Chrome":"25.0.1364.169"}},{"vendor":"Micromax","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0; xx-xx; Micromax P250(Funbook) Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true,"version":{"Webkit":"534.30","Android":"4.0","Build":"IMM76D","Safari":"4.0"}},{"vendor":"Microsoft","user_agent":"Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident\/6.0; Touch; .NET4.0E; .NET4.0C; Tablet PC 2.0)","mobile":true,"tablet":true,"version":{"IE":"10.0","Windows NT":"6.2","Trident":"6.0"}},{"vendor":"Microsoft","user_agent":"Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident\/6.0)","mobile":true,"tablet":true},{"vendor":"Microsoft","user_agent":"Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident\/6.0; Touch)","mobile":true,"tablet":true},{"vendor":"Microsoft","user_agent":"Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident\/6.0; Touch; ARMBJS)","mobile":true,"tablet":true},{"vendor":"Microsoft","user_agent":"Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident\/6.0; Touch; MASMJS)","mobile":false,"tablet":false},{"vendor":"Microsoft","user_agent":"Mozilla\/5.0 (Windows NT 6.2; WOW64; rv:25.0) Gecko\/20130626 Firefox\/25.0","mobile":false,"tablet":false},{"vendor":"Microsoft","user_agent":"Mozilla\/5.0 (Windows NT 6.2; WOW64; rv:22.0) Gecko\/20100101 Firefox\/22.0","mobile":false,"tablet":false},{"vendor":"Microsoft","user_agent":"Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident\/6.0; MDDCJS)","mobile":false,"tablet":false},{"vendor":"Microsoft","user_agent":"Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident\/6.0; MDDCJS)","mobile":false,"tablet":false},{"vendor":"Microsoft","user_agent":"Mozilla\/5.0 (Windows NT 6.2; WOW64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.52 Safari\/537.36 OPR\/15.0.1147.130","mobile":false,"tablet":false},{"vendor":"Microsoft","user_agent":"Mozilla\/5.0 (Windows NT 6.2; WOW64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/27.0.1453.116 Safari\/537.36","mobile":false,"tablet":false},{"vendor":"Microsoft","user_agent":"Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident\/6.0; Touch; MDDCJS; WebView\/1.0)","mobile":false,"tablet":false},{"vendor":"Modecom","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2; pl-pl; FreeTAB 1014 IPS X4+ Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Motorola","user_agent":"MOT-W510\/08.11.05R MIB\/BER2.2 Profile\/MIDP-2.0 Configuration\/CLDC-1.1 EGE\/1.0 UP.Link\/6.3.0.0.0","mobile":true,"tablet":false},{"vendor":"Motorola","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2.2; zh-cn; ME722 Build\/MLS2GC_2.6.0) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Motorola","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.4; en-us; DROIDX Build\/4.5.1_57_DX8-51) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Motorola","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.5; en-us; MB855 Build\/4.5.1A-1_SUN-254_13) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Motorola","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.5; es-us; MB526 Build\/4.5.2-51_DFL-50) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Motorola","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.6; en-ca; MB860 Build\/4.5.2A-51_OLL-17.8) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Motorola","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.7; en-us; MOT-XT535 Build\/V1.540) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Motorola","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.7; ko-kr; A853 Build\/SHOLS_U2_05.26.3; CyanogenMod-7.1.2) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Motorola","user_agent":"Mozilla\/5.0 (Linux; U; Android 3.0; en-us; Xoom Build\/HRI39) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13","mobile":true,"tablet":true},{"vendor":"Motorola","user_agent":"Mozilla\/5.0 (Linux; U; Android 3.1; en-us; Xoom Build\/HMJ25) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13","mobile":true,"tablet":true},{"vendor":"Motorola","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; DROID RAZR 4G Build\/6.7.2-180_DHD-16_M4-31) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Motorola","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; Xoom Build\/IMM76L) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Motorola","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; pt-br; XT687 Build\/V2.27D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false,"version":{"Android":"4.0.4","Webkit":"534.30","Safari":"4.0"},"model":"XT687"},{"vendor":"Motorola","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; es-es; MOT-XT910 Build\/6.7.2-180_SPU-19-TA-11.6) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Motorola","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.2; XT910 Build\/9.8.2O-124_SPUL-17) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19","mobile":true,"tablet":false},{"vendor":"Motorola","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.2; XT915 Build\/2_32A_2031) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.94 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Motorola","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.2; XT919 Build\/2_290_2017) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.64 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Motorola","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.2; XT925 Build\/9.8.2Q-50-XT925_VQLM-20) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/27.0.1453.90 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Motorola","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.2; XT907 Build\/9.8.1Q-66) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/27.0.1453.90 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Motorola","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.2; XT901 Build\/9.8.2Q-50_SLS-13) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19","mobile":true,"tablet":false},{"vendor":"Motorola","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.2; DROID BIONIC Build\/9.8.2O-72_VZW-22) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Nabi","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2.1; en-us; NABI-A Build\/MASTER) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":true},{"vendor":"NEC","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; ja-jp; N-08D Build\/A5001911) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"NEC","user_agent":"Mozilla\/5.0 (Linux; U; Android AAA; BBB; N-06D Build\/CCC) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":true},{"vendor":"Nook","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2.1; en-us; NOOK BNRV200 Build\/ERD79 1.4.3) Apple WebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":true,"version":{"Android":"2.2.1","Webkit":"533.1","Safari":"4.0"}},{"vendor":"Nook","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; NOOK BNTV400 Build\/ICS) AppleWebKit\/534.30 (KHTML like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true,"version":{"Android":"4.0.4","Build":"ICS","Webkit":"534.30","Safari":"4.0"}},{"vendor":"Nook","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.4; BNTV600 Build\/IMM76L) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.94 Safari\/537.36 Hughes-PFB\/CID5391275.AID1376709964","mobile":true,"tablet":true,"version":{"Android":"4.0.4","Build":"IMM76L","Webkit":"537.36","Chrome":"28.0.1500.94"}},{"vendor":"Nokia","user_agent":"Nokia200\/2.0 (12.04) Profile\/MIDP-2.1 Configuration\/CLDC-1.1 UCWEB\/2.0 (Java; U; MIDP-2.0; en-US; nokia200) U2\/1.0.0 UCBrowser\/8.9.0.251 U2\/1.0.0 Mobile UNTRUSTED\/1.0","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Nokia6303iclassic\/5.0 (06.61) Profile\/MIDP-2.1 Configuration\/CLDC-1.1 Mozilla\/5.0 AppleWebKit\/420+ (KHTML, like Gecko) Safari\/420+","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"nokian73-1\/UC Browser7.8.0.95\/69\/400 UNTRUSTED\/1.0","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Nokia2760\/2.0 (06.82) Profile\/MIDP-2.1 Configuration\/CLDC-1.1","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Nokia3650\/1.0 SymbianOS\/6.1 Series60\/1.2 Profile\/MIDP-1.0 Configuration\/CLDC-1.0","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"NokiaN70-1\/5.0737.3.0.1 Series60\/2.8 Profile\/MIDP-2.0 Configuration\/CLDC-1.1\/UC Browser7.8.0.95\/27\/352","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (S60V3; U; ru; NokiaN73) AppleWebKit\/530.13 (KHTML, like Gecko) UCBrowser\/8.6.0.199\/28\/444\/UCWEB Mobile","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (S60V3; U; ru; NokiaC5-00.2)\/UC Browser8.5.0.183\/28\/444\/UCWEB Mobile","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (S60V3; U; ru; NokiaC5-00.2) AppleWebKit\/530.13 (KHTML, like Gecko) UCBrowser\/8.7.0.218\/28\/352\/UCWEB Mobile","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (Series40; NokiaC3-00\/08.63; Profile\/MIDP-2.1 Configuration\/CLDC-1.1) Gecko\/20100401 S40OviBrowser\/2.2.0.0.33","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Opera\/9.80 (Series 60; Opera Mini\/7.0.31380\/28.2725; U; es) Presto\/2.8.119 Version\/11.10","mobile":true,"tablet":false,"version":{"Opera Mini":"7.0.31380","Presto":"2.8.119"}},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (Symbian\/3; Series60\/5.2 NokiaC7-00\/025.007; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.3.1.37 Mobile Safari\/533.4 3gpp-gba","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (Symbian\/3; Series60\/5.2 NokiaX7-00\/022.014; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.3.1.37 Mobile Safari\/533.4 3gpp-gba","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (Symbian\/3; Series60\/5.3 NokiaE6-00\/111.140.0058; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/535.1 (KHTML, like Gecko) NokiaBrowser\/8.3.1.4 Mobile Safari\/535.1 3gpp-gba","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (Symbian\/3; Series60\/5.3 NokiaC6-01\/111.040.1511; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/535.1 (KHTML, like Gecko) NokiaBrowser\/8.3.1.4 Mobile Safari\/535.1","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (Symbian\/3; Series60\/5.3 NokiaC6-01; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.4.2.6 Mobile Safari\/533.4 3gpp-gba","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (Symbian\/3; Series60\/5.3 Nokia700\/111.030.0609; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.4.2.6 Mobile Safari\/533.4 3gpp-gba","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (Symbian\/3; Series60\/5.3 Nokia700\/111.020.0308; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.4.1.14 Mobile Safari\/533.4 3gpp-gba","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (Symbian\/3; Series60\/5.3 NokiaN8-00\/111.040.1511; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/535.1 (KHTML, like Gecko) NokiaBrowser\/8.3.1.4 Mobile Safari\/535.1 3gpp-gba","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (Symbian\/3; Series60\/5.3 Nokia701\/111.030.0609; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.4.2.6 Mobile Safari\/533.4 3gpp-gba","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.2; U; Series60\/3.1 Nokia6120c\/3.83; Profile\/MIDP-2.0 Configuration\/CLDC-1.1 ) AppleWebKit\/413 (KHTML, like Gecko) Safari\/413","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.2; U; Series60\/3.1 Nokia6120ci\/7.02; Profile\/MIDP-2.0 Configuration\/CLDC-1.1 ) AppleWebKit\/413 (KHTML, like Gecko) Safari\/413","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.2; U; Series60\/3.1 Nokia6120c\/7.10; Profile\/MIDP-2.0 Configuration\/CLDC-1.1 ) AppleWebKit\/413 (KHTML, like Gecko) Safari\/413","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.2; U; Series60\/3.1 NokiaE66-1\/510.21.009; Profile\/MIDP-2.0 Configuration\/CLDC-1.1 ) AppleWebKit\/413 (KHTML, like Gecko) Safari\/413","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.2; U; Series60\/3.1 NokiaE71-1\/110.07.127; Profile\/MIDP-2.0 Configuration\/CLDC-1.1 ) AppleWebKit\/413 (KHTML, like Gecko) Safari\/413","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.2; U; Series60\/3.1 NokiaN95-3\/20.2.011 Profile\/MIDP-2.0 Configuration\/CLDC-1.1 ) AppleWebKit\/413 (KHTML, like Gecko) Safari\/413","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.2; U; Series60\/3.1 NokiaE51-1\/200.34.36; Profile\/MIDP-2.0 Configuration\/CLDC-1.1 ) AppleWebKit\/413 (KHTML, like Gecko) Safari\/413","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.2; U; Series60\/3.1 NokiaE63-1\/500.21.009; Profile\/MIDP-2.0 Configuration\/CLDC-1.1 ) AppleWebKit\/413 (KHTML, like Gecko) Safari\/413","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.2; U; Series60\/3.1 NokiaN82\/10.0.046; Profile\/MIDP-2.0 Configuration\/CLDC-1.1 ) AppleWebKit\/413 (KHTML, like Gecko) Safari\/413","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.3; Series60\/3.2 NokiaE52-1\/052.003; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/525 (KHTML, like Gecko) Version\/3.0 BrowserNG\/7.2.6.2","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.3; Series60\/3.2 NokiaE52-1\/@version@; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.3.1.26 Mobile Safari\/533.4 3gpp-gba","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.3; Series60\/3.2 NokiaC5-00\/031.022; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/525 (KHTML, like Gecko) Version\/3.0 BrowserNG\/7.2.3.1","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.3; Series60\/3.2 NokiaC5-00.2\/081.003; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.3.1.32 Mobile Safari\/533.4 3gpp-gba","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.3; U; Series60\/3.2 NokiaN79-1\/32.001; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/413 (KHTML, like Gecko) Safari\/413","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.3; U; Series60\/3.2 Nokia6220c-1\/06.101; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/413 (KHTML, like Gecko) Safari\/413","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.3; Series60\/3.2 NokiaC5-00.2\/071.003; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.3.1.26 Mobile Safari\/533.4 3gpp-gba","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.3; Series60\/3.2 NokiaE72-1\/081.003; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.3.1.32 Mobile Safari\/533.4 3gpp-gba","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.3; Series60\/3.2 NokiaC5-00\/061.005; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/525 (KHTML, like Gecko) Version\/3.0 BrowserNG\/7.2.6.2 3gpp-gba","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.4; Series60\/5.0 NokiaX6-00\/40.0.002; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.3.1.33 Mobile Safari\/533.4 3gpp-gb","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.4; Series60\/5.0 Nokia5800d-1\/60.0.003; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.3.1.33 Mobile Safari\/533.4 3gpp-gba","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.4; Series60\/5.0 NokiaC5-03\/12.0.023; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/525 (KHTML, like Gecko) Version\/3.0 BrowserNG\/7.2.6.9 3gpp-gba","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.4; Series60\/5.0 Nokia5228\/40.1.003; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/525 (KHTML, like Gecko) Version\/3.0 BrowserNG\/7.2.7.4 3gpp-gba","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.4; Series60\/5.0 Nokia5230\/51.0.002; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.3.1.33 Mobile Safari\/533.4 3gpp-gba","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.4; Series60\/5.0 Nokia5530c-2\/32.0.007; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/525 (KHTML, like Gecko) Version\/3.0 BrowserNG\/7.2.6.9 3gpp-gba","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.4; Series60\/5.0 NokiaN97-1\/21.0.045; Profile\/MIDP-2.1 Configuration\/CLDC-1.1) AppleWebKit\/525 (KHTML, like Gecko) BrowserNG\/7.1.4","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.4; Series60\/5.0 NokiaN97-4\/30.0.004; Profile\/MIDP-2.1 Configuration\/CLDC-1.1) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.3.1.28 3gpp-gba","mobile":true,"tablet":false,"version":{"Symbian":"9.4","Webkit":"533.4","NokiaBrowser":"7.3.1.28"},"model":"NokiaN97-4"},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Nokia; 7 Mozart T8698)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; 710)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Nokia; 800)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Nokia; 800C)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Nokia; 800C; Orange)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Nokia; 900)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Nokia; HD7 T9292)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; LG E-900)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Lumia 610)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Lumia 710)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Lumia 710; Orange)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Lumia 710; T-Mobile)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Lumia 710; Vodafone)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Lumia 800)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Lumia 800) UP.Link\/5.1.2.6","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Lumia 800; Orange)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Lumia 800; SFR)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Lumia 800; T-Mobile)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Lumia 800; vodafone)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Nokia; Lumia 800c)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Lumia 900)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Nokia; Lumia 920)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident\/6.0; IEMobile\/10.0; ARM; Touch; NOKIA; Lumia 920)","mobile":true,"tablet":false,"version":{"IE":"10.0","Windows Phone OS":"8.0","Trident":"6.0"},"model":"Lumia 920"},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Nokia; lumia800)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Nokia 610)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Nokia 710)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Nokia 800)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Nokia 800C)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Nokia 900)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Nokia; Nokia)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Nokia; SGH-i917)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Nokia; TITAN X310e)","mobile":true,"tablet":false,"version":{"Windows Phone OS":"7.5","Trident":"5.0"},"model":"TITAN X310e"},{"vendor":"Odys","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; de-de; LOOX Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Odys","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; de-de; LOOX Plus Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Odys","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.X; de-de; XENO10 Build\/ODYS XENO 10) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Odys","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2.2; de-de; ODYS Space Build\/I700T_P7_T04_TSCL_FT_R_0_03_1010_110623) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":true},{"vendor":"OverMax","user_agent":"OV-SteelCore(B) Mozilla\/5.0 (iPad; CPU OS 5_0_1 like Mac OS X) AppleWebKit\/534.46 (KHTML, like Gecko) Version\/5.1 Mobile\/9A405 Safari\/7534.48.3","mobile":true,"tablet":true},{"vendor":"OverMax","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; pl-pl; OV-SteelCore Build\/ICS.g08refem611.20121010) AppleWebKit\/534.30 (KHTML like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"YONESTablet","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; pl-pl; BC1077 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Pantech","user_agent":"PANTECH-C790\/JAUS08312009 Browser\/Obigo\/Q05A Profile\/MIDP-2.0 Configuration\/CLDC-1.1","mobile":true,"tablet":false},{"vendor":"Pantech","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2.1; ko-kr; SKY IM-A600S Build\/FRG83) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Pantech","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.3; en-us; ADR8995 4G Build\/GRI40) AppleWebKit\/533.1 (KHTML like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Pantech","user_agent":"Mozilla\/5.0 (Linux; U; Android 3.2.1; en-us; PantechP4100 Build\/HTK75) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13","mobile":true,"tablet":true},{"vendor":"Philips","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; W732 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"PointOfView","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; en-us; POV_TAB-PROTAB30-IPS10 Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Prestigio","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2; en-gb; PMP5297C_QUAD Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Prestigio","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; sk-sk; PMP7100D3G Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true,"version":{"Android":"4.0.4","Build":"IMM76D","Webkit":"534.30","Safari":"4.0"},"model":"PMP7100D3G"},{"vendor":"Prestigio","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.2; sk-sk; PMP7280C3G Build\/JZO54K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 MobilSafari\/534.30","mobile":true,"tablet":true},{"vendor":"PROSCAN","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; en-us; PLT8088 Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true,"version":{"Android":"4.1.1","Build":"JRO03H","Webkit":"534.30","Safari":"4.0"}},{"vendor":"PyleAudio","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.4; PTBL92BC Build\/IMM76D) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/31.0.1650.59 Mobile Safari\/537.36","mobile":true,"tablet":true,"version":{"Android":"4.0.4","Build":"IMM76D","Webkit":"537.36","Chrome":"31.0.1650.59"}},{"vendor":"RockChip","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2.1; hu-hu; RK2818, Build\/MASTER) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":true},{"vendor":"RockChip","user_agent":"Mozilla\/5.0 (Linux; U; Android Android 2.1-RK2818-1.0.0; zh-cn; MD701 Build\/ECLAIR) AppleWebKit\/530.17 (KHTML like Gecko) Version\/4.0 Mobile Safari\/530.17","mobile":true,"tablet":true},{"vendor":"RossMoor","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.1; ru-ru; RM-790 Build\/JOP40D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"QMobile","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.6; en-us; A2 Build\/GRK39F) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"MQQBrowser\/4.0\/Mozilla\/5.0 (Linux; U; Android 3.2; zh-cn; GT-P6800 Build\/HTJ85B) AppleWebKit\/533.1 (KHTML, like Gecko) Mobile Safari\/533.1","mobile":true,"tablet":true,"version":{"MQQBrowser":"4.0"}},{"vendor":"Samsung","user_agent":"SAMSUNG-SGH-P250-ORANGE\/P250BVHH8 Profile\/MIDP-2.0 Configuration\/CLDC-1.1 UP.Browser\/6.2.3.3.c.1.101 (GUI) MMP\/2.0","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"SAMSUNG-GT-B2710\/B271MCXKF1 SHP\/VPP\/R5 Dolfin\/2.0 QTV\/5.3 SMM-MMS\/1.2.0 profile\/MIDP-2.1 configuration\/CLDC-1.1 OPN-B","mobile":true,"tablet":false,"version":{"Dolfin":"2.0"}},{"vendor":"Samsung","user_agent":"SAMSUNG-SGH-D900i\/1.0 Profile\/MIDP-2.0 Configuration\/CLDC-1.1 UP.Browser\/6.2.3.3.c.1.101 (GUI) MMP\/2.0","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"SAMSUNG-GT-S5233T\/S5233TXEJE3 SHP\/VPP\/R5 Jasmine\/0.8 Qtv5.3 SMM-MMS\/1.2.0 profile\/MIDP-2.1 configuration\/CLDC-1.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (SAMSUNG; SAMSUNG-GT-S5380D\/S5380FXXKL3; U; Bada\/2.0; ru-ru) AppleWebKit\/534.20 (KHTML, like Gecko) Dolfin\/3.0 Mobile HVGA SMM-MMS\/1.2.0 OPN-B","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"SAMSUNG-GT-C3312\/1.0 NetFront\/4.2 Profile\/MIDP-2.0 Configuration\/CLDC-1.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 1.5; de-de; Galaxy Build\/CUPCAKE) AppleWebKit\/528.5 (KHTML, like Gecko) Version\/3.1.2 Mobile Safari\/525.20.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"SAMSUNG-GT-S3650\/S3650XEII3 SHP\/VPP\/R5 Jasmine\/1.0 Nextreaming SMM-MMS\/1.2.0 profile\/MIDP-2.1 configuration\/CLDC-1.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"JUC (Linux; U; 2.3.6; zh-cn; GT-S5360; 240*320) UCWEB7.9.0.94\/140\/352","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (SAMSUNG; SAMSUNG-GT-S5250\/S5250XEKJ3; U; Bada\/1.0; ru-ru) AppleWebKit\/533.1 (KHTML, like Gecko) Dolfin\/2.0 Mobile WQVGA SMM-MMS\/1.2.0 NexPlayer\/3.0 profile\/MIDP-2.1 configuration\/CLDC-1.1 OPN-B","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident\/3.1; IEMobile\/7.0; SAMSUNG; SGH-i917)","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (SAMSUNG; SAMSUNG-GT-S8530\/S8530XXJKA; U; Bada\/1.2; cs-cz) AppleWebKit\/533.1 (KHTML, like Gecko) Dolfin\/2.2 Mobile WVGA SMM-MMS\/1.2.0 OPN-B","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 1.6; ru-ru; Galaxy Build\/Donut) AppleWebKit\/528.5+ (KHTML, like Gecko) Version\/3.1.2 Mobile Safari\/525.20.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.1-update1; ru-ru; GT-I5500 Build\/ERE27) AppleWebKit\/530.17 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/530.17","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2; en-us; GALAXY_Tab Build\/MASTER) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":true},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2; ja-jp; SC-01C Build\/FROYO) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":true},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2; fr-fr; GT-I9000 Build\/FROYO) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2.1; zh-cn; SCH-i909 Build\/FROYO) UC AppleWebKit\/534.31 (KHTML, like Gecko) Mobile Safari\/534.31","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.3; ja-jp; SC-01C Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":true},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.3; en-gb; GT-P1000 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":true},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.3; el-gr; GT-I9001 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.3; en-ca; SGH-I896 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.4; es-us; GT-S5660L Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1 MicroMessenger\/4.5.1.261","mobile":true,"tablet":false,"version":{"MicroMessenger":"4.5.1.261"}},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.6; en-us; GT-S5660 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.6; ru-ru; GT-S6102 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.6; pt-br; GT-S5367 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.6; fr-fr; GT-S5839i Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.6; en-gb; GT-S7500 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.6; en-gb; GT-S5830 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.6; es-us; GT-B5510L Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.6; pl-pl; GT-I9001-ORANGE\/I9001BVKPC Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.6; en-us; GT-I8150 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.6; nl-nl; GT-I9070 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.6; en-gb; GT-S5360 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.6; es-us; GT-S6102B Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.6; en-us; GT-S5830i Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.6; ru-ru; GT-I8160 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.6; ru-ru; GT-S6802 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.7; ru-ru; GT-S5830 Build\/GRWK74; LeWa_ROM_Cooper_12.09.21) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.6; ru-ru; GT-N7000 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 3.0.1; en-us; GT-P7100 Build\/HRI83) AppleWebkit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13","mobile":true,"tablet":true},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 3.2; he-il; GT-P7300 Build\/HTJ85B) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13","mobile":true,"tablet":true},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 3.2; en-gb; GT-P6200 Build\/HTJ85B) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13","mobile":true,"tablet":true},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-gb; GT-I9100 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; GT-I9100G Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; nl-nl; GT-P5100 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android-4.0.3; en-us; Galaxy Nexus Build\/IML74K) AppleWebKit\/535.7 (KHTML, like Gecko) CrMo\/16.0.912.75 Mobile Safari\/535.7","mobile":true,"tablet":false,"version":{"Chrome":"16.0.912.75"}},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.3; SGH-T989 Build\/IML74K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19","mobile":true,"tablet":false,"version":{"Chrome":"18.0.1025.166"}},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; ru-ru; GT-P5100 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.4; GT-I9300 Build\/IMM76D) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.4; SPH-D710 Build\/IMM76I) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; zh-cn; GT-I9300 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; en-gb; GT-I9300-ORANGE\/I9300BVBLG2 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; th-th; GT-I9300T Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; ru-ru; GT-I9100 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us ; GT-I9100 Build\/IMM76D) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1\/UCBrowser\/8.4.1.204\/145\/355","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; en-gb; GT-N7000 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; th-th; GT-P6800 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.4; SAMSUNG-SGH-I747 Build\/IMM76D) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; es-es; GT-P5110 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.4; GT-P5110 Build\/IMM76D) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19","mobile":true,"tablet":true},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; zh-cn; SAMSUNG-GT-S7568_TD\/1.0 Android\/4.0.4 Release\/07.15.2012 Browser\/AppleWebKit534.30 Build\/IMM76D) ApplelWebkit\/534.30 (KHTML,like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false,"version":{"Android":"4.0.4"}},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; ru-ru; GT-P3100 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; tr-tr; GT-P3105 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; en-ca; GT-N8010 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; ru-ru; GT-S7562 Build\/IMM76I) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; en-us; GT-N7100 Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.2; GT-N7100 Build\/JZO54K) AppleWebKit\/537.22 (KHTML, like Gecko) Chrome\/25.0.1364.123 Mobile Safari\/537.22 OPR\/14.0.1025.52315","mobile":true,"tablet":false,"version":{"Build":"JZO54K","Webkit":"537.22","Opera":"14.0.1025.52315"}},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; zh-hk; GT-N7105 Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; ru-ru; GT-N8000 Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.1; SGH-i747M Build\/JRO03L) AppleWebKit\/535.19(KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; en-gb; Galaxy Nexus - 4.1.1 - with Google Apps - API 16 - 720x1280 Build\/JRO03S) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.2; GT-I8262 Build\/JZO54K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.2; it-it; Galaxy Nexus Build\/JZO54K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.2; en-us; SGH-I777 Build\/JZO54K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.2; en-us; GT-S7710 Build\/JZO54K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.2; en-us; GT-I9082 Build\/JZO54K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.2; en-us; SGH-T999L Build\/JZO54K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.2; GT-P5210 Build\/JDQ39) AppleWebKit\/537.36 (KHTML, Like Gecko) Chrome\/27.0.1453.90 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.2; en-us; SAMSUNG GT-I9200 Build\/JDQ39) AppleWebKit\/535.19 (KHTML, like Gecko) Version\/1.0 Chrome\/18.0.1025.308 Mobile Safari\/535.19","mobile":true,"tablet":true},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.2; zh-cn; SCH-I959 Build\/JDQ39) AppleWebKit\/535.19 (KHTML, like Gecko) Version\/1.0 Chrome\/18.0.1025.308 Mobile Safari\/535.19","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2; nl-nl; SM-T310 Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; Android 4.3; en-us; SAMSUNG SM-P600 Build\/JSS15J) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/1.5 Chrome\/28.0.1500.94 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2; en-gb; GT-N5100 Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; Android 4.4.2; en-us; SAMSUNG SM-T530NU Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/1.5 Chrome\/28.0.1500.94 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; CETUS)","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; Focus I917 By TC)","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; Focus i917)","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; FOCUS S)","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; GT-I8350)","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; GT-i8700)","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; GT-S7530)","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; Hljchm's Wp)","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; I917)","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; OMNIA 7)","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; OMNIA7 By MWP_HS)","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; OMNIA7)","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; OMNIA7; Orange)","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; SGH-i677)","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; SGH-i917)","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; SGH-i917.)","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; SGH-i917R)","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; SGH-i937)","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; SMG-917R)","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG_blocked_blocked_blocked; OMNIA7; Orange)","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG_blocked_blocked_blocked_blocked; OMNIA7; Orange)","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SUMSUNG; OMNIA 7)","mobile":true,"tablet":false},{"vendor":"simvalley","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.4; de-de; SP-80 Build\/GRJ22) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"SonyEricssonK800i\/R1AA Browser\/NetFront\/3.3 Profile\/MIDP-2.0 Configuration\/CLDC-1.1","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.1-update1; es-ar; SonyEricssonE15a Build\/2.0.1.A.0.47) AppleWebKit\/530.17 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/530.17","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.1-update1; pt-br; SonyEricssonU20a Build\/2.1.1.A.0.6) AppleWebKit\/530.17 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/530.17","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.3; en-au; SonyEricssonX10i Build\/3.0.1.G.0.75) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.4; ru-ru; SonyEricssonST18i Build\/4.0.2.A.0.62) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.4; hr-hr; SonyEricssonST15i Build\/4.0.2.A.0.62) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.4; sk-sk; SonyEricssonLT15i Build\/4.0.2.A.0.62) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.7; th-th; SonyEricssonST27i Build\/6.0.B.3.184) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.7; de-de; SonyEricssonST25i Build\/6.0.B.3.184) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; pt-br; Xperia Tablet S Build\/TID0092) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true,"version":{"Android":"4.0.3","Build":"TID0092","Webkit":"534.30","Safari":"4.0"}},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.3; LT18i Build\/4.1.A.0.562) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.3; Sony Tablet S Build\/TISU0R0110) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19","mobile":true,"tablet":true},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; es-es; Sony Tablet S Build\/TISU0143) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; en-gb; SonyEricssonLT18i Build\/4.1.B.0.587) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; fr-ch; SonyEricssonSK17i Build\/4.1.B.0.587) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; SonyEricssonLT26i Build\/6.1.A.2.45) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.4; LT22i Build\/6.1.B.0.544) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; vi-vn; SonyEricssonLT22i Build\/6.1.B.0.544) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.4; ST23i Build\/11.0.A.5.5) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.4; ST23i Build\/11.0.A.2.10) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.4; LT28h Build\/6.1.E.3.7) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.94 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; en-us; SGPT13 Build\/TJDS0170) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.2; ja-jp; SonySO-03E Build\/10.1.E.0.265) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true,"version":{"Android":"4.1.2","Build":"10.1.E.0.265","Webkit":"534.30","Safari":"4.0"}},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.2; LT26w Build\/6.2.B.1.96) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/29.0.1547.72 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.2; SGP321 Build\/10.3.1.A.0.33) AppleWebKit\/537.31 (KHTML, like Gecko) Chrome\/26.0.1410.58 Safari\/537.31","mobile":true,"tablet":true,"version":{"Android":"4.2.2","Build":"10.3.1.A.0.33","Webkit":"537.31","Chrome":"26.0.1410.58"}},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.3; zh-cn; XL39h Build\/14.2.A.1.136) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.2; sv-se; C5503 Build\/10.1.1.A.1.273) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.2; en-us; C5502 Build\/10.1.1.A.1.310) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2; zh-cn; SonyL39t Build\/14.1.M.0.202) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2; zh-cn; L39u Build\/14.1.n.0.63) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.2; zh-tw; M35c Build\/12.0.B.5.37) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.2; M35c Build\/12.0.B.2.42) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/27.0.1453.90 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.2; zh-CN; M35t Build\/12.0.C.2.42) AppleWebKit\/534.31 (KHTML, like Gecko) UCBrowser\/9.3.2.349 U3\/0.8.0 Mobile Safari\/534.31","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.4.2; D6502 Build\/17.1.A.2.69) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/30.0.0.0 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.4.2; D6503 Build\/17.1.A.0.504) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.4.2; D6543 Build\/17.1.A.2.55) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.3; D2004 Build\/20.0.A.0.29) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.94 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.3; en-gb; D2005 Build\/20.0.A.1.12) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.3; D2104 Build\/20.0.B.0.84) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.3; D2105 Build\/20.0.B.0.74) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.170 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.3; pt-br; D2114 Build\/20.0.B.0.85) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.3; D2302 Build\/18.0.B.1.23) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.138 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.3; zh-cn; S50h Build\/18.0.b.1.23) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 UCBrowser\/9.6.3.413 U3\/0.8.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.3; D2303 Build\/18.0.C.1.13) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.138 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.3; D2305 Build\/18.0.A.1.30) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.138 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.3; D2306 Build\/18.0.C.1.7) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.136 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.3; D5303 Build\/19.0.1.A.0.207) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.4.2; D5306 Build\/19.1.A.0.264) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.136 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.3; zh-CN; XM50h Build\/19.0.D.0.269) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 UCBrowser\/9.7.6.428 U3\/0.8.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.3; zh-cn; XM50t Build\/19.0.C.2.59) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.3; D5322 Build\/19.0.D.0.253) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.131","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.3; zh-cn; M51w Build\/14.2.A.1.146) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.3; M51w Build\/14.2.A.1.146) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.136 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.4.1; D5102 Build\/18.2.A.0.9) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.4.1; D5103 Build\/18.1.A.0.11) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/30.0.1599.92 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.4.1; D5106 Build\/18.1.A.0.11) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.3; en-gb; C6902 Build\/14.2.A.1.136) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30 GSA\/3.2.17.1009776.arm","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2; es-es; C6943 Build\/14.1.G.2.257) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.4.2; C6943 Build\/14.3.A.0.681) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.2; SGP412 Build\/14.1.B.3.320) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1; en-us; SonySGP321 Build\/10.2.C.0.143) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.2; SGP351 Build\/10.1.1.A.1.307) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19","mobile":true,"tablet":true},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.3; SGP341 Build\/10.4.B.0.569) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.4.2; SGP511 Build\/17.1.A.2.36) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.122 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.4.2; SGP512 Build\/17.1.A.2.36) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.122 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.2; fr-ch; SGP311 Build\/10.1.C.0.344) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.2; en-us; SGP312 Build\/10.1.C.0.344) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.4.2; de-de; SGP521 Build\/17.1.A.2.69) AppleWebKit\/537.16 (KHTML, like Gecko) Version\/4.0 Safari\/537.16","mobile":true,"tablet":true},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.4.2; zh-cn; SGP541 Build\/17.1.A.2.36) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.4.2; SGP551 Build\/17.1.A.2.72) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"Sony","user_agent":"SonyEricssonU5i\/R2CA; Mozilla\/5.0 (SymbianOS\/9.4; U; Series60\/5.0 Profile\/MIDP-2.1 Configuration\/CLDC-1.1) AppleWebKit\/525 (KHTML, like Gecko) Version\/3.0 Safari\/525","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"SonyEricssonU5i\/R2AA; Mozilla\/5.0 (SymbianOS\/9.4; U; Series60\/5.0 Profile\/MIDP-2.1 Configuration\/CLDC-1.1) AppleWebKit\/525 (KHTML, like Gecko) Version\/3.0 Safari\/525","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/4.0 (PDA; PalmOS\/sony\/model prmr\/Revision:1.1.54 (en)) NetFront\/3.0","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Opera\/9.80 (Linux mips; U; InettvBrowser\/2.2 (00014A;SonyDTV115;0002;0100) KDL40EX720; CC\/BEL; en) Presto\/2.7.61 Version\/11.00","mobile":false,"tablet":false},{"vendor":"Sony","user_agent":"Opera\/9.80 (Linux armv7l; HbbTV\/1.1.1 (; Sony; KDL32W650A; PKG3.211EUA; 2013;); ) Presto\/2.12.362 Version\/12.11","mobile":false,"tablet":false},{"vendor":"Skk","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1; en-us; CYCLOPS Build\/F10) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Storex","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.1; eZee_Tab903 Build\/JRO03H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Safari\/537.36","mobile":true,"tablet":true,"version":{"Android":"4.1.1","Build":"JRO03H","Webkit":"537.36"}},{"vendor":"Storex","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.1; eZee'Tab785 Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/31.0.1650.59 Safari\/537.36","mobile":true,"tablet":true,"version":{"Android":"4.1.1","Build":"JRO03C","Webkit":"537.36"}},{"vendor":"Storex","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.3; eZee'Tab971 Build\/IML74K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19","mobile":true,"tablet":true,"version":{"Android":"4.0.3","Build":"IML74K","Webkit":"535.19"}},{"vendor":"Tecno","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2; en-us; TECNO P9 Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Telstra","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.7; en-au; T-Hub2 Build\/TVA301TELBG3) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":true},{"vendor":"texet","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.4; ru-ru; TM-7021 Build\/GB.m1ref.20120116) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":true,"version":{"Android":"2.3.4","Webkit":"533.1","Safari":"4.0"},"model":"TM-7021"},{"vendor":"Tolino","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2; de-de; tolino tab 7 Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true,"version":{"Android":"4.2.2","Build":"JDQ39","Webkit":"534.30","Safari":"4.0"}},{"vendor":"Tolino","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2; de-de; tolino tab 8.9 Build\/JDQ39) AppleWebKit\/534.30 (KHTML like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true,"version":{"Android":"4.2.2","Build":"JDQ39","Webkit":"534.30","Safari":"4.0"}},{"vendor":"Tolino","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.2; tolino tab 7 Build\/JDQ39) AppleWebkit\/537.36 (KHTML, like Gecko) Chrome\/31.0.1650.57 Safari\/537.36 OPR\/18.0.1290.67495","mobile":true,"tablet":true},{"vendor":"Tolino","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2; de-de; tolino tab 7 Build\/JDQ39) AppleWebkit\/537.36 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Toshiba","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; TOSHIBA; TSUNAGI)","mobile":true,"tablet":false},{"vendor":"Toshiba","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2; it-it; TOSHIBA_FOLIO_AND_A Build\/TOSHIBA_FOLIO_AND_A) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":true,"version":{"Android":"2.2","Webkit":"533.1","Safari":"4.0"}},{"vendor":"Trekstor","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.2; ST70408-1 Build\/JDQ39) AppleWebKit\/537.31 (KHTML, like Gecko) Chrome\/26.0.1410.58 Safari\/537.31","mobile":true,"tablet":true,"version":{"Android":"4.2.2","Build":"JDQ39","Webkit":"537.31","Chrome":"26.0.1410.58"}},{"vendor":"Trekstor","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.2; VT10416-2 Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"Trekstor","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; de-de; ST10216-2A Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30;SurfTab_10.1","mobile":true,"tablet":true},{"vendor":"Visture","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2; en-gb; V97 HD Build\/LR-97JC) Apple WebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Visture","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; en-us; Visture V4 Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Visture","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; ru-ru; Visture V4 HD Build\/Visture V4 HD) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Visture","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; es-es; Visture V5 HD Build\/Visture V5 HD) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Visture","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; ru-ru; Visture V10 Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Versus","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.4; VS-TOUCHPAD 9 Build\/IMM76D) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19","mobile":true,"tablet":true},{"vendor":"Versus","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; en-gb; Versus Touchpad 9.7 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Versus","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-gb; CnM-TOUCHPAD7 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30 BMID\/E67A45B1AB","mobile":true,"tablet":true},{"vendor":"Versus","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; en-gb; CnM TouchPad 7DC Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30 TwonkyBeamBrowser\/3.3.5-95 (Android 4.1.1; rockchip CnM TouchPad 7DC Build\/meizhi_V2.80.wifi8723.20121225.b11c800)","mobile":true,"tablet":true},{"vendor":"Versus","user_agent":"OneBrowser\/3.5\/Mozilla\/5.0 (Linux; U; Android 4.0.4; en-gb; TOUCHPAD 7 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Versus","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; en-gb; TOUCHTAB Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true,"version":{"Android":"4.1.1","Build":"JRO03H","Webkit":"534.30","Safari":"4.0"}},{"vendor":"Viewsonic","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; de-de; ViewPad 10e Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Viewsonic","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2; it-it; ViewPad7 Build\/FRF91) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":true},{"vendor":"Viewsonic","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2.1; en-ca; ViewSonic VB733 Build\/FRG83) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":true},{"vendor":"Viewsonic","user_agent":"Mozilla\/5.0 (Linux; U; Android 3.2; en-gb; ViewPad7X Build\/HTJ85B) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Safari\/533.1","mobile":true,"tablet":true},{"vendor":"Viewsonic","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2; pt-br; ViewPad 10S Build\/FRF91) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":true},{"vendor":"Viewsonic","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; en-us; VB100a Pro Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Vodafone","user_agent":"Mozilla\/5.0 (Linux; U; Android 3.2; hu-hu; SmartTab10-MSM8260-V02d-Dec022011-Vodafone-HU) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0","mobile":true,"tablet":true},{"vendor":"Vodafone","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.3; SmartTabII10 Build\/IML74K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19","mobile":true,"tablet":true},{"vendor":"Vodafone","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; fr-fr; SmartTAB 1002 Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Vonino","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2; en-us; Sirius_Evo_QS Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Vonino","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; en-gb; Q8 Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Xoro","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2; de-de; PAD 9720QR Build\/PAD 9719QR) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Xoro","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.2; PAD720 Build\/JDQ39) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19","mobile":true,"tablet":true},{"vendor":"ZTE","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.1;zh-cn; ZTE V987 Build\/JZO54K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30;","mobile":true,"tablet":false},{"vendor":"ZTE","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.5; pt-pt; Blade Build\/tejosunhsine) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"ZTE","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; ZTE; N880e_Dawoer_Fulllock; China Telecom)","mobile":true,"tablet":false},{"vendor":"ZTE","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; ZTE; V965W)","mobile":true,"tablet":false},{"vendor":"ZTE","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; ZTE; Windows Phone - Internet 7; SFR)","mobile":true,"tablet":false},{"vendor":"Zync","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.3; en-us ; Z909 Build\/GRI40) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1\/UCBrowser\/8.4.1.204\/145\/444","mobile":true,"tablet":true},{"vendor":"Console","user_agent":"Mozilla\/5.0 (Nintendo WiiU) AppleWebKit\/534.52 (KHTML, like Gecko) NX\/{Version No} NintendoBrowser\/{Version No}.US","mobile":false,"tablet":false},{"vendor":"Console","user_agent":"Mozilla\/5.0 (PLAYSTATION 3 4.21) AppleWebKit\/531.22.8 (KHTML, like Gecko)","mobile":false,"tablet":false},{"vendor":"Console","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident\/5.0; Xbox)","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"Mozilla\/5.0 (X11; Linux i686) AppleWebKit\/537.36 (KHTML, like Gecko) Ubuntu Chromium\/32.0.1700.102 Chrome\/32.0.1700.102 Safari\/537.36","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"Mozilla\/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko\/20100101 Firefox\/24.0","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"Mozilla\/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko\/20100101 Firefox\/18.0 AlexaToolbar\/psPCtGhf-2.2","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"Mozilla\/5.0 (X11; Ubuntu; Linux x86_64; rv:22.0) Gecko\/20100101 Firefox\/22.0","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"Mozilla\/5.0 (X11; Linux ppc; rv:17.0) Gecko\/20130626 Firefox\/17.0 Iceweasel\/17.0.7","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"Mozilla\/5.0 (X11; Linux) AppleWebKit\/535.22+ Midori\/0.4","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"Mozilla\/5.0 (Macintosh; U; Intel Mac OS X; en-us) AppleWebKit\/535+ (KHTML, like Gecko) Version\/5.0 Safari\/535.20+ Midori\/0.4","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"Mozilla\/5.0 (Windows NT 6.2; WOW64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.20 Safari\/537.36 OPR\/15.0.1147.18 (Edition Next)","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"Mozilla\/5.0 (Windows NT 6.2) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/27.0.1453.94 Safari\/537.36","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"Mozilla\/5.0 (Windows NT 5.2; WOW64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/27.0.1453.94 Safari\/537.36","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"Mozilla\/5.0 (Windows NT 5.2; WOW64; rv:21.0) Gecko\/20100101 Firefox\/21.0","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"Opera\/9.80 (Windows NT 5.2; WOW64) Presto\/2.12.388 Version\/12.14","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"Mozilla\/5.0 (Windows NT 6.1; WOW64; rv:19.0) Gecko\/20100101 Firefox\/19.0","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"Mozilla\/5.0 (X11; FreeBSD amd64; rv:14.0) Gecko\/20100101 Firefox\/14.0.1","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"Mozilla\/4.0 (compatible; MSIE 7.0; Windows NT 6.2; Win64; x64; Trident\/6.0; Touch; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 2.0.50727; Tablet PC 2.0; MASMJS)","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident\/6.0; MANMJS)","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident\/6.0; MASMJS)","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident\/6.0; Touch; MASMJS)","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"Opera\/9.80 (Windows NT 6.2; WOW64; MRA 8.0 (build 5784)) Presto\/2.12.388 Version\/12.11","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident\/6.0)","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"Mozilla\/5.0 (Windows NT 6.3; Trident\/7.0; rv 11.0) like Gecko","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"Mozilla\/5.0 (Windows NT 6.3; WOW64; Trident\/7.0; Touch; rv:11.0) like Gecko","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"Mozilla\/5.0 (Unknown; Linux armv7l) AppleWebKit\/537.1+ (KHTML, like Gecko) Safari\/537.1+ HbbTV\/1.1.1 ( ;LGE ;NetCast 4.0 ;03.20.30 ;1.0M ;)","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"HbbTV\/1.1.1 (;Panasonic;VIERA 2012;1.261;0071-3103 2000-0000;)","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"Opera\/9.80 (Linux armv7l; HbbTV\/1.1.1 (; Sony; KDL32W650A; PKG3.211EUA; 2013;); ) Presto\/2.12.362 Version\/12.11","mobile":false,"tablet":false},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.3; ALUMIUM10 Build\/IML74K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.1; en-us; JY-G3 Build\/JOP40D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; hu-hu; M758A Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; EVOTAB Build\/IMM76I) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Generic","user_agent":"Java\/1.6.0_22","mobile":false,"tablet":false,"version":{"Java":"1.6.0_22"}},{"vendor":"Generic","user_agent":"Opera\/9.80 (Series 60; Opera Mini\/6.5.29260\/29.3417; U; ru) Presto\/2.8.119 Version\/11.10","mobile":true,"tablet":false},{"vendor":"Generic","user_agent":"Opera\/9.80 (Android; Opera Mini\/6.5.27452\/29.3417; U; ru) Presto\/2.8.119 Version\/11.10","mobile":true,"tablet":false},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Windows NT 6.1; WOW64) AppleWebKit\/537.17 (KHTML, like Gecko) Chrome\/24.0.1312.60 Safari\/537.17 OPR\/14.0.1025.52315","mobile":false,"tablet":false},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (X11; CrOS armv7l 4920.83.0) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.103 Safari\/537.36"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (iPhone; U; CPU iPhone OS 4_3_2 like Mac OS X; en-us) AppleWebKit\/533.17.9 (KHTML, like Gecko) Version\/5.0.2 Mobile\/8H7 Safari\/6533.18.5"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.2; fr-fr; GT-I9070 Build\/JZO54K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30"},{"vendor":"Generic","user_agent":"Opera\/9.80 (Android 2.3.7; Linux; Opera Mobi\/46154) Presto\/2.11.355 Version\/12.10"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; it-it; DATAM819HD_C Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; nl-nl; SGPT12 Build\/TID0142) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; cm_tenderloin Build\/IMM76L; CyanogenMod-9) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; fr-fr; A210 Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (iPad; CPU OS 6_1 like Mac OS X) AppleWebKit\/536.26 (KHTML, like Gecko) Version\/6.0 Mobile\/10B141 Safari\/8536.25"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.6; en-gb; GT-I8150 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (iPad; CPU OS 6_0_1 like Mac OS X) AppleWebKit\/536.26 (KHTML, like Gecko) Mercury\/7.2 Mobile\/10A523 Safari\/8536.25"},{"vendor":"Generic","user_agent":"Opera\/9.80 (Android 2.3.7; Linux; Opera Tablet\/46154) Presto\/2.11.355 Version\/12.10"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.2; en-us; sdk Build\/MASTER) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2; en-us; sdk Build\/JB_MR1) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; GT-P7510 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30"},{"vendor":"Generic","user_agent":"Opera\/9.80 (X11; Linux zbov) Presto\/2.11.355 Version\/12.10"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; en-gb; TOUCHPAD 7 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (iPhone; U; CPU OS 4_2_1 like Mac OS X) AppleWebKit\/532.9 (KHTML, like Gecko) Version\/5.0.3 Mobile\/8B5097d Safari\/6531.22.7"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-gb; SGPT12 Build\/TID0142) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Nintendo 3DS; U; ; en) Version\/1.7498.US"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.0.6_b1; ru-ru Build\/ECLAIR) AppleWebKit\/530.17 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/530.17"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.4; z1000 Build\/IMM76D) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.3; cm_tenderloin Build\/GWK74) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.3; en-us; Android for Techvision TV1T808 Board Build\/GRI40) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1"},{"vendor":"Generic","user_agent":"BlackBerry8520\/5.0.0.592 Profile\/MIDP-2.1 Configuration\/CLDC-1.1 VendorID\/136"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Windows NT 6.2) AppleWebKit\/537.17 (KHTML, like Gecko) Chrome\/24.0.1312.56 Safari\/537.17"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 3.1; ru-ru; LG-V900 Build\/HMJ37) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident\/6.0; IEMobile\/10.0; ARM; Touch; HTC; Windows Phone 8S by HTC)"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident\/6.0; Touch)"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (PLAYSTATION 3 4.11) AppleWebKit\/531.22.8 (KHTML, like Gecko)"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 3.2; ru-ru; V9S_V1.4) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident\/6.0; Touch)"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2; es-es; Broncho N701 Build\/FRF91) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident\/6.0; Touch)"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident\/6.0; Touch; WebView\/1.0)"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; Next7P12 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30"},{"vendor":"Generic","user_agent":"Opera\/9.80 (X11; Linux zbov) Presto\/2.11.355 Version\/12.10"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident\/6.0; Touch)"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.6; es-es; SAMSUNG GT-S5830\/S5830BUKT2 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 3.2.1; en-gb;HTC_Flyer_P512 Build\/HTK75C) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; full Android on Microsoft Windows, pad, pc, n*books Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30"},{"vendor":"Generic","user_agent":"Opera\/9.80 (Linux mips; U; InettvBrowser\/2.2 (00014A;SonyDTV115;0002;0100) KDL40EX720; CC\/BEL; en) Presto\/2.7.61 Version\/11.00"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Android; Mobile; rv:18.0) Gecko\/18.0 Firefox\/18.0"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Windows NT 6.1) AppleWebKit\/535.12 (KHTML, like Gecko) Maxthon\/3.0 Chrome\/18.0.966.0 Safari\/535.12"},{"vendor":"Generic","user_agent":"Opera\/9.80 (Windows NT 5.1; U; Edition Yx; ru) Presto\/2.10.289 Version\/12.02"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2; en-us; sdk Build\/JB_MR1) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30"},{"vendor":"Generic","user_agent":"Mozilla\/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Windows Phone 6.5.3.5)"},{"vendor":"Generic","user_agent":"PalmCentro\/v0001 Mozilla\/4.0 (compatible; MSIE 6.0; Windows 98; PalmSource\/Palm-D061; Blazer\/4.5) 16;320x320"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0)"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Microsoft; XDeviceEmulator)"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; MAL; N880E; China Telecom)"},{"vendor":"Generic","user_agent":"Opera\/9.80 (Series 60; Opera Mini\/7.0.29482\/28.2859; U; ru) Presto\/2.8.119 Version\/11.10"},{"vendor":"Generic","user_agent":"Opera\/9.80 (S60; SymbOS; Opera Mobi\/SYB-1202242143; U; en-GB) Presto\/2.10.254 Version\/12.00"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-au; 97D Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30"},{"vendor":"Generic","user_agent":"Opera\/9.80 (Android; Opera Mini\/7.0.29952\/28.2647; U; ru) Presto\/2.8.119 Version\/11.10"},{"vendor":"Generic","user_agent":"Opera\/9.80 (Android; Opera Mini\/6.1.25375\/28.2555; U; en) Presto\/2.8.119 Version\/11.10"},{"vendor":"Generic","user_agent":"Opera\/9.80 (Mac OS X; Opera Tablet\/35779; U; en) Presto\/2.10.254 Version\/12.00"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Android; Tablet; rv:10.0.4) Gecko\/10.0.4 Firefox\/10.0.4 Fennec\/10.0.4"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Android; Tablet; rv:18.0) Gecko\/18.0 Firefox\/18.0"},{"vendor":"Generic","user_agent":"Opera\/9.80 (Linux armv7l; Maemo; Opera Mobi\/14; U; en) Presto\/2.9.201 Version\/11.50"},{"vendor":"Generic","user_agent":"Opera\/9.80 (Android 2.2.1; Linux; Opera Mobi\/ADR-1207201819; U; en) Presto\/2.10.254 Version\/12.00","mobile":true,"tablet":false},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; en-us; sdk Build\/JRO03E) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2; de-de; Endeavour 1010 Build\/ONDA_MID) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; de-de; Tablet-PC-4 Build\/ICS.g08refem618.20121102) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Bot","user_agent":"Mozilla\/5.0 (compatible; Googlebot\/2.1; +http:\/\/www.google.com\/bot.html)","mobile":false,"tablet":false},{"vendor":"Bot","user_agent":"grub-client-1.5.3; (grub-client-1.5.3; Crawl your own stuff with http:\/\/grub.org)","mobile":false,"tablet":false},{"vendor":"Bot","user_agent":"Googlebot-Image\/1.0","mobile":false,"tablet":false},{"vendor":"Bot","user_agent":"Python-urllib\/2.5","mobile":false,"tablet":false},{"vendor":"Bot","user_agent":"facebookexternalhit\/1.0 (+http:\/\/www.facebook.com\/externalhit_uatext.php)","mobile":false,"tablet":false}]} \ No newline at end of file +{ + "hash": "169521cbf4b919b69880fa76746cd4f78bbc99f5", + "user_agents": [ + { + "vendor": "Acer", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 3.2.1; en-us; A100 Build\/HTK55D) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13", + "mobile": true, + "tablet": true + }, + { + "vendor": "Acer", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1; en-us; A110 Build\/JZO54K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Acer", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; de-de; A200 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.0.3", + "Webkit": "534.30", + "Safari": "4.0", + "Build": "IML74K" + }, + "model": "A200" + }, + { + "vendor": "Acer", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; A500 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Acer", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; A501 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Acer", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; A701 Build\/JRO03H) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19", + "mobile": true, + "tablet": true + }, + { + "vendor": "Acer", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; B1-A71 Build\/JZO54K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19", + "mobile": true, + "tablet": true + }, + { + "vendor": "Acer", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; B1-710 Build\/JZO54K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/29.0.1547.72 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Acer", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; A1-810 Build\/JDQ39) AppleWebKit\/537.31 (KHTML, like Gecko) Chrome\/26.0.1410.58 Safari\/537.31", + "mobile": true, + "tablet": true + }, + { + "vendor": "Acer", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; nl-nl; A1-810 Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Acer", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Acer; Allegro)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Acer", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; A3-A10 Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Safari\/537.36", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.2.2", + "Build": "JDQ39", + "Webkit": "537.36", + "Chrome": "32.0.1700.99" + } + }, + { + "vendor": "Acer", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; de-de; A1-811 Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Acer", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; A1-830 Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Acer", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; A3-A11 Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.7; en-in; MB525 Build\/GWK74; CyanogenMod-7.2.0) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.5; it-it; ALCATEL ONE TOUCH 918D Build\/GRJ90) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false, + "version": { + "Android": "2.3.5", + "Webkit": "533.1", + "Safari": "4.0", + "Build": "GRJ90" + }, + "model": "ONE TOUCH 918D" + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.6; ru-ru; ALCATEL ONE TOUCH 991 Build\/GRJ90) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false, + "version": { + "Android": "2.3.6", + "Webkit": "533.1", + "Safari": "4.0", + "Build": "GRJ90" + }, + "model": "ONE TOUCH 991" + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; ru-ru; ALCATEL ONE TOUCH 993D Build\/ICECREAM) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false, + "version": { + "Android": "4.0.4", + "Webkit": "534.30", + "Safari": "4.0", + "Build": "ICECREAM" + }, + "model": "ONE TOUCH 993D" + }, + { + "vendor": "Alcatel", + "user_agent": "ALCATEL_A392G\/1.0 ObigoInternetBrowser\/Q05A[TF013513002719521000000013182904148]", + "mobile": true, + "tablet": false, + "model": "A392G" + }, + { + "vendor": "Alcatel", + "user_agent": "ALCATEL_3020D\/1.0 ObigoInternetBrowser\/Q03C", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2; ALCATEL ONE TOUCH 5037A Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "ALCATEL_3020G\/1.0 ObigoInternetBrowser\/Q03C", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "ALCATEL_3041D\/1.0 ObigoInternetBrowser\/Q03C", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-us; ALCATEL ONE TOUCH 5037E Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.2 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; ALCATEL ONE TOUCH 5037X Build\/JDQ39) AppleWebKit\/537.36 (KHTML like Gecko) Chrome\/31.0.1650.59 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-us; ALCATEL ONE TOUCH 5037X Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.2 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; ONE TOUCH 6012A Build\/JDQ39) AppleWebKit\/537.36 (KHTML like Gecko) Chrome\/28.0.1500.94 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-nz; ONE TOUCH 6012A Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.2 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; ONE TOUCH 6012D Build\/JDQ39) AppleWebKit\/537.36 (KHTML like Gecko) Chrome\/35.0.1916.141 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; de-de; ONE TOUCH 6012D Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.2 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; En-us; ONE TOUCH 6012E Build\/JDQ39) AppleWebKit\/534.30 (KHTML, Like Gecko) Version\/4.2 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; ONE TOUCH 6012X Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/30.0.1599.12975 YaBrowser\/13.12.1599.12975 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; bg-bg; ONE TOUCH 6012X Build\/JDQ39) AppleWebKit\/534.30 (KHTML like Gecko) Version\/4.2 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; ALCATEL ONE TOUCH 6012X_orange Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/29.0.1547.59 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; fr-fr; ALCATEL ONE TOUCH 6012X_orange Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.2 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.3; fr-fr; 6016E Build\/JLS36C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.3; en-us; ALCATEL ONE TOUCH 6016E Build\/JLS36C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; 6016X Build\/JLS36C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; ALCATEL ONE TOUCH 6016X Build\/JLS36C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.122 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.3; ru-ru; 6016X Build\/JLS36C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; ALCATEL ONE TOUCH 6032A Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.170 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; ru-ru; ALCATEL ONE TOUCH 6032X Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.2 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-nz; ALCATEL ONE TOUCH 7040A Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.2 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; th-th; ALCATEL ONE TOUCH 7040D Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.2 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; ALCATEL ONE TOUCH 7040D Build\/JDQ39) AppleWebKit\/537.36 (KHTML like Gecko) Chrome\/28.0.1500.94 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; ALCATEL ONE TOUCH 7040E Build\/JDQ39) AppleWebKit\/537.36 (KHTML like Gecko) Chrome\/28.0.1500.94 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; it-it; ALCATEL ONE TOUCH 7041D Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.2 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; ALCATEL ONE TOUCH 7041D Build\/JDQ39) AppleWebKit\/537.36 (KHTML like Gecko) Chrome\/31.0.1650.59 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; ALCATEL ONE TOUCH 7041X Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.138 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; pt-pt; ALCATEL ONE TOUCH 7041X Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.2 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; ALCATEL ONE TOUCH 8020A Build\/JDQ39) AppleWebKit\/537.36 (KHTML, Like Gecko) Chrome\/30.0.1599.92 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-us; ALCATEL ONE TOUCH 8020A Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.2 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; ALCATEL ONE TOUCH 8020D Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; es-es; ALCATEL ONE TOUCH 8020D Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.2 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; ALCATEL ONE TOUCH 8020E Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-us; ALCATEL ONE TOUCH 8020E Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.2 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; ALCATEL ONE TOUCH 8020X Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.136 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-us; ALCATEL ONE TOUCH 8020X Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.2 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Allview", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; ALLVIEW P5 Build\/IML74K) AppleWebKit\/534.30 (KHTML like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Allview", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us ; ALLVIEW SPEEDI Build\/IMM76D) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1\/UCBrowser\/8.5.3.246\/145\/355", + "mobile": true, + "tablet": true + }, + { + "vendor": "Allview", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; en-us; AllviewCity Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Allview", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; ALLVIEWSPEED Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Amazon", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; KFTT Build\/IML74K) AppleWebKit\/535.19 (KHTML, like Gecko) Silk\/3.4 Mobile Safari\/535.19 Silk-Accelerated =true", + "mobile": true, + "tablet": true + }, + { + "vendor": "Amazon", + "user_agent": "Mozilla\/5.0 (Linux; U; en-US) AppleWebKit\/528.5+ (KHTML, like Gecko, Safari\/528.5+) Version\/4.0 Kindle\/3.0 (screen 600x800; rotate)", + "mobile": true, + "tablet": true, + "version": { + "Webkit": "528.5+", + "Kindle": "3.0", + "Safari": "4.0" + }, + "model": "Kindle" + }, + { + "vendor": "Amazon", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; KFOTE Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.0.3", + "Build": "IML74K", + "Webkit": "534.30", + "Safari": "4.0" + } + }, + { + "vendor": "Amazon", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; WFJWAE Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Amazon", + "user_agent": "Mozilla\/5.0 (Linux; U; en-us; KFTT Build\/IML74K) AppleWebKit\/535.19 (KHTML, like Gecko) Silk\/3.21 Safari\/535.19 Silk-Accelerated=true", + "mobile": true, + "tablet": true + }, + { + "vendor": "Amazon", + "user_agent": "Mozilla\/5.0 (Linux; U; en-us; KFTHWI Build\/JDQ39) AppleWebKit\/535.19 (KHTML, like Gecko) Silk\/3.21 Safari\/535.19 Silk-Accelerated=true", + "mobile": true, + "tablet": true + }, + { + "vendor": "Amazon", + "user_agent": "Mozilla\/5.0 (Linux; U; en-us; KFJWI Build\/IMM76D) AppleWebKit\/535.19 (KHTML, like Gecko) Silk\/3.21 Safari\/535.19 Silk-Accelerated=true", + "mobile": true, + "tablet": true + }, + { + "vendor": "Amazon", + "user_agent": "Mozilla\/5.0 (Linux; U; en-us; KFSOWI Build\/JDQ39) AppleWebKit\/535.19 (KHTML, like Gecko) Silk\/3.21 Safari\/535.19 Silk-Accelerated=true", + "mobile": true, + "tablet": true + }, + { + "vendor": "Amazon", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.1; xx-xx; T720-WIFI Build\/ECLAIR) AppleWebKit\/530.17 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/530.17", + "mobile": true, + "tablet": true + }, + { + "vendor": "Apple", + "user_agent": "iTunes\/9.1.1", + "mobile": false, + "tablet": false + }, + { + "vendor": "Apple", + "user_agent": "iTunes\/11.0.2 (Windows; Microsoft Windows 8 x64 Business Edition (Build 9200)) AppleWebKit\/536.27.1", + "mobile": false, + "tablet": false + }, + { + "vendor": "Apple", + "user_agent": "Mozilla\/5.0 (iPod touch; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit\/537.51.1 (KHTML, like Gecko) Version\/7.0 Mobile\/11A4449d Safari\/9537.53", + "mobile": true, + "tablet": false + }, + { + "vendor": "Apple", + "user_agent": "Mozilla\/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit\/420+ (KHTML, like Gecko) Version\/3.0 Mobile\/1A543 Safari\/419.3", + "mobile": true, + "tablet": false, + "version": { + "Webkit": "420+", + "Safari": "3.0" + } + }, + { + "vendor": "Apple", + "user_agent": "Mozilla\/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit\/528.18 (KHTML, like Gecko) Version\/4.0 Mobile\/7A341 Safari\/528.16", + "mobile": true, + "tablet": false, + "version": { + "iOS": "3_0", + "Webkit": "528.18", + "Safari": "4.0" + }, + "model": "iPhone" + }, + { + "vendor": "Apple", + "user_agent": "Mozilla\/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit\/534.46 (KHTML, like Gecko) Version\/5.1 Mobile\/9B206 Safari\/7534.48.3", + "mobile": true, + "tablet": false, + "version": { + "iOS": "5_1_1", + "Webkit": "534.46", + "Mobile": "9B206", + "Safari": "5.1" + }, + "model": "iPhone" + }, + { + "vendor": "Apple", + "user_agent": "Mozilla\/5.0 (iPod; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit\/536.26 (KHTML, like Gecko) Version\/6.0 Mobile\/10A403 Safari\/8536.25", + "mobile": true, + "tablet": false, + "version": { + "iOS": "6_0", + "Webkit": "536.26", + "Mobile": "10A403", + "Safari": "6.0" + }, + "model": "iPod" + }, + { + "vendor": "Apple", + "user_agent": "Mozilla\/5.0 (iPad; CPU OS 5_1_1 like Mac OS X; en-us) AppleWebKit\/534.46.0 (KHTML, like Gecko) CriOS\/21.0.1180.80 Mobile\/9B206 Safari\/7534.48.3 (6FF046A0-1BC4-4E7D-8A9D-6BF17622A123)", + "mobile": true, + "tablet": true, + "version": { + "iOS": "5_1_1", + "Webkit": "534.46.0", + "Chrome": "21.0.1180.80", + "Mobile": "9B206" + }, + "model": "iPad" + }, + { + "vendor": "Apple", + "user_agent": "Mozilla\/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit\/536.26 (KHTML, like Gecko) Version\/6.0 Mobile\/10A403 Safari\/8536.25", + "mobile": true, + "tablet": true, + "version": { + "iOS": "6_0", + "Webkit": "536.26", + "Safari": "6.0", + "Mobile": "10A403" + }, + "model": "iPad" + }, + { + "vendor": "Apple", + "user_agent": "Mozilla\/5.0 (iPad; U; CPU OS 4_2_1 like Mac OS X; en-us) AppleWebKit\/533.17.9 (KHTML, like Gecko) Version\/5.0.2 Mobile\/8C148 Safari\/6533.18.5", + "mobile": true, + "tablet": true, + "version": { + "iOS": "4_2_1", + "Webkit": "533.17.9", + "Safari": "5.0.2", + "Mobile": "8C148" + }, + "model": "iPad" + }, + { + "vendor": "Apple", + "user_agent": "Mozilla\/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit\/531.21.10 (KHTML, like Gecko) Version\/4.0.4 Mobile\/7B334b Safari\/531.21.10", + "mobile": true, + "tablet": true, + "version": { + "iOS": "3_2", + "Webkit": "531.21.10", + "Safari": "4.0.4", + "Mobile": "7B334b" + }, + "model": "iPad" + }, + { + "vendor": "Apple", + "user_agent": "Mozilla\/5.0 (iPhone; CPU iPhone OS 6_0_1 like Mac OS X; da-dk) AppleWebKit\/534.46.0 (KHTML, like Gecko) CriOS\/21.0.1180.82 Mobile\/10A523 Safari\/7534.48.3", + "mobile": true, + "tablet": false, + "version": { + "iOS": "6_0_1", + "Webkit": "534.46.0", + "Chrome": "21.0.1180.82", + "Mobile": "10A523" + }, + "model": "iPhone" + }, + { + "vendor": "Apple", + "user_agent": "Mozilla\/5.0 (iPhone; CPU iPhone OS 6_0_1 like Mac OS X) AppleWebKit\/536.26 (KHTML, like Gecko) Version\/6.0 Mobile\/10A523 Safari\/8536.25", + "mobile": true, + "tablet": false, + "version": { + "iOS": "6_0_1", + "Webkit": "536.26", + "Safari": "6.0", + "Mobile": "10A523" + }, + "model": "iPhone" + }, + { + "vendor": "Apple", + "user_agent": "Mozilla\/5.0 (iPhone; CPU iPhone OS 6_1 like Mac OS X; ru-ru) AppleWebKit\/536.26 (KHTML, like Gecko) CriOS\/23.0.1271.100 Mobile\/10B142 Safari\/8536.25", + "mobile": true, + "tablet": false, + "version": { + "iOS": "6_1", + "Webkit": "536.26", + "Chrome": "23.0.1271.100", + "Mobile": "10B142" + }, + "model": "iPhone" + }, + { + "vendor": "Apple", + "user_agent": "Mozilla\/5.0 (iPhone; CPU iPhone OS 6_1_3 like Mac OS X) AppleWebKit\/536.26 (KHTML, like Gecko) Version\/6.0 Mobile\/10B329 Safari\/8536.25", + "mobile": true, + "tablet": false, + "version": { + "iOS": "6_1_3", + "Webkit": "536.26", + "Safari": "6.0", + "Mobile": "10B329" + }, + "model": "iPhone" + }, + { + "vendor": "Apple", + "user_agent": "Mozilla\/5.0 (iPad; CPU OS 6_1_3 like Mac OS X) AppleWebKit\/536.26 (KHTML, like Gecko) Coast\/1.0.2.62956 Mobile\/10B329 Safari\/7534.48.3", + "mobile": true, + "tablet": true, + "version": { + "Coast": "1.0.2.62956" + } + }, + { + "vendor": "Apple", + "user_agent": "CheckMyBus iOS mobile App 0.9.0 (iPhone; iPhone OS\/7.1.1)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Apple", + "user_agent": "Mozilla\/5.0 (iPad; CPU OS 7_0 like Mac OS X) AppleWebKit\/537.51.1 (KHTML, like Gecko) Version\/7.0 Mobile\/11A465 Safari\/9537.53", + "mobile": true, + "tablet": true + }, + { + "vendor": "Apple", + "user_agent": "Mozilla\/5.0 (iPhone; CPU iPhone OS 8_0_2 like Mac OS X) AppleWebKit\/600.1.4 (KHTML, like Gecko) CriOS\/38.0.2125.59 Mobile\/12A405 Safari\/600.1.4", + "mobile": true, + "tablet": false + }, + { + "vendor": "Apple", + "user_agent": "VendorAppName\/1.7.0 (iPhone; iOS 8.1.2; Scale\/3.00)", + "mobile": true, + "tablet": false, + "version": { + "iOS": "8.1.2" + }, + "model": "iPhone" + }, + { + "vendor": "Apple", + "user_agent": "Mozilla\/5.0 (iPad; CPU OS 9_0 like Mac OS X) AppleWebKit\/601.1.17 (KHTML, like Gecko) Version\/8.0 Mobile\/13A175 Safari\/600.1.4", + "mobile": true, + "tablet": true + }, + { + "vendor": "Apple", + "user_agent": "Mozilla\/5.0 (iPhone; CPU iPhone OS 9_0 like Mac OS X) AppleWebKit\/601.1.37 (KHTML, like Gecko) Version\/8.0 Mobile\/13A4293g Safari\/600.1.4", + "mobile": true, + "tablet": false + }, + { + "vendor": "Archos", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; Qilive 97R Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/30.0.1599.92 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Archos", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; Archos 50 Platinum Build\/JZO54K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.94 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Archos", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.4; ARCHOS 80G9 Build\/IMM76D) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19", + "mobile": true, + "tablet": true + }, + { + "vendor": "Archos", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2.1; fr-fr; A101IT Build\/FROYO) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "Archos", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; Archos 101 Neon Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Archos", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; Archos 101 Cobalt Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Archos", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; de-de; ARCHOS 80 TITANIUM Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Archos", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; ARCHOS 101 Titanium Build\/JRO03H) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19", + "mobile": true, + "tablet": true + }, + { + "vendor": "Archos", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; de-de; ARCHOS 70b TITANIUM Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Archos", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; de-de; Archos 80 Xenon Build\/JZO54K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Archos", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; Archos 79 Xenon Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Archos", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; de-de; ARCHOS 101 Titanium Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Archos", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; de-de; ARCHOS 80XSK Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Archos", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; de-de; ARCHOS FAMILYPAD 2 Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Archos", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; ARCHOS 97B TITANIUM Build\/JRO03H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Archos", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; ARCHOS 101 XS 2 Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Archos", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; de-de; ARCHOS 80b PLATINUM Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Archos", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; Archos 70 Xenon Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Archos", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; de-de; ARCHOS 97 CARBON Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Archos", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; de-de; ARCHOS 97 TITANIUMHD Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Archos", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; Archos 90 Neon Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Archos", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 1.6; de-de; Archos5 Build\/Donut) AppleWebKit\/528.5+ (KHTML, like Gecko) Version\/3.1.2 Mobile Safari\/525.20.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "Archos", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; de-de; ARCHOS GAMEPAD Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "ASUS", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 3.2.1; en-us; Transformer TF101 Build\/HTK75) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13", + "mobile": true, + "tablet": true, + "version": { + "Android": "3.2.1", + "Webkit": "534.13", + "Safari": "4.0" + }, + "model": "Transformer TF101" + }, + { + "vendor": "ASUS", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; Transformer Build\/JRO03L) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19", + "mobile": true, + "tablet": true + }, + { + "vendor": "ASUS", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; ASUS Transformer Pad TF300T Build\/JRO03C) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19", + "mobile": true, + "tablet": true + }, + { + "vendor": "ASUS", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; fr-fr; Transformer Build\/JZO54K; CyanogenMod-10) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "ASUS", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; asus_laptop Build\/IMM76L) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "ASUS", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; en-gb; PadFone 2 Build\/JRO03L) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "ASUS", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; en-gb; PadFone 2 Build\/JRO03L) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.1.1", + "Build": "JRO03L", + "Webkit": "534.30", + "Safari": "4.0" + } + }, + { + "vendor": "ASUS", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.1; ME301T Build\/JOP40D) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.94 Safari\/537.36", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.2.1", + "Build": "JOP40D" + } + }, + { + "vendor": "ASUS", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.1; ME173X Build\/JOP40D) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.94 Safari\/537.36", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.2.1", + "Build": "JOP40D" + } + }, + { + "vendor": "ASUS", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; TF300T Build\/JDQ39E) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.2.2", + "Build": "JDQ39E" + } + }, + { + "vendor": "ASUS", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; K00C Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "ASUS", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; K00E Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "ASUS", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; K00F Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "ASUS", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; K00L Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/36.0.1985.131 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "ASUS", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; ME302KL Build\/JDQ39) AppleWebKit\/537.31 (KHTML, like Gecko) Chrome\/26.0.1410.58 Safari\/537.31", + "mobile": true, + "tablet": true + }, + { + "vendor": "ASUS", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; K010 Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/42.0.2311.111 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "ASUS", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; K017 Build\/KVT49L) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/42.0.2311.111 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (BlackBerry; U; BlackBerry 9300; en) AppleWebKit\/534.8+ (KHTML, like Gecko) Version\/6.0.0.546 Mobile Safari\/534.8+", + "mobile": true, + "tablet": false, + "version": { + "Webkit": "534.8+", + "BlackBerry": "6.0.0.546" + }, + "model": "BlackBerry 9300" + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (BlackBerry; U; BlackBerry 9360; en-US) AppleWebKit\/534.11+ (KHTML, like Gecko) Version\/7.0.0.400 Mobile Safari\/534.11+", + "mobile": true, + "tablet": false + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (BlackBerry; U; BlackBerry 9700; he) AppleWebKit\/534.8+ (KHTML, like Gecko) Version\/6.0.0.723 Mobile Safari\/534.8+", + "mobile": true, + "tablet": false + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (BlackBerry; U; BlackBerry 9700; en-US) AppleWebKit\/534.8 (KHTML, like Gecko) Version\/6.0.0.448 Mobile Safari\/534.8", + "mobile": true, + "tablet": false + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (BlackBerry; U; BlackBerry 9790; en-GB) AppleWebKit\/534.11+ (KHTML, like Gecko) Version\/7.1.0.714 Mobile Safari\/534.11+", + "mobile": true, + "tablet": false, + "version": { + "Webkit": "534.11+", + "BlackBerry": "7.1.0.714" + }, + "model": "BlackBerry 9790" + }, + { + "vendor": "BlackBerry", + "user_agent": "Opera\/9.80 (BlackBerry; Opera Mini\/7.0.29990\/28.2504; U; en) Presto\/2.8.119 Version\/11.10", + "mobile": true, + "tablet": false + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (BlackBerry; U; BlackBerry 9981; en-GB) AppleWebKit\/534.11+ (KHTML, like Gecko) Version\/7.1.0.342 Mobile Safari\/534.11+", + "mobile": true, + "tablet": false + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (BlackBerry; U; BlackBerry 9800; en-GB) AppleWebKit\/534.8+ (KHTML, like Gecko) Version\/6.0.0.546 Mobile Safari\/534.8+", + "mobile": true, + "tablet": false + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (BlackBerry; U; BlackBerry 9780; es) AppleWebKit\/534.8 (KHTML, like Gecko) Version\/6.0.0.480 Mobile Safari\/534.8", + "mobile": true, + "tablet": false + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (BlackBerry; U; BlackBerry 9810; en-US) AppleWebKit\/534.11 (KHTML, like Gecko) Version\/7.0.0.583 Mobile Safari\/534.11", + "mobile": true, + "tablet": false + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (BlackBerry; U; BlackBerry 9860; es) AppleWebKit\/534.11+ (KHTML, like Gecko) Version\/7.0.0.576 Mobile Safari\/534.11+", + "mobile": true, + "tablet": false + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (BlackBerry; U; BlackBerry 9900; en-US) AppleWebKit\/534.11 (KHTML, like Gecko) Version\/7.1.0.523 Mobile Safari\/534.11", + "mobile": true, + "tablet": false + }, + { + "vendor": "BlackBerry", + "user_agent": "BlackBerry8520\/5.0.0.592 Profile\/MIDP-2.1 Configuration\/CLDC-1.1 VendorID\/136", + "mobile": true, + "tablet": false + }, + { + "vendor": "BlackBerry", + "user_agent": "BlackBerry8520\/5.0.0.1067 Profile\/MIDP-2.1 Configuration\/CLDC-1.1 VendorID\/603", + "mobile": true, + "tablet": false + }, + { + "vendor": "BlackBerry", + "user_agent": "BlackBerry8520\/5.0.0.1036 Profile\/MIDP-2.1 Configuration\/CLDC-1.1 VendorID\/611", + "mobile": true, + "tablet": false, + "version": { + "BlackBerry": "5.0.0.1036", + "VendorID": "611" + }, + "model": "BlackBerry8520" + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (BlackBerry; U; BlackBerry 9220; en) AppleWebKit\/534.11+ (KHTML, like Gecko) Version\/7.1.0.337 Mobile Safari\/534.11+", + "mobile": true, + "tablet": false + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (PlayBook; U; RIM Tablet OS 2.1.0; en-US) AppleWebKit\/536.2+ (KHTML, like Gecko) Version\/7.2.1.0 Safari\/536.2+", + "mobile": true, + "tablet": true + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (BB10; Touch) AppleWebKit\/537.1+ (KHTML, like Gecko) Version\/10.0.0.1337 Mobile Safari\/537.1+", + "mobile": true, + "tablet": false + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (BB10; Touch) AppleWebKit\/537.10+ (KHTML, like Gecko) Version\/10.0.9.2372 Mobile Safari\/537.10+", + "mobile": true, + "tablet": false + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (BB10; Touch) \/537.10+ (KHTML, like Gecko) Version\/10.0.9.2372 Mobile Safari\/537.10+", + "mobile": true, + "tablet": false, + "version": { + "BlackBerry": "10.0.9.2372" + } + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 3.2.1; en-us; Transformer TF101 Build\/HTK75) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13", + "mobile": true, + "tablet": true, + "version": { + "Android": "3.2.1", + "Webkit": "534.13", + "Safari": "4.0" + }, + "model": "Transformer TF101" + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; de-de; A200 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.0.3", + "Webkit": "534.30", + "Safari": "4.0" + }, + "model": "A200" + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; A500 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.0.3", + "Webkit": "534.30", + "Safari": "4.0" + }, + "model": "A500" + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; A501 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.0.3", + "Webkit": "534.30", + "Safari": "4.0" + }, + "model": "A501" + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; Transformer Build\/JRO03L) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.1.1", + "Webkit": "535.19", + "Chrome": "18.0.1025.166" + }, + "model": "Transformer" + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; ASUS Transformer Pad TF300T Build\/JRO03C) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.1.1", + "Webkit": "535.19", + "Chrome": "18.0.1025.166" + }, + "model": "Transformer Pad TF300T" + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; fr-fr; Transformer Build\/JZO54K; CyanogenMod-10) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.1.2", + "Webkit": "534.30", + "Safari": "4.0", + "Build": "JZO54K" + }, + "model": "Transformer" + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; B1-A71 Build\/JZO54K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.1.2", + "Webkit": "535.19", + "Chrome": "18.0.1025.166" + }, + "model": "B1-A71" + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Acer; Allegro)", + "mobile": true, + "tablet": false, + "version": { + "Windows Phone OS": "7.5", + "Trident": "5.0", + "IE": "9.0" + }, + "model": "Allegro" + }, + { + "vendor": "Dell", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 1.6; en-gb; Dell Streak Build\/Donut AppleWebKit\/528.5+ (KHTML, like Gecko) Version\/3.1.2 Mobile Safari\/ 525.20.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Dell", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.7; hd-us; Dell Venue Build\/GWK74; CyanogenMod-7.2.0) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Dell", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; DELL; Venue Pro)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Dell", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; Venue 8 3830 Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Dell", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; Venue 7 3730 Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/30.0.0.0 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Dell", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; Venue 7 HSPA+ Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/37.0.2062.117 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Dell", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.3; en-us; Venue 8 3830 Build\/JSS15Q) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Dell", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 3.2; zh-cn; Dell Streak 10 Pro Build\/HTJ85B) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13", + "mobile": true, + "tablet": true + }, + { + "vendor": "Google", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2; en-us; Nexus One Build\/FRF91) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Google", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; Nexus 4 Build\/JDQ39) AppleWebKit\/537.31 (KHTML, like Gecko) Chrome\/26.0.1410.40 Mobile Safari\/537.31 OPR\/14.0.1074.54070", + "mobile": true, + "tablet": false, + "version": { + "Android": "4.2.2", + "Build": "JDQ39", + "Webkit": "537.31", + "Opera": "14.0.1074.54070" + } + }, + { + "vendor": "Google", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; Nexus 4 Build\/JDQ39) AppleWebKit\/537.31 (KHTML, like Gecko) Chrome\/26.0.1410.58 Mobile Safari\/537.31", + "mobile": true, + "tablet": false, + "version": { + "Android": "4.2.2", + "Chrome": "26.0.1410.58" + } + }, + { + "vendor": "Google", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; en-us; Google Nexus 4 - 4.1.1 - API 16 - 768x1280 Build\/JRO03S) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Google", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; en-us; Google Galaxy Nexus - 4.1.1 - API 16 - 720x1280 Build\/JRO03S) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Google", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; Nexus 7 Build\/JRO03D) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19", + "mobile": true, + "tablet": true + }, + { + "vendor": "Google", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2; Nexus 7 Build\/JOP40C) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19", + "mobile": true, + "tablet": true + }, + { + "vendor": "Google", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; Nexus 7 Build\/JZ054K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.1.2", + "Chrome": "18.0.1025.166" + } + }, + { + "vendor": "Google", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; cs-cz; Nexus S Build\/JZO54K; CyanogenMod-10.0.0) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Google", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; Nexus 10 Build\/JWR66Y) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/29.0.1547.72 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Google", + "user_agent": "Mozilla\/5.0 (Linux; U; Android; en_us; Nexus 7 Build\/) AppleWebKit\/530.17 (KHTML, like Gecko) Version\/4.0 NetFrontLifeBrowser\/2.3 Mobile (Dragonfruit)", + "mobile": true, + "tablet": true + }, + { + "vendor": "Google", + "user_agent": "Mozilla\/5.0 (Linux; Android 5.1; Nexus 5 Build\/LMY47D) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/39.0.0.0 Mobile Safari\/537.36 momoWebView\/6.3.1 android\/404(Nexus 5;android 5.1;zh_CN;10;netType\/1)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Google", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; Nexus 10 Build\/JWR66Y) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/30.0.1599.92 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "HP", + "user_agent": "Mozilla\/5.0 (hp-tablet; Linux; hpwOS\/3.0.5; U; en-GB) AppleWebKit\/534.6 (KHTML, like Gecko) wOSBrowser\/234.83 Safari\/534.6 TouchPad\/1.0", + "mobile": true, + "tablet": true + }, + { + "vendor": "HP", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; en-gb; HP Slate 7 Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "HP", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HP Slate 7 Build\/JRO03H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.94 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "HP", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; de-de; HP 8 Build\/1.0.7_WW-FIR-13) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "HP", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HP Slate 10 HD Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "HP", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HP Slate 8 Pro Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "HP", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; Slate 21 Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.138 Safari\/537.36 OPR\/22.0.1485.78487", + "mobile": true, + "tablet": true + }, + { + "vendor": "HP", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; HP SlateBook 10 x2 PC Build\/4.3-17r20-03-23) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.94 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (X11; Linux x86_64; Z520m; en-ca) AppleWebKit\/534.24 (KHTML, like Gecko) Chrome\/11.0.696.34 Safari\/534.24", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "HTC_Touch_HD_T8282 Mozilla\/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.11)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 1.5; en-us; ADR6200 Build\/CUPCAKE) AppleWebKit\/528.5+ (KHTML, like Gecko) Version\/3.1.2 Mobile Safari\/525.20.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.1; xx-xx; Desire_A8181 Build\/ERE27) AppleWebKit\/530.17 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/530.17", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.1-update1; de-de; HTC Desire 1.19.161.5 Build\/ERE27) AppleWebKit\/530.17 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/530.17", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.1-update1; en-gb; HTC Desire Build\/ERE27) AppleWebKit\/530.17 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/530.17", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2; fr-fr; HTC Desire Build\/FRF91) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2; en-dk; Desire_A8181 Build\/FRF91) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2; xx-xx; 001HT Build\/FRF91) AppleWebKit\/525.10+ (KHTML, like Gecko) Version\/3.0.4 Mobile Safari\/523.12.2", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2; xx-xx; HTCA8180\/1.0 Android\/2.2 release\/06.23.2010 Browser\/WAP 2.0 Profile\/MIDP-2.0 Configuration\/CLDC-1.1 Build\/FRF91) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2.2; de-at; HTC Desire Build\/FRG83G) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2.2; en-sk; Desire_A8181 Build\/FRG83G) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3; xx-xx; HTC\/DesireS\/1.07.163.1 Build\/GRH78C) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.3; en-lv; HTC_DesireZ_A7272 Build\/GRI40) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.4; en-us; ADR6300 Build\/GRJ22) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.5; en-gb; HTC\/DesireS\/2.10.161.3 Build\/GRJ90) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.5; ru-ru; HTC_DesireS_S510e Build\/GRJ90) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.5; en-us; Inspire 4G Build\/GRJ90) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.5; de-de; HTC Explorer A310e Build\/GRJ90) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.5; en-gb; HTC_ChaCha_A810e Build\/GRJ90) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.5; nl-nl; HTC_DesireHD_A9191 Build\/GRJ90) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.5; ru-ru; HTC Desire S Build\/GRJ90) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.3; en-au; HTC Desire Build\/GRI40) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.5; de-de; HTC_DesireHD Build\/GRJ90) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.5; ru-ua; HTC_WildfireS_A510e Build\/GRJ90) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.7; en-us; HTC Vision Build\/GRI40; ILWT-CM7) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0; xx-xx; HTC_GOF_U\/1.05.161.1 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; hu-hu; HTC Sensation Z710e Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; zh-cn; HTC Sensation XE with Beats Audio Z715e Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30 XiaoMi\/MiuiBrowser\/1.0", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; pl-pl; EVO3D_X515m Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; ru-ru; HTC_One_S Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; ru-ru; HTC_One_V Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; zh-cn; HTC_A320e Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; zh-tw; HTC Desire V Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; PG86100 Build\/IML74K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-nl; SensationXE_Beats_Z715e Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; ADR6425LVW 4G Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; HTC One V Build\/IML74K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; cs-ee; Sensation_Z710e Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; HTC Evo 4G Build\/MIUI) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.4; Desire HD Build\/IMM76D) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-my; HTC_One_X Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; it-it; IncredibleS_S710e Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; fr-fr; HTC_Desire_S Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One X Build\/JRO03C) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC Butterfly Build\/JRO03C) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; EVO Build\/JRO03C) AppleWebKit\/537.22 (KHTML, like Gecko) Chrome\/25.0.1364.169 Mobile Safari\/537.22", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; HTCSensation Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; en-us; GT-S6312 Build\/JZO54K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC 7 Mozart T8698; QSD8x50)", + "mobile": true, + "tablet": false, + "version": { + "IE": "9.0", + "Windows Phone OS": "7.5", + "Trident": "5.0" + }, + "model": "7 Mozart T8698" + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 3.2.1; en-gb;HTC_Flyer_P512 Build\/HTK75C) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13", + "mobile": true, + "tablet": true + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 3.1; zh-tw; HTC PG09410 Build\/HMJ15) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13", + "mobile": true, + "tablet": true + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; 7 HTC MOZART)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; 7 Mondrian T8788)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; 7 Mozart T8698)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; 7 Mozart)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; 7 Mozart; Orange)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; 7 Pro T7576)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; 7 Pro)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; 7 Schubert T9292)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; 7 Surround)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; 7 Trophy T8686)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; 7 Trophy)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Eternity)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Gold)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; HD2 LEO)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; HD2)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; HD7 T9292)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; HD7)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; iPad 3)", + "mobile": true, + "tablet": true + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; LEO)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Mazaa)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Mondrian)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Mozart T8698)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Mozart)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; mwp6985)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; PC40100)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; PC40200)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; PD67100)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; PI39100)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; PI86100)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Radar 4G)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Radar C110e)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Radar C110e; 1.08.164.02)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Radar C110e; 2.05.164.01)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Radar C110e; 2.05.168.02)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Radar)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Radar; Orange)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Schuber)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Schubert T9292)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Schubert)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Spark)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Surround)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; T7575)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; T8697)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; T8788)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; T9295)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; T9296)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; TITAN X310e)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Titan)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Torphy T8686)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; X310e)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC_blocked; T8788)", + "mobile": true, + "tablet": false, + "version": { + "IE": "9.0", + "Windows Phone OS": "7.5", + "Trident": "5.0" + }, + "model": "T8788" + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.4; HTC One S Build\/IMM76D) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; de-de; HTC One X Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-th; HTC One V Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.4; HTC One X Build\/IMM76D) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; en-id; HTC One X Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; HTC One S Build\/IML74K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One S Build\/JRO03C) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; HTC One X Build\/IML74K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; de-at; HTC One S Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One X Build\/JRO03L) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; en-gb; HTC One S Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One X Build\/JRO03C) AppleWebKit\/537.22 (KHTML, like Gecko) Chrome\/25.0.1364.123 Mobile Safari\/537.22", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One S Build\/JRO03C) AppleWebKit\/537.22 (KHTML, like Gecko) Chrome\/25.0.1364.123 Mobile Safari\/537.22", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One X Build\/JRO03C) AppleWebKit\/537.22 (KHTML, like Gecko) Chrome\/25.0.1364.169 Mobile Safari\/537.22", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; HTC One X Build\/JZO54K) AppleWebKit\/537.22 (KHTML, like Gecko) Chrome\/25.0.1364.169 Mobile Safari\/537.22", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; es-pe; HTC One V Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One S Build\/JRO03C) AppleWebKit\/537.22 (KHTML, like Gecko) Chrome\/25.0.1364.169 Mobile Safari\/537.22", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; HTC One V Build\/IML74K) AppleWebKit\/537.31 (KHTML, like Gecko) Chrome\/26.0.1410.58 Mobile Safari\/537.31", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; de-de; HTC One X Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30 Maxthon\/4.0.4.1000", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; HTC One X Build\/IML74K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.133 Mobile Safari\/535.19 AlexaToolbar\/alxf-2.17", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One X Build\/JRO03C) AppleWebKit\/537.31 (KHTML, like Gecko) Chrome\/26.0.1410.58 Mobile Safari\/537.31", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; HTC One Build\/JZO54K) AppleWebKit\/537.31 (KHTML, like Gecko) Chrome\/26.0.1410.58 Mobile Safari\/537.31", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; HTC One S Build\/IML74K) AppleWebKit\/537.31 (KHTML, like Gecko) Chrome\/26.0.1410.58 Mobile Safari\/537.31", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One S Build\/JRO03C) AppleWebKit\/537.31 (KHTML, like Gecko) Chrome\/26.0.1410.58 Mobile Safari\/537.31", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One X Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/27.0.1453.90 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One S Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/27.0.1453.90 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; HTC One Build\/JZO54K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; HTC One Build\/JZO54K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/27.0.1453.90 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; de-de; HTC One Build\/JZO54K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One S Build\/JRO03C) AppleWebKit\/537.31 (KHTML, like Gecko) Chrome\/26.0.1410.58 Mobile Safari\/537.31 OPR\/14.0.1074.58201", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; es-es; HTC One S Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; HTC One Build\/JZO54K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.64 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One S Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.64 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; HTC One V Build\/IML74K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.64 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One X Build\/JDQ39E) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One XL Build\/JRO03C) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One S Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.63 Mobile Safari\/537.36 OPR\/15.0.1162.60140", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.94 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; de-de; HTC One S Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; HTC One Build\/JZO54K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.94 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One X Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.94 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; HTC One X Build\/IML74K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.94 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One S Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.94 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; HTC One Build\/JZO54K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/29.0.1547.59 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/29.0.1547.59 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One S Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/30.0.1599.24 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "HTC One X Linux\/3.0.13 Android\/4.1.9 Release\/10.12.2012 Browser\/AppleWebKit534.30 Profile\/MIDP-2.0 Configuration\/CLDC-1.1 Mobile Safari\/534.30 Android 4.0.1;", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One X Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/29.0.1547.59 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; zh-tw; HTC One 801e Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.4; HTC One X Build\/IMM76D) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.63 Mobile Safari\/537.36 OPR\/15.0.1162.61541", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/29.0.1547.72 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; HTC One XL Build\/IML74K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; HTC One Build\/JZO54K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/29.0.1547.72 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One X Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/29.0.1547.72 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One X+ Build\/JRO03C) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; HTC One X Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30\/4.05d.1002.m7", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-in; HTC One V Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One X Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/29.0.1547.72 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; HTC One V Build\/IML74K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/29.0.1547.72 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; ru-ru; HTC One X Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30 MicroMessenger\/5.0.1.352", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; en-us; HTC One X Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-gb; HTC One Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One S Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/29.0.1547.72 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; HTC One SV Build\/JZO54K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/30.0.1599.82 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One S Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/30.0.1599.82 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; HTC One V Build\/IML74K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/30.0.1599.82 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/30.0.1599.82 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One X Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/30.0.1599.82 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One S Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/30.0.1599.92 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One mini Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/30.0.1599.82 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; HTC One Build\/IMM76D) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; HTC One Build\/JSS15J) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/30.0.1599.82 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; HTC One 801e Build\/JSS15J) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/29.0.1547.72 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One X Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/30.0.1599.92 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/30.0.1599.92 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One X Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/30.0.1599.92 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; de-ch; HTC One Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; nl-nl; HTC One X Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; HTC One Build\/JSS15J) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/30.0.1599.92 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One X Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/31.0.1650.59 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; HTC One Build\/JSS15J) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/31.0.1650.59 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One S Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/31.0.1650.59 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; zh-cn; HTC One S Build\/IML74K) AppleWebKit\/530.17 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/530.17 T5\/2.0 baidubrowser\/3.1.6.4 (Baidu; P1 4.0.3)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One X Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/31.0.1650.59 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One X+ Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/31.0.1650.59 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.3; en-us; HTC One 801e Build\/JSS15J) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 UCBrowser\/9.4.1.362 U3\/0.8.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4; HTC One Build\/KRT16S.H5) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/31.0.1650.59 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/31.0.1650.59 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One S Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.94 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; HTC One SV Build\/JZO54K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/31.0.1650.59 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.1; ru-ru; HTC One Build\/JOP40D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; HTC One Build\/JSS15J) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One X Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; ru-ru; HTC One 801e Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One 801e Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One mini Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/30.0.1599.12975 YaBrowser\/13.12.1599.12975 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4; HTC One Build\/KRT16S) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.3; en-us; HTC One Build\/JSS15J) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One X Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; HTC One X Build\/JZO54K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; HTC One Build\/JWR66Y.H1) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.93 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.3; de-at; HTC One Build\/JSS15J) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; HTC One Build\/JSS15J) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.136 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.135 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One X+ Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.136 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One dual sim Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.136 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.4; HTC One S Build\/IMM76D) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.136 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One max Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.132 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One S Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.136 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; HTC One mini Build\/JSS15Q) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.136 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; HTC One 801e Build\/JSS15J) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.136 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; zh-cn; HTC One Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30 MicroMessenger\/5.2.380", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.136 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.166 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; HTC One X Build\/IML74K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.133 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; HTC One Build\/JSS15J) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.166 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One X Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.166 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One X+ Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.166 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.132 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; HTC One Build\/JSS15J) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.4; HTC One X Build\/IMM76D) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; it-it; HTC One S Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-kw; HTC One X+ Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One max Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/30.0.0.0 Mobile Safari\/537.36 MicroMessenger\/5.3.0.49_r693790.420", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One S Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.122 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; HTC One Build\/JSS15J) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.122 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One X Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.122 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; ru; HTC One V Build\/IML74K) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 UCBrowser\/9.7.5.418 U3\/0.8.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.138 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/30.0.0.0 Mobile Safari\/537.36 MicroMessenger\/5.2.1.381", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One S Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.122 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One mini Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.138 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.4.2; ru-ru; HTC One mini Build\/KOT49H) AppleWebKit\/537.16 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/537.16", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/30.0.0.0 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; ru; HTC One V Build\/IML74K) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 UCBrowser\/9.8.0.435 U3\/0.8.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One 801e Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One X Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-us; HTC One X - 4.2.2 - API 17 - 720x1280 Build\/JDQ39E) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One S Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One_M8 Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; HTC One V Build\/IML74K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.138 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One X Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/36.0.1985.94 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One X+ Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/36.0.1985.128 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One_M8 Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/36.0.1985.128 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One X Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/36.0.1985.128 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One_M8 Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/36.0.1985.131 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/36.0.1985.131 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One X Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/36.0.1985.131 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.3; HTC One_M8 Build\/KTU84L) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/36.0.1985.131 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; HTC One VX Build\/JZO54K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/36.0.1985.131 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/37.0.2062.76 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One_M8 Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/36.0.1985.135 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/36.0.1985.135 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; HTC One V Build\/IML74K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One dual sim Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One S Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/36.0.1985.135 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One dual sim Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.138 Mobile Safari\/537.36 OPR\/22.0.1485.78487", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One X+ Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/36.0.1985.135 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; HTC One Build\/JSS15J) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/36.0.1985.131 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.3; HTC One_M8 Build\/KTU84L) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/36.0.1985.135 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One X Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/36.0.1985.135 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; HTC One Build\/JSS15J) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/37.0.2062.117 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.3; HTC One Build\/KTU84L) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/36.0.1985.135 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.3; HTC One 801e Build\/KTU84L) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/33.0.0.0 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.3; HTC One 801e Build\/KTU84L) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/37.0.2062.117 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; HTC One X Build\/IML74K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.138 Mobile Safari\/537.36 OPR\/22.0.1485.81203", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One X Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/37.0.2062.117 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One 801e Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/30.0.0.0 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.3; HTC One Build\/KTU84L) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/37.0.2062.117 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One mini Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/36.0.1985.135 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One S Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/37.0.2062.117 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; zh-tw; HTC One S Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.3; HTC One_M8 Build\/KTU84L) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/37.0.2062.117 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; HTC One V Build\/IML74K) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 UCBrowser\/9.9.2.467 U3\/0.8.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/37.0.2062.117 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; HTC One mini Build\/JSS15Q) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/37.0.2062.117 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.4.2; en-us; HTC One_M8 Build\/KOT49H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/37.0.2062.117 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.3; HTC One dual sim Build\/KTU84L) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/37.0.2062.117 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One X Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.72 Mobile Safari\/537.36 OPR\/19.0.1340.69721", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; HTC One Build\/JSS15J) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/38.0.2125.102 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.3; HTC One Build\/KTU84L) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/38.0.2125.102 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.3; HTC One_M8 Build\/KTU84L) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/38.0.2125.102 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One_M8 Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/38.0.2125.102 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One SV Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/38.0.2125.102 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.3; HTC One Build\/KTU84L) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/33.0.0.0 Mobile Safari\/537.36 ACHEETAHI\/2100050056", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.4; HTC One_M8 Build\/KTU84P) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/38.0.2125.102 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One X Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/38.0.2125.102 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.3; HTC One Build\/KTU84L) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/38.0.2125.114 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.3; HTC One_M8 Build\/KTU84L) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/33.0.0.0 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One X Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/38.0.2125.114 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; HTC One Build\/JWR66Y.H1) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/38.0.2125.114 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; zh-tw; HTC One SV Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One mini Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/38.0.2125.114 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/38.0.2125.114 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.4; HTC One_M8 Build\/KTU84P) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/33.0.0.0 Mobile Safari\/537.36 [FBAN\/FB4A;FBAV\/21.0.0.23.12;]", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; zh-tw; HTC One X Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.4; HTC One_M8 Build\/KTU84P) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/39.0.2171.59 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.3; HTC One Build\/KTU84L) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/39.0.2171.59 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; ru-si; HTC One X Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30 MicroMessenger\/6.0.0.67_r853700.483 NetType\/WIFI", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One_M8 Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/30.0.0.0 Mobile Safari\/537.36 [FBAN\/FB4A;FBAV\/22.0.0.15.13;]", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; en-US; HTC One X Build\/JRO03C) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 UCBrowser\/10.0.1.512 U3\/0.8.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.4; HTC One Build\/KTU84P.H1) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/33.0.0.0 Mobile Safari\/537.36 [FBAN\/FB4A;FBAV\/22.0.0.15.13;]", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One mini Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/30.0.0.0 Mobile Safari\/537.36 [FBAN\/FB4A;FBAV\/22.0.0.15.13;]", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One SV Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/39.0.2171.59 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.4; HTC One_M8 Build\/KTU84P) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/39.0.2171.93 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.3; HTC One Build\/KTU84L) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/39.0.2171.93 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.3; HTC One Build\/KTU84L) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/33.0.0.0 Mobile Safari\/537.36 [FBAN\/FB4A;FBAV\/22.0.0.15.13;]", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One_M8 Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/30.0.0.0 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; zh-tw; HTC One X+ Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.4; HTC One_M8 Build\/KTU84P) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/33.0.0.0 Mobile Safari\/537.36 BingWeb\/5.2.0.20140710", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; HTC One Build\/JSS15J) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/39.0.2171.93 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; es-mx; HTC One S Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30 [FBAN\/FB4A;FBAV\/23.0.0.22.14;]", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One mini Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/30.0.0.0 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.4.3; es-es; HTC One 801e Build\/KTU84L) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One mini Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/39.0.2171.93 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One X+ Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/39.0.2171.93 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One_M8 Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/40.0.2214.69 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; ru-ru; HTC One S Build\/JRO03C) AppleWebKit\/537.16 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/537.16", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.3; HTC One Build\/KTU84L) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/33.0.0.0 Mobile Safari\/537.36 [FB_IAB\/FB4A;FBAV\/24.0.0.30.15;]", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.4.2; en-th; HTC One Build\/KOT49H) AppleWebKit\/537.16 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/537.16", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; es-ar; HTC One X Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30 [FB_IAB\/FB4A;FBAV\/24.0.0.30.15;]", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One_M8 Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/30.0.0.0 Mobile Safari\/537.36 [FB_IAB\/FB4A;FBAV\/24.0.0.30.15;]", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/39.0.2171.93 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; es-us; HTC One X+ Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30 [FB_IAB\/FB4A;FBAV\/24.0.0.30.15;]", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; es-mx; HTC One S Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30 [FB_IAB\/FB4A;FBAV\/24.0.0.30.15;]", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/30.0.0.0 Mobile Safari\/537.36 [FB_IAB\/FB4A;FBAV\/24.0.0.30.15;]", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.136 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.3; HTC One Build\/KTU84L) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/40.0.2214.89 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One dual sim Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/40.0.2214.89 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/30.0.0.0 Mobile Safari\/537.36 [FB_IAB\/FB4A;FBAV\/25.0.0.19.30;]", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 5.0.1; HTC One_M8 Build\/LRX22C) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/37.0.0.0 Mobile Safari\/537.36 [FB_IAB\/FB4A;FBAV\/25.0.0.19.30;]", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/40.0.2214.89 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.4; HTC One_M8 Build\/KTU84P) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/40.0.2214.109 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One X Build\/JDQ39) AppleWebKit\/537.31 (KHTML, like Gecko) Chrome\/26.0.1410.58 Mobile Safari\/537.31", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One mini Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/40.0.2214.109 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 5.0.1; HTC One_M8 Build\/LRX22C.H5) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/40.0.2214.109 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Huwaei", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.1-update1; bg-bg; Ideos S7 Build\/ERE27) AppleWebKit\/525.10+ (KHTML, like Gecko) Version\/3.0.4 Mobile Safari\/523.12.2", + "mobile": true, + "tablet": true + }, + { + "vendor": "Huwaei", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.1; en-us; Ideos S7 Build\/ERE27) AppleWebKit\/525.10+ (KHTML, like Gecko) Version\/3.0.4 Mobile Safari\/523.12.2", + "mobile": true, + "tablet": true + }, + { + "vendor": "Huwaei", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.6; lt-lt; U8660 Build\/HuaweiU8660) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Huwaei", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.7; ru-ru; HUAWEI-U8850 Build\/HuaweiU8850) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Huwaei", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 3.2; pl-pl; MediaPad Build\/HuaweiMediaPad) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13", + "mobile": true, + "tablet": true + }, + { + "vendor": "Huwaei", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 3.2; nl-nl; HUAWEI MediaPad Build\/HuaweiMediaPad) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13", + "mobile": true, + "tablet": true + }, + { + "vendor": "Huwaei", + "user_agent": "HUAWEI_T8951_TD\/1.0 Android\/4.0.4 (Linux; U; Android 4.0.4; zh-cn) Release\/05.31.2012 Browser\/WAP2.0 (AppleWebKit\/534.30) Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Huwaei", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; ar-eg; MediaPad 7 Youth Build\/HuaweiMediaPad) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Huwaei", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; zh-cn; HW-HUAWEI_C8815\/C8815V100R001C541B135; 540*960; CTC\/2.0) AppleWebKit\/534.30 (KHTML, like Gecko) Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Huwaei", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; zh-cn; HW-HUAWEI_C8813D\/C8813DV100R001C92B172; 480*854; CTC\/2.0) AppleWebKit\/534.30 (KHTML, like Gecko) Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Huwaei", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; zh-cn; HW-HUAWEI_Y300C\/Y300CV100R001C92B168; 480*800; CTC\/2.0) AppleWebKit\/534.30 (KHTML, like Gecko) Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Lava", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.6; en-us; Iris 349 Build\/MocorDroid2.3.5) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Lava", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-us; iris402+ Build\/iris402+) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Lava", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-us; IRIS402 Build\/LAVAIRIS402) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Lava", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; iris405 Build\/LAVAIRIS405) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "Lava", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; IRIS_501 Build\/LAVAIRIS501) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "Lava", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-us; iris402e Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Lava", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-us; iris503e Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Lava", + "user_agent": "UCWEB\/2.0 (Linux; U; Opera Mini\/7.1.32052\/30.3697; en-US; IRIS402) U2\/1.0.0 UCBrowser\/9.1.1.420 Mobile", + "mobile": true, + "tablet": false + }, + { + "vendor": "Lava", + "user_agent": "UCWEB\/2.0 (MIDP-2.0; U; Adr 4.2.2; en-US; IRIS402) U2\/1.0.0 UCBrowser\/9.1.1.420 U2\/1.0.0 Mobile", + "mobile": true, + "tablet": false + }, + { + "vendor": "Lava", + "user_agent": "UCWEB\/2.0 (Linux; U; Opera Mini\/7.1.32052\/30.3697; en-US; IRIS355) U2\/1.0.0 UCBrowser\/9.1.1.420 Mobile", + "mobile": true, + "tablet": false + }, + { + "vendor": "Lava", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-us; iris356 Build\/irisIRIS356) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 UCBrowser\/9.5.0.360 U3\/0.8.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Lava", + "user_agent": "UCWEB\/2.0 (Linux; U; Opera Mini\/7.1.32052\/30.3697; en-US; iris356) U2\/1.0.0 UCBrowser\/9.0.2.389 Mobile", + "mobile": true, + "tablet": false + }, + { + "vendor": "Lava", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; iris500 Build\/iris500) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/30.0.0.0 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Lava", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; iris700 Build\/iris700) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/30.0.0.0 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Lava", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; QPAD E704 Build\/JDQ39) AppleWebKit\/537.36 (KHTML like Gecko) Chrome\/36.0.1985.131 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lava", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2; xx-xx; IvoryS Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lava", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; en-US; E-TAB IVORY Build\/E702) AppleWebKit\/534.31 (KHTML, like Gecko) UCBrowser\/9.3.0.321 U3\/0.8.0 Mobile Safari\/534.31", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lava", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.4; tr-tr; E-TAB Build\/GRJ22) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": 0, + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-au; TBLT10Q-32GB Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; es-es; IdeaTab_A1107 Build\/MR1) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; IdeaTab A2107A-H Build\/IML74K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/27.0.1453.90 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-au; ThinkPad Tablet Build\/ThinkPadTablet_A400_03) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "UCWEB\/2.0 (Linux; U; Opera Mini\/7.1.32052\/30.3697; en-US; IdeaTabA1000-G) U2\/1.0.0 UCBrowser\/9.2.0.419 Mobile", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; IdeaTabA1000-F Build\/JZO54K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.1; Lenovo A3000-H Build\/JOP40D) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.117 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; IdeaTab A3000-F Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Safari\/537.360", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1; zh-cn; Lenovo-A3000-H\/S100) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.1 Mobile Safari\/534.300", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; es-us; IdeaTab A3000-F Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; IdeaTab A2107A-H Build\/IML74K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; de-de; IdeaTab A2107A-H Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; es-es; IdeaTabA2109A Build\/JRO03R) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; nl-nl; IdeaTabA2109A Build\/JRO03R) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; es-es; IdeaTab_A1107 Build\/MR1) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.300", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; IdeaTab S6000-H Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.138 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-gb; IdeaTab S6000-F Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; Lenovo B8000-F Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2;it-it; Lenovo B8000-F\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.2.2 Mobile Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; it-it; Lenovo B6000-F\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.2.2 Mobile Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; Lenovo B6000-F Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; IdeaPadA10 Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.166 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; Ideapad K1 Build\/JZO54K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.7; de-de; IdeaPad A1 Build\/GRK393; CyanogenMod-7) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; Lenovo B8080-H Build\/JLS36C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; hu-hu; Lenovo A3500-FL Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; de-de; Lenovo A7600-F Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; Lenovo A5500-F Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/36.0.1985.131 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Lenovo A390 Linux\/3.0.13 Android\/4.4.2 Release\/04.03.2013 Browser\/AppleWebKit534.30 Profile\/MIDP-2.0 Configuration\/CLDC-1.1 Mobile Safari\/534.30 Android 4.0.1;", + "mobile": true, + "tablet": false + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.6; en-us; LG-VS410PP Build\/GRK39F) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2; en-us; LG-P509 Build\/FRF91) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1 MMS\/LG-Android-MMS-V1.0\/1.2", + "mobile": true, + "tablet": false + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2.2; pt-br; LG-P350f Build\/FRG83G) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1 MMS\/LG-Android-MMS-V1.0\/1.2", + "mobile": true, + "tablet": false + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.3; en-us; LG-P500 Build\/GRI40) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1 MMS\/LG-Android-MMS-V1.0\/1.2", + "mobile": true, + "tablet": false + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.3; en-us; LS670 Build\/GRI40) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.4; ru-ru; LG-E510 Build\/GRJ22) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1 MMS\/LG-Android-MMS-V1.0\/1.2", + "mobile": true, + "tablet": false + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.4; en-us; VS910 4G Build\/GRJ22) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; nl-nl; LG-P700 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; ko-kr; LG-L160L Build\/IML74K) AppleWebkit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; LG-F160S Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; nl-nl; LG-E610v\/V10f Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; LG-E612 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; LG-F180K Build\/JZO54K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; LG-V500 Build\/JDQ39B) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/31.0.1650.59 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; LG-LW770 Build\/IMM76I) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; LG-V510 Build\/KOT49H.L004) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; LG; LG E-900)", + "mobile": true, + "tablet": false + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; LG; LG-C900)", + "mobile": true, + "tablet": false + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; LG; LG-C900k)", + "mobile": true, + "tablet": false + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; LG; LG-E900)", + "mobile": true, + "tablet": false + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; LG; LG-E900; Orange)", + "mobile": true, + "tablet": false + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; LG; LG-E900h)", + "mobile": true, + "tablet": false + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; LG; LG-Optimus 7)", + "mobile": true, + "tablet": false + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 3.0.1; ja-jp; L-06C Build\/HRI66) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13", + "mobile": true, + "tablet": true + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 3.0; en-us; LG-V900 Build\/HRI39) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13", + "mobile": true, + "tablet": true + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.4.2; en-gb; LG-V700 Build\/KOT49I.A1403851714) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/30.0.1599.103 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; LG-V500 Build\/KOT49I.V50020d) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/38.0.2125.102 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.4.2; en-us; LG-V410\/V41010d Build\/KOT49I.V41010d) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/30.0.1599.103 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Mi", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2; xx-xx; HM NOTE 1W Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 MobilSafari\/534.30 XiaoMi\/MiuiBrowser\/1.0", + "mobile": true, + "tablet": true + }, + { + "vendor": "Mi", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.1; zh-cn; MI-ONE Plus Build\/ITL41D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30 XiaoMi\/MiuiBrowser\/1.0", + "mobile": true, + "tablet": false + }, + { + "vendor": "Mi", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; zh-cn; MI 2SC Build\/JRO03L) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30 XiaoMi\/MiuiBrowser\/1.0", + "mobile": true, + "tablet": false + }, + { + "vendor": "Mi", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; zh-cn; MI 2S Build\/JRO03L) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30 XiaoMi\/MiuiBrowser\/1.0", + "mobile": true, + "tablet": false + }, + { + "vendor": "Mi", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; zh-tw; MI 1S Build\/JZO54K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30 XiaoMi\/MiuiBrowser\/1.0", + "mobile": true, + "tablet": false + }, + { + "vendor": "Mi", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.8; zh-cn; xiaomi2 Build\/GRK39F) AppleWebKit\/533.1 (KHTML, like Gecko)Version\/4.0 MQQBrowser\/4.4 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Mi", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; es-es; MI 2A Build\/miui.es JRO03L) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30 XiaoMi\/MiuiBrowser\/1.0", + "mobile": true, + "tablet": false + }, + { + "vendor": "Mi", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.1; zh-cn; MI 3 Build\/JOP40D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30 XiaoMi\/MiuiBrowser\/1.0", + "mobile": true, + "tablet": false + }, + { + "vendor": "Mi", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; en-us; MI 1S Build\/JZO54K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30 XiaoMi\/MiuiBrowser\/1.0", + "mobile": true, + "tablet": false + }, + { + "vendor": "Mi", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.3; zh-cn; MI 3W Build\/JLS36C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30 XiaoMi\/MiuiBrowser\/1.0", + "mobile": true, + "tablet": false + }, + { + "vendor": "Mi", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.3; zh-cn; HM 1SC Build\/JLS36C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30 XiaoMi\/MiuiBrowser\/1.0", + "mobile": true, + "tablet": false + }, + { + "vendor": "Mi", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.3; en-us; HM 1SW Build\/JLS36C) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/537.36 XiaoMi\/MiuiBrowser\/2.0.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Mi", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-us; HM NOTE 1W Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/537.36 XiaoMi\/MiuiBrowser\/2.0.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "Mi", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; en-us; MI-ONE C1 Build\/JZO54K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30 XiaoMi\/MiuiBrowser\/1.0", + "mobile": true, + "tablet": false + }, + { + "vendor": "Mi", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.4.4; en-us; MI 4W Build\/KTU84P) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/537.36 XiaoMi\/MiuiBrowser\/2.0.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Mi", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4; MI PAD Build\/KTU84P) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/33.0.0.0 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Microsoft", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident\/6.0; Touch; .NET4.0E; .NET4.0C; Tablet PC 2.0)", + "mobile": true, + "tablet": true, + "version": { + "IE": "10.0", + "Windows NT": "6.2", + "Trident": "6.0" + } + }, + { + "vendor": "Microsoft", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident\/6.0)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Microsoft", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident\/6.0; Touch)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Microsoft", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident\/6.0; Touch; ARMBJS)", + "mobile": true, + "tablet": true + }, + { + "vendor": "Microsoft", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident\/6.0; Touch; MASMJS)", + "mobile": false, + "tablet": false + }, + { + "vendor": "Microsoft", + "user_agent": "Mozilla\/5.0 (Windows NT 6.2; WOW64; rv:25.0) Gecko\/20130626 Firefox\/25.0", + "mobile": false, + "tablet": false + }, + { + "vendor": "Microsoft", + "user_agent": "Mozilla\/5.0 (Windows NT 6.2; WOW64; rv:22.0) Gecko\/20100101 Firefox\/22.0", + "mobile": false, + "tablet": false + }, + { + "vendor": "Microsoft", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident\/6.0; MDDCJS)", + "mobile": false, + "tablet": false + }, + { + "vendor": "Microsoft", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident\/6.0; MDDCJS)", + "mobile": false, + "tablet": false + }, + { + "vendor": "Microsoft", + "user_agent": "Mozilla\/5.0 (Windows NT 6.2; WOW64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.52 Safari\/537.36 OPR\/15.0.1147.130", + "mobile": false, + "tablet": false + }, + { + "vendor": "Microsoft", + "user_agent": "Mozilla\/5.0 (Windows NT 6.2; WOW64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/27.0.1453.116 Safari\/537.36", + "mobile": false, + "tablet": false + }, + { + "vendor": "Microsoft", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident\/6.0; Touch; MDDCJS; WebView\/1.0)", + "mobile": false, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "MOT-W510\/08.11.05R MIB\/BER2.2 Profile\/MIDP-2.0 Configuration\/CLDC-1.1 EGE\/1.0 UP.Link\/6.3.0.0.0", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2.2; zh-cn; ME722 Build\/MLS2GC_2.6.0) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.4; en-us; DROIDX Build\/4.5.1_57_DX8-51) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.5; en-us; MB855 Build\/4.5.1A-1_SUN-254_13) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.5; es-us; MB526 Build\/4.5.2-51_DFL-50) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.6; en-ca; MB860 Build\/4.5.2A-51_OLL-17.8) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.7; en-us; MOT-XT535 Build\/V1.540) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.7; ko-kr; A853 Build\/SHOLS_U2_05.26.3; CyanogenMod-7.1.2) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 3.0; en-us; Xoom Build\/HRI39) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13", + "mobile": true, + "tablet": true + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 3.1; en-us; Xoom Build\/HMJ25) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13", + "mobile": true, + "tablet": true + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; DROID RAZR 4G Build\/6.7.2-180_DHD-16_M4-31) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; Xoom Build\/IMM76L) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; pt-br; XT687 Build\/V2.27D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false, + "version": { + "Android": "4.0.4", + "Webkit": "534.30", + "Safari": "4.0" + }, + "model": "XT687" + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; es-es; MOT-XT910 Build\/6.7.2-180_SPU-19-TA-11.6) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; XT910 Build\/9.8.2O-124_SPUL-17) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; XT915 Build\/2_32A_2031) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.94 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; XT919 Build\/2_290_2017) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.64 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; XT925 Build\/9.8.2Q-50-XT925_VQLM-20) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/27.0.1453.90 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; XT907 Build\/9.8.1Q-66) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/27.0.1453.90 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; XT901 Build\/9.8.2Q-50_SLS-13) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; DROID BIONIC Build\/9.8.2O-72_VZW-22) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; XT1022 Build\/KXC20.82-14) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.4.4; en-in; XT1022 Build\/KXC21.5-40) AppleWebKit\/537.16 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/537.16", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; XT1025 Build\/KXC20.82-13) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; XT1052 Build\/KLA20.16-2.16.2) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-gb; XT1052 Build\/13.9.0Q2.X_83) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; XT1053 Build\/13.9.0Q2.X_61) AppleWebKit\/537.31 (KHTML, like Gecko) Chrome\/26.0.1410.58 Mobile Safari\/537.31", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-us; XT1053 Build\/13.9.0Q2.X_55) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; XT1056 Build\/13.9.0Q2.X-116-MX-17-6-2) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.64 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; XT1031 Build\/KXB20.9-1.10-1.18-1.1) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.4; XT1032 Build\/KXB21.14-L1.40) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.4.2; de-de; XT1032 Build\/KLB20.9-1.10-1.24-1.1) AppleWebKit\/537.16 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/537.16", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; XT1034 Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.3; en-us; XT1034 Build\/14.10.0Q3.X-84-16) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; XT1035 Build\/14.10.0Q3.X-23) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/29.0.1547.59 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.3; XT1039 Build\/KXB21.14-L1.31) AppleWebKit\/537.36 (KHTML like Gecko) Chrome\/35.0.1916.141 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; en-us; XT919 Build\/2_290_2002) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; XT919 Build\/2_290_2004) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/27.0.1453.90 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; en-us; XT920 Build\/2_290_2014) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; XT920 Build\/2_310_2014) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.4; XT905 Build\/7.7.1Q_GCIRD-16) AppleWebKit\/537.22 (KHTML, like Gecko) Chrome\/25.0.1364.169 Mobile Safari\/537.22", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; XT908 Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/30.0.0.0 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; XT897 Build\/7.7.1Q-6_SPR-ASANTI_LE-18) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; Android 5.0.2; XT1032 Build\/LXB22.46-28.1) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/43.0.2357.92 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; Android 5.1.1; Moto E Build\/LMY47V) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/39.0.0.0 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.4; XT1021 Build\/KTU84Q) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/33.0.0.0 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Nokia200\/2.0 (12.04) Profile\/MIDP-2.1 Configuration\/CLDC-1.1 UCWEB\/2.0 (Java; U; MIDP-2.0; en-US; nokia200) U2\/1.0.0 UCBrowser\/8.9.0.251 U2\/1.0.0 Mobile UNTRUSTED\/1.0", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Nokia6303iclassic\/5.0 (06.61) Profile\/MIDP-2.1 Configuration\/CLDC-1.1 Mozilla\/5.0 AppleWebKit\/420+ (KHTML, like Gecko) Safari\/420+", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "nokian73-1\/UC Browser7.8.0.95\/69\/400 UNTRUSTED\/1.0", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Nokia2760\/2.0 (06.82) Profile\/MIDP-2.1 Configuration\/CLDC-1.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Nokia3650\/1.0 SymbianOS\/6.1 Series60\/1.2 Profile\/MIDP-1.0 Configuration\/CLDC-1.0", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "NokiaN70-1\/5.0737.3.0.1 Series60\/2.8 Profile\/MIDP-2.0 Configuration\/CLDC-1.1\/UC Browser7.8.0.95\/27\/352", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (S60V3; U; ru; NokiaN73) AppleWebKit\/530.13 (KHTML, like Gecko) UCBrowser\/8.6.0.199\/28\/444\/UCWEB Mobile", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (S60V3; U; ru; NokiaC5-00.2)\/UC Browser8.5.0.183\/28\/444\/UCWEB Mobile", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (S60V3; U; ru; NokiaC5-00.2) AppleWebKit\/530.13 (KHTML, like Gecko) UCBrowser\/8.7.0.218\/28\/352\/UCWEB Mobile", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (Series40; NokiaC3-00\/08.63; Profile\/MIDP-2.1 Configuration\/CLDC-1.1) Gecko\/20100401 S40OviBrowser\/2.2.0.0.33", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Opera\/9.80 (Series 60; Opera Mini\/7.0.31380\/28.2725; U; es) Presto\/2.8.119 Version\/11.10", + "mobile": true, + "tablet": false, + "version": { + "Opera Mini": "7.0.31380", + "Presto": "2.8.119" + } + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (Symbian\/3; Series60\/5.2 NokiaC7-00\/025.007; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.3.1.37 Mobile Safari\/533.4 3gpp-gba", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (Symbian\/3; Series60\/5.2 NokiaX7-00\/022.014; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.3.1.37 Mobile Safari\/533.4 3gpp-gba", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (Symbian\/3; Series60\/5.3 NokiaE6-00\/111.140.0058; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/535.1 (KHTML, like Gecko) NokiaBrowser\/8.3.1.4 Mobile Safari\/535.1 3gpp-gba", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (Symbian\/3; Series60\/5.3 NokiaC6-01\/111.040.1511; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/535.1 (KHTML, like Gecko) NokiaBrowser\/8.3.1.4 Mobile Safari\/535.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (Symbian\/3; Series60\/5.3 NokiaC6-01; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.4.2.6 Mobile Safari\/533.4 3gpp-gba", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (Symbian\/3; Series60\/5.3 Nokia700\/111.030.0609; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.4.2.6 Mobile Safari\/533.4 3gpp-gba", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (Symbian\/3; Series60\/5.3 Nokia700\/111.020.0308; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.4.1.14 Mobile Safari\/533.4 3gpp-gba", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (Symbian\/3; Series60\/5.3 NokiaN8-00\/111.040.1511; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/535.1 (KHTML, like Gecko) NokiaBrowser\/8.3.1.4 Mobile Safari\/535.1 3gpp-gba", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (Symbian\/3; Series60\/5.3 Nokia701\/111.030.0609; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.4.2.6 Mobile Safari\/533.4 3gpp-gba", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.2; U; Series60\/3.1 Nokia6120c\/3.83; Profile\/MIDP-2.0 Configuration\/CLDC-1.1 ) AppleWebKit\/413 (KHTML, like Gecko) Safari\/413", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.2; U; Series60\/3.1 Nokia6120ci\/7.02; Profile\/MIDP-2.0 Configuration\/CLDC-1.1 ) AppleWebKit\/413 (KHTML, like Gecko) Safari\/413", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.2; U; Series60\/3.1 Nokia6120c\/7.10; Profile\/MIDP-2.0 Configuration\/CLDC-1.1 ) AppleWebKit\/413 (KHTML, like Gecko) Safari\/413", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.2; U; Series60\/3.1 NokiaE66-1\/510.21.009; Profile\/MIDP-2.0 Configuration\/CLDC-1.1 ) AppleWebKit\/413 (KHTML, like Gecko) Safari\/413", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.2; U; Series60\/3.1 NokiaE71-1\/110.07.127; Profile\/MIDP-2.0 Configuration\/CLDC-1.1 ) AppleWebKit\/413 (KHTML, like Gecko) Safari\/413", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.2; U; Series60\/3.1 NokiaN95-3\/20.2.011 Profile\/MIDP-2.0 Configuration\/CLDC-1.1 ) AppleWebKit\/413 (KHTML, like Gecko) Safari\/413", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.2; U; Series60\/3.1 NokiaE51-1\/200.34.36; Profile\/MIDP-2.0 Configuration\/CLDC-1.1 ) AppleWebKit\/413 (KHTML, like Gecko) Safari\/413", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.2; U; Series60\/3.1 NokiaE63-1\/500.21.009; Profile\/MIDP-2.0 Configuration\/CLDC-1.1 ) AppleWebKit\/413 (KHTML, like Gecko) Safari\/413", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.2; U; Series60\/3.1 NokiaN82\/10.0.046; Profile\/MIDP-2.0 Configuration\/CLDC-1.1 ) AppleWebKit\/413 (KHTML, like Gecko) Safari\/413", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.3; Series60\/3.2 NokiaE52-1\/052.003; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/525 (KHTML, like Gecko) Version\/3.0 BrowserNG\/7.2.6.2", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.3; Series60\/3.2 NokiaE52-1\/@version@; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.3.1.26 Mobile Safari\/533.4 3gpp-gba", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.3; Series60\/3.2 NokiaC5-00\/031.022; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/525 (KHTML, like Gecko) Version\/3.0 BrowserNG\/7.2.3.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.3; Series60\/3.2 NokiaC5-00.2\/081.003; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.3.1.32 Mobile Safari\/533.4 3gpp-gba", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.3; U; Series60\/3.2 NokiaN79-1\/32.001; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/413 (KHTML, like Gecko) Safari\/413", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.3; U; Series60\/3.2 Nokia6220c-1\/06.101; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/413 (KHTML, like Gecko) Safari\/413", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.3; Series60\/3.2 NokiaC5-00.2\/071.003; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.3.1.26 Mobile Safari\/533.4 3gpp-gba", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.3; Series60\/3.2 NokiaE72-1\/081.003; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.3.1.32 Mobile Safari\/533.4 3gpp-gba", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.3; Series60\/3.2 NokiaC5-00\/061.005; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/525 (KHTML, like Gecko) Version\/3.0 BrowserNG\/7.2.6.2 3gpp-gba", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.4; Series60\/5.0 NokiaX6-00\/40.0.002; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.3.1.33 Mobile Safari\/533.4 3gpp-gb", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.4; Series60\/5.0 Nokia5800d-1\/60.0.003; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.3.1.33 Mobile Safari\/533.4 3gpp-gba", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.4; Series60\/5.0 NokiaC5-03\/12.0.023; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/525 (KHTML, like Gecko) Version\/3.0 BrowserNG\/7.2.6.9 3gpp-gba", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.4; Series60\/5.0 Nokia5228\/40.1.003; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/525 (KHTML, like Gecko) Version\/3.0 BrowserNG\/7.2.7.4 3gpp-gba", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.4; Series60\/5.0 Nokia5230\/51.0.002; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.3.1.33 Mobile Safari\/533.4 3gpp-gba", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.4; Series60\/5.0 Nokia5530c-2\/32.0.007; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/525 (KHTML, like Gecko) Version\/3.0 BrowserNG\/7.2.6.9 3gpp-gba", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.4; Series60\/5.0 NokiaN97-1\/21.0.045; Profile\/MIDP-2.1 Configuration\/CLDC-1.1) AppleWebKit\/525 (KHTML, like Gecko) BrowserNG\/7.1.4", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.4; Series60\/5.0 NokiaN97-4\/30.0.004; Profile\/MIDP-2.1 Configuration\/CLDC-1.1) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.3.1.28 3gpp-gba", + "mobile": true, + "tablet": false, + "version": { + "Symbian": "9.4", + "Webkit": "533.4", + "NokiaBrowser": "7.3.1.28" + }, + "model": "NokiaN97-4" + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Nokia; 7 Mozart T8698)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; 710)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Nokia; 800)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Nokia; 800C)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Nokia; 800C; Orange)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Nokia; 900)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Nokia; HD7 T9292)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; LG E-900)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Lumia 610)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Lumia 710)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Lumia 710; Orange)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Lumia 710; T-Mobile)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Lumia 710; Vodafone)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Lumia 800)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Lumia 800) UP.Link\/5.1.2.6", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Lumia 800; Orange)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Lumia 800; SFR)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Lumia 800; T-Mobile)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Lumia 800; vodafone)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Nokia; Lumia 800c)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Lumia 900)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Nokia; Lumia 920)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident\/6.0; IEMobile\/10.0; ARM; Touch; NOKIA; Lumia 920)", + "mobile": true, + "tablet": false, + "version": { + "IE": "10.0", + "Windows Phone OS": "8.0", + "Trident": "6.0" + }, + "model": "Lumia 920" + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Nokia; lumia800)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Nokia 610)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Nokia 710)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Nokia 800)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Nokia 800C)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Nokia 900)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Nokia; Nokia)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Nokia; SGH-i917)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Nokia; TITAN X310e)", + "mobile": true, + "tablet": false, + "version": { + "Windows Phone OS": "7.5", + "Trident": "5.0" + }, + "model": "TITAN X310e" + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident\/7.0; Touch; rv:11.0; IEMobile\/11.0; NOKIA; Lumia 520) like iPhone OS 7_0_3 Mac OS X AppleWebKit\/537 (KHTML, like Gecko) Mobile Safari\/537", + "mobile": true, + "tablet": false + }, + { + "vendor": "Onda", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; V975i Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/42.0.2311.108 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Onda", + "user_agent": "Mozilla\/5.0 (Android; Tablet; rv:37.0) Gecko\/37.0 Firefox\/37.0", + "mobile": true, + "tablet": true + }, + { + "vendor": "Onda", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; V975m Core4 Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Onda", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.3; fr-fr; V975m Core4 Build\/JSS15J) AppleWebKit\/537.16 (KHTML, like Gecko) Version\/4.0 Safari\/537.16", + "mobile": true, + "tablet": true + }, + { + "vendor": "Onda", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; V975m Core4 Build\/JSS15J) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/41.0.2272.96 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Onda", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; V812 Core4 Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/39.0.2171.93 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "AdvanDigital", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-us; E1C Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "AdvanDigital", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; id-id; T3C Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Ainol", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.4; en-us; Ainol Novo8 Advanced Build\/GRJ22) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "Ainol", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; Novo10 Hero Build\/20121115) AppleWebKit\/535.19 (KHTML like Gecko) Chrome\/18.0.1025.166 Safari\/535.19", + "mobile": true, + "tablet": true + }, + { + "vendor": "Ainol", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; es-es; novo9-Spark Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "AllFine", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; en-gb; FINE7 GENIUS Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Amoi", + "user_agent": "Amoi 8512\/R18.0 NF-Browser\/3.3", + "mobile": true, + "tablet": false, + "model": "8512" + }, + { + "vendor": "Arnova", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; fr-fr; AN9G2I Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "AudioSonic", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; en-au; T-17B Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Blaupunkt", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; de-de; Endeavour 800NG Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Broncho", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2; es-es; Broncho N701 Build\/FRF91) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "bq", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; es-es; bq Livingstone 2 Build\/1.1.7 20121018-10:33) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "bq", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; es-es; bq Edison Build\/1.1.10-1015 20121230-18:00) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "bq", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; Maxwell Lite Build\/v1.0.0.ICS.maxwell.20120920) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19", + "mobile": true, + "tablet": true + }, + { + "vendor": "bq", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; zh-tw; bq Maxwell Plus Build\/1.0.0 20120913-10:39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "bq", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; Aquaris E10 Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/39.0.2171.93 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Captiva", + "user_agent": "Opera\/9.80 (X11; Linux zvav; U; de) Presto\/2.8.119 Version\/11.10 Mozilla\/5.0 (Linux; U; Android 4.1.1; de-de; CAPTIVA PAD 10.1 Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Casio", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.3; en-us; C771 Build\/C771M120) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "ChangJia", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; pt-br; TPC97113 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "ChangJia", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; TPC7102 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Celkon", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; en-us; Celkon CT 910+ Build\/JZO54K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Celkon", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-in; CT-1 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Celkon", + "user_agent": "CELKON.C64\/R2AE SEMC-Browser\/4.0.3 Profile\/MIDP-2.0 Configuration\/CLDC-1.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Celkon", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-us; Celkon A125 Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Celkon", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.6; en-US; Celkon*A86 Build\/Celkon_A86) AppleWebKit\/528.5+ (KHTML, like Gecko) Version\/3.1.2 Mobile Safari\/525.20.1 UCBrowser\/8.7.0.315 Mobile", + "mobile": true, + "tablet": false + }, + { + "vendor": "Celkon", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-us; Celkon A.R 40 Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Coby", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2; en-us; MID7010 Build\/FRF85B) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "Coby", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; MID7048 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Coby", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; MID8042 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Concorde", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; hu-hu; ConCorde Tab T10 Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Concorde", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; hu-hu; ConCorde tab PLAY Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Cresta", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; nl-nl; CRESTA.CTP888 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Cube", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; ru-ru; CUBE U9GT 2 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Danew", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; es-es; Dslide 700 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.0.3", + "Build": "IML74K", + "Webkit": "534.30", + "Safari": "4.0" + }, + "model": "Dslide 700" + }, + { + "vendor": "DanyTech", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; Genius Tab Q4 Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/31.0.1650.59 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Digma", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; ru-ru; iDx10 3G Build\/ICS.b02ref.20120331) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "DPS", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; en-us; DPS Dream 9 Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "ECS", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; it-it; TM105A Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.0.4", + "Build": "IMM76D", + "Webkit": "534.30" + } + }, + { + "vendor": "Eboda", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; ro-ro; E-Boda Supreme Dual Core X190 Build\/JRO03C) AppleWebKit\/534.30 (KHTML like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.1.1", + "Webkit": "534.30", + "Safari": "4.0" + } + }, + { + "vendor": "Eboda", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; ro-ro; E-Boda Essential A160 Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Eboda", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; E-Boda Supreme X80 Dual Core Build\/ICS.g12refM806A1YBD.20120925) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19", + "mobile": true, + "tablet": true + }, + { + "vendor": "Eboda", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; ro-ro; E-boda essential smile Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Eboda", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; ro-ro; E-Boda Supreme X80 Dual Core Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Eboda", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; ro-ro; E-Boda Supreme XL200IPS Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Evolio", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-us; Evolio X7 Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Evolio", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; ro-ro; ARIA_Mini_wifi Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Fly", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; ru-ru; Fly IQ440; Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Fly", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.6; ru-ru; FLY IQ256 Build\/GRK39F) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Fujitsu", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; ja-jp; F-10D Build\/V21R48A) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.0.3", + "Build": "V21R48A", + "Webkit": "534.30", + "Safari": "4.0" + } + }, + { + "vendor": "Fujitsu", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; ru-ru; M532 Build\/IML74K) AppleWebKit\/534.30 (KHTML like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.0.3", + "Build": "IML74K", + "Webkit": "534.30", + "Safari": "4.0" + } + }, + { + "vendor": "FX2", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; de-de; FX2 PAD7 RK Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Galapad", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; zh-tw; G1 Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.1.1", + "Webkit": "534.30", + "Safari": "4.0", + "Build": "JRO03C" + } + }, + { + "vendor": "GoClever", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; el-gr; GOCLEVER TAB A103 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "GoClever", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.4; zh-tw; A7GOCLEVER Build\/GRJ22) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "GoClever", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.4; GOCLEVER TAB A104 Build\/IMM76D) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19", + "mobile": true, + "tablet": true + }, + { + "vendor": "GoClever", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; cs-cz; GOCLEVER TAB A93.2 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "GoClever", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; sk-sk; GOCLEVER TAB A971 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "GoClever", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; lv-lv; GOCLEVER TAB A972BK Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "GoClever", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; fr-fr; GOCLEVER TAB A104.2 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "GoClever", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; pt-pt; GOCLEVER TAB T76 Build\/MID) AppleWebKit\/534.30 (KHTML like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "GU", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; vi-vn; TX-A1301 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.0.4", + "Build": "IMM76D", + "Webkit": "534.30", + "Safari": "4.0" + } + }, + { + "vendor": "GU", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; da-dk; Q702 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.0.3", + "Build": "IML74K", + "Webkit": "534.30", + "Safari": "4.0" + } + }, + { + "vendor": "HCL", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; U1 Build\/HCL ME Tablet U1) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "HCL", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; U1 Build\/HCL ME Tablet U1) AppleWebKit\/534.30 (KHTML like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "HCL", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; Connect-3G-2.0 Build\/HCL) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/29.0.1547.72 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "HCL", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.3; pt-br; X1 Build\/HCL ME Tablet X1) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "Hudl", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; Hudl HT7S3 Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/30.0.1599.82 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Iconbit", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; NT-3702M Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/29.0.1547.72 Safari\/537.36 OPR\/16.0.1212.65583", + "mobile": true, + "tablet": true + }, + { + "vendor": "Iconbit", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; ru-ru; NetTAB SPACE II Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "iJoy", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; fr-fr; Tablet Planet II-v3 Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Intenso", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1.;de-de; INM8002KP Build\/JR003H) AppleWebKit\/534.30 (KHTML, like Gecko)Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.1.1.", + "Webkit": "534.30", + "Safari": "4.0" + } + }, + { + "vendor": "Intenso", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; de-de; TAB1004 Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "INQ", + "user_agent": "INQ1\/R3.9.12 NF-Browser\/3.5", + "mobile": true, + "tablet": false, + "model": "INQ1" + }, + { + "vendor": "Intex", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3; en-US; Cloud_X2 Build\/MocorDroid4.0.1) AppleWebKit\/528.5+ (KHTML, like Gecko) Version\/3.1.2 Mobile Safari\/525.20.1 UCBrowser\/9.2.0.419 Mobile", + "mobile": true, + "tablet": false + }, + { + "vendor": "Intex", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-us; Cloud Y2 Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Intex", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-in; Cloud X5 Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "IRU", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; ru-ru; M702pro Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "JXD", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; F3000 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Karbonn", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; ST10 Build\/JRO03C) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19", + "mobile": true, + "tablet": true + }, + { + "vendor": "Kobo", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.0; en-us;) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1 (Kobo Touch)", + "mobile": true, + "tablet": true, + "version": { + "Android": "2.0", + "Webkit": "533.1", + "Safari": "4.0" + } + }, + { + "vendor": "Megafon", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.5; ru-ru; MegaFon V9 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "Megafon", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; MT7A Build\/JRO03C) AppleWebKit\/537.31 (KHTML, like Gecko) Chrome\/26.0.1410.58 Safari\/537.31", + "mobile": true, + "tablet": true + }, + { + "vendor": "MediaTek", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; fr-fr; MT8377 Build\/JRO03C) AppleWebKit\/534.30 (KHTML like Gecko) Version\/4.0 Safari\/534.30\/4.05d.1002.m7", + "mobile": true, + "tablet": true + }, + { + "vendor": "Micromax", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; Micromax A110 Build\/JRO03C) AppleWebKit\/537.22 (KHTML, like Gecko) Chrome\/25.0.1364.169 Mobile Safari\/537.22", + "mobile": true, + "tablet": false, + "version": { + "Android": "4.1.1", + "Build": "JRO03C", + "Webkit": "537.22", + "Chrome": "25.0.1364.169" + } + }, + { + "vendor": "Micromax", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0; xx-xx; Micromax P250(Funbook) Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Webkit": "534.30", + "Android": "4.0", + "Build": "IMM76D", + "Safari": "4.0" + } + }, + { + "vendor": "Modecom", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; pl-pl; FreeTAB 1014 IPS X4+ Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "MSI", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.5; el-gr; MSI Enjoy 10 Plus Build\/1.2) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "Nabi", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2.1; en-us; NABI-A Build\/MASTER) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "NEC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; ja-jp; N-08D Build\/A5001911) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "NEC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android AAA; BBB; N-06D Build\/CCC) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "Nexo", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; pl-pl; NEXO 3G Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30 ACHEETAHI\/2100050074", + "mobile": true, + "tablet": true + }, + { + "vendor": "Nibiru", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; zh-tw; Nibiru H1 Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30 XiaoMi\/MiuiBrowser\/1.0", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nook", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2.1; en-us; NOOK BNRV200 Build\/ERD79 1.4.3) Apple WebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true, + "version": { + "Android": "2.2.1", + "Webkit": "533.1", + "Safari": "4.0" + } + }, + { + "vendor": "Nook", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; NOOK BNTV400 Build\/ICS) AppleWebKit\/534.30 (KHTML like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.0.4", + "Build": "ICS", + "Webkit": "534.30", + "Safari": "4.0" + } + }, + { + "vendor": "Nook", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.4; BNTV600 Build\/IMM76L) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.94 Safari\/537.36 Hughes-PFB\/CID5391275.AID1376709964", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.0.4", + "Build": "IMM76L", + "Webkit": "537.36", + "Chrome": "28.0.1500.94" + } + }, + { + "vendor": "Oneplus", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; A0001 Build\/JLS36C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Oneplus", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.3; xx-xx; A0001 Build\/JLS36C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Odys", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; de-de; LOOX Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Odys", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; de-de; LOOX Plus Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Odys", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.X; de-de; XENO10 Build\/ODYS XENO 10) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Odys", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2.2; de-de; ODYS Space Build\/I700T_P7_T04_TSCL_FT_R_0_03_1010_110623) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "Odys", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; de-de; ODYS-EVO Build\/ODYS-EVO) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Odys", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.X; de-de; Xelio 10 Pro Build\/ODYS_Xelio) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Odys", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; de-de; NEO_QUAD10 Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Odys", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.X; de-de; Xelio10Pro Build\/ODYS_Xelio) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Odys", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.1; en-us; ODYS-Xpress Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "Odys", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; de-de; XELIO7PHONETAB Build\/IMM76I) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Odys", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; de-de; XELIO10EXTREME Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Odys", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; de-de; XELIO Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30 Mobile UCBrowser\/3.2.1.441", + "mobile": true, + "tablet": true + }, + { + "vendor": "Odys", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; de-de; XELIOPT2 Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Odys", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; nl-nl; ODYS-NOON Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "OverMax", + "user_agent": "OV-SteelCore(B) Mozilla\/5.0 (iPad; CPU OS 5_0_1 like Mac OS X) AppleWebKit\/534.46 (KHTML, like Gecko) Version\/5.1 Mobile\/9A405 Safari\/7534.48.3", + "mobile": true, + "tablet": true + }, + { + "vendor": "OverMax", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; pl-pl; OV-SteelCore Build\/ICS.g08refem611.20121010) AppleWebKit\/534.30 (KHTML like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "YONESTablet", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; pl-pl; BC1077 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Pantech", + "user_agent": "PANTECH-C790\/JAUS08312009 Browser\/Obigo\/Q05A Profile\/MIDP-2.0 Configuration\/CLDC-1.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Pantech", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2.1; ko-kr; SKY IM-A600S Build\/FRG83) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Pantech", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.3; en-us; ADR8995 4G Build\/GRI40) AppleWebKit\/533.1 (KHTML like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Pantech", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 3.2.1; en-us; PantechP4100 Build\/HTK75) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13", + "mobile": true, + "tablet": true + }, + { + "vendor": "Philips", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.4; Philips W336 Build\/IMM76D) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.45 Mobile Safari\/537.36 OPR\/15.0.1162.59192", + "mobile": true, + "tablet": false + }, + { + "vendor": "Philips", + "user_agent": "Philips_T3500\/V1 Linux\/3.4.5 Android\/4.2.2 Release\/03.26.2013 Browser\/AppleWebKit534.30 Mobile Safari\/534.30 MBBMS\/2.2 System\/Android 4.2.2;", + "mobile": true, + "tablet": false + }, + { + "vendor": "Philips", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; Philips W3568 Build\/Philips_W3568) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "Philips", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; ru-ru; Philips W832 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Philips", + "user_agent": "Mozilla\/5.0 (Linux;U;Android 4.2.2;es-us;Philips S388 Build\/JDQ39) AppleWebkit\/534.30 (HTML,like Gecko) Version\/4.0 Mobile Safari\/534.30;", + "mobile": true, + "tablet": false + }, + { + "vendor": "Philips", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.4; Philips W536 Build\/IMM76D) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "Philips", + "user_agent": "Mozilla\/5.0 (Linux;U;Android 4.2.2;es-us;Philips S308 Build\/JDQ39) AppleWebkit\/534.30 (HTML,like Gecko) Version\/4.0 Mobile Safari\/534.30;", + "mobile": true, + "tablet": false + }, + { + "vendor": "Philips", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; ru-ru; Philips-W8500 Build\/JZO54K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Philips", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; ru; Philips W8510 Build\/JDQ39) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 UCBrowser\/9.8.9.457 U3\/0.8.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Philips", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; ru-RU; Philips W3568 Build\/Philips W3568) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.1 Mobile Safari\/534.30;", + "mobile": true, + "tablet": false + }, + { + "vendor": "Philips", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; Philips S388 Build\/JDQ39) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "Philips", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; Build\/PI3100.00.00.24) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Philips", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; W732 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Philips", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.1; PI7100_93 Build\/PI7100.C.00.00.11) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/30.0.1599.92 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "PocketBook", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.7; en-ru; PocketBook A10 3G Build\/GRJ90) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "PointOfView", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; en-us; POV_TAB-PROTAB30-IPS10 Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Praktica", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.4; TP750 3GGSM Build\/IMM76I) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/39.0.2171.93 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "PROSCAN", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; en-us; PLT8088 Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.1.1", + "Build": "JRO03H", + "Webkit": "534.30", + "Safari": "4.0" + } + }, + { + "vendor": "PyleAudio", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.4; PTBL92BC Build\/IMM76D) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/31.0.1650.59 Mobile Safari\/537.36", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.0.4", + "Build": "IMM76D", + "Webkit": "537.36", + "Chrome": "31.0.1650.59" + } + }, + { + "vendor": "RockChip", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2.1; hu-hu; RK2818, Build\/MASTER) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "RockChip", + "user_agent": "Mozilla\/5.0 (Linux; U; Android Android 2.1-RK2818-1.0.0; zh-cn; MD701 Build\/ECLAIR) AppleWebKit\/530.17 (KHTML like Gecko) Version\/4.0 Mobile Safari\/530.17", + "mobile": true, + "tablet": true + }, + { + "vendor": "RossMoor", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.1; ru-ru; RM-790 Build\/JOP40D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "QMobile", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.6; en-us; A2 Build\/GRK39F) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "simvalley", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.4; de-de; SP-80 Build\/GRJ22) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Skk", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1; en-us; CYCLOPS Build\/F10) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Storex", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; eZee_Tab903 Build\/JRO03H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Safari\/537.36", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.1.1", + "Build": "JRO03H", + "Webkit": "537.36" + } + }, + { + "vendor": "Storex", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; eZee'Tab785 Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/31.0.1650.59 Safari\/537.36", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.1.1", + "Build": "JRO03C", + "Webkit": "537.36" + } + }, + { + "vendor": "Storex", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; eZee'Tab971 Build\/IML74K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.0.3", + "Build": "IML74K", + "Webkit": "535.19" + } + }, + { + "vendor": "Teclast", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; P98 3G\\xE5\\x85\\xAB\\xE6\\xA0\\xB8(A3HY) Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/30.0.0.0 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Teclast", + "user_agent": "QQ\\xe9\\x9f\\xb3\\xe4\\xb9\\x90HD 4.0.1 (iPad; iPhone OS 8.0; zh_CN)", + "mobile": true, + "tablet": true + }, + { + "vendor": "Teclast", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0; xx-xx; A15(E6C2) Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Teclast", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3; xx-xx; A10 Build\/GRJ22) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "Teclast", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; Teclast A10T Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Teclast", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; zh-cn; Teclast P85(A9D3) Build\/IMM76D) AppleWebKit\/534.30 (KHTML like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Teclast", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-us; A70H Build\/JDQ39) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 UCBrowser\/9.8.0.435 U3\/0.8.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "Tecno", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-us; TECNO P9 Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Telstra", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.7; en-au; T-Hub2 Build\/TVA301TELBG3) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "texet", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.4; ru-ru; TM-7021 Build\/GB.m1ref.20120116) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true, + "version": { + "Android": "2.3.4", + "Webkit": "533.1", + "Safari": "4.0" + }, + "model": "TM-7021" + }, + { + "vendor": "Tolino", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; de-de; tolino tab 7 Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.2.2", + "Build": "JDQ39", + "Webkit": "534.30", + "Safari": "4.0" + } + }, + { + "vendor": "Tolino", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; de-de; tolino tab 8.9 Build\/JDQ39) AppleWebKit\/534.30 (KHTML like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.2.2", + "Build": "JDQ39", + "Webkit": "534.30", + "Safari": "4.0" + } + }, + { + "vendor": "Tolino", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; tolino tab 7 Build\/JDQ39) AppleWebkit\/537.36 (KHTML, like Gecko) Chrome\/31.0.1650.57 Safari\/537.36 OPR\/18.0.1290.67495", + "mobile": true, + "tablet": true + }, + { + "vendor": "Tolino", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; de-de; tolino tab 7 Build\/JDQ39) AppleWebkit\/537.36 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Toshiba", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; TOSHIBA; TSUNAGI)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Toshiba", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2; it-it; TOSHIBA_FOLIO_AND_A Build\/TOSHIBA_FOLIO_AND_A) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true, + "version": { + "Android": "2.2", + "Webkit": "533.1", + "Safari": "4.0" + } + }, + { + "vendor": "Trekstor", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; ST70408-1 Build\/JDQ39) AppleWebKit\/537.31 (KHTML, like Gecko) Chrome\/26.0.1410.58 Safari\/537.31", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.2.2", + "Build": "JDQ39", + "Webkit": "537.31", + "Chrome": "26.0.1410.58" + } + }, + { + "vendor": "Trekstor", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; engb; Build\/IMM76D) AppleWebKit\/534.46 (KHTML, like Gecko) Version\/5.1 Mobile\/9A405 Safari\/7534.48.3 SurfTab_7.0", + "mobile": true, + "tablet": true + }, + { + "vendor": "Trekstor", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; VT10416-2 Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Trekstor", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; de-de; ST10216-2A Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30;SurfTab_10.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "Ubislate", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; UBISLATE7C+ Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Visture", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-gb; V97 HD Build\/LR-97JC) Apple WebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Visture", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; en-us; Visture V4 Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Visture", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; ru-ru; Visture V4 HD Build\/Visture V4 HD) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Visture", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; es-es; Visture V5 HD Build\/Visture V5 HD) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Visture", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; ru-ru; Visture V10 Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Versus", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.4; VS-TOUCHPAD 9 Build\/IMM76D) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": true + }, + { + "vendor": "Versus", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-gb; Versus Touchpad 9.7 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Versus", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-gb; CnM-TOUCHPAD7 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30 BMID\/E67A45B1AB", + "mobile": true, + "tablet": true + }, + { + "vendor": "Versus", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; en-gb; CnM TouchPad 7DC Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30 TwonkyBeamBrowser\/3.3.5-95 (Android 4.1.1; rockchip CnM TouchPad 7DC Build\/meizhi_V2.80.wifi8723.20121225.b11c800)", + "mobile": true, + "tablet": true + }, + { + "vendor": "Versus", + "user_agent": "OneBrowser\/3.5\/Mozilla\/5.0 (Linux; U; Android 4.0.4; en-gb; TOUCHPAD 7 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Versus", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; en-gb; TOUCHTAB Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.1.1", + "Build": "JRO03H", + "Webkit": "534.30", + "Safari": "4.0" + } + }, + { + "vendor": "Viewsonic", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; de-de; ViewPad 10e Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Viewsonic", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2; it-it; ViewPad7 Build\/FRF91) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "Viewsonic", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2.1; en-ca; ViewSonic VB733 Build\/FRG83) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "Viewsonic", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 3.2; en-gb; ViewPad7X Build\/HTJ85B) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "Viewsonic", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2; pt-br; ViewPad 10S Build\/FRF91) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "Viewsonic", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; en-us; VB100a Pro Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Vonino", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-us; Sirius_Evo_QS Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Vonino", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; en-gb; Q8 Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Wolder", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4; miTab LIVE Build\/KVT49L) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/30.0.0.0 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Wolder", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; pt-pt; miTab FUNK Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Wolfgang", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.1; nl-nl; AT-AS45q2 Build\/JOP40D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Xoro", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; de-de; PAD 9720QR Build\/PAD 9719QR) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Xoro", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; PAD720 Build\/JDQ39) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": true + }, + { + "vendor": "ZTE", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.4; V8200plus Build\/IMM76I) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.166 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Zync", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.3; en-us ; Z909 Build\/GRI40) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1\/UCBrowser\/8.4.1.204\/145\/444", + "mobile": true, + "tablet": true + }, + { + "vendor": "Prestigio", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-gb; PMP5297C_QUAD Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Prestigio", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; sk-sk; PMP7100D3G Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.0.4", + "Build": "IMM76D", + "Webkit": "534.30", + "Safari": "4.0" + }, + "model": "PMP7100D3G" + }, + { + "vendor": "Prestigio", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; sk-sk; PMP7280C3G Build\/JZO54K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 MobilSafari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Prestigio", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; PMT3017_WI Build\/KVT49L) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/30.0.0.0 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Prestigio", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; PMT3037_3G Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/30.0.0.0 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Prestigio", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; PMT5002_Wi Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/39.0.2171.93 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Prestigio", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; el-gr; PMT5887_3G Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "MQQBrowser\/4.0\/Mozilla\/5.0 (Linux; U; Android 3.2; zh-cn; GT-P6800 Build\/HTJ85B) AppleWebKit\/533.1 (KHTML, like Gecko) Mobile Safari\/533.1", + "mobile": true, + "tablet": true, + "version": { + "MQQBrowser": "4.0" + } + }, + { + "vendor": "Samsung", + "user_agent": "SAMSUNG-SGH-P250-ORANGE\/P250BVHH8 Profile\/MIDP-2.0 Configuration\/CLDC-1.1 UP.Browser\/6.2.3.3.c.1.101 (GUI) MMP\/2.0", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "SAMSUNG-GT-B2710\/B271MCXKF1 SHP\/VPP\/R5 Dolfin\/2.0 QTV\/5.3 SMM-MMS\/1.2.0 profile\/MIDP-2.1 configuration\/CLDC-1.1 OPN-B", + "mobile": true, + "tablet": false, + "version": { + "Dolfin": "2.0" + } + }, + { + "vendor": "Samsung", + "user_agent": "SAMSUNG-SGH-D900i\/1.0 Profile\/MIDP-2.0 Configuration\/CLDC-1.1 UP.Browser\/6.2.3.3.c.1.101 (GUI) MMP\/2.0", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "SAMSUNG-GT-S5233T\/S5233TXEJE3 SHP\/VPP\/R5 Jasmine\/0.8 Qtv5.3 SMM-MMS\/1.2.0 profile\/MIDP-2.1 configuration\/CLDC-1.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (SAMSUNG; SAMSUNG-GT-S5380D\/S5380FXXKL3; U; Bada\/2.0; ru-ru) AppleWebKit\/534.20 (KHTML, like Gecko) Dolfin\/3.0 Mobile HVGA SMM-MMS\/1.2.0 OPN-B", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "SAMSUNG-GT-C3312\/1.0 NetFront\/4.2 Profile\/MIDP-2.0 Configuration\/CLDC-1.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 1.5; de-de; Galaxy Build\/CUPCAKE) AppleWebKit\/528.5 (KHTML, like Gecko) Version\/3.1.2 Mobile Safari\/525.20.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "SAMSUNG-GT-S3650\/S3650XEII3 SHP\/VPP\/R5 Jasmine\/1.0 Nextreaming SMM-MMS\/1.2.0 profile\/MIDP-2.1 configuration\/CLDC-1.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "JUC (Linux; U; 2.3.6; zh-cn; GT-S5360; 240*320) UCWEB7.9.0.94\/140\/352", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (SAMSUNG; SAMSUNG-GT-S5250\/S5250XEKJ3; U; Bada\/1.0; ru-ru) AppleWebKit\/533.1 (KHTML, like Gecko) Dolfin\/2.0 Mobile WQVGA SMM-MMS\/1.2.0 NexPlayer\/3.0 profile\/MIDP-2.1 configuration\/CLDC-1.1 OPN-B", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident\/3.1; IEMobile\/7.0; SAMSUNG; SGH-i917)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (SAMSUNG; SAMSUNG-GT-S8530\/S8530XXJKA; U; Bada\/1.2; cs-cz) AppleWebKit\/533.1 (KHTML, like Gecko) Dolfin\/2.2 Mobile WVGA SMM-MMS\/1.2.0 OPN-B", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 1.6; ru-ru; Galaxy Build\/Donut) AppleWebKit\/528.5+ (KHTML, like Gecko) Version\/3.1.2 Mobile Safari\/525.20.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.1-update1; ru-ru; GT-I5500 Build\/ERE27) AppleWebKit\/530.17 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/530.17", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2; en-us; GALAXY_Tab Build\/MASTER) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2; ja-jp; SC-01C Build\/FROYO) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2; fr-fr; GT-I9000 Build\/FROYO) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2.1; zh-cn; SCH-i909 Build\/FROYO) UC AppleWebKit\/534.31 (KHTML, like Gecko) Mobile Safari\/534.31", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.3; ja-jp; SC-01C Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.3; en-gb; GT-P1000 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.3; el-gr; GT-I9001 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.3; en-ca; SGH-I896 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.4; es-us; GT-S5660L Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1 MicroMessenger\/4.5.1.261", + "mobile": true, + "tablet": false, + "version": { + "MicroMessenger": "4.5.1.261" + } + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.6; en-us; GT-S5660 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.6; ru-ru; GT-S6102 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.6; pt-br; GT-S5367 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.6; fr-fr; GT-S5839i Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.6; en-gb; GT-S7500 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.6; en-gb; GT-S5830 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.6; es-us; GT-B5510L Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.6; pl-pl; GT-I9001-ORANGE\/I9001BVKPC Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.6; en-us; GT-I8150 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.6; nl-nl; GT-I9070 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.6; en-gb; GT-S5360 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.6; es-us; GT-S6102B Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.6; en-us; GT-S5830i Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.6; ru-ru; GT-I8160 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.6; ru-ru; GT-S6802 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.7; ru-ru; GT-S5830 Build\/GRWK74; LeWa_ROM_Cooper_12.09.21) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.6; ru-ru; GT-N7000 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 3.0.1; en-us; GT-P7100 Build\/HRI83) AppleWebkit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 3.2; he-il; GT-P7300 Build\/HTJ85B) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 3.2; en-gb; GT-P6200 Build\/HTJ85B) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-gb; GT-I9100 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; GT-I9100G Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; nl-nl; GT-P5100 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android-4.0.3; en-us; Galaxy Nexus Build\/IML74K) AppleWebKit\/535.7 (KHTML, like Gecko) CrMo\/16.0.912.75 Mobile Safari\/535.7", + "mobile": true, + "tablet": false, + "version": { + "Chrome": "16.0.912.75" + } + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; SGH-T989 Build\/IML74K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false, + "version": { + "Chrome": "18.0.1025.166" + } + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; ru-ru; GT-P5100 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.4; GT-I9300 Build\/IMM76D) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.4; SPH-D710 Build\/IMM76I) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; zh-cn; GT-I9300 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-gb; GT-I9300-ORANGE\/I9300BVBLG2 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; th-th; GT-I9300T Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; ru-ru; GT-I9100 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us ; GT-I9100 Build\/IMM76D) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1\/UCBrowser\/8.4.1.204\/145\/355", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-gb; GT-N7000 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; th-th; GT-P6800 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.4; SAMSUNG-SGH-I747 Build\/IMM76D) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; es-es; GT-P5110 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.4; GT-P5110 Build\/IMM76D) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; zh-cn; SAMSUNG-GT-S7568_TD\/1.0 Android\/4.0.4 Release\/07.15.2012 Browser\/AppleWebKit534.30 Build\/IMM76D) ApplelWebkit\/534.30 (KHTML,like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false, + "version": { + "Android": "4.0.4" + } + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; ru-ru; GT-P3100 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; tr-tr; GT-P3105 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-ca; GT-N8010 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; ru-ru; GT-S7562 Build\/IMM76I) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; en-us; GT-N7100 Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; GT-N7100 Build\/JZO54K) AppleWebKit\/537.22 (KHTML, like Gecko) Chrome\/25.0.1364.123 Mobile Safari\/537.22 OPR\/14.0.1025.52315", + "mobile": true, + "tablet": false, + "version": { + "Build": "JZO54K", + "Webkit": "537.22", + "Opera": "14.0.1025.52315" + } + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; zh-hk; GT-N7105 Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; ru-ru; GT-N8000 Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; SGH-i747M Build\/JRO03L) AppleWebKit\/535.19(KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; en-gb; Galaxy Nexus - 4.1.1 - with Google Apps - API 16 - 720x1280 Build\/JRO03S) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; GT-I8262 Build\/JZO54K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; it-it; Galaxy Nexus Build\/JZO54K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; en-us; SGH-I777 Build\/JZO54K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; en-us; GT-S7710 Build\/JZO54K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; en-us; GT-I9082 Build\/JZO54K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; en-us; SGH-T999L Build\/JZO54K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; GT-P5210 Build\/JDQ39) AppleWebKit\/537.36 (KHTML, Like Gecko) Chrome\/27.0.1453.90 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; en-us; SAMSUNG GT-I9200 Build\/JDQ39) AppleWebKit\/535.19 (KHTML, like Gecko) Version\/1.0 Chrome\/18.0.1025.308 Mobile Safari\/535.19", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; zh-cn; SCH-I959 Build\/JDQ39) AppleWebKit\/535.19 (KHTML, like Gecko) Version\/1.0 Chrome\/18.0.1025.308 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; nl-nl; SM-T310 Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; en-us; SAMSUNG SM-P600 Build\/JSS15J) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/1.5 Chrome\/28.0.1500.94 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-gb; GT-N5100 Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; en-us; SAMSUNG SM-T530NU Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/1.5 Chrome\/28.0.1500.94 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; SM-T800 Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/36.0.1985.135 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; fr-fr; SAMSUNG SM-T800 Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/1.5 Chrome\/28.0.1500.94 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; SM-T700 Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.517 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; CETUS)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; Focus I917 By TC)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; Focus i917)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; FOCUS S)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; GT-I8350)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; GT-i8700)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; GT-S7530)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; Hljchm's Wp)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; I917)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; OMNIA 7)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; OMNIA7 By MWP_HS)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; OMNIA7)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; OMNIA7; Orange)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; SGH-i677)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; SGH-i917)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; SGH-i917.)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; SGH-i917R)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; SGH-i937)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; SMG-917R)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG_blocked_blocked_blocked; OMNIA7; Orange)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG_blocked_blocked_blocked_blocked; OMNIA7; Orange)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SUMSUNG; OMNIA 7)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Windows NT 6.2; ARM; Trident\/7.0; Touch; rv:11.0; WPDesktop; SAMSUNG; GT-I8750) like Gecko", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Windows NT 6.2; ARM; Trident\/7.0; Touch; rv:11.0; WPDesktop; GT-I8750) like Gecko", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; en-gb; SAMSUNG GT-I9205 Build\/JDQ39) AppleWebKit\/535.19 (KHTML, like Gecko) Version\/1.0 Chrome\/18.0.1025.308 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; GT-P7510 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; SHV-E160K\/VI10.1802 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; Android 5.0.2; SM-T805 Build\/LRX22G) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/43.0.2357.92 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.4; SM-T116NQ Build\/KTU84P) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/43.0.2357.92 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; Android 5.0.2; SM-G9250 Build\/LRX22G; wv) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/43.0.2357.121 Mobile Safari\/537.36 [FB_IAB\/FB4A;FBAV\/35.0.0.48.273;]", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; SM-T705Y Build\/KOT49H) AppleWebKit\/537.36(KHTML, like Gecko) Chrome\/42.0.2311.111 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; GT-I9505 Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/1.5 Chrome\/28.0.1500.94 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; SM-T705 Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/41.0.2272.45 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Sony", + "user_agent": "SonyEricssonK800i\/R1AA Browser\/NetFront\/3.3 Profile\/MIDP-2.0 Configuration\/CLDC-1.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.1-update1; es-ar; SonyEricssonE15a Build\/2.0.1.A.0.47) AppleWebKit\/530.17 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/530.17", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.1-update1; pt-br; SonyEricssonU20a Build\/2.1.1.A.0.6) AppleWebKit\/530.17 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/530.17", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.3; en-au; SonyEricssonX10i Build\/3.0.1.G.0.75) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.4; ru-ru; SonyEricssonST18i Build\/4.0.2.A.0.62) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.4; hr-hr; SonyEricssonST15i Build\/4.0.2.A.0.62) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.4; sk-sk; SonyEricssonLT15i Build\/4.0.2.A.0.62) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.7; th-th; SonyEricssonST27i Build\/6.0.B.3.184) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.7; de-de; SonyEricssonST25i Build\/6.0.B.3.184) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; pt-br; Xperia Tablet S Build\/TID0092) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.0.3", + "Build": "TID0092", + "Webkit": "534.30", + "Safari": "4.0" + } + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; LT18i Build\/4.1.A.0.562) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; Sony Tablet S Build\/TISU0R0110) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19", + "mobile": true, + "tablet": true + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; es-es; Sony Tablet S Build\/TISU0143) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-gb; SonyEricssonLT18i Build\/4.1.B.0.587) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; fr-ch; SonyEricssonSK17i Build\/4.1.B.0.587) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; SonyEricssonLT26i Build\/6.1.A.2.45) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.4; LT22i Build\/6.1.B.0.544) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; vi-vn; SonyEricssonLT22i Build\/6.1.B.0.544) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.4; ST23i Build\/11.0.A.5.5) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.4; ST23i Build\/11.0.A.2.10) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.4; LT28h Build\/6.1.E.3.7) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.94 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; en-us; SGPT13 Build\/TJDS0170) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; ja-jp; SonySO-03E Build\/10.1.E.0.265) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.1.2", + "Build": "10.1.E.0.265", + "Webkit": "534.30", + "Safari": "4.0" + } + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; LT26w Build\/6.2.B.1.96) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/29.0.1547.72 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; SGP321 Build\/10.3.1.A.0.33) AppleWebKit\/537.31 (KHTML, like Gecko) Chrome\/26.0.1410.58 Safari\/537.31", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.2.2", + "Build": "10.3.1.A.0.33", + "Webkit": "537.31", + "Chrome": "26.0.1410.58" + } + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; C5303 Build\/12.1.A.1.205) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/36.0.1985.135 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.3; zh-cn; XL39h Build\/14.2.A.1.136) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; sv-se; C5503 Build\/10.1.1.A.1.273) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; en-us; C5502 Build\/10.1.1.A.1.310) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; zh-cn; SonyL39t Build\/14.1.M.0.202) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; zh-cn; L39u Build\/14.1.n.0.63) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; zh-tw; M35c Build\/12.0.B.5.37) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; M35c Build\/12.0.B.2.42) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/27.0.1453.90 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; zh-CN; M35t Build\/12.0.C.2.42) AppleWebKit\/534.31 (KHTML, like Gecko) UCBrowser\/9.3.2.349 U3\/0.8.0 Mobile Safari\/534.31", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; D6502 Build\/17.1.A.2.69) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/30.0.0.0 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; D6503 Build\/17.1.A.0.504) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; D6543 Build\/17.1.A.2.55) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; D2004 Build\/20.0.A.0.29) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.94 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.3; en-gb; D2005 Build\/20.0.A.1.12) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; D2104 Build\/20.0.B.0.84) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; D2105 Build\/20.0.B.0.74) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.170 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.3; pt-br; D2114 Build\/20.0.B.0.85) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; D2302 Build\/18.0.B.1.23) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.138 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.3; zh-cn; S50h Build\/18.0.b.1.23) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 UCBrowser\/9.6.3.413 U3\/0.8.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; D2303 Build\/18.0.C.1.13) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.138 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; D2305 Build\/18.0.A.1.30) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.138 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; D2306 Build\/18.0.C.1.7) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.136 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; D5303 Build\/19.0.1.A.0.207) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; D5306 Build\/19.1.A.0.264) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.136 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.3; zh-CN; XM50h Build\/19.0.D.0.269) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 UCBrowser\/9.7.6.428 U3\/0.8.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.3; zh-cn; XM50t Build\/19.0.C.2.59) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; D5322 Build\/19.0.D.0.253) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.131", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.3; zh-cn; M51w Build\/14.2.A.1.146) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; M51w Build\/14.2.A.1.146) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.136 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.1; D5102 Build\/18.2.A.0.9) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.1; D5103 Build\/18.1.A.0.11) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/30.0.1599.92 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.1; D5106 Build\/18.1.A.0.11) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.3; en-gb; C6902 Build\/14.2.A.1.136) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30 GSA\/3.2.17.1009776.arm", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; es-es; C6943 Build\/14.1.G.2.257) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; C6943 Build\/14.3.A.0.681) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; SGP412 Build\/14.1.B.3.320) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1; en-us; SonySGP321 Build\/10.2.C.0.143) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; SGP351 Build\/10.1.1.A.1.307) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19", + "mobile": true, + "tablet": true + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; SGP341 Build\/10.4.B.0.569) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; SGP511 Build\/17.1.A.2.36) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.122 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; SGP512 Build\/17.1.A.2.36) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.122 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; fr-ch; SGP311 Build\/10.1.C.0.344) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; en-us; SGP312 Build\/10.1.C.0.344) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.4.2; de-de; SGP521 Build\/17.1.A.2.69) AppleWebKit\/537.16 (KHTML, like Gecko) Version\/4.0 Safari\/537.16", + "mobile": true, + "tablet": true + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.4.2; zh-cn; SGP541 Build\/17.1.A.2.36) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; SGP551 Build\/17.1.A.2.72) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Sony", + "user_agent": "SonyEricssonU5i\/R2CA; Mozilla\/5.0 (SymbianOS\/9.4; U; Series60\/5.0 Profile\/MIDP-2.1 Configuration\/CLDC-1.1) AppleWebKit\/525 (KHTML, like Gecko) Version\/3.0 Safari\/525", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "SonyEricssonU5i\/R2AA; Mozilla\/5.0 (SymbianOS\/9.4; U; Series60\/5.0 Profile\/MIDP-2.1 Configuration\/CLDC-1.1) AppleWebKit\/525 (KHTML, like Gecko) Version\/3.0 Safari\/525", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/4.0 (PDA; PalmOS\/sony\/model prmr\/Revision:1.1.54 (en)) NetFront\/3.0", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Opera\/9.80 (Linux mips; U; InettvBrowser\/2.2 (00014A;SonyDTV115;0002;0100) KDL40EX720; CC\/BEL; en) Presto\/2.7.61 Version\/11.00", + "mobile": false, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Opera\/9.80 (Linux armv7l; HbbTV\/1.1.1 (; Sony; KDL32W650A; PKG3.211EUA; 2013;); ) Presto\/2.12.362 Version\/12.11", + "mobile": false, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; es-ve; SonyST21a2 Build\/11.0.A.6.5) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; D2533 Build\/19.2.A.0.391) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/30.0.0.0 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.4; Xperia SP Build\/KTU84Q) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/41.0.2272.96 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla \/ 5.0 (Linux; Android 5.0.2; SOT31 Build \/ 28.0.D.6.71) AppleWebKit \/ 537.36 (KHTML, like Gecko) Chrome \/ 39.0.2171.93 Safari \/ 537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Avant", + "user_agent": "Mozilla\/5.0 (Windows NT 6.1; WOW64; Trident\/7.0; Avant Browser; rv:11.0) like Gecko", + "mobile": false, + "tablet": false + }, + { + "vendor": "Avant", + "user_agent": "Mozilla\/5.0 (Windows NT 6.1; WOW64; Avant TriCore) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/30.0.1599.101 Safari\/537.36", + "mobile": false, + "tablet": false + }, + { + "vendor": "Avant", + "user_agent": "Mozilla\/5.0 (Windows NT 5.1; rv:27.0; Avant TriCore) Gecko\/20100101 Firefox\/27.0", + "mobile": false, + "tablet": false + }, + { + "vendor": "Console", + "user_agent": "Mozilla\/5.0 (Nintendo WiiU) AppleWebKit\/536.28 (KHTML, like Gecko) NX\/3.0.3.12.14 NintendoBrowser\/3.1.1.9577.EU", + "mobile": false, + "tablet": false + }, + { + "vendor": "Console", + "user_agent": "Mozilla\/5.0 (Nintendo WiiU) AppleWebKit\/534.52 (KHTML, like Gecko) NX\/{Version No} NintendoBrowser\/{Version No}.US", + "mobile": false, + "tablet": false + }, + { + "vendor": "Console", + "user_agent": "Mozilla\/5.0 (Nintendo 3DS; U; ; en) Version\/1.7567.US", + "mobile": true, + "tablet": false + }, + { + "vendor": "Console", + "user_agent": "Mozilla\/5.0 (Nintendo 3DS; U; ; en) Version\/1.7498.US", + "mobile": true, + "tablet": false + }, + { + "vendor": "Console", + "user_agent": "Mozilla\/5.0 (PLAYSTATION 3 4.21) AppleWebKit\/531.22.8 (KHTML, like Gecko)", + "mobile": false, + "tablet": false + }, + { + "vendor": "Console", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident\/5.0; Xbox)", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident\/4.0; SV1; [eburo v4.0]; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; InfoPath.3; .NET4.0C; .NET4.0E)", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_10) AppleWebKit\/600.1.25 (KHTML, like Gecko) Version\/8.0 Safari\/600.1.25", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_10_0) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/38.0.2125.111 Safari\/537.36", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/5.0 (Windows NT 6.1) AppleWebKit\/537.36 (KHTML, like Gecko) Iron\/37.0.2000.0 Chrome\/37.0.2000.0 Safari\/537.36", + "mobile": false, + "tablet": false, + "version": { + "Iron": "37.0.2000.0" + } + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/5.0 (X11; Linux i686) AppleWebKit\/537.36 (KHTML, like Gecko) Ubuntu Chromium\/32.0.1700.102 Chrome\/32.0.1700.102 Safari\/537.36", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko\/20100101 Firefox\/24.0", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko\/20100101 Firefox\/18.0 AlexaToolbar\/psPCtGhf-2.2", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/5.0 (X11; Ubuntu; Linux x86_64; rv:22.0) Gecko\/20100101 Firefox\/22.0", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/5.0 (X11; Linux ppc; rv:17.0) Gecko\/20130626 Firefox\/17.0 Iceweasel\/17.0.7", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/5.0 (X11; Linux) AppleWebKit\/535.22+ Midori\/0.4", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/5.0 (Macintosh; U; Intel Mac OS X; en-us) AppleWebKit\/535+ (KHTML, like Gecko) Version\/5.0 Safari\/535.20+ Midori\/0.4", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/5.0 (Windows NT 6.2; WOW64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.20 Safari\/537.36 OPR\/15.0.1147.18 (Edition Next)", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/5.0 (Windows NT 6.2) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/27.0.1453.94 Safari\/537.36", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/5.0 (Windows NT 5.2; WOW64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/27.0.1453.94 Safari\/537.36", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/5.0 (Windows NT 5.2; WOW64; rv:21.0) Gecko\/20100101 Firefox\/21.0", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Opera\/9.80 (Windows NT 5.2; WOW64) Presto\/2.12.388 Version\/12.14", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/5.0 (Windows NT 6.1; WOW64; rv:19.0) Gecko\/20100101 Firefox\/19.0", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/5.0 (X11; FreeBSD amd64; rv:14.0) Gecko\/20100101 Firefox\/14.0.1", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/4.0 (compatible; MSIE 7.0; Windows NT 6.2; Win64; x64; Trident\/6.0; Touch; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 2.0.50727; Tablet PC 2.0; MASMJS)", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident\/6.0; MANMJS)", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident\/6.0; MASMJS)", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident\/6.0; Touch; MASMJS)", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Opera\/9.80 (Windows NT 6.2; WOW64; MRA 8.0 (build 5784)) Presto\/2.12.388 Version\/12.11", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident\/6.0)", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/5.0 (Windows NT 6.3; Trident\/7.0; rv 11.0) like Gecko", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/5.0 (Windows NT 6.3; WOW64; Trident\/7.0; Touch; rv:11.0) like Gecko", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/5.0 (Unknown; Linux armv7l) AppleWebKit\/537.1+ (KHTML, like Gecko) Safari\/537.1+ HbbTV\/1.1.1 ( ;LGE ;NetCast 4.0 ;03.20.30 ;1.0M ;)", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "HbbTV\/1.1.1 (;Panasonic;VIERA 2012;1.261;0071-3103 2000-0000;)", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Opera\/9.80 (Linux armv7l; HbbTV\/1.1.1 (; Sony; KDL32W650A; PKG3.211EUA; 2013;); ) Presto\/2.12.362 Version\/12.11", + "mobile": false, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (Linux; U; Jolla; Sailfish; Mobile; rv:20.0) Gecko\/20.0 Firefox\/20.0 Sailfish Browser\/1.0 like Safari\/535.19", + "mobile": true, + "tablet": true + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (Mobile; rv:26.0) Gecko\/26.0 Firefox\/26.0", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (Tablet; rv:26.0) Gecko\/26.0 Firefox\/26.0", + "mobile": true, + "tablet": true + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; CT1020W Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.94 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; M6pro Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Generic", + "user_agent": "MobileSafari\/9537.53 CFNetwork\/672.1.13 Darwin\/13.1.0", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Appcelerator Titanium\/3.2.2.GA (iPod touch\/6.1.6; iPhone OS; en_US;)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Opera Coast\/3.0.3.78307 CFNetwork\/672.1.15 Darwin\/14.0.0", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; ALUMIUM10 Build\/IML74K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.1; en-us; JY-G3 Build\/JOP40D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; hu-hu; M758A Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; EVOTAB Build\/IMM76I) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Generic", + "user_agent": "Java\/1.6.0_22", + "mobile": false, + "tablet": false, + "version": { + "Java": "1.6.0_22" + } + }, + { + "vendor": "Generic", + "user_agent": "Opera\/9.80 (Series 60; Opera Mini\/6.5.29260\/29.3417; U; ru) Presto\/2.8.119 Version\/11.10", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Opera\/9.80 (Android; Opera Mini\/6.5.27452\/29.3417; U; ru) Presto\/2.8.119 Version\/11.10", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Opera\/9.80 (iPhone; Opera Mini\/7.1.32694\/27.1407; U; en) Presto\/2.8.119 Version\/11.10", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (Windows NT 6.1; WOW64) AppleWebKit\/537.17 (KHTML, like Gecko) Chrome\/24.0.1312.60 Safari\/537.17 OPR\/14.0.1025.52315", + "mobile": false, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (iPhone; U; CPU iPhone OS 4_3_2 like Mac OS X; en-us) AppleWebKit\/533.17.9 (KHTML, like Gecko) Version\/5.0.2 Mobile\/8H7 Safari\/6533.18.5", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Opera\/9.80 (Android 2.3.7; Linux; Opera Mobi\/46154) Presto\/2.11.355 Version\/12.10", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (iPad; CPU OS 6_1 like Mac OS X) AppleWebKit\/536.26 (KHTML, like Gecko) Version\/6.0 Mobile\/10B141 Safari\/8536.25", + "mobile": true, + "tablet": true + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; en-us; sdk Build\/MASTER) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2; en-us; sdk Build\/JB_MR1) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (Android; Mobile; rv:18.0) Gecko\/18.0 Firefox\/18.0", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (Windows NT 6.1) AppleWebKit\/535.12 (KHTML, like Gecko) Maxthon\/3.0 Chrome\/18.0.966.0 Safari\/535.12", + "mobile": false, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Opera\/9.80 (Windows NT 5.1; U; Edition Yx; ru) Presto\/2.10.289 Version\/12.02", + "mobile": false, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Windows Phone 6.5.3.5)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "PalmCentro\/v0001 Mozilla\/4.0 (compatible; MSIE 6.0; Windows 98; PalmSource\/Palm-D061; Blazer\/4.5) 16;320x320", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Microsoft; XDeviceEmulator)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; MAL; N880E; China Telecom)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Opera\/9.80 (Series 60; Opera Mini\/7.0.29482\/28.2859; U; ru) Presto\/2.8.119 Version\/11.10", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Opera\/9.80 (S60; SymbOS; Opera Mobi\/SYB-1202242143; U; en-GB) Presto\/2.10.254 Version\/12.00", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-au; 97D Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Generic", + "user_agent": "Opera\/9.80 (Android; Opera Mini\/7.0.29952\/28.2647; U; ru) Presto\/2.8.119 Version\/11.10", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Opera\/9.80 (Android; Opera Mini\/6.1.25375\/28.2555; U; en) Presto\/2.8.119 Version\/11.10", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Opera\/9.80 (Mac OS X; Opera Tablet\/35779; U; en) Presto\/2.10.254 Version\/12.00", + "mobile": true, + "tablet": true + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (Android; Tablet; rv:10.0.4) Gecko\/10.0.4 Firefox\/10.0.4 Fennec\/10.0.4", + "mobile": true, + "tablet": true + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (Android; Tablet; rv:18.0) Gecko\/18.0 Firefox\/18.0", + "mobile": true, + "tablet": true + }, + { + "vendor": "Generic", + "user_agent": "Opera\/9.80 (Linux armv7l; Maemo; Opera Mobi\/14; U; en) Presto\/2.9.201 Version\/11.50", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Opera\/9.80 (Android 2.2.1; Linux; Opera Mobi\/ADR-1207201819; U; en) Presto\/2.10.254 Version\/12.00", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; en-us; sdk Build\/JRO03E) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; de-de; Endeavour 1010 Build\/ONDA_MID) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; de-de; Tablet-PC-4 Build\/ICS.g08refem618.20121102) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; de-de; Tagi Tab S10 Build\/8089) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Bot", + "user_agent": "Mozilla\/5.0 (compatible; Googlebot\/2.1; +http:\/\/www.google.com\/bot.html)", + "mobile": false, + "tablet": false + }, + { + "vendor": "Bot", + "user_agent": "grub-client-1.5.3; (grub-client-1.5.3; Crawl your own stuff with http:\/\/grub.org)", + "mobile": false, + "tablet": false + }, + { + "vendor": "Bot", + "user_agent": "Googlebot-Image\/1.0", + "mobile": false, + "tablet": false + }, + { + "vendor": "Bot", + "user_agent": "Python-urllib\/2.5", + "mobile": false, + "tablet": false + }, + { + "vendor": "Bot", + "user_agent": "facebookexternalhit\/1.0 (+http:\/\/www.facebook.com\/externalhit_uatext.php)", + "mobile": false, + "tablet": false + }, + { + "vendor": "Bot", + "user_agent": "AdsBot-Google (+http:\/\/www.google.com\/adsbot.html)", + "mobile": false, + "tablet": false + }, + { + "vendor": "Bot", + "user_agent": "AdsBot-Google-Mobile (+http:\/\/www.google.com\/mobile\/adsbot.html) Mozilla (iPhone; U; CPU iPhone OS 3 0 like Mac OS X) AppleWebKit (KHTML, like Gecko) Mobile Safari", + "mobile": true, + "tablet": false + }, + { + "vendor": "Bot", + "user_agent": "Mozilla\/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit\/534.16 (KHTML, like Gecko, Google Keyword Suggestion) Chrome\/10.0.648.127 Safari\/534.16", + "mobile": false, + "tablet": false + }, + { + "vendor": "Bot", + "user_agent": "Facebot", + "mobile": false, + "tablet": false + }, + { + "vendor": "Vodafone", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 3.2; hu-hu; SmartTab10-MSM8260-V02d-Dec022011-Vodafone-HU) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0", + "mobile": true, + "tablet": true + }, + { + "vendor": "Vodafone", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; SmartTabII10 Build\/IML74K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19", + "mobile": true, + "tablet": true + }, + { + "vendor": "Vodafone", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; fr-fr; SmartTAB 1002 Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Vodafone", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; de-de, SmartTabII7 Build\/A2107A_A404_107_055_130124_VODA) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + } + ] +} \ No newline at end of file -- GitLab From 2cf36d157fb6fee1fa4829f5afbbd70beea996dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Doursenaud?= <rdoursenaud@gpcsolutions.fr> Date: Mon, 7 Dec 2015 14:15:00 +0100 Subject: [PATCH 127/197] FIX #3953 Don't round supplier price The price is already rounded when inserted on the product page. It's also rounded at display. There's no need to round it here. Rounding it leads to serious calculation errors. --- htdocs/core/tpl/objectline_create.tpl.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/tpl/objectline_create.tpl.php b/htdocs/core/tpl/objectline_create.tpl.php index d7949fa1d52..25668b2876d 100644 --- a/htdocs/core/tpl/objectline_create.tpl.php +++ b/htdocs/core/tpl/objectline_create.tpl.php @@ -594,7 +594,7 @@ jQuery(document).ready(function() { /* Define default price at loading */ var defaultprice = $("#fournprice_predef").find('option:selected').attr("price"); - $("#buying_price").val(Math.round(defaultprice,<?php print ($conf->global->MAIN_MAX_DECIMALS_UNIT ? $conf->global->MAIN_MAX_DECIMALS_UNIT : 5); ?>)); + $("#buying_price").val(defaultprice); $("#fournprice_predef").change(function() { console.log("change on fournprice_predef"); -- GitLab From 3f9efc537b09f142baeb249ea4e1f8a6c88c9f54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Doursenaud?= <rdoursenaud@gpcsolutions.fr> Date: Mon, 7 Dec 2015 14:15:00 +0100 Subject: [PATCH 128/197] FIX #3953 Don't round supplier price The price is already rounded when inserted on the product page. It's also rounded at display. There's no need to round it here. Rounding it leads to serious calculation errors. --- htdocs/core/tpl/objectline_create.tpl.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/tpl/objectline_create.tpl.php b/htdocs/core/tpl/objectline_create.tpl.php index fd5a81240ef..7244711bb43 100644 --- a/htdocs/core/tpl/objectline_create.tpl.php +++ b/htdocs/core/tpl/objectline_create.tpl.php @@ -554,7 +554,7 @@ jQuery(document).ready(function() { /* Define default price at loading */ var defaultprice = $("#fournprice_predef").find('option:selected').attr("price"); - $("#buying_price").val(parseFloat(defaultprice).toFixed(<?php print ($conf->global->MAIN_MAX_DECIMALS_UNIT ? $conf->global->MAIN_MAX_DECIMALS_UNIT : 5); ?>)); + $("#buying_price").val(defaultprice); $("#fournprice_predef").change(function() { console.log("change on fournprice_predef"); -- GitLab From 01c6728aa9bea51db6ed7e3dca6ff16e05f3364d Mon Sep 17 00:00:00 2001 From: philippe grand <philippe.grand@atoo-net.com> Date: Tue, 8 Dec 2015 11:35:08 +0100 Subject: [PATCH 129/197] [Qual] Uniformize code --- htdocs/exports/export.php | 16 ++-- htdocs/externalsite/admin/externalsite.php | 4 +- htdocs/fichinter/card.php | 12 +-- htdocs/fichinter/contact.php | 12 +-- htdocs/fourn/commande/card.php | 86 +++++++++++----------- htdocs/fourn/commande/contact.php | 14 ++-- htdocs/fourn/commande/dispatch.php | 6 +- 7 files changed, 75 insertions(+), 75 deletions(-) diff --git a/htdocs/exports/export.php b/htdocs/exports/export.php index e0870411003..d7dbc008a27 100644 --- a/htdocs/exports/export.php +++ b/htdocs/exports/export.php @@ -177,7 +177,7 @@ if ($action=='selectfield') //print_r($array_selected); $_SESSION["export_selected_fields"]=$array_selected; - setEventMessage($warnings, 'warnings'); + setEventMessages($warnings, null, 'warnings'); } } @@ -243,12 +243,12 @@ if ($action == 'builddoc') $result=$objexport->build_file($user, GETPOST('model','alpha'), $datatoexport, $array_selected, $array_filtervalue); if ($result < 0) { - setEventMessage($objexport->error, 'errors'); + setEventMessages($objexport->error, $objexport->errors, 'errors'); $sqlusedforexport=$objexport->sqlusedforexport; } else { - setEventMessage($langs->trans("FileSuccessfullyBuilt")); + setEventMessages($langs->trans("FileSuccessfullyBuilt"), null, 'mesgs'); $sqlusedforexport=$objexport->sqlusedforexport; } } @@ -259,8 +259,8 @@ if ($step == 5 && $action == 'confirm_deletefile' && $confirm == 'yes') $file = $upload_dir . "/" . GETPOST('file'); // Do not use urldecode here ($_GET and $_REQUEST are already decoded by PHP). $ret=dol_delete_file($file); - if ($ret) setEventMessage($langs->trans("FileWasRemoved", GETPOST('file'))); - else setEventMessage($langs->trans("ErrorFailToDeleteFile", GETPOST('file')), 'errors'); + if ($ret) setEventMessage($langs->trans("FileWasRemoved", GETPOST('file')), null, 'mesgs'); + else setEventMessages($langs->trans("ErrorFailToDeleteFile", GETPOST('file')), null, 'errors'); header('Location: '.$_SERVER["PHP_SELF"].'?step='.$step.'&datatoexport='.$datatoexport); exit; } @@ -307,15 +307,15 @@ if ($action == 'add_export_model') $result = $objexport->create($user); if ($result >= 0) { - setEventMessage($langs->trans("ExportModelSaved",$objexport->model_name)); + setEventMessages($langs->trans("ExportModelSaved",$objexport->model_name), null, 'mesgs'); } else { $langs->load("errors"); if ($objexport->errno == 'DB_ERROR_RECORD_ALREADY_EXISTS') - setEventMessage($langs->trans("ErrorExportDuplicateProfil"), 'errors'); + setEventMessages($langs->trans("ErrorExportDuplicateProfil"), null, 'errors'); else - setEventMessage($objexport->error, 'errors'); + setEventMessages($objexport->error, $objexport->errors, 'errors'); } } else diff --git a/htdocs/externalsite/admin/externalsite.php b/htdocs/externalsite/admin/externalsite.php index 90fb5aff9f0..bd0449dc028 100644 --- a/htdocs/externalsite/admin/externalsite.php +++ b/htdocs/externalsite/admin/externalsite.php @@ -59,12 +59,12 @@ if ($action == 'update') if ($i >= 2) { $db->commit(); - setEventMessage($langs->trans("SetupSaved")); + setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } else { $db->rollback(); - setEventMessage($db->lasterror(), 'errors'); + setEventMessages($db->lasterror(), null, 'errors'); } } diff --git a/htdocs/fichinter/card.php b/htdocs/fichinter/card.php index 403f1411dc8..3fd45013ab5 100644 --- a/htdocs/fichinter/card.php +++ b/htdocs/fichinter/card.php @@ -386,7 +386,7 @@ if (empty($reshook)) $result=$object->update($user); if ($result<0) { - setEventMessage($object->error,'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } @@ -429,8 +429,8 @@ if (empty($reshook)) $upload_dir = $conf->ficheinter->dir_output; $file = $upload_dir . '/' . GETPOST('file'); $ret=dol_delete_file($file,0,0,0,$object); - if ($ret) setEventMessage($langs->trans("FileWasRemoved", GETPOST('urlfile'))); - else setEventMessage($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), 'errors'); + if ($ret) setEventMessages($langs->trans("FileWasRemoved", GETPOST('urlfile')), null, 'mesgs'); + else setEventMessages($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), null, 'errors'); } // Set into a project @@ -451,7 +451,7 @@ if (empty($reshook)) { $result=$object->delete($user); if ($result<0) { - setEventMessage($object->error,'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } header('Location: '.DOL_URL_ROOT.'/fichinter/list.php?leftmenu=ficheinter'); @@ -802,7 +802,7 @@ if (empty($reshook)) if ($result) { $mesg=$langs->trans('MailSuccessfulySent',$mailfile->getValidAddress($from,2),$mailfile->getValidAddress($sendto,2)); - setEventMessage($mesg); + setEventMessages($mesg, null, 'mesgs'); $error=0; // Initialisation donnees @@ -1216,7 +1216,7 @@ else if ($id > 0 || ! empty($ref)) if (empty($numref)) { $error++; - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } else diff --git a/htdocs/fichinter/contact.php b/htdocs/fichinter/contact.php index 854428a5ccf..b92c1442d14 100644 --- a/htdocs/fichinter/contact.php +++ b/htdocs/fichinter/contact.php @@ -46,7 +46,7 @@ $result = $object->fetch($id,$ref); /* - * Ajout d'un nouveau contact + * Adding a new contact */ if ($action == 'addcontact' && $user->rights->ficheinter->creer) @@ -71,17 +71,17 @@ if ($action == 'addcontact' && $user->rights->ficheinter->creer) $mesg = $object->error; } - setEventMessage($mesg, 'errors'); + setEventMessages($mesg, null, 'errors'); } } -// bascule du statut d'un contact +// Toggle the status of a contact else if ($action == 'swapstatut' && $user->rights->ficheinter->creer) { $result=$object->swapContactStatus(GETPOST('ligne','int')); } -// Efface un contact +// Deletes a contact else if ($action == 'deletecontact' && $user->rights->ficheinter->creer) { $result = $object->delete_contact(GETPOST('lineid','int')); @@ -121,8 +121,8 @@ if ($id > 0 || ! empty($ref)) /* - * Fiche intervention synthese pour rappel - */ + * Fiche intervention synthese pour rappel + */ print '<table class="border" width="100%">'; $linkback = '<a href="'.DOL_URL_ROOT.'/fichinter/list.php'.(! empty($socid)?'?socid='.$socid:'').'">'.$langs->trans("BackToList").'</a>'; diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php index baa11ed9c07..52ecc6d3682 100644 --- a/htdocs/fourn/commande/card.php +++ b/htdocs/fourn/commande/card.php @@ -4,7 +4,7 @@ * Copyright (C) 2005 Eric Seigne <eric.seigne@ryxeo.com> * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2010-2015 Juanjo Menent <jmenent@2byte.es> - * Copyright (C) 2011 Philippe Grand <philippe.grand@atoo-net.com> + * Copyright (C) 2011-2015 Philippe Grand <philippe.grand@atoo-net.com> * Copyright (C) 2012 Marcos García <marcosgdf@gmail.com> * Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro> * Copyright (C) 2014 Ion Agorria <ion@agorria.com> @@ -153,14 +153,14 @@ if (empty($reshook)) if ($result < 0) setEventMessages($object->error, $object->errors, 'errors'); } - // conditions de reglement + // payment conditions if ($action == 'setconditions' && $user->rights->fournisseur->commande->creer) { $result=$object->setPaymentTerms(GETPOST('cond_reglement_id','int')); if ($result < 0) setEventMessages($object->error, $object->errors, 'errors'); } - // mode de reglement + // payment mode if ($action == 'setmode' && $user->rights->fournisseur->commande->creer) { $result = $object->setPaymentMethods(GETPOST('mode_reglement_id','int')); @@ -174,7 +174,7 @@ if (empty($reshook)) if ($result < 0) setEventMessages($object->error, $object->errors, 'errors'); } - // date de livraison + // date of delivery if ($action == 'setdate_livraison' && $user->rights->fournisseur->commande->creer) { $result=$object->set_date_livraison($user,$datelivraison); @@ -248,7 +248,7 @@ if (empty($reshook)) { $ret=$object->classifyBilled(); if ($ret < 0) { - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } @@ -295,27 +295,27 @@ if (empty($reshook)) if (GETPOST('prod_entry_mode')=='free' && GETPOST('price_ht') < 0 && $qty < 0) { - setEventMessage($langs->trans('ErrorBothFieldCantBeNegative', $langs->transnoentitiesnoconv('UnitPrice'), $langs->transnoentitiesnoconv('Qty')), 'errors'); + setEventMessages($langs->trans('ErrorBothFieldCantBeNegative', $langs->transnoentitiesnoconv('UnitPrice'), $langs->transnoentitiesnoconv('Qty')), null, 'errors'); $error++; } if (GETPOST('prod_entry_mode')=='free' && ! GETPOST('idprodfournprice') && GETPOST('type') < 0) { - setEventMessage($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Type')), 'errors'); + setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Type')), null, 'errors'); $error++; } if (GETPOST('prod_entry_mode')=='free' && GETPOST('price_ht')==='' && GETPOST('price_ttc')==='') // Unit price can be 0 but not '' { - setEventMessage($langs->trans($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('UnitPrice'))), 'errors'); + setEventMessages($langs->trans($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('UnitPrice'))), null, 'errors'); $error++; } if (GETPOST('prod_entry_mode')=='free' && ! GETPOST('dp_desc')) { - setEventMessage($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Description')), 'errors'); + setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Description')), null, 'errors'); $error++; } if (! GETPOST('qty')) { - setEventMessage($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Qty')), 'errors'); + setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Qty')), null, 'errors'); $error++; } @@ -384,7 +384,7 @@ if (empty($reshook)) // Quantity too low $error++; $langs->load("errors"); - setEventMessage($langs->trans("ErrorQtyTooLowForThisSupplier"), 'errors'); + setEventMessages($langs->trans("ErrorQtyTooLowForThisSupplier"), null, 'errors'); } } else if((GETPOST('price_ht')!=='' || GETPOST('price_ttc')!=='') && empty($error)) @@ -481,7 +481,7 @@ if (empty($reshook)) } /* - * Mise a jour d'une ligne dans la commande + * Updating a line in the order */ if ($action == 'updateline' && $user->rights->fournisseur->commande->creer && ! GETPOST('cancel')) { @@ -675,7 +675,7 @@ if (empty($reshook)) if (! $idwarehouse || $idwarehouse == -1) { $error++; - setEventMessage($langs->trans('ErrorFieldRequired',$langs->transnoentitiesnoconv("Warehouse")), 'errors'); + setEventMessages($langs->trans('ErrorFieldRequired',$langs->transnoentitiesnoconv("Warehouse")), null, 'errors'); $action=''; } } @@ -764,7 +764,7 @@ if (empty($reshook)) { if (1==0 && ! GETPOST('clone_content') && ! GETPOST('clone_receivers')) { - setEventMessage($langs->trans("NoCloneOptionsSpecified"), 'errors'); + setEventMessages($langs->trans("NoCloneOptionsSpecified"), null, 'errors'); } else { @@ -857,8 +857,8 @@ if (empty($reshook)) $upload_dir = $conf->fournisseur->commande->dir_output; $file = $upload_dir . '/' . GETPOST('file'); $ret=dol_delete_file($file,0,0,0,$object); - if ($ret) setEventMessage($langs->trans("FileWasRemoved", GETPOST('urlfile'))); - else setEventMessage($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), 'errors'); + if ($ret) setEventMessages($langs->trans("FileWasRemoved", GETPOST('urlfile')), null, 'mesgs'); + else setEventMessages($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), null, 'errors'); } if ($action == 'update_extras') @@ -910,7 +910,7 @@ if (empty($reshook)) if ($socid <1) { - setEventMessage($langs->trans('ErrorFieldRequired',$langs->transnoentities('Supplier')), 'errors'); + setEventMessages($langs->trans('ErrorFieldRequired',$langs->transnoentities('Supplier')), null, 'errors'); $action='create'; $error++; } @@ -1190,7 +1190,7 @@ if (empty($reshook)) $mailfile = new CMailFile($subject,$sendto,$from,$message,$filepath,$mimetype,$filename,$sendtocc,'',$deliveryreceipt,-1); if ($mailfile->error) { - setEventMessage($mailfile->error, 'errors'); + setEventMessages($mailfile->error, $mailfile->errors, 'errors'); } else { @@ -1198,7 +1198,7 @@ if (empty($reshook)) if ($result) { $mesg=$langs->trans('MailSuccessfulySent',$mailfile->getValidAddress($from,2),$mailfile->getValidAddress($sendto,2)); // Must not contain " - setEventMessage($mesg); + setEventMessages($mesg, null, 'mesgs'); $error=0; @@ -1219,7 +1219,7 @@ if (empty($reshook)) if ($error) { - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } else { @@ -1242,7 +1242,7 @@ if (empty($reshook)) $mesg = 'No mail sent. Feature is disabled by option MAIN_DISABLE_ALL_MAILS'; } - setEventMessage($mesg, 'errors'); + setEventMessages($mesg, null, 'errors'); } } /* } @@ -1257,14 +1257,14 @@ if (empty($reshook)) else { $langs->load("errors"); - setEventMessage($langs->trans('ErrorCantReadFile',$file), 'errors'); + setEventMessages($langs->trans('ErrorCantReadFile',$file), null, 'errors'); dol_syslog('Failed to read file: '.$file); } } else { $langs->load("other"); - setEventMessage($langs->trans('ErrorFailedToReadEntity',$langs->trans("Invoice")), 'errors'); + setEventMessages($langs->trans('ErrorFailedToReadEntity',$langs->trans("Invoice")), null, 'errors'); dol_syslog('Impossible de lire les donnees de la facture. Le fichier facture n\'a peut-etre pas ete genere.'); } } @@ -1290,11 +1290,11 @@ if (empty($reshook)) //Is sync supplier web services module activated? and everything filled? if (empty($conf->syncsupplierwebservices->enabled)) { - setEventMessage($langs->trans("WarningModuleNotActive",$langs->transnoentities("Module2650Name"))); + setEventMessages($langs->trans("WarningModuleNotActive",$langs->transnoentities("Module2650Name")), null, 'mesgs'); } else if (empty($ws_url) || empty($ws_key)) { - setEventMessage($langs->trans("ErrorWebServicesFieldsRequired"), 'errors'); + setEventMessages($langs->trans("ErrorWebServicesFieldsRequired"), null, 'errors'); } else if (empty($ws_user) || empty($ws_password) || empty($ws_thirdparty)) { - setEventMessage($langs->trans("ErrorFieldsRequired"), 'errors'); + setEventMessages($langs->trans("ErrorFieldsRequired"),null, 'errors'); } else { @@ -1349,15 +1349,15 @@ if (empty($reshook)) if (empty($result_order["result"]["result_code"])) //No result, check error str { - setEventMessage($langs->trans("SOAPError")." '".$soapclient_order->error_str."'", 'errors'); + setEventMessages($langs->trans("SOAPError")." '".$soapclient_order->error_str."'", null, 'errors'); } else if ($result_order["result"]["result_code"] != "OK") //Something went wrong { - setEventMessage($langs->trans("SOAPError")." '".$result_order["result"]["result_code"]."' - '".$result_order["result"]["result_label"]."'", 'errors'); + setEventMessages($langs->trans("SOAPError")." '".$result_order["result"]["result_code"]."' - '".$result_order["result"]["result_label"]."'", null, 'errors'); } else { - setEventMessage($langs->trans("RemoteOrderRef")." ".$result_order["ref"], 'mesgs'); + setEventMessages($langs->trans("RemoteOrderRef")." ".$result_order["ref"], null, 'mesgs'); } } } @@ -1382,11 +1382,11 @@ if (empty($reshook)) if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') { $langs->load("errors"); - setEventMessage($langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType"), 'errors'); + setEventMessages($langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType"), null, 'errors'); } else { - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } } @@ -2443,11 +2443,11 @@ elseif (! empty($object->id)) //Is everything filled? if (empty($ws_url) || empty($ws_key)) { - setEventMessage($langs->trans("ErrorWebServicesFieldsRequired"), 'errors'); + setEventMessages($langs->trans("ErrorWebServicesFieldsRequired"), null, 'errors'); $mode = "init"; $error_occurred = true; //Don't allow to set the user/pass if thirdparty fields are not filled } else if ($mode != "init" && (empty($ws_user) || empty($ws_password))) { - setEventMessage($langs->trans("ErrorFieldsRequired"), 'errors'); + setEventMessages($langs->trans("ErrorFieldsRequired"), null, 'errors'); $mode = "init"; } @@ -2511,7 +2511,7 @@ elseif (! empty($object->id)) $ws_thirdparty = $result_user["user"]["fk_thirdparty"]; if (empty($ws_thirdparty)) { - setEventMessage($langs->trans("RemoteUserMissingAssociatedSoc"), 'errors'); + setEventMessages($langs->trans("RemoteUserMissingAssociatedSoc"), null, 'errors'); $error_occurred = true; } else @@ -2534,7 +2534,7 @@ elseif (! empty($object->id)) $result_product = $soapclient_product->call("getProductOrService", $ws_parameters, $ws_ns, ''); if (!$result_product) { - setEventMessage($line_id.$langs->trans("SOAPError")." ".$soapclient_product->error_str." - ".$soapclient_product->response, 'errors'); + setEventMessages($line_id.$langs->trans("SOAPError")." ".$soapclient_product->error_str." - ".$soapclient_product->response, null, 'errors'); $error_occurred = true; break; } @@ -2543,17 +2543,17 @@ elseif (! empty($object->id)) $status_code = $result_product["result"]["result_code"]; if (empty($status_code)) //No result, check error str { - setEventMessage($langs->trans("SOAPError")." '".$soapclient_order->error_str."'", 'errors'); + setEventMessages($langs->trans("SOAPError")." '".$soapclient_order->error_str."'", null, 'errors'); } else if ($status_code != "OK") //Something went wrong { if ($status_code == "NOT_FOUND") { - setEventMessage($line_id.$langs->trans("SupplierMissingRef")." '".$ref_supplier."'", 'warnings'); + setEventMessages($line_id.$langs->trans("SupplierMissingRef")." '".$ref_supplier."'", null, 'warnings'); } else { - setEventMessage($line_id.$langs->trans("ResponseNonOK")." '".$status_code."' - '".$result_product["result"]["result_label"]."'", 'errors'); + setEventMessages($line_id.$langs->trans("ResponseNonOK")." '".$status_code."' - '".$result_product["result"]["result_label"]."'", null, 'errors'); $error_occurred = true; break; } @@ -2578,12 +2578,12 @@ elseif (! empty($object->id)) } if ($local_price != NULL && $local_price != $supplier_price) { - setEventMessage($line_id.$langs->trans("RemotePriceMismatch")." ".$supplier_price." - ".$local_price, 'warnings'); + setEventMessages($line_id.$langs->trans("RemotePriceMismatch")." ".$supplier_price." - ".$local_price, null, 'warnings'); } // Check if is in sale if (empty($result_product["product"]["status_tosell"])) { - setEventMessage($line_id.$langs->trans("ProductStatusNotOnSellShort")." '".$ref_supplier."'", 'warnings'); + setEventMessages($line_id.$langs->trans("ProductStatusNotOnSellShort")." '".$ref_supplier."'", null, 'warnings'); } } } @@ -2591,17 +2591,17 @@ elseif (! empty($object->id)) } elseif ($user_status_code == "PERMISSION_DENIED") { - setEventMessage($langs->trans("RemoteUserNotPermission"), 'errors'); + setEventMessages($langs->trans("RemoteUserNotPermission"), null, 'errors'); $error_occurred = true; } elseif ($user_status_code == "BAD_CREDENTIALS") { - setEventMessage($langs->trans("RemoteUserBadCredentials"), 'errors'); + setEventMessages($langs->trans("RemoteUserBadCredentials"), null, 'errors'); $error_occurred = true; } else { - setEventMessage($langs->trans("ResponseNonOK")." '".$user_status_code."'", 'errors'); + setEventMessages($langs->trans("ResponseNonOK")." '".$user_status_code."'", null, 'errors'); $error_occurred = true; } diff --git a/htdocs/fourn/commande/contact.php b/htdocs/fourn/commande/contact.php index b8eabb9be6c..8ced1e9844c 100644 --- a/htdocs/fourn/commande/contact.php +++ b/htdocs/fourn/commande/contact.php @@ -46,7 +46,7 @@ $object = new CommandeFournisseur($db); /* - * Ajout d'un nouveau contact + * Add a new contact */ if ($action == 'addcontact' && $user->rights->fournisseur->commande->creer) @@ -69,16 +69,16 @@ if ($action == 'addcontact' && $user->rights->fournisseur->commande->creer) if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') { $langs->load("errors"); - setEventMessage($langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType"), 'errors'); + setEventMessages($langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType"), null, 'errors'); } else { - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } } -// bascule du statut d'un contact +// Toggle the status of a contact else if ($action == 'swapstatut' && $user->rights->fournisseur->commande->creer) { if ($object->fetch($id)) @@ -91,7 +91,7 @@ else if ($action == 'swapstatut' && $user->rights->fournisseur->commande->creer) } } -// Efface un contact +// Deleting a contact else if ($action == 'deletecontact' && $user->rights->fournisseur->commande->creer) { $object->fetch($id); @@ -155,7 +155,7 @@ if ($id > 0 || ! empty($ref)) print '</td>'; print '</tr>'; - // Fournisseur + // Supplier print '<tr><td>'.$langs->trans("Supplier")."</td>"; print '<td colspan="2">'.$soc->getNomUrl(1,'supplier').'</td>'; print '</tr>'; @@ -172,7 +172,7 @@ if ($id > 0 || ! empty($ref)) } else { - // Contrat non trouv + // Contact not found print "ErrorRecordNotFound"; } } diff --git a/htdocs/fourn/commande/dispatch.php b/htdocs/fourn/commande/dispatch.php index 57ee36eb8a3..fd44b987f94 100644 --- a/htdocs/fourn/commande/dispatch.php +++ b/htdocs/fourn/commande/dispatch.php @@ -148,7 +148,7 @@ if ($action == 'dispatch' && $user->rights->fournisseur->commande->receptionner) { dol_syslog('No dispatch for line '.$key.' as no warehouse choosed'); $text = $langs->transnoentities('Warehouse').', '.$langs->transnoentities('Line').' ' .($numline); - setEventMessage($langs->trans('ErrorFieldRequired',$text), 'errors'); + setEventMessages($langs->trans('ErrorFieldRequired',$text), null, 'errors'); $error++; } @@ -187,7 +187,7 @@ if ($action == 'dispatch' && $user->rights->fournisseur->commande->receptionner) { dol_syslog('No dispatch for line '.$key.' as no warehouse choosed'); $text = $langs->transnoentities('Warehouse').', '.$langs->transnoentities('Line').' ' .($numline).'-'.($reg[1]+1); - setEventMessage($langs->trans('ErrorFieldRequired',$text), 'errors'); + setEventMessages($langs->trans('ErrorFieldRequired',$text), null, 'errors'); $error++; } @@ -195,7 +195,7 @@ if ($action == 'dispatch' && $user->rights->fournisseur->commande->receptionner) { dol_syslog('No dispatch for line '.$key.' as serial/eat-by/sellby date are not set'); $text = $langs->transnoentities('atleast1batchfield').', '.$langs->transnoentities('Line').' ' .($numline).'-'.($reg[1]+1); - setEventMessage($langs->trans('ErrorFieldRequired',$text), 'errors'); + setEventMessages($langs->trans('ErrorFieldRequired',$text), null, 'errors'); $error++; } -- GitLab From 238f9770025da83d3139cc73660d8f00840464c4 Mon Sep 17 00:00:00 2001 From: Ion Agorria <ion@agorria.com> Date: Tue, 8 Dec 2015 15:45:24 +0100 Subject: [PATCH 130/197] JS error preventing hiding of dates at object line The "if (CKEDITOR)" gives "ReferenceError: CKEDITOR is not defined" at JS console causing the next code to don't execute, is this code obsolete? --- htdocs/core/tpl/objectline_create.tpl.php | 6 ------ 1 file changed, 6 deletions(-) diff --git a/htdocs/core/tpl/objectline_create.tpl.php b/htdocs/core/tpl/objectline_create.tpl.php index d7949fa1d52..a2f4ebd4d69 100644 --- a/htdocs/core/tpl/objectline_create.tpl.php +++ b/htdocs/core/tpl/objectline_create.tpl.php @@ -517,12 +517,6 @@ jQuery(document).ready(function() { { /* focus work on a standard textarea but not if field was replaced with CKEDITOR */ jQuery('#dp_desc').focus(); - /* focus if CKEDITOR */ - if (CKEDITOR) - { - var editor = CKEDITOR.instances['dp_desc']; - if (editor) { editor.focus(); } - } } if (jQuery('#select_type').val() == '0') jQuery('#trlinefordates').hide(); else jQuery('#trlinefordates').show(); -- GitLab From 898f637457dbdb7f023e002b6f1b03c83a12e3db Mon Sep 17 00:00:00 2001 From: BENKE Charlie <charles.fr@benke.fr> Date: Tue, 8 Dec 2015 18:02:25 +0100 Subject: [PATCH 131/197] Update fichinter.php --- htdocs/admin/fichinter.php | 1 - 1 file changed, 1 deletion(-) diff --git a/htdocs/admin/fichinter.php b/htdocs/admin/fichinter.php index 50d2bf3cead..fd34d01f620 100644 --- a/htdocs/admin/fichinter.php +++ b/htdocs/admin/fichinter.php @@ -578,4 +578,3 @@ print '<br>'; llxFooter(); $db->close(); - -- GitLab From 4885c64ab3ff518f2878085c669ff786614ee0a7 Mon Sep 17 00:00:00 2001 From: Andreas Pachler <apachler@paan-systems.com> Date: Wed, 9 Dec 2015 09:32:21 +0100 Subject: [PATCH 132/197] added social charges for Austria --- htdocs/install/mysql/data/llx_c_chargesociales.sql | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/htdocs/install/mysql/data/llx_c_chargesociales.sql b/htdocs/install/mysql/data/llx_c_chargesociales.sql index 892e51d0fba..d598f6fef60 100644 --- a/htdocs/install/mysql/data/llx_c_chargesociales.sql +++ b/htdocs/install/mysql/data/llx_c_chargesociales.sql @@ -55,3 +55,15 @@ insert into llx_c_chargesociales (id, libelle, deductible, active, code, fk_pays insert into llx_c_chargesociales (id, libelle, deductible, active, code, fk_pays) values (220, 'Prime existence', 1,1,'TAXBEPRIEXI' ,'2'); insert into llx_c_chargesociales (id, libelle, deductible, active, code, fk_pays) values (230, 'Precompte immobilier', 1,1,'TAXBEPREIMMO','2'); +-- +-- Austria +-- +insert into llx_c_chargesociales (id, libelle, deductible, active, code, fk_pays) values (4101, 'Krankenversicherung', 1,1,'TAXATKV' ,'41'); +insert into llx_c_chargesociales (id, libelle, deductible, active, code, fk_pays) values (4102, 'Unfallversicherung', 1,1,'TAXATUV' ,'41'); +insert into llx_c_chargesociales (id, libelle, deductible, active, code, fk_pays) values (4103, 'Pensionsversicherung', 1,1,'TAXATPV' ,'41'); +insert into llx_c_chargesociales (id, libelle, deductible, active, code, fk_pays) values (4104, 'Arbeitslosenversicherung', 1,1,'TAXATAV' ,'41'); +insert into llx_c_chargesociales (id, libelle, deductible, active, code, fk_pays) values (4105, 'Insolvenzentgeltsicherungsfond', 1,1,'TAXATIESG' ,'41'); +insert into llx_c_chargesociales (id, libelle, deductible, active, code, fk_pays) values (4106, 'Wohnbauförderung', 1,1,'TAXATWF' ,'41'); +insert into llx_c_chargesociales (id, libelle, deductible, active, code, fk_pays) values (4107, 'Arbeiterkammerumlage', 1,1,'TAXATAK' ,'41'); +insert into llx_c_chargesociales (id, libelle, deductible, active, code, fk_pays) values (4108, 'Mitarbeitervorsorgekasse', 1,1,'TAXATMVK' ,'41'); +insert into llx_c_chargesociales (id, libelle, deductible, active, code, fk_pays) values (4109, 'Familienlastenausgleichsfond', 1,1,'TAXATFLAF' ,'41'); -- GitLab From ea1a81f5f4dc8b02d47a8d0bf67ce594f6a44724 Mon Sep 17 00:00:00 2001 From: Florian HENRY <florian.henry@open-concept.pro> Date: Wed, 9 Dec 2015 11:53:38 +0100 Subject: [PATCH 133/197] FIX : Comptability when multiple account charts --- htdocs/accountancy/customer/list.php | 16 +++++++++++----- htdocs/accountancy/supplier/list.php | 4 ++-- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/htdocs/accountancy/customer/list.php b/htdocs/accountancy/customer/list.php index 820596de166..4800737528d 100644 --- a/htdocs/accountancy/customer/list.php +++ b/htdocs/accountancy/customer/list.php @@ -87,10 +87,10 @@ if (! $user->rights->accounting->ventilation->dispatch) accessforbidden(); $formventilation = new FormVentilation($db); - $accounting = new AccountingAccount($db); -$aarowid_s = $accounting->fetch('', ACCOUNTING_SERVICE_SOLD_ACCOUNT); -$aarowid_p = $accounting->fetch('', ACCOUNTING_PRODUCT_SOLD_ACCOUNT); +$aarowid_s = $accounting->fetch('', $conf->global->ACCOUNTING_SERVICE_SOLD_ACCOUNT,1); +$aarowid_p = $accounting->fetch('',$conf->global->ACCOUNTING_PRODUCT_SOLD_ACCOUNT,1); + // Purge search criteria if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) { @@ -278,6 +278,8 @@ if ($result) { $code_sell_p_notset = ''; $objp->aarowid_suggest = $objp->aarowid; + + if (! empty($objp->code_sell)) { $objp->code_sell_p = $objp->code_sell; } else { @@ -290,12 +292,14 @@ if ($result) { } if ($objp->type_l == 1) { $objp->code_sell_l = (! empty($conf->global->ACCOUNTING_SERVICE_SOLD_ACCOUNT) ? $conf->global->ACCOUNTING_SERVICE_SOLD_ACCOUNT : $langs->trans("CodeNotDef")); - if ($objp->aarowid == '') + if ($objp->aarowid == '') { $objp->aarowid_suggest = $aarowid_s; + } } elseif ($objp->type_l == 0) { $objp->code_sell_l = (! empty($conf->global->ACCOUNTING_PRODUCT_SOLD_ACCOUNT) ? $conf->global->ACCOUNTING_PRODUCT_SOLD_ACCOUNT : $langs->trans("CodeNotDef")); - if ($objp->aarowid == '') + if ($objp->aarowid == '') { $objp->aarowid_suggest = $aarowid_p; + } } if ($objp->code_sell_l != $objp->code_sell_p) $code_sell_p_l_differ = 'color:red'; @@ -311,10 +315,12 @@ if ($result) { $product_static->id = $objp->product_id; $product_static->type = $objp->type; print '<td>'; + if ($product_static->id) print $product_static->getNomUrl(1); else print ' '; + print '</td>'; print '<td style="' . $code_sell_p_l_differ . '">' . dol_trunc($objp->product_label, 24) . '</td>'; diff --git a/htdocs/accountancy/supplier/list.php b/htdocs/accountancy/supplier/list.php index 891d8b1439e..c94c8612535 100644 --- a/htdocs/accountancy/supplier/list.php +++ b/htdocs/accountancy/supplier/list.php @@ -94,8 +94,8 @@ $formventilation = new FormVentilation($db); $accounting = new AccountingAccount($db); // TODO: we should need to check if result is a really exist accountaccount rowid..... -$aarowid_s = $accounting->fetch('', ACCOUNTING_SERVICE_BUY_ACCOUNT); -$aarowid_p = $accounting->fetch('', ACCOUNTING_PRODUCT_BUY_ACCOUNT); +$aarowid_s = $accounting->fetch('', $conf->global->ACCOUNTING_SERVICE_BUY_ACCOUNT,1); +$aarowid_p = $accounting->fetch('', $conf->global->ACCOUNTING_PRODUCT_BUY_ACCOUNT,1); // Purge search criteria if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both test are required to be compatible with all browsers -- GitLab From 96a95d6ae18f3afec8970429c01a5154e3b85001 Mon Sep 17 00:00:00 2001 From: Florian HENRY <florian.henry@open-concept.pro> Date: Wed, 9 Dec 2015 12:55:08 +0100 Subject: [PATCH 134/197] Debug accountancy on 3.9 --- htdocs/accountancy/bookkeeping/list.php | 29 ++++- .../accountancy/class/bookkeeping.class.php | 30 +++++ .../class/html.formventilation.class.php | 2 +- htdocs/accountancy/journal/bankjournal.php | 114 ++++++------------ .../accountancy/journal/purchasesjournal.php | 4 +- htdocs/core/lib/report.lib.php | 12 +- .../install/mysql/migration/3.8.0-3.9.0.sql | 3 + .../tables/llx_accounting_bookkeeping.sql | 2 +- 8 files changed, 112 insertions(+), 84 deletions(-) diff --git a/htdocs/accountancy/bookkeeping/list.php b/htdocs/accountancy/bookkeeping/list.php index b9164329031..ec108738647 100644 --- a/htdocs/accountancy/bookkeeping/list.php +++ b/htdocs/accountancy/bookkeeping/list.php @@ -30,6 +30,7 @@ require '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/accounting.lib.php'; require_once DOL_DOCUMENT_ROOT.'/accountancy/class/html.formventilation.class.php'; require_once DOL_DOCUMENT_ROOT.'/accountancy/class/bookkeeping.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; // Langs $langs->load("accountancy"); @@ -52,6 +53,7 @@ if ($sortfield == "") $offset = $conf->liste_limit * $page; $formventilation = new FormVentilation($db); +$formother = new FormOther($db); if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both test are required to be compatible with all browsers { @@ -77,7 +79,20 @@ if ($action == 'delbookkeeping') { setEventMessages($object->error, $object->errors, 'errors'); } } -} // Export +} +elseif ($action == 'delbookkeepingyear') { + + $delyear = GETPOST('delyear', 'int'); + + if (! empty($delyear)) { + $object = new BookKeeping($db); + $result = $object->delete_by_year($delyear); + Header("Location: list.php"); + if ($result < 0) { + setEventMessages($object->error, $object->errors, 'errors'); + } + } +}// Export else if ($action == 'export_csv') { header('Content-Type: text/csv'); @@ -147,7 +162,7 @@ else { print_barre_liste($langs->trans("Bookkeeping"), $page, $_SERVER["PHP_SELF"], "", $sortfield, $sortorder, '', $num); - print '<form name="add" action="' . $_SERVER["PHP_SELF"] . '" method="POST">'; + /*print '<form name="add" action="' . $_SERVER["PHP_SELF"] . '" method="POST">'; print '<input type="hidden" name="token" value="' . $_SESSION['newtoken'] . '">'; print '<input type="hidden" name="action" value="delbookkeeping">'; @@ -155,6 +170,16 @@ else { print '<div class="inline-block divButAction"><input type="submit" class="butAction" value="' . $langs->trans("DelBookKeeping") . '" /></div>'; + print '</form>';*/ + + print '<form name="add" action="' . $_SERVER["PHP_SELF"] . '" method="POST">'; + print '<input type="hidden" name="token" value="' . $_SESSION['newtoken'] . '">'; + print '<input type="hidden" name="action" value="delbookkeepingyear">'; + + print $formother->select_year(GETPOST('delyear'),'delyear'); + + print '<div class="inline-block divButAction"><input type="submit" class="butAction" value="' . $langs->trans("DelBookKeeping") . '" /></div>'; + print '</form>'; print '<form name="add" action="' . $_SERVER["PHP_SELF"] . '" method="POST">'; diff --git a/htdocs/accountancy/class/bookkeeping.class.php b/htdocs/accountancy/class/bookkeeping.class.php index 141b122690c..2eb952a42a3 100644 --- a/htdocs/accountancy/class/bookkeeping.class.php +++ b/htdocs/accountancy/class/bookkeeping.class.php @@ -372,6 +372,36 @@ class BookKeeping extends CommonObject $this->db->commit(); return 1; } + + /** + * Delete bookkepping by importkey + * + * @param string $importkey Import key + * @return int Result + */ + function delete_by_year($delyear) { + $this->db->begin(); + + // first check if line not yet in bookkeeping + $sql = "DELETE"; + $sql .= " FROM " . MAIN_DB_PREFIX . "accounting_bookkeeping "; + $sql .= " WHERE YEAR(doc_date) = ".$delyear; + + $resql = $this->db->query($sql); + + if (! $resql) { + $this->errors[] = "Error " . $this->db->lasterror(); + foreach ( $this->errors as $errmsg ) { + dol_syslog(get_class($this) . "::delete " . $errmsg, LOG_ERR); + $this->error .= ($this->error ? ', ' . $errmsg : $errmsg); + } + $this->db->rollback(); + return - 1; + } + + $this->db->commit(); + return 1; + } /** * Create object into database diff --git a/htdocs/accountancy/class/html.formventilation.class.php b/htdocs/accountancy/class/html.formventilation.class.php index de94d645c92..f92f5b3ab88 100644 --- a/htdocs/accountancy/class/html.formventilation.class.php +++ b/htdocs/accountancy/class/html.formventilation.class.php @@ -70,7 +70,7 @@ class FormVentilation extends Form $selected = ' selected '; } - $out .= '<OPTION value="' . $obj->import_key . '"' . $selected . '>' . $obj->import_key . '</OPTION>'; + $out .= '<OPTION value="' . $obj->import_key . '"' . $selected . '>' . dol_print_date($obj->import_key,'dayhourtext') . '</OPTION>'; $i ++; } diff --git a/htdocs/accountancy/journal/bankjournal.php b/htdocs/accountancy/journal/bankjournal.php index be136a38b98..34ebcaf43a9 100644 --- a/htdocs/accountancy/journal/bankjournal.php +++ b/htdocs/accountancy/journal/bankjournal.php @@ -16,7 +16,7 @@ * 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 fr more details. + * 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, see <http://www.gnu.org/licenses/>. @@ -57,7 +57,7 @@ $langs->load("bank"); $langs->load('bills'); $langs->load("accountancy"); -$id_accountancy_journal = GETPOST('id_account','int'); +$id_bank_account = GETPOST('id_account','int'); $date_startmonth = GETPOST('date_startmonth'); $date_startday = GETPOST('date_startday'); @@ -70,17 +70,12 @@ $action = GETPOST('action'); $now = dol_now(); // Security check -if ($user->societe_id > 0) +if ($user->societe_id > 0 && empty($id_bank_account)) accessforbidden(); /* * View */ -if (empty($id_accountancy_journal)) -{ - accessforbidden(); -} - $year_current = strftime("%Y", dol_now()); $pastmonth = strftime("%m", dol_now()) - 1; $pastmonthyear = $year_current; @@ -107,7 +102,7 @@ $sql .= " FROM " . MAIN_DB_PREFIX . "bank as b"; $sql .= " JOIN " . MAIN_DB_PREFIX . "bank_account as ba on b.fk_account=ba.rowid"; $sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "bank_url as bu1 ON bu1.fk_bank = b.rowid AND bu1.type='company'"; $sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "societe as soc on bu1.url_id=soc.rowid"; -$sql .= " WHERE ba.rowid=".$id_accountancy_journal; +$sql .= " WHERE ba.rowid=".$id_bank_account; if (! empty($conf->multicompany->enabled)) { $sql .= " AND ba.entity = " . $conf->entity; } @@ -125,7 +120,12 @@ $paymentdonstatic = new PaymentDonation($db); $paymentvatstatic = new TVA($db); $paymentsalstatic = new PaymentSalary($db); -dol_syslog("accountancy/journal/bankjournal.php:: sql=" . $sql, LOG_DEBUG); +// Get code of finance journal +$bank_code_journal = new Account($db); +$result=$bank_code_journal->fetch($id_bank_account); +$journal=$bank_code_journal->accountancy_journal; + +dol_syslog("accountancy/journal/bankjournal.php", LOG_DEBUG); $result = $db->query($sql); if ($result) { @@ -288,8 +288,10 @@ if ($result) { */ // Write bookkeeping -if ($action == 'writeBookKeeping') +if ($action == 'writebookkeeping') { + $now=dol_now(); + $error = 0; foreach ( $tabpay as $key => $val ) { @@ -309,8 +311,9 @@ if ($action == 'writeBookKeeping') $bookkeeping->sens = ($mt >= 0) ? 'D' : 'C'; $bookkeeping->debit = ($mt >= 0 ? $mt : 0); $bookkeeping->credit = ($mt < 0 ? - $mt : 0); - $bookkeeping->code_journal = $conf->global->ACCOUNTING_BANK_JOURNAL; + $bookkeeping->code_journal = $journal; $bookkeeping->fk_user_author = $user->id; + $bookkeeping->date_create=$now; if ($tabtype[$key] == 'payment') { @@ -327,7 +330,7 @@ if ($action == 'writeBookKeeping') } } else if ($tabtype[$key] == 'payment_supplier') { - $sqlmid = 'SELECT facf.facnumber'; + $sqlmid = 'SELECT facf.ref_supplier,facf.ref'; $sqlmid .= " FROM " . MAIN_DB_PREFIX . "facture_fourn facf "; $sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "paiementfourn_facturefourn as payfacf ON payfacf.fk_facturefourn=facf.rowid"; $sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "paiementfourn as payf ON payfacf.fk_paiementfourn=payf.rowid"; @@ -336,7 +339,7 @@ if ($action == 'writeBookKeeping') $resultmid = $db->query($sqlmid); if ($resultmid) { $objmid = $db->fetch_object($resultmid); - $bookkeeping->doc_ref = $objmid->facnumber; + $bookkeeping->doc_ref = $objmid->ref_supplier.' ('.$objmid->ref.')';; } } @@ -360,8 +363,9 @@ if ($action == 'writeBookKeeping') $bookkeeping->sens = ($mt < 0) ? 'D' : 'C'; $bookkeeping->debit = ($mt < 0 ? - $mt : 0); $bookkeeping->credit = ($mt >= 0) ? $mt : 0; - $bookkeeping->code_journal = $conf->global->ACCOUNTING_BANK_JOURNAL; + $bookkeeping->code_journal = $journal; $bookkeeping->fk_user_author = $user->id; + $bookkeeping->date_create=$now; if ($tabtype[$key] == 'sc') { $bookkeeping->code_tiers = ''; @@ -383,7 +387,7 @@ if ($action == 'writeBookKeeping') $bookkeeping->numero_compte = $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER; } else if ($tabtype[$key] == 'payment_supplier') { - $sqlmid = 'SELECT facf.facnumber'; + $sqlmid = 'SELECT facf.ref_supplier,facf.ref'; $sqlmid .= " FROM " . MAIN_DB_PREFIX . "facture_fourn facf "; $sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "paiementfourn_facturefourn as payfacf ON payfacf.fk_facturefourn=facf.rowid"; $sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "paiementfourn as payf ON payfacf.fk_paiementfourn=payf.rowid"; @@ -392,7 +396,7 @@ if ($action == 'writeBookKeeping') $resultmid = $db->query($sqlmid); if ($resultmid) { $objmid = $db->fetch_object($resultmid); - $bookkeeping->doc_ref = $objmid->facnumber; + $bookkeeping->doc_ref = $objmid->ref_supplier.' ('.$objmid->ref.')'; } $bookkeeping->code_tiers = $k; $bookkeeping->numero_compte = $conf->global->ACCOUNTING_ACCOUNT_SUPPLIER; @@ -433,7 +437,6 @@ if ($action == 'writeBookKeeping') if ($action == 'export_csv') { $sep = $conf->global->ACCOUNTING_EXPORT_SEPARATORCSV; - $journal = $conf->global->ACCOUNTING_BANK_JOURNAL; include DOL_DOCUMENT_ROOT.'/accountancy/tpl/export_journal.tpl.php'; @@ -443,16 +446,20 @@ if ($action == 'export_csv') { $sep = ";"; - foreach ( $tabpay as $key => $val ) { + foreach ($tabpay as $key => $val) + { $date = dol_print_date($db->jdate($val["date"]), '%d%m%Y'); $companystatic->id = $tabcompany[$key]['id']; $companystatic->name = $tabcompany[$key]['name']; + $companystatic->client = $tabcompany[$key]['code_client']; + + $date = dol_print_date($db->jdate($val["date"]), '%d%m%Y'); // Bank foreach ( $tabbq[$key] as $k => $mt ) { print $date . $sep; - print $bank_journal . $sep; + print $journal . $sep; print length_accountg(html_entity_decode($k)) . $sep; print $sep; print ($mt < 0 ? 'C' : 'D') . $sep; @@ -557,67 +564,26 @@ if ($action == 'export_csv') } } } -} -else +} +else { - $form = new Form($db); - llxHeader('', $langs->trans("BankJournal")); + llxHeader('', $langs->trans("FinanceJournal")); - $namereport = $langs->trans("BankJournal"); - $description = $langs->trans("DescBankJournal"); + $nom = $langs->trans("FinanceJournal" . ' - ' . $journal); + $builddate = time(); + $description = $langs->trans("DescFinanceJournal") . '<br>'; $period = $form->select_date($date_start, 'date_start', 0, 0, 0, '', 1, 0, 1) . ' - ' . $form->select_date($date_end, 'date_end', 0, 0, 0, '', 1, 0, 1); - // Report - $h=0; - $head[$h][0] = $_SERVER["PHP_SELF"].'?id_account='.$id_accountancy_journal; - $head[$h][1] = $langs->trans("Report"); - $head[$h][2] = 'card'; - - dol_fiche_head($head, 'card', $langs->trans("BankJournal"), 0, 'payment'); - - print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'?id_account='.$id_accountancy_journal.'">'; - print '<table width="100%" class="border">'; - - // Title - print '<tr>'; - print '<td width="110">'.$langs->trans("ReportName").'</td>'; - print '<td colspan="3">'.$namereport.'</td>'; - print '</td>'; - print '</tr>'; - - // Period report - print '<tr>'; - print '<td>'.$langs->trans("ReportPeriod").'</td>'; - if (! $periodlink) print '<td colspan="3">'; - else print '<td>'; - if ($period) print $period; - if ($periodlink) print '</td><td colspan="2">'.$periodlink; - print '</td>'; - print '</tr>'; - - // Description - print '<tr>'; - print '<td>'.$langs->trans("ReportDescription").'</td>'; - print '<td colspan="3">'.$description.'</td>'; - print '</tr>'; - - print '<tr>'; - print '<td colspan="4" align="center"><input type="submit" class="button" name="submit" value="'.$langs->trans("Refresh").'"></td>'; - print '</tr>'; - - print '</table>'; - - print '</form>'; - - print '</div>'; - // End report + $varlink = 'id_account='.$id_bank_account; + report_header($nom, $nomlink, $period, $periodlink, $description, $builddate, $exportlink, array('action' => ''), '', $varlink); + print '<input type="button" class="button" style="float: right;" value="' . $langs->trans("Export") . '" onclick="launch_export();" />'; - print '<input type="button" class="button" value="' . $langs->trans("WriteBookKeeping") . '" onclick="writeBookKeeping();" />'; - + print '<input type="button" class="button" value="' . $langs->trans("WriteBookKeeping") . '" onclick="writebookkeeping();" />'; + print ' <script type="text/javascript"> function launch_export() { @@ -625,8 +591,8 @@ else $("div.fiche div.tabBar form input[type=\"submit\"]").click(); $("div.fiche div.tabBar form input[name=\"action\"]").val(""); } - function writeBookKeeping() { - $("div.fiche div.tabBar form input[name=\"action\"]").val("writeBookKeeping"); + function writebookkeeping() { + $("div.fiche div.tabBar form input[name=\"action\"]").val("writebookkeeping"); $("div.fiche div.tabBar form input[type=\"submit\"]").click(); $("div.fiche div.tabBar form input[name=\"action\"]").val(""); } diff --git a/htdocs/accountancy/journal/purchasesjournal.php b/htdocs/accountancy/journal/purchasesjournal.php index 538edaa471d..9d41a7cf07c 100644 --- a/htdocs/accountancy/journal/purchasesjournal.php +++ b/htdocs/accountancy/journal/purchasesjournal.php @@ -86,7 +86,7 @@ if (empty($date_start) || empty($date_end)) // We define date_start and date_end $p = explode(":", $conf->global->MAIN_INFO_SOCIETE_COUNTRY); $idpays = $p[0]; -$sql = "SELECT f.rowid, f.ref, f.type, f.datef as df, f.libelle,"; +$sql = "SELECT f.rowid, f.ref, f.type, f.datef as df, f.libelle,f.ref_supplier,"; $sql .= " fd.rowid as fdid, fd.description, fd.total_ttc, fd.tva_tx, fd.total_ht, fd.tva as total_tva, fd.product_type,"; $sql .= " s.rowid as socid, s.nom as name, s.code_compta_fournisseur, s.fournisseur,"; $sql .= " s.code_compta_fournisseur, p.accountancy_code_buy , ct.accountancy_code_buy as account_tva, aa.rowid as fk_compte, aa.account_number as compte, aa.label as label_compte"; @@ -137,7 +137,7 @@ if ($result) { $compta_tva = (! empty($obj->account_tva) ? $obj->account_tva : $cpttva); $tabfac[$obj->rowid]["date"] = $obj->df; - $tabfac[$obj->rowid]["ref"] = $obj->ref; + $tabfac[$obj->rowid]["ref"] = $obj->ref_supplier.' ('.$obj->ref.')'; $tabfac[$obj->rowid]["type"] = $obj->type; $tabfac[$obj->rowid]["description"] = $obj->description; $tabfac[$obj->rowid]["fk_facturefourndet"] = $obj->fdid; diff --git a/htdocs/core/lib/report.lib.php b/htdocs/core/lib/report.lib.php index 8946449d5ac..9441482d163 100644 --- a/htdocs/core/lib/report.lib.php +++ b/htdocs/core/lib/report.lib.php @@ -35,9 +35,10 @@ * @param string $exportlink Link for export or '' * @param array $moreparam Array with list of params to add into form * @param string $calcmode Calculation mode +* @param string $varlink Add a variable into the address of the page * @return void */ -function report_header($nom,$variante,$period,$periodlink,$description,$builddate,$exportlink='',$moreparam=array(),$calcmode='') +function report_header($nom,$variante,$period,$periodlink,$description,$builddate,$exportlink='',$moreparam=array(),$calcmode='', $varlink='') { global $langs; @@ -45,14 +46,16 @@ function report_header($nom,$variante,$period,$periodlink,$description,$builddat print "\n\n<!-- debut cartouche rapport -->\n"; + if(! empty($varlink)) $varlink = '?'.$varlink; + $h=0; - $head[$h][0] = $_SERVER["PHP_SELF"]; + $head[$h][0] = $_SERVER["PHP_SELF"].$varlink; $head[$h][1] = $langs->trans("Report"); $head[$h][2] = 'report'; dol_fiche_head($head, 'report'); - print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">'; + print '<form method="POST" action="'.$_SERVER["PHP_SELF"].$varlink.'">'; foreach($moreparam as $key => $value) { print '<input type="hidden" name="'.$key.'" value="'.$value.'">'; @@ -115,7 +118,8 @@ function report_header($nom,$variante,$period,$periodlink,$description,$builddat print '</form>'; - print '</div>'; + dol_fiche_end(); + print "\n<!-- fin cartouche rapport -->\n\n"; } diff --git a/htdocs/install/mysql/migration/3.8.0-3.9.0.sql b/htdocs/install/mysql/migration/3.8.0-3.9.0.sql index 767a7dd0e7a..0dd2575ba55 100755 --- a/htdocs/install/mysql/migration/3.8.0-3.9.0.sql +++ b/htdocs/install/mysql/migration/3.8.0-3.9.0.sql @@ -475,3 +475,6 @@ INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, nc INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('110', 5209, '', 0, '', 'Manuripi', 1); INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('111', 5209, '', 0, '', 'Nicolás Suárez', 1); INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('112', 5209, '', 0, '', 'General Federico Román', 1); + + +ALTER TABLE llx_accounting_bookkeeping CHANGE COLUMN doc_ref doc_ref varchar(255) NOT NULL; \ No newline at end of file diff --git a/htdocs/install/mysql/tables/llx_accounting_bookkeeping.sql b/htdocs/install/mysql/tables/llx_accounting_bookkeeping.sql index 5e2be869a9f..660dd4745b3 100644 --- a/htdocs/install/mysql/tables/llx_accounting_bookkeeping.sql +++ b/htdocs/install/mysql/tables/llx_accounting_bookkeeping.sql @@ -22,7 +22,7 @@ CREATE TABLE llx_accounting_bookkeeping rowid integer NOT NULL AUTO_INCREMENT PRIMARY KEY, doc_date date NOT NULL, doc_type varchar(30) NOT NULL, -- facture_client/reglement_client/facture_fournisseur/reglement_fournisseur - doc_ref varchar(30) NOT NULL, -- facture_client/reglement_client/... reference number + doc_ref varchar(255) NOT NULL, -- facture_client/reglement_client/... reference number fk_doc integer NOT NULL, -- facture_client/reglement_client/... rowid fk_docdet integer NOT NULL, -- facture_client/reglement_client/... line rowid code_tiers varchar(24), -- code tiers -- GitLab From ab274ba1e3de71c38d62fa3aa7154a5fd4e88c96 Mon Sep 17 00:00:00 2001 From: braito4 <braito4@hotmail.com> Date: Wed, 9 Dec 2015 13:10:12 +0100 Subject: [PATCH 135/197] Update list.php Doble page title --- htdocs/resource/list.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/htdocs/resource/list.php b/htdocs/resource/list.php index 24e871de03a..27eeb86d8d8 100644 --- a/htdocs/resource/list.php +++ b/htdocs/resource/list.php @@ -83,8 +83,6 @@ $form=new Form($db); $pagetitle=$langs->trans('ResourcePageIndex'); llxHeader('',$pagetitle,''); -print load_fiche_titre($pagetitle,'','title_generic'); - // Confirmation suppression resource line if ($action == 'delete_resource') { -- GitLab From c0862762a567fec7de8099cf5c8d4dd1e37ef16b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Doursenaud?= <rdoursenaud@gpcsolutions.fr> Date: Wed, 9 Dec 2015 13:23:45 +0100 Subject: [PATCH 136/197] Fix #3930 Removed executable bit These files doesn't contain executable code and may pose a security threat. --- .gitignore | 0 build/.gitignore | 0 build/aps/APP-META-1.1.xml | 0 build/aps/APP-META-1.2.xml | 0 build/aps/README | 0 build/aps/install.forced.php.install | 0 build/debian/conf.php.install | 0 build/debian/control | 0 build/debian/dolibarr.install | 0 build/debian/dolibarr.lintian-overrides | 0 build/debian/dolibarr.templates.futur | 0 build/debian/install.forced.php.install | 0 build/debian/po/POTFILES.in | 0 build/debian/po/fr.po | 0 build/doxygen/doxygen_footer.html | 0 build/doxygen/doxygen_header.html | 0 build/rpm/conf.php | 0 build/rpm/dolibarr-forrpm.patch | 0 build/rpm/dolibarr.desktop | 0 build/rpm/dolibarr_fedora.spec | 0 build/rpm/dolibarr_generic.spec | 0 build/rpm/dolibarr_mandriva.spec | 0 build/rpm/dolibarr_opensuse.spec | 0 build/rpm/file_contexts.dolibarr | 0 build/rpm/install.forced.php.fedora | 0 build/rpm/install.forced.php.generic | 0 build/rpm/install.forced.php.mandriva | 0 build/rpm/install.forced.php.opensuse | 0 dev/codesniffer/README | 0 dev/codesniffer/php.ini | 0 dev/codesniffer/ruleset.dtd | 0 dev/codesniffer/ruleset.xml | 0 dev/codetemplates/README | 0 dev/codetemplates/codetemplates.dtd | 0 dev/codetemplates/codetemplates.xml | 0 .../emulate_oscommerce/llx_osc_categories.sql | 0 .../emulate_oscommerce/llx_osc_customer.key.sql | 0 dev/dbmodel/emulate_oscommerce/llx_osc_customer.sql | 0 dev/dbmodel/emulate_oscommerce/llx_osc_order.sql | 0 dev/dbmodel/emulate_oscommerce/llx_osc_product.sql | 0 dev/examples/README | 0 dev/iso-normes/GURULABS-RPM-GUIDE-v1.0.PDF | Bin dev/iso-normes/address_format.txt | 0 dev/iso-normes/banknumber_format.txt | 0 dev/iso-normes/xmlexport.txt | 0 dev/phpunit/README | 0 dev/phpunit/eclipse_setup_for_pti_phpunit.png | Bin dev/skeletons/build_webservice_from_class.php | 0 dev/test/testtcpdf.php | 0 doc/images/appicon_128.png | Bin doc/images/appicon_16.ico | Bin doc/images/appicon_16.png | Bin doc/images/appicon_32.png | Bin doc/images/appicon_48.ico | Bin doc/images/appicon_64.png | Bin doc/images/dolibarr_73x73.png | Bin doc/images/dolibarr_logo.png | Bin .../core/filemanagerdol/browser/default/browser.css | 0 .../browser/default/images/Folder.gif | Bin .../browser/default/images/FolderUp.gif | Bin .../browser/default/images/icons/32/ai.gif | Bin .../browser/default/images/icons/32/avi.gif | Bin .../browser/default/images/icons/32/bmp.gif | Bin .../browser/default/images/icons/32/cs.gif | Bin .../default/images/icons/32/default.icon.gif | Bin .../browser/default/images/icons/32/dll.gif | Bin .../browser/default/images/icons/32/doc.gif | Bin .../browser/default/images/icons/32/exe.gif | Bin .../browser/default/images/icons/32/fla.gif | Bin .../browser/default/images/icons/32/gif.gif | Bin .../browser/default/images/icons/32/htm.gif | Bin .../browser/default/images/icons/32/html.gif | Bin .../browser/default/images/icons/32/jpg.gif | Bin .../browser/default/images/icons/32/js.gif | Bin .../browser/default/images/icons/32/mdb.gif | Bin .../browser/default/images/icons/32/mp3.gif | Bin .../browser/default/images/icons/32/pdf.gif | Bin .../browser/default/images/icons/32/png.gif | Bin .../browser/default/images/icons/32/ppt.gif | Bin .../browser/default/images/icons/32/rdp.gif | Bin .../browser/default/images/icons/32/swf.gif | Bin .../browser/default/images/icons/32/swt.gif | Bin .../browser/default/images/icons/32/txt.gif | Bin .../browser/default/images/icons/32/vsd.gif | Bin .../browser/default/images/icons/32/xls.gif | Bin .../browser/default/images/icons/32/xml.gif | Bin .../browser/default/images/icons/32/zip.gif | Bin .../browser/default/images/icons/ai.gif | Bin .../browser/default/images/icons/avi.gif | Bin .../browser/default/images/icons/bmp.gif | Bin .../browser/default/images/icons/cs.gif | Bin .../browser/default/images/icons/default.icon.gif | Bin .../browser/default/images/icons/dll.gif | Bin .../browser/default/images/icons/doc.gif | Bin .../browser/default/images/icons/exe.gif | Bin .../browser/default/images/icons/fla.gif | Bin .../browser/default/images/icons/gif.gif | Bin .../browser/default/images/icons/htm.gif | Bin .../browser/default/images/icons/html.gif | Bin .../browser/default/images/icons/jpg.gif | Bin .../browser/default/images/icons/js.gif | Bin .../browser/default/images/icons/mdb.gif | Bin .../browser/default/images/icons/mp3.gif | Bin .../browser/default/images/icons/pdf.gif | Bin .../browser/default/images/icons/png.gif | Bin .../browser/default/images/icons/ppt.gif | Bin .../browser/default/images/icons/rdp.gif | Bin .../browser/default/images/icons/swf.gif | Bin .../browser/default/images/icons/swt.gif | Bin .../browser/default/images/icons/txt.gif | Bin .../browser/default/images/icons/vsd.gif | Bin .../browser/default/images/icons/xls.gif | Bin .../browser/default/images/icons/xml.gif | Bin .../browser/default/images/icons/zip.gif | Bin .../filemanagerdol/browser/default/js/common.js | 0 .../filemanagerdol/browser/default/js/fckxml.js | 0 .../core/filemanagerdol/browser/default/spacer.gif | Bin htdocs/core/modules/security/generate/README | 0 htdocs/includes/fpdfi/README.txt | 0 .../plugins/colorpicker/jquery.colorpicker.css | 0 .../plugins/colorpicker/jquery.colorpicker.js | 0 htdocs/includes/jquery/plugins/jcrop/css/Jcrop.gif | Bin .../jquery/plugins/jcrop/css/jquery.Jcrop.css | 0 htdocs/includes/jquery/plugins/jcrop/index.html | 0 .../jquery/plugins/jcrop/js/jquery.Jcrop.js | 0 .../jquery/plugins/jcrop/js/jquery.Jcrop.min.js | 0 .../plugins/jnotify/jquery.jnotify-alt.min.css | 0 .../jquery/plugins/jnotify/jquery.jnotify.css | 0 .../includes/jquery/plugins/jpicker/ChangeLog.txt | 0 htdocs/includes/jquery/plugins/jpicker/Example.html | 0 htdocs/includes/jquery/plugins/jpicker/ReadMe.txt | 0 .../jquery/plugins/jpicker/css/jPicker-1.1.6.css | 0 .../plugins/jpicker/css/jPicker-1.1.6.min.css | 0 .../jquery/plugins/jpicker/images/AlphaBar.png | Bin .../includes/jquery/plugins/jpicker/images/Bars.png | Bin .../includes/jquery/plugins/jpicker/images/Maps.png | Bin .../jquery/plugins/jpicker/images/NoColor.png | Bin .../jquery/plugins/jpicker/images/bar-opacity.png | Bin .../jquery/plugins/jpicker/images/map-opacity.png | Bin .../jquery/plugins/jpicker/images/mappoint.gif | Bin .../jquery/plugins/jpicker/images/picker.gif | Bin .../plugins/jpicker/images/preview-opacity.png | Bin .../jquery/plugins/jpicker/images/rangearrows.gif | Bin htdocs/includes/jquery/plugins/jpicker/jPicker.css | 0 .../jquery/plugins/jpicker/jpicker-1.1.6.js | 0 .../jquery/plugins/jpicker/jpicker-1.1.6.min.js | 0 .../plugins/jqueryFileTree/images/application.png | Bin .../jquery/plugins/jqueryFileTree/images/code.png | Bin .../jquery/plugins/jqueryFileTree/images/css.png | Bin .../jquery/plugins/jqueryFileTree/images/db.png | Bin .../plugins/jqueryFileTree/images/directory.png | Bin .../jquery/plugins/jqueryFileTree/images/doc.png | Bin .../jquery/plugins/jqueryFileTree/images/file.png | Bin .../jquery/plugins/jqueryFileTree/images/film.png | Bin .../jquery/plugins/jqueryFileTree/images/flash.png | Bin .../plugins/jqueryFileTree/images/folder_open.png | Bin .../jquery/plugins/jqueryFileTree/images/html.png | Bin .../jquery/plugins/jqueryFileTree/images/java.png | Bin .../jquery/plugins/jqueryFileTree/images/linux.png | Bin .../jquery/plugins/jqueryFileTree/images/music.png | Bin .../jquery/plugins/jqueryFileTree/images/pdf.png | Bin .../jquery/plugins/jqueryFileTree/images/php.png | Bin .../plugins/jqueryFileTree/images/picture.png | Bin .../jquery/plugins/jqueryFileTree/images/ppt.png | Bin .../jquery/plugins/jqueryFileTree/images/psd.png | Bin .../jquery/plugins/jqueryFileTree/images/ruby.png | Bin .../jquery/plugins/jqueryFileTree/images/script.png | Bin .../plugins/jqueryFileTree/images/spinner.gif | Bin .../jquery/plugins/jqueryFileTree/images/txt.png | Bin .../jquery/plugins/jqueryFileTree/images/xls.png | Bin .../jquery/plugins/jqueryFileTree/images/zip.png | Bin .../plugins/jqueryFileTree/jqueryFileTree.css | 0 .../jquery/plugins/jqueryFileTree/jqueryFileTree.js | 0 .../includes/jquery/plugins/tiptip/jquery.tipTip.js | 0 .../jquery/plugins/tiptip/jquery.tipTip.min.js | 0 htdocs/includes/jquery/plugins/tiptip/tipTip.css | 0 htdocs/includes/nusoap/lib/Mail/xmail.dtd | 0 htdocs/includes/nusoap/lib/Mail/xmail.xsl | 0 .../includes/tcpdf/fonts/dejavusanscondensed.ctg.z | Bin htdocs/includes/tcpdf/fonts/dejavusanscondensed.z | Bin .../includes/tcpdf/fonts/dejavusanscondensedb.ctg.z | Bin htdocs/includes/tcpdf/fonts/dejavusanscondensedb.z | Bin .../tcpdf/fonts/dejavusanscondensedbi.ctg.z | Bin htdocs/includes/tcpdf/fonts/dejavusanscondensedbi.z | Bin .../includes/tcpdf/fonts/dejavusanscondensedi.ctg.z | Bin htdocs/includes/tcpdf/fonts/dejavusanscondensedi.z | Bin .../includes/tcpdf/fonts/dejavusansextralight.ctg.z | Bin htdocs/includes/tcpdf/fonts/dejavusansextralight.z | Bin htdocs/includes/tcpdf/fonts/dejavusansmono.ctg.z | Bin htdocs/includes/tcpdf/fonts/dejavusansmono.z | Bin htdocs/includes/tcpdf/fonts/dejavusansmonob.ctg.z | Bin htdocs/includes/tcpdf/fonts/dejavusansmonob.z | Bin htdocs/includes/tcpdf/fonts/dejavusansmonobi.ctg.z | Bin htdocs/includes/tcpdf/fonts/dejavusansmonobi.z | Bin htdocs/includes/tcpdf/fonts/dejavusansmonoi.ctg.z | Bin htdocs/includes/tcpdf/fonts/dejavusansmonoi.z | Bin .../doctemplates/projects/template_project.odt | Bin htdocs/install/mysql/data/llx_c_input_method.sql | 0 htdocs/install/mysql/data/llx_c_input_reason.sql | 0 htdocs/install/mysql/migration/2.7.0-2.8.0.sql | 0 htdocs/install/mysql/migration/2.8.0-2.9.0.sql | 0 htdocs/install/mysql/migration/3.0.0-3.1.0.sql | 0 htdocs/install/mysql/migration/3.1.0-3.2.0.sql | 0 htdocs/install/mysql/migration/3.2.0-3.3.0.sql | 0 htdocs/install/mysql/migration/3.3.0-3.4.0.sql | 0 htdocs/install/mysql/migration/3.4.0-3.5.0.sql | 0 htdocs/install/mysql/tables/llx_resource.key.sql | 0 htdocs/install/mysql/tables/llx_resource.sql | 0 htdocs/langs/en_US/resource.lang | 0 htdocs/langs/fr_FR/resource.lang | 0 htdocs/opensurvey/img/accept-24.png | Bin htdocs/opensurvey/img/accept.png | Bin htdocs/opensurvey/img/add-16.png | Bin htdocs/opensurvey/img/add-24.png | Bin htdocs/opensurvey/img/calendar-32.png | Bin htdocs/opensurvey/img/cancel.png | Bin htdocs/opensurvey/img/chart-32.png | Bin htdocs/opensurvey/img/fforward.png | Bin htdocs/opensurvey/img/medaille.png | Bin htdocs/opensurvey/img/next.png | Bin htdocs/opensurvey/img/object_opensurvey.png | Bin htdocs/opensurvey/img/previous.png | Bin htdocs/opensurvey/img/rewind.png | Bin htdocs/resource/add.php | 0 htdocs/resource/card.php | 0 htdocs/theme/amarok/AUTHOR | 0 htdocs/theme/amarok/ckeditor/config.js | 0 htdocs/theme/amarok/img/1downarrow.png | Bin htdocs/theme/amarok/img/1downarrow_selected.png | Bin htdocs/theme/amarok/img/1leftarrow.png | Bin htdocs/theme/amarok/img/1leftarrow_selected.png | Bin htdocs/theme/amarok/img/1rightarrow.png | Bin htdocs/theme/amarok/img/1rightarrow_selected.png | Bin htdocs/theme/amarok/img/1uparrow.png | Bin htdocs/theme/amarok/img/1uparrow_selected.png | Bin htdocs/theme/amarok/img/1updownarrow.png | Bin htdocs/theme/amarok/img/addfile.png | Bin htdocs/theme/amarok/img/button_edit.png | Bin htdocs/theme/amarok/img/calc.png | Bin htdocs/theme/amarok/img/calendar.png | Bin htdocs/theme/amarok/img/call.png | Bin htdocs/theme/amarok/img/call_out.png | Bin htdocs/theme/amarok/img/close.png | Bin htdocs/theme/amarok/img/delete.png | Bin htdocs/theme/amarok/img/detail.png | Bin htdocs/theme/amarok/img/disable.png | Bin htdocs/theme/amarok/img/edit.png | Bin htdocs/theme/amarok/img/edit_add.png | Bin htdocs/theme/amarok/img/edit_remove.png | Bin htdocs/theme/amarok/img/editdelete.png | Bin htdocs/theme/amarok/img/error.png | Bin htdocs/theme/amarok/img/file.png | Bin htdocs/theme/amarok/img/filenew.png | Bin htdocs/theme/amarok/img/filter.png | Bin htdocs/theme/amarok/img/folder-open.png | Bin htdocs/theme/amarok/img/folder.png | Bin htdocs/theme/amarok/img/grip.png | Bin htdocs/theme/amarok/img/help.png | Bin htdocs/theme/amarok/img/helpdoc.png | Bin htdocs/theme/amarok/img/high.png | Bin htdocs/theme/amarok/img/history.png | Bin htdocs/theme/amarok/img/indent1.png | Bin htdocs/theme/amarok/img/info.png | Bin htdocs/theme/amarok/img/lock.png | Bin htdocs/theme/amarok/img/logout.png | Bin htdocs/theme/amarok/img/mainlevel.gif | Bin htdocs/theme/amarok/img/money.png | Bin htdocs/theme/amarok/img/next.png | Bin htdocs/theme/amarok/img/object_account.png | Bin htdocs/theme/amarok/img/object_action.png | Bin htdocs/theme/amarok/img/object_barcode.png | Bin htdocs/theme/amarok/img/object_bill.png | Bin htdocs/theme/amarok/img/object_billa.png | Bin htdocs/theme/amarok/img/object_billd.png | Bin htdocs/theme/amarok/img/object_billr.png | Bin htdocs/theme/amarok/img/object_book.png | Bin htdocs/theme/amarok/img/object_bookmark.png | Bin htdocs/theme/amarok/img/object_calendar.png | Bin htdocs/theme/amarok/img/object_calendarday.png | Bin htdocs/theme/amarok/img/object_calendarweek.png | Bin .../theme/amarok/img/object_category-expanded.png | Bin htdocs/theme/amarok/img/object_category.png | Bin htdocs/theme/amarok/img/object_commercial.png | Bin htdocs/theme/amarok/img/object_company.png | Bin htdocs/theme/amarok/img/object_contact.png | Bin htdocs/theme/amarok/img/object_contact_all.png | Bin htdocs/theme/amarok/img/object_contract.png | Bin htdocs/theme/amarok/img/object_dir.png | Bin htdocs/theme/amarok/img/object_email.png | Bin htdocs/theme/amarok/img/object_energie.png | Bin htdocs/theme/amarok/img/object_generic.png | Bin htdocs/theme/amarok/img/object_globe.png | Bin htdocs/theme/amarok/img/object_group.png | Bin htdocs/theme/amarok/img/object_intervention.png | Bin htdocs/theme/amarok/img/object_invoice.png | Bin htdocs/theme/amarok/img/object_label.png | Bin htdocs/theme/amarok/img/object_list.png | Bin htdocs/theme/amarok/img/object_opensurvey.png | Bin htdocs/theme/amarok/img/object_order.png | Bin htdocs/theme/amarok/img/object_payment.png | Bin htdocs/theme/amarok/img/object_phoning.png | Bin htdocs/theme/amarok/img/object_product.png | Bin htdocs/theme/amarok/img/object_project.png | Bin htdocs/theme/amarok/img/object_projectpub.png | Bin htdocs/theme/amarok/img/object_projecttask.png | Bin htdocs/theme/amarok/img/object_propal.png | Bin htdocs/theme/amarok/img/object_reduc.png | Bin htdocs/theme/amarok/img/object_rss.png | Bin htdocs/theme/amarok/img/object_sending.png | Bin htdocs/theme/amarok/img/object_service.png | Bin htdocs/theme/amarok/img/object_stock.png | Bin htdocs/theme/amarok/img/object_task.png | Bin htdocs/theme/amarok/img/object_technic.png | Bin htdocs/theme/amarok/img/object_trip.png | Bin htdocs/theme/amarok/img/object_user.png | Bin htdocs/theme/amarok/img/off.png | Bin htdocs/theme/amarok/img/ok.png | Bin htdocs/theme/amarok/img/on.png | Bin htdocs/theme/amarok/img/pdf2.png | Bin htdocs/theme/amarok/img/pdf3.png | Bin htdocs/theme/amarok/img/previous.png | Bin htdocs/theme/amarok/img/printer.png | Bin htdocs/theme/amarok/img/puce.png | Bin htdocs/theme/amarok/img/recent.png | Bin htdocs/theme/amarok/img/redstar.png | Bin htdocs/theme/amarok/img/refresh.png | Bin htdocs/theme/amarok/img/reload.png | Bin htdocs/theme/amarok/img/rightarrow.png | Bin htdocs/theme/amarok/img/search.png | Bin htdocs/theme/amarok/img/searchclear.png | Bin htdocs/theme/amarok/img/setup.png | Bin htdocs/theme/amarok/img/split.png | Bin htdocs/theme/amarok/img/star.png | Bin htdocs/theme/amarok/img/stats.png | Bin htdocs/theme/amarok/img/statut0.png | Bin htdocs/theme/amarok/img/statut1.png | Bin htdocs/theme/amarok/img/statut2.png | Bin htdocs/theme/amarok/img/statut3.png | Bin htdocs/theme/amarok/img/statut4.png | Bin htdocs/theme/amarok/img/statut5.png | Bin htdocs/theme/amarok/img/statut6.png | Bin htdocs/theme/amarok/img/statut7.png | Bin htdocs/theme/amarok/img/statut8.png | Bin htdocs/theme/amarok/img/statut9.png | Bin htdocs/theme/amarok/img/stcomm-1.png | Bin htdocs/theme/amarok/img/stcomm-1_grayed.png | Bin htdocs/theme/amarok/img/stcomm0.png | Bin htdocs/theme/amarok/img/stcomm0_grayed.png | Bin htdocs/theme/amarok/img/stcomm1.png | Bin htdocs/theme/amarok/img/stcomm1_grayed.png | Bin htdocs/theme/amarok/img/stcomm2.png | Bin htdocs/theme/amarok/img/stcomm2_grayed.png | Bin htdocs/theme/amarok/img/stcomm3.png | Bin htdocs/theme/amarok/img/stcomm3_grayed.png | Bin htdocs/theme/amarok/img/stcomm4.png | Bin htdocs/theme/amarok/img/stcomm4_grayed.png | Bin htdocs/theme/amarok/img/tick.png | Bin htdocs/theme/amarok/img/title.png | Bin htdocs/theme/amarok/img/unlock.png | Bin htdocs/theme/amarok/img/uparrow.png | Bin htdocs/theme/amarok/img/vcard.png | Bin htdocs/theme/amarok/img/view.png | Bin htdocs/theme/amarok/img/vmenu.png | Bin htdocs/theme/amarok/img/warning.png | Bin htdocs/theme/amarok/img/working.gif | Bin htdocs/theme/amarok/thumb.png | Bin htdocs/theme/amarok/tpl/README | 0 htdocs/theme/auguria/img/edit_add.png | Bin htdocs/theme/auguria/img/edit_remove.png | Bin htdocs/theme/auguria/img/menus/topmenu_bg.png | Bin htdocs/theme/auguria/img/menus/topmenu_right.png | Bin htdocs/theme/auguria/img/object_bill.png | Bin htdocs/theme/auguria/img/object_book.png | Bin htdocs/theme/auguria/img/object_calendarday.png | Bin htdocs/theme/auguria/img/object_calendarweek.png | Bin htdocs/theme/auguria/img/object_company.png | Bin htdocs/theme/auguria/img/object_contact.png | Bin htdocs/theme/auguria/img/object_contract.png | Bin htdocs/theme/auguria/img/object_invoice.png | Bin htdocs/theme/auguria/img/object_opensurvey.png | Bin htdocs/theme/auguria/img/object_order.png | Bin htdocs/theme/auguria/img/object_product.png | Bin htdocs/theme/auguria/img/object_propal.png | Bin htdocs/theme/auguria/img/stats.png | Bin htdocs/theme/auguria/img/statut8.png | Bin htdocs/theme/auguria/img/statut9.png | Bin htdocs/theme/bureau2crea/img/object_calendarday.png | Bin .../theme/bureau2crea/img/object_calendarweek.png | Bin htdocs/theme/bureau2crea/img/object_opensurvey.png | Bin htdocs/theme/bureau2crea/img/stats.png | Bin htdocs/theme/bureau2crea/img/statut8.png | Bin htdocs/theme/cameleo/img/object_opensurvey.png | Bin htdocs/theme/cameleo/img/stats.png | Bin htdocs/theme/common/devices/audio-card.png | Bin htdocs/theme/common/devices/audio-headset.png | Bin htdocs/theme/common/devices/audio-input-line.png | Bin .../theme/common/devices/audio-input-microphone.png | Bin htdocs/theme/common/devices/battery.png | Bin htdocs/theme/common/devices/camera-photo.png | Bin htdocs/theme/common/devices/camera-web.png | Bin htdocs/theme/common/devices/computer-laptop.png | Bin htdocs/theme/common/devices/computer.png | Bin htdocs/theme/common/devices/cpu.png | Bin htdocs/theme/common/devices/drive-harddisk.png | Bin htdocs/theme/common/devices/drive-optical.png | Bin .../devices/drive-removable-media-usb-pendrive.png | Bin .../common/devices/drive-removable-media-usb.png | Bin .../theme/common/devices/drive-removable-media.png | Bin htdocs/theme/common/devices/input-gaming.png | Bin htdocs/theme/common/devices/input-keyboard.png | Bin htdocs/theme/common/devices/input-mouse.png | Bin htdocs/theme/common/devices/input-tablet.png | Bin .../common/devices/media-flash-memory-stick.png | Bin htdocs/theme/common/devices/media-flash-sd-mmc.png | Bin .../common/devices/media-flash-smart-media.png | Bin htdocs/theme/common/devices/media-flash.png | Bin htdocs/theme/common/devices/media-floppy.png | Bin htdocs/theme/common/devices/media-optical-audio.png | Bin .../theme/common/devices/media-optical-blu-ray.png | Bin htdocs/theme/common/devices/media-optical-data.png | Bin .../common/devices/media-optical-dvd-video.png | Bin htdocs/theme/common/devices/media-optical-dvd.png | Bin .../theme/common/devices/media-optical-mixed-cd.png | Bin .../common/devices/media-optical-recordable.png | Bin htdocs/theme/common/devices/media-optical-video.png | Bin htdocs/theme/common/devices/media-optical.png | Bin htdocs/theme/common/devices/media-tape.png | Bin htdocs/theme/common/devices/modem.png | Bin .../common/devices/multimedia-player-apple-ipod.png | Bin htdocs/theme/common/devices/multimedia-player.png | Bin htdocs/theme/common/devices/network-wired.png | Bin .../devices/network-wireless-connected-00.png | Bin .../devices/network-wireless-connected-100.png | Bin .../devices/network-wireless-connected-25.png | Bin .../devices/network-wireless-connected-50.png | Bin .../devices/network-wireless-connected-75.png | Bin .../devices/network-wireless-disconnected.png | Bin htdocs/theme/common/devices/network-wireless.png | Bin htdocs/theme/common/devices/pda.png | Bin .../common/devices/phone-openmoko-freerunner.png | Bin htdocs/theme/common/devices/phone.png | Bin htdocs/theme/common/devices/printer-laser.png | Bin htdocs/theme/common/devices/printer.png | Bin htdocs/theme/common/devices/scanner.png | Bin htdocs/theme/common/devices/video-display.png | Bin htdocs/theme/common/devices/video-projector.png | Bin htdocs/theme/common/devices/video-television.png | Bin htdocs/theme/common/emotes/face-angel.png | Bin htdocs/theme/common/emotes/face-embarrassed.png | Bin htdocs/theme/common/emotes/face-kiss.png | Bin htdocs/theme/common/emotes/face-laugh.png | Bin htdocs/theme/common/emotes/face-plain.png | Bin htdocs/theme/common/emotes/face-raspberry.png | Bin htdocs/theme/common/emotes/face-sad.png | Bin htdocs/theme/common/emotes/face-smile-big.png | Bin htdocs/theme/common/emotes/face-smile.png | Bin htdocs/theme/common/emotes/face-surprise.png | Bin htdocs/theme/common/emotes/face-uncertain.png | Bin htdocs/theme/common/emotes/face-wink.png | Bin htdocs/theme/common/gmap.png | Bin htdocs/theme/common/ical.gif | Bin htdocs/theme/common/mime/css.png | Bin htdocs/theme/common/mime/dotnet.png | Bin htdocs/theme/common/mime/encrypt.png | Bin htdocs/theme/common/mime/glasses.png | Bin htdocs/theme/common/mime/jnlp.png | Bin htdocs/theme/common/mime/library.png | Bin htdocs/theme/common/mime/lit.png | Bin htdocs/theme/common/mime/mdb.png | Bin htdocs/theme/common/mime/ooffice.png | Bin htdocs/theme/common/mime/page.png | Bin htdocs/theme/common/mime/readme.txt | 0 htdocs/theme/common/mime/rss.png | Bin htdocs/theme/common/rss.gif | Bin htdocs/theme/common/treemenu/folder2-expanded.png | Bin htdocs/theme/common/treemenu/folder2.png | Bin htdocs/theme/common/vcal.gif | Bin htdocs/theme/common/weather/weather-clear-night.png | Bin htdocs/theme/common/weather/weather-clear.png | Bin .../theme/common/weather/weather-clouds-night.png | Bin htdocs/theme/common/weather/weather-clouds.png | Bin .../common/weather/weather-few-clouds-night.png | Bin htdocs/theme/common/weather/weather-few-clouds.png | Bin .../theme/common/weather/weather-freezing-rain.png | Bin htdocs/theme/common/weather/weather-hail.png | Bin htdocs/theme/common/weather/weather-many-clouds.png | Bin htdocs/theme/common/weather/weather-mist.png | Bin htdocs/theme/common/weather/weather-showers-day.png | Bin .../theme/common/weather/weather-showers-night.png | Bin .../weather/weather-showers-scattered-day.png | Bin .../weather/weather-showers-scattered-night.png | Bin .../common/weather/weather-showers-scattered.png | Bin htdocs/theme/common/weather/weather-showers.png | Bin htdocs/theme/common/weather/weather-snow-rain.png | Bin .../common/weather/weather-snow-scattered-day.png | Bin .../common/weather/weather-snow-scattered-night.png | Bin .../theme/common/weather/weather-snow-scattered.png | Bin htdocs/theme/common/weather/weather-snow.png | Bin htdocs/theme/common/weather/weather-storm-day.png | Bin htdocs/theme/common/weather/weather-storm-night.png | Bin htdocs/theme/common/weather/weather-storm.png | Bin htdocs/theme/dolibarr.png | Bin htdocs/theme/dolibarr_logo.png | Bin htdocs/theme/doliforge_logo.png | Bin htdocs/theme/dolistore_logo.png | Bin htdocs/theme/eldy/img/liste_titre2.png | Bin htdocs/theme/eldy/img/object_opensurvey.png | Bin .../webservices/demo_wsclient_actioncomm.php-NORUN | 0 htdocs/webservices/demo_wsclient_category.php-NORUN | 0 htdocs/webservices/demo_wsclient_invoice.php-NORUN | 0 htdocs/webservices/demo_wsclient_order.php-NORUN | 0 htdocs/webservices/demo_wsclient_other.php-NORUN | 0 .../demo_wsclient_productorservice.php-NORUN | 0 .../webservices/demo_wsclient_thirdparty.php-NORUN | 0 test/phpunit/CMailFileTest.php | 0 test/phpunit/CategorieTest.php | 0 test/phpunit/ChargeSocialesTest.php | 0 test/phpunit/ContactTest.php | 0 test/phpunit/CoreTest.php | 0 test/phpunit/DiscountTest.php | 0 test/phpunit/EntrepotTest.php | 0 test/phpunit/Example_import_company_1.csv | 0 test/phpunit/ExportTest.php | 0 test/phpunit/Functions2LibTest.php | 0 test/phpunit/FunctionsLibTest.php | 0 test/phpunit/ImportTest.php | 0 test/phpunit/JsonLibTest.php | 0 test/phpunit/LangTest.php | 0 test/phpunit/ModulesTest.php | 0 test/phpunit/PdfDocTest.php | 0 test/phpunit/PgsqlTest.php | 0 test/phpunit/PricesTest.php | 0 test/phpunit/ProductTest.php | 0 test/phpunit/ScriptsTest.php | 0 test/phpunit/SecurityTest.php | 0 test/phpunit/SocieteTest.php | 0 test/phpunit/SqlTest.php | 0 test/phpunit/WebservicesInvoicesTest.php | 0 test/phpunit/WebservicesOrdersTest.php | 0 test/phpunit/WebservicesOtherTest.php | 0 test/phpunit/WebservicesProductsTest.php | 0 test/phpunit/WebservicesThirdpartyTest.php | 0 test/phpunit/WebservicesUserTest.php | 0 test/soapui/Dolibarr-soapui-project.xml | 0 544 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 .gitignore mode change 100755 => 100644 build/.gitignore mode change 100755 => 100644 build/aps/APP-META-1.1.xml mode change 100755 => 100644 build/aps/APP-META-1.2.xml mode change 100755 => 100644 build/aps/README mode change 100755 => 100644 build/aps/install.forced.php.install mode change 100755 => 100644 build/debian/conf.php.install mode change 100755 => 100644 build/debian/control mode change 100755 => 100644 build/debian/dolibarr.install mode change 100755 => 100644 build/debian/dolibarr.lintian-overrides mode change 100755 => 100644 build/debian/dolibarr.templates.futur mode change 100755 => 100644 build/debian/install.forced.php.install mode change 100755 => 100644 build/debian/po/POTFILES.in mode change 100755 => 100644 build/debian/po/fr.po mode change 100755 => 100644 build/doxygen/doxygen_footer.html mode change 100755 => 100644 build/doxygen/doxygen_header.html mode change 100755 => 100644 build/rpm/conf.php mode change 100755 => 100644 build/rpm/dolibarr-forrpm.patch mode change 100755 => 100644 build/rpm/dolibarr.desktop mode change 100755 => 100644 build/rpm/dolibarr_fedora.spec mode change 100755 => 100644 build/rpm/dolibarr_generic.spec mode change 100755 => 100644 build/rpm/dolibarr_mandriva.spec mode change 100755 => 100644 build/rpm/dolibarr_opensuse.spec mode change 100755 => 100644 build/rpm/file_contexts.dolibarr mode change 100755 => 100644 build/rpm/install.forced.php.fedora mode change 100755 => 100644 build/rpm/install.forced.php.generic mode change 100755 => 100644 build/rpm/install.forced.php.mandriva mode change 100755 => 100644 build/rpm/install.forced.php.opensuse mode change 100755 => 100644 dev/codesniffer/README mode change 100755 => 100644 dev/codesniffer/php.ini mode change 100755 => 100644 dev/codesniffer/ruleset.dtd mode change 100755 => 100644 dev/codesniffer/ruleset.xml mode change 100755 => 100644 dev/codetemplates/README mode change 100755 => 100644 dev/codetemplates/codetemplates.dtd mode change 100755 => 100644 dev/codetemplates/codetemplates.xml mode change 100755 => 100644 dev/dbmodel/emulate_oscommerce/llx_osc_categories.sql mode change 100755 => 100644 dev/dbmodel/emulate_oscommerce/llx_osc_customer.key.sql mode change 100755 => 100644 dev/dbmodel/emulate_oscommerce/llx_osc_customer.sql mode change 100755 => 100644 dev/dbmodel/emulate_oscommerce/llx_osc_order.sql mode change 100755 => 100644 dev/dbmodel/emulate_oscommerce/llx_osc_product.sql mode change 100755 => 100644 dev/examples/README mode change 100755 => 100644 dev/iso-normes/GURULABS-RPM-GUIDE-v1.0.PDF mode change 100755 => 100644 dev/iso-normes/address_format.txt mode change 100755 => 100644 dev/iso-normes/banknumber_format.txt mode change 100755 => 100644 dev/iso-normes/xmlexport.txt mode change 100755 => 100644 dev/phpunit/README mode change 100755 => 100644 dev/phpunit/eclipse_setup_for_pti_phpunit.png mode change 100644 => 100755 dev/skeletons/build_webservice_from_class.php mode change 100755 => 100644 dev/test/testtcpdf.php mode change 100755 => 100644 doc/images/appicon_128.png mode change 100755 => 100644 doc/images/appicon_16.ico mode change 100755 => 100644 doc/images/appicon_16.png mode change 100755 => 100644 doc/images/appicon_32.png mode change 100755 => 100644 doc/images/appicon_48.ico mode change 100755 => 100644 doc/images/appicon_64.png mode change 100755 => 100644 doc/images/dolibarr_73x73.png mode change 100755 => 100644 doc/images/dolibarr_logo.png mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/browser.css mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/Folder.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/FolderUp.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/32/ai.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/32/avi.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/32/bmp.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/32/cs.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/32/default.icon.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/32/dll.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/32/doc.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/32/exe.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/32/fla.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/32/gif.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/32/htm.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/32/html.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/32/jpg.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/32/js.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/32/mdb.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/32/mp3.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/32/pdf.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/32/png.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/32/ppt.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/32/rdp.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/32/swf.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/32/swt.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/32/txt.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/32/vsd.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/32/xls.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/32/xml.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/32/zip.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/ai.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/avi.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/bmp.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/cs.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/default.icon.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/dll.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/doc.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/exe.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/fla.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/gif.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/htm.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/html.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/jpg.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/js.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/mdb.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/mp3.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/pdf.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/png.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/ppt.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/rdp.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/swf.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/swt.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/txt.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/vsd.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/xls.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/xml.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/images/icons/zip.gif mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/js/common.js mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/js/fckxml.js mode change 100755 => 100644 htdocs/core/filemanagerdol/browser/default/spacer.gif mode change 100755 => 100644 htdocs/core/modules/security/generate/README mode change 100755 => 100644 htdocs/includes/fpdfi/README.txt mode change 100755 => 100644 htdocs/includes/jquery/plugins/colorpicker/jquery.colorpicker.css mode change 100755 => 100644 htdocs/includes/jquery/plugins/colorpicker/jquery.colorpicker.js mode change 100755 => 100644 htdocs/includes/jquery/plugins/jcrop/css/Jcrop.gif mode change 100755 => 100644 htdocs/includes/jquery/plugins/jcrop/css/jquery.Jcrop.css mode change 100755 => 100644 htdocs/includes/jquery/plugins/jcrop/index.html mode change 100755 => 100644 htdocs/includes/jquery/plugins/jcrop/js/jquery.Jcrop.js mode change 100755 => 100644 htdocs/includes/jquery/plugins/jcrop/js/jquery.Jcrop.min.js mode change 100755 => 100644 htdocs/includes/jquery/plugins/jnotify/jquery.jnotify-alt.min.css mode change 100755 => 100644 htdocs/includes/jquery/plugins/jnotify/jquery.jnotify.css mode change 100755 => 100644 htdocs/includes/jquery/plugins/jpicker/ChangeLog.txt mode change 100755 => 100644 htdocs/includes/jquery/plugins/jpicker/Example.html mode change 100755 => 100644 htdocs/includes/jquery/plugins/jpicker/ReadMe.txt mode change 100755 => 100644 htdocs/includes/jquery/plugins/jpicker/css/jPicker-1.1.6.css mode change 100755 => 100644 htdocs/includes/jquery/plugins/jpicker/css/jPicker-1.1.6.min.css mode change 100755 => 100644 htdocs/includes/jquery/plugins/jpicker/images/AlphaBar.png mode change 100755 => 100644 htdocs/includes/jquery/plugins/jpicker/images/Bars.png mode change 100755 => 100644 htdocs/includes/jquery/plugins/jpicker/images/Maps.png mode change 100755 => 100644 htdocs/includes/jquery/plugins/jpicker/images/NoColor.png mode change 100755 => 100644 htdocs/includes/jquery/plugins/jpicker/images/bar-opacity.png mode change 100755 => 100644 htdocs/includes/jquery/plugins/jpicker/images/map-opacity.png mode change 100755 => 100644 htdocs/includes/jquery/plugins/jpicker/images/mappoint.gif mode change 100755 => 100644 htdocs/includes/jquery/plugins/jpicker/images/picker.gif mode change 100755 => 100644 htdocs/includes/jquery/plugins/jpicker/images/preview-opacity.png mode change 100755 => 100644 htdocs/includes/jquery/plugins/jpicker/images/rangearrows.gif mode change 100755 => 100644 htdocs/includes/jquery/plugins/jpicker/jPicker.css mode change 100755 => 100644 htdocs/includes/jquery/plugins/jpicker/jpicker-1.1.6.js mode change 100755 => 100644 htdocs/includes/jquery/plugins/jpicker/jpicker-1.1.6.min.js mode change 100755 => 100644 htdocs/includes/jquery/plugins/jqueryFileTree/images/application.png mode change 100755 => 100644 htdocs/includes/jquery/plugins/jqueryFileTree/images/code.png mode change 100755 => 100644 htdocs/includes/jquery/plugins/jqueryFileTree/images/css.png mode change 100755 => 100644 htdocs/includes/jquery/plugins/jqueryFileTree/images/db.png mode change 100755 => 100644 htdocs/includes/jquery/plugins/jqueryFileTree/images/directory.png mode change 100755 => 100644 htdocs/includes/jquery/plugins/jqueryFileTree/images/doc.png mode change 100755 => 100644 htdocs/includes/jquery/plugins/jqueryFileTree/images/file.png mode change 100755 => 100644 htdocs/includes/jquery/plugins/jqueryFileTree/images/film.png mode change 100755 => 100644 htdocs/includes/jquery/plugins/jqueryFileTree/images/flash.png mode change 100755 => 100644 htdocs/includes/jquery/plugins/jqueryFileTree/images/folder_open.png mode change 100755 => 100644 htdocs/includes/jquery/plugins/jqueryFileTree/images/html.png mode change 100755 => 100644 htdocs/includes/jquery/plugins/jqueryFileTree/images/java.png mode change 100755 => 100644 htdocs/includes/jquery/plugins/jqueryFileTree/images/linux.png mode change 100755 => 100644 htdocs/includes/jquery/plugins/jqueryFileTree/images/music.png mode change 100755 => 100644 htdocs/includes/jquery/plugins/jqueryFileTree/images/pdf.png mode change 100755 => 100644 htdocs/includes/jquery/plugins/jqueryFileTree/images/php.png mode change 100755 => 100644 htdocs/includes/jquery/plugins/jqueryFileTree/images/picture.png mode change 100755 => 100644 htdocs/includes/jquery/plugins/jqueryFileTree/images/ppt.png mode change 100755 => 100644 htdocs/includes/jquery/plugins/jqueryFileTree/images/psd.png mode change 100755 => 100644 htdocs/includes/jquery/plugins/jqueryFileTree/images/ruby.png mode change 100755 => 100644 htdocs/includes/jquery/plugins/jqueryFileTree/images/script.png mode change 100755 => 100644 htdocs/includes/jquery/plugins/jqueryFileTree/images/spinner.gif mode change 100755 => 100644 htdocs/includes/jquery/plugins/jqueryFileTree/images/txt.png mode change 100755 => 100644 htdocs/includes/jquery/plugins/jqueryFileTree/images/xls.png mode change 100755 => 100644 htdocs/includes/jquery/plugins/jqueryFileTree/images/zip.png mode change 100755 => 100644 htdocs/includes/jquery/plugins/jqueryFileTree/jqueryFileTree.css mode change 100755 => 100644 htdocs/includes/jquery/plugins/jqueryFileTree/jqueryFileTree.js mode change 100755 => 100644 htdocs/includes/jquery/plugins/tiptip/jquery.tipTip.js mode change 100755 => 100644 htdocs/includes/jquery/plugins/tiptip/jquery.tipTip.min.js mode change 100755 => 100644 htdocs/includes/jquery/plugins/tiptip/tipTip.css mode change 100755 => 100644 htdocs/includes/nusoap/lib/Mail/xmail.dtd mode change 100755 => 100644 htdocs/includes/nusoap/lib/Mail/xmail.xsl mode change 100755 => 100644 htdocs/includes/tcpdf/fonts/dejavusanscondensed.ctg.z mode change 100755 => 100644 htdocs/includes/tcpdf/fonts/dejavusanscondensed.z mode change 100755 => 100644 htdocs/includes/tcpdf/fonts/dejavusanscondensedb.ctg.z mode change 100755 => 100644 htdocs/includes/tcpdf/fonts/dejavusanscondensedb.z mode change 100755 => 100644 htdocs/includes/tcpdf/fonts/dejavusanscondensedbi.ctg.z mode change 100755 => 100644 htdocs/includes/tcpdf/fonts/dejavusanscondensedbi.z mode change 100755 => 100644 htdocs/includes/tcpdf/fonts/dejavusanscondensedi.ctg.z mode change 100755 => 100644 htdocs/includes/tcpdf/fonts/dejavusanscondensedi.z mode change 100755 => 100644 htdocs/includes/tcpdf/fonts/dejavusansextralight.ctg.z mode change 100755 => 100644 htdocs/includes/tcpdf/fonts/dejavusansextralight.z mode change 100755 => 100644 htdocs/includes/tcpdf/fonts/dejavusansmono.ctg.z mode change 100755 => 100644 htdocs/includes/tcpdf/fonts/dejavusansmono.z mode change 100755 => 100644 htdocs/includes/tcpdf/fonts/dejavusansmonob.ctg.z mode change 100755 => 100644 htdocs/includes/tcpdf/fonts/dejavusansmonob.z mode change 100755 => 100644 htdocs/includes/tcpdf/fonts/dejavusansmonobi.ctg.z mode change 100755 => 100644 htdocs/includes/tcpdf/fonts/dejavusansmonobi.z mode change 100755 => 100644 htdocs/includes/tcpdf/fonts/dejavusansmonoi.ctg.z mode change 100755 => 100644 htdocs/includes/tcpdf/fonts/dejavusansmonoi.z mode change 100755 => 100644 htdocs/install/doctemplates/projects/template_project.odt mode change 100755 => 100644 htdocs/install/mysql/data/llx_c_input_method.sql mode change 100755 => 100644 htdocs/install/mysql/data/llx_c_input_reason.sql mode change 100755 => 100644 htdocs/install/mysql/migration/2.7.0-2.8.0.sql mode change 100755 => 100644 htdocs/install/mysql/migration/2.8.0-2.9.0.sql mode change 100755 => 100644 htdocs/install/mysql/migration/3.0.0-3.1.0.sql mode change 100755 => 100644 htdocs/install/mysql/migration/3.1.0-3.2.0.sql mode change 100755 => 100644 htdocs/install/mysql/migration/3.2.0-3.3.0.sql mode change 100755 => 100644 htdocs/install/mysql/migration/3.3.0-3.4.0.sql mode change 100755 => 100644 htdocs/install/mysql/migration/3.4.0-3.5.0.sql mode change 100755 => 100644 htdocs/install/mysql/tables/llx_resource.key.sql mode change 100755 => 100644 htdocs/install/mysql/tables/llx_resource.sql mode change 100755 => 100644 htdocs/langs/en_US/resource.lang mode change 100755 => 100644 htdocs/langs/fr_FR/resource.lang mode change 100755 => 100644 htdocs/opensurvey/img/accept-24.png mode change 100755 => 100644 htdocs/opensurvey/img/accept.png mode change 100755 => 100644 htdocs/opensurvey/img/add-16.png mode change 100755 => 100644 htdocs/opensurvey/img/add-24.png mode change 100755 => 100644 htdocs/opensurvey/img/calendar-32.png mode change 100755 => 100644 htdocs/opensurvey/img/cancel.png mode change 100755 => 100644 htdocs/opensurvey/img/chart-32.png mode change 100755 => 100644 htdocs/opensurvey/img/fforward.png mode change 100755 => 100644 htdocs/opensurvey/img/medaille.png mode change 100755 => 100644 htdocs/opensurvey/img/next.png mode change 100755 => 100644 htdocs/opensurvey/img/object_opensurvey.png mode change 100755 => 100644 htdocs/opensurvey/img/previous.png mode change 100755 => 100644 htdocs/opensurvey/img/rewind.png mode change 100755 => 100644 htdocs/resource/add.php mode change 100755 => 100644 htdocs/resource/card.php mode change 100755 => 100644 htdocs/theme/amarok/AUTHOR mode change 100755 => 100644 htdocs/theme/amarok/ckeditor/config.js mode change 100755 => 100644 htdocs/theme/amarok/img/1downarrow.png mode change 100755 => 100644 htdocs/theme/amarok/img/1downarrow_selected.png mode change 100755 => 100644 htdocs/theme/amarok/img/1leftarrow.png mode change 100755 => 100644 htdocs/theme/amarok/img/1leftarrow_selected.png mode change 100755 => 100644 htdocs/theme/amarok/img/1rightarrow.png mode change 100755 => 100644 htdocs/theme/amarok/img/1rightarrow_selected.png mode change 100755 => 100644 htdocs/theme/amarok/img/1uparrow.png mode change 100755 => 100644 htdocs/theme/amarok/img/1uparrow_selected.png mode change 100755 => 100644 htdocs/theme/amarok/img/1updownarrow.png mode change 100755 => 100644 htdocs/theme/amarok/img/addfile.png mode change 100755 => 100644 htdocs/theme/amarok/img/button_edit.png mode change 100755 => 100644 htdocs/theme/amarok/img/calc.png mode change 100755 => 100644 htdocs/theme/amarok/img/calendar.png mode change 100755 => 100644 htdocs/theme/amarok/img/call.png mode change 100755 => 100644 htdocs/theme/amarok/img/call_out.png mode change 100755 => 100644 htdocs/theme/amarok/img/close.png mode change 100755 => 100644 htdocs/theme/amarok/img/delete.png mode change 100755 => 100644 htdocs/theme/amarok/img/detail.png mode change 100755 => 100644 htdocs/theme/amarok/img/disable.png mode change 100755 => 100644 htdocs/theme/amarok/img/edit.png mode change 100755 => 100644 htdocs/theme/amarok/img/edit_add.png mode change 100755 => 100644 htdocs/theme/amarok/img/edit_remove.png mode change 100755 => 100644 htdocs/theme/amarok/img/editdelete.png mode change 100755 => 100644 htdocs/theme/amarok/img/error.png mode change 100755 => 100644 htdocs/theme/amarok/img/file.png mode change 100755 => 100644 htdocs/theme/amarok/img/filenew.png mode change 100755 => 100644 htdocs/theme/amarok/img/filter.png mode change 100755 => 100644 htdocs/theme/amarok/img/folder-open.png mode change 100755 => 100644 htdocs/theme/amarok/img/folder.png mode change 100755 => 100644 htdocs/theme/amarok/img/grip.png mode change 100755 => 100644 htdocs/theme/amarok/img/help.png mode change 100755 => 100644 htdocs/theme/amarok/img/helpdoc.png mode change 100755 => 100644 htdocs/theme/amarok/img/high.png mode change 100755 => 100644 htdocs/theme/amarok/img/history.png mode change 100755 => 100644 htdocs/theme/amarok/img/indent1.png mode change 100755 => 100644 htdocs/theme/amarok/img/info.png mode change 100755 => 100644 htdocs/theme/amarok/img/lock.png mode change 100755 => 100644 htdocs/theme/amarok/img/logout.png mode change 100755 => 100644 htdocs/theme/amarok/img/mainlevel.gif mode change 100755 => 100644 htdocs/theme/amarok/img/money.png mode change 100755 => 100644 htdocs/theme/amarok/img/next.png mode change 100755 => 100644 htdocs/theme/amarok/img/object_account.png mode change 100755 => 100644 htdocs/theme/amarok/img/object_action.png mode change 100755 => 100644 htdocs/theme/amarok/img/object_barcode.png mode change 100755 => 100644 htdocs/theme/amarok/img/object_bill.png mode change 100755 => 100644 htdocs/theme/amarok/img/object_billa.png mode change 100755 => 100644 htdocs/theme/amarok/img/object_billd.png mode change 100755 => 100644 htdocs/theme/amarok/img/object_billr.png mode change 100755 => 100644 htdocs/theme/amarok/img/object_book.png mode change 100755 => 100644 htdocs/theme/amarok/img/object_bookmark.png mode change 100755 => 100644 htdocs/theme/amarok/img/object_calendar.png mode change 100755 => 100644 htdocs/theme/amarok/img/object_calendarday.png mode change 100755 => 100644 htdocs/theme/amarok/img/object_calendarweek.png mode change 100755 => 100644 htdocs/theme/amarok/img/object_category-expanded.png mode change 100755 => 100644 htdocs/theme/amarok/img/object_category.png mode change 100755 => 100644 htdocs/theme/amarok/img/object_commercial.png mode change 100755 => 100644 htdocs/theme/amarok/img/object_company.png mode change 100755 => 100644 htdocs/theme/amarok/img/object_contact.png mode change 100755 => 100644 htdocs/theme/amarok/img/object_contact_all.png mode change 100755 => 100644 htdocs/theme/amarok/img/object_contract.png mode change 100755 => 100644 htdocs/theme/amarok/img/object_dir.png mode change 100755 => 100644 htdocs/theme/amarok/img/object_email.png mode change 100755 => 100644 htdocs/theme/amarok/img/object_energie.png mode change 100755 => 100644 htdocs/theme/amarok/img/object_generic.png mode change 100755 => 100644 htdocs/theme/amarok/img/object_globe.png mode change 100755 => 100644 htdocs/theme/amarok/img/object_group.png mode change 100755 => 100644 htdocs/theme/amarok/img/object_intervention.png mode change 100755 => 100644 htdocs/theme/amarok/img/object_invoice.png mode change 100755 => 100644 htdocs/theme/amarok/img/object_label.png mode change 100755 => 100644 htdocs/theme/amarok/img/object_list.png mode change 100755 => 100644 htdocs/theme/amarok/img/object_opensurvey.png mode change 100755 => 100644 htdocs/theme/amarok/img/object_order.png mode change 100755 => 100644 htdocs/theme/amarok/img/object_payment.png mode change 100755 => 100644 htdocs/theme/amarok/img/object_phoning.png mode change 100755 => 100644 htdocs/theme/amarok/img/object_product.png mode change 100755 => 100644 htdocs/theme/amarok/img/object_project.png mode change 100755 => 100644 htdocs/theme/amarok/img/object_projectpub.png mode change 100755 => 100644 htdocs/theme/amarok/img/object_projecttask.png mode change 100755 => 100644 htdocs/theme/amarok/img/object_propal.png mode change 100755 => 100644 htdocs/theme/amarok/img/object_reduc.png mode change 100755 => 100644 htdocs/theme/amarok/img/object_rss.png mode change 100755 => 100644 htdocs/theme/amarok/img/object_sending.png mode change 100755 => 100644 htdocs/theme/amarok/img/object_service.png mode change 100755 => 100644 htdocs/theme/amarok/img/object_stock.png mode change 100755 => 100644 htdocs/theme/amarok/img/object_task.png mode change 100755 => 100644 htdocs/theme/amarok/img/object_technic.png mode change 100755 => 100644 htdocs/theme/amarok/img/object_trip.png mode change 100755 => 100644 htdocs/theme/amarok/img/object_user.png mode change 100755 => 100644 htdocs/theme/amarok/img/off.png mode change 100755 => 100644 htdocs/theme/amarok/img/ok.png mode change 100755 => 100644 htdocs/theme/amarok/img/on.png mode change 100755 => 100644 htdocs/theme/amarok/img/pdf2.png mode change 100755 => 100644 htdocs/theme/amarok/img/pdf3.png mode change 100755 => 100644 htdocs/theme/amarok/img/previous.png mode change 100755 => 100644 htdocs/theme/amarok/img/printer.png mode change 100755 => 100644 htdocs/theme/amarok/img/puce.png mode change 100755 => 100644 htdocs/theme/amarok/img/recent.png mode change 100755 => 100644 htdocs/theme/amarok/img/redstar.png mode change 100755 => 100644 htdocs/theme/amarok/img/refresh.png mode change 100755 => 100644 htdocs/theme/amarok/img/reload.png mode change 100755 => 100644 htdocs/theme/amarok/img/rightarrow.png mode change 100755 => 100644 htdocs/theme/amarok/img/search.png mode change 100755 => 100644 htdocs/theme/amarok/img/searchclear.png mode change 100755 => 100644 htdocs/theme/amarok/img/setup.png mode change 100755 => 100644 htdocs/theme/amarok/img/split.png mode change 100755 => 100644 htdocs/theme/amarok/img/star.png mode change 100755 => 100644 htdocs/theme/amarok/img/stats.png mode change 100755 => 100644 htdocs/theme/amarok/img/statut0.png mode change 100755 => 100644 htdocs/theme/amarok/img/statut1.png mode change 100755 => 100644 htdocs/theme/amarok/img/statut2.png mode change 100755 => 100644 htdocs/theme/amarok/img/statut3.png mode change 100755 => 100644 htdocs/theme/amarok/img/statut4.png mode change 100755 => 100644 htdocs/theme/amarok/img/statut5.png mode change 100755 => 100644 htdocs/theme/amarok/img/statut6.png mode change 100755 => 100644 htdocs/theme/amarok/img/statut7.png mode change 100755 => 100644 htdocs/theme/amarok/img/statut8.png mode change 100755 => 100644 htdocs/theme/amarok/img/statut9.png mode change 100755 => 100644 htdocs/theme/amarok/img/stcomm-1.png mode change 100755 => 100644 htdocs/theme/amarok/img/stcomm-1_grayed.png mode change 100755 => 100644 htdocs/theme/amarok/img/stcomm0.png mode change 100755 => 100644 htdocs/theme/amarok/img/stcomm0_grayed.png mode change 100755 => 100644 htdocs/theme/amarok/img/stcomm1.png mode change 100755 => 100644 htdocs/theme/amarok/img/stcomm1_grayed.png mode change 100755 => 100644 htdocs/theme/amarok/img/stcomm2.png mode change 100755 => 100644 htdocs/theme/amarok/img/stcomm2_grayed.png mode change 100755 => 100644 htdocs/theme/amarok/img/stcomm3.png mode change 100755 => 100644 htdocs/theme/amarok/img/stcomm3_grayed.png mode change 100755 => 100644 htdocs/theme/amarok/img/stcomm4.png mode change 100755 => 100644 htdocs/theme/amarok/img/stcomm4_grayed.png mode change 100755 => 100644 htdocs/theme/amarok/img/tick.png mode change 100755 => 100644 htdocs/theme/amarok/img/title.png mode change 100755 => 100644 htdocs/theme/amarok/img/unlock.png mode change 100755 => 100644 htdocs/theme/amarok/img/uparrow.png mode change 100755 => 100644 htdocs/theme/amarok/img/vcard.png mode change 100755 => 100644 htdocs/theme/amarok/img/view.png mode change 100755 => 100644 htdocs/theme/amarok/img/vmenu.png mode change 100755 => 100644 htdocs/theme/amarok/img/warning.png mode change 100755 => 100644 htdocs/theme/amarok/img/working.gif mode change 100755 => 100644 htdocs/theme/amarok/thumb.png mode change 100755 => 100644 htdocs/theme/amarok/tpl/README mode change 100755 => 100644 htdocs/theme/auguria/img/edit_add.png mode change 100755 => 100644 htdocs/theme/auguria/img/edit_remove.png mode change 100755 => 100644 htdocs/theme/auguria/img/menus/topmenu_bg.png mode change 100755 => 100644 htdocs/theme/auguria/img/menus/topmenu_right.png mode change 100755 => 100644 htdocs/theme/auguria/img/object_bill.png mode change 100755 => 100644 htdocs/theme/auguria/img/object_book.png mode change 100755 => 100644 htdocs/theme/auguria/img/object_calendarday.png mode change 100755 => 100644 htdocs/theme/auguria/img/object_calendarweek.png mode change 100755 => 100644 htdocs/theme/auguria/img/object_company.png mode change 100755 => 100644 htdocs/theme/auguria/img/object_contact.png mode change 100755 => 100644 htdocs/theme/auguria/img/object_contract.png mode change 100755 => 100644 htdocs/theme/auguria/img/object_invoice.png mode change 100755 => 100644 htdocs/theme/auguria/img/object_opensurvey.png mode change 100755 => 100644 htdocs/theme/auguria/img/object_order.png mode change 100755 => 100644 htdocs/theme/auguria/img/object_product.png mode change 100755 => 100644 htdocs/theme/auguria/img/object_propal.png mode change 100755 => 100644 htdocs/theme/auguria/img/stats.png mode change 100755 => 100644 htdocs/theme/auguria/img/statut8.png mode change 100755 => 100644 htdocs/theme/auguria/img/statut9.png mode change 100755 => 100644 htdocs/theme/bureau2crea/img/object_calendarday.png mode change 100755 => 100644 htdocs/theme/bureau2crea/img/object_calendarweek.png mode change 100755 => 100644 htdocs/theme/bureau2crea/img/object_opensurvey.png mode change 100755 => 100644 htdocs/theme/bureau2crea/img/stats.png mode change 100755 => 100644 htdocs/theme/bureau2crea/img/statut8.png mode change 100755 => 100644 htdocs/theme/cameleo/img/object_opensurvey.png mode change 100755 => 100644 htdocs/theme/cameleo/img/stats.png mode change 100755 => 100644 htdocs/theme/common/devices/audio-card.png mode change 100755 => 100644 htdocs/theme/common/devices/audio-headset.png mode change 100755 => 100644 htdocs/theme/common/devices/audio-input-line.png mode change 100755 => 100644 htdocs/theme/common/devices/audio-input-microphone.png mode change 100755 => 100644 htdocs/theme/common/devices/battery.png mode change 100755 => 100644 htdocs/theme/common/devices/camera-photo.png mode change 100755 => 100644 htdocs/theme/common/devices/camera-web.png mode change 100755 => 100644 htdocs/theme/common/devices/computer-laptop.png mode change 100755 => 100644 htdocs/theme/common/devices/computer.png mode change 100755 => 100644 htdocs/theme/common/devices/cpu.png mode change 100755 => 100644 htdocs/theme/common/devices/drive-harddisk.png mode change 100755 => 100644 htdocs/theme/common/devices/drive-optical.png mode change 100755 => 100644 htdocs/theme/common/devices/drive-removable-media-usb-pendrive.png mode change 100755 => 100644 htdocs/theme/common/devices/drive-removable-media-usb.png mode change 100755 => 100644 htdocs/theme/common/devices/drive-removable-media.png mode change 100755 => 100644 htdocs/theme/common/devices/input-gaming.png mode change 100755 => 100644 htdocs/theme/common/devices/input-keyboard.png mode change 100755 => 100644 htdocs/theme/common/devices/input-mouse.png mode change 100755 => 100644 htdocs/theme/common/devices/input-tablet.png mode change 100755 => 100644 htdocs/theme/common/devices/media-flash-memory-stick.png mode change 100755 => 100644 htdocs/theme/common/devices/media-flash-sd-mmc.png mode change 100755 => 100644 htdocs/theme/common/devices/media-flash-smart-media.png mode change 100755 => 100644 htdocs/theme/common/devices/media-flash.png mode change 100755 => 100644 htdocs/theme/common/devices/media-floppy.png mode change 100755 => 100644 htdocs/theme/common/devices/media-optical-audio.png mode change 100755 => 100644 htdocs/theme/common/devices/media-optical-blu-ray.png mode change 100755 => 100644 htdocs/theme/common/devices/media-optical-data.png mode change 100755 => 100644 htdocs/theme/common/devices/media-optical-dvd-video.png mode change 100755 => 100644 htdocs/theme/common/devices/media-optical-dvd.png mode change 100755 => 100644 htdocs/theme/common/devices/media-optical-mixed-cd.png mode change 100755 => 100644 htdocs/theme/common/devices/media-optical-recordable.png mode change 100755 => 100644 htdocs/theme/common/devices/media-optical-video.png mode change 100755 => 100644 htdocs/theme/common/devices/media-optical.png mode change 100755 => 100644 htdocs/theme/common/devices/media-tape.png mode change 100755 => 100644 htdocs/theme/common/devices/modem.png mode change 100755 => 100644 htdocs/theme/common/devices/multimedia-player-apple-ipod.png mode change 100755 => 100644 htdocs/theme/common/devices/multimedia-player.png mode change 100755 => 100644 htdocs/theme/common/devices/network-wired.png mode change 100755 => 100644 htdocs/theme/common/devices/network-wireless-connected-00.png mode change 100755 => 100644 htdocs/theme/common/devices/network-wireless-connected-100.png mode change 100755 => 100644 htdocs/theme/common/devices/network-wireless-connected-25.png mode change 100755 => 100644 htdocs/theme/common/devices/network-wireless-connected-50.png mode change 100755 => 100644 htdocs/theme/common/devices/network-wireless-connected-75.png mode change 100755 => 100644 htdocs/theme/common/devices/network-wireless-disconnected.png mode change 100755 => 100644 htdocs/theme/common/devices/network-wireless.png mode change 100755 => 100644 htdocs/theme/common/devices/pda.png mode change 100755 => 100644 htdocs/theme/common/devices/phone-openmoko-freerunner.png mode change 100755 => 100644 htdocs/theme/common/devices/phone.png mode change 100755 => 100644 htdocs/theme/common/devices/printer-laser.png mode change 100755 => 100644 htdocs/theme/common/devices/printer.png mode change 100755 => 100644 htdocs/theme/common/devices/scanner.png mode change 100755 => 100644 htdocs/theme/common/devices/video-display.png mode change 100755 => 100644 htdocs/theme/common/devices/video-projector.png mode change 100755 => 100644 htdocs/theme/common/devices/video-television.png mode change 100755 => 100644 htdocs/theme/common/emotes/face-angel.png mode change 100755 => 100644 htdocs/theme/common/emotes/face-embarrassed.png mode change 100755 => 100644 htdocs/theme/common/emotes/face-kiss.png mode change 100755 => 100644 htdocs/theme/common/emotes/face-laugh.png mode change 100755 => 100644 htdocs/theme/common/emotes/face-plain.png mode change 100755 => 100644 htdocs/theme/common/emotes/face-raspberry.png mode change 100755 => 100644 htdocs/theme/common/emotes/face-sad.png mode change 100755 => 100644 htdocs/theme/common/emotes/face-smile-big.png mode change 100755 => 100644 htdocs/theme/common/emotes/face-smile.png mode change 100755 => 100644 htdocs/theme/common/emotes/face-surprise.png mode change 100755 => 100644 htdocs/theme/common/emotes/face-uncertain.png mode change 100755 => 100644 htdocs/theme/common/emotes/face-wink.png mode change 100755 => 100644 htdocs/theme/common/gmap.png mode change 100755 => 100644 htdocs/theme/common/ical.gif mode change 100755 => 100644 htdocs/theme/common/mime/css.png mode change 100755 => 100644 htdocs/theme/common/mime/dotnet.png mode change 100755 => 100644 htdocs/theme/common/mime/encrypt.png mode change 100755 => 100644 htdocs/theme/common/mime/glasses.png mode change 100755 => 100644 htdocs/theme/common/mime/jnlp.png mode change 100755 => 100644 htdocs/theme/common/mime/library.png mode change 100755 => 100644 htdocs/theme/common/mime/lit.png mode change 100755 => 100644 htdocs/theme/common/mime/mdb.png mode change 100755 => 100644 htdocs/theme/common/mime/ooffice.png mode change 100755 => 100644 htdocs/theme/common/mime/page.png mode change 100755 => 100644 htdocs/theme/common/mime/readme.txt mode change 100755 => 100644 htdocs/theme/common/mime/rss.png mode change 100755 => 100644 htdocs/theme/common/rss.gif mode change 100755 => 100644 htdocs/theme/common/treemenu/folder2-expanded.png mode change 100755 => 100644 htdocs/theme/common/treemenu/folder2.png mode change 100755 => 100644 htdocs/theme/common/vcal.gif mode change 100755 => 100644 htdocs/theme/common/weather/weather-clear-night.png mode change 100755 => 100644 htdocs/theme/common/weather/weather-clear.png mode change 100755 => 100644 htdocs/theme/common/weather/weather-clouds-night.png mode change 100755 => 100644 htdocs/theme/common/weather/weather-clouds.png mode change 100755 => 100644 htdocs/theme/common/weather/weather-few-clouds-night.png mode change 100755 => 100644 htdocs/theme/common/weather/weather-few-clouds.png mode change 100755 => 100644 htdocs/theme/common/weather/weather-freezing-rain.png mode change 100755 => 100644 htdocs/theme/common/weather/weather-hail.png mode change 100755 => 100644 htdocs/theme/common/weather/weather-many-clouds.png mode change 100755 => 100644 htdocs/theme/common/weather/weather-mist.png mode change 100755 => 100644 htdocs/theme/common/weather/weather-showers-day.png mode change 100755 => 100644 htdocs/theme/common/weather/weather-showers-night.png mode change 100755 => 100644 htdocs/theme/common/weather/weather-showers-scattered-day.png mode change 100755 => 100644 htdocs/theme/common/weather/weather-showers-scattered-night.png mode change 100755 => 100644 htdocs/theme/common/weather/weather-showers-scattered.png mode change 100755 => 100644 htdocs/theme/common/weather/weather-showers.png mode change 100755 => 100644 htdocs/theme/common/weather/weather-snow-rain.png mode change 100755 => 100644 htdocs/theme/common/weather/weather-snow-scattered-day.png mode change 100755 => 100644 htdocs/theme/common/weather/weather-snow-scattered-night.png mode change 100755 => 100644 htdocs/theme/common/weather/weather-snow-scattered.png mode change 100755 => 100644 htdocs/theme/common/weather/weather-snow.png mode change 100755 => 100644 htdocs/theme/common/weather/weather-storm-day.png mode change 100755 => 100644 htdocs/theme/common/weather/weather-storm-night.png mode change 100755 => 100644 htdocs/theme/common/weather/weather-storm.png mode change 100755 => 100644 htdocs/theme/dolibarr.png mode change 100755 => 100644 htdocs/theme/dolibarr_logo.png mode change 100755 => 100644 htdocs/theme/doliforge_logo.png mode change 100755 => 100644 htdocs/theme/dolistore_logo.png mode change 100755 => 100644 htdocs/theme/eldy/img/liste_titre2.png mode change 100755 => 100644 htdocs/theme/eldy/img/object_opensurvey.png mode change 100755 => 100644 htdocs/webservices/demo_wsclient_actioncomm.php-NORUN mode change 100755 => 100644 htdocs/webservices/demo_wsclient_category.php-NORUN mode change 100755 => 100644 htdocs/webservices/demo_wsclient_invoice.php-NORUN mode change 100755 => 100644 htdocs/webservices/demo_wsclient_order.php-NORUN mode change 100755 => 100644 htdocs/webservices/demo_wsclient_other.php-NORUN mode change 100755 => 100644 htdocs/webservices/demo_wsclient_productorservice.php-NORUN mode change 100755 => 100644 htdocs/webservices/demo_wsclient_thirdparty.php-NORUN mode change 100755 => 100644 test/phpunit/CMailFileTest.php mode change 100755 => 100644 test/phpunit/CategorieTest.php mode change 100755 => 100644 test/phpunit/ChargeSocialesTest.php mode change 100755 => 100644 test/phpunit/ContactTest.php mode change 100755 => 100644 test/phpunit/CoreTest.php mode change 100755 => 100644 test/phpunit/DiscountTest.php mode change 100755 => 100644 test/phpunit/EntrepotTest.php mode change 100755 => 100644 test/phpunit/Example_import_company_1.csv mode change 100755 => 100644 test/phpunit/ExportTest.php mode change 100755 => 100644 test/phpunit/Functions2LibTest.php mode change 100755 => 100644 test/phpunit/FunctionsLibTest.php mode change 100755 => 100644 test/phpunit/ImportTest.php mode change 100755 => 100644 test/phpunit/JsonLibTest.php mode change 100755 => 100644 test/phpunit/LangTest.php mode change 100755 => 100644 test/phpunit/ModulesTest.php mode change 100755 => 100644 test/phpunit/PdfDocTest.php mode change 100755 => 100644 test/phpunit/PgsqlTest.php mode change 100755 => 100644 test/phpunit/PricesTest.php mode change 100755 => 100644 test/phpunit/ProductTest.php mode change 100755 => 100644 test/phpunit/ScriptsTest.php mode change 100755 => 100644 test/phpunit/SecurityTest.php mode change 100755 => 100644 test/phpunit/SocieteTest.php mode change 100755 => 100644 test/phpunit/SqlTest.php mode change 100755 => 100644 test/phpunit/WebservicesInvoicesTest.php mode change 100755 => 100644 test/phpunit/WebservicesOrdersTest.php mode change 100755 => 100644 test/phpunit/WebservicesOtherTest.php mode change 100755 => 100644 test/phpunit/WebservicesProductsTest.php mode change 100755 => 100644 test/phpunit/WebservicesThirdpartyTest.php mode change 100755 => 100644 test/phpunit/WebservicesUserTest.php mode change 100755 => 100644 test/soapui/Dolibarr-soapui-project.xml diff --git a/.gitignore b/.gitignore old mode 100755 new mode 100644 diff --git a/build/.gitignore b/build/.gitignore old mode 100755 new mode 100644 diff --git a/build/aps/APP-META-1.1.xml b/build/aps/APP-META-1.1.xml old mode 100755 new mode 100644 diff --git a/build/aps/APP-META-1.2.xml b/build/aps/APP-META-1.2.xml old mode 100755 new mode 100644 diff --git a/build/aps/README b/build/aps/README old mode 100755 new mode 100644 diff --git a/build/aps/install.forced.php.install b/build/aps/install.forced.php.install old mode 100755 new mode 100644 diff --git a/build/debian/conf.php.install b/build/debian/conf.php.install old mode 100755 new mode 100644 diff --git a/build/debian/control b/build/debian/control old mode 100755 new mode 100644 diff --git a/build/debian/dolibarr.install b/build/debian/dolibarr.install old mode 100755 new mode 100644 diff --git a/build/debian/dolibarr.lintian-overrides b/build/debian/dolibarr.lintian-overrides old mode 100755 new mode 100644 diff --git a/build/debian/dolibarr.templates.futur b/build/debian/dolibarr.templates.futur old mode 100755 new mode 100644 diff --git a/build/debian/install.forced.php.install b/build/debian/install.forced.php.install old mode 100755 new mode 100644 diff --git a/build/debian/po/POTFILES.in b/build/debian/po/POTFILES.in old mode 100755 new mode 100644 diff --git a/build/debian/po/fr.po b/build/debian/po/fr.po old mode 100755 new mode 100644 diff --git a/build/doxygen/doxygen_footer.html b/build/doxygen/doxygen_footer.html old mode 100755 new mode 100644 diff --git a/build/doxygen/doxygen_header.html b/build/doxygen/doxygen_header.html old mode 100755 new mode 100644 diff --git a/build/rpm/conf.php b/build/rpm/conf.php old mode 100755 new mode 100644 diff --git a/build/rpm/dolibarr-forrpm.patch b/build/rpm/dolibarr-forrpm.patch old mode 100755 new mode 100644 diff --git a/build/rpm/dolibarr.desktop b/build/rpm/dolibarr.desktop old mode 100755 new mode 100644 diff --git a/build/rpm/dolibarr_fedora.spec b/build/rpm/dolibarr_fedora.spec old mode 100755 new mode 100644 diff --git a/build/rpm/dolibarr_generic.spec b/build/rpm/dolibarr_generic.spec old mode 100755 new mode 100644 diff --git a/build/rpm/dolibarr_mandriva.spec b/build/rpm/dolibarr_mandriva.spec old mode 100755 new mode 100644 diff --git a/build/rpm/dolibarr_opensuse.spec b/build/rpm/dolibarr_opensuse.spec old mode 100755 new mode 100644 diff --git a/build/rpm/file_contexts.dolibarr b/build/rpm/file_contexts.dolibarr old mode 100755 new mode 100644 diff --git a/build/rpm/install.forced.php.fedora b/build/rpm/install.forced.php.fedora old mode 100755 new mode 100644 diff --git a/build/rpm/install.forced.php.generic b/build/rpm/install.forced.php.generic old mode 100755 new mode 100644 diff --git a/build/rpm/install.forced.php.mandriva b/build/rpm/install.forced.php.mandriva old mode 100755 new mode 100644 diff --git a/build/rpm/install.forced.php.opensuse b/build/rpm/install.forced.php.opensuse old mode 100755 new mode 100644 diff --git a/dev/codesniffer/README b/dev/codesniffer/README old mode 100755 new mode 100644 diff --git a/dev/codesniffer/php.ini b/dev/codesniffer/php.ini old mode 100755 new mode 100644 diff --git a/dev/codesniffer/ruleset.dtd b/dev/codesniffer/ruleset.dtd old mode 100755 new mode 100644 diff --git a/dev/codesniffer/ruleset.xml b/dev/codesniffer/ruleset.xml old mode 100755 new mode 100644 diff --git a/dev/codetemplates/README b/dev/codetemplates/README old mode 100755 new mode 100644 diff --git a/dev/codetemplates/codetemplates.dtd b/dev/codetemplates/codetemplates.dtd old mode 100755 new mode 100644 diff --git a/dev/codetemplates/codetemplates.xml b/dev/codetemplates/codetemplates.xml old mode 100755 new mode 100644 diff --git a/dev/dbmodel/emulate_oscommerce/llx_osc_categories.sql b/dev/dbmodel/emulate_oscommerce/llx_osc_categories.sql old mode 100755 new mode 100644 diff --git a/dev/dbmodel/emulate_oscommerce/llx_osc_customer.key.sql b/dev/dbmodel/emulate_oscommerce/llx_osc_customer.key.sql old mode 100755 new mode 100644 diff --git a/dev/dbmodel/emulate_oscommerce/llx_osc_customer.sql b/dev/dbmodel/emulate_oscommerce/llx_osc_customer.sql old mode 100755 new mode 100644 diff --git a/dev/dbmodel/emulate_oscommerce/llx_osc_order.sql b/dev/dbmodel/emulate_oscommerce/llx_osc_order.sql old mode 100755 new mode 100644 diff --git a/dev/dbmodel/emulate_oscommerce/llx_osc_product.sql b/dev/dbmodel/emulate_oscommerce/llx_osc_product.sql old mode 100755 new mode 100644 diff --git a/dev/examples/README b/dev/examples/README old mode 100755 new mode 100644 diff --git a/dev/iso-normes/GURULABS-RPM-GUIDE-v1.0.PDF b/dev/iso-normes/GURULABS-RPM-GUIDE-v1.0.PDF old mode 100755 new mode 100644 diff --git a/dev/iso-normes/address_format.txt b/dev/iso-normes/address_format.txt old mode 100755 new mode 100644 diff --git a/dev/iso-normes/banknumber_format.txt b/dev/iso-normes/banknumber_format.txt old mode 100755 new mode 100644 diff --git a/dev/iso-normes/xmlexport.txt b/dev/iso-normes/xmlexport.txt old mode 100755 new mode 100644 diff --git a/dev/phpunit/README b/dev/phpunit/README old mode 100755 new mode 100644 diff --git a/dev/phpunit/eclipse_setup_for_pti_phpunit.png b/dev/phpunit/eclipse_setup_for_pti_phpunit.png old mode 100755 new mode 100644 diff --git a/dev/skeletons/build_webservice_from_class.php b/dev/skeletons/build_webservice_from_class.php old mode 100644 new mode 100755 diff --git a/dev/test/testtcpdf.php b/dev/test/testtcpdf.php old mode 100755 new mode 100644 diff --git a/doc/images/appicon_128.png b/doc/images/appicon_128.png old mode 100755 new mode 100644 diff --git a/doc/images/appicon_16.ico b/doc/images/appicon_16.ico old mode 100755 new mode 100644 diff --git a/doc/images/appicon_16.png b/doc/images/appicon_16.png old mode 100755 new mode 100644 diff --git a/doc/images/appicon_32.png b/doc/images/appicon_32.png old mode 100755 new mode 100644 diff --git a/doc/images/appicon_48.ico b/doc/images/appicon_48.ico old mode 100755 new mode 100644 diff --git a/doc/images/appicon_64.png b/doc/images/appicon_64.png old mode 100755 new mode 100644 diff --git a/doc/images/dolibarr_73x73.png b/doc/images/dolibarr_73x73.png old mode 100755 new mode 100644 diff --git a/doc/images/dolibarr_logo.png b/doc/images/dolibarr_logo.png old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/browser.css b/htdocs/core/filemanagerdol/browser/default/browser.css old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/Folder.gif b/htdocs/core/filemanagerdol/browser/default/images/Folder.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/FolderUp.gif b/htdocs/core/filemanagerdol/browser/default/images/FolderUp.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/ai.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/ai.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/avi.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/avi.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/bmp.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/bmp.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/cs.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/cs.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/default.icon.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/default.icon.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/dll.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/dll.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/doc.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/doc.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/exe.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/exe.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/fla.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/fla.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/gif.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/gif.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/htm.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/htm.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/html.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/html.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/jpg.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/jpg.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/js.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/js.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/mdb.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/mdb.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/mp3.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/mp3.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/pdf.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/pdf.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/png.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/png.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/ppt.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/ppt.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/rdp.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/rdp.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/swf.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/swf.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/swt.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/swt.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/txt.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/txt.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/vsd.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/vsd.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/xls.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/xls.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/xml.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/xml.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/zip.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/zip.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/ai.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/ai.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/avi.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/avi.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/bmp.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/bmp.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/cs.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/cs.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/default.icon.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/default.icon.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/dll.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/dll.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/doc.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/doc.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/exe.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/exe.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/fla.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/fla.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/gif.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/gif.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/htm.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/htm.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/html.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/html.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/jpg.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/jpg.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/js.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/js.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/mdb.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/mdb.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/mp3.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/mp3.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/pdf.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/pdf.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/png.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/png.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/ppt.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/ppt.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/rdp.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/rdp.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/swf.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/swf.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/swt.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/swt.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/txt.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/txt.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/vsd.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/vsd.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/xls.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/xls.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/xml.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/xml.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/zip.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/zip.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/js/common.js b/htdocs/core/filemanagerdol/browser/default/js/common.js old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/js/fckxml.js b/htdocs/core/filemanagerdol/browser/default/js/fckxml.js old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/spacer.gif b/htdocs/core/filemanagerdol/browser/default/spacer.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/modules/security/generate/README b/htdocs/core/modules/security/generate/README old mode 100755 new mode 100644 diff --git a/htdocs/includes/fpdfi/README.txt b/htdocs/includes/fpdfi/README.txt old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/colorpicker/jquery.colorpicker.css b/htdocs/includes/jquery/plugins/colorpicker/jquery.colorpicker.css old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/colorpicker/jquery.colorpicker.js b/htdocs/includes/jquery/plugins/colorpicker/jquery.colorpicker.js old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jcrop/css/Jcrop.gif b/htdocs/includes/jquery/plugins/jcrop/css/Jcrop.gif old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jcrop/css/jquery.Jcrop.css b/htdocs/includes/jquery/plugins/jcrop/css/jquery.Jcrop.css old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jcrop/index.html b/htdocs/includes/jquery/plugins/jcrop/index.html old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jcrop/js/jquery.Jcrop.js b/htdocs/includes/jquery/plugins/jcrop/js/jquery.Jcrop.js old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jcrop/js/jquery.Jcrop.min.js b/htdocs/includes/jquery/plugins/jcrop/js/jquery.Jcrop.min.js old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jnotify/jquery.jnotify-alt.min.css b/htdocs/includes/jquery/plugins/jnotify/jquery.jnotify-alt.min.css old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jnotify/jquery.jnotify.css b/htdocs/includes/jquery/plugins/jnotify/jquery.jnotify.css old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jpicker/ChangeLog.txt b/htdocs/includes/jquery/plugins/jpicker/ChangeLog.txt old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jpicker/Example.html b/htdocs/includes/jquery/plugins/jpicker/Example.html old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jpicker/ReadMe.txt b/htdocs/includes/jquery/plugins/jpicker/ReadMe.txt old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jpicker/css/jPicker-1.1.6.css b/htdocs/includes/jquery/plugins/jpicker/css/jPicker-1.1.6.css old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jpicker/css/jPicker-1.1.6.min.css b/htdocs/includes/jquery/plugins/jpicker/css/jPicker-1.1.6.min.css old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jpicker/images/AlphaBar.png b/htdocs/includes/jquery/plugins/jpicker/images/AlphaBar.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jpicker/images/Bars.png b/htdocs/includes/jquery/plugins/jpicker/images/Bars.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jpicker/images/Maps.png b/htdocs/includes/jquery/plugins/jpicker/images/Maps.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jpicker/images/NoColor.png b/htdocs/includes/jquery/plugins/jpicker/images/NoColor.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jpicker/images/bar-opacity.png b/htdocs/includes/jquery/plugins/jpicker/images/bar-opacity.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jpicker/images/map-opacity.png b/htdocs/includes/jquery/plugins/jpicker/images/map-opacity.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jpicker/images/mappoint.gif b/htdocs/includes/jquery/plugins/jpicker/images/mappoint.gif old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jpicker/images/picker.gif b/htdocs/includes/jquery/plugins/jpicker/images/picker.gif old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jpicker/images/preview-opacity.png b/htdocs/includes/jquery/plugins/jpicker/images/preview-opacity.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jpicker/images/rangearrows.gif b/htdocs/includes/jquery/plugins/jpicker/images/rangearrows.gif old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jpicker/jPicker.css b/htdocs/includes/jquery/plugins/jpicker/jPicker.css old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jpicker/jpicker-1.1.6.js b/htdocs/includes/jquery/plugins/jpicker/jpicker-1.1.6.js old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jpicker/jpicker-1.1.6.min.js b/htdocs/includes/jquery/plugins/jpicker/jpicker-1.1.6.min.js old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/application.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/application.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/code.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/code.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/css.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/css.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/db.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/db.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/directory.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/directory.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/doc.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/doc.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/file.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/file.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/film.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/film.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/flash.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/flash.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/folder_open.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/folder_open.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/html.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/html.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/java.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/java.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/linux.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/linux.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/music.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/music.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/pdf.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/pdf.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/php.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/php.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/picture.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/picture.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/ppt.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/ppt.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/psd.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/psd.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/ruby.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/ruby.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/script.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/script.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/spinner.gif b/htdocs/includes/jquery/plugins/jqueryFileTree/images/spinner.gif old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/txt.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/txt.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/xls.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/xls.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/zip.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/zip.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/jqueryFileTree.css b/htdocs/includes/jquery/plugins/jqueryFileTree/jqueryFileTree.css old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/jqueryFileTree.js b/htdocs/includes/jquery/plugins/jqueryFileTree/jqueryFileTree.js old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/tiptip/jquery.tipTip.js b/htdocs/includes/jquery/plugins/tiptip/jquery.tipTip.js old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/tiptip/jquery.tipTip.min.js b/htdocs/includes/jquery/plugins/tiptip/jquery.tipTip.min.js old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/tiptip/tipTip.css b/htdocs/includes/jquery/plugins/tiptip/tipTip.css old mode 100755 new mode 100644 diff --git a/htdocs/includes/nusoap/lib/Mail/xmail.dtd b/htdocs/includes/nusoap/lib/Mail/xmail.dtd old mode 100755 new mode 100644 diff --git a/htdocs/includes/nusoap/lib/Mail/xmail.xsl b/htdocs/includes/nusoap/lib/Mail/xmail.xsl old mode 100755 new mode 100644 diff --git a/htdocs/includes/tcpdf/fonts/dejavusanscondensed.ctg.z b/htdocs/includes/tcpdf/fonts/dejavusanscondensed.ctg.z old mode 100755 new mode 100644 diff --git a/htdocs/includes/tcpdf/fonts/dejavusanscondensed.z b/htdocs/includes/tcpdf/fonts/dejavusanscondensed.z old mode 100755 new mode 100644 diff --git a/htdocs/includes/tcpdf/fonts/dejavusanscondensedb.ctg.z b/htdocs/includes/tcpdf/fonts/dejavusanscondensedb.ctg.z old mode 100755 new mode 100644 diff --git a/htdocs/includes/tcpdf/fonts/dejavusanscondensedb.z b/htdocs/includes/tcpdf/fonts/dejavusanscondensedb.z old mode 100755 new mode 100644 diff --git a/htdocs/includes/tcpdf/fonts/dejavusanscondensedbi.ctg.z b/htdocs/includes/tcpdf/fonts/dejavusanscondensedbi.ctg.z old mode 100755 new mode 100644 diff --git a/htdocs/includes/tcpdf/fonts/dejavusanscondensedbi.z b/htdocs/includes/tcpdf/fonts/dejavusanscondensedbi.z old mode 100755 new mode 100644 diff --git a/htdocs/includes/tcpdf/fonts/dejavusanscondensedi.ctg.z b/htdocs/includes/tcpdf/fonts/dejavusanscondensedi.ctg.z old mode 100755 new mode 100644 diff --git a/htdocs/includes/tcpdf/fonts/dejavusanscondensedi.z b/htdocs/includes/tcpdf/fonts/dejavusanscondensedi.z old mode 100755 new mode 100644 diff --git a/htdocs/includes/tcpdf/fonts/dejavusansextralight.ctg.z b/htdocs/includes/tcpdf/fonts/dejavusansextralight.ctg.z old mode 100755 new mode 100644 diff --git a/htdocs/includes/tcpdf/fonts/dejavusansextralight.z b/htdocs/includes/tcpdf/fonts/dejavusansextralight.z old mode 100755 new mode 100644 diff --git a/htdocs/includes/tcpdf/fonts/dejavusansmono.ctg.z b/htdocs/includes/tcpdf/fonts/dejavusansmono.ctg.z old mode 100755 new mode 100644 diff --git a/htdocs/includes/tcpdf/fonts/dejavusansmono.z b/htdocs/includes/tcpdf/fonts/dejavusansmono.z old mode 100755 new mode 100644 diff --git a/htdocs/includes/tcpdf/fonts/dejavusansmonob.ctg.z b/htdocs/includes/tcpdf/fonts/dejavusansmonob.ctg.z old mode 100755 new mode 100644 diff --git a/htdocs/includes/tcpdf/fonts/dejavusansmonob.z b/htdocs/includes/tcpdf/fonts/dejavusansmonob.z old mode 100755 new mode 100644 diff --git a/htdocs/includes/tcpdf/fonts/dejavusansmonobi.ctg.z b/htdocs/includes/tcpdf/fonts/dejavusansmonobi.ctg.z old mode 100755 new mode 100644 diff --git a/htdocs/includes/tcpdf/fonts/dejavusansmonobi.z b/htdocs/includes/tcpdf/fonts/dejavusansmonobi.z old mode 100755 new mode 100644 diff --git a/htdocs/includes/tcpdf/fonts/dejavusansmonoi.ctg.z b/htdocs/includes/tcpdf/fonts/dejavusansmonoi.ctg.z old mode 100755 new mode 100644 diff --git a/htdocs/includes/tcpdf/fonts/dejavusansmonoi.z b/htdocs/includes/tcpdf/fonts/dejavusansmonoi.z old mode 100755 new mode 100644 diff --git a/htdocs/install/doctemplates/projects/template_project.odt b/htdocs/install/doctemplates/projects/template_project.odt old mode 100755 new mode 100644 diff --git a/htdocs/install/mysql/data/llx_c_input_method.sql b/htdocs/install/mysql/data/llx_c_input_method.sql old mode 100755 new mode 100644 diff --git a/htdocs/install/mysql/data/llx_c_input_reason.sql b/htdocs/install/mysql/data/llx_c_input_reason.sql old mode 100755 new mode 100644 diff --git a/htdocs/install/mysql/migration/2.7.0-2.8.0.sql b/htdocs/install/mysql/migration/2.7.0-2.8.0.sql old mode 100755 new mode 100644 diff --git a/htdocs/install/mysql/migration/2.8.0-2.9.0.sql b/htdocs/install/mysql/migration/2.8.0-2.9.0.sql old mode 100755 new mode 100644 diff --git a/htdocs/install/mysql/migration/3.0.0-3.1.0.sql b/htdocs/install/mysql/migration/3.0.0-3.1.0.sql old mode 100755 new mode 100644 diff --git a/htdocs/install/mysql/migration/3.1.0-3.2.0.sql b/htdocs/install/mysql/migration/3.1.0-3.2.0.sql old mode 100755 new mode 100644 diff --git a/htdocs/install/mysql/migration/3.2.0-3.3.0.sql b/htdocs/install/mysql/migration/3.2.0-3.3.0.sql old mode 100755 new mode 100644 diff --git a/htdocs/install/mysql/migration/3.3.0-3.4.0.sql b/htdocs/install/mysql/migration/3.3.0-3.4.0.sql old mode 100755 new mode 100644 diff --git a/htdocs/install/mysql/migration/3.4.0-3.5.0.sql b/htdocs/install/mysql/migration/3.4.0-3.5.0.sql old mode 100755 new mode 100644 diff --git a/htdocs/install/mysql/tables/llx_resource.key.sql b/htdocs/install/mysql/tables/llx_resource.key.sql old mode 100755 new mode 100644 diff --git a/htdocs/install/mysql/tables/llx_resource.sql b/htdocs/install/mysql/tables/llx_resource.sql old mode 100755 new mode 100644 diff --git a/htdocs/langs/en_US/resource.lang b/htdocs/langs/en_US/resource.lang old mode 100755 new mode 100644 diff --git a/htdocs/langs/fr_FR/resource.lang b/htdocs/langs/fr_FR/resource.lang old mode 100755 new mode 100644 diff --git a/htdocs/opensurvey/img/accept-24.png b/htdocs/opensurvey/img/accept-24.png old mode 100755 new mode 100644 diff --git a/htdocs/opensurvey/img/accept.png b/htdocs/opensurvey/img/accept.png old mode 100755 new mode 100644 diff --git a/htdocs/opensurvey/img/add-16.png b/htdocs/opensurvey/img/add-16.png old mode 100755 new mode 100644 diff --git a/htdocs/opensurvey/img/add-24.png b/htdocs/opensurvey/img/add-24.png old mode 100755 new mode 100644 diff --git a/htdocs/opensurvey/img/calendar-32.png b/htdocs/opensurvey/img/calendar-32.png old mode 100755 new mode 100644 diff --git a/htdocs/opensurvey/img/cancel.png b/htdocs/opensurvey/img/cancel.png old mode 100755 new mode 100644 diff --git a/htdocs/opensurvey/img/chart-32.png b/htdocs/opensurvey/img/chart-32.png old mode 100755 new mode 100644 diff --git a/htdocs/opensurvey/img/fforward.png b/htdocs/opensurvey/img/fforward.png old mode 100755 new mode 100644 diff --git a/htdocs/opensurvey/img/medaille.png b/htdocs/opensurvey/img/medaille.png old mode 100755 new mode 100644 diff --git a/htdocs/opensurvey/img/next.png b/htdocs/opensurvey/img/next.png old mode 100755 new mode 100644 diff --git a/htdocs/opensurvey/img/object_opensurvey.png b/htdocs/opensurvey/img/object_opensurvey.png old mode 100755 new mode 100644 diff --git a/htdocs/opensurvey/img/previous.png b/htdocs/opensurvey/img/previous.png old mode 100755 new mode 100644 diff --git a/htdocs/opensurvey/img/rewind.png b/htdocs/opensurvey/img/rewind.png old mode 100755 new mode 100644 diff --git a/htdocs/resource/add.php b/htdocs/resource/add.php old mode 100755 new mode 100644 diff --git a/htdocs/resource/card.php b/htdocs/resource/card.php old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/AUTHOR b/htdocs/theme/amarok/AUTHOR old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/ckeditor/config.js b/htdocs/theme/amarok/ckeditor/config.js old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/1downarrow.png b/htdocs/theme/amarok/img/1downarrow.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/1downarrow_selected.png b/htdocs/theme/amarok/img/1downarrow_selected.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/1leftarrow.png b/htdocs/theme/amarok/img/1leftarrow.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/1leftarrow_selected.png b/htdocs/theme/amarok/img/1leftarrow_selected.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/1rightarrow.png b/htdocs/theme/amarok/img/1rightarrow.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/1rightarrow_selected.png b/htdocs/theme/amarok/img/1rightarrow_selected.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/1uparrow.png b/htdocs/theme/amarok/img/1uparrow.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/1uparrow_selected.png b/htdocs/theme/amarok/img/1uparrow_selected.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/1updownarrow.png b/htdocs/theme/amarok/img/1updownarrow.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/addfile.png b/htdocs/theme/amarok/img/addfile.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/button_edit.png b/htdocs/theme/amarok/img/button_edit.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/calc.png b/htdocs/theme/amarok/img/calc.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/calendar.png b/htdocs/theme/amarok/img/calendar.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/call.png b/htdocs/theme/amarok/img/call.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/call_out.png b/htdocs/theme/amarok/img/call_out.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/close.png b/htdocs/theme/amarok/img/close.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/delete.png b/htdocs/theme/amarok/img/delete.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/detail.png b/htdocs/theme/amarok/img/detail.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/disable.png b/htdocs/theme/amarok/img/disable.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/edit.png b/htdocs/theme/amarok/img/edit.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/edit_add.png b/htdocs/theme/amarok/img/edit_add.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/edit_remove.png b/htdocs/theme/amarok/img/edit_remove.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/editdelete.png b/htdocs/theme/amarok/img/editdelete.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/error.png b/htdocs/theme/amarok/img/error.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/file.png b/htdocs/theme/amarok/img/file.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/filenew.png b/htdocs/theme/amarok/img/filenew.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/filter.png b/htdocs/theme/amarok/img/filter.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/folder-open.png b/htdocs/theme/amarok/img/folder-open.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/folder.png b/htdocs/theme/amarok/img/folder.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/grip.png b/htdocs/theme/amarok/img/grip.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/help.png b/htdocs/theme/amarok/img/help.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/helpdoc.png b/htdocs/theme/amarok/img/helpdoc.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/high.png b/htdocs/theme/amarok/img/high.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/history.png b/htdocs/theme/amarok/img/history.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/indent1.png b/htdocs/theme/amarok/img/indent1.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/info.png b/htdocs/theme/amarok/img/info.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/lock.png b/htdocs/theme/amarok/img/lock.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/logout.png b/htdocs/theme/amarok/img/logout.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/mainlevel.gif b/htdocs/theme/amarok/img/mainlevel.gif old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/money.png b/htdocs/theme/amarok/img/money.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/next.png b/htdocs/theme/amarok/img/next.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/object_account.png b/htdocs/theme/amarok/img/object_account.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/object_action.png b/htdocs/theme/amarok/img/object_action.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/object_barcode.png b/htdocs/theme/amarok/img/object_barcode.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/object_bill.png b/htdocs/theme/amarok/img/object_bill.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/object_billa.png b/htdocs/theme/amarok/img/object_billa.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/object_billd.png b/htdocs/theme/amarok/img/object_billd.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/object_billr.png b/htdocs/theme/amarok/img/object_billr.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/object_book.png b/htdocs/theme/amarok/img/object_book.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/object_bookmark.png b/htdocs/theme/amarok/img/object_bookmark.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/object_calendar.png b/htdocs/theme/amarok/img/object_calendar.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/object_calendarday.png b/htdocs/theme/amarok/img/object_calendarday.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/object_calendarweek.png b/htdocs/theme/amarok/img/object_calendarweek.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/object_category-expanded.png b/htdocs/theme/amarok/img/object_category-expanded.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/object_category.png b/htdocs/theme/amarok/img/object_category.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/object_commercial.png b/htdocs/theme/amarok/img/object_commercial.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/object_company.png b/htdocs/theme/amarok/img/object_company.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/object_contact.png b/htdocs/theme/amarok/img/object_contact.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/object_contact_all.png b/htdocs/theme/amarok/img/object_contact_all.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/object_contract.png b/htdocs/theme/amarok/img/object_contract.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/object_dir.png b/htdocs/theme/amarok/img/object_dir.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/object_email.png b/htdocs/theme/amarok/img/object_email.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/object_energie.png b/htdocs/theme/amarok/img/object_energie.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/object_generic.png b/htdocs/theme/amarok/img/object_generic.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/object_globe.png b/htdocs/theme/amarok/img/object_globe.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/object_group.png b/htdocs/theme/amarok/img/object_group.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/object_intervention.png b/htdocs/theme/amarok/img/object_intervention.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/object_invoice.png b/htdocs/theme/amarok/img/object_invoice.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/object_label.png b/htdocs/theme/amarok/img/object_label.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/object_list.png b/htdocs/theme/amarok/img/object_list.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/object_opensurvey.png b/htdocs/theme/amarok/img/object_opensurvey.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/object_order.png b/htdocs/theme/amarok/img/object_order.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/object_payment.png b/htdocs/theme/amarok/img/object_payment.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/object_phoning.png b/htdocs/theme/amarok/img/object_phoning.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/object_product.png b/htdocs/theme/amarok/img/object_product.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/object_project.png b/htdocs/theme/amarok/img/object_project.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/object_projectpub.png b/htdocs/theme/amarok/img/object_projectpub.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/object_projecttask.png b/htdocs/theme/amarok/img/object_projecttask.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/object_propal.png b/htdocs/theme/amarok/img/object_propal.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/object_reduc.png b/htdocs/theme/amarok/img/object_reduc.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/object_rss.png b/htdocs/theme/amarok/img/object_rss.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/object_sending.png b/htdocs/theme/amarok/img/object_sending.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/object_service.png b/htdocs/theme/amarok/img/object_service.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/object_stock.png b/htdocs/theme/amarok/img/object_stock.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/object_task.png b/htdocs/theme/amarok/img/object_task.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/object_technic.png b/htdocs/theme/amarok/img/object_technic.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/object_trip.png b/htdocs/theme/amarok/img/object_trip.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/object_user.png b/htdocs/theme/amarok/img/object_user.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/off.png b/htdocs/theme/amarok/img/off.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/ok.png b/htdocs/theme/amarok/img/ok.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/on.png b/htdocs/theme/amarok/img/on.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/pdf2.png b/htdocs/theme/amarok/img/pdf2.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/pdf3.png b/htdocs/theme/amarok/img/pdf3.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/previous.png b/htdocs/theme/amarok/img/previous.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/printer.png b/htdocs/theme/amarok/img/printer.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/puce.png b/htdocs/theme/amarok/img/puce.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/recent.png b/htdocs/theme/amarok/img/recent.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/redstar.png b/htdocs/theme/amarok/img/redstar.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/refresh.png b/htdocs/theme/amarok/img/refresh.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/reload.png b/htdocs/theme/amarok/img/reload.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/rightarrow.png b/htdocs/theme/amarok/img/rightarrow.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/search.png b/htdocs/theme/amarok/img/search.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/searchclear.png b/htdocs/theme/amarok/img/searchclear.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/setup.png b/htdocs/theme/amarok/img/setup.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/split.png b/htdocs/theme/amarok/img/split.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/star.png b/htdocs/theme/amarok/img/star.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/stats.png b/htdocs/theme/amarok/img/stats.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/statut0.png b/htdocs/theme/amarok/img/statut0.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/statut1.png b/htdocs/theme/amarok/img/statut1.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/statut2.png b/htdocs/theme/amarok/img/statut2.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/statut3.png b/htdocs/theme/amarok/img/statut3.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/statut4.png b/htdocs/theme/amarok/img/statut4.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/statut5.png b/htdocs/theme/amarok/img/statut5.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/statut6.png b/htdocs/theme/amarok/img/statut6.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/statut7.png b/htdocs/theme/amarok/img/statut7.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/statut8.png b/htdocs/theme/amarok/img/statut8.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/statut9.png b/htdocs/theme/amarok/img/statut9.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/stcomm-1.png b/htdocs/theme/amarok/img/stcomm-1.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/stcomm-1_grayed.png b/htdocs/theme/amarok/img/stcomm-1_grayed.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/stcomm0.png b/htdocs/theme/amarok/img/stcomm0.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/stcomm0_grayed.png b/htdocs/theme/amarok/img/stcomm0_grayed.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/stcomm1.png b/htdocs/theme/amarok/img/stcomm1.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/stcomm1_grayed.png b/htdocs/theme/amarok/img/stcomm1_grayed.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/stcomm2.png b/htdocs/theme/amarok/img/stcomm2.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/stcomm2_grayed.png b/htdocs/theme/amarok/img/stcomm2_grayed.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/stcomm3.png b/htdocs/theme/amarok/img/stcomm3.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/stcomm3_grayed.png b/htdocs/theme/amarok/img/stcomm3_grayed.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/stcomm4.png b/htdocs/theme/amarok/img/stcomm4.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/stcomm4_grayed.png b/htdocs/theme/amarok/img/stcomm4_grayed.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/tick.png b/htdocs/theme/amarok/img/tick.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/title.png b/htdocs/theme/amarok/img/title.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/unlock.png b/htdocs/theme/amarok/img/unlock.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/uparrow.png b/htdocs/theme/amarok/img/uparrow.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/vcard.png b/htdocs/theme/amarok/img/vcard.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/view.png b/htdocs/theme/amarok/img/view.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/vmenu.png b/htdocs/theme/amarok/img/vmenu.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/warning.png b/htdocs/theme/amarok/img/warning.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/img/working.gif b/htdocs/theme/amarok/img/working.gif old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/thumb.png b/htdocs/theme/amarok/thumb.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/amarok/tpl/README b/htdocs/theme/amarok/tpl/README old mode 100755 new mode 100644 diff --git a/htdocs/theme/auguria/img/edit_add.png b/htdocs/theme/auguria/img/edit_add.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/auguria/img/edit_remove.png b/htdocs/theme/auguria/img/edit_remove.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/auguria/img/menus/topmenu_bg.png b/htdocs/theme/auguria/img/menus/topmenu_bg.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/auguria/img/menus/topmenu_right.png b/htdocs/theme/auguria/img/menus/topmenu_right.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/auguria/img/object_bill.png b/htdocs/theme/auguria/img/object_bill.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/auguria/img/object_book.png b/htdocs/theme/auguria/img/object_book.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/auguria/img/object_calendarday.png b/htdocs/theme/auguria/img/object_calendarday.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/auguria/img/object_calendarweek.png b/htdocs/theme/auguria/img/object_calendarweek.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/auguria/img/object_company.png b/htdocs/theme/auguria/img/object_company.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/auguria/img/object_contact.png b/htdocs/theme/auguria/img/object_contact.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/auguria/img/object_contract.png b/htdocs/theme/auguria/img/object_contract.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/auguria/img/object_invoice.png b/htdocs/theme/auguria/img/object_invoice.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/auguria/img/object_opensurvey.png b/htdocs/theme/auguria/img/object_opensurvey.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/auguria/img/object_order.png b/htdocs/theme/auguria/img/object_order.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/auguria/img/object_product.png b/htdocs/theme/auguria/img/object_product.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/auguria/img/object_propal.png b/htdocs/theme/auguria/img/object_propal.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/auguria/img/stats.png b/htdocs/theme/auguria/img/stats.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/auguria/img/statut8.png b/htdocs/theme/auguria/img/statut8.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/auguria/img/statut9.png b/htdocs/theme/auguria/img/statut9.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/bureau2crea/img/object_calendarday.png b/htdocs/theme/bureau2crea/img/object_calendarday.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/bureau2crea/img/object_calendarweek.png b/htdocs/theme/bureau2crea/img/object_calendarweek.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/bureau2crea/img/object_opensurvey.png b/htdocs/theme/bureau2crea/img/object_opensurvey.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/bureau2crea/img/stats.png b/htdocs/theme/bureau2crea/img/stats.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/bureau2crea/img/statut8.png b/htdocs/theme/bureau2crea/img/statut8.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/cameleo/img/object_opensurvey.png b/htdocs/theme/cameleo/img/object_opensurvey.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/cameleo/img/stats.png b/htdocs/theme/cameleo/img/stats.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/audio-card.png b/htdocs/theme/common/devices/audio-card.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/audio-headset.png b/htdocs/theme/common/devices/audio-headset.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/audio-input-line.png b/htdocs/theme/common/devices/audio-input-line.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/audio-input-microphone.png b/htdocs/theme/common/devices/audio-input-microphone.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/battery.png b/htdocs/theme/common/devices/battery.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/camera-photo.png b/htdocs/theme/common/devices/camera-photo.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/camera-web.png b/htdocs/theme/common/devices/camera-web.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/computer-laptop.png b/htdocs/theme/common/devices/computer-laptop.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/computer.png b/htdocs/theme/common/devices/computer.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/cpu.png b/htdocs/theme/common/devices/cpu.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/drive-harddisk.png b/htdocs/theme/common/devices/drive-harddisk.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/drive-optical.png b/htdocs/theme/common/devices/drive-optical.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/drive-removable-media-usb-pendrive.png b/htdocs/theme/common/devices/drive-removable-media-usb-pendrive.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/drive-removable-media-usb.png b/htdocs/theme/common/devices/drive-removable-media-usb.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/drive-removable-media.png b/htdocs/theme/common/devices/drive-removable-media.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/input-gaming.png b/htdocs/theme/common/devices/input-gaming.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/input-keyboard.png b/htdocs/theme/common/devices/input-keyboard.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/input-mouse.png b/htdocs/theme/common/devices/input-mouse.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/input-tablet.png b/htdocs/theme/common/devices/input-tablet.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/media-flash-memory-stick.png b/htdocs/theme/common/devices/media-flash-memory-stick.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/media-flash-sd-mmc.png b/htdocs/theme/common/devices/media-flash-sd-mmc.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/media-flash-smart-media.png b/htdocs/theme/common/devices/media-flash-smart-media.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/media-flash.png b/htdocs/theme/common/devices/media-flash.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/media-floppy.png b/htdocs/theme/common/devices/media-floppy.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/media-optical-audio.png b/htdocs/theme/common/devices/media-optical-audio.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/media-optical-blu-ray.png b/htdocs/theme/common/devices/media-optical-blu-ray.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/media-optical-data.png b/htdocs/theme/common/devices/media-optical-data.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/media-optical-dvd-video.png b/htdocs/theme/common/devices/media-optical-dvd-video.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/media-optical-dvd.png b/htdocs/theme/common/devices/media-optical-dvd.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/media-optical-mixed-cd.png b/htdocs/theme/common/devices/media-optical-mixed-cd.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/media-optical-recordable.png b/htdocs/theme/common/devices/media-optical-recordable.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/media-optical-video.png b/htdocs/theme/common/devices/media-optical-video.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/media-optical.png b/htdocs/theme/common/devices/media-optical.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/media-tape.png b/htdocs/theme/common/devices/media-tape.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/modem.png b/htdocs/theme/common/devices/modem.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/multimedia-player-apple-ipod.png b/htdocs/theme/common/devices/multimedia-player-apple-ipod.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/multimedia-player.png b/htdocs/theme/common/devices/multimedia-player.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/network-wired.png b/htdocs/theme/common/devices/network-wired.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/network-wireless-connected-00.png b/htdocs/theme/common/devices/network-wireless-connected-00.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/network-wireless-connected-100.png b/htdocs/theme/common/devices/network-wireless-connected-100.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/network-wireless-connected-25.png b/htdocs/theme/common/devices/network-wireless-connected-25.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/network-wireless-connected-50.png b/htdocs/theme/common/devices/network-wireless-connected-50.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/network-wireless-connected-75.png b/htdocs/theme/common/devices/network-wireless-connected-75.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/network-wireless-disconnected.png b/htdocs/theme/common/devices/network-wireless-disconnected.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/network-wireless.png b/htdocs/theme/common/devices/network-wireless.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/pda.png b/htdocs/theme/common/devices/pda.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/phone-openmoko-freerunner.png b/htdocs/theme/common/devices/phone-openmoko-freerunner.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/phone.png b/htdocs/theme/common/devices/phone.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/printer-laser.png b/htdocs/theme/common/devices/printer-laser.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/printer.png b/htdocs/theme/common/devices/printer.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/scanner.png b/htdocs/theme/common/devices/scanner.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/video-display.png b/htdocs/theme/common/devices/video-display.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/video-projector.png b/htdocs/theme/common/devices/video-projector.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/devices/video-television.png b/htdocs/theme/common/devices/video-television.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/emotes/face-angel.png b/htdocs/theme/common/emotes/face-angel.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/emotes/face-embarrassed.png b/htdocs/theme/common/emotes/face-embarrassed.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/emotes/face-kiss.png b/htdocs/theme/common/emotes/face-kiss.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/emotes/face-laugh.png b/htdocs/theme/common/emotes/face-laugh.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/emotes/face-plain.png b/htdocs/theme/common/emotes/face-plain.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/emotes/face-raspberry.png b/htdocs/theme/common/emotes/face-raspberry.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/emotes/face-sad.png b/htdocs/theme/common/emotes/face-sad.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/emotes/face-smile-big.png b/htdocs/theme/common/emotes/face-smile-big.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/emotes/face-smile.png b/htdocs/theme/common/emotes/face-smile.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/emotes/face-surprise.png b/htdocs/theme/common/emotes/face-surprise.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/emotes/face-uncertain.png b/htdocs/theme/common/emotes/face-uncertain.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/emotes/face-wink.png b/htdocs/theme/common/emotes/face-wink.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/gmap.png b/htdocs/theme/common/gmap.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/ical.gif b/htdocs/theme/common/ical.gif old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/mime/css.png b/htdocs/theme/common/mime/css.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/mime/dotnet.png b/htdocs/theme/common/mime/dotnet.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/mime/encrypt.png b/htdocs/theme/common/mime/encrypt.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/mime/glasses.png b/htdocs/theme/common/mime/glasses.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/mime/jnlp.png b/htdocs/theme/common/mime/jnlp.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/mime/library.png b/htdocs/theme/common/mime/library.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/mime/lit.png b/htdocs/theme/common/mime/lit.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/mime/mdb.png b/htdocs/theme/common/mime/mdb.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/mime/ooffice.png b/htdocs/theme/common/mime/ooffice.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/mime/page.png b/htdocs/theme/common/mime/page.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/mime/readme.txt b/htdocs/theme/common/mime/readme.txt old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/mime/rss.png b/htdocs/theme/common/mime/rss.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/rss.gif b/htdocs/theme/common/rss.gif old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/treemenu/folder2-expanded.png b/htdocs/theme/common/treemenu/folder2-expanded.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/treemenu/folder2.png b/htdocs/theme/common/treemenu/folder2.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/vcal.gif b/htdocs/theme/common/vcal.gif old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/weather/weather-clear-night.png b/htdocs/theme/common/weather/weather-clear-night.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/weather/weather-clear.png b/htdocs/theme/common/weather/weather-clear.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/weather/weather-clouds-night.png b/htdocs/theme/common/weather/weather-clouds-night.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/weather/weather-clouds.png b/htdocs/theme/common/weather/weather-clouds.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/weather/weather-few-clouds-night.png b/htdocs/theme/common/weather/weather-few-clouds-night.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/weather/weather-few-clouds.png b/htdocs/theme/common/weather/weather-few-clouds.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/weather/weather-freezing-rain.png b/htdocs/theme/common/weather/weather-freezing-rain.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/weather/weather-hail.png b/htdocs/theme/common/weather/weather-hail.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/weather/weather-many-clouds.png b/htdocs/theme/common/weather/weather-many-clouds.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/weather/weather-mist.png b/htdocs/theme/common/weather/weather-mist.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/weather/weather-showers-day.png b/htdocs/theme/common/weather/weather-showers-day.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/weather/weather-showers-night.png b/htdocs/theme/common/weather/weather-showers-night.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/weather/weather-showers-scattered-day.png b/htdocs/theme/common/weather/weather-showers-scattered-day.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/weather/weather-showers-scattered-night.png b/htdocs/theme/common/weather/weather-showers-scattered-night.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/weather/weather-showers-scattered.png b/htdocs/theme/common/weather/weather-showers-scattered.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/weather/weather-showers.png b/htdocs/theme/common/weather/weather-showers.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/weather/weather-snow-rain.png b/htdocs/theme/common/weather/weather-snow-rain.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/weather/weather-snow-scattered-day.png b/htdocs/theme/common/weather/weather-snow-scattered-day.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/weather/weather-snow-scattered-night.png b/htdocs/theme/common/weather/weather-snow-scattered-night.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/weather/weather-snow-scattered.png b/htdocs/theme/common/weather/weather-snow-scattered.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/weather/weather-snow.png b/htdocs/theme/common/weather/weather-snow.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/weather/weather-storm-day.png b/htdocs/theme/common/weather/weather-storm-day.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/weather/weather-storm-night.png b/htdocs/theme/common/weather/weather-storm-night.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/weather/weather-storm.png b/htdocs/theme/common/weather/weather-storm.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/dolibarr.png b/htdocs/theme/dolibarr.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/dolibarr_logo.png b/htdocs/theme/dolibarr_logo.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/doliforge_logo.png b/htdocs/theme/doliforge_logo.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/dolistore_logo.png b/htdocs/theme/dolistore_logo.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/eldy/img/liste_titre2.png b/htdocs/theme/eldy/img/liste_titre2.png old mode 100755 new mode 100644 diff --git a/htdocs/theme/eldy/img/object_opensurvey.png b/htdocs/theme/eldy/img/object_opensurvey.png old mode 100755 new mode 100644 diff --git a/htdocs/webservices/demo_wsclient_actioncomm.php-NORUN b/htdocs/webservices/demo_wsclient_actioncomm.php-NORUN old mode 100755 new mode 100644 diff --git a/htdocs/webservices/demo_wsclient_category.php-NORUN b/htdocs/webservices/demo_wsclient_category.php-NORUN old mode 100755 new mode 100644 diff --git a/htdocs/webservices/demo_wsclient_invoice.php-NORUN b/htdocs/webservices/demo_wsclient_invoice.php-NORUN old mode 100755 new mode 100644 diff --git a/htdocs/webservices/demo_wsclient_order.php-NORUN b/htdocs/webservices/demo_wsclient_order.php-NORUN old mode 100755 new mode 100644 diff --git a/htdocs/webservices/demo_wsclient_other.php-NORUN b/htdocs/webservices/demo_wsclient_other.php-NORUN old mode 100755 new mode 100644 diff --git a/htdocs/webservices/demo_wsclient_productorservice.php-NORUN b/htdocs/webservices/demo_wsclient_productorservice.php-NORUN old mode 100755 new mode 100644 diff --git a/htdocs/webservices/demo_wsclient_thirdparty.php-NORUN b/htdocs/webservices/demo_wsclient_thirdparty.php-NORUN old mode 100755 new mode 100644 diff --git a/test/phpunit/CMailFileTest.php b/test/phpunit/CMailFileTest.php old mode 100755 new mode 100644 diff --git a/test/phpunit/CategorieTest.php b/test/phpunit/CategorieTest.php old mode 100755 new mode 100644 diff --git a/test/phpunit/ChargeSocialesTest.php b/test/phpunit/ChargeSocialesTest.php old mode 100755 new mode 100644 diff --git a/test/phpunit/ContactTest.php b/test/phpunit/ContactTest.php old mode 100755 new mode 100644 diff --git a/test/phpunit/CoreTest.php b/test/phpunit/CoreTest.php old mode 100755 new mode 100644 diff --git a/test/phpunit/DiscountTest.php b/test/phpunit/DiscountTest.php old mode 100755 new mode 100644 diff --git a/test/phpunit/EntrepotTest.php b/test/phpunit/EntrepotTest.php old mode 100755 new mode 100644 diff --git a/test/phpunit/Example_import_company_1.csv b/test/phpunit/Example_import_company_1.csv old mode 100755 new mode 100644 diff --git a/test/phpunit/ExportTest.php b/test/phpunit/ExportTest.php old mode 100755 new mode 100644 diff --git a/test/phpunit/Functions2LibTest.php b/test/phpunit/Functions2LibTest.php old mode 100755 new mode 100644 diff --git a/test/phpunit/FunctionsLibTest.php b/test/phpunit/FunctionsLibTest.php old mode 100755 new mode 100644 diff --git a/test/phpunit/ImportTest.php b/test/phpunit/ImportTest.php old mode 100755 new mode 100644 diff --git a/test/phpunit/JsonLibTest.php b/test/phpunit/JsonLibTest.php old mode 100755 new mode 100644 diff --git a/test/phpunit/LangTest.php b/test/phpunit/LangTest.php old mode 100755 new mode 100644 diff --git a/test/phpunit/ModulesTest.php b/test/phpunit/ModulesTest.php old mode 100755 new mode 100644 diff --git a/test/phpunit/PdfDocTest.php b/test/phpunit/PdfDocTest.php old mode 100755 new mode 100644 diff --git a/test/phpunit/PgsqlTest.php b/test/phpunit/PgsqlTest.php old mode 100755 new mode 100644 diff --git a/test/phpunit/PricesTest.php b/test/phpunit/PricesTest.php old mode 100755 new mode 100644 diff --git a/test/phpunit/ProductTest.php b/test/phpunit/ProductTest.php old mode 100755 new mode 100644 diff --git a/test/phpunit/ScriptsTest.php b/test/phpunit/ScriptsTest.php old mode 100755 new mode 100644 diff --git a/test/phpunit/SecurityTest.php b/test/phpunit/SecurityTest.php old mode 100755 new mode 100644 diff --git a/test/phpunit/SocieteTest.php b/test/phpunit/SocieteTest.php old mode 100755 new mode 100644 diff --git a/test/phpunit/SqlTest.php b/test/phpunit/SqlTest.php old mode 100755 new mode 100644 diff --git a/test/phpunit/WebservicesInvoicesTest.php b/test/phpunit/WebservicesInvoicesTest.php old mode 100755 new mode 100644 diff --git a/test/phpunit/WebservicesOrdersTest.php b/test/phpunit/WebservicesOrdersTest.php old mode 100755 new mode 100644 diff --git a/test/phpunit/WebservicesOtherTest.php b/test/phpunit/WebservicesOtherTest.php old mode 100755 new mode 100644 diff --git a/test/phpunit/WebservicesProductsTest.php b/test/phpunit/WebservicesProductsTest.php old mode 100755 new mode 100644 diff --git a/test/phpunit/WebservicesThirdpartyTest.php b/test/phpunit/WebservicesThirdpartyTest.php old mode 100755 new mode 100644 diff --git a/test/phpunit/WebservicesUserTest.php b/test/phpunit/WebservicesUserTest.php old mode 100755 new mode 100644 diff --git a/test/soapui/Dolibarr-soapui-project.xml b/test/soapui/Dolibarr-soapui-project.xml old mode 100755 new mode 100644 -- GitLab From 4e9b3394395c93ee6af953fc2390b226186711dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Doursenaud?= <rdoursenaud@gpcsolutions.fr> Date: Wed, 9 Dec 2015 13:25:54 +0100 Subject: [PATCH 137/197] [Qual] Removed PHP closing tag --- build/aps/install.forced.php.install | 1 - build/debian/conf.php.install | 2 -- build/debian/install.forced.php.install | 2 -- build/rpm/conf.php | 1 - build/rpm/install.forced.php.fedora | 2 -- build/rpm/install.forced.php.generic | 1 - build/rpm/install.forced.php.mandriva | 2 -- build/rpm/install.forced.php.opensuse | 2 -- 8 files changed, 13 deletions(-) diff --git a/build/aps/install.forced.php.install b/build/aps/install.forced.php.install index 199ed892355..a7a3f03c14c 100644 --- a/build/aps/install.forced.php.install +++ b/build/aps/install.forced.php.install @@ -21,4 +21,3 @@ $force_install_databaserootpass=''; $force_install_dolibarrlogin='admin'; $force_install_nophpinfo='1'; $force_install_lockinstall='444'; -?> \ No newline at end of file diff --git a/build/debian/conf.php.install b/build/debian/conf.php.install index e439e80caef..c0ba3bdb120 100644 --- a/build/debian/conf.php.install +++ b/build/debian/conf.php.install @@ -226,5 +226,3 @@ $dolibarr_main_prod='0'; # Default value: 0 (use database value if exist) # Examples: # $dolibarr_mailing_limit_sendbyweb='0'; - -?> diff --git a/build/debian/install.forced.php.install b/build/debian/install.forced.php.install index a6347863b1d..099aab0675a 100644 --- a/build/debian/install.forced.php.install +++ b/build/debian/install.forced.php.install @@ -42,5 +42,3 @@ $force_install_lockinstall='444'; //$force_dolibarr_js_JQUERY_UI='/javascript/jquery-ui'; //$force_dolibarr_js_JQUERY_FLOT='/javascript/flot'; //$force_dolibarr_font_DOL_DEFAULT_TTF_BOLD='/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Bold.ttf'; - -?> \ No newline at end of file diff --git a/build/rpm/conf.php b/build/rpm/conf.php index 2e8bd46cf0f..406ba3145c1 100644 --- a/build/rpm/conf.php +++ b/build/rpm/conf.php @@ -5,4 +5,3 @@ // // This file will be filled by installer // -?> \ No newline at end of file diff --git a/build/rpm/install.forced.php.fedora b/build/rpm/install.forced.php.fedora index 994689bbfa1..108455a9403 100644 --- a/build/rpm/install.forced.php.fedora +++ b/build/rpm/install.forced.php.fedora @@ -31,5 +31,3 @@ $force_dolibarr_lib_TCPDF_PATH=''; //$force_dolibarr_js_JQUERY_UI='/javascript/jquery-ui'; //$force_dolibarr_js_JQUERY_FLOT='/javascript/flot'; $force_dolibarr_font_DOL_DEFAULT_TTF_BOLD='/usr/share/fonts/dejavu/DejaVuSans-Bold.ttf'; - -?> \ No newline at end of file diff --git a/build/rpm/install.forced.php.generic b/build/rpm/install.forced.php.generic index 718eade3696..161f69cdbb3 100644 --- a/build/rpm/install.forced.php.generic +++ b/build/rpm/install.forced.php.generic @@ -20,4 +20,3 @@ $force_install_lockinstall='444'; // Value to overwrite path to use shared libraries/fonts instead of embedded one // We don't force any external lib with generic package -?> \ No newline at end of file diff --git a/build/rpm/install.forced.php.mandriva b/build/rpm/install.forced.php.mandriva index 53a8a53b60c..266468c7f33 100644 --- a/build/rpm/install.forced.php.mandriva +++ b/build/rpm/install.forced.php.mandriva @@ -31,5 +31,3 @@ $force_dolibarr_lib_TCPDF_PATH=''; //$force_dolibarr_js_JQUERY_UI='/javascript/jquery-ui'; //$force_dolibarr_js_JQUERY_FLOT='/javascript/flot'; $force_dolibarr_font_DOL_DEFAULT_TTF_BOLD='/usr/share/fonts/TTF/dejavu/DejaVuSans-Bold.ttf'; - -?> \ No newline at end of file diff --git a/build/rpm/install.forced.php.opensuse b/build/rpm/install.forced.php.opensuse index 06a0074b04d..b644cea6e24 100644 --- a/build/rpm/install.forced.php.opensuse +++ b/build/rpm/install.forced.php.opensuse @@ -31,5 +31,3 @@ $force_dolibarr_lib_TCPDF_PATH=''; //$force_dolibarr_js_JQUERY_UI='/javascript/jquery-ui'; //$force_dolibarr_js_JQUERY_FLOT='/javascript/flot'; $force_dolibarr_font_DOL_DEFAULT_TTF_BOLD='/usr/share/fonts/truetype/DejaVuSans-Bold.ttf'; - -?> \ No newline at end of file -- GitLab From b80518efb4b34721a35cce399b6afe33f18fb991 Mon Sep 17 00:00:00 2001 From: Florian HENRY <florian.henry@open-concept.pro> Date: Wed, 9 Dec 2015 14:26:04 +0100 Subject: [PATCH 138/197] fix travis --- htdocs/accountancy/class/bookkeeping.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/accountancy/class/bookkeeping.class.php b/htdocs/accountancy/class/bookkeeping.class.php index 2eb952a42a3..d3801b4a4d1 100644 --- a/htdocs/accountancy/class/bookkeeping.class.php +++ b/htdocs/accountancy/class/bookkeeping.class.php @@ -376,7 +376,7 @@ class BookKeeping extends CommonObject /** * Delete bookkepping by importkey * - * @param string $importkey Import key + * @param string $delyear year to delete * @return int Result */ function delete_by_year($delyear) { -- GitLab From bbfd1388960e56a7bcba1a5a2daf47fea6b2d1fb Mon Sep 17 00:00:00 2001 From: Ion Agorria <ion@agorria.com> Date: Wed, 9 Dec 2015 18:00:05 +0100 Subject: [PATCH 139/197] Missed another CKEDITOR ref --- htdocs/core/tpl/objectline_create.tpl.php | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/htdocs/core/tpl/objectline_create.tpl.php b/htdocs/core/tpl/objectline_create.tpl.php index a2f4ebd4d69..6c507d55910 100644 --- a/htdocs/core/tpl/objectline_create.tpl.php +++ b/htdocs/core/tpl/objectline_create.tpl.php @@ -515,7 +515,7 @@ jQuery(document).ready(function() { setforfree(); if (jQuery('#select_type').val() >= 0) { - /* focus work on a standard textarea but not if field was replaced with CKEDITOR */ + /* focus work on a standard textarea */ jQuery('#dp_desc').focus(); } if (jQuery('#select_type').val() == '0') jQuery('#trlinefordates').hide(); @@ -615,14 +615,8 @@ jQuery(document).ready(function() { /* To set focus */ if (jQuery('#idprod').val() > 0 || jQuery('#idprodfournprice').val() > 0) { - /* focus work on a standard textarea but not if field was replaced with CKEDITOR */ + /* focus work on a standard textarea */ jQuery('#dp_desc').focus(); - /* focus if CKEDITOR */ - if (CKEDITOR) - { - var editor = CKEDITOR.instances['dp_desc']; - if (editor) { editor.focus(); } - } } }); -- GitLab From 4f359616ce482fcef2bcde63bc68e77672d7f384 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Doursenaud?= <rdoursenaud@gpcsolutions.fr> Date: Wed, 9 Dec 2015 18:16:08 +0100 Subject: [PATCH 140/197] [Security] Hide click to dial password --- htdocs/user/clicktodial.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/user/clicktodial.php b/htdocs/user/clicktodial.php index fb3104dc285..6d968e2c8c0 100644 --- a/htdocs/user/clicktodial.php +++ b/htdocs/user/clicktodial.php @@ -135,7 +135,7 @@ if ($id > 0) print '<tr><td>ClickToDial '.$langs->trans("Password").'</td>'; print '<td class="valeur">'; - print '<input name="password" value="'.(! empty($object->clicktodial_password)?$object->clicktodial_password:'').'"></td>'; + print '<input type="password" name="password" value="'.(! empty($object->clicktodial_password)?$object->clicktodial_password:'').'"></td>'; print "</tr>\n"; print '</table>'; -- GitLab From 019bc7ba8eaf19b7c22a224790753e4a95137b77 Mon Sep 17 00:00:00 2001 From: Andreas Pachler <apachler@paan-systems.com> Date: Thu, 10 Dec 2015 12:56:05 +0100 Subject: [PATCH 141/197] added austrian Regions, Departements, Forme Juridique and social charges to migration file from 3.8 to 3.9 --- .../install/mysql/migration/3.8.0-3.9.0.sql | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/htdocs/install/mysql/migration/3.8.0-3.9.0.sql b/htdocs/install/mysql/migration/3.8.0-3.9.0.sql index 767a7dd0e7a..d7907e15a1d 100755 --- a/htdocs/install/mysql/migration/3.8.0-3.9.0.sql +++ b/htdocs/install/mysql/migration/3.8.0-3.9.0.sql @@ -475,3 +475,53 @@ INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, nc INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('110', 5209, '', 0, '', 'Manuripi', 1); INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('111', 5209, '', 0, '', 'Nicolás Suárez', 1); INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('112', 5209, '', 0, '', 'General Federico Román', 1); + + + +-- Regions Austria (id country=41) +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom, active) values ( 41, 4101, '', 0, 'Österreich', 1); + +-- Provinces Austria (id country=41) +INSERT INTO llx_c_departements (fk_region, code_departement, ncc, nom, active) VALUES (4101,'B','BURGENLAND','Burgenland',1); +INSERT INTO llx_c_departements (fk_region, code_departement, ncc, nom, active) VALUES (4101,'K','KAERNTEN','Kärnten',1); +INSERT INTO llx_c_departements (fk_region, code_departement, ncc, nom, active) VALUES (4101,'N','NIEDEROESTERREICH','Niederösterreich',1); +INSERT INTO llx_c_departements (fk_region, code_departement, ncc, nom, active) VALUES (4101,'O','OBEROESTERREICH','Oberösterreich',1); +INSERT INTO llx_c_departements (fk_region, code_departement, ncc, nom, active) VALUES (4101,'S','SALZBURG','Salzburg',1); +INSERT INTO llx_c_departements (fk_region, code_departement, ncc, nom, active) VALUES (4101,'ST','STEIERMARK','Steiermark',1); +INSERT INTO llx_c_departements (fk_region, code_departement, ncc, nom, active) VALUES (4101,'T','TIROL','Tirol',1); +INSERT INTO llx_c_departements (fk_region, code_departement, ncc, nom, active) VALUES (4101,'V','VORARLBERG','Vorarlberg',1); +INSERT INTO llx_c_departements (fk_region, code_departement, ncc, nom, active) VALUES (4101,'W','WIEN','Wien',1); + + + +-- Austria +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (41, '4100', 'GmbH - Gesellschaft mit beschränkter Haftung', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (41, '4101', 'GesmbH - Gesellschaft mit beschränkter Haftung', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (41, '4102', 'AG - Aktiengesellschaft', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (41, '4103', 'EWIV - Europäische wirtschaftliche Interessenvereinigung', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (41, '4104', 'KEG - Kommanditerwerbsgesellschaft', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (41, '4105', 'OEG - Offene Erwerbsgesellschaft', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (41, '4106', 'OHG - Offene Handelsgesellschaft', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (41, '4107', 'AG & Co KG - Kommanditgesellschaft', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (41, '4108', 'GmbH & Co KG - Kommanditgesellschaft', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (41, '4109', 'KG - Kommanditgesellschaft', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (41, '4110', 'OG - Offene Gesellschaft', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (41, '4111', 'GbR - Gesellschaft nach bürgerlichem Recht', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (41, '4112', 'GesbR - Gesellschaft nach bürgerlichem Recht', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (41, '4113', 'GesnbR - Gesellschaft nach bürgerlichem Recht', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (41, '4114', 'e.U. - eingetragener Einzelunternehmer', 1); + + + +-- +-- Austria +-- +insert into llx_c_chargesociales (id, libelle, deductible, active, code, fk_pays) values (4101, 'Krankenversicherung', 1,1,'TAXATKV' ,'41'); +insert into llx_c_chargesociales (id, libelle, deductible, active, code, fk_pays) values (4102, 'Unfallversicherung', 1,1,'TAXATUV' ,'41'); +insert into llx_c_chargesociales (id, libelle, deductible, active, code, fk_pays) values (4103, 'Pensionsversicherung', 1,1,'TAXATPV' ,'41'); +insert into llx_c_chargesociales (id, libelle, deductible, active, code, fk_pays) values (4104, 'Arbeitslosenversicherung', 1,1,'TAXATAV' ,'41'); +insert into llx_c_chargesociales (id, libelle, deductible, active, code, fk_pays) values (4105, 'Insolvenzentgeltsicherungsfond', 1,1,'TAXATIESG' ,'41'); +insert into llx_c_chargesociales (id, libelle, deductible, active, code, fk_pays) values (4106, 'Wohnbauförderung', 1,1,'TAXATWF' ,'41'); +insert into llx_c_chargesociales (id, libelle, deductible, active, code, fk_pays) values (4107, 'Arbeiterkammerumlage', 1,1,'TAXATAK' ,'41'); +insert into llx_c_chargesociales (id, libelle, deductible, active, code, fk_pays) values (4108, 'Mitarbeitervorsorgekasse', 1,1,'TAXATMVK' ,'41'); +insert into llx_c_chargesociales (id, libelle, deductible, active, code, fk_pays) values (4109, 'Familienlastenausgleichsfond', 1,1,'TAXATFLAF' ,'41'); -- GitLab From ceb2920769fa561ba5dbe08dca48d07b791fab2c Mon Sep 17 00:00:00 2001 From: Ion Agorria <ion@agorria.com> Date: Thu, 10 Dec 2015 14:17:08 +0100 Subject: [PATCH 142/197] Better undefined CKEDITOR fix --- htdocs/core/tpl/objectline_create.tpl.php | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/htdocs/core/tpl/objectline_create.tpl.php b/htdocs/core/tpl/objectline_create.tpl.php index 6c507d55910..176c70e4a5a 100644 --- a/htdocs/core/tpl/objectline_create.tpl.php +++ b/htdocs/core/tpl/objectline_create.tpl.php @@ -515,8 +515,14 @@ jQuery(document).ready(function() { setforfree(); if (jQuery('#select_type').val() >= 0) { - /* focus work on a standard textarea */ + /* focus work on a standard textarea but not if field was replaced with CKEDITOR */ jQuery('#dp_desc').focus(); + /* focus if CKEDITOR */ + if (typeof(CKEDITOR) !== 'undefined') + { + var editor = CKEDITOR.instances['dp_desc']; + if (editor) { editor.focus(); } + } } if (jQuery('#select_type').val() == '0') jQuery('#trlinefordates').hide(); else jQuery('#trlinefordates').show(); @@ -615,8 +621,14 @@ jQuery(document).ready(function() { /* To set focus */ if (jQuery('#idprod').val() > 0 || jQuery('#idprodfournprice').val() > 0) { - /* focus work on a standard textarea */ + /* focus work on a standard textarea but not if field was replaced with CKEDITOR */ jQuery('#dp_desc').focus(); + /* focus if CKEDITOR */ + if (typeof(CKEDITOR) !== 'undefined') + { + var editor = CKEDITOR.instances['dp_desc']; + if (editor) { editor.focus(); } + } } }); -- GitLab From fc8c12d6f668095e3c46fa5d3ca9d059d4339086 Mon Sep 17 00:00:00 2001 From: philippe grand <philippe.grand@atoo-net.com> Date: Thu, 10 Dec 2015 16:14:37 +0100 Subject: [PATCH 143/197] [Qual] Uniformize code --- htdocs/exports/export.php | 2 +- htdocs/fourn/card.php | 2 +- htdocs/fourn/facture/card.php | 64 +++++++++++++++---------------- htdocs/fourn/facture/contact.php | 4 +- htdocs/fourn/facture/paiement.php | 14 +++---- htdocs/fourn/paiement/card.php | 14 +++---- 6 files changed, 50 insertions(+), 50 deletions(-) diff --git a/htdocs/exports/export.php b/htdocs/exports/export.php index d7dbc008a27..34dc813b989 100644 --- a/htdocs/exports/export.php +++ b/htdocs/exports/export.php @@ -259,7 +259,7 @@ if ($step == 5 && $action == 'confirm_deletefile' && $confirm == 'yes') $file = $upload_dir . "/" . GETPOST('file'); // Do not use urldecode here ($_GET and $_REQUEST are already decoded by PHP). $ret=dol_delete_file($file); - if ($ret) setEventMessage($langs->trans("FileWasRemoved", GETPOST('file')), null, 'mesgs'); + if ($ret) setEventMessages($langs->trans("FileWasRemoved", GETPOST('file')), null, 'mesgs'); else setEventMessages($langs->trans("ErrorFailToDeleteFile", GETPOST('file')), null, 'errors'); header('Location: '.$_SERVER["PHP_SELF"].'?step='.$step.'&datatoexport='.$datatoexport); exit; diff --git a/htdocs/fourn/card.php b/htdocs/fourn/card.php index 6613cd8f05c..c19773653c7 100644 --- a/htdocs/fourn/card.php +++ b/htdocs/fourn/card.php @@ -375,7 +375,7 @@ if ($object->id > 0) $orders2invoice = $db->num_rows($resql2); $db->free($resql2); } else { - setEventMessage($db->lasterror(),'errors'); + setEventMessages($db->lasterror(), null, 'errors'); } // TODO move to DAO class diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index 1c25e863683..41837da45c9 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -5,7 +5,7 @@ * Copyright (C) 2005 Marc Barilley <marc@ocebo.fr> * Copyright (C) 2005-2013 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2010-2014 Juanjo Menent <jmenent@2byte.es> - * Copyright (C) 2013 Philippe Grand <philippe.grand@atoo-net.com> + * Copyright (C) 2013-2015 Philippe Grand <philippe.grand@atoo-net.com> * Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro> * Copyright (C) 2014 Marcos García <marcosgdf@gmail.com> * @@ -128,7 +128,7 @@ if (empty($reshook)) else { $langs->load("errors"); - setEventMessage($langs->trans($object->error), 'errors'); + setEventMessages($langs->trans($object->error), null, 'errors'); $action=''; } // } @@ -161,7 +161,7 @@ if (empty($reshook)) if (! $idwarehouse || $idwarehouse == -1) { $error++; - setEventMessage($langs->trans('ErrorFieldRequired',$langs->transnoentitiesnoconv("Warehouse")), 'errors'); + setEventMessages($langs->trans('ErrorFieldRequired',$langs->transnoentitiesnoconv("Warehouse")), null, 'errors'); $action=''; } } @@ -188,7 +188,7 @@ if (empty($reshook)) } else { - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } @@ -219,7 +219,7 @@ if (empty($reshook)) } else { - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); /* Fix bug 1485 : Reset action to avoid asking again confirmation on failure */ $action=''; } @@ -231,7 +231,7 @@ if (empty($reshook)) $result=$object->set_paid($user); if ($result<0) { - setEventMessage($object->error,'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } @@ -242,13 +242,13 @@ if (empty($reshook)) if ($result < 0) dol_print_error($db, $object->error); } - // conditions de reglement + // payments conditions if ($action == 'setconditions' && $user->rights->fournisseur->commande->creer) { $result=$object->setPaymentTerms(GETPOST('cond_reglement_id','int')); } - // mode de reglement + // payment mode else if ($action == 'setmode' && $user->rights->fournisseur->commande->creer) { $result = $object->setPaymentMethods(GETPOST('mode_reglement_id','int')); @@ -282,7 +282,7 @@ if (empty($reshook)) if (! empty($object->date_echeance) && $object->date_echeance < $object->date) { $object->date_echeance=$object->date; - setEventMessage($langs->trans("DatePaymentTermCantBeLowerThanObjectDate"),'warnings'); + setEventMessages($langs->trans("DatePaymentTermCantBeLowerThanObjectDate"), null, 'warnings'); } $result=$object->update($user); if ($result < 0) dol_print_error($db,$object->error); @@ -298,7 +298,7 @@ if (empty($reshook)) $result=$paiementfourn->fetch(GETPOST('paiement_id')); if ($result > 0) $result=$paiementfourn->delete(); // If fetch ok and found if ($result < 0) { - setEventMessage($paiementfourn->error, 'errors'); + setEventMessages($paiementfourn->error, $paiementfourn->errors, 'errors'); } } } @@ -313,21 +313,21 @@ if (empty($reshook)) if (GETPOST('socid','int')<1) { - setEventMessage($langs->trans('ErrorFieldRequired',$langs->transnoentities('Supplier')), 'errors'); + setEventMessages($langs->trans('ErrorFieldRequired',$langs->transnoentities('Supplier')), null, 'errors'); $action='create'; $error++; } if ($datefacture == '') { - setEventMessage($langs->trans('ErrorFieldRequired',$langs->transnoentities('DateInvoice')), 'errors'); + setEventMessages($langs->trans('ErrorFieldRequired',$langs->transnoentities('DateInvoice')), null, 'errors'); $action='create'; $_GET['socid']=$_POST['socid']; $error++; } if (! GETPOST('ref_supplier')) { - setEventMessage($langs->trans('ErrorFieldRequired',$langs->transnoentities('RefSupplier')), 'errors'); + setEventMessages($langs->trans('ErrorFieldRequired',$langs->transnoentities('RefSupplier')), null, 'errors'); $action='create'; $_GET['socid']=$_POST['socid']; $error++; @@ -602,7 +602,7 @@ if (empty($reshook)) else { $db->rollback(); - setEventMessage($object->error,'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } @@ -657,27 +657,27 @@ if (empty($reshook)) if (GETPOST('prod_entry_mode')=='free' && GETPOST('price_ht') < 0 && $qty < 0) { - setEventMessage($langs->trans('ErrorBothFieldCantBeNegative', $langs->transnoentitiesnoconv('UnitPrice'), $langs->transnoentitiesnoconv('Qty')), 'errors'); + setEventMessages($langs->trans('ErrorBothFieldCantBeNegative', $langs->transnoentitiesnoconv('UnitPrice'), $langs->transnoentitiesnoconv('Qty')), null, 'errors'); $error++; } if (GETPOST('prod_entry_mode')=='free' && ! GETPOST('idprodfournprice') && GETPOST('type') < 0) { - setEventMessage($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Type')), 'errors'); + setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Type')), null, 'errors'); $error++; } if (GETPOST('prod_entry_mode')=='free' && GETPOST('price_ht')==='' && GETPOST('price_ttc')==='') // Unit price can be 0 but not '' { - setEventMessage($langs->trans($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('UnitPrice'))), 'errors'); + setEventMessages($langs->trans($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('UnitPrice'))), null, 'errors'); $error++; } if (GETPOST('prod_entry_mode')=='free' && ! GETPOST('dp_desc')) { - setEventMessage($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Description')), 'errors'); + setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Description')), null, 'errors'); $error++; } if (! GETPOST('qty')) { - setEventMessage($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Qty')), 'errors'); + setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Qty')), null, 'errors'); $error++; } @@ -727,7 +727,7 @@ if (empty($reshook)) // Quantity too low $error++; $langs->load("errors"); - setEventMessage($langs->trans("ErrorQtyTooLowForThisSupplier"), 'errors'); + setEventMessages($langs->trans("ErrorQtyTooLowForThisSupplier"), null, 'errors'); } } else if( GETPOST('price_ht')!=='' || GETPOST('price_ttc')!=='' ) @@ -820,7 +820,7 @@ if (empty($reshook)) else { $db->rollback(); - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } $action = ''; @@ -886,7 +886,7 @@ if (empty($reshook)) } else { - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } } @@ -995,7 +995,7 @@ if (empty($reshook)) $mailfile = new CMailFile($subject,$sendto,$from,$message,$filepath,$mimetype,$filename,$sendtocc,'',$deliveryreceipt,-1); if ($mailfile->error) { - setEventMessage($mailfile->error,'errors'); + setEventMessages($mailfile->error, $mailfile->errors, 'errors'); } else { @@ -1003,7 +1003,7 @@ if (empty($reshook)) if ($result) { $mesg=$langs->trans('MailSuccessfulySent',$mailfile->getValidAddress($from,2),$mailfile->getValidAddress($sendto,2)); // Must not contain " - setEventMessage($mesg); + setEventMessages($mesg, null, 'mesgs'); $error=0; @@ -1048,7 +1048,7 @@ if (empty($reshook)) { $mesg.='No mail sent. Feature is disabled by option MAIN_DISABLE_ALL_MAILS'; } - setEventMessage($mesg, 'errors'); + setEventMessages($mesg, null, 'errors'); } } } @@ -1056,14 +1056,14 @@ if (empty($reshook)) else { $langs->load("other"); - setEventMessage($langs->trans('ErrorMailRecipientIsEmpty'), 'errors'); + setEventMessages($langs->trans('ErrorMailRecipientIsEmpty'), null, 'errors'); dol_syslog('Recipient email is empty'); } } else { $langs->load("other"); - setEventMessage($langs->trans('ErrorFailedToReadEntity',$langs->trans("Invoice")), 'errors'); + setEventMessages($langs->trans('ErrorFailedToReadEntity',$langs->trans("Invoice")), null, 'errors'); dol_syslog('Unable to read data from the invoice. The invoice file has perhaps not been generated.'); } @@ -1120,8 +1120,8 @@ if (empty($reshook)) $upload_dir = $conf->fournisseur->facture->dir_output . "/"; $file = $upload_dir . '/' . GETPOST('file'); $ret=dol_delete_file($file,0,0,0,$object); - if ($ret) setEventMessage($langs->trans("FileWasRemoved", GETPOST('urlfile'))); - else setEventMessage($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), 'errors'); + if ($ret) setEventMessages($langs->trans("FileWasRemoved", GETPOST('urlfile')), null, 'mesgs'); + else setEventMessages($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), null, 'errors'); } } @@ -1185,11 +1185,11 @@ if (empty($reshook)) if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') { $langs->load("errors"); - setEventMessage($langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType"), 'errors'); + setEventMessages($langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType"), null, 'errors'); } else { - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } } @@ -1524,7 +1524,7 @@ if ($action == 'create') $cntinvoice=count($objectsrc->linkedObjects['invoice_supplier']); if ($cntinvoice>=1) { - setEventMessage('WarningBillExist','warnings'); + setEventMessages('WarningBillExist', null, 'warnings'); echo ' ('.$langs->trans('LatestRelatedBill').end($objectsrc->linkedObjects['invoice_supplier'])->getNomUrl(1).')'; } echo '</td></tr>'; diff --git a/htdocs/fourn/facture/contact.php b/htdocs/fourn/facture/contact.php index 7348f3b7590..664101848a6 100644 --- a/htdocs/fourn/facture/contact.php +++ b/htdocs/fourn/facture/contact.php @@ -69,11 +69,11 @@ if ($action == 'addcontact' && $user->rights->fournisseur->facture->creer) if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') { $langs->load("errors"); - setEventMessage($langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType"), 'errors'); + setEventMessages($langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType"), null, 'errors'); } else { - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } } diff --git a/htdocs/fourn/facture/paiement.php b/htdocs/fourn/facture/paiement.php index 82bccf3df19..d500f8eceb1 100644 --- a/htdocs/fourn/facture/paiement.php +++ b/htdocs/fourn/facture/paiement.php @@ -117,7 +117,7 @@ if (empty($reshook)) { $langs->load("errors"); //$error++; - setEventMessage($langs->transnoentities("WarningPaymentDateLowerThanInvoiceDate", dol_print_date($datepaye,'day'), dol_print_date($tmpinvoice->date, 'day'), $tmpinvoice->ref), 'warnings'); + setEventMessages($langs->transnoentities("WarningPaymentDateLowerThanInvoiceDate", dol_print_date($datepaye,'day'), dol_print_date($tmpinvoice->date, 'day'), $tmpinvoice->ref), null, 'warnings'); } } @@ -128,7 +128,7 @@ if (empty($reshook)) // Check parameters if ($_POST['paiementid'] <= 0) { - setEventMessage($langs->transnoentities('ErrorFieldRequired',$langs->transnoentities('PaymentMode')), 'errors'); + setEventMessages($langs->transnoentities('ErrorFieldRequired',$langs->transnoentities('PaymentMode')), null, 'errors'); $error++; } @@ -137,20 +137,20 @@ if (empty($reshook)) // If bank module is on, account is required to enter a payment if (GETPOST('accountid') <= 0) { - setEventMessage($langs->transnoentities('ErrorFieldRequired',$langs->transnoentities('AccountToCredit')), 'errors'); + setEventMessages($langs->transnoentities('ErrorFieldRequired',$langs->transnoentities('AccountToCredit')), null, 'errors'); $error++; } } if (empty($totalpayment) && empty($atleastonepaymentnotnull)) { - setEventMessage($langs->transnoentities('ErrorFieldRequired',$langs->trans('PaymentAmount')), 'errors'); + setEventMessages($langs->transnoentities('ErrorFieldRequired',$langs->trans('PaymentAmount')), null, 'errors'); $error++; } if (empty($datepaye)) { - setEventMessage($langs->transnoentities('ErrorFieldRequired',$langs->transnoentities('Date')), 'errors'); + setEventMessages($langs->transnoentities('ErrorFieldRequired',$langs->transnoentities('Date')), null, 'errors'); $error++; } } @@ -193,7 +193,7 @@ if (empty($reshook)) $paiement_id = $paiement->create($user,(GETPOST('closepaidinvoices')=='on'?1:0)); if ($paiement_id < 0) { - setEventMessage($paiement->error, 'errors'); + setEventMessages($paiement->error, $paiement->errors, 'errors'); $error++; } } @@ -203,7 +203,7 @@ if (empty($reshook)) $result=$paiement->addPaymentToBank($user,'payment_supplier','(SupplierInvoicePayment)',$accountid,'',''); if ($result < 0) { - setEventMessage($paiement->error, 'errors'); + setEventMessages($paiement->error, $paiement->errors, 'errors'); $error++; } } diff --git a/htdocs/fourn/paiement/card.php b/htdocs/fourn/paiement/card.php index de070a2b3b0..f3295bf744c 100644 --- a/htdocs/fourn/paiement/card.php +++ b/htdocs/fourn/paiement/card.php @@ -59,7 +59,7 @@ if ($action == 'setnote' && $user->rights->fournisseur->facture->creer) } else { - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); $db->rollback(); } } @@ -78,7 +78,7 @@ if ($action == 'confirm_delete' && $confirm == 'yes' && $user->rights->fournisse } else { - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); $db->rollback(); } } @@ -99,7 +99,7 @@ if ($action == 'confirm_valide' && $confirm == 'yes' && } else { - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); $db->rollback(); } } @@ -110,11 +110,11 @@ if ($action == 'setnum_paiement' && ! empty($_POST['num_paiement'])) $res = $object->update_num($_POST['num_paiement']); if ($res === 0) { - setEventMessage($langs->trans('PaymentNumberUpdateSucceeded')); + setEventMessages($langs->trans('PaymentNumberUpdateSucceeded'), null, 'mesgs'); } else { - setEventMessage($langs->trans('PaymentNumberUpdateFailed'), 'errors'); + setEventMessages($langs->trans('PaymentNumberUpdateFailed'), null, 'errors'); } } @@ -125,11 +125,11 @@ if ($action == 'setdatep' && ! empty($_POST['datepday'])) $res = $object->update_date($datepaye); if ($res === 0) { - setEventMessage($langs->trans('PaymentDateUpdateSucceeded')); + setEventMessages($langs->trans('PaymentDateUpdateSucceeded'), null, 'mesgs'); } else { - setEventMessage($langs->trans('PaymentDateUpdateFailed'), 'errors'); + setEventMessages($langs->trans('PaymentDateUpdateFailed'), null, 'errors'); } } -- GitLab From 9e0817ac05d3af92091c3c5405ea06c63a564902 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= <frederic.france@free.fr> Date: Thu, 10 Dec 2015 16:28:22 +0100 Subject: [PATCH 144/197] Update paypal.lib.php --- htdocs/paypal/lib/paypal.lib.php | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/htdocs/paypal/lib/paypal.lib.php b/htdocs/paypal/lib/paypal.lib.php index 045863c2c4f..f06624cb076 100644 --- a/htdocs/paypal/lib/paypal.lib.php +++ b/htdocs/paypal/lib/paypal.lib.php @@ -702,10 +702,8 @@ function hash_call($methodName,$nvpStr) exit;*/ curl_setopt($ch, CURLOPT_URL, $API_Endpoint); curl_setopt($ch, CURLOPT_VERBOSE, 1); - //curl_setopt($ch, CURLOPT_SSLVERSION, 3); // unsecure, no more accepted - curl_setopt($ch, CURLOPT_SSLVERSION, 1); // Force TLSv1 - // After 14 january 2016 paypal will accept tls v1.2 and no more tls v1 - //curl_setopt($ch, CURLOPT_SSLVERSION, 6); // Force TLSv1.2 + // TLSv1 by default or change to TLSv1.2 in module configuration + curl_setopt($ch, CURLOPT_SSLVERSION, (empty($conf->global->PAYPAL_SSLVERSION)?1:$conf->global->PAYPAL_SSLVERSION)); //turning off the server and peer verification(TrustManager Concept). curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); -- GitLab From 9bb9e6b787956756f8e2b7b5d2f49f9f52d08e1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= <frederic.france@free.fr> Date: Thu, 10 Dec 2015 16:29:35 +0100 Subject: [PATCH 145/197] Update paypal.php --- htdocs/paypal/admin/paypal.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/htdocs/paypal/admin/paypal.php b/htdocs/paypal/admin/paypal.php index fd649b825bc..f02c720a388 100644 --- a/htdocs/paypal/admin/paypal.php +++ b/htdocs/paypal/admin/paypal.php @@ -119,6 +119,7 @@ print '<br>'; print '<table class="noborder" width="100%">'; +// Account Parameters $var=true; print '<tr class="liste_titre">'; print '<td>'.$langs->trans("AccountParameter").'</td>'; @@ -151,6 +152,13 @@ print '<input size="64" type="text" name="PAYPAL_API_SIGNATURE" value="'.$conf-> print '<br>'.$langs->trans("Example").': ASsqXEmw4KzmX-CPChWSVDNCNfd.A3YNR7uz-VncXXAERFDFDFDF'; print '</td></tr>'; +$var=!$var; +print '<tr '.$bc[$var].'><td class="fieldrequired">'; +print $langs->trans("PAYPAL_SSLVERSION").'</td><td>'; +print $form->selectarray("PAYPAL_SSLVERSION",array('1'=> $langs->trans('TLSv1'),'6'=> $langs->trans('TLSv1.2')),$conf->global->PAYPAL_SSLVERSION); +print '</td></tr>'; + +// Usage Parameters $var=true; print '<tr class="liste_titre">'; print '<td>'.$langs->trans("UsageParameter").'</td>'; -- GitLab From 5f0c7b6c3886bfeb940b309d20122df5b063b335 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= <frederic.france@free.fr> Date: Thu, 10 Dec 2015 16:31:11 +0100 Subject: [PATCH 146/197] Update paypal.lang --- htdocs/langs/en_US/paypal.lang | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/langs/en_US/paypal.lang b/htdocs/langs/en_US/paypal.lang index b2eadfce654..54f8cb1980f 100644 --- a/htdocs/langs/en_US/paypal.lang +++ b/htdocs/langs/en_US/paypal.lang @@ -8,6 +8,7 @@ PAYPAL_API_SANDBOX=Mode test/sandbox PAYPAL_API_USER=API username PAYPAL_API_PASSWORD=API password PAYPAL_API_SIGNATURE=API signature +PAYPAL_SSLVERSION=Curl SSL Version PAYPAL_API_INTEGRAL_OR_PAYPALONLY=Offer payment "integral" (Credit card+Paypal) or "Paypal" only PaypalModeIntegral=Integral PaypalModeOnlyPaypal=PayPal only -- GitLab From 5aaafc3f8ab1d1e8354c705127966a9f1ded7138 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Doursenaud?= <rdoursenaud@gpcsolutions.fr> Date: Thu, 10 Dec 2015 16:37:37 +0100 Subject: [PATCH 147/197] [Qual] OOP constructor Using class name as constructor method is deprecated in PHP 7 --- htdocs/expensereport/class/expensereport.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/expensereport/class/expensereport.class.php b/htdocs/expensereport/class/expensereport.class.php index 3063bcde35f..b781d4f3dc6 100644 --- a/htdocs/expensereport/class/expensereport.class.php +++ b/htdocs/expensereport/class/expensereport.class.php @@ -1590,7 +1590,7 @@ class ExpenseReportLine * * @param DoliDB $db Handlet database */ - function ExpenseReportLine($db) + function __construct($db) { $this->db= $db; } -- GitLab From ac04fdbd9a9d1e0018778a13a8213863f4a68210 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= <frederic.france@free.fr> Date: Thu, 10 Dec 2015 16:49:55 +0100 Subject: [PATCH 148/197] Update paypal.php --- htdocs/paypal/admin/paypal.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/htdocs/paypal/admin/paypal.php b/htdocs/paypal/admin/paypal.php index f02c720a388..89065cb7c77 100644 --- a/htdocs/paypal/admin/paypal.php +++ b/htdocs/paypal/admin/paypal.php @@ -51,6 +51,8 @@ if ($action == 'setvalue' && $user->admin) if (! $result > 0) $error++; $result=dolibarr_set_const($db, "PAYPAL_API_SIGNATURE",GETPOST('PAYPAL_API_SIGNATURE','alpha'),'chaine',0,'',$conf->entity); if (! $result > 0) $error++; + $result=dolibarr_set_const($db, "PAYPAL_SSLVERSION",GETPOST('PAYPAL_SSLVERSION','alpha'),'chaine',0,'',$conf->entity); + if (! $result > 0) $error++; $result=dolibarr_set_const($db, "PAYPAL_CREDITOR",GETPOST('PAYPAL_CREDITOR','alpha'),'chaine',0,'',$conf->entity); if (! $result > 0) $error++; $result=dolibarr_set_const($db, "PAYPAL_API_INTEGRAL_OR_PAYPALONLY",GETPOST('PAYPAL_API_INTEGRAL_OR_PAYPALONLY','alpha'),'chaine',0,'',$conf->entity); -- GitLab From 3e2309d0e6da1de1d29570447978f3c6a3634a12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Doursenaud?= <rdoursenaud@gpcsolutions.fr> Date: Mon, 7 Dec 2015 15:10:23 +0100 Subject: [PATCH 149/197] NEW Factorized price2numjs into lib_head.js.php Used public domain code from the MDN to provide a robust decimal rounding implementation. Warning for developers: the path of the javascript file has changed. Please update your scripts. --- htdocs/core/datepicker.php | 4 +- .../core/js/{lib_head.js => lib_head.js.php} | 163 +++++++++++++++--- htdocs/core/tpl/objectline_create.tpl.php | 37 ---- htdocs/core/tpl/objectline_edit.tpl.php | 36 ---- htdocs/main.inc.php | 2 +- 5 files changed, 144 insertions(+), 98 deletions(-) rename htdocs/core/js/{lib_head.js => lib_head.js.php} (84%) diff --git a/htdocs/core/datepicker.php b/htdocs/core/datepicker.php index eae723946f6..63b765fbadb 100644 --- a/htdocs/core/datepicker.php +++ b/htdocs/core/datepicker.php @@ -56,7 +56,7 @@ print '<html>'."\n"; print '<head>'."\n"; if (GETPOST('mode') && GETPOST('mode') == 'test') { - print '<script type="text/javascript" src="'.DOL_URL_ROOT.'/core/js/lib_head.js"></script>'."\n"; + print '<script type="text/javascript" src="'.DOL_URL_ROOT.'/core/js/lib_head.js.php"></script>'."\n"; } else { @@ -288,4 +288,4 @@ function displayBox($selectedDate,$month,$year) </tr> </table> <?php -}//end function \ No newline at end of file +}//end function diff --git a/htdocs/core/js/lib_head.js b/htdocs/core/js/lib_head.js.php similarity index 84% rename from htdocs/core/js/lib_head.js rename to htdocs/core/js/lib_head.js.php index ad799e72bd0..15a25bf10ed 100644 --- a/htdocs/core/js/lib_head.js +++ b/htdocs/core/js/lib_head.js.php @@ -1,25 +1,49 @@ -// Copyright (C) 2005-2014 Laurent Destailleur <eldy@users.sourceforge.net> -// Copyright (C) 2005-2014 Regis Houssin <regis.houssin@capnetworks.com> -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 3 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, see <http://www.gnu.org/licenses/>. -// or see http://www.gnu.org/ - -// -// \file htdocs/core/js/lib_head.js -// \brief File that include javascript functions (included if option use_javascript activated) -// +<?php +/* Copyright (C) 2005-2014 Laurent Destailleur <eldy@users.sourceforge.net> + * Copyright (C) 2005-2014 Regis Houssin <regis.houssin@capnetworks.com> + * Copyright (C) 2015 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr> + * + * 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 3 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, see <http://www.gnu.org/licenses/>. + * or see http://www.gnu.org/ + */ + +/** + * \file htdocs/core/js/lib_head.js.php + * \brief File that include javascript functions (included if option use_javascript activated) + */ + +//if (! defined('NOREQUIREUSER')) define('NOREQUIREUSER','1'); // Not disabled cause need to load personalized language +//if (! defined('NOREQUIREDB')) define('NOREQUIREDB','1'); +if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC','1'); +//if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN','1'); // Not disabled cause need to do translations +if (! defined('NOCSRFCHECK')) define('NOCSRFCHECK',1); +if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL',1); +if (! defined('NOLOGIN')) define('NOLOGIN',1); +if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU',1); +if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML',1); +if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX','1'); + +session_cache_limiter(FALSE); + +require_once '../../main.inc.php'; +// Define javascript type +header('Content-type: text/javascript; charset=UTF-8'); +// Important: Following code is to avoid page request by browser and PHP CPU at each Dolibarr page access. +if (empty($dolibarr_nocache)) header('Cache-Control: max-age=3600, public, must-revalidate'); +else header('Cache-Control: no-cache'); +?> /* * ================================================================= @@ -923,7 +947,6 @@ function copyToClipboard(text,text2) return false; } - /* * Provide a function to get an URL GET parameter in javascript * @@ -938,3 +961,99 @@ function getParameterByName(name, valueifnotfound) results = regex.exec(location.search); return results === null ? valueifnotfound : decodeURIComponent(results[1].replace(/\+/g, " ")); } + +// Code in the public domain from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round +(function() { + /** + * Decimal adjustment of a number. + * + * @param {String} type The type of adjustment. + * @param {Number} value The number. + * @param {Integer} exp The exponent (the 10 logarithm of the adjustment base). + * @returns {Number} The adjusted value. + */ + function decimalAdjust(type, value, exp) { + // If the exp is undefined or zero... + if (typeof exp === 'undefined' || +exp === 0) { + return Math[type](value); + } + value = +value; + exp = +exp; + // If the value is not a number or the exp is not an integer... + if (isNaN(value) || !(typeof exp === 'number' && exp % 1 === 0)) { + return NaN; + } + // Shift + value = value.toString().split('e'); + value = Math[type](+(value[0] + 'e' + (value[1] ? (+value[1] - exp) : -exp))); + // Shift back + value = value.toString().split('e'); + return +(value[0] + 'e' + (value[1] ? (+value[1] + exp) : exp)); + } + + // Decimal round + if (!Math.round10) { + Math.round10 = function(value, exp) { + return decimalAdjust('round', value, exp); + }; + } + // Decimal floor + if (!Math.floor10) { + Math.floor10 = function(value, exp) { + return decimalAdjust('floor', value, exp); + }; + } + // Decimal ceil + if (!Math.ceil10) { + Math.ceil10 = function(value, exp) { + return decimalAdjust('ceil', value, exp); + }; + } +})(); + + +/** + * Function similar to PHP price2num() + * + * @param {number|string} amount The amount to convert/clean + * @returns {string} The amount in universal numeric format (Example: '99.99999') + * @todo Implement rounding parameter + */ +function price2numjs(amount) { + if (amount == '') return ''; + + <?php + $dec = ','; + $thousand = ' '; + if ($langs->transnoentitiesnoconv("SeparatorDecimal") != "SeparatorDecimal") { + $dec = $langs->transnoentitiesnoconv("SeparatorDecimal"); + } + if ($langs->transnoentitiesnoconv("SeparatorThousand") != "SeparatorThousand") { + $thousand = $langs->transnoentitiesnoconv("SeparatorThousand"); + } + print "var dec='" . $dec . "'; var thousand='" . $thousand . "';\n"; // Set var in javascript + ?> + + var main_max_dec_shown = <?php echo $conf->global->MAIN_MAX_DECIMALS_SHOWN; ?>; + var main_rounding_unit = <?php echo $conf->global->MAIN_MAX_DECIMALS_UNIT; ?>; + var main_rounding_tot = <?php echo $conf->global->MAIN_MAX_DECIMALS_TOT; ?>; + + var amount = amount.toString(); + + // rounding for unit price + var rounding = main_rounding_unit; + var pos = amount.indexOf(dec); + var decpart = ''; + if (pos >= 0) decpart = amount.substr(pos + 1).replace('/0+$/i', ''); // Remove 0 for decimal part + var nbdec = decpart.length; + if (nbdec > rounding) rounding = nbdec; + // If rounding higher than max shown + if (rounding > main_max_dec_shown) rounding = main_max_dec_shown; + + if (thousand != ',' && thousand != '.') amount = amount.replace(',', '.'); + amount = amount.replace(' ', ''); // To avoid spaces + amount = amount.replace(thousand, ''); // Replace of thousand before replace of dec to avoid pb if thousand is . + amount = amount.replace(dec, '.'); + + return Math.round10(amount, rounding); +} diff --git a/htdocs/core/tpl/objectline_create.tpl.php b/htdocs/core/tpl/objectline_create.tpl.php index 25668b2876d..485336335e6 100644 --- a/htdocs/core/tpl/objectline_create.tpl.php +++ b/htdocs/core/tpl/objectline_create.tpl.php @@ -464,43 +464,6 @@ if (! empty($usemargins) && $user->rights->margins->creer) return true; } - - /* Function similar to price2num in PHP */ - function price2numjs(num) - { - if (num == '') return ''; - - <?php - $dec=','; $thousand=' '; - if ($langs->transnoentitiesnoconv("SeparatorDecimal") != "SeparatorDecimal") $dec=$langs->transnoentitiesnoconv("SeparatorDecimal"); - if ($langs->transnoentitiesnoconv("SeparatorThousand")!= "SeparatorThousand") $thousand=$langs->transnoentitiesnoconv("SeparatorThousand"); - print "var dec='".$dec."'; var thousand='".$thousand."';\n"; // Set var in javascript - ?> - - var main_max_dec_shown = <?php echo $conf->global->MAIN_MAX_DECIMALS_SHOWN; ?>; - var main_rounding_unit = <?php echo $conf->global->MAIN_MAX_DECIMALS_UNIT; ?>; - var main_rounding_tot = <?php echo $conf->global->MAIN_MAX_DECIMALS_TOT; ?>; - - var amount = num.toString(); - - // rounding for unit price - var rounding = main_rounding_unit; - var pos = amount.indexOf(dec); - var decpart = ''; - if (pos >= 0) decpart = amount.substr(pos+1).replace('/0+$/i',''); // Supprime les 0 de fin de partie decimale - var nbdec = decpart.length; - if (nbdec > rounding) rounding = nbdec; - // If rounding higher than max shown - if (rounding > main_max_dec_shown) rounding = main_max_dec_shown; - - if (thousand != ',' && thousand != '.') amount=amount.replace(',','.'); - amount=amount.replace(' ',''); // To avoid spaces - amount=amount.replace(thousand,''); // Replace of thousand before replace of dec to avoid pb if thousand is . - amount=amount.replace(dec,'.'); - - return parseFloat(amount).toFixed(rounding); - } - <?php } ?> diff --git a/htdocs/core/tpl/objectline_edit.tpl.php b/htdocs/core/tpl/objectline_edit.tpl.php index 883c1f5eea9..4316ab0b318 100644 --- a/htdocs/core/tpl/objectline_edit.tpl.php +++ b/htdocs/core/tpl/objectline_edit.tpl.php @@ -375,42 +375,6 @@ if (! empty($conf->margin->enabled)) return true; } - /* Function similar to price2num in PHP */ - function price2numjs(num) - { - if (num == '') return ''; - - <?php - $dec=','; $thousand=' '; - if ($langs->transnoentitiesnoconv("SeparatorDecimal") != "SeparatorDecimal") $dec=$langs->transnoentitiesnoconv("SeparatorDecimal"); - if ($langs->transnoentitiesnoconv("SeparatorThousand")!= "SeparatorThousand") $thousand=$langs->transnoentitiesnoconv("SeparatorThousand"); - print "var dec='".$dec."'; var thousand='".$thousand."';\n"; // Set var in javascript - ?> - - var main_max_dec_shown = <?php echo $conf->global->MAIN_MAX_DECIMALS_SHOWN; ?>; - var main_rounding_unit = <?php echo $conf->global->MAIN_MAX_DECIMALS_UNIT; ?>; - var main_rounding_tot = <?php echo $conf->global->MAIN_MAX_DECIMALS_TOT; ?>; - - var amount = num.toString(); - - // rounding for unit price - var rounding = main_rounding_unit; - var pos = amount.indexOf(dec); - var decpart = ''; - if (pos >= 0) decpart = amount.substr(pos+1).replace('/0+$/i',''); // Remove 0 for decimal part - var nbdec = decpart.length; - if (nbdec > rounding) rounding = nbdec; - // If rounding higher than max shown - if (rounding > main_max_dec_shown) rounding = main_max_dec_shown; - - if (thousand != ',' && thousand != '.') amount=amount.replace(',','.'); - amount=amount.replace(' ',''); // To avoid spaces - amount=amount.replace(thousand,''); // Replace of thousand before replace of dec to avoid pb if thousand is . - amount=amount.replace(dec,'.'); - - return parseFloat(amount).toFixed(rounding); - } - <?php } ?> diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index a3c647a5e47..890027c9d30 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -1269,7 +1269,7 @@ function top_htmlhead($head, $title='', $disablejs=0, $disablehead=0, $arrayofjs // Global js function print '<!-- Includes JS of Dolibarr -->'."\n"; - print '<script type="text/javascript" src="'.DOL_URL_ROOT.'/core/js/lib_head.js?version='.urlencode(DOL_VERSION).($ext?'&'.$ext:'').'"></script>'."\n"; + print '<script type="text/javascript" src="'.DOL_URL_ROOT.'/core/js/lib_head.js.php?version='.urlencode(DOL_VERSION).($ext?'&'.$ext:'').'"></script>'."\n"; // Add datepicker default options print '<script type="text/javascript" src="'.DOL_URL_ROOT.'/core/js/datepicker.js.php?lang='.$langs->defaultlang.($ext?'&'.$ext:'').'"></script>'."\n"; -- GitLab From e193d9be971d3bead04c577fd944cc74543c4a47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= <frederic.france@free.fr> Date: Thu, 10 Dec 2015 23:08:21 +0100 Subject: [PATCH 150/197] Update CSMSFile.class.php --- htdocs/core/class/CSMSFile.class.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/htdocs/core/class/CSMSFile.class.php b/htdocs/core/class/CSMSFile.class.php index 5620e641df0..b6819fdd87f 100644 --- a/htdocs/core/class/CSMSFile.class.php +++ b/htdocs/core/class/CSMSFile.class.php @@ -85,9 +85,9 @@ class CSMSFile /** - * Send mail that was prepared by constructor + * Send sms that was prepared by constructor * - * @return boolean True if mail sent, false otherwise + * @return boolean True if sms sent, false otherwise */ function sendfile() { @@ -168,7 +168,7 @@ class CSMSFile } else { - // Send mail method not correctly defined + // Send sms method not correctly defined // -------------------------------------- return 'Bad value for MAIN_SMS_SENDMODE constant'; @@ -176,7 +176,7 @@ class CSMSFile } else { - $this->error='No mail sent. Feature is disabled by option MAIN_DISABLE_ALL_SMS'; + $this->error='No sms sent. Feature is disabled by option MAIN_DISABLE_ALL_SMS'; dol_syslog("CSMSFile::sendfile: ".$this->error, LOG_WARNING); } @@ -187,7 +187,7 @@ class CSMSFile /** - * Write content of a SMTP request into a dump file (mode = all) + * Write content of a SendSms request into a dump file (mode = all) * Used for debugging. * * @return void @@ -215,7 +215,7 @@ class CSMSFile } /** - * Write content of a SMTP request into a dump file (mode = all) + * Write content of a SendSms result into a dump file (mode = all) * Used for debugging. * * @param int $result Result of sms sending -- GitLab From f34fb0d82d1066bec56f9061be4955611e1aab5e Mon Sep 17 00:00:00 2001 From: Ion Agorria <ion@agorria.com> Date: Fri, 11 Dec 2015 03:09:09 +0100 Subject: [PATCH 151/197] More consistent check --- htdocs/core/tpl/objectline_create.tpl.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/tpl/objectline_create.tpl.php b/htdocs/core/tpl/objectline_create.tpl.php index 176c70e4a5a..bb84e47ad7d 100644 --- a/htdocs/core/tpl/objectline_create.tpl.php +++ b/htdocs/core/tpl/objectline_create.tpl.php @@ -518,7 +518,7 @@ jQuery(document).ready(function() { /* focus work on a standard textarea but not if field was replaced with CKEDITOR */ jQuery('#dp_desc').focus(); /* focus if CKEDITOR */ - if (typeof(CKEDITOR) !== 'undefined') + if (typeof CKEDITOR == "object" && typeof CKEDITOR.instances != "undefined" && CKEDITOR.instances[key] != "undefined") { var editor = CKEDITOR.instances['dp_desc']; if (editor) { editor.focus(); } @@ -624,7 +624,7 @@ jQuery(document).ready(function() { /* focus work on a standard textarea but not if field was replaced with CKEDITOR */ jQuery('#dp_desc').focus(); /* focus if CKEDITOR */ - if (typeof(CKEDITOR) !== 'undefined') + if (typeof CKEDITOR == "object" && typeof CKEDITOR.instances != "undefined" && CKEDITOR.instances[key] != "undefined") { var editor = CKEDITOR.instances['dp_desc']; if (editor) { editor.focus(); } -- GitLab From 8ccafc6e3655700fc0f9c2185a848e4ff04f1bd4 Mon Sep 17 00:00:00 2001 From: philippe grand <philippe.grand@atoo-net.com> Date: Fri, 11 Dec 2015 09:54:30 +0100 Subject: [PATCH 152/197] [Qual] Uniformize code --- htdocs/ftp/index.php | 23 +++++++++++------------ htdocs/holiday/card.php | 10 +++++----- htdocs/hrm/establishment/card.php | 6 +++--- htdocs/imports/import.php | 16 ++++++++-------- htdocs/livraison/card.php | 6 +++--- htdocs/loan/card.php | 12 ++++++------ htdocs/loan/payment/card.php | 4 ++-- htdocs/loan/payment/payment.php | 6 +++--- 8 files changed, 41 insertions(+), 42 deletions(-) diff --git a/htdocs/ftp/index.php b/htdocs/ftp/index.php index b26e7b96f86..62bb22bf328 100644 --- a/htdocs/ftp/index.php +++ b/htdocs/ftp/index.php @@ -108,15 +108,15 @@ if (GETPOST("sendit") && ! empty($conf->global->MAIN_UPLOAD_DOC)) $langs->load("errors"); if ($resupload < 0) // Unknown error { - setEventMessage($langs->trans("ErrorFileNotUploaded"), 'errors'); + setEventMessages($langs->trans("ErrorFileNotUploaded"), null, 'errors'); } else if (preg_match('/ErrorFileIsInfectedWithAVirus/',$resupload)) // Files infected by a virus { - setEventMessage($langs->trans("ErrorFileIsInfectedWithAVirus"), 'errors'); + setEventMessages($langs->trans("ErrorFileIsInfectedWithAVirus"), null, 'errors'); } else // Known error { - setEventMessage($langs->trans($resupload), 'errors'); + setEventMessages($langs->trans($resupload), null, 'errors'); } } } @@ -124,7 +124,7 @@ if (GETPOST("sendit") && ! empty($conf->global->MAIN_UPLOAD_DOC)) { // Echec transfert (fichier depassant la limite ?) $langs->load("errors"); - setEventMessage($langs->trans("ErrorFailToCreateDir",$upload_dir), 'errors'); + setEventMessages($langs->trans("ErrorFailToCreateDir",$upload_dir), null, 'errors'); } } @@ -143,8 +143,7 @@ if ($action == 'add' && $user->rights->ftp->setup) } else { - //TODO: Translate - setEventMessage('Error '.$langs->trans($ecmdir->error)); + setEventMessages($langs->trans("ErrorFailToCreateDir"), null, 'errors'); $action = "create"; } } @@ -176,12 +175,12 @@ if ($action == 'confirm_deletefile' && $_REQUEST['confirm'] == 'yes') $result=@ftp_delete($conn_id, $newremotefileiso); if ($result) { - setEventMessage($langs->trans("FileWasRemoved",$file)); + setEventMessages($langs->trans("FileWasRemoved",$file), null, 'mesgs'); } else { dol_syslog("ftp/index.php ftp_delete", LOG_ERR); - setEventMessage($langs->trans("FTPFailedToRemoveFile",$file), 'errors'); + setEventMessages($langs->trans("FTPFailedToRemoveFile",$file), null, 'errors'); } //ftp_close($conn_id); Close later @@ -226,12 +225,12 @@ if ($_POST["const"] && $_POST["delete"] && $_POST["delete"] == $langs->trans("De $result=@ftp_delete($conn_id, $newremotefileiso); if ($result) { - setEventMessage($langs->trans("FileWasRemoved",$file)); + setEventMessages($langs->trans("FileWasRemoved",$file), null, 'mesgs'); } else { dol_syslog("ftp/index.php ftp_delete", LOG_ERR); - setEventMessage($langs->trans("FTPFailedToRemoveFile",$file), 'errors'); + setEventMessages($langs->trans("FTPFailedToRemoveFile",$file), null, 'errors'); } //ftp_close($conn_id); Close later @@ -270,11 +269,11 @@ if ($action == 'confirm_deletesection' && $confirm == 'yes') $result=@ftp_rmdir($conn_id, $newremotefileiso); if ($result) { - setEventMessage($langs->trans("DirWasRemoved",$file)); + setEventMessages($langs->trans("DirWasRemoved",$file), null, 'mesgs'); } else { - setEventMessage($langs->trans("FTPFailedToRemoveDir",$file), 'errors'); + setEventMessages($langs->trans("FTPFailedToRemoveDir",$file), null, 'errors'); } //ftp_close($conn_id); Close later diff --git a/htdocs/holiday/card.php b/htdocs/holiday/card.php index 7802e0c32fa..80d06fdb446 100644 --- a/htdocs/holiday/card.php +++ b/htdocs/holiday/card.php @@ -60,7 +60,7 @@ if ($action == 'create') if (($userid == $user->id && empty($user->rights->holiday->write)) || ($userid != $user->id && empty($user->rights->holiday->write_all))) { $error++; - setEventMessage($langs->trans('CantCreateCP')); + setEventMessages($langs->trans('CantCreateCP'), null, 'errors'); $action='request'; } @@ -130,7 +130,7 @@ if ($action == 'create') // If no validator designated if ($valideur < 1) { - setEventMessage($langs->transnoentitiesnoconv('InvalidValidatorCP'), 'errors'); + setEventMessages($langs->transnoentitiesnoconv('InvalidValidatorCP'), null, 'errors'); $error++; } @@ -138,7 +138,7 @@ if ($action == 'create') if ($type < 1) { - setEventMessage($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv("Type")), 'errors'); + setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv("Type")), null, 'errors'); $error++; } @@ -723,7 +723,7 @@ if (empty($id) || $action == 'add' || $action == 'request' || $action == 'create break; } - setEventMessage($errors, 'errors'); + setEventMessages($errors, null, 'errors'); } @@ -946,7 +946,7 @@ else break; } - setEventMessage($errors, 'errors'); + setEventMessages($errors, null, 'errors'); } // On vérifie si l'utilisateur à le droit de lire cette demande diff --git a/htdocs/hrm/establishment/card.php b/htdocs/hrm/establishment/card.php index 10a1b42e961..fb6f41f4f39 100644 --- a/htdocs/hrm/establishment/card.php +++ b/htdocs/hrm/establishment/card.php @@ -62,7 +62,7 @@ if ($action == 'confirm_delete' && $confirm == "yes") } else { - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } @@ -75,7 +75,7 @@ else if ($action == 'add') $object->name = GETPOST('name', 'alpha'); if (empty($object->name)) { - setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Name")), 'errors'); + setEventMessages($langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Name")), null, 'errors'); $error++; } @@ -124,7 +124,7 @@ else if ($action == 'update') $name = GETPOST('name', 'alpha'); if (empty($name)) { - setEventMessage($langs->trans('ErrorFieldRequired', $langs->trans('Name')), 'errors'); + setEventMessages($langs->trans('ErrorFieldRequired', $langs->trans('Name')), null, 'errors'); $error ++; } diff --git a/htdocs/imports/import.php b/htdocs/imports/import.php index dd228af1847..9e729fb36ac 100644 --- a/htdocs/imports/import.php +++ b/htdocs/imports/import.php @@ -139,11 +139,11 @@ if ($action == 'builddoc') $result=$objimport->build_file($user, GETPOST('model','alpha'), $datatoimport, $array_match_file_to_database); if ($result < 0) { - setEventMessage($objimport->error, 'errors'); + setEventMessages($objimport->error, $objimport->errors, 'errors'); } else { - setEventMessage($langs->trans("FileSuccessfullyBuilt")); + setEventMessages($langs->trans("FileSuccessfullyBuilt"), null, 'mesgs'); } } @@ -176,17 +176,17 @@ if ($action == 'add_import_model') $result = $objimport->create($user); if ($result >= 0) { - setEventMessage($langs->trans("ImportModelSaved",$objimport->model_name)); + setEventMessages($langs->trans("ImportModelSaved", $objimport->model_name), null, 'mesgs'); } else { $langs->load("errors"); if ($objimport->errno == 'DB_ERROR_RECORD_ALREADY_EXISTS') { - setEventMessage($langs->trans("ErrorImportDuplicateProfil"), 'errors'); + setEventMessages($langs->trans("ErrorImportDuplicateProfil"), null, 'errors'); } else { - setEventMessage($objimport->error, 'errors'); + setEventMessages($objimport->error, null, 'errors'); } } } @@ -211,7 +211,7 @@ if ($step == 3 && $datatoimport) else { $langs->load("errors"); - setEventMessage($langs->trans("ErrorFailedToSaveFile"), 'errors'); + setEventMessages($langs->trans("ErrorFailedToSaveFile"), null, 'errors'); } } @@ -225,8 +225,8 @@ if ($step == 3 && $datatoimport) $file = $conf->import->dir_temp . '/' . GETPOST('urlfile'); // Do not use urldecode here ($_GET and $_REQUEST are already decoded by PHP). $ret=dol_delete_file($file); - if ($ret) setEventMessage($langs->trans("FileWasRemoved", GETPOST('urlfile'))); - else setEventMessage($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), 'errors'); + if ($ret) setEventMessages($langs->trans("FileWasRemoved", GETPOST('urlfile')), null, 'mesgs'); + else setEventMessages($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), null, 'errors'); Header('Location: '.$_SERVER["PHP_SELF"].'?step='.$step.$param); exit; } diff --git a/htdocs/livraison/card.php b/htdocs/livraison/card.php index ec4feeb6bf9..8e2007480c1 100644 --- a/htdocs/livraison/card.php +++ b/htdocs/livraison/card.php @@ -113,7 +113,7 @@ if ($action == 'add') } else { - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); $db->rollback(); $_GET["commande_id"]=$_POST["commande_id"]; @@ -216,8 +216,8 @@ elseif ($action == 'remove_file') $upload_dir = $conf->expedition->dir_output . "/receipt"; $file = $upload_dir . '/' . GETPOST('file'); $ret=dol_delete_file($file,0,0,0,$object); - if ($ret) setEventMessage($langs->trans("FileWasRemoved", GETPOST('urlfile'))); - else setEventMessage($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), 'errors'); + if ($ret) setEventMessages($langs->trans("FileWasRemoved", GETPOST('urlfile')), null, 'mesgs'); + else setEventMessages($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), null, 'errors'); } diff --git a/htdocs/loan/card.php b/htdocs/loan/card.php index a6e9f352d4e..b575536f950 100644 --- a/htdocs/loan/card.php +++ b/htdocs/loan/card.php @@ -54,11 +54,11 @@ if ($action == 'confirm_paid' && $confirm == 'yes') $result = $object->set_paid($user); if ($result > 0) { - setEventMessage($langs->trans('LoanPaid')); + setEventMessages($langs->trans('LoanPaid'), null, 'mesgs'); } else { - setEventMessage($loan->error, 'errors'); + setEventMessages($loan->error, null, 'errors'); } } @@ -69,13 +69,13 @@ if ($action == 'confirm_delete' && $confirm == 'yes') $result=$object->delete($user); if ($result > 0) { - setEventMessage($langs->trans('LoanDeleted')); + setEventMessages($langs->trans('LoanDeleted'), null, 'mesgs'); header("Location: index.php"); exit; } else { - setEventMessage($loan->error, 'errors'); + setEventMessages($loan->error, null, 'errors'); } } @@ -121,7 +121,7 @@ if ($action == 'add' && $user->rights->loan->write) $id=$object->create($user); if ($id <= 0) { - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } } @@ -157,7 +157,7 @@ else if ($action == 'update' && $user->rights->loan->write) } else { - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } else diff --git a/htdocs/loan/payment/card.php b/htdocs/loan/payment/card.php index 8d8b5dd1ecf..6315264bad7 100644 --- a/htdocs/loan/payment/card.php +++ b/htdocs/loan/payment/card.php @@ -65,7 +65,7 @@ if ($action == 'confirm_delete' && $confirm == 'yes' && $user->rights->loan->del } else { - setEventMessage($payment->error, 'errors'); + setEventMessages($payment->error, $payment->errors, 'errors'); $db->rollback(); } } @@ -103,7 +103,7 @@ if ($action == 'confirm_valide' && $confirm == 'yes' && $user->rights->loan->wri } else { - setEventMessage($payment->error); + setEventMessages($payment->error, $payment->errors, 'errors'); $db->rollback(); } } diff --git a/htdocs/loan/payment/payment.php b/htdocs/loan/payment/payment.php index 69cfecbe5c2..f095272d5f2 100644 --- a/htdocs/loan/payment/payment.php +++ b/htdocs/loan/payment/payment.php @@ -83,7 +83,7 @@ if ($action == 'add_payment') $amount = GETPOST('amount_capital') + GETPOST('amount_insurance') + GETPOST('amount_interest'); if ($amount == 0) { - setEventMessage($langs->trans('ErrorNoPaymentDefined'), 'errors'); + setEventMessages($langs->trans('ErrorNoPaymentDefined'), null, 'errors'); $error++; } @@ -109,7 +109,7 @@ if ($action == 'add_payment') $paymentid = $payment->create($user); if ($paymentid < 0) { - setEventMessage($payment->error, 'errors'); + setEventMessages($payment->error, $payment->errors, 'errors'); $error++; } } @@ -119,7 +119,7 @@ if ($action == 'add_payment') $result = $payment->addPaymentToBank($user, 'payment_loan', '(LoanPayment)', GETPOST('accountid', 'int'), '', ''); if (! $result > 0) { - setEventMessage($payment->error, 'errors'); + setEventMessages($payment->error, $payment->errors, 'errors'); $error++; } } -- GitLab From 8edf3c65c6ba67a532c300b411f0de178b6762ae Mon Sep 17 00:00:00 2001 From: Florian HENRY <florian.henry@open-concept.pro> Date: Fri, 11 Dec 2015 11:46:22 +0100 Subject: [PATCH 153/197] work on accounting --- htdocs/accountancy/admin/account.php | 4 +-- htdocs/accountancy/admin/card.php | 4 +-- htdocs/accountancy/bookkeeping/list.php | 31 +++++++++++++++++-- htdocs/accountancy/customer/list.php | 15 ++++----- htdocs/accountancy/journal/bankjournal.php | 30 +++++++++++------- .../accountancy/journal/purchasesjournal.php | 12 +++---- htdocs/accountancy/journal/sellsjournal.php | 8 ++--- htdocs/accountancy/supplier/list.php | 4 +-- 8 files changed, 71 insertions(+), 37 deletions(-) diff --git a/htdocs/accountancy/admin/account.php b/htdocs/accountancy/admin/account.php index 0bf37a7753e..c46e07893a3 100644 --- a/htdocs/accountancy/admin/account.php +++ b/htdocs/accountancy/admin/account.php @@ -76,7 +76,7 @@ if ($action == 'disable') { $action = 'update'; if ($result < 0) { - setEventMessage($accounting->error, 'errors'); + setEventMessages($accounting->error, $accounting->errors, 'errors'); } } else if ($action == 'enable') { if ($accounting->fetch($id)) { @@ -84,7 +84,7 @@ if ($action == 'disable') { } $action = 'update'; if ($result < 0) { - setEventMessage($accounting->error, 'errors'); + setEventMessages($accounting->error, $accounting->errors, 'errors'); } } diff --git a/htdocs/accountancy/admin/card.php b/htdocs/accountancy/admin/card.php index 51c6a5c6715..99eb49949e7 100644 --- a/htdocs/accountancy/admin/card.php +++ b/htdocs/accountancy/admin/card.php @@ -125,7 +125,7 @@ else if ($action == 'delete') } if ($result < 0) { - setEventMessage($accounting->error, 'errors'); + setEventMessages($accounting->error, $accounting->errors, 'errors'); } } @@ -139,7 +139,7 @@ $htmlacc = new FormVentilation($db); if ($action == 'create') { - print_fiche_titre($langs->trans('NewAccount')); + print load_fiche_titre($langs->trans('NewAccount')); print '<form name="add" action="' . $_SERVER["PHP_SELF"] . '" method="POST">' . "\n"; print '<input type="hidden" name="token" value="' . $_SESSION['newtoken'] . '">'; diff --git a/htdocs/accountancy/bookkeeping/list.php b/htdocs/accountancy/bookkeeping/list.php index d9b6d66b503..851b095baff 100644 --- a/htdocs/accountancy/bookkeeping/list.php +++ b/htdocs/accountancy/bookkeeping/list.php @@ -30,6 +30,7 @@ require '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/accounting.lib.php'; require_once DOL_DOCUMENT_ROOT.'/accountancy/class/html.formventilation.class.php'; require_once DOL_DOCUMENT_ROOT.'/accountancy/class/bookkeeping.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; // Langs $langs->load("accountancy"); @@ -52,6 +53,7 @@ if ($sortfield == "") $offset = $conf->liste_limit * $page; $formventilation = new FormVentilation($db); +$formother = new FormOther($db); if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both test are required to be compatible with all browsers { @@ -74,7 +76,20 @@ if ($action == 'delbookkeeping') { $result = $object->delete_by_importkey($import_key); Header("Location: list.php"); if ($result < 0) { - setEventMessage($object->errors, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); + } + } +} +elseif ($action == 'delbookkeepingyear') { + + $delyear = GETPOST('delyear', 'int'); + + if (! empty($delyear)) { + $object = new BookKeeping($db); + $result = $object->delete_by_year($delyear); + Header("Location: list.php"); + if ($result < 0) { + setEventMessages($object->error, $object->errors, 'errors'); } } } // Export @@ -86,7 +101,7 @@ else if ($action == 'export_csv') { $object = new BookKeeping($db); $result = $object->export_bookkeping('ebp'); if ($result < 0) { - setEventMessage($object->errors, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } foreach ( $object->linesexport as $line ) { @@ -147,7 +162,7 @@ else { print_barre_liste($langs->trans("Bookkeeping"), $page, $_SERVER["PHP_SELF"], "", $sortfield, $sortorder, '', $num); - print '<form name="add" action="' . $_SERVER["PHP_SELF"] . '" method="POST">'; + /*print '<form name="add" action="' . $_SERVER["PHP_SELF"] . '" method="POST">'; print '<input type="hidden" name="token" value="' . $_SESSION['newtoken'] . '">'; print '<input type="hidden" name="action" value="delbookkeeping">'; @@ -155,6 +170,16 @@ else { print '<div class="inline-block divButAction"><input type="submit" class="butAction" value="' . $langs->trans("DelBookKeeping") . '" /></div>'; + print '</form>';*/ + + print '<form name="add" action="' . $_SERVER["PHP_SELF"] . '" method="POST">'; + print '<input type="hidden" name="token" value="' . $_SESSION['newtoken'] . '">'; + print '<input type="hidden" name="action" value="delbookkeepingyear">'; + + print $formother->select_year(GETPOST('delyear'),'delyear'); + + print '<div class="inline-block divButAction"><input type="submit" class="butAction" value="' . $langs->trans("DelBookKeeping") . '" /></div>'; + print '</form>'; print '<form name="add" action="' . $_SERVER["PHP_SELF"] . '" method="POST">'; diff --git a/htdocs/accountancy/customer/list.php b/htdocs/accountancy/customer/list.php index c03afd3bcde..321bc5b483b 100644 --- a/htdocs/accountancy/customer/list.php +++ b/htdocs/accountancy/customer/list.php @@ -87,10 +87,9 @@ if (! $user->rights->accounting->ventilation->dispatch) accessforbidden(); $formventilation = new FormVentilation($db); - $accounting = new AccountingAccount($db); -$aarowid_s = $accounting->fetch('', ACCOUNTING_SERVICE_SOLD_ACCOUNT); -$aarowid_p = $accounting->fetch('', ACCOUNTING_PRODUCT_SOLD_ACCOUNT); +$aarowid_s = $accounting->fetch('', $conf->global->ACCOUNTING_SERVICE_SOLD_ACCOUNT,1); +$aarowid_p = $accounting->fetch('',$conf->global->ACCOUNTING_PRODUCT_SOLD_ACCOUNT,1); // Purge search criteria if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) { @@ -242,7 +241,7 @@ if ($result) { print_liste_field_titre($langs->trans("Description"), $_SERVER["PHP_SELF"], "l.description", "", $param, '', $sortfield, $sortorder); print_liste_field_titre($langs->trans("Amount"), $_SERVER["PHP_SELF"],"l.total_ht","",$param,'align="center"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("VATRate"), $_SERVER["PHP_SELF"], "l.tva_tx", "", $param, 'align="center"', $sortfield, $sortorder); - print_liste_field_titre($langs->trans("AccountAccounting"), '', '', '', '', 'align="center"'); + print_liste_field_titre($langs->trans("AccountAccountingSuggest"), '', '', '', '', 'align="center"'); print_liste_field_titre($langs->trans("IntoAccount"), '', '', '', '', 'align="center"'); print_liste_field_titre(''); print_liste_field_titre($langs->trans("Ventilate") . '<br><label id="select-all">' . $langs->trans('All') . '</label>/<label id="unselect-all">' . $langs->trans('None') . '</label>', '', '', '', '', 'align="center"'); @@ -292,12 +291,14 @@ if ($result) { } if ($objp->type_l == 1) { $objp->code_sell_l = (! empty($conf->global->ACCOUNTING_SERVICE_SOLD_ACCOUNT) ? $conf->global->ACCOUNTING_SERVICE_SOLD_ACCOUNT : $langs->trans("CodeNotDef")); - if ($objp->aarowid == '') + if ($objp->aarowid == '') { $objp->aarowid_suggest = $aarowid_s; + } } elseif ($objp->type_l == 0) { $objp->code_sell_l = (! empty($conf->global->ACCOUNTING_PRODUCT_SOLD_ACCOUNT) ? $conf->global->ACCOUNTING_PRODUCT_SOLD_ACCOUNT : $langs->trans("CodeNotDef")); - if ($objp->aarowid == '') + if ($objp->aarowid == '') { $objp->aarowid_suggest = $aarowid_p; + } } if ($objp->code_sell_l != $objp->code_sell_p) $code_sell_p_l_differ = 'color:red'; @@ -333,7 +334,7 @@ if ($result) { if ($objp->code_sell_l == $objp->code_sell_p) { print $objp->code_sell_l; } else { - print 'lines=' . $objp->code_sell_l . '<br />product=' . $objp->code_sell_p; + print $langs->trans("Purchase") . ' = ' . $objp->code_sell_l . '<br />' . $langs->trans("Sell") . ' = ' . $objp->code_sell_p; } print '</td>'; diff --git a/htdocs/accountancy/journal/bankjournal.php b/htdocs/accountancy/journal/bankjournal.php index b08391495c1..0f08c38ad65 100644 --- a/htdocs/accountancy/journal/bankjournal.php +++ b/htdocs/accountancy/journal/bankjournal.php @@ -25,7 +25,7 @@ /** * \file htdocs/accountancy/journal/bankjournal.php * \ingroup Accounting Expert - * \brief Page with sells journal + * \brief Page with bank journal */ require '../../main.inc.php'; @@ -66,6 +66,8 @@ $date_endday = GETPOST('date_endday'); $date_endyear = GETPOST('date_endyear'); $action = GETPOST('action'); +$now = dol_now(); + // Security check if ($user->societe_id > 0 && empty($id_bank_account)) accessforbidden(); @@ -121,7 +123,7 @@ $bank_code_journal = new Account($db); $result=$bank_code_journal->fetch($id_bank_account); $journal=$bank_code_journal->accountancy_journal; -dol_syslog("accountancy/journal/bankjournal.php:: sql=" . $sql, LOG_DEBUG); +dol_syslog("accountancy/journal/bankjournal.php", LOG_DEBUG); $result = $db->query($sql); if ($result) { @@ -280,6 +282,8 @@ if ($result) { // Write bookkeeping if ($action == 'writebookkeeping') { + $now=dol_now(); + $error = 0; foreach ( $tabpay as $key => $val ) { @@ -301,6 +305,7 @@ if ($action == 'writebookkeeping') $bookkeeping->credit = ($mt < 0 ? - $mt : 0); $bookkeeping->code_journal = $journal; $bookkeeping->fk_user_author = $user->id; + $bookkeeping->date_create=$now; if ($tabtype[$key] == 'payment') { @@ -317,7 +322,7 @@ if ($action == 'writebookkeeping') } } else if ($tabtype[$key] == 'payment_supplier') { - $sqlmid = 'SELECT facf.facnumber'; + $sqlmid = 'SELECT facf.ref_supplier,facf.ref'; $sqlmid .= " FROM " . MAIN_DB_PREFIX . "facture_fourn facf "; $sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "paiementfourn_facturefourn as payfacf ON payfacf.fk_facturefourn=facf.rowid"; $sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "paiementfourn as payf ON payfacf.fk_paiementfourn=payf.rowid"; @@ -326,14 +331,14 @@ if ($action == 'writebookkeeping') $resultmid = $db->query($sqlmid); if ($resultmid) { $objmid = $db->fetch_object($resultmid); - $bookkeeping->doc_ref = $objmid->facnumber; + $bookkeeping->doc_ref = $objmid->ref_supplier.' ('.$objmid->ref.')';; } } $result = $bookkeeping->create(); if ($result < 0) { $error ++; - setEventMessage($object->errors, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } // Third party @@ -352,6 +357,7 @@ if ($action == 'writebookkeeping') $bookkeeping->credit = ($mt >= 0) ? $mt : 0; $bookkeeping->code_journal = $journal; $bookkeeping->fk_user_author = $user->id; + $bookkeeping->date_create=$now; if ($tabtype[$key] == 'sc') { $bookkeeping->code_tiers = ''; @@ -373,7 +379,7 @@ if ($action == 'writebookkeeping') $bookkeeping->numero_compte = $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER; } else if ($tabtype[$key] == 'payment_supplier') { - $sqlmid = 'SELECT facf.facnumber'; + $sqlmid = 'SELECT facf.ref_supplier,facf.ref'; $sqlmid .= " FROM " . MAIN_DB_PREFIX . "facture_fourn facf "; $sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "paiementfourn_facturefourn as payfacf ON payfacf.fk_facturefourn=facf.rowid"; $sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "paiementfourn as payf ON payfacf.fk_paiementfourn=payf.rowid"; @@ -382,7 +388,7 @@ if ($action == 'writebookkeeping') $resultmid = $db->query($sqlmid); if ($resultmid) { $objmid = $db->fetch_object($resultmid); - $bookkeeping->doc_ref = $objmid->facnumber; + $bookkeeping->doc_ref = $objmid->ref_supplier.' ('.$objmid->ref.')'; } $bookkeeping->code_tiers = $k; $bookkeeping->numero_compte = $conf->global->ACCOUNTING_ACCOUNT_SUPPLIER; @@ -410,17 +416,18 @@ if ($action == 'writebookkeeping') $result = $bookkeeping->create(); if ($result < 0) { $error ++; - setEventMessage($object->errors, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } } if (empty($error)) { - setEventMessage($langs->trans("GeneralLedgerIsWritten"),'mesgs'); + setEventMessages($langs->trans("GeneralLedgerIsWritten"), null, 'mesgs'); } } // Export -if ($action == 'export_csv') { +if ($action == 'export_csv') +{ $sep = $conf->global->ACCOUNTING_EXPORT_SEPARATORCSV; header('Content-Type: text/csv'); @@ -497,7 +504,8 @@ if ($action == 'export_csv') { } } } - } else { // Model Classic Export + } else // Model Classic Export + { foreach ( $tabpay as $key => $val ) { $date = dol_print_date($db->jdate($val["date"]), 'day'); diff --git a/htdocs/accountancy/journal/purchasesjournal.php b/htdocs/accountancy/journal/purchasesjournal.php index 5844700748a..90443eb4bc1 100644 --- a/htdocs/accountancy/journal/purchasesjournal.php +++ b/htdocs/accountancy/journal/purchasesjournal.php @@ -84,7 +84,7 @@ if (empty($date_start) || empty($date_end)) // We define date_start and date_end $p = explode(":", $conf->global->MAIN_INFO_SOCIETE_COUNTRY); $idpays = $p[0]; -$sql = "SELECT f.rowid, f.ref, f.type, f.datef as df, f.libelle,"; +$sql = "SELECT f.rowid, f.ref, f.type, f.datef as df, f.libelle,f.ref_supplier,"; $sql .= " fd.rowid as fdid, fd.description, fd.total_ttc, fd.tva_tx, fd.total_ht, fd.tva as total_tva, fd.product_type,"; $sql .= " s.rowid as socid, s.nom as name, s.code_compta_fournisseur, s.fournisseur,"; $sql .= " s.code_compta_fournisseur, p.accountancy_code_buy , ct.accountancy_code_buy as account_tva, aa.rowid as fk_compte, aa.account_number as compte, aa.label as label_compte"; @@ -135,7 +135,7 @@ if ($result) { $compta_tva = (! empty($obj->account_tva) ? $obj->account_tva : $cpttva); $tabfac[$obj->rowid]["date"] = $obj->df; - $tabfac[$obj->rowid]["ref"] = $obj->ref; + $tabfac[$obj->rowid]["ref"] = $obj->ref_supplier.' ('.$obj->ref.')'; $tabfac[$obj->rowid]["type"] = $obj->type; $tabfac[$obj->rowid]["description"] = $obj->description; $tabfac[$obj->rowid]["fk_facturefourndet"] = $obj->fdid; @@ -183,7 +183,7 @@ if ($action == 'writebookkeeping') { $result = $bookkeeping->create(); if ($result < 0) { $error ++; - setEventMessage($object->errors, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } @@ -213,7 +213,7 @@ if ($action == 'writebookkeeping') { $result = $bookkeeping->create(); if ($result < 0) { $error ++; - setEventMessage($object->errors, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } } @@ -244,14 +244,14 @@ if ($action == 'writebookkeeping') { $result = $bookkeeping->create(); if ($result < 0) { $error ++; - setEventMessage($object->errors, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } } } if (empty($error)) { - setEventMessage($langs->trans("GeneralLedgerIsWritten"),'mesgs'); + setEventMessages($langs->trans("GeneralLedgerIsWritten"), null, 'mesgs'); } } diff --git a/htdocs/accountancy/journal/sellsjournal.php b/htdocs/accountancy/journal/sellsjournal.php index 8535e59aa26..38d9c26dcb1 100644 --- a/htdocs/accountancy/journal/sellsjournal.php +++ b/htdocs/accountancy/journal/sellsjournal.php @@ -218,7 +218,7 @@ if ($action == 'writebookkeeping') $result = $bookkeeping->create(); if ($result < 0) { $error ++; - setEventMessage($object->errors, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } @@ -248,7 +248,7 @@ if ($action == 'writebookkeeping') $result = $bookkeeping->create(); if ($result < 0) { $error ++; - setEventMessage($object->errors, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } } @@ -280,14 +280,14 @@ if ($action == 'writebookkeeping') $result = $bookkeeping->create(); if ($result < 0) { $error ++; - setEventMessage($object->errors, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } } } if (empty($error)) { - setEventMessage($langs->trans("GeneralLedgerIsWritten"),'mesgs'); + setEventMessages($langs->trans("GeneralLedgerIsWritten"), null, 'mesgs'); } } diff --git a/htdocs/accountancy/supplier/list.php b/htdocs/accountancy/supplier/list.php index e261dfff350..ea2ed8de0eb 100644 --- a/htdocs/accountancy/supplier/list.php +++ b/htdocs/accountancy/supplier/list.php @@ -94,8 +94,8 @@ $formventilation = new FormVentilation($db); $accounting = new AccountingAccount($db); // TODO: we should need to check if result is a really exist accountaccount rowid..... -$aarowid_s = $accounting->fetch('', ACCOUNTING_SERVICE_BUY_ACCOUNT); -$aarowid_p = $accounting->fetch('', ACCOUNTING_PRODUCT_BUY_ACCOUNT); +$aarowid_s = $accounting->fetch('', $conf->global->ACCOUNTING_SERVICE_BUY_ACCOUNT,1); +$aarowid_p = $accounting->fetch('', $conf->global->ACCOUNTING_PRODUCT_BUY_ACCOUNT,1); // Purge search criteria if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both test are required to be compatible with all browsers -- GitLab From 9b0dd8159e05d1d9fc2d7a4d5e0e41a5f03dee42 Mon Sep 17 00:00:00 2001 From: philippe grand <philippe.grand@atoo-net.com> Date: Fri, 11 Dec 2015 12:29:19 +0100 Subject: [PATCH 154/197] [Qual] Close database handler should be after Footer --- htdocs/accountancy/admin/card.php | 5 +++-- htdocs/accountancy/admin/fiscalyear_info.php | 3 +-- htdocs/accountancy/journal/bankjournal.php | 3 +-- htdocs/accountancy/journal/index.php | 4 ++-- htdocs/accountancy/journal/purchasesjournal.php | 3 +-- htdocs/accountancy/journal/sellsjournal.php | 4 +--- htdocs/adherents/info_subscription.php | 3 +-- htdocs/admin/menus/edit.php | 4 +--- htdocs/admin/system/os.php | 1 + 9 files changed, 12 insertions(+), 18 deletions(-) diff --git a/htdocs/accountancy/admin/card.php b/htdocs/accountancy/admin/card.php index 99eb49949e7..dc8dac4f959 100644 --- a/htdocs/accountancy/admin/card.php +++ b/htdocs/accountancy/admin/card.php @@ -303,6 +303,7 @@ else if ($id) dol_print_error($db); } } -$db->close(); -llxFooter(); \ No newline at end of file +llxFooter(); + +$db->close(); \ No newline at end of file diff --git a/htdocs/accountancy/admin/fiscalyear_info.php b/htdocs/accountancy/admin/fiscalyear_info.php index ddd0eaaab98..00d50d273af 100644 --- a/htdocs/accountancy/admin/fiscalyear_info.php +++ b/htdocs/accountancy/admin/fiscalyear_info.php @@ -55,6 +55,5 @@ if ($id) print '</div>'; } -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/accountancy/journal/bankjournal.php b/htdocs/accountancy/journal/bankjournal.php index be136a38b98..a1f1e3fff59 100644 --- a/htdocs/accountancy/journal/bankjournal.php +++ b/htdocs/accountancy/journal/bankjournal.php @@ -709,7 +709,6 @@ else print "</table>"; - // End of page - llxFooter(); } +llxFooter(); $db->close(); diff --git a/htdocs/accountancy/journal/index.php b/htdocs/accountancy/journal/index.php index 9906c68d0c8..c7a57512073 100644 --- a/htdocs/accountancy/journal/index.php +++ b/htdocs/accountancy/journal/index.php @@ -42,5 +42,5 @@ llxHeader('', 'Journaux', ''); $form = new Form($db); // End of page -$db->close(); -llxFooter(); \ No newline at end of file +llxFooter(); +$db->close(); \ No newline at end of file diff --git a/htdocs/accountancy/journal/purchasesjournal.php b/htdocs/accountancy/journal/purchasesjournal.php index 538edaa471d..eb9c2baa088 100644 --- a/htdocs/accountancy/journal/purchasesjournal.php +++ b/htdocs/accountancy/journal/purchasesjournal.php @@ -488,7 +488,6 @@ if ($action == 'export_csv') print "</table>"; - // End of page - llxFooter(); } +llxFooter(); $db->close(); diff --git a/htdocs/accountancy/journal/sellsjournal.php b/htdocs/accountancy/journal/sellsjournal.php index aaf3beea8a1..51f4766cc18 100644 --- a/htdocs/accountancy/journal/sellsjournal.php +++ b/htdocs/accountancy/journal/sellsjournal.php @@ -531,8 +531,6 @@ if ($action == 'export_csv') print "</table>"; - // End of page - llxFooter(); } - +llxFooter(); $db->close(); diff --git a/htdocs/adherents/info_subscription.php b/htdocs/adherents/info_subscription.php index cc7902af358..f9dc5ff17af 100644 --- a/htdocs/adherents/info_subscription.php +++ b/htdocs/adherents/info_subscription.php @@ -77,6 +77,5 @@ print '</td></tr></table>'; print '</div>'; -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/admin/menus/edit.php b/htdocs/admin/menus/edit.php index 2fed48d470c..f4f1bbb96bf 100644 --- a/htdocs/admin/menus/edit.php +++ b/htdocs/admin/menus/edit.php @@ -466,7 +466,5 @@ elseif ($action == 'edit') print '<br>'; } - -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/admin/system/os.php b/htdocs/admin/system/os.php index 2e9e56565c0..01d48f2444d 100644 --- a/htdocs/admin/system/os.php +++ b/htdocs/admin/system/os.php @@ -51,3 +51,4 @@ print '</table>'; llxFooter(); +$db->close(); -- GitLab From 30eb08151dc2dc945a2b13be198a75975b79bd9d Mon Sep 17 00:00:00 2001 From: philippe grand <philippe.grand@atoo-net.com> Date: Fri, 11 Dec 2015 14:19:38 +0100 Subject: [PATCH 155/197] [Qual] Close database handler should be after Footer --- htdocs/admin/compta.php | 2 +- htdocs/admin/confexped.php | 3 +-- htdocs/admin/external_rss.php | 5 ++--- htdocs/admin/ldap.php | 3 +-- htdocs/admin/ldap_contacts.php | 3 +-- htdocs/admin/ldap_groups.php | 3 +-- htdocs/admin/ldap_users.php | 3 +-- htdocs/admin/perms.php | 4 +--- htdocs/admin/prelevement.php | 3 +-- htdocs/admin/proxy.php | 3 +-- htdocs/admin/supplier_proposal.php | 1 + htdocs/admin/taxes.php | 3 +-- htdocs/api/admin/explorer.php | 1 + htdocs/asterisk/wrapper.php | 1 + htdocs/bookmarks/admin/bookmark.php | 3 +-- htdocs/cashdesk/admin/cashdesk.php | 3 +-- htdocs/categories/admin/categorie.php | 4 ++-- htdocs/comm/action/info.php | 3 +-- htdocs/comm/action/rapport/index.php | 4 +--- htdocs/comm/mailing/info.php | 3 +-- htdocs/comm/multiprix.php | 3 +-- htdocs/comm/prospect/recap-prospect.php | 4 +--- htdocs/comm/recap-client.php | 4 +--- htdocs/comm/remise.php | 3 +-- htdocs/comm/remx.php | 3 +-- htdocs/commande/info.php | 4 +--- htdocs/compta/bank/bilan.php | 3 +-- htdocs/compta/bank/budget.php | 3 +-- htdocs/compta/bank/card.php | 5 +---- htdocs/compta/bank/info.php | 4 +--- htdocs/compta/bank/search.php | 4 +--- htdocs/compta/bank/treso.php | 3 +-- htdocs/compta/bank/virement.php | 3 +-- htdocs/compta/clients.php | 3 +-- htdocs/compta/deplacement/info.php | 3 +-- htdocs/compta/facture/info.php | 3 +-- htdocs/compta/localtax/card.php | 4 +--- htdocs/compta/localtax/clients.php | 4 +--- htdocs/compta/localtax/index.php | 3 +-- htdocs/compta/localtax/quadri_detail.php | 3 +-- htdocs/compta/localtax/reglement.php | 3 +-- htdocs/compta/paiement/avalider.php | 3 +-- htdocs/compta/paiement/index.php | 5 +---- htdocs/compta/paiement/info.php | 3 +-- htdocs/compta/paiement_charge.php | 4 +--- htdocs/compta/prelevement/create.php | 4 +--- htdocs/compta/prelevement/demandes.php | 2 +- htdocs/compta/prelevement/fiche-rejet.php | 3 +-- htdocs/compta/prelevement/fiche-stat.php | 3 +-- htdocs/compta/prelevement/list.php | 4 +--- htdocs/compta/prelevement/rejets.php | 3 +-- htdocs/compta/sociales/index.php | 6 +----- htdocs/compta/tva/card.php | 4 +--- htdocs/compta/tva/index.php | 4 +--- htdocs/compta/tva/quadri.php | 4 +--- htdocs/compta/tva/quadri_detail.php | 3 +-- htdocs/compta/tva/quarter_report.php | 3 +-- htdocs/compta/ventilation/card.php | 3 +-- htdocs/compta/ventilation/fournisseur/card.php | 3 +-- htdocs/compta/ventilation/fournisseur/list.php | 2 +- htdocs/contrat/info.php | 3 +-- htdocs/cron/info.php | 5 ++--- 62 files changed, 65 insertions(+), 139 deletions(-) diff --git a/htdocs/admin/compta.php b/htdocs/admin/compta.php index 38ba28e9fa4..ab6a0052341 100644 --- a/htdocs/admin/compta.php +++ b/htdocs/admin/compta.php @@ -166,6 +166,6 @@ print "</table>\n"; print '<br /><br /><div style="text-align:center"><input type="submit" class="button" value="'.$langs->trans('Modify').'" name="button"></div>'; print '</form>'; -$db->close(); llxFooter(); +$db->close(); diff --git a/htdocs/admin/confexped.php b/htdocs/admin/confexped.php index f8d13421b24..91d3b82286c 100644 --- a/htdocs/admin/confexped.php +++ b/htdocs/admin/confexped.php @@ -158,6 +158,5 @@ print '</div>'; print info_admin($langs->trans("NoNeedForDeliveryReceipts")); -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/admin/external_rss.php b/htdocs/admin/external_rss.php index 81f6c093d5e..f18a3fe86b6 100644 --- a/htdocs/admin/external_rss.php +++ b/htdocs/admin/external_rss.php @@ -5,7 +5,7 @@ * Copyright (C) 2004 Sebastien Di Cintio <sdicintio@ressource-toi.org> * Copyright (C) 2004 Benoit Mortier <benoit.mortier@opensides.be> * Copyright (C) 2005-2011 Regis Houssin <regis.houssin@capnetworks.com> - * Copyright (C) 2011 Juanjo Menent <jmenent@2byte.es> + * Copyright (C) 2011 Juanjo Menent <jmenent@2byte.es> * * 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 @@ -320,6 +320,5 @@ else } -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/admin/ldap.php b/htdocs/admin/ldap.php index fadde40dbed..92c4d20670b 100644 --- a/htdocs/admin/ldap.php +++ b/htdocs/admin/ldap.php @@ -325,6 +325,5 @@ if (function_exists("ldap_connect")) } } -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/admin/ldap_contacts.php b/htdocs/admin/ldap_contacts.php index 56b755bf64a..4901c127e8b 100644 --- a/htdocs/admin/ldap_contacts.php +++ b/htdocs/admin/ldap_contacts.php @@ -337,7 +337,6 @@ if (function_exists("ldap_connect")) } } -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/admin/ldap_groups.php b/htdocs/admin/ldap_groups.php index 20b94023358..90946f5ea44 100644 --- a/htdocs/admin/ldap_groups.php +++ b/htdocs/admin/ldap_groups.php @@ -257,6 +257,5 @@ if (function_exists("ldap_connect")) } } -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/admin/ldap_users.php b/htdocs/admin/ldap_users.php index 70a94e5817a..dbed44ca5d0 100644 --- a/htdocs/admin/ldap_users.php +++ b/htdocs/admin/ldap_users.php @@ -452,6 +452,5 @@ if (function_exists("ldap_connect")) } } -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/admin/perms.php b/htdocs/admin/perms.php index aaf2f91688a..2e0ba0873bf 100644 --- a/htdocs/admin/perms.php +++ b/htdocs/admin/perms.php @@ -218,7 +218,5 @@ print '</table>'; print '</div>'; - -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/admin/prelevement.php b/htdocs/admin/prelevement.php index 1a3fd19aa1c..410851b640b 100644 --- a/htdocs/admin/prelevement.php +++ b/htdocs/admin/prelevement.php @@ -284,6 +284,5 @@ if (! empty($conf->global->MAIN_MODULE_NOTIFICATION)) } */ -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/admin/proxy.php b/htdocs/admin/proxy.php index 4591c4636a8..1f6e45223b4 100644 --- a/htdocs/admin/proxy.php +++ b/htdocs/admin/proxy.php @@ -208,6 +208,5 @@ print '</div>'; print '</form>'; -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/admin/supplier_proposal.php b/htdocs/admin/supplier_proposal.php index c10592487da..069c90ead8a 100644 --- a/htdocs/admin/supplier_proposal.php +++ b/htdocs/admin/supplier_proposal.php @@ -603,6 +603,7 @@ print " <td>".$langs->trans("Value")."</td>\n"; print "</tr>\n"; print "<tr ".$bc[false].">\n <td width=\"140\">".$langs->trans("PathDirectory")."</td>\n <td>".$conf->supplier_proposal->dir_output."</td>\n</tr>\n"; print "</table>\n<br>"; + llxFooter(); $db->close(); diff --git a/htdocs/admin/taxes.php b/htdocs/admin/taxes.php index b1ce8ef5dab..0336547fd14 100644 --- a/htdocs/admin/taxes.php +++ b/htdocs/admin/taxes.php @@ -226,6 +226,5 @@ print '</div>'; print '</form>'; -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/api/admin/explorer.php b/htdocs/api/admin/explorer.php index 154e8d163c1..44a14f99675 100644 --- a/htdocs/api/admin/explorer.php +++ b/htdocs/api/admin/explorer.php @@ -162,4 +162,5 @@ foreach($listofapis['v1'] as $key => $val) } llxFooter(); +$db->close(); diff --git a/htdocs/asterisk/wrapper.php b/htdocs/asterisk/wrapper.php index f168de78b6e..bcd5957dbb3 100644 --- a/htdocs/asterisk/wrapper.php +++ b/htdocs/asterisk/wrapper.php @@ -190,3 +190,4 @@ else { } llxFooter(); +$db->close(); diff --git a/htdocs/bookmarks/admin/bookmark.php b/htdocs/bookmarks/admin/bookmark.php index bd249055773..b622aa1d9dd 100644 --- a/htdocs/bookmarks/admin/bookmark.php +++ b/htdocs/bookmarks/admin/bookmark.php @@ -82,6 +82,5 @@ print '<input size="3" type="text" name="BOOKMARKS_SHOW_IN_MENU" value="'.$conf- print '</td></tr>'; print '</table><br><div class="center"><input type="submit" class="button" value="'.$langs->trans("Modify").'"></div></form>'; -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/cashdesk/admin/cashdesk.php b/htdocs/cashdesk/admin/cashdesk.php index c9b6804ef33..de60e8b80cf 100644 --- a/htdocs/cashdesk/admin/cashdesk.php +++ b/htdocs/cashdesk/admin/cashdesk.php @@ -188,6 +188,5 @@ print '<div class="center"><input type="submit" class="button" value="'.$langs-> print "</form>\n"; -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/categories/admin/categorie.php b/htdocs/categories/admin/categorie.php index 12b4d3ced81..d1af6bdafb2 100644 --- a/htdocs/categories/admin/categorie.php +++ b/htdocs/categories/admin/categorie.php @@ -121,5 +121,5 @@ print '</td></tr>'; print '</table>'; -$db->close(); -llxFooter(); \ No newline at end of file +llxFooter(); +$db->close(); \ No newline at end of file diff --git a/htdocs/comm/action/info.php b/htdocs/comm/action/info.php index 93881b35564..7c2001d925d 100644 --- a/htdocs/comm/action/info.php +++ b/htdocs/comm/action/info.php @@ -64,6 +64,5 @@ print '</td></tr></table>'; print '</div>'; -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/comm/action/rapport/index.php b/htdocs/comm/action/rapport/index.php index 066df5fb39e..21e85c89756 100644 --- a/htdocs/comm/action/rapport/index.php +++ b/htdocs/comm/action/rapport/index.php @@ -150,7 +150,5 @@ else dol_print_error($db); } - -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/comm/mailing/info.php b/htdocs/comm/mailing/info.php index bbd10849f42..77245f74766 100644 --- a/htdocs/comm/mailing/info.php +++ b/htdocs/comm/mailing/info.php @@ -63,6 +63,5 @@ if ($mil->fetch($_REQUEST["id"]) >= 0) print '</div>'; } -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/comm/multiprix.php b/htdocs/comm/multiprix.php index 6f8c0b70b86..645bdc580b4 100644 --- a/htdocs/comm/multiprix.php +++ b/htdocs/comm/multiprix.php @@ -171,6 +171,5 @@ if ($_socid > 0) } -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/comm/prospect/recap-prospect.php b/htdocs/comm/prospect/recap-prospect.php index 5d7358a806e..fe0fdc55b58 100644 --- a/htdocs/comm/prospect/recap-prospect.php +++ b/htdocs/comm/prospect/recap-prospect.php @@ -89,7 +89,5 @@ else dol_print_error($db); } - -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/comm/recap-client.php b/htdocs/comm/recap-client.php index 405ca2d4a11..71add817dc5 100644 --- a/htdocs/comm/recap-client.php +++ b/htdocs/comm/recap-client.php @@ -88,7 +88,5 @@ else dol_print_error($db); } - -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/comm/remise.php b/htdocs/comm/remise.php index 0edcdcd0c1d..a08e0a66a6f 100644 --- a/htdocs/comm/remise.php +++ b/htdocs/comm/remise.php @@ -199,6 +199,5 @@ if ($socid > 0) } -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/comm/remx.php b/htdocs/comm/remx.php index ba85d593fce..07989b457de 100644 --- a/htdocs/comm/remx.php +++ b/htdocs/comm/remx.php @@ -544,6 +544,5 @@ if ($socid > 0) } -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/commande/info.php b/htdocs/commande/info.php index bae932857fe..ae0dd789064 100644 --- a/htdocs/commande/info.php +++ b/htdocs/commande/info.php @@ -62,7 +62,5 @@ print '</td></tr></table>'; print '</div>'; - -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/compta/bank/bilan.php b/htdocs/compta/bank/bilan.php index 7e44778b9bd..c1d668df8d7 100644 --- a/htdocs/compta/bank/bilan.php +++ b/htdocs/compta/bank/bilan.php @@ -89,6 +89,5 @@ print "<tr ".$bc[$var]."><td>".$langs->trans("BankBalance")."</td><td align=\"ri print "</table>"; -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/compta/bank/budget.php b/htdocs/compta/bank/budget.php index c35dec41e7d..666ad0085e1 100644 --- a/htdocs/compta/bank/budget.php +++ b/htdocs/compta/bank/budget.php @@ -97,6 +97,5 @@ else } print "</table>"; -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/compta/bank/card.php b/htdocs/compta/bank/card.php index fb8383cd91a..dbe0722c77d 100644 --- a/htdocs/compta/bank/card.php +++ b/htdocs/compta/bank/card.php @@ -1041,8 +1041,5 @@ else } - - -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/compta/bank/info.php b/htdocs/compta/bank/info.php index cfc0c10d0a5..a1952ab5957 100644 --- a/htdocs/compta/bank/info.php +++ b/htdocs/compta/bank/info.php @@ -62,7 +62,5 @@ print '</td></tr></table>'; print '</div>'; - -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/compta/bank/search.php b/htdocs/compta/bank/search.php index 0fd5336af7e..5bdca142a91 100644 --- a/htdocs/compta/bank/search.php +++ b/htdocs/compta/bank/search.php @@ -353,7 +353,5 @@ if ($_POST["action"] == "search" && ! $num) print $langs->trans("NoRecordFound"); } - -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/compta/bank/treso.php b/htdocs/compta/bank/treso.php index cbdb769789f..db7f37cb3e5 100644 --- a/htdocs/compta/bank/treso.php +++ b/htdocs/compta/bank/treso.php @@ -339,6 +339,5 @@ else print $langs->trans("ErrorBankAccountNotFound"); } -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/compta/bank/virement.php b/htdocs/compta/bank/virement.php index 4e323893d85..1a3294a2f15 100644 --- a/htdocs/compta/bank/virement.php +++ b/htdocs/compta/bank/virement.php @@ -188,6 +188,5 @@ print '<br><div class="center"><input type="submit" class="button" value="'.$lan print "</form>"; -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/compta/clients.php b/htdocs/compta/clients.php index 14751d308c4..6c2d9023902 100644 --- a/htdocs/compta/clients.php +++ b/htdocs/compta/clients.php @@ -210,6 +210,5 @@ else dol_print_error($db); } -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/compta/deplacement/info.php b/htdocs/compta/deplacement/info.php index dcdc8c9baf0..1e0279263e3 100644 --- a/htdocs/compta/deplacement/info.php +++ b/htdocs/compta/deplacement/info.php @@ -58,6 +58,5 @@ if ($id) print '</div>'; } -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/compta/facture/info.php b/htdocs/compta/facture/info.php index 8611381d486..24164b5709a 100644 --- a/htdocs/compta/facture/info.php +++ b/htdocs/compta/facture/info.php @@ -54,6 +54,5 @@ print '</td></tr></table>'; print '</div>'; -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/compta/localtax/card.php b/htdocs/compta/localtax/card.php index b5140c54842..aded1c6aa1f 100644 --- a/htdocs/compta/localtax/card.php +++ b/htdocs/compta/localtax/card.php @@ -269,8 +269,6 @@ if ($id) print "</div>"; } - -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/compta/localtax/clients.php b/htdocs/compta/localtax/clients.php index 31eaf4375c3..ac30e529839 100644 --- a/htdocs/compta/localtax/clients.php +++ b/htdocs/compta/localtax/clients.php @@ -318,7 +318,5 @@ if($conf->global->$calc ==0){ } print '</table>'; - -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/compta/localtax/index.php b/htdocs/compta/localtax/index.php index c3512fdcc1e..3bed627402e 100644 --- a/htdocs/compta/localtax/index.php +++ b/htdocs/compta/localtax/index.php @@ -280,6 +280,5 @@ print '</td></tr></table>'; print '</td></tr>'; print '</table>'; -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/compta/localtax/quadri_detail.php b/htdocs/compta/localtax/quadri_detail.php index 0e88980796b..7c1e99b3537 100644 --- a/htdocs/compta/localtax/quadri_detail.php +++ b/htdocs/compta/localtax/quadri_detail.php @@ -663,6 +663,5 @@ else $i++; } -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/compta/localtax/reglement.php b/htdocs/compta/localtax/reglement.php index bfe0cb828c0..54530b14443 100644 --- a/htdocs/compta/localtax/reglement.php +++ b/htdocs/compta/localtax/reglement.php @@ -92,6 +92,5 @@ else dol_print_error($db); } -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/compta/paiement/avalider.php b/htdocs/compta/paiement/avalider.php index 489997011b0..6a891b72bda 100644 --- a/htdocs/compta/paiement/avalider.php +++ b/htdocs/compta/paiement/avalider.php @@ -118,6 +118,5 @@ if ($resql) print "</table>"; } -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/compta/paiement/index.php b/htdocs/compta/paiement/index.php index 8575db70288..7f1597b5afc 100644 --- a/htdocs/compta/paiement/index.php +++ b/htdocs/compta/paiement/index.php @@ -31,8 +31,5 @@ llxHeader(); print load_fiche_titre("Payments"); - - -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/compta/paiement/info.php b/htdocs/compta/paiement/info.php index 84ef52c3a80..143ef55e987 100644 --- a/htdocs/compta/paiement/info.php +++ b/htdocs/compta/paiement/info.php @@ -63,6 +63,5 @@ print '</td></tr></table>'; print '</div>'; -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/compta/paiement_charge.php b/htdocs/compta/paiement_charge.php index 30a3d17ab3f..a68f3445305 100644 --- a/htdocs/compta/paiement_charge.php +++ b/htdocs/compta/paiement_charge.php @@ -323,7 +323,5 @@ if ($_GET["action"] == 'create') print "</form>\n"; } - -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/compta/prelevement/create.php b/htdocs/compta/prelevement/create.php index 7e81e181d11..7fd5cb10483 100644 --- a/htdocs/compta/prelevement/create.php +++ b/htdocs/compta/prelevement/create.php @@ -299,7 +299,5 @@ else dol_print_error($db); } - -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/compta/prelevement/demandes.php b/htdocs/compta/prelevement/demandes.php index 364e073676b..22679af2110 100644 --- a/htdocs/compta/prelevement/demandes.php +++ b/htdocs/compta/prelevement/demandes.php @@ -157,5 +157,5 @@ else dol_print_error($db); } - llxFooter(); +$db->close(); diff --git a/htdocs/compta/prelevement/fiche-rejet.php b/htdocs/compta/prelevement/fiche-rejet.php index 161227aa121..d520abccbcf 100644 --- a/htdocs/compta/prelevement/fiche-rejet.php +++ b/htdocs/compta/prelevement/fiche-rejet.php @@ -178,6 +178,5 @@ else dol_print_error($db); } -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/compta/prelevement/fiche-stat.php b/htdocs/compta/prelevement/fiche-stat.php index 83de06bc13c..c2316578130 100644 --- a/htdocs/compta/prelevement/fiche-stat.php +++ b/htdocs/compta/prelevement/fiche-stat.php @@ -159,6 +159,5 @@ if ($prev_id) } } -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/compta/prelevement/list.php b/htdocs/compta/prelevement/list.php index 9274a885105..d0c6792a785 100644 --- a/htdocs/compta/prelevement/list.php +++ b/htdocs/compta/prelevement/list.php @@ -192,7 +192,5 @@ else dol_print_error($db); } -$db->close(); - - llxFooter(); +$db->close(); diff --git a/htdocs/compta/prelevement/rejets.php b/htdocs/compta/prelevement/rejets.php index 30eafa40efa..78a11e898df 100644 --- a/htdocs/compta/prelevement/rejets.php +++ b/htdocs/compta/prelevement/rejets.php @@ -124,6 +124,5 @@ else dol_print_error($db); } -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/compta/sociales/index.php b/htdocs/compta/sociales/index.php index 639bf51fefd..6df15c9ba8e 100644 --- a/htdocs/compta/sociales/index.php +++ b/htdocs/compta/sociales/index.php @@ -247,9 +247,5 @@ else dol_print_error($db); } - - - -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/compta/tva/card.php b/htdocs/compta/tva/card.php index ed80ee21a4e..674e800a168 100644 --- a/htdocs/compta/tva/card.php +++ b/htdocs/compta/tva/card.php @@ -372,7 +372,5 @@ if ($id) print "</div>"; } - -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/compta/tva/index.php b/htdocs/compta/tva/index.php index a5f45d0c72c..6445eb09f02 100644 --- a/htdocs/compta/tva/index.php +++ b/htdocs/compta/tva/index.php @@ -252,7 +252,5 @@ print "</td></tr></table>"; print '</td></tr>'; print '</table>'; - -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/compta/tva/quadri.php b/htdocs/compta/tva/quadri.php index a8434a70868..0e4a66146aa 100644 --- a/htdocs/compta/tva/quadri.php +++ b/htdocs/compta/tva/quadri.php @@ -313,7 +313,5 @@ print '</table>'; echo '</td></tr>'; echo '</table>'; - -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/compta/tva/quadri_detail.php b/htdocs/compta/tva/quadri_detail.php index cedc38a2143..8175744a75d 100644 --- a/htdocs/compta/tva/quadri_detail.php +++ b/htdocs/compta/tva/quadri_detail.php @@ -638,6 +638,5 @@ else } echo '</table>'; -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/compta/tva/quarter_report.php b/htdocs/compta/tva/quarter_report.php index e906b65ed4f..61d019894e8 100644 --- a/htdocs/compta/tva/quarter_report.php +++ b/htdocs/compta/tva/quarter_report.php @@ -707,6 +707,5 @@ if (!is_array($x_coll) || !is_array($x_paye)) { } print '</table>'; -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/compta/ventilation/card.php b/htdocs/compta/ventilation/card.php index 463f8884242..59ed7fe9cde 100644 --- a/htdocs/compta/ventilation/card.php +++ b/htdocs/compta/ventilation/card.php @@ -160,6 +160,5 @@ else print "Error ID incorrect"; } -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/compta/ventilation/fournisseur/card.php b/htdocs/compta/ventilation/fournisseur/card.php index 9c69b613697..dc376de7c06 100644 --- a/htdocs/compta/ventilation/fournisseur/card.php +++ b/htdocs/compta/ventilation/fournisseur/card.php @@ -144,6 +144,5 @@ else print "Error ID incorrect"; } -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/compta/ventilation/fournisseur/list.php b/htdocs/compta/ventilation/fournisseur/list.php index 5213a4686be..888f9152240 100644 --- a/htdocs/compta/ventilation/fournisseur/list.php +++ b/htdocs/compta/ventilation/fournisseur/list.php @@ -100,6 +100,6 @@ else { print $db->error(); } -$db->close(); llxFooter(); +$db->close(); diff --git a/htdocs/contrat/info.php b/htdocs/contrat/info.php index 53af58a2415..2067247dbf6 100644 --- a/htdocs/contrat/info.php +++ b/htdocs/contrat/info.php @@ -55,6 +55,5 @@ print '</td></tr></table>'; print '</div>'; -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/cron/info.php b/htdocs/cron/info.php index 1e13bd725b3..334a5da6890 100644 --- a/htdocs/cron/info.php +++ b/htdocs/cron/info.php @@ -55,6 +55,5 @@ dol_print_object_info($object); print '</td></tr></table>'; print '</div>'; - -$db->close(); -llxFooter(); \ No newline at end of file +llxFooter(); +$db->close(); \ No newline at end of file -- GitLab From 793e6e2a8f25472ed96462876b1650c2592ba678 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Fri, 11 Dec 2015 16:56:25 +0100 Subject: [PATCH 156/197] Example mut be excluded of packages --- build/makepack-dolibarr.pl | 2 + .../phpoffice/phpexcel/Examples/.gitignore | 3 - .../phpexcel/Examples/01pharSimple.php | 112 --- .../Examples/01simple-download-ods.php | 89 --- .../Examples/01simple-download-pdf.php | 104 --- .../Examples/01simple-download-xls.php | 89 --- .../Examples/01simple-download-xlsx.php | 89 --- .../phpoffice/phpexcel/Examples/01simple.php | 118 --- .../phpexcel/Examples/01simplePCLZip.php | 106 --- .../phpexcel/Examples/02types-xls.php | 183 ----- .../phpoffice/phpexcel/Examples/02types.php | 183 ----- .../phpexcel/Examples/03formulas.php | 149 ---- .../phpexcel/Examples/04printing.php | 125 ---- .../phpexcel/Examples/05featuredemo.inc.php | 394 ---------- .../phpexcel/Examples/05featuredemo.php | 78 -- .../06largescale-with-cellcaching-sqlite.php | 129 ---- .../06largescale-with-cellcaching-sqlite3.php | 129 ---- .../06largescale-with-cellcaching.php | 128 ---- .../phpexcel/Examples/06largescale-xls.php | 136 ---- .../phpexcel/Examples/06largescale.php | 136 ---- .../phpoffice/phpexcel/Examples/07reader.php | 76 -- .../phpexcel/Examples/07readerPCLZip.php | 79 -- .../Examples/08conditionalformatting.php | 189 ----- .../Examples/08conditionalformatting2.php | 136 ---- .../phpexcel/Examples/09pagebreaks.php | 134 ---- .../Examples/10autofilter-selection-1.php | 221 ------ .../Examples/10autofilter-selection-2.php | 213 ------ .../10autofilter-selection-display.php | 198 ----- .../phpexcel/Examples/10autofilter.php | 171 ----- .../Examples/11documentsecurity-xls.php | 109 --- .../phpexcel/Examples/11documentsecurity.php | 109 --- .../phpexcel/Examples/12cellProtection.php | 107 --- .../phpexcel/Examples/13calculation.php | 235 ------ .../phpoffice/phpexcel/Examples/14excel5.php | 63 -- .../Examples/15datavalidation-xls.php | 142 ---- .../phpexcel/Examples/15datavalidation.php | 143 ---- .../phpoffice/phpexcel/Examples/16csv.php | 107 --- .../phpoffice/phpexcel/Examples/17html.php | 64 -- .../Examples/18extendedcalculation.php | 108 --- .../phpexcel/Examples/19namedrange.php | 129 ---- .../phpexcel/Examples/20readexcel5.php | 79 -- .../phpoffice/phpexcel/Examples/21pdf.php | 94 --- .../phpexcel/Examples/22heavilyformatted.php | 116 --- .../phpexcel/Examples/23sharedstyles.php | 124 ---- .../phpexcel/Examples/24readfilter.php | 77 -- .../phpexcel/Examples/25inmemoryimage.php | 83 --- .../phpoffice/phpexcel/Examples/26utf8.php | 122 --- .../phpexcel/Examples/27imagesexcel5.php | 64 -- .../phpexcel/Examples/28iterator.php | 68 -- .../Examples/29advancedvaluebinder.php | 183 ----- .../phpexcel/Examples/30template.php | 91 --- .../Examples/31docproperties_write-xls.php | 119 --- .../Examples/31docproperties_write.php | 119 --- .../phpexcel/Examples/32chartreadwrite.php | 131 ---- .../phpexcel/Examples/33chartcreate-area.php | 142 ---- .../Examples/33chartcreate-bar-stacked.php | 145 ---- .../phpexcel/Examples/33chartcreate-bar.php | 145 ---- .../Examples/33chartcreate-column-2.php | 154 ---- .../Examples/33chartcreate-column.php | 145 ---- .../Examples/33chartcreate-composite.php | 203 ----- .../phpexcel/Examples/33chartcreate-line.php | 142 ---- .../33chartcreate-multiple-charts.php | 220 ------ .../phpexcel/Examples/33chartcreate-pie.php | 215 ------ .../phpexcel/Examples/33chartcreate-radar.php | 154 ---- .../Examples/33chartcreate-scatter.php | 138 ---- .../phpexcel/Examples/33chartcreate-stock.php | 151 ---- .../phpexcel/Examples/34chartupdate.php | 78 -- .../phpexcel/Examples/35chartrender.php | 134 ---- .../Examples/36chartreadwriteHTML.php | 151 ---- .../phpexcel/Examples/36chartreadwritePDF.php | 174 ----- .../phpexcel/Examples/37page_layout_view.php | 83 --- .../phpexcel/Examples/38cloneWorksheet.php | 118 --- .../phpexcel/Examples/39dropdown.php | 175 ----- .../phpexcel/Examples/40duplicateStyle.php | 51 -- .../phpexcel/Examples/41password.php | 84 --- .../phpexcel/Examples/42richText.php | 159 ---- .../phpexcel/Examples/Excel2003XMLReader.php | 61 -- .../phpexcel/Examples/Excel2003XMLTest.xml | 1 - .../phpexcel/Examples/GnumericReader.php | 60 -- .../phpexcel/Examples/GnumericTest.gnumeric | Bin 7823 -> 0 bytes .../phpexcel/Examples/OOCalcReader.php | 61 -- .../phpexcel/Examples/OOCalcReaderPCLZip.php | 64 -- .../phpexcel/Examples/OOCalcTest.ods | Bin 17931 -> 0 bytes .../phpoffice/phpexcel/Examples/Quadratic.php | 68 -- .../phpexcel/Examples/Quadratic2.php | 65 -- .../phpexcel/Examples/SylkReader.php | 50 -- .../phpoffice/phpexcel/Examples/SylkTest.slk | 152 ---- .../phpoffice/phpexcel/Examples/XMLReader.php | 60 -- .../phpoffice/phpexcel/Examples/XMLTest.xml | 450 ----------- .../Examples/data/continents/Africa.txt | 54 -- .../Examples/data/continents/Asia.txt | 44 -- .../Examples/data/continents/Europe.txt | 47 -- .../data/continents/North America.txt | 23 - .../Examples/data/continents/Oceania.txt | 14 - .../data/continents/South America.txt | 12 - .../phpexcel/Examples/images/officelogo.jpg | Bin 5597 -> 0 bytes .../phpexcel/Examples/images/paid.png | Bin 1605 -> 0 bytes .../Examples/images/phpexcel_logo.gif | Bin 6104 -> 0 bytes .../Examples/images/termsconditions.jpg | Bin 528 -> 0 bytes .../phpoffice/phpexcel/Examples/runall.php | 130 ---- .../Classes/PHPExcel/AutoloaderTest.php | 56 -- .../PHPExcel/Calculation/DateTimeTest.php | 466 ------------ .../PHPExcel/Calculation/EngineeringTest.php | 698 ------------------ .../PHPExcel/Calculation/FinancialTest.php | 516 ------------- .../PHPExcel/Calculation/FunctionsTest.php | 276 ------- .../PHPExcel/Calculation/LogicalTest.php | 112 --- .../PHPExcel/Calculation/LookupRefTest.php | 52 -- .../PHPExcel/Calculation/MathTrigTest.php | 560 -------------- .../PHPExcel/Calculation/TextDataTest.php | 365 --------- .../Classes/PHPExcel/CalculationTest.php | 37 - .../PHPExcel/Cell/AdvancedValueBinderTest.php | 73 -- .../Classes/PHPExcel/Cell/DataTypeTest.php | 24 - .../PHPExcel/Cell/DefaultValueBinderTest.php | 85 --- .../Classes/PHPExcel/Cell/HyperlinkTest.php | 88 --- .../unitTests/Classes/PHPExcel/CellTest.php | 295 -------- .../PHPExcel/Chart/DataSeriesValuesTest.php | 55 -- .../Classes/PHPExcel/Chart/LayoutTest.php | 37 - .../Classes/PHPExcel/Chart/LegendTest.php | 134 ---- .../PHPExcel/Reader/XEEValidatorTest.php | 55 -- .../Classes/PHPExcel/ReferenceHelperTest.php | 58 -- .../Classes/PHPExcel/Shared/CodePageTest.php | 57 -- .../Classes/PHPExcel/Shared/DateTest.php | 188 ----- .../Classes/PHPExcel/Shared/FileTest.php | 39 - .../Classes/PHPExcel/Shared/FontTest.php | 94 --- .../PHPExcel/Shared/PasswordHasherTest.php | 33 - .../Classes/PHPExcel/Shared/StringTest.php | 83 --- .../Classes/PHPExcel/Shared/TimeZoneTest.php | 39 - .../Classes/PHPExcel/Style/ColorTest.php | 81 -- .../PHPExcel/Style/NumberFormatTest.php | 36 - .../Worksheet/AutoFilter/Column/RuleTest.php | 109 --- .../Worksheet/AutoFilter/ColumnTest.php | 173 ----- .../PHPExcel/Worksheet/AutoFilterTest.php | 340 --------- .../PHPExcel/Worksheet/CellCollectionTest.php | 31 - .../Worksheet/ColumnCellIteratorTest.php | 87 --- .../PHPExcel/Worksheet/ColumnIteratorTest.php | 89 --- .../Worksheet/RowCellIteratorTest.php | 89 --- .../PHPExcel/Worksheet/RowIteratorTest.php | 87 --- .../Worksheet/WorksheetColumnTest.php | 46 -- .../PHPExcel/Worksheet/WorksheetRowTest.php | 46 -- .../phpexcel/unitTests/bootstrap.php | 49 -- .../phpexcel/unitTests/custom/Complex.php | 114 --- .../unitTests/custom/complexAssert.php | 62 -- .../phpexcel/unitTests/phpunit-cc.xml | 40 - .../phpoffice/phpexcel/unitTests/phpunit.xml | 32 - .../Calculation/DateTime/DATE.data | 79 -- .../Calculation/DateTime/DATEDIF.data | 96 --- .../Calculation/DateTime/DATEVALUE.data | 66 -- .../rawTestData/Calculation/DateTime/DAY.data | 8 - .../Calculation/DateTime/DAYS360.data | 34 - .../Calculation/DateTime/EDATE.data | 15 - .../Calculation/DateTime/EOMONTH.data | 17 - .../Calculation/DateTime/HOUR.data | 12 - .../Calculation/DateTime/MINUTE.data | 12 - .../Calculation/DateTime/MONTH.data | 12 - .../Calculation/DateTime/NETWORKDAYS.data | 18 - .../Calculation/DateTime/SECOND.data | 12 - .../Calculation/DateTime/TIME.data | 22 - .../Calculation/DateTime/TIMEVALUE.data | 13 - .../Calculation/DateTime/WEEKDAY.data | 27 - .../Calculation/DateTime/WEEKNUM.data | 7 - .../Calculation/DateTime/WORKDAY.data | 13 - .../Calculation/DateTime/YEAR.data | 11 - .../Calculation/DateTime/YEARFRAC.data | 65 -- .../Calculation/Engineering/BESSELI.data | 59 -- .../Calculation/Engineering/BESSELJ.data | 37 - .../Calculation/Engineering/BESSELK.data | 38 - .../Calculation/Engineering/BESSELY.data | 37 - .../Calculation/Engineering/BIN2DEC.data | 10 - .../Calculation/Engineering/BIN2HEX.data | 14 - .../Calculation/Engineering/BIN2OCT.data | 15 - .../Calculation/Engineering/COMPLEX.data | 547 -------------- .../Calculation/Engineering/CONVERTUOM.data | 24 - .../Calculation/Engineering/DEC2BIN.data | 16 - .../Calculation/Engineering/DEC2HEX.data | 15 - .../Calculation/Engineering/DEC2OCT.data | 12 - .../Calculation/Engineering/DELTA.data | 25 - .../Calculation/Engineering/ERF.data | 124 ---- .../Calculation/Engineering/ERFC.data | 41 - .../Calculation/Engineering/GESTEP.data | 81 -- .../Calculation/Engineering/HEX2BIN.data | 13 - .../Calculation/Engineering/HEX2DEC.data | 13 - .../Calculation/Engineering/HEX2OCT.data | 13 - .../Calculation/Engineering/IMABS.data | 27 - .../Calculation/Engineering/IMAGINARY.data | 30 - .../Calculation/Engineering/IMARGUMENT.data | 26 - .../Calculation/Engineering/IMCONJUGATE.data | 26 - .../Calculation/Engineering/IMCOS.data | 27 - .../Calculation/Engineering/IMDIV.data | 20 - .../Calculation/Engineering/IMEXP.data | 27 - .../Calculation/Engineering/IMLN.data | 27 - .../Calculation/Engineering/IMLOG10.data | 27 - .../Calculation/Engineering/IMLOG2.data | 27 - .../Calculation/Engineering/IMPOWER.data | 18 - .../Calculation/Engineering/IMPRODUCT.data | 15 - .../Calculation/Engineering/IMREAL.data | 30 - .../Calculation/Engineering/IMSIN.data | 27 - .../Calculation/Engineering/IMSQRT.data | 28 - .../Calculation/Engineering/IMSUB.data | 10 - .../Calculation/Engineering/IMSUM.data | 10 - .../Calculation/Engineering/OCT2BIN.data | 9 - .../Calculation/Engineering/OCT2DEC.data | 9 - .../Calculation/Engineering/OCT2HEX.data | 9 - .../Calculation/Financial/ACCRINT.data | 8 - .../Calculation/Financial/ACCRINTM.data | 6 - .../Calculation/Financial/AMORDEGRC.data | 3 - .../Calculation/Financial/AMORLINC.data | 3 - .../Calculation/Financial/COUPDAYBS.data | 6 - .../Calculation/Financial/COUPDAYS.data | 6 - .../Calculation/Financial/COUPDAYSNC.data | 6 - .../Calculation/Financial/COUPNCD.data | 6 - .../Calculation/Financial/COUPNUM.data | 7 - .../Calculation/Financial/COUPPCD.data | 6 - .../Calculation/Financial/CUMIPMT.data | 10 - .../Calculation/Financial/CUMPRINC.data | 10 - .../rawTestData/Calculation/Financial/DB.data | 17 - .../Calculation/Financial/DDB.data | 16 - .../Calculation/Financial/DISC.data | 6 - .../Calculation/Financial/DOLLARDE.data | 10 - .../Calculation/Financial/DOLLARFR.data | 10 - .../Calculation/Financial/EFFECT.data | 6 - .../rawTestData/Calculation/Financial/FV.data | 9 - .../Calculation/Financial/FVSCHEDULE.data | 4 - .../Calculation/Financial/INTRATE.data | 6 - .../Calculation/Financial/IPMT.data | 9 - .../Calculation/Financial/IRR.data | 6 - .../Calculation/Financial/ISPMT.data | 5 - .../Calculation/Financial/MIRR.data | 6 - .../Calculation/Financial/NOMINAL.data | 6 - .../Calculation/Financial/NPER.data | 10 - .../Calculation/Financial/NPV.data | 5 - .../Calculation/Financial/PRICE.data | 10 - .../Calculation/Financial/RATE.data | 11 - .../Calculation/Financial/XIRR.data | 4 - .../Calculation/Functions/ERROR_TYPE.data | 14 - .../Calculation/Functions/IS_BLANK.data | 16 - .../Calculation/Functions/IS_ERR.data | 16 - .../Calculation/Functions/IS_ERROR.data | 16 - .../Calculation/Functions/IS_EVEN.data | 20 - .../Calculation/Functions/IS_LOGICAL.data | 16 - .../Calculation/Functions/IS_NA.data | 16 - .../Calculation/Functions/IS_NONTEXT.data | 16 - .../Calculation/Functions/IS_NUMBER.data | 16 - .../Calculation/Functions/IS_ODD.data | 20 - .../Calculation/Functions/IS_TEXT.data | 16 - .../rawTestData/Calculation/Functions/N.data | 20 - .../Calculation/Functions/TYPE.data | 16 - .../rawTestData/Calculation/Logical/AND.data | 21 - .../rawTestData/Calculation/Logical/IF.data | 7 - .../Calculation/Logical/IFERROR.data | 8 - .../rawTestData/Calculation/Logical/NOT.data | 20 - .../rawTestData/Calculation/Logical/OR.data | 20 - .../Calculation/LookupRef/HLOOKUP.data | 9 - .../Calculation/LookupRef/VLOOKUP.data | 5 - .../Calculation/MathTrig/ATAN2.data | 17 - .../Calculation/MathTrig/CEILING.data | 21 - .../Calculation/MathTrig/COMBIN.data | 25 - .../Calculation/MathTrig/EVEN.data | 17 - .../Calculation/MathTrig/FACT.data | 10 - .../Calculation/MathTrig/FACTDOUBLE.data | 8 - .../Calculation/MathTrig/FLOOR.data | 11 - .../rawTestData/Calculation/MathTrig/GCD.data | 20 - .../rawTestData/Calculation/MathTrig/INT.data | 19 - .../rawTestData/Calculation/MathTrig/LCM.data | 12 - .../rawTestData/Calculation/MathTrig/LOG.data | 70 -- .../Calculation/MathTrig/MDETERM.data | 14 - .../Calculation/MathTrig/MINVERSE.data | 15 - .../Calculation/MathTrig/MMULT.data | 12 - .../rawTestData/Calculation/MathTrig/MOD.data | 9 - .../Calculation/MathTrig/MROUND.data | 11 - .../Calculation/MathTrig/MULTINOMIAL.data | 2 - .../rawTestData/Calculation/MathTrig/ODD.data | 13 - .../Calculation/MathTrig/POWER.data | 81 -- .../Calculation/MathTrig/PRODUCT.data | 7 - .../Calculation/MathTrig/QUOTIENT.data | 6 - .../Calculation/MathTrig/ROMAN.data | 5 - .../Calculation/MathTrig/ROUNDDOWN.data | 14 - .../Calculation/MathTrig/ROUNDUP.data | 14 - .../Calculation/MathTrig/SERIESSUM.data | 2 - .../Calculation/MathTrig/SIGN.data | 13 - .../Calculation/MathTrig/SQRTPI.data | 15 - .../Calculation/MathTrig/SUMSQ.data | 7 - .../Calculation/MathTrig/TRUNC.data | 19 - .../Calculation/TextData/CHAR.data | 5 - .../Calculation/TextData/CLEAN.data | 5 - .../Calculation/TextData/CODE.data | 12 - .../Calculation/TextData/CONCATENATE.data | 3 - .../Calculation/TextData/DOLLAR.data | 6 - .../Calculation/TextData/FIND.data | 13 - .../Calculation/TextData/FIXED.data | 5 - .../Calculation/TextData/LEFT.data | 6 - .../rawTestData/Calculation/TextData/LEN.data | 6 - .../Calculation/TextData/LOWER.data | 4 - .../rawTestData/Calculation/TextData/MID.data | 9 - .../Calculation/TextData/PROPER.data | 3 - .../Calculation/TextData/REPLACE.data | 4 - .../Calculation/TextData/RIGHT.data | 6 - .../Calculation/TextData/SEARCH.data | 11 - .../Calculation/TextData/SUBSTITUTE.data | 4 - .../rawTestData/Calculation/TextData/T.data | 5 - .../Calculation/TextData/TEXT.data | 13 - .../Calculation/TextData/TRIM.data | 7 - .../Calculation/TextData/UPPER.data | 4 - .../Calculation/TextData/VALUE.data | 10 - .../CalculationBinaryComparisonOperation.data | 53 -- .../rawTestData/Cell/DefaultValueBinder.data | 19 - .../rawTestData/CellAbsoluteCoordinate.data | 12 - .../rawTestData/CellAbsoluteReference.data | 16 - .../unitTests/rawTestData/CellBuildRange.data | 2 - .../rawTestData/CellCoordinates.data | 6 - .../CellExtractAllCellReferencesInRange.data | 9 - .../rawTestData/CellGetRangeBoundaries.data | 2 - .../rawTestData/CellRangeBoundaries.data | 2 - .../rawTestData/CellRangeDimension.data | 2 - .../unitTests/rawTestData/CellSplitRange.data | 3 - .../unitTests/rawTestData/ColumnIndex.data | 9 - .../unitTests/rawTestData/ColumnString.data | 9 - .../Reader/XEETestInvalidUTF-16.xml | Bin 276 -> 0 bytes .../Reader/XEETestInvalidUTF-16BE.xml | Bin 278 -> 0 bytes .../Reader/XEETestInvalidUTF-16LE.xml | Bin 278 -> 0 bytes .../Reader/XEETestInvalidUTF-8.xml | 8 - .../rawTestData/Reader/XEETestValidUTF-16.xml | Bin 176 -> 0 bytes .../Reader/XEETestValidUTF-16BE.xml | Bin 178 -> 0 bytes .../Reader/XEETestValidUTF-16LE.xml | Bin 178 -> 0 bytes .../rawTestData/Reader/XEETestValidUTF-8.xml | 4 - .../Shared/CentimeterSizeToPixels.data | 5 - .../rawTestData/Shared/CodePage.data | 43 -- .../Shared/DateTimeExcelToPHP1900.data | 15 - .../DateTimeExcelToPHP1900Timezone.data | 23 - .../Shared/DateTimeExcelToPHP1904.data | 10 - .../Shared/DateTimeFormatCodes.data | 37 - .../DateTimeFormattedPHPToExcel1900.data | 12 - .../Shared/DateTimePHPToExcel1900.data | 12 - .../Shared/DateTimePHPToExcel1904.data | 7 - .../rawTestData/Shared/FontSizeToPixels.data | 16 - .../rawTestData/Shared/InchSizeToPixels.data | 5 - .../rawTestData/Shared/PasswordHashes.data | 9 - .../Style/ColorChangeBrightness.data | 14 - .../rawTestData/Style/ColorGetBlue.data | 6 - .../rawTestData/Style/ColorGetGreen.data | 6 - .../rawTestData/Style/ColorGetRed.data | 6 - .../rawTestData/Style/NumberFormat.data | 37 - .../unitTests/testDataFileIterator.php | 131 ---- 342 files changed, 2 insertions(+), 21169 deletions(-) delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/.gitignore delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/01pharSimple.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/01simple-download-ods.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/01simple-download-pdf.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/01simple-download-xls.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/01simple-download-xlsx.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/01simple.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/01simplePCLZip.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/02types-xls.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/02types.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/03formulas.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/04printing.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/05featuredemo.inc.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/05featuredemo.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/06largescale-with-cellcaching-sqlite.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/06largescale-with-cellcaching-sqlite3.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/06largescale-with-cellcaching.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/06largescale-xls.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/06largescale.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/07reader.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/07readerPCLZip.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/08conditionalformatting.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/08conditionalformatting2.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/09pagebreaks.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/10autofilter-selection-1.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/10autofilter-selection-2.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/10autofilter-selection-display.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/10autofilter.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/11documentsecurity-xls.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/11documentsecurity.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/12cellProtection.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/13calculation.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/14excel5.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/15datavalidation-xls.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/15datavalidation.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/16csv.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/17html.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/18extendedcalculation.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/19namedrange.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/20readexcel5.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/21pdf.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/22heavilyformatted.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/23sharedstyles.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/24readfilter.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/25inmemoryimage.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/26utf8.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/27imagesexcel5.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/28iterator.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/29advancedvaluebinder.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/30template.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/31docproperties_write-xls.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/31docproperties_write.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/32chartreadwrite.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-area.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-bar-stacked.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-bar.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-column-2.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-column.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-composite.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-line.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-multiple-charts.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-pie.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-radar.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-scatter.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-stock.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/34chartupdate.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/35chartrender.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/36chartreadwriteHTML.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/36chartreadwritePDF.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/37page_layout_view.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/38cloneWorksheet.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/39dropdown.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/40duplicateStyle.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/41password.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/42richText.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/Excel2003XMLReader.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/Excel2003XMLTest.xml delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/GnumericReader.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/GnumericTest.gnumeric delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/OOCalcReader.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/OOCalcReaderPCLZip.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/OOCalcTest.ods delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/Quadratic.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/Quadratic2.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/SylkReader.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/SylkTest.slk delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/XMLReader.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/XMLTest.xml delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/data/continents/Africa.txt delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/data/continents/Asia.txt delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/data/continents/Europe.txt delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/data/continents/North America.txt delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/data/continents/Oceania.txt delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/data/continents/South America.txt delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/images/officelogo.jpg delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/images/paid.png delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/images/phpexcel_logo.gif delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/images/termsconditions.jpg delete mode 100644 htdocs/includes/phpoffice/phpexcel/Examples/runall.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/AutoloaderTest.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/DateTimeTest.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/EngineeringTest.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/FinancialTest.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/FunctionsTest.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/LogicalTest.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/LookupRefTest.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/MathTrigTest.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/TextDataTest.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/CalculationTest.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Cell/AdvancedValueBinderTest.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Cell/DataTypeTest.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Cell/DefaultValueBinderTest.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Cell/HyperlinkTest.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/CellTest.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Chart/DataSeriesValuesTest.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Chart/LayoutTest.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Chart/LegendTest.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Reader/XEEValidatorTest.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/ReferenceHelperTest.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/CodePageTest.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/DateTest.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/FileTest.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/FontTest.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/PasswordHasherTest.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/StringTest.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/TimeZoneTest.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Style/ColorTest.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Style/NumberFormatTest.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/AutoFilter/Column/RuleTest.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/AutoFilter/ColumnTest.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/AutoFilterTest.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/CellCollectionTest.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/ColumnCellIteratorTest.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/ColumnIteratorTest.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/RowCellIteratorTest.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/RowIteratorTest.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/WorksheetColumnTest.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/WorksheetRowTest.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/bootstrap.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/custom/Complex.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/custom/complexAssert.php delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/phpunit-cc.xml delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/phpunit.xml delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/DATE.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/DATEDIF.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/DATEVALUE.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/DAY.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/DAYS360.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/EDATE.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/EOMONTH.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/HOUR.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/MINUTE.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/MONTH.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/NETWORKDAYS.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/SECOND.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/TIME.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/TIMEVALUE.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/WEEKDAY.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/WEEKNUM.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/WORKDAY.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/YEAR.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/YEARFRAC.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/BESSELI.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/BESSELJ.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/BESSELK.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/BESSELY.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/BIN2DEC.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/BIN2HEX.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/BIN2OCT.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/COMPLEX.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/CONVERTUOM.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/DEC2BIN.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/DEC2HEX.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/DEC2OCT.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/DELTA.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/ERF.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/ERFC.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/GESTEP.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/HEX2BIN.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/HEX2DEC.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/HEX2OCT.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMABS.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMAGINARY.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMARGUMENT.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMCONJUGATE.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMCOS.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMDIV.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMEXP.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMLN.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMLOG10.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMLOG2.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMPOWER.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMPRODUCT.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMREAL.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMSIN.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMSQRT.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMSUB.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMSUM.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/OCT2BIN.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/OCT2DEC.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/OCT2HEX.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/ACCRINT.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/ACCRINTM.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/AMORDEGRC.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/AMORLINC.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/COUPDAYBS.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/COUPDAYS.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/COUPDAYSNC.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/COUPNCD.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/COUPNUM.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/COUPPCD.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/CUMIPMT.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/CUMPRINC.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/DB.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/DDB.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/DISC.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/DOLLARDE.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/DOLLARFR.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/EFFECT.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/FV.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/FVSCHEDULE.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/INTRATE.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/IPMT.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/IRR.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/ISPMT.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/MIRR.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/NOMINAL.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/NPER.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/NPV.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/PRICE.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/RATE.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/XIRR.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/ERROR_TYPE.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_BLANK.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_ERR.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_ERROR.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_EVEN.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_LOGICAL.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_NA.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_NONTEXT.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_NUMBER.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_ODD.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_TEXT.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/N.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/TYPE.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Logical/AND.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Logical/IF.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Logical/IFERROR.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Logical/NOT.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Logical/OR.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/LookupRef/HLOOKUP.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/LookupRef/VLOOKUP.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/ATAN2.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/CEILING.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/COMBIN.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/EVEN.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/FACT.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/FACTDOUBLE.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/FLOOR.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/GCD.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/INT.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/LCM.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/LOG.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/MDETERM.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/MINVERSE.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/MMULT.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/MOD.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/MROUND.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/MULTINOMIAL.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/ODD.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/POWER.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/PRODUCT.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/QUOTIENT.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/ROMAN.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/ROUNDDOWN.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/ROUNDUP.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/SERIESSUM.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/SIGN.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/SQRTPI.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/SUMSQ.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/TRUNC.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/CHAR.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/CLEAN.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/CODE.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/CONCATENATE.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/DOLLAR.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/FIND.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/FIXED.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/LEFT.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/LEN.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/LOWER.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/MID.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/PROPER.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/REPLACE.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/RIGHT.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/SEARCH.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/SUBSTITUTE.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/T.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/TEXT.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/TRIM.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/UPPER.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/VALUE.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CalculationBinaryComparisonOperation.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Cell/DefaultValueBinder.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellAbsoluteCoordinate.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellAbsoluteReference.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellBuildRange.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellCoordinates.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellExtractAllCellReferencesInRange.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellGetRangeBoundaries.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellRangeBoundaries.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellRangeDimension.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellSplitRange.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/ColumnIndex.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/ColumnString.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestInvalidUTF-16.xml delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestInvalidUTF-16BE.xml delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestInvalidUTF-16LE.xml delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestInvalidUTF-8.xml delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestValidUTF-16.xml delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestValidUTF-16BE.xml delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestValidUTF-16LE.xml delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestValidUTF-8.xml delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/CentimeterSizeToPixels.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/CodePage.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/DateTimeExcelToPHP1900.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/DateTimeExcelToPHP1900Timezone.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/DateTimeExcelToPHP1904.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/DateTimeFormatCodes.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/DateTimeFormattedPHPToExcel1900.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/DateTimePHPToExcel1900.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/DateTimePHPToExcel1904.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/FontSizeToPixels.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/InchSizeToPixels.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/PasswordHashes.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Style/ColorChangeBrightness.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Style/ColorGetBlue.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Style/ColorGetGreen.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Style/ColorGetRed.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Style/NumberFormat.data delete mode 100644 htdocs/includes/phpoffice/phpexcel/unitTests/testDataFileIterator.php diff --git a/build/makepack-dolibarr.pl b/build/makepack-dolibarr.pl index c22c977bdf0..8fc8e49aaf8 100755 --- a/build/makepack-dolibarr.pl +++ b/build/makepack-dolibarr.pl @@ -533,8 +533,10 @@ if ($nboftargetok) { $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/phpexcel/PHPExcel/Shared/PDF`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/phpexcel/PHPExcel/Shared/PCLZip`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/phpoffice/phpexcel/license.txt`; + $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/phpoffice/phpexcel/Examples`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/phpoffice/phpexcel/PHPExcel/Shared/PDF`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/phpoffice/phpexcel/PHPExcel/Shared/PCLZip`; + $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/phpoffice/phpexcel/unitTests`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tcpdf/fonts/dejavu-fonts-ttf-*`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tcpdf/fonts/freefont-*`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tcpdf/fonts/utils`; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/.gitignore b/htdocs/includes/phpoffice/phpexcel/Examples/.gitignore deleted file mode 100644 index 1888a98fa19..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ - -*.xls -*.xlsx \ No newline at end of file diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/01pharSimple.php b/htdocs/includes/phpoffice/phpexcel/Examples/01pharSimple.php deleted file mode 100644 index a8804770129..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/01pharSimple.php +++ /dev/null @@ -1,112 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); -date_default_timezone_set('Europe/London'); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -/** Include PHPExcel */ -require_once '../Build/PHPExcel.phar'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("PHPExcel Test Document") - ->setSubject("PHPExcel Test Document") - ->setDescription("Test document for PHPExcel, generated using PHP classes.") - ->setKeywords("office PHPExcel php") - ->setCategory("Test result file"); - - -// Add some data -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A1', 'Hello') - ->setCellValue('B2', 'world!') - ->setCellValue('C1', 'Hello') - ->setCellValue('D2', 'world!'); - -// Miscellaneous glyphs, UTF-8 -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A4', 'Miscellaneous glyphs') - ->setCellValue('A5', 'éàèùâêîôûëïüÿäöüç'); - -// Rename worksheet -echo date('H:i:s') , " Rename worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Simple'); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Save Excel5 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/01simple-download-ods.php b/htdocs/includes/phpoffice/phpexcel/Examples/01simple-download-ods.php deleted file mode 100644 index 574fb0113eb..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/01simple-download-ods.php +++ /dev/null @@ -1,89 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); -date_default_timezone_set('Europe/London'); - -if (PHP_SAPI == 'cli') - die('This example should only be run from a Web Browser'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -$objPHPExcel = new PHPExcel(); - -// Set document properties -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Add some data -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A1', 'Hello') - ->setCellValue('B2', 'world!') - ->setCellValue('C1', 'Hello') - ->setCellValue('D2', 'world!'); - -// Miscellaneous glyphs, UTF-8 -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A4', 'Miscellaneous glyphs') - ->setCellValue('A5', 'éàèùâêîôûëïüÿäöüç'); - -// Rename worksheet -$objPHPExcel->getActiveSheet()->setTitle('Simple'); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Redirect output to a client’s web browser (OpenDocument) -header('Content-Type: application/vnd.oasis.opendocument.spreadsheet'); -header('Content-Disposition: attachment;filename="01simple.ods"'); -header('Cache-Control: max-age=0'); -// If you're serving to IE 9, then the following may be needed -header('Cache-Control: max-age=1'); - -// If you're serving to IE over SSL, then the following may be needed -header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past -header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); // always modified -header ('Cache-Control: cache, must-revalidate'); // HTTP/1.1 -header ('Pragma: public'); // HTTP/1.0 - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'OpenDocument'); -$objWriter->save('php://output'); -exit; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/01simple-download-pdf.php b/htdocs/includes/phpoffice/phpexcel/Examples/01simple-download-pdf.php deleted file mode 100644 index 287b0e891bd..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/01simple-download-pdf.php +++ /dev/null @@ -1,104 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); -date_default_timezone_set('Europe/London'); - -if (PHP_SAPI == 'cli') - die('This example should only be run from a Web Browser'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Change these values to select the Rendering library that you wish to use -// and its directory location on your server -//$rendererName = PHPExcel_Settings::PDF_RENDERER_TCPDF; -$rendererName = PHPExcel_Settings::PDF_RENDERER_MPDF; -//$rendererName = PHPExcel_Settings::PDF_RENDERER_DOMPDF; -//$rendererLibrary = 'tcPDF5.9'; -$rendererLibrary = 'mPDF5.4'; -//$rendererLibrary = 'domPDF0.6.0beta3'; -$rendererLibraryPath = dirname(__FILE__).'/../../../libraries/PDF/' . $rendererLibrary; - - -// Create new PHPExcel object -$objPHPExcel = new PHPExcel(); - -// Set document properties -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("PDF Test Document") - ->setSubject("PDF Test Document") - ->setDescription("Test document for PDF, generated using PHP classes.") - ->setKeywords("pdf php") - ->setCategory("Test result file"); - - -// Add some data -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A1', 'Hello') - ->setCellValue('B2', 'world!') - ->setCellValue('C1', 'Hello') - ->setCellValue('D2', 'world!'); - -// Miscellaneous glyphs, UTF-8 -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A4', 'Miscellaneous glyphs') - ->setCellValue('A5', 'éàèùâêîôûëïüÿäöüç'); - -// Rename worksheet -$objPHPExcel->getActiveSheet()->setTitle('Simple'); -$objPHPExcel->getActiveSheet()->setShowGridLines(false); - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -if (!PHPExcel_Settings::setPdfRenderer( - $rendererName, - $rendererLibraryPath - )) { - die( - 'NOTICE: Please set the $rendererName and $rendererLibraryPath values' . - '<br />' . - 'at the top of this script as appropriate for your directory structure' - ); -} - - -// Redirect output to a client’s web browser (PDF) -header('Content-Type: application/pdf'); -header('Content-Disposition: attachment;filename="01simple.pdf"'); -header('Cache-Control: max-age=0'); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'PDF'); -$objWriter->save('php://output'); -exit; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/01simple-download-xls.php b/htdocs/includes/phpoffice/phpexcel/Examples/01simple-download-xls.php deleted file mode 100644 index 60fc901bf8d..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/01simple-download-xls.php +++ /dev/null @@ -1,89 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); -date_default_timezone_set('Europe/London'); - -if (PHP_SAPI == 'cli') - die('This example should only be run from a Web Browser'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -$objPHPExcel = new PHPExcel(); - -// Set document properties -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Add some data -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A1', 'Hello') - ->setCellValue('B2', 'world!') - ->setCellValue('C1', 'Hello') - ->setCellValue('D2', 'world!'); - -// Miscellaneous glyphs, UTF-8 -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A4', 'Miscellaneous glyphs') - ->setCellValue('A5', 'éàèùâêîôûëïüÿäöüç'); - -// Rename worksheet -$objPHPExcel->getActiveSheet()->setTitle('Simple'); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Redirect output to a client’s web browser (Excel5) -header('Content-Type: application/vnd.ms-excel'); -header('Content-Disposition: attachment;filename="01simple.xls"'); -header('Cache-Control: max-age=0'); -// If you're serving to IE 9, then the following may be needed -header('Cache-Control: max-age=1'); - -// If you're serving to IE over SSL, then the following may be needed -header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past -header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); // always modified -header ('Cache-Control: cache, must-revalidate'); // HTTP/1.1 -header ('Pragma: public'); // HTTP/1.0 - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save('php://output'); -exit; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/01simple-download-xlsx.php b/htdocs/includes/phpoffice/phpexcel/Examples/01simple-download-xlsx.php deleted file mode 100644 index 538888ea735..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/01simple-download-xlsx.php +++ /dev/null @@ -1,89 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); -date_default_timezone_set('Europe/London'); - -if (PHP_SAPI == 'cli') - die('This example should only be run from a Web Browser'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -$objPHPExcel = new PHPExcel(); - -// Set document properties -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Add some data -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A1', 'Hello') - ->setCellValue('B2', 'world!') - ->setCellValue('C1', 'Hello') - ->setCellValue('D2', 'world!'); - -// Miscellaneous glyphs, UTF-8 -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A4', 'Miscellaneous glyphs') - ->setCellValue('A5', 'éàèùâêîôûëïüÿäöüç'); - -// Rename worksheet -$objPHPExcel->getActiveSheet()->setTitle('Simple'); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Redirect output to a client’s web browser (Excel2007) -header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); -header('Content-Disposition: attachment;filename="01simple.xlsx"'); -header('Cache-Control: max-age=0'); -// If you're serving to IE 9, then the following may be needed -header('Cache-Control: max-age=1'); - -// If you're serving to IE over SSL, then the following may be needed -header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past -header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); // always modified -header ('Cache-Control: cache, must-revalidate'); // HTTP/1.1 -header ('Pragma: public'); // HTTP/1.0 - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save('php://output'); -exit; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/01simple.php b/htdocs/includes/phpoffice/phpexcel/Examples/01simple.php deleted file mode 100644 index 965fefafebc..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/01simple.php +++ /dev/null @@ -1,118 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); -date_default_timezone_set('Europe/London'); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("PHPExcel Test Document") - ->setSubject("PHPExcel Test Document") - ->setDescription("Test document for PHPExcel, generated using PHP classes.") - ->setKeywords("office PHPExcel php") - ->setCategory("Test result file"); - - -// Add some data -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A1', 'Hello') - ->setCellValue('B2', 'world!') - ->setCellValue('C1', 'Hello') - ->setCellValue('D2', 'world!'); - -// Miscellaneous glyphs, UTF-8 -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A4', 'Miscellaneous glyphs') - ->setCellValue('A5', 'éàèùâêîôûëïüÿäöüç'); - - -$objPHPExcel->getActiveSheet()->setCellValue('A8',"Hello\nWorld"); -$objPHPExcel->getActiveSheet()->getRowDimension(8)->setRowHeight(-1); -$objPHPExcel->getActiveSheet()->getStyle('A8')->getAlignment()->setWrapText(true); - - -// Rename worksheet -echo date('H:i:s') , " Rename worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Simple'); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/01simplePCLZip.php b/htdocs/includes/phpoffice/phpexcel/Examples/01simplePCLZip.php deleted file mode 100644 index 0b7a46c17d5..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/01simplePCLZip.php +++ /dev/null @@ -1,106 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); -date_default_timezone_set('Europe/London'); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("PHPExcel Test Document") - ->setSubject("PHPExcel Test Document") - ->setDescription("Test document for PHPExcel, generated using PHP classes.") - ->setKeywords("office PHPExcel php") - ->setCategory("Test result file"); - - -// Add some data -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A1', 'Hello') - ->setCellValue('B2', 'world!') - ->setCellValue('C1', 'Hello') - ->setCellValue('D2', 'world!'); - -// Miscellaneous glyphs, UTF-8 -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A4', 'Miscellaneous glyphs') - ->setCellValue('A5', 'éàèùâêîôûëïüÿäöüç'); - - -$objPHPExcel->getActiveSheet()->setCellValue('A8',"Hello\nWorld"); -$objPHPExcel->getActiveSheet()->getRowDimension(8)->setRowHeight(-1); -$objPHPExcel->getActiveSheet()->getStyle('A8')->getAlignment()->setWrapText(true); - - -// Rename worksheet -echo date('H:i:s') , " Rename worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Simple'); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -// Use PCLZip rather than ZipArchive to create the Excel2007 OfficeOpenXML file -PHPExcel_Settings::setZipClass(PHPExcel_Settings::PCLZIP); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/02types-xls.php b/htdocs/includes/phpoffice/phpexcel/Examples/02types-xls.php deleted file mode 100644 index cc1dc3744f9..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/02types-xls.php +++ /dev/null @@ -1,183 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); -date_default_timezone_set('Europe/London'); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - -// Set default font -echo date('H:i:s') , " Set default font" , EOL; -$objPHPExcel->getDefaultStyle()->getFont()->setName('Arial') - ->setSize(10); - -// Add some data, resembling some different data types -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->getActiveSheet()->setCellValue('A1', 'String') - ->setCellValue('B1', 'Simple') - ->setCellValue('C1', 'PHPExcel'); - -$objPHPExcel->getActiveSheet()->setCellValue('A2', 'String') - ->setCellValue('B2', 'Symbols') - ->setCellValue('C2', '!+&=()~§±æþ'); - -$objPHPExcel->getActiveSheet()->setCellValue('A3', 'String') - ->setCellValue('B3', 'UTF-8') - ->setCellValue('C3', 'Создать MS Excel Книги из PHP скриптов'); - -$objPHPExcel->getActiveSheet()->setCellValue('A4', 'Number') - ->setCellValue('B4', 'Integer') - ->setCellValue('C4', 12); - -$objPHPExcel->getActiveSheet()->setCellValue('A5', 'Number') - ->setCellValue('B5', 'Float') - ->setCellValue('C5', 34.56); - -$objPHPExcel->getActiveSheet()->setCellValue('A6', 'Number') - ->setCellValue('B6', 'Negative') - ->setCellValue('C6', -7.89); - -$objPHPExcel->getActiveSheet()->setCellValue('A7', 'Boolean') - ->setCellValue('B7', 'True') - ->setCellValue('C7', true); - -$objPHPExcel->getActiveSheet()->setCellValue('A8', 'Boolean') - ->setCellValue('B8', 'False') - ->setCellValue('C8', false); - -$dateTimeNow = time(); -$objPHPExcel->getActiveSheet()->setCellValue('A9', 'Date/Time') - ->setCellValue('B9', 'Date') - ->setCellValue('C9', PHPExcel_Shared_Date::PHPToExcel( $dateTimeNow )); -$objPHPExcel->getActiveSheet()->getStyle('C9')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD2); - -$objPHPExcel->getActiveSheet()->setCellValue('A10', 'Date/Time') - ->setCellValue('B10', 'Time') - ->setCellValue('C10', PHPExcel_Shared_Date::PHPToExcel( $dateTimeNow )); -$objPHPExcel->getActiveSheet()->getStyle('C10')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME4); - -$objPHPExcel->getActiveSheet()->setCellValue('A11', 'Date/Time') - ->setCellValue('B11', 'Date and Time') - ->setCellValue('C11', PHPExcel_Shared_Date::PHPToExcel( $dateTimeNow )); -$objPHPExcel->getActiveSheet()->getStyle('C11')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_DATETIME); - -$objPHPExcel->getActiveSheet()->setCellValue('A12', 'NULL') - ->setCellValue('C12', NULL); - -$objRichText = new PHPExcel_RichText(); -$objRichText->createText('你好 '); -$objPayable = $objRichText->createTextRun('你 好 吗?'); -$objPayable->getFont()->setBold(true); -$objPayable->getFont()->setItalic(true); -$objPayable->getFont()->setColor( new PHPExcel_Style_Color( PHPExcel_Style_Color::COLOR_DARKGREEN ) ); - -$objRichText->createText(', unless specified otherwise on the invoice.'); - -$objPHPExcel->getActiveSheet()->setCellValue('A13', 'Rich Text') - ->setCellValue('C13', $objRichText); - - -$objRichText2 = new PHPExcel_RichText(); -$objRichText2->createText("black text\n"); - -$objRed = $objRichText2->createTextRun("red text"); -$objRed->getFont()->setColor( new PHPExcel_Style_Color(PHPExcel_Style_Color::COLOR_RED ) ); - -$objPHPExcel->getActiveSheet()->getCell("C14")->setValue($objRichText2); -$objPHPExcel->getActiveSheet()->getStyle("C14")->getAlignment()->setWrapText(true); - - -$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setAutoSize(true); -$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setAutoSize(true); - -// Rename worksheet -echo date('H:i:s') , " Rename worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Datatypes'); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -echo date('H:i:s') , " Reload workbook from saved file" , EOL; -$callStartTime = microtime(true); - -$objPHPExcel = PHPExcel_IOFactory::load(str_replace('.php', '.xls', __FILE__)); - -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; -echo 'Call time to reload Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -var_dump($objPHPExcel->getActiveSheet()->toArray()); - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done testing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/02types.php b/htdocs/includes/phpoffice/phpexcel/Examples/02types.php deleted file mode 100644 index ff5421e4bba..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/02types.php +++ /dev/null @@ -1,183 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); -date_default_timezone_set('Europe/London'); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - -// Set default font -echo date('H:i:s') , " Set default font" , EOL; -$objPHPExcel->getDefaultStyle()->getFont()->setName('Arial') - ->setSize(10); - -// Add some data, resembling some different data types -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->getActiveSheet()->setCellValue('A1', 'String') - ->setCellValue('B1', 'Simple') - ->setCellValue('C1', 'PHPExcel'); - -$objPHPExcel->getActiveSheet()->setCellValue('A2', 'String') - ->setCellValue('B2', 'Symbols') - ->setCellValue('C2', '!+&=()~§±æþ'); - -$objPHPExcel->getActiveSheet()->setCellValue('A3', 'String') - ->setCellValue('B3', 'UTF-8') - ->setCellValue('C3', 'Создать MS Excel Книги из PHP скриптов'); - -$objPHPExcel->getActiveSheet()->setCellValue('A4', 'Number') - ->setCellValue('B4', 'Integer') - ->setCellValue('C4', 12); - -$objPHPExcel->getActiveSheet()->setCellValue('A5', 'Number') - ->setCellValue('B5', 'Float') - ->setCellValue('C5', 34.56); - -$objPHPExcel->getActiveSheet()->setCellValue('A6', 'Number') - ->setCellValue('B6', 'Negative') - ->setCellValue('C6', -7.89); - -$objPHPExcel->getActiveSheet()->setCellValue('A7', 'Boolean') - ->setCellValue('B7', 'True') - ->setCellValue('C7', true); - -$objPHPExcel->getActiveSheet()->setCellValue('A8', 'Boolean') - ->setCellValue('B8', 'False') - ->setCellValue('C8', false); - -$dateTimeNow = time(); -$objPHPExcel->getActiveSheet()->setCellValue('A9', 'Date/Time') - ->setCellValue('B9', 'Date') - ->setCellValue('C9', PHPExcel_Shared_Date::PHPToExcel( $dateTimeNow )); -$objPHPExcel->getActiveSheet()->getStyle('C9')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD2); - -$objPHPExcel->getActiveSheet()->setCellValue('A10', 'Date/Time') - ->setCellValue('B10', 'Time') - ->setCellValue('C10', PHPExcel_Shared_Date::PHPToExcel( $dateTimeNow )); -$objPHPExcel->getActiveSheet()->getStyle('C10')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME4); - -$objPHPExcel->getActiveSheet()->setCellValue('A11', 'Date/Time') - ->setCellValue('B11', 'Date and Time') - ->setCellValue('C11', PHPExcel_Shared_Date::PHPToExcel( $dateTimeNow )); -$objPHPExcel->getActiveSheet()->getStyle('C11')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_DATETIME); - -$objPHPExcel->getActiveSheet()->setCellValue('A12', 'NULL') - ->setCellValue('C12', NULL); - -$objRichText = new PHPExcel_RichText(); -$objRichText->createText('你好 '); - -$objPayable = $objRichText->createTextRun('你 好 吗?'); -$objPayable->getFont()->setBold(true); -$objPayable->getFont()->setItalic(true); -$objPayable->getFont()->setColor( new PHPExcel_Style_Color( PHPExcel_Style_Color::COLOR_DARKGREEN ) ); - -$objRichText->createText(', unless specified otherwise on the invoice.'); - -$objPHPExcel->getActiveSheet()->setCellValue('A13', 'Rich Text') - ->setCellValue('C13', $objRichText); - - -$objRichText2 = new PHPExcel_RichText(); -$objRichText2->createText("black text\n"); - -$objRed = $objRichText2->createTextRun("red text"); -$objRed->getFont()->setColor( new PHPExcel_Style_Color(PHPExcel_Style_Color::COLOR_RED ) ); - -$objPHPExcel->getActiveSheet()->getCell("C14")->setValue($objRichText2); -$objPHPExcel->getActiveSheet()->getStyle("C14")->getAlignment()->setWrapText(true); - - -$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setAutoSize(true); -$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setAutoSize(true); - -// Rename worksheet -echo date('H:i:s') , " Rename worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Datatypes'); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -echo date('H:i:s') , " Reload workbook from saved file" , EOL; -$callStartTime = microtime(true); - -$objPHPExcel = PHPExcel_IOFactory::load(str_replace('.php', '.xlsx', __FILE__)); - -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; -echo 'Call time to reload Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -var_dump($objPHPExcel->getActiveSheet()->toArray()); - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done testing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/03formulas.php b/htdocs/includes/phpoffice/phpexcel/Examples/03formulas.php deleted file mode 100644 index 1396717d79d..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/03formulas.php +++ /dev/null @@ -1,149 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); -date_default_timezone_set('Europe/London'); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Add some data, we will use some formulas here -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->getActiveSheet()->setCellValue('A5', 'Sum:'); - -$objPHPExcel->getActiveSheet()->setCellValue('B1', 'Range #1') - ->setCellValue('B2', 3) - ->setCellValue('B3', 7) - ->setCellValue('B4', 13) - ->setCellValue('B5', '=SUM(B2:B4)'); -echo date('H:i:s') , " Sum of Range #1 is " , - $objPHPExcel->getActiveSheet()->getCell('B5')->getCalculatedValue() , EOL; - -$objPHPExcel->getActiveSheet()->setCellValue('C1', 'Range #2') - ->setCellValue('C2', 5) - ->setCellValue('C3', 11) - ->setCellValue('C4', 17) - ->setCellValue('C5', '=SUM(C2:C4)'); -echo date('H:i:s') , " Sum of Range #2 is " , - $objPHPExcel->getActiveSheet()->getCell('C5')->getCalculatedValue() , EOL; - -$objPHPExcel->getActiveSheet()->setCellValue('A7', 'Total of both ranges:'); -$objPHPExcel->getActiveSheet()->setCellValue('B7', '=SUM(B5:C5)'); -echo date('H:i:s') , " Sum of both Ranges is " , - $objPHPExcel->getActiveSheet()->getCell('B7')->getCalculatedValue() , EOL; - -$objPHPExcel->getActiveSheet()->setCellValue('A8', 'Minimum of both ranges:'); -$objPHPExcel->getActiveSheet()->setCellValue('B8', '=MIN(B2:C4)'); -echo date('H:i:s') , " Minimum value in either Range is " , - $objPHPExcel->getActiveSheet()->getCell('B8')->getCalculatedValue() , EOL; - -$objPHPExcel->getActiveSheet()->setCellValue('A9', 'Maximum of both ranges:'); -$objPHPExcel->getActiveSheet()->setCellValue('B9', '=MAX(B2:C4)'); -echo date('H:i:s') , " Maximum value in either Range is " , - $objPHPExcel->getActiveSheet()->getCell('B9')->getCalculatedValue() , EOL; - -$objPHPExcel->getActiveSheet()->setCellValue('A10', 'Average of both ranges:'); -$objPHPExcel->getActiveSheet()->setCellValue('B10', '=AVERAGE(B2:C4)'); -echo date('H:i:s') , " Average value of both Ranges is " , - $objPHPExcel->getActiveSheet()->getCell('B10')->getCalculatedValue() , EOL; - - -// Rename worksheet -echo date('H:i:s') , " Rename worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Formulas'); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); - -// -// If we set Pre Calculated Formulas to true then PHPExcel will calculate all formulae in the -// workbook before saving. This adds time and memory overhead, and can cause some problems with formulae -// using functions or features (such as array formulae) that aren't yet supported by the calculation engine -// If the value is false (the default) for the Excel2007 Writer, then MS Excel (or the application used to -// open the file) will need to recalculate values itself to guarantee that the correct results are available. -// -//$objWriter->setPreCalculateFormulas(true); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/04printing.php b/htdocs/includes/phpoffice/phpexcel/Examples/04printing.php deleted file mode 100644 index 14358b05e74..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/04printing.php +++ /dev/null @@ -1,125 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Add some data, we will use printing features -echo date('H:i:s') , " Add some data" , EOL; -for ($i = 1; $i < 200; $i++) { - $objPHPExcel->getActiveSheet()->setCellValue('A' . $i, $i); - $objPHPExcel->getActiveSheet()->setCellValue('B' . $i, 'Test value'); -} - -// Set header and footer. When no different headers for odd/even are used, odd header is assumed. -echo date('H:i:s') , " Set header/footer" , EOL; -$objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddHeader('&L&G&C&HPlease treat this document as confidential!'); -$objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddFooter('&L&B' . $objPHPExcel->getProperties()->getTitle() . '&RPage &P of &N'); - -// Add a drawing to the header -echo date('H:i:s') , " Add a drawing to the header" , EOL; -$objDrawing = new PHPExcel_Worksheet_HeaderFooterDrawing(); -$objDrawing->setName('PHPExcel logo'); -$objDrawing->setPath('./images/phpexcel_logo.gif'); -$objDrawing->setHeight(36); -$objPHPExcel->getActiveSheet()->getHeaderFooter()->addImage($objDrawing, PHPExcel_Worksheet_HeaderFooter::IMAGE_HEADER_LEFT); - -// Set page orientation and size -echo date('H:i:s') , " Set page orientation and size" , EOL; -$objPHPExcel->getActiveSheet()->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE); -$objPHPExcel->getActiveSheet()->getPageSetup()->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4); - -// Rename worksheet -echo date('H:i:s') , " Rename worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Printing'); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/05featuredemo.inc.php b/htdocs/includes/phpoffice/phpexcel/Examples/05featuredemo.inc.php deleted file mode 100644 index b543ca46bb7..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/05featuredemo.inc.php +++ /dev/null @@ -1,394 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Create a first sheet, representing sales data -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('B1', 'Invoice'); -$objPHPExcel->getActiveSheet()->setCellValue('D1', PHPExcel_Shared_Date::PHPToExcel( gmmktime(0,0,0,date('m'),date('d'),date('Y')) )); -$objPHPExcel->getActiveSheet()->getStyle('D1')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_XLSX15); -$objPHPExcel->getActiveSheet()->setCellValue('E1', '#12566'); - -$objPHPExcel->getActiveSheet()->setCellValue('A3', 'Product Id'); -$objPHPExcel->getActiveSheet()->setCellValue('B3', 'Description'); -$objPHPExcel->getActiveSheet()->setCellValue('C3', 'Price'); -$objPHPExcel->getActiveSheet()->setCellValue('D3', 'Amount'); -$objPHPExcel->getActiveSheet()->setCellValue('E3', 'Total'); - -$objPHPExcel->getActiveSheet()->setCellValue('A4', '1001'); -$objPHPExcel->getActiveSheet()->setCellValue('B4', 'PHP for dummies'); -$objPHPExcel->getActiveSheet()->setCellValue('C4', '20'); -$objPHPExcel->getActiveSheet()->setCellValue('D4', '1'); -$objPHPExcel->getActiveSheet()->setCellValue('E4', '=IF(D4<>"",C4*D4,"")'); - -$objPHPExcel->getActiveSheet()->setCellValue('A5', '1012'); -$objPHPExcel->getActiveSheet()->setCellValue('B5', 'OpenXML for dummies'); -$objPHPExcel->getActiveSheet()->setCellValue('C5', '22'); -$objPHPExcel->getActiveSheet()->setCellValue('D5', '2'); -$objPHPExcel->getActiveSheet()->setCellValue('E5', '=IF(D5<>"",C5*D5,"")'); - -$objPHPExcel->getActiveSheet()->setCellValue('E6', '=IF(D6<>"",C6*D6,"")'); -$objPHPExcel->getActiveSheet()->setCellValue('E7', '=IF(D7<>"",C7*D7,"")'); -$objPHPExcel->getActiveSheet()->setCellValue('E8', '=IF(D8<>"",C8*D8,"")'); -$objPHPExcel->getActiveSheet()->setCellValue('E9', '=IF(D9<>"",C9*D9,"")'); - -$objPHPExcel->getActiveSheet()->setCellValue('D11', 'Total excl.:'); -$objPHPExcel->getActiveSheet()->setCellValue('E11', '=SUM(E4:E9)'); - -$objPHPExcel->getActiveSheet()->setCellValue('D12', 'VAT:'); -$objPHPExcel->getActiveSheet()->setCellValue('E12', '=E11*0.21'); - -$objPHPExcel->getActiveSheet()->setCellValue('D13', 'Total incl.:'); -$objPHPExcel->getActiveSheet()->setCellValue('E13', '=E11+E12'); - -// Add comment -echo date('H:i:s') , " Add comments" , EOL; - -$objPHPExcel->getActiveSheet()->getComment('E11')->setAuthor('PHPExcel'); -$objCommentRichText = $objPHPExcel->getActiveSheet()->getComment('E11')->getText()->createTextRun('PHPExcel:'); -$objCommentRichText->getFont()->setBold(true); -$objPHPExcel->getActiveSheet()->getComment('E11')->getText()->createTextRun("\r\n"); -$objPHPExcel->getActiveSheet()->getComment('E11')->getText()->createTextRun('Total amount on the current invoice, excluding VAT.'); - -$objPHPExcel->getActiveSheet()->getComment('E12')->setAuthor('PHPExcel'); -$objCommentRichText = $objPHPExcel->getActiveSheet()->getComment('E12')->getText()->createTextRun('PHPExcel:'); -$objCommentRichText->getFont()->setBold(true); -$objPHPExcel->getActiveSheet()->getComment('E12')->getText()->createTextRun("\r\n"); -$objPHPExcel->getActiveSheet()->getComment('E12')->getText()->createTextRun('Total amount of VAT on the current invoice.'); - -$objPHPExcel->getActiveSheet()->getComment('E13')->setAuthor('PHPExcel'); -$objCommentRichText = $objPHPExcel->getActiveSheet()->getComment('E13')->getText()->createTextRun('PHPExcel:'); -$objCommentRichText->getFont()->setBold(true); -$objPHPExcel->getActiveSheet()->getComment('E13')->getText()->createTextRun("\r\n"); -$objPHPExcel->getActiveSheet()->getComment('E13')->getText()->createTextRun('Total amount on the current invoice, including VAT.'); -$objPHPExcel->getActiveSheet()->getComment('E13')->setWidth('100pt'); -$objPHPExcel->getActiveSheet()->getComment('E13')->setHeight('100pt'); -$objPHPExcel->getActiveSheet()->getComment('E13')->setMarginLeft('150pt'); -$objPHPExcel->getActiveSheet()->getComment('E13')->getFillColor()->setRGB('EEEEEE'); - - -// Add rich-text string -echo date('H:i:s') , " Add rich-text string" , EOL; -$objRichText = new PHPExcel_RichText(); -$objRichText->createText('This invoice is '); - -$objPayable = $objRichText->createTextRun('payable within thirty days after the end of the month'); -$objPayable->getFont()->setBold(true); -$objPayable->getFont()->setItalic(true); -$objPayable->getFont()->setColor( new PHPExcel_Style_Color( PHPExcel_Style_Color::COLOR_DARKGREEN ) ); - -$objRichText->createText(', unless specified otherwise on the invoice.'); - -$objPHPExcel->getActiveSheet()->getCell('A18')->setValue($objRichText); - -// Merge cells -echo date('H:i:s') , " Merge cells" , EOL; -$objPHPExcel->getActiveSheet()->mergeCells('A18:E22'); -$objPHPExcel->getActiveSheet()->mergeCells('A28:B28'); // Just to test... -$objPHPExcel->getActiveSheet()->unmergeCells('A28:B28'); // Just to test... - -// Protect cells -echo date('H:i:s') , " Protect cells" , EOL; -$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true); // Needs to be set to true in order to enable any worksheet protection! -$objPHPExcel->getActiveSheet()->protectCells('A3:E13', 'PHPExcel'); - -// Set cell number formats -echo date('H:i:s') , " Set cell number formats" , EOL; -$objPHPExcel->getActiveSheet()->getStyle('E4:E13')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_EUR_SIMPLE); - -// Set column widths -echo date('H:i:s') , " Set column widths" , EOL; -$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setAutoSize(true); -$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(12); -$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(12); - -// Set fonts -echo date('H:i:s') , " Set fonts" , EOL; -$objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setName('Candara'); -$objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setSize(20); -$objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setBold(true); -$objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE); -$objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_WHITE); - -$objPHPExcel->getActiveSheet()->getStyle('D1')->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_WHITE); -$objPHPExcel->getActiveSheet()->getStyle('E1')->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_WHITE); - -$objPHPExcel->getActiveSheet()->getStyle('D13')->getFont()->setBold(true); -$objPHPExcel->getActiveSheet()->getStyle('E13')->getFont()->setBold(true); - -// Set alignments -echo date('H:i:s') , " Set alignments" , EOL; -$objPHPExcel->getActiveSheet()->getStyle('D11')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT); -$objPHPExcel->getActiveSheet()->getStyle('D12')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT); -$objPHPExcel->getActiveSheet()->getStyle('D13')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT); - -$objPHPExcel->getActiveSheet()->getStyle('A18')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_JUSTIFY); -$objPHPExcel->getActiveSheet()->getStyle('A18')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); - -$objPHPExcel->getActiveSheet()->getStyle('B5')->getAlignment()->setShrinkToFit(true); - -// Set thin black border outline around column -echo date('H:i:s') , " Set thin black border outline around column" , EOL; -$styleThinBlackBorderOutline = array( - 'borders' => array( - 'outline' => array( - 'style' => PHPExcel_Style_Border::BORDER_THIN, - 'color' => array('argb' => 'FF000000'), - ), - ), -); -$objPHPExcel->getActiveSheet()->getStyle('A4:E10')->applyFromArray($styleThinBlackBorderOutline); - - -// Set thick brown border outline around "Total" -echo date('H:i:s') , " Set thick brown border outline around Total" , EOL; -$styleThickBrownBorderOutline = array( - 'borders' => array( - 'outline' => array( - 'style' => PHPExcel_Style_Border::BORDER_THICK, - 'color' => array('argb' => 'FF993300'), - ), - ), -); -$objPHPExcel->getActiveSheet()->getStyle('D13:E13')->applyFromArray($styleThickBrownBorderOutline); - -// Set fills -echo date('H:i:s') , " Set fills" , EOL; -$objPHPExcel->getActiveSheet()->getStyle('A1:E1')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID); -$objPHPExcel->getActiveSheet()->getStyle('A1:E1')->getFill()->getStartColor()->setARGB('FF808080'); - -// Set style for header row using alternative method -echo date('H:i:s') , " Set style for header row using alternative method" , EOL; -$objPHPExcel->getActiveSheet()->getStyle('A3:E3')->applyFromArray( - array( - 'font' => array( - 'bold' => true - ), - 'alignment' => array( - 'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_RIGHT, - ), - 'borders' => array( - 'top' => array( - 'style' => PHPExcel_Style_Border::BORDER_THIN - ) - ), - 'fill' => array( - 'type' => PHPExcel_Style_Fill::FILL_GRADIENT_LINEAR, - 'rotation' => 90, - 'startcolor' => array( - 'argb' => 'FFA0A0A0' - ), - 'endcolor' => array( - 'argb' => 'FFFFFFFF' - ) - ) - ) -); - -$objPHPExcel->getActiveSheet()->getStyle('A3')->applyFromArray( - array( - 'alignment' => array( - 'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_LEFT, - ), - 'borders' => array( - 'left' => array( - 'style' => PHPExcel_Style_Border::BORDER_THIN - ) - ) - ) -); - -$objPHPExcel->getActiveSheet()->getStyle('B3')->applyFromArray( - array( - 'alignment' => array( - 'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_LEFT, - ) - ) -); - -$objPHPExcel->getActiveSheet()->getStyle('E3')->applyFromArray( - array( - 'borders' => array( - 'right' => array( - 'style' => PHPExcel_Style_Border::BORDER_THIN - ) - ) - ) -); - -// Unprotect a cell -echo date('H:i:s') , " Unprotect a cell" , EOL; -$objPHPExcel->getActiveSheet()->getStyle('B1')->getProtection()->setLocked(PHPExcel_Style_Protection::PROTECTION_UNPROTECTED); - -// Add a hyperlink to the sheet -echo date('H:i:s') , " Add a hyperlink to an external website" , EOL; -$objPHPExcel->getActiveSheet()->setCellValue('E26', 'www.phpexcel.net'); -$objPHPExcel->getActiveSheet()->getCell('E26')->getHyperlink()->setUrl('http://www.phpexcel.net'); -$objPHPExcel->getActiveSheet()->getCell('E26')->getHyperlink()->setTooltip('Navigate to website'); -$objPHPExcel->getActiveSheet()->getStyle('E26')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT); - -echo date('H:i:s') , " Add a hyperlink to another cell on a different worksheet within the workbook" , EOL; -$objPHPExcel->getActiveSheet()->setCellValue('E27', 'Terms and conditions'); -$objPHPExcel->getActiveSheet()->getCell('E27')->getHyperlink()->setUrl("sheet://'Terms and conditions'!A1"); -$objPHPExcel->getActiveSheet()->getCell('E27')->getHyperlink()->setTooltip('Review terms and conditions'); -$objPHPExcel->getActiveSheet()->getStyle('E27')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT); - -// Add a drawing to the worksheet -echo date('H:i:s') , " Add a drawing to the worksheet" , EOL; -$objDrawing = new PHPExcel_Worksheet_Drawing(); -$objDrawing->setName('Logo'); -$objDrawing->setDescription('Logo'); -$objDrawing->setPath('./images/officelogo.jpg'); -$objDrawing->setHeight(36); -$objDrawing->setWorksheet($objPHPExcel->getActiveSheet()); - -// Add a drawing to the worksheet -echo date('H:i:s') , " Add a drawing to the worksheet" , EOL; -$objDrawing = new PHPExcel_Worksheet_Drawing(); -$objDrawing->setName('Paid'); -$objDrawing->setDescription('Paid'); -$objDrawing->setPath('./images/paid.png'); -$objDrawing->setCoordinates('B15'); -$objDrawing->setOffsetX(110); -$objDrawing->setRotation(25); -$objDrawing->getShadow()->setVisible(true); -$objDrawing->getShadow()->setDirection(45); -$objDrawing->setWorksheet($objPHPExcel->getActiveSheet()); - -// Add a drawing to the worksheet -echo date('H:i:s') , " Add a drawing to the worksheet" , EOL; -$objDrawing = new PHPExcel_Worksheet_Drawing(); -$objDrawing->setName('PHPExcel logo'); -$objDrawing->setDescription('PHPExcel logo'); -$objDrawing->setPath('./images/phpexcel_logo.gif'); -$objDrawing->setHeight(36); -$objDrawing->setCoordinates('D24'); -$objDrawing->setOffsetX(10); -$objDrawing->setWorksheet($objPHPExcel->getActiveSheet()); - -// Play around with inserting and removing rows and columns -echo date('H:i:s') , " Play around with inserting and removing rows and columns" , EOL; -$objPHPExcel->getActiveSheet()->insertNewRowBefore(6, 10); -$objPHPExcel->getActiveSheet()->removeRow(6, 10); -$objPHPExcel->getActiveSheet()->insertNewColumnBefore('E', 5); -$objPHPExcel->getActiveSheet()->removeColumn('E', 5); - -// Set header and footer. When no different headers for odd/even are used, odd header is assumed. -echo date('H:i:s') , " Set header/footer" , EOL; -$objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddHeader('&L&BInvoice&RPrinted on &D'); -$objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddFooter('&L&B' . $objPHPExcel->getProperties()->getTitle() . '&RPage &P of &N'); - -// Set page orientation and size -echo date('H:i:s') , " Set page orientation and size" , EOL; -$objPHPExcel->getActiveSheet()->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_PORTRAIT); -$objPHPExcel->getActiveSheet()->getPageSetup()->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4); - -// Rename first worksheet -echo date('H:i:s') , " Rename first worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Invoice'); - - -// Create a new worksheet, after the default sheet -echo date('H:i:s') , " Create a second Worksheet object" , EOL; -$objPHPExcel->createSheet(); - -// Llorem ipsum... -$sLloremIpsum = 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Vivamus eget ante. Sed cursus nunc semper tortor. Aliquam luctus purus non elit. Fusce vel elit commodo sapien dignissim dignissim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Curabitur accumsan magna sed massa. Nullam bibendum quam ac ipsum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Proin augue. Praesent malesuada justo sed orci. Pellentesque lacus ligula, sodales quis, ultricies a, ultricies vitae, elit. Sed luctus consectetuer dolor. Vivamus vel sem ut nisi sodales accumsan. Nunc et felis. Suspendisse semper viverra odio. Morbi at odio. Integer a orci a purus venenatis molestie. Nam mattis. Praesent rhoncus, nisi vel mattis auctor, neque nisi faucibus sem, non dapibus elit pede ac nisl. Cras turpis.'; - -// Add some data to the second sheet, resembling some different data types -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->setActiveSheetIndex(1); -$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Terms and conditions'); -$objPHPExcel->getActiveSheet()->setCellValue('A3', $sLloremIpsum); -$objPHPExcel->getActiveSheet()->setCellValue('A4', $sLloremIpsum); -$objPHPExcel->getActiveSheet()->setCellValue('A5', $sLloremIpsum); -$objPHPExcel->getActiveSheet()->setCellValue('A6', $sLloremIpsum); - -// Set the worksheet tab color -echo date('H:i:s') , " Set the worksheet tab color" , EOL; -$objPHPExcel->getActiveSheet()->getTabColor()->setARGB('FF0094FF');; - -// Set alignments -echo date('H:i:s') , " Set alignments" , EOL; -$objPHPExcel->getActiveSheet()->getStyle('A3:A6')->getAlignment()->setWrapText(true); - -// Set column widths -echo date('H:i:s') , " Set column widths" , EOL; -$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(80); - -// Set fonts -echo date('H:i:s') , " Set fonts" , EOL; -$objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setName('Candara'); -$objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setSize(20); -$objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setBold(true); -$objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE); - -$objPHPExcel->getActiveSheet()->getStyle('A3:A6')->getFont()->setSize(8); - -// Add a drawing to the worksheet -echo date('H:i:s') , " Add a drawing to the worksheet" , EOL; -$objDrawing = new PHPExcel_Worksheet_Drawing(); -$objDrawing->setName('Terms and conditions'); -$objDrawing->setDescription('Terms and conditions'); -$objDrawing->setPath('./images/termsconditions.jpg'); -$objDrawing->setCoordinates('B14'); -$objDrawing->setWorksheet($objPHPExcel->getActiveSheet()); - -// Set page orientation and size -echo date('H:i:s') , " Set page orientation and size" , EOL; -$objPHPExcel->getActiveSheet()->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE); -$objPHPExcel->getActiveSheet()->getPageSetup()->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4); - -// Rename second worksheet -echo date('H:i:s') , " Rename second worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Terms and conditions'); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/05featuredemo.php b/htdocs/includes/phpoffice/phpexcel/Examples/05featuredemo.php deleted file mode 100644 index 66d4980ec51..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/05featuredemo.php +++ /dev/null @@ -1,78 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -include "05featuredemo.inc.php"; - -/** Include PHPExcel_IOFactory */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel/IOFactory.php'; - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/06largescale-with-cellcaching-sqlite.php b/htdocs/includes/phpoffice/phpexcel/Examples/06largescale-with-cellcaching-sqlite.php deleted file mode 100644 index cbdb59b91b1..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/06largescale-with-cellcaching-sqlite.php +++ /dev/null @@ -1,129 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - -$cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_to_sqlite; -if (PHPExcel_Settings::setCacheStorageMethod($cacheMethod)) { - echo date('H:i:s') , " Enable Cell Caching using " , $cacheMethod , " method" , EOL; -} else { - echo date('H:i:s') , " Unable to set Cell Caching using " , $cacheMethod , " method, reverting to memory" , EOL; -} - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Create a first sheet -echo date('H:i:s') , " Add data" , EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', "Firstname"); -$objPHPExcel->getActiveSheet()->setCellValue('B1', "Lastname"); -$objPHPExcel->getActiveSheet()->setCellValue('C1', "Phone"); -$objPHPExcel->getActiveSheet()->setCellValue('D1', "Fax"); -$objPHPExcel->getActiveSheet()->setCellValue('E1', "Is Client ?"); - - -// Hide "Phone" and "fax" column -echo date('H:i:s') , " Hide 'Phone' and 'fax' columns" , EOL; -$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setVisible(false); -$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setVisible(false); - - -// Set outline levels -echo date('H:i:s') , " Set outline levels" , EOL; -$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setOutlineLevel(1) - ->setVisible(false) - ->setCollapsed(true); - -// Freeze panes -echo date('H:i:s') , " Freeze panes" , EOL; -$objPHPExcel->getActiveSheet()->freezePane('A2'); - - -// Rows to repeat at top -echo date('H:i:s') , " Rows to repeat at top" , EOL; -$objPHPExcel->getActiveSheet()->getPageSetup()->setRowsToRepeatAtTopByStartAndEnd(1, 1); - - -// Add data -for ($i = 2; $i <= 5000; $i++) { - $objPHPExcel->getActiveSheet()->setCellValue('A' . $i, "FName $i") - ->setCellValue('B' . $i, "LName $i") - ->setCellValue('C' . $i, "PhoneNo $i") - ->setCellValue('D' . $i, "FaxNo $i") - ->setCellValue('E' . $i, true); -} - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/06largescale-with-cellcaching-sqlite3.php b/htdocs/includes/phpoffice/phpexcel/Examples/06largescale-with-cellcaching-sqlite3.php deleted file mode 100644 index ca04f85e92c..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/06largescale-with-cellcaching-sqlite3.php +++ /dev/null @@ -1,129 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - -$cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_to_sqlite3; -if (PHPExcel_Settings::setCacheStorageMethod($cacheMethod)) { - echo date('H:i:s') , " Enable Cell Caching using " , $cacheMethod , " method" , EOL; -} else { - echo date('H:i:s') , " Unable to set Cell Caching using " , $cacheMethod , " method, reverting to memory" , EOL; -} - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Create a first sheet -echo date('H:i:s') , " Add data" , EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', "Firstname"); -$objPHPExcel->getActiveSheet()->setCellValue('B1', "Lastname"); -$objPHPExcel->getActiveSheet()->setCellValue('C1', "Phone"); -$objPHPExcel->getActiveSheet()->setCellValue('D1', "Fax"); -$objPHPExcel->getActiveSheet()->setCellValue('E1', "Is Client ?"); - - -// Hide "Phone" and "fax" column -echo date('H:i:s') , " Hide 'Phone' and 'fax' columns" , EOL; -$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setVisible(false); -$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setVisible(false); - - -// Set outline levels -echo date('H:i:s') , " Set outline levels" , EOL; -$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setOutlineLevel(1) - ->setVisible(false) - ->setCollapsed(true); - -// Freeze panes -echo date('H:i:s') , " Freeze panes" , EOL; -$objPHPExcel->getActiveSheet()->freezePane('A2'); - - -// Rows to repeat at top -echo date('H:i:s') , " Rows to repeat at top" , EOL; -$objPHPExcel->getActiveSheet()->getPageSetup()->setRowsToRepeatAtTopByStartAndEnd(1, 1); - - -// Add data -for ($i = 2; $i <= 5000; $i++) { - $objPHPExcel->getActiveSheet()->setCellValue('A' . $i, "FName $i") - ->setCellValue('B' . $i, "LName $i") - ->setCellValue('C' . $i, "PhoneNo $i") - ->setCellValue('D' . $i, "FaxNo $i") - ->setCellValue('E' . $i, true); -} - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/06largescale-with-cellcaching.php b/htdocs/includes/phpoffice/phpexcel/Examples/06largescale-with-cellcaching.php deleted file mode 100644 index aa23b8cbb8a..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/06largescale-with-cellcaching.php +++ /dev/null @@ -1,128 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - -$cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_in_memory_gzip; -if (!PHPExcel_Settings::setCacheStorageMethod($cacheMethod)) { - die($cacheMethod . " caching method is not available" . EOL); -} -echo date('H:i:s') , " Enable Cell Caching using " , $cacheMethod , " method" , EOL; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Create a first sheet -echo date('H:i:s') , " Add data" , EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', "Firstname"); -$objPHPExcel->getActiveSheet()->setCellValue('B1', "Lastname"); -$objPHPExcel->getActiveSheet()->setCellValue('C1', "Phone"); -$objPHPExcel->getActiveSheet()->setCellValue('D1', "Fax"); -$objPHPExcel->getActiveSheet()->setCellValue('E1', "Is Client ?"); - - -// Hide "Phone" and "fax" column -echo date('H:i:s') , " Hide 'Phone' and 'fax' columns" , EOL; -$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setVisible(false); -$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setVisible(false); - - -// Set outline levels -echo date('H:i:s') , " Set outline levels" , EOL; -$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setOutlineLevel(1) - ->setVisible(false) - ->setCollapsed(true); - -// Freeze panes -echo date('H:i:s') , " Freeze panes" , EOL; -$objPHPExcel->getActiveSheet()->freezePane('A2'); - - -// Rows to repeat at top -echo date('H:i:s') , " Rows to repeat at top" , EOL; -$objPHPExcel->getActiveSheet()->getPageSetup()->setRowsToRepeatAtTopByStartAndEnd(1, 1); - - -// Add data -for ($i = 2; $i <= 5000; $i++) { - $objPHPExcel->getActiveSheet()->setCellValue('A' . $i, "FName $i") - ->setCellValue('B' . $i, "LName $i") - ->setCellValue('C' . $i, "PhoneNo $i") - ->setCellValue('D' . $i, "FaxNo $i") - ->setCellValue('E' . $i, true); -} - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/06largescale-xls.php b/htdocs/includes/phpoffice/phpexcel/Examples/06largescale-xls.php deleted file mode 100644 index 00137ad896b..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/06largescale-xls.php +++ /dev/null @@ -1,136 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -/* -After doing some test, I've got these results benchmarked -for writing to Excel2007: - - Number of rows Seconds to generate - 200 3 - 500 4 - 1000 6 - 2000 12 - 4000 36 - 8000 64 - 15000 465 -*/ - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Create a first sheet -echo date('H:i:s') , " Add data" , EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', "Firstname"); -$objPHPExcel->getActiveSheet()->setCellValue('B1', "Lastname"); -$objPHPExcel->getActiveSheet()->setCellValue('C1', "Phone"); -$objPHPExcel->getActiveSheet()->setCellValue('D1', "Fax"); -$objPHPExcel->getActiveSheet()->setCellValue('E1', "Is Client ?"); - - -// Hide "Phone" and "fax" column -echo date('H:i:s') , " Hide 'Phone' and 'fax' columns" , EOL; -$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setVisible(false); -$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setVisible(false); - - -// Set outline levels -echo date('H:i:s') , " Set outline levels" , EOL; -$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setOutlineLevel(1) - ->setVisible(false) - ->setCollapsed(true); - -// Freeze panes -echo date('H:i:s') , " Freeze panes" , EOL; -$objPHPExcel->getActiveSheet()->freezePane('A2'); - - -// Rows to repeat at top -echo date('H:i:s') , " Rows to repeat at top" , EOL; -$objPHPExcel->getActiveSheet()->getPageSetup()->setRowsToRepeatAtTopByStartAndEnd(1, 1); - - -// Add data -for ($i = 2; $i <= 5000; $i++) { - $objPHPExcel->getActiveSheet()->setCellValue('A' . $i, "FName $i") - ->setCellValue('B' . $i, "LName $i") - ->setCellValue('C' . $i, "PhoneNo $i") - ->setCellValue('D' . $i, "FaxNo $i") - ->setCellValue('E' . $i, true); -} - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/06largescale.php b/htdocs/includes/phpoffice/phpexcel/Examples/06largescale.php deleted file mode 100644 index b0fa44047a3..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/06largescale.php +++ /dev/null @@ -1,136 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -/* -After doing some test, I've got these results benchmarked -for writing to Excel2007: - - Number of rows Seconds to generate - 200 3 - 500 4 - 1000 6 - 2000 12 - 4000 36 - 8000 64 - 15000 465 -*/ - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Create a first sheet -echo date('H:i:s') , " Add data" , EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', "Firstname"); -$objPHPExcel->getActiveSheet()->setCellValue('B1', "Lastname"); -$objPHPExcel->getActiveSheet()->setCellValue('C1', "Phone"); -$objPHPExcel->getActiveSheet()->setCellValue('D1', "Fax"); -$objPHPExcel->getActiveSheet()->setCellValue('E1', "Is Client ?"); - - -// Hide "Phone" and "fax" column -echo date('H:i:s') , " Hide 'Phone' and 'fax' columns" , EOL; -$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setVisible(false); -$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setVisible(false); - - -// Set outline levels -echo date('H:i:s') , " Set outline levels" , EOL; -$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setOutlineLevel(1) - ->setVisible(false) - ->setCollapsed(true); - -// Freeze panes -echo date('H:i:s') , " Freeze panes" , EOL; -$objPHPExcel->getActiveSheet()->freezePane('A2'); - - -// Rows to repeat at top -echo date('H:i:s') , " Rows to repeat at top" , EOL; -$objPHPExcel->getActiveSheet()->getPageSetup()->setRowsToRepeatAtTopByStartAndEnd(1, 1); - - -// Add data -for ($i = 2; $i <= 5000; $i++) { - $objPHPExcel->getActiveSheet()->setCellValue('A' . $i, "FName $i") - ->setCellValue('B' . $i, "LName $i") - ->setCellValue('C' . $i, "PhoneNo $i") - ->setCellValue('D' . $i, "FaxNo $i") - ->setCellValue('E' . $i, true); -} - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/07reader.php b/htdocs/includes/phpoffice/phpexcel/Examples/07reader.php deleted file mode 100644 index 616b6622ff9..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/07reader.php +++ /dev/null @@ -1,76 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel_IOFactory */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel/IOFactory.php'; - - -if (!file_exists("05featuredemo.xlsx")) { - exit("Please run 05featuredemo.php first." . EOL); -} - -echo date('H:i:s') , " Load from Excel2007 file" , EOL; -$callStartTime = microtime(true); - -$objPHPExcel = PHPExcel_IOFactory::load("05featuredemo.xlsx"); - -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; -echo 'Call time to read Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); - -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/07readerPCLZip.php b/htdocs/includes/phpoffice/phpexcel/Examples/07readerPCLZip.php deleted file mode 100644 index 90e85905019..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/07readerPCLZip.php +++ /dev/null @@ -1,79 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel_IOFactory */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel/IOFactory.php'; - - -if (!file_exists("05featuredemo.xlsx")) { - exit("Please run 05featuredemo.php first." . EOL); -} - -// Use PCLZip rather than ZipArchive to read the Excel2007 OfficeOpenXML file -PHPExcel_Settings::setZipClass(PHPExcel_Settings::PCLZIP); - -echo date('H:i:s') , " Load from Excel2007 file" , EOL; -$callStartTime = microtime(true); - -$objPHPExcel = PHPExcel_IOFactory::load("05featuredemo.xlsx"); - -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; -echo 'Call time to read Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); - -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/08conditionalformatting.php b/htdocs/includes/phpoffice/phpexcel/Examples/08conditionalformatting.php deleted file mode 100644 index f65ec9efd32..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/08conditionalformatting.php +++ /dev/null @@ -1,189 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Create a first sheet, representing sales data -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Description') - ->setCellValue('B1', 'Amount'); - -$objPHPExcel->getActiveSheet()->setCellValue('A2', 'Paycheck received') - ->setCellValue('B2', 100); - -$objPHPExcel->getActiveSheet()->setCellValue('A3', 'Cup of coffee bought') - ->setCellValue('B3', -1.5); - -$objPHPExcel->getActiveSheet()->setCellValue('A4', 'Cup of coffee bought') - ->setCellValue('B4', -1.5); - -$objPHPExcel->getActiveSheet()->setCellValue('A5', 'Cup of tea bought') - ->setCellValue('B5', -1.2); - -$objPHPExcel->getActiveSheet()->setCellValue('A6', 'Found some money') - ->setCellValue('B6', 8); - -$objPHPExcel->getActiveSheet()->setCellValue('A7', 'Total:') - ->setCellValue('B7', '=SUM(B2:B6)'); - - -// Set column widths -echo date('H:i:s') , " Set column widths" , EOL; -$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(30); -$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(12); - - -// Add conditional formatting -echo date('H:i:s') , " Add conditional formatting" , EOL; -$objConditional1 = new PHPExcel_Style_Conditional(); -$objConditional1->setConditionType(PHPExcel_Style_Conditional::CONDITION_CELLIS) - ->setOperatorType(PHPExcel_Style_Conditional::OPERATOR_BETWEEN) - ->addCondition('200') - ->addCondition('400'); -$objConditional1->getStyle()->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_YELLOW); -$objConditional1->getStyle()->getFont()->setBold(true); -$objConditional1->getStyle()->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_EUR_SIMPLE); - -$objConditional2 = new PHPExcel_Style_Conditional(); -$objConditional2->setConditionType(PHPExcel_Style_Conditional::CONDITION_CELLIS) - ->setOperatorType(PHPExcel_Style_Conditional::OPERATOR_LESSTHAN) - ->addCondition('0'); -$objConditional2->getStyle()->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_RED); -$objConditional2->getStyle()->getFont()->setItalic(true); -$objConditional2->getStyle()->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_EUR_SIMPLE); - -$objConditional3 = new PHPExcel_Style_Conditional(); -$objConditional3->setConditionType(PHPExcel_Style_Conditional::CONDITION_CELLIS) - ->setOperatorType(PHPExcel_Style_Conditional::OPERATOR_GREATERTHANOREQUAL) - ->addCondition('0'); -$objConditional3->getStyle()->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_GREEN); -$objConditional3->getStyle()->getFont()->setItalic(true); -$objConditional3->getStyle()->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_EUR_SIMPLE); - -$conditionalStyles = $objPHPExcel->getActiveSheet()->getStyle('B2')->getConditionalStyles(); -array_push($conditionalStyles, $objConditional1); -array_push($conditionalStyles, $objConditional2); -array_push($conditionalStyles, $objConditional3); -$objPHPExcel->getActiveSheet()->getStyle('B2')->setConditionalStyles($conditionalStyles); - - -// duplicate the conditional styles across a range of cells -echo date('H:i:s') , " Duplicate the conditional formatting across a range of cells" , EOL; -$objPHPExcel->getActiveSheet()->duplicateConditionalStyle( - $objPHPExcel->getActiveSheet()->getStyle('B2')->getConditionalStyles(), - 'B3:B7' - ); - - -// Set fonts -echo date('H:i:s') , " Set fonts" , EOL; -$objPHPExcel->getActiveSheet()->getStyle('A1:B1')->getFont()->setBold(true); -//$objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setBold(true); -$objPHPExcel->getActiveSheet()->getStyle('A7:B7')->getFont()->setBold(true); -//$objPHPExcel->getActiveSheet()->getStyle('B7')->getFont()->setBold(true); - - -// Set header and footer. When no different headers for odd/even are used, odd header is assumed. -echo date('H:i:s') , " Set header/footer" , EOL; -$objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddHeader('&L&BPersonal cash register&RPrinted on &D'); -$objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddFooter('&L&B' . $objPHPExcel->getProperties()->getTitle() . '&RPage &P of &N'); - - -// Set page orientation and size -echo date('H:i:s') , " Set page orientation and size" , EOL; -$objPHPExcel->getActiveSheet()->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_PORTRAIT); -$objPHPExcel->getActiveSheet()->getPageSetup()->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4); - - -// Rename worksheet -echo date('H:i:s') , " Rename worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Invoice'); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Save Excel5 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/08conditionalformatting2.php b/htdocs/includes/phpoffice/phpexcel/Examples/08conditionalformatting2.php deleted file mode 100644 index bbe084a26fb..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/08conditionalformatting2.php +++ /dev/null @@ -1,136 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Create a first sheet, representing sales data -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet() - ->setCellValue('A1', '-0.5') - ->setCellValue('A2', '-0.25') - ->setCellValue('A3', '0.0') - ->setCellValue('A4', '0.25') - ->setCellValue('A5', '0.5') - ->setCellValue('A6', '0.75') - ->setCellValue('A7', '1.0') - ->setCellValue('A8', '1.25') -; - -$objPHPExcel->getActiveSheet()->getStyle('A1:A8') - ->getNumberFormat() - ->setFormatCode( - PHPExcel_Style_NumberFormat::FORMAT_PERCENTAGE_00 - ); - - -// Add conditional formatting -echo date('H:i:s') , " Add conditional formatting" , EOL; -$objConditional1 = new PHPExcel_Style_Conditional(); -$objConditional1->setConditionType(PHPExcel_Style_Conditional::CONDITION_CELLIS) - ->setOperatorType(PHPExcel_Style_Conditional::OPERATOR_LESSTHAN) - ->addCondition('0'); -$objConditional1->getStyle()->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_RED); - -$objConditional3 = new PHPExcel_Style_Conditional(); -$objConditional3->setConditionType(PHPExcel_Style_Conditional::CONDITION_CELLIS) - ->setOperatorType(PHPExcel_Style_Conditional::OPERATOR_GREATERTHANOREQUAL) - ->addCondition('1'); -$objConditional3->getStyle()->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_GREEN); - -$conditionalStyles = $objPHPExcel->getActiveSheet()->getStyle('A1')->getConditionalStyles(); -array_push($conditionalStyles, $objConditional1); -array_push($conditionalStyles, $objConditional3); -$objPHPExcel->getActiveSheet()->getStyle('A1')->setConditionalStyles($conditionalStyles); - - -// duplicate the conditional styles across a range of cells -echo date('H:i:s') , " Duplicate the conditional formatting across a range of cells" , EOL; -$objPHPExcel->getActiveSheet()->duplicateConditionalStyle( - $objPHPExcel->getActiveSheet()->getStyle('A1')->getConditionalStyles(), - 'A2:A8' - ); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Save Excel5 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/09pagebreaks.php b/htdocs/includes/phpoffice/phpexcel/Examples/09pagebreaks.php deleted file mode 100644 index 6b8c185e3aa..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/09pagebreaks.php +++ /dev/null @@ -1,134 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Create a first sheet -echo date('H:i:s') , " Add data and page breaks" , EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', "Firstname") - ->setCellValue('B1', "Lastname") - ->setCellValue('C1', "Phone") - ->setCellValue('D1', "Fax") - ->setCellValue('E1', "Is Client ?"); - - -// Add data -for ($i = 2; $i <= 50; $i++) { - $objPHPExcel->getActiveSheet()->setCellValue('A' . $i, "FName $i"); - $objPHPExcel->getActiveSheet()->setCellValue('B' . $i, "LName $i"); - $objPHPExcel->getActiveSheet()->setCellValue('C' . $i, "PhoneNo $i"); - $objPHPExcel->getActiveSheet()->setCellValue('D' . $i, "FaxNo $i"); - $objPHPExcel->getActiveSheet()->setCellValue('E' . $i, true); - - // Add page breaks every 10 rows - if ($i % 10 == 0) { - // Add a page break - $objPHPExcel->getActiveSheet()->setBreak( 'A' . $i, PHPExcel_Worksheet::BREAK_ROW ); - } -} - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setTitle('Printing Options'); - -// Set print headers -$objPHPExcel->getActiveSheet() - ->getHeaderFooter()->setOddHeader('&C&24&K0000FF&B&U&A'); -$objPHPExcel->getActiveSheet() - ->getHeaderFooter()->setEvenHeader('&C&24&K0000FF&B&U&A'); - -// Set print footers -$objPHPExcel->getActiveSheet() - ->getHeaderFooter()->setOddFooter('&R&D &T&C&F&LPage &P / &N'); -$objPHPExcel->getActiveSheet() - ->getHeaderFooter()->setEvenFooter('&L&D &T&C&F&RPage &P / &N'); - - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/10autofilter-selection-1.php b/htdocs/includes/phpoffice/phpexcel/Examples/10autofilter-selection-1.php deleted file mode 100644 index 7542a52955c..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/10autofilter-selection-1.php +++ /dev/null @@ -1,221 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); -date_default_timezone_set('Europe/London'); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s').' Create new PHPExcel object'.EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s').' Set document properties'.EOL; -$objPHPExcel->getProperties()->setCreator('Maarten Balliauw') - ->setLastModifiedBy('Maarten Balliauw') - ->setTitle('PHPExcel Test Document') - ->setSubject('PHPExcel Test Document') - ->setDescription('Test document for PHPExcel, generated using PHP classes.') - ->setKeywords('office PHPExcel php') - ->setCategory('Test result file'); - -// Create the worksheet -echo date('H:i:s').' Add data'.EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Financial Year') - ->setCellValue('B1', 'Financial Period') - ->setCellValue('C1', 'Country') - ->setCellValue('D1', 'Date') - ->setCellValue('E1', 'Sales Value') - ->setCellValue('F1', 'Expenditure') - ; -$startYear = $endYear = $currentYear = date('Y'); -$startYear--; -$endYear++; - -$years = range($startYear,$endYear); -$periods = range(1,12); -$countries = array( 'United States', 'UK', 'France', 'Germany', - 'Italy', 'Spain', 'Portugal', 'Japan' - ); - -$row = 2; -foreach($years as $year) { - foreach($periods as $period) { - foreach($countries as $country) { - $endDays = date('t',mktime(0,0,0,$period,1,$year)); - for($i = 1; $i <= $endDays; ++$i) { - $eDate = PHPExcel_Shared_Date::FormattedPHPToExcel( - $year, - $period, - $i - ); - $value = rand(500,1000) * (1 + rand(-0.25,+0.25)); - $salesValue = $invoiceValue = NULL; - $incomeOrExpenditure = rand(-1,1); - if ($incomeOrExpenditure == -1) { - $expenditure = rand(-500,-1000) * (1 + rand(-0.25,+0.25)); - $income = NULL; - } elseif ($incomeOrExpenditure == 1) { - $expenditure = rand(-500,-1000) * (1 + rand(-0.25,+0.25)); - $income = rand(500,1000) * (1 + rand(-0.25,+0.25));; - } else { - $expenditure = NULL; - $income = rand(500,1000) * (1 + rand(-0.25,+0.25));; - } - $dataArray = array( $year, - $period, - $country, - $eDate, - $income, - $expenditure, - ); - $objPHPExcel->getActiveSheet()->fromArray($dataArray, NULL, 'A'.$row++); - } - } - } -} -$row--; - - -// Set styling -echo date('H:i:s').' Set styling'.EOL; -$objPHPExcel->getActiveSheet()->getStyle('A1:F1')->getFont()->setBold(true); -$objPHPExcel->getActiveSheet()->getStyle('A1:F1')->getAlignment()->setWrapText(TRUE); -$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(12.5); -$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(10.5); -$objPHPExcel->getActiveSheet()->getStyle('D2:D'.$row)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD2); -$objPHPExcel->getActiveSheet()->getStyle('E2:F'.$row)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_USD_SIMPLE); -$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(14); -$objPHPExcel->getActiveSheet()->freezePane('A2'); - - - -// Set autofilter range -echo date('H:i:s').' Set autofilter range'.EOL; -// Always include the complete filter range! -// Excel does support setting only the caption -// row, but that's not a best practise... -$objPHPExcel->getActiveSheet()->setAutoFilter($objPHPExcel->getActiveSheet()->calculateWorksheetDimension()); - -// Set active filters -$autoFilter = $objPHPExcel->getActiveSheet()->getAutoFilter(); -echo date('H:i:s').' Set active filters'.EOL; -// Filter the Country column on a filter value of countries beginning with the letter U (or Japan) -// We use * as a wildcard, so specify as U* and using a wildcard requires customFilter -$autoFilter->getColumn('C') - ->setFilterType(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_CUSTOMFILTER) - ->createRule() - ->setRule( - PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL, - 'u*' - ) - ->setRuleType(PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_CUSTOMFILTER); -$autoFilter->getColumn('C') - ->createRule() - ->setRule( - PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL, - 'japan' - ) - ->setRuleType(PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_CUSTOMFILTER); -// Filter the Date column on a filter value of the first day of every period of the current year -// We us a dateGroup ruletype for this, although it is still a standard filter -foreach($periods as $period) { - $endDate = date('t',mktime(0,0,0,$period,1,$currentYear)); - - $autoFilter->getColumn('D') - ->setFilterType(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_FILTER) - ->createRule() - ->setRule( - PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL, - array( - 'year' => $currentYear, - 'month' => $period, - 'day' => $endDate - ) - ) - ->setRuleType(PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP); -} -// Display only sales values that are blank -// Standard filter, operator equals, and value of NULL -$autoFilter->getColumn('E') - ->setFilterType(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_FILTER) - ->createRule() - ->setRule( - PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL, - '' - ); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s').' Peak memory usage: '.(memory_get_peak_usage(true) / 1024 / 1024).' MB'.EOL; - -// Echo done -echo date('H:i:s').' Done writing files'.EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/10autofilter-selection-2.php b/htdocs/includes/phpoffice/phpexcel/Examples/10autofilter-selection-2.php deleted file mode 100644 index c89173f5c75..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/10autofilter-selection-2.php +++ /dev/null @@ -1,213 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); -date_default_timezone_set('Europe/London'); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s').' Create new PHPExcel object'.EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s').' Set document properties'.EOL; -$objPHPExcel->getProperties()->setCreator('Maarten Balliauw') - ->setLastModifiedBy('Maarten Balliauw') - ->setTitle('PHPExcel Test Document') - ->setSubject('PHPExcel Test Document') - ->setDescription('Test document for PHPExcel, generated using PHP classes.') - ->setKeywords('office PHPExcel php') - ->setCategory('Test result file'); - -// Create the worksheet -echo date('H:i:s').' Add data'.EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Financial Year') - ->setCellValue('B1', 'Financial Period') - ->setCellValue('C1', 'Country') - ->setCellValue('D1', 'Date') - ->setCellValue('E1', 'Sales Value') - ->setCellValue('F1', 'Expenditure') - ; -$startYear = $endYear = $currentYear = date('Y'); -$startYear--; -$endYear++; - -$years = range($startYear,$endYear); -$periods = range(1,12); -$countries = array( 'United States', 'UK', 'France', 'Germany', - 'Italy', 'Spain', 'Portugal', 'Japan' - ); - -$row = 2; -foreach($years as $year) { - foreach($periods as $period) { - foreach($countries as $country) { - $endDays = date('t',mktime(0,0,0,$period,1,$year)); - for($i = 1; $i <= $endDays; ++$i) { - $eDate = PHPExcel_Shared_Date::FormattedPHPToExcel( - $year, - $period, - $i - ); - $value = rand(500,1000) * (1 + rand(-0.25,+0.25)); - $salesValue = $invoiceValue = NULL; - $incomeOrExpenditure = rand(-1,1); - if ($incomeOrExpenditure == -1) { - $expenditure = rand(-500,-1000) * (1 + rand(-0.25,+0.25)); - $income = NULL; - } elseif ($incomeOrExpenditure == 1) { - $expenditure = rand(-500,-1000) * (1 + rand(-0.25,+0.25)); - $income = rand(500,1000) * (1 + rand(-0.25,+0.25));; - } else { - $expenditure = NULL; - $income = rand(500,1000) * (1 + rand(-0.25,+0.25));; - } - $dataArray = array( $year, - $period, - $country, - $eDate, - $income, - $expenditure, - ); - $objPHPExcel->getActiveSheet()->fromArray($dataArray, NULL, 'A'.$row++); - } - } - } -} -$row--; - - -// Set styling -echo date('H:i:s').' Set styling'.EOL; -$objPHPExcel->getActiveSheet()->getStyle('A1:F1')->getFont()->setBold(true); -$objPHPExcel->getActiveSheet()->getStyle('A1:F1')->getAlignment()->setWrapText(TRUE); -$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(12.5); -$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(10.5); -$objPHPExcel->getActiveSheet()->getStyle('D2:D'.$row)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD2); -$objPHPExcel->getActiveSheet()->getStyle('E2:F'.$row)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_USD_SIMPLE); -$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(14); -$objPHPExcel->getActiveSheet()->freezePane('A2'); - - - -// Set autofilter range -echo date('H:i:s').' Set autofilter range'.EOL; -// Always include the complete filter range! -// Excel does support setting only the caption -// row, but that's not a best practise... -$objPHPExcel->getActiveSheet()->setAutoFilter($objPHPExcel->getActiveSheet()->calculateWorksheetDimension()); - -// Set active filters -$autoFilter = $objPHPExcel->getActiveSheet()->getAutoFilter(); -echo date('H:i:s').' Set active filters'.EOL; -// Filter the Country column on a filter value of Germany -// As it's just a simple value filter, we can use FILTERTYPE_FILTER -$autoFilter->getColumn('C') - ->setFilterType(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_FILTER) - ->createRule() - ->setRule( - PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL, - 'Germany' - ); -// Filter the Date column on a filter value of the year to date -$autoFilter->getColumn('D') - ->setFilterType(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_DYNAMICFILTER) - ->createRule() - ->setRule( - PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL, - NULL, - PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_YEARTODATE - ) - ->setRuleType(PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMICFILTER); -// Display only sales values that are between 400 and 600 -$autoFilter->getColumn('E') - ->setFilterType(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_CUSTOMFILTER) - ->createRule() - ->setRule( - PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_GREATERTHANOREQUAL, - 400 - ) - ->setRuleType(PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_CUSTOMFILTER); -$autoFilter->getColumn('E') - ->setJoin(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_COLUMN_JOIN_AND) - ->createRule() - ->setRule( - PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_LESSTHANOREQUAL, - 600 - ) - ->setRuleType(PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_CUSTOMFILTER); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s').' Peak memory usage: '.(memory_get_peak_usage(true) / 1024 / 1024).' MB'.EOL; - -// Echo done -echo date('H:i:s').' Done writing files'.EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/10autofilter-selection-display.php b/htdocs/includes/phpoffice/phpexcel/Examples/10autofilter-selection-display.php deleted file mode 100644 index cf2b8acfd99..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/10autofilter-selection-display.php +++ /dev/null @@ -1,198 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); -date_default_timezone_set('Europe/London'); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s').' Create new PHPExcel object'.EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s').' Set document properties'.EOL; -$objPHPExcel->getProperties()->setCreator('Maarten Balliauw') - ->setLastModifiedBy('Maarten Balliauw') - ->setTitle('PHPExcel Test Document') - ->setSubject('PHPExcel Test Document') - ->setDescription('Test document for PHPExcel, generated using PHP classes.') - ->setKeywords('office PHPExcel php') - ->setCategory('Test result file'); - -// Create the worksheet -echo date('H:i:s').' Add data'.EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Financial Year') - ->setCellValue('B1', 'Financial Period') - ->setCellValue('C1', 'Country') - ->setCellValue('D1', 'Date') - ->setCellValue('E1', 'Sales Value') - ->setCellValue('F1', 'Expenditure') - ; -$startYear = $endYear = $currentYear = date('Y'); -$startYear--; -$endYear++; - -$years = range($startYear,$endYear); -$periods = range(1,12); -$countries = array( 'United States', 'UK', 'France', 'Germany', - 'Italy', 'Spain', 'Portugal', 'Japan' - ); - -$row = 2; -foreach($years as $year) { - foreach($periods as $period) { - foreach($countries as $country) { - $endDays = date('t',mktime(0,0,0,$period,1,$year)); - for($i = 1; $i <= $endDays; ++$i) { - $eDate = PHPExcel_Shared_Date::FormattedPHPToExcel( - $year, - $period, - $i - ); - $value = rand(500,1000) * (1 + rand(-0.25,+0.25)); - $salesValue = $invoiceValue = NULL; - $incomeOrExpenditure = rand(-1,1); - if ($incomeOrExpenditure == -1) { - $expenditure = rand(-500,-1000) * (1 + rand(-0.25,+0.25)); - $income = NULL; - } elseif ($incomeOrExpenditure == 1) { - $expenditure = rand(-500,-1000) * (1 + rand(-0.25,+0.25)); - $income = rand(500,1000) * (1 + rand(-0.25,+0.25));; - } else { - $expenditure = NULL; - $income = rand(500,1000) * (1 + rand(-0.25,+0.25));; - } - $dataArray = array( $year, - $period, - $country, - $eDate, - $income, - $expenditure, - ); - $objPHPExcel->getActiveSheet()->fromArray($dataArray, NULL, 'A'.$row++); - } - } - } -} -$row--; - - -// Set styling -echo date('H:i:s').' Set styling'.EOL; -$objPHPExcel->getActiveSheet()->getStyle('A1:F1')->getFont()->setBold(true); -$objPHPExcel->getActiveSheet()->getStyle('A1:F1')->getAlignment()->setWrapText(TRUE); -$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(12.5); -$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(10.5); -$objPHPExcel->getActiveSheet()->getStyle('D2:D'.$row)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD2); -$objPHPExcel->getActiveSheet()->getStyle('E2:F'.$row)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_USD_SIMPLE); -$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(14); -$objPHPExcel->getActiveSheet()->freezePane('A2'); - - - -// Set autofilter range -echo date('H:i:s').' Set autofilter range'.EOL; -// Always include the complete filter range! -// Excel does support setting only the caption -// row, but that's not a best practise... -$objPHPExcel->getActiveSheet()->setAutoFilter($objPHPExcel->getActiveSheet()->calculateWorksheetDimension()); - -// Set active filters -$autoFilter = $objPHPExcel->getActiveSheet()->getAutoFilter(); -echo date('H:i:s').' Set active filters'.EOL; -// Filter the Country column on a filter value of countries beginning with the letter U (or Japan) -// We use * as a wildcard, so specify as U* and using a wildcard requires customFilter -$autoFilter->getColumn('C') - ->setFilterType(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_CUSTOMFILTER) - ->createRule() - ->setRule( - PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL, - 'u*' - ) - ->setRuleType(PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_CUSTOMFILTER); -$autoFilter->getColumn('C') - ->createRule() - ->setRule( - PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL, - 'japan' - ) - ->setRuleType(PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_CUSTOMFILTER); -// Filter the Date column on a filter value of the first day of every period of the current year -// We us a dateGroup ruletype for this, although it is still a standard filter -foreach($periods as $period) { - $endDate = date('t',mktime(0,0,0,$period,1,$currentYear)); - - $autoFilter->getColumn('D') - ->setFilterType(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_FILTER) - ->createRule() - ->setRule( - PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL, - array( - 'year' => $currentYear, - 'month' => $period, - 'day' => $endDate - ) - ) - ->setRuleType(PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP); -} -// Display only sales values that are blank -// Standard filter, operator equals, and value of NULL -$autoFilter->getColumn('E') - ->setFilterType(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_FILTER) - ->createRule() - ->setRule( - PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL, - '' - ); - -// Execute filtering -echo date('H:i:s').' Execute filtering'.EOL; -$autoFilter->showHideRows(); - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Display Results of filtering -echo date('H:i:s').' Display filtered rows'.EOL; -foreach ($objPHPExcel->getActiveSheet()->getRowIterator() as $row) { - if ($objPHPExcel->getActiveSheet()->getRowDimension($row->getRowIndex())->getVisible()) { - echo ' Row number - ' , $row->getRowIndex() , ' '; - echo $objPHPExcel->getActiveSheet()->getCell('C'.$row->getRowIndex())->getValue(), ' '; - echo $objPHPExcel->getActiveSheet()->getCell('D'.$row->getRowIndex())->getFormattedValue(), ' '; - echo EOL; - } -} diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/10autofilter.php b/htdocs/includes/phpoffice/phpexcel/Examples/10autofilter.php deleted file mode 100644 index ea3f76343b8..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/10autofilter.php +++ /dev/null @@ -1,171 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - -// Create new PHPExcel object -echo date('H:i:s').' Create new PHPExcel object'.EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s').' Set document properties'.EOL; -$objPHPExcel->getProperties()->setCreator('Maarten Balliauw') - ->setLastModifiedBy('Maarten Balliauw') - ->setTitle('PHPExcel Test Document') - ->setSubject('PHPExcel Test Document') - ->setDescription('Test document for PHPExcel, generated using PHP classes.') - ->setKeywords('office PHPExcel php') - ->setCategory('Test result file'); - -// Create the worksheet -echo date('H:i:s').' Add data'.EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Year') - ->setCellValue('B1', 'Quarter') - ->setCellValue('C1', 'Country') - ->setCellValue('D1', 'Sales'); - -$dataArray = array(array('2010', 'Q1', 'United States', 790), - array('2010', 'Q2', 'United States', 730), - array('2010', 'Q3', 'United States', 860), - array('2010', 'Q4', 'United States', 850), - array('2011', 'Q1', 'United States', 800), - array('2011', 'Q2', 'United States', 700), - array('2011', 'Q3', 'United States', 900), - array('2011', 'Q4', 'United States', 950), - array('2010', 'Q1', 'Belgium', 380), - array('2010', 'Q2', 'Belgium', 390), - array('2010', 'Q3', 'Belgium', 420), - array('2010', 'Q4', 'Belgium', 460), - array('2011', 'Q1', 'Belgium', 400), - array('2011', 'Q2', 'Belgium', 350), - array('2011', 'Q3', 'Belgium', 450), - array('2011', 'Q4', 'Belgium', 500), - array('2010', 'Q1', 'UK', 690), - array('2010', 'Q2', 'UK', 610), - array('2010', 'Q3', 'UK', 620), - array('2010', 'Q4', 'UK', 600), - array('2011', 'Q1', 'UK', 720), - array('2011', 'Q2', 'UK', 650), - array('2011', 'Q3', 'UK', 580), - array('2011', 'Q4', 'UK', 510), - array('2010', 'Q1', 'France', 510), - array('2010', 'Q2', 'France', 490), - array('2010', 'Q3', 'France', 460), - array('2010', 'Q4', 'France', 590), - array('2011', 'Q1', 'France', 620), - array('2011', 'Q2', 'France', 650), - array('2011', 'Q3', 'France', 415), - array('2011', 'Q4', 'France', 570), - array('2010', 'Q1', 'Germany', 720), - array('2010', 'Q2', 'Germany', 680), - array('2010', 'Q3', 'Germany', 640), - array('2010', 'Q4', 'Germany', 660), - array('2011', 'Q1', 'Germany', 680), - array('2011', 'Q2', 'Germany', 620), - array('2011', 'Q3', 'Germany', 710), - array('2011', 'Q4', 'Germany', 690), - array('2010', 'Q1', 'Spain', 510), - array('2010', 'Q2', 'Spain', 490), - array('2010', 'Q3', 'Spain', 470), - array('2010', 'Q4', 'Spain', 420), - array('2011', 'Q1', 'Spain', 460), - array('2011', 'Q2', 'Spain', 390), - array('2011', 'Q3', 'Spain', 430), - array('2011', 'Q4', 'Spain', 415), - array('2010', 'Q1', 'Italy', 440), - array('2010', 'Q2', 'Italy', 410), - array('2010', 'Q3', 'Italy', 420), - array('2010', 'Q4', 'Italy', 450), - array('2011', 'Q1', 'Italy', 430), - array('2011', 'Q2', 'Italy', 370), - array('2011', 'Q3', 'Italy', 350), - array('2011', 'Q4', 'Italy', 335), - ); -$objPHPExcel->getActiveSheet()->fromArray($dataArray, NULL, 'A2'); - -// Set title row bold -echo date('H:i:s').' Set title row bold'.EOL; -$objPHPExcel->getActiveSheet()->getStyle('A1:D1')->getFont()->setBold(true); - -// Set autofilter -echo date('H:i:s').' Set autofilter'.EOL; -// Always include the complete filter range! -// Excel does support setting only the caption -// row, but that's not a best practise... -$objPHPExcel->getActiveSheet()->setAutoFilter($objPHPExcel->getActiveSheet()->calculateWorksheetDimension()); - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s').' Peak memory usage: '.(memory_get_peak_usage(true) / 1024 / 1024).' MB'.EOL; - -// Echo done -echo date('H:i:s').' Done writing files'.EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/11documentsecurity-xls.php b/htdocs/includes/phpoffice/phpexcel/Examples/11documentsecurity-xls.php deleted file mode 100644 index b104c7b8ac3..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/11documentsecurity-xls.php +++ /dev/null @@ -1,109 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Add some data -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Hello'); -$objPHPExcel->getActiveSheet()->setCellValue('B2', 'world!'); -$objPHPExcel->getActiveSheet()->setCellValue('C1', 'Hello'); -$objPHPExcel->getActiveSheet()->setCellValue('D2', 'world!'); - -// Rename worksheet -echo date('H:i:s') , " Rename worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Simple'); - - -// Set document security -echo date('H:i:s') , " Set document security" , EOL; -$objPHPExcel->getSecurity()->setLockWindows(true); -$objPHPExcel->getSecurity()->setLockStructure(true); -$objPHPExcel->getSecurity()->setWorkbookPassword("PHPExcel"); - - -// Set sheet security -echo date('H:i:s') , " Set sheet security" , EOL; -$objPHPExcel->getActiveSheet()->getProtection()->setPassword('PHPExcel'); -$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true); // This should be enabled in order to enable any of the following! -$objPHPExcel->getActiveSheet()->getProtection()->setSort(true); -$objPHPExcel->getActiveSheet()->getProtection()->setInsertRows(true); -$objPHPExcel->getActiveSheet()->getProtection()->setFormatCells(true); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/11documentsecurity.php b/htdocs/includes/phpoffice/phpexcel/Examples/11documentsecurity.php deleted file mode 100644 index 96f5d99300d..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/11documentsecurity.php +++ /dev/null @@ -1,109 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Add some data -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Hello'); -$objPHPExcel->getActiveSheet()->setCellValue('B2', 'world!'); -$objPHPExcel->getActiveSheet()->setCellValue('C1', 'Hello'); -$objPHPExcel->getActiveSheet()->setCellValue('D2', 'world!'); - -// Rename worksheet -echo date('H:i:s') , " Rename worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Simple'); - - -// Set document security -echo date('H:i:s') , " Set document security" , EOL; -$objPHPExcel->getSecurity()->setLockWindows(true); -$objPHPExcel->getSecurity()->setLockStructure(true); -$objPHPExcel->getSecurity()->setWorkbookPassword("PHPExcel"); - - -// Set sheet security -echo date('H:i:s') , " Set sheet security" , EOL; -$objPHPExcel->getActiveSheet()->getProtection()->setPassword('PHPExcel'); -$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true); // This should be enabled in order to enable any of the following! -$objPHPExcel->getActiveSheet()->getProtection()->setSort(true); -$objPHPExcel->getActiveSheet()->getProtection()->setInsertRows(true); -$objPHPExcel->getActiveSheet()->getProtection()->setFormatCells(true); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/12cellProtection.php b/htdocs/includes/phpoffice/phpexcel/Examples/12cellProtection.php deleted file mode 100644 index 77bfee4ce4b..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/12cellProtection.php +++ /dev/null @@ -1,107 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Mark Baker") - ->setLastModifiedBy("Mark Baker") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Add some data -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Crouching'); -$objPHPExcel->getActiveSheet()->setCellValue('B1', 'Tiger'); -$objPHPExcel->getActiveSheet()->setCellValue('A2', 'Hidden'); -$objPHPExcel->getActiveSheet()->setCellValue('B2', 'Dragon'); - -// Rename worksheet -echo date('H:i:s') , " Rename worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Simple'); - - -// Set document security -echo date('H:i:s') , " Set cell protection" , EOL; - - -// Set sheet security -echo date('H:i:s') , " Set sheet security" , EOL; -$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true); -$objPHPExcel->getActiveSheet() - ->getStyle('A2:B2') - ->getProtection()->setLocked( - PHPExcel_Style_Protection::PROTECTION_UNPROTECTED - ); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/13calculation.php b/htdocs/includes/phpoffice/phpexcel/Examples/13calculation.php deleted file mode 100644 index 01e63ea7751..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/13calculation.php +++ /dev/null @@ -1,235 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); -date_default_timezone_set('Europe/London'); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); -mt_srand(1234567890); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// List functions -echo date('H:i:s') , " List implemented functions" , EOL; -$objCalc = PHPExcel_Calculation::getInstance(); -print_r($objCalc->listFunctionNames()); - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Add some data, we will use some formulas here -echo date('H:i:s') , " Add some data and formulas" , EOL; -$objPHPExcel->getActiveSheet()->setCellValue('A14', 'Count:') - ->setCellValue('A15', 'Sum:') - ->setCellValue('A16', 'Max:') - ->setCellValue('A17', 'Min:') - ->setCellValue('A18', 'Average:') - ->setCellValue('A19', 'Median:') - ->setCellValue('A20', 'Mode:'); - -$objPHPExcel->getActiveSheet()->setCellValue('A22', 'CountA:') - ->setCellValue('A23', 'MaxA:') - ->setCellValue('A24', 'MinA:'); - -$objPHPExcel->getActiveSheet()->setCellValue('A26', 'StDev:') - ->setCellValue('A27', 'StDevA:') - ->setCellValue('A28', 'StDevP:') - ->setCellValue('A29', 'StDevPA:'); - -$objPHPExcel->getActiveSheet()->setCellValue('A31', 'DevSq:') - ->setCellValue('A32', 'Var:') - ->setCellValue('A33', 'VarA:') - ->setCellValue('A34', 'VarP:') - ->setCellValue('A35', 'VarPA:'); - -$objPHPExcel->getActiveSheet()->setCellValue('A37', 'Date:'); - - -$objPHPExcel->getActiveSheet()->setCellValue('B1', 'Range 1') - ->setCellValue('B2', 2) - ->setCellValue('B3', 8) - ->setCellValue('B4', 10) - ->setCellValue('B5', True) - ->setCellValue('B6', False) - ->setCellValue('B7', 'Text String') - ->setCellValue('B9', '22') - ->setCellValue('B10', 4) - ->setCellValue('B11', 6) - ->setCellValue('B12', 12); - -$objPHPExcel->getActiveSheet()->setCellValue('B14', '=COUNT(B2:B12)') - ->setCellValue('B15', '=SUM(B2:B12)') - ->setCellValue('B16', '=MAX(B2:B12)') - ->setCellValue('B17', '=MIN(B2:B12)') - ->setCellValue('B18', '=AVERAGE(B2:B12)') - ->setCellValue('B19', '=MEDIAN(B2:B12)') - ->setCellValue('B20', '=MODE(B2:B12)'); - -$objPHPExcel->getActiveSheet()->setCellValue('B22', '=COUNTA(B2:B12)') - ->setCellValue('B23', '=MAXA(B2:B12)') - ->setCellValue('B24', '=MINA(B2:B12)'); - -$objPHPExcel->getActiveSheet()->setCellValue('B26', '=STDEV(B2:B12)') - ->setCellValue('B27', '=STDEVA(B2:B12)') - ->setCellValue('B28', '=STDEVP(B2:B12)') - ->setCellValue('B29', '=STDEVPA(B2:B12)'); - -$objPHPExcel->getActiveSheet()->setCellValue('B31', '=DEVSQ(B2:B12)') - ->setCellValue('B32', '=VAR(B2:B12)') - ->setCellValue('B33', '=VARA(B2:B12)') - ->setCellValue('B34', '=VARP(B2:B12)') - ->setCellValue('B35', '=VARPA(B2:B12)'); - -$objPHPExcel->getActiveSheet()->setCellValue('B37', '=DATE(2007, 12, 21)') - ->setCellValue('B38', '=DATEDIF( DATE(2007, 12, 21), DATE(2007, 12, 22), "D" )') - ->setCellValue('B39', '=DATEVALUE("01-Feb-2006 10:06 AM")') - ->setCellValue('B40', '=DAY( DATE(2006, 1, 2) )') - ->setCellValue('B41', '=DAYS360( DATE(2002, 2, 3), DATE(2005, 5, 31) )'); - - -$objPHPExcel->getActiveSheet()->setCellValue('C1', 'Range 2') - ->setCellValue('C2', 1) - ->setCellValue('C3', 2) - ->setCellValue('C4', 2) - ->setCellValue('C5', 3) - ->setCellValue('C6', 3) - ->setCellValue('C7', 3) - ->setCellValue('C8', '0') - ->setCellValue('C9', 4) - ->setCellValue('C10', 4) - ->setCellValue('C11', 4) - ->setCellValue('C12', 4); - -$objPHPExcel->getActiveSheet()->setCellValue('C14', '=COUNT(C2:C12)') - ->setCellValue('C15', '=SUM(C2:C12)') - ->setCellValue('C16', '=MAX(C2:C12)') - ->setCellValue('C17', '=MIN(C2:C12)') - ->setCellValue('C18', '=AVERAGE(C2:C12)') - ->setCellValue('C19', '=MEDIAN(C2:C12)') - ->setCellValue('C20', '=MODE(C2:C12)'); - -$objPHPExcel->getActiveSheet()->setCellValue('C22', '=COUNTA(C2:C12)') - ->setCellValue('C23', '=MAXA(C2:C12)') - ->setCellValue('C24', '=MINA(C2:C12)'); - -$objPHPExcel->getActiveSheet()->setCellValue('C26', '=STDEV(C2:C12)') - ->setCellValue('C27', '=STDEVA(C2:C12)') - ->setCellValue('C28', '=STDEVP(C2:C12)') - ->setCellValue('C29', '=STDEVPA(C2:C12)'); - -$objPHPExcel->getActiveSheet()->setCellValue('C31', '=DEVSQ(C2:C12)') - ->setCellValue('C32', '=VAR(C2:C12)') - ->setCellValue('C33', '=VARA(C2:C12)') - ->setCellValue('C34', '=VARP(C2:C12)') - ->setCellValue('C35', '=VARPA(C2:C12)'); - - -$objPHPExcel->getActiveSheet()->setCellValue('D1', 'Range 3') - ->setCellValue('D2', 2) - ->setCellValue('D3', 3) - ->setCellValue('D4', 4); - -$objPHPExcel->getActiveSheet()->setCellValue('D14', '=((D2 * D3) + D4) & " should be 10"'); - -$objPHPExcel->getActiveSheet()->setCellValue('E12', 'Other functions') - ->setCellValue('E14', '=PI()') - ->setCellValue('E15', '=RAND()') - ->setCellValue('E16', '=RANDBETWEEN(5, 10)'); - -$objPHPExcel->getActiveSheet()->setCellValue('E17', 'Count of both ranges:') - ->setCellValue('F17', '=COUNT(B2:C12)'); - -$objPHPExcel->getActiveSheet()->setCellValue('E18', 'Total of both ranges:') - ->setCellValue('F18', '=SUM(B2:C12)'); - -$objPHPExcel->getActiveSheet()->setCellValue('E19', 'Maximum of both ranges:') - ->setCellValue('F19', '=MAX(B2:C12)'); - -$objPHPExcel->getActiveSheet()->setCellValue('E20', 'Minimum of both ranges:') - ->setCellValue('F20', '=MIN(B2:C12)'); - -$objPHPExcel->getActiveSheet()->setCellValue('E21', 'Average of both ranges:') - ->setCellValue('F21', '=AVERAGE(B2:C12)'); - -$objPHPExcel->getActiveSheet()->setCellValue('E22', 'Median of both ranges:') - ->setCellValue('F22', '=MEDIAN(B2:C12)'); - -$objPHPExcel->getActiveSheet()->setCellValue('E23', 'Mode of both ranges:') - ->setCellValue('F23', '=MODE(B2:C12)'); - - -// Calculated data -echo date('H:i:s') , " Calculated data" , EOL; -for ($col = 'B'; $col != 'G'; ++$col) { - for($row = 14; $row <= 41; ++$row) { - if ((!is_null($formula = $objPHPExcel->getActiveSheet()->getCell($col.$row)->getValue())) && - ($formula[0] == '=')) { - echo 'Value of ' , $col , $row , ' [' , $formula , ']: ' , - $objPHPExcel->getActiveSheet()->getCell($col.$row)->getCalculatedValue() . EOL; - } - } -} - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); - -// -// If we set Pre Calculated Formulas to true then PHPExcel will calculate all formulae in the -// workbook before saving. This adds time and memory overhead, and can cause some problems with formulae -// using functions or features (such as array formulae) that aren't yet supported by the calculation engine -// If the value is false (the default) for the Excel2007 Writer, then MS Excel (or the application used to -// open the file) will need to recalculate values itself to guarantee that the correct results are available. -// -//$objWriter->setPreCalculateFormulas(true); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/14excel5.php b/htdocs/includes/phpoffice/phpexcel/Examples/14excel5.php deleted file mode 100644 index 3fd3d69f328..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/14excel5.php +++ /dev/null @@ -1,63 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -include "05featuredemo.inc.php"; - -/** PHPExcel_IOFactory */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel/IOFactory.php'; - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/15datavalidation-xls.php b/htdocs/includes/phpoffice/phpexcel/Examples/15datavalidation-xls.php deleted file mode 100644 index 2f8fa5ee9d8..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/15datavalidation-xls.php +++ /dev/null @@ -1,142 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); -date_default_timezone_set('Europe/London'); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Create a first sheet -echo date('H:i:s') , " Add data" , EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', "Cell B3 and B5 contain data validation...") - ->setCellValue('A3', "Number:") - ->setCellValue('B3', "10") - ->setCellValue('A5', "List:") - ->setCellValue('B5', "Item A") - ->setCellValue('A7', "List #2:") - ->setCellValue('B7', "Item #2") - ->setCellValue('D2', "Item #1") - ->setCellValue('D3', "Item #2") - ->setCellValue('D4', "Item #3") - ->setCellValue('D5', "Item #4") - ->setCellValue('D6', "Item #5") - ; - - -// Set data validation -echo date('H:i:s') , " Set data validation" , EOL; -$objValidation = $objPHPExcel->getActiveSheet()->getCell('B3')->getDataValidation(); -$objValidation->setType( PHPExcel_Cell_DataValidation::TYPE_WHOLE ); -$objValidation->setErrorStyle( PHPExcel_Cell_DataValidation::STYLE_STOP ); -$objValidation->setAllowBlank(true); -$objValidation->setShowInputMessage(true); -$objValidation->setShowErrorMessage(true); -$objValidation->setErrorTitle('Input error'); -$objValidation->setError('Only numbers between 10 and 20 are allowed!'); -$objValidation->setPromptTitle('Allowed input'); -$objValidation->setPrompt('Only numbers between 10 and 20 are allowed.'); -$objValidation->setFormula1(10); -$objValidation->setFormula2(20); - -$objValidation = $objPHPExcel->getActiveSheet()->getCell('B5')->getDataValidation(); -$objValidation->setType( PHPExcel_Cell_DataValidation::TYPE_LIST ); -$objValidation->setErrorStyle( PHPExcel_Cell_DataValidation::STYLE_INFORMATION ); -$objValidation->setAllowBlank(false); -$objValidation->setShowInputMessage(true); -$objValidation->setShowErrorMessage(true); -$objValidation->setShowDropDown(true); -$objValidation->setErrorTitle('Input error'); -$objValidation->setError('Value is not in list.'); -$objValidation->setPromptTitle('Pick from list'); -$objValidation->setPrompt('Please pick a value from the drop-down list.'); -$objValidation->setFormula1('"Item A,Item B,Item C"'); // Make sure to put the list items between " and " !!! - -$objValidation = $objPHPExcel->getActiveSheet()->getCell('B7')->getDataValidation(); -$objValidation->setType( PHPExcel_Cell_DataValidation::TYPE_LIST ); -$objValidation->setErrorStyle( PHPExcel_Cell_DataValidation::STYLE_INFORMATION ); -$objValidation->setAllowBlank(false); -$objValidation->setShowInputMessage(true); -$objValidation->setShowErrorMessage(true); -$objValidation->setShowDropDown(true); -$objValidation->setErrorTitle('Input error'); -$objValidation->setError('Value is not in list.'); -$objValidation->setPromptTitle('Pick from list'); -$objValidation->setPrompt('Please pick a value from the drop-down list.'); -$objValidation->setFormula1('$D$2:$D$6'); // Make sure NOT to put a range of cells or a formula between " and " !!! - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/15datavalidation.php b/htdocs/includes/phpoffice/phpexcel/Examples/15datavalidation.php deleted file mode 100644 index 932bacc6fa0..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/15datavalidation.php +++ /dev/null @@ -1,143 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); -date_default_timezone_set('Europe/London'); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Create a first sheet -echo date('H:i:s') , " Add data" , EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', "Cell B3 and B5 contain data validation...") - ->setCellValue('A3', "Number:") - ->setCellValue('B3', "10") - ->setCellValue('A5', "List:") - ->setCellValue('B5', "Item A") - ->setCellValue('A7', "List #2:") - ->setCellValue('B7', "Item #2") - ->setCellValue('D2', "Item #1") - ->setCellValue('D3', "Item #2") - ->setCellValue('D4', "Item #3") - ->setCellValue('D5', "Item #4") - ->setCellValue('D6', "Item #5") - ; - - -// Set data validation -echo date('H:i:s') , " Set data validation" , EOL; -$objValidation = $objPHPExcel->getActiveSheet()->getCell('B3')->getDataValidation(); -$objValidation->setType( PHPExcel_Cell_DataValidation::TYPE_WHOLE ); -$objValidation->setErrorStyle( PHPExcel_Cell_DataValidation::STYLE_STOP ); -$objValidation->setAllowBlank(true); -$objValidation->setShowInputMessage(true); -$objValidation->setShowErrorMessage(true); -$objValidation->setErrorTitle('Input error'); -$objValidation->setError('Only numbers between 10 and 20 are allowed!'); -$objValidation->setPromptTitle('Allowed input'); -$objValidation->setPrompt('Only numbers between 10 and 20 are allowed.'); -$objValidation->setFormula1(10); -$objValidation->setFormula2(20); - -$objValidation = $objPHPExcel->getActiveSheet()->getCell('B5')->getDataValidation(); -$objValidation->setType( PHPExcel_Cell_DataValidation::TYPE_LIST ); -$objValidation->setErrorStyle( PHPExcel_Cell_DataValidation::STYLE_INFORMATION ); -$objValidation->setAllowBlank(false); -$objValidation->setShowInputMessage(true); -$objValidation->setShowErrorMessage(true); -$objValidation->setShowDropDown(true); -$objValidation->setErrorTitle('Input error'); -$objValidation->setError('Value is not in list.'); -$objValidation->setPromptTitle('Pick from list'); -$objValidation->setPrompt('Please pick a value from the drop-down list.'); -$objValidation->setFormula1('"Item A,Item B,Item C"'); // Make sure to put the list items between " and " if your list is simply a comma-separated list of values !!! - - -$objValidation = $objPHPExcel->getActiveSheet()->getCell('B7')->getDataValidation(); -$objValidation->setType( PHPExcel_Cell_DataValidation::TYPE_LIST ); -$objValidation->setErrorStyle( PHPExcel_Cell_DataValidation::STYLE_INFORMATION ); -$objValidation->setAllowBlank(false); -$objValidation->setShowInputMessage(true); -$objValidation->setShowErrorMessage(true); -$objValidation->setShowDropDown(true); -$objValidation->setErrorTitle('Input error'); -$objValidation->setError('Value is not in list.'); -$objValidation->setPromptTitle('Pick from list'); -$objValidation->setPrompt('Please pick a value from the drop-down list.'); -$objValidation->setFormula1('$D$2:$D$6'); // Make sure NOT to put a range of cells or a formula between " and " !!! - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/16csv.php b/htdocs/includes/phpoffice/phpexcel/Examples/16csv.php deleted file mode 100644 index 71ebfd00dcc..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/16csv.php +++ /dev/null @@ -1,107 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); -date_default_timezone_set('Europe/London'); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -include "05featuredemo.inc.php"; - -/** PHPExcel_IOFactory */ -require_once '../Classes/PHPExcel/IOFactory.php'; - - -echo date('H:i:s') , " Write to CSV format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'CSV')->setDelimiter(',') - ->setEnclosure('"') - ->setLineEnding("\r\n") - ->setSheetIndex(0) - ->save(str_replace('.php', '.csv', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; -echo date('H:i:s') , " File written to " , str_replace('.php', '.csv', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -echo date('H:i:s') , " Read from CSV format" , EOL; -$callStartTime = microtime(true); -$objReader = PHPExcel_IOFactory::createReader('CSV')->setDelimiter(',') - ->setEnclosure('"') - ->setLineEnding("\r\n") - ->setSheetIndex(0); -$objPHPExcelFromCSV = $objReader->load(str_replace('.php', '.csv', __FILE__)); - -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; -echo 'Call time to reload Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter2007 = PHPExcel_IOFactory::createWriter($objPHPExcelFromCSV, 'Excel2007'); -$objWriter2007->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -echo date('H:i:s') , " Write to CSV format" , EOL; -$callStartTime = microtime(true); - -$objWriterCSV = PHPExcel_IOFactory::createWriter($objPHPExcelFromCSV, 'CSV'); -$objWriterCSV->setExcelCompatibility(true); -$objWriterCSV->save(str_replace('.php', '_excel.csv', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; -echo date('H:i:s') , " File written to " , str_replace('.php', '_excel.csv', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/17html.php b/htdocs/includes/phpoffice/phpexcel/Examples/17html.php deleted file mode 100644 index 0dc825b04a1..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/17html.php +++ /dev/null @@ -1,64 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); -date_default_timezone_set('Europe/London'); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -include "05featuredemo.inc.php"; - -/** PHPExcel_IOFactory */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel/IOFactory.php'; - - -echo date('H:i:s') , " Write to HTML format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'HTML'); -$objWriter->setSheetIndex(0); -//$objWriter->setImagesRoot('http://www.example.com'); -$objWriter->save(str_replace('.php', '.htm', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; -echo date('H:i:s') , " File written to " , str_replace('.php', '.htm', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/18extendedcalculation.php b/htdocs/includes/phpoffice/phpexcel/Examples/18extendedcalculation.php deleted file mode 100644 index 3c6fcb49227..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/18extendedcalculation.php +++ /dev/null @@ -1,108 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); -date_default_timezone_set('Europe/London'); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -/** PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// List functions -echo date('H:i:s') . " List implemented functions\n"; -$objCalc = PHPExcel_Calculation::getInstance(); -print_r($objCalc->listFunctionNames()); - -// Create new PHPExcel object -echo date('H:i:s') . " Create new PHPExcel object\n"; -$objPHPExcel = new PHPExcel(); - -// Add some data, we will use some formulas here -echo date('H:i:s') . " Add some data\n"; -$objPHPExcel->getActiveSheet()->setCellValue('A14', 'Count:'); - -$objPHPExcel->getActiveSheet()->setCellValue('B1', 'Range 1'); -$objPHPExcel->getActiveSheet()->setCellValue('B2', 2); -$objPHPExcel->getActiveSheet()->setCellValue('B3', 8); -$objPHPExcel->getActiveSheet()->setCellValue('B4', 10); -$objPHPExcel->getActiveSheet()->setCellValue('B5', True); -$objPHPExcel->getActiveSheet()->setCellValue('B6', False); -$objPHPExcel->getActiveSheet()->setCellValue('B7', 'Text String'); -$objPHPExcel->getActiveSheet()->setCellValue('B9', '22'); -$objPHPExcel->getActiveSheet()->setCellValue('B10', 4); -$objPHPExcel->getActiveSheet()->setCellValue('B11', 6); -$objPHPExcel->getActiveSheet()->setCellValue('B12', 12); - -$objPHPExcel->getActiveSheet()->setCellValue('B14', '=COUNT(B2:B12)'); - -$objPHPExcel->getActiveSheet()->setCellValue('C1', 'Range 2'); -$objPHPExcel->getActiveSheet()->setCellValue('C2', 1); -$objPHPExcel->getActiveSheet()->setCellValue('C3', 2); -$objPHPExcel->getActiveSheet()->setCellValue('C4', 2); -$objPHPExcel->getActiveSheet()->setCellValue('C5', 3); -$objPHPExcel->getActiveSheet()->setCellValue('C6', 3); -$objPHPExcel->getActiveSheet()->setCellValue('C7', 3); -$objPHPExcel->getActiveSheet()->setCellValue('C8', '0'); -$objPHPExcel->getActiveSheet()->setCellValue('C9', 4); -$objPHPExcel->getActiveSheet()->setCellValue('C10', 4); -$objPHPExcel->getActiveSheet()->setCellValue('C11', 4); -$objPHPExcel->getActiveSheet()->setCellValue('C12', 4); - -$objPHPExcel->getActiveSheet()->setCellValue('C14', '=COUNT(C2:C12)'); - -$objPHPExcel->getActiveSheet()->setCellValue('D1', 'Range 3'); -$objPHPExcel->getActiveSheet()->setCellValue('D2', 2); -$objPHPExcel->getActiveSheet()->setCellValue('D3', 3); -$objPHPExcel->getActiveSheet()->setCellValue('D4', 4); - -$objPHPExcel->getActiveSheet()->setCellValue('D5', '=((D2 * D3) + D4) & " should be 10"'); - -$objPHPExcel->getActiveSheet()->setCellValue('E1', 'Other functions'); -$objPHPExcel->getActiveSheet()->setCellValue('E2', '=PI()'); -$objPHPExcel->getActiveSheet()->setCellValue('E3', '=RAND()'); -$objPHPExcel->getActiveSheet()->setCellValue('E4', '=RANDBETWEEN(5, 10)'); - -$objPHPExcel->getActiveSheet()->setCellValue('E14', 'Count of both ranges:'); -$objPHPExcel->getActiveSheet()->setCellValue('F14', '=COUNT(B2:C12)'); - -// Calculated data -echo date('H:i:s') . " Calculated data\n"; -echo 'Value of B14 [=COUNT(B2:B12)]: ' . $objPHPExcel->getActiveSheet()->getCell('B14')->getCalculatedValue() . "\r\n"; - - -// Echo memory peak usage -echo date('H:i:s') . " Peak memory usage: " . (memory_get_peak_usage(true) / 1024 / 1024) . " MB\r\n"; - -// Echo done -echo date('H:i:s') . " Done" , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/19namedrange.php b/htdocs/includes/phpoffice/phpexcel/Examples/19namedrange.php deleted file mode 100644 index acea22b6d72..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/19namedrange.php +++ /dev/null @@ -1,129 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); -date_default_timezone_set('Europe/London'); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Add some data -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Firstname:') - ->setCellValue('A2', 'Lastname:') - ->setCellValue('A3', 'Fullname:') - ->setCellValue('B1', 'Maarten') - ->setCellValue('B2', 'Balliauw') - ->setCellValue('B3', '=B1 & " " & B2'); - -// Define named ranges -echo date('H:i:s') , " Define named ranges" , EOL; -$objPHPExcel->addNamedRange( new PHPExcel_NamedRange('PersonName', $objPHPExcel->getActiveSheet(), 'B1') ); -$objPHPExcel->addNamedRange( new PHPExcel_NamedRange('PersonLN', $objPHPExcel->getActiveSheet(), 'B2') ); - -// Rename named ranges -echo date('H:i:s') , " Rename named ranges" , EOL; -$objPHPExcel->getNamedRange('PersonName')->setName('PersonFN'); - -// Rename worksheet -echo date('H:i:s') , " Rename worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Person'); - - -// Create a new worksheet, after the default sheet -echo date('H:i:s') , " Create new Worksheet object" , EOL; -$objPHPExcel->createSheet(); - -// Add some data to the second sheet, resembling some different data types -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->setActiveSheetIndex(1); -$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Firstname:') - ->setCellValue('A2', 'Lastname:') - ->setCellValue('A3', 'Fullname:') - ->setCellValue('B1', '=PersonFN') - ->setCellValue('B2', '=PersonLN') - ->setCellValue('B3', '=PersonFN & " " & PersonLN'); - -// Resolve range -echo date('H:i:s') , " Resolve range" , EOL; -echo 'Cell B1 {=PersonFN}: ' , $objPHPExcel->getActiveSheet()->getCell('B1')->getCalculatedValue() , EOL; -echo 'Cell B3 {=PersonFN & " " & PersonLN}: ' , $objPHPExcel->getActiveSheet()->getCell('B3')->getCalculatedValue() , EOL; -echo 'Cell Person!B1: ' , $objPHPExcel->getActiveSheet()->getCell('Person!B1')->getCalculatedValue() , EOL; - -// Rename worksheet -echo date('H:i:s') , " Rename worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Person (cloned)'); - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/20readexcel5.php b/htdocs/includes/phpoffice/phpexcel/Examples/20readexcel5.php deleted file mode 100644 index 98eff9ec1b1..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/20readexcel5.php +++ /dev/null @@ -1,79 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); -date_default_timezone_set('Europe/London'); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel_IOFactory */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel/IOFactory.php'; - - -if (!file_exists("14excel5.xls")) { - exit("Please run 14excel5.php first.\n"); -} - -echo date('H:i:s') , " Load workbook from Excel5 file" , EOL; -$callStartTime = microtime(true); - -$objPHPExcel = PHPExcel_IOFactory::load("14excel5.xls"); - -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo 'Call time to load Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done reading file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/21pdf.php b/htdocs/includes/phpoffice/phpexcel/Examples/21pdf.php deleted file mode 100644 index 11c56b2caf0..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/21pdf.php +++ /dev/null @@ -1,94 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); -date_default_timezone_set('Europe/London'); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -include "05featuredemo.inc.php"; - -/** PHPExcel_IOFactory */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel/IOFactory.php'; - - -// Change these values to select the Rendering library that you wish to use -// and its directory location on your server -//$rendererName = PHPExcel_Settings::PDF_RENDERER_TCPDF; -//$rendererName = PHPExcel_Settings::PDF_RENDERER_MPDF; -$rendererName = PHPExcel_Settings::PDF_RENDERER_DOMPDF; -//$rendererLibrary = 'tcPDF5.9'; -//$rendererLibrary = 'mPDF5.4'; -$rendererLibrary = 'domPDF0.6.0beta3'; -$rendererLibraryPath = '/php/libraries/PDF/' . $rendererLibrary; - - -echo date('H:i:s') , " Hide grid lines" , EOL; -$objPHPExcel->getActiveSheet()->setShowGridLines(false); - -echo date('H:i:s') , " Set orientation to landscape" , EOL; -$objPHPExcel->getActiveSheet()->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE); - - -echo date('H:i:s') , " Write to PDF format using {$rendererName}" , EOL; - -if (!PHPExcel_Settings::setPdfRenderer( - $rendererName, - $rendererLibraryPath - )) { - die( - 'NOTICE: Please set the $rendererName and $rendererLibraryPath values' . - EOL . - 'at the top of this script as appropriate for your directory structure' - ); -} - - -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'PDF'); -$objWriter->setSheetIndex(0); -$objWriter->save(str_replace('.php', '_'.$rendererName.'.pdf', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; -echo date('H:i:s') , " File written to " , str_replace('.php', '_'.$rendererName.'.pdf', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/22heavilyformatted.php b/htdocs/includes/phpoffice/phpexcel/Examples/22heavilyformatted.php deleted file mode 100644 index c17bc8683ae..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/22heavilyformatted.php +++ /dev/null @@ -1,116 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); -date_default_timezone_set('Europe/London'); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Add some data -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->setActiveSheetIndex(0); - -$objPHPExcel->getActiveSheet()->getStyle('A1:T100')->applyFromArray( - array('fill' => array( - 'type' => PHPExcel_Style_Fill::FILL_SOLID, - 'color' => array('argb' => 'FFCCFFCC') - ), - 'borders' => array( - 'bottom' => array('style' => PHPExcel_Style_Border::BORDER_THIN), - 'right' => array('style' => PHPExcel_Style_Border::BORDER_MEDIUM) - ) - ) - ); - -$objPHPExcel->getActiveSheet()->getStyle('C5:R95')->applyFromArray( - array('fill' => array( - 'type' => PHPExcel_Style_Fill::FILL_SOLID, - 'color' => array('argb' => 'FFFFFF00') - ), - ) - ); - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/23sharedstyles.php b/htdocs/includes/phpoffice/phpexcel/Examples/23sharedstyles.php deleted file mode 100644 index 652b4ed2f27..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/23sharedstyles.php +++ /dev/null @@ -1,124 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); -date_default_timezone_set('Europe/London'); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Add some data -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->setActiveSheetIndex(0); - -$sharedStyle1 = new PHPExcel_Style(); -$sharedStyle2 = new PHPExcel_Style(); - -$sharedStyle1->applyFromArray( - array('fill' => array( - 'type' => PHPExcel_Style_Fill::FILL_SOLID, - 'color' => array('argb' => 'FFCCFFCC') - ), - 'borders' => array( - 'bottom' => array('style' => PHPExcel_Style_Border::BORDER_THIN), - 'right' => array('style' => PHPExcel_Style_Border::BORDER_MEDIUM) - ) - )); - -$sharedStyle2->applyFromArray( - array('fill' => array( - 'type' => PHPExcel_Style_Fill::FILL_SOLID, - 'color' => array('argb' => 'FFFFFF00') - ), - 'borders' => array( - 'bottom' => array('style' => PHPExcel_Style_Border::BORDER_THIN), - 'right' => array('style' => PHPExcel_Style_Border::BORDER_MEDIUM) - ) - )); - -$objPHPExcel->getActiveSheet()->setSharedStyle($sharedStyle1, "A1:T100"); -$objPHPExcel->getActiveSheet()->setSharedStyle($sharedStyle2, "C5:R95"); - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/24readfilter.php b/htdocs/includes/phpoffice/phpexcel/Examples/24readfilter.php deleted file mode 100644 index afa6d0c416c..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/24readfilter.php +++ /dev/null @@ -1,77 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -/** PHPExcel_IOFactory */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel/IOFactory.php'; - - -// Check prerequisites -if (!file_exists("06largescale.xlsx")) { - exit("Please run 06largescale.php first.\n"); -} - -class MyReadFilter implements PHPExcel_Reader_IReadFilter -{ - public function readCell($column, $row, $worksheetName = '') { - // Read title row and rows 20 - 30 - if ($row == 1 || ($row >= 20 && $row <= 30)) { - return true; - } - - return false; - } -} - - -echo date('H:i:s') , " Load from Excel2007 file" , EOL; -$objReader = PHPExcel_IOFactory::createReader('Excel2007'); -$objReader->setReadFilter( new MyReadFilter() ); -$objPHPExcel = $objReader->load("06largescale.xlsx"); - -echo date('H:i:s') , " Remove unnecessary rows" , EOL; -$objPHPExcel->getActiveSheet()->removeRow(2, 18); - -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/25inmemoryimage.php b/htdocs/includes/phpoffice/phpexcel/Examples/25inmemoryimage.php deleted file mode 100644 index 7a3424e2088..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/25inmemoryimage.php +++ /dev/null @@ -1,83 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - -// Generate an image -echo date('H:i:s') , " Generate an image" , EOL; -$gdImage = @imagecreatetruecolor(120, 20) or die('Cannot Initialize new GD image stream'); -$textColor = imagecolorallocate($gdImage, 255, 255, 255); -imagestring($gdImage, 1, 5, 5, 'Created with PHPExcel', $textColor); - -// Add a drawing to the worksheet -echo date('H:i:s') , " Add a drawing to the worksheet" , EOL; -$objDrawing = new PHPExcel_Worksheet_MemoryDrawing(); -$objDrawing->setName('Sample image'); -$objDrawing->setDescription('Sample image'); -$objDrawing->setImageResource($gdImage); -$objDrawing->setRenderingFunction(PHPExcel_Worksheet_MemoryDrawing::RENDERING_JPEG); -$objDrawing->setMimeType(PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_DEFAULT); -$objDrawing->setHeight(36); -$objDrawing->setWorksheet($objPHPExcel->getActiveSheet()); - -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/26utf8.php b/htdocs/includes/phpoffice/phpexcel/Examples/26utf8.php deleted file mode 100644 index ad0b400594e..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/26utf8.php +++ /dev/null @@ -1,122 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Change these values to select the PDF Rendering library that you wish to use -// and its directory location on your server -//$rendererName = PHPExcel_Settings::PDF_RENDERER_TCPDF; -//$rendererName = PHPExcel_Settings::PDF_RENDERER_MPDF; -$rendererName = PHPExcel_Settings::PDF_RENDERER_DOMPDF; -//$rendererLibrary = 'tcPDF5.9'; -//$rendererLibrary = 'mPDF5.4'; -$rendererLibrary = 'domPDF0.6.0beta3'; -$rendererLibraryPath = '/php/libraries/PDF/' . $rendererLibrary; - - -// Read from Excel2007 (.xlsx) template -echo date('H:i:s') , " Load Excel2007 template file" , EOL; -$objReader = PHPExcel_IOFactory::createReader('Excel2007'); -$objPHPExcel = $objReader->load("templates/26template.xlsx"); - -/** at this point, we could do some manipulations with the template, but we skip this step */ - -// Export to Excel2007 (.xlsx) -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - -// Export to Excel5 (.xls) -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - -// Export to HTML (.html) -echo date('H:i:s') , " Write to HTML format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'HTML'); -$objWriter->save(str_replace('.php', '.htm', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.htm', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - -// Export to PDF (.pdf) -echo date('H:i:s') , " Write to PDF format" , EOL; -try { - if (!PHPExcel_Settings::setPdfRenderer( - $rendererName, - $rendererLibraryPath - )) { - echo ( - 'NOTICE: Please set the $rendererName and $rendererLibraryPath values' . - EOL . - 'at the top of this script as appropriate for your directory structure' . - EOL - ); - } else { - $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'PDF'); - $objWriter->save(str_replace('.php', '.pdf', __FILE__)); - echo date('H:i:s') , " File written to " , str_replace('.php', '.pdf', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - } -} catch (Exception $e) { - echo date('H:i:s') , ' EXCEPTION: ', $e->getMessage() , EOL; -} - -// Remove first two rows with field headers before exporting to CSV -echo date('H:i:s') , " Removing first two heading rows for CSV export" , EOL; -$objWorksheet = $objPHPExcel->getActiveSheet(); -$objWorksheet->removeRow(1, 2); - -// Export to CSV (.csv) -echo date('H:i:s') , " Write to CSV format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'CSV'); -$objWriter->save(str_replace('.php', '.csv', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.csv', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - -// Export to CSV with BOM (.csv) -echo date('H:i:s') , " Write to CSV format (with BOM)" , EOL; -$objWriter->setUseBOM(true); -$objWriter->save(str_replace('.php', '-bom.csv', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '-bom.csv', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/27imagesexcel5.php b/htdocs/includes/phpoffice/phpexcel/Examples/27imagesexcel5.php deleted file mode 100644 index 17db771c3b4..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/27imagesexcel5.php +++ /dev/null @@ -1,64 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Read from Excel5 (.xls) template -echo date('H:i:s') , " Load Excel2007 template file" , EOL; -$objReader = PHPExcel_IOFactory::createReader('Excel5'); -$objPHPExcel = $objReader->load("templates/27template.xls"); - -// Export to Excel2007 (.xlsx) -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - -// Export to Excel5 (.xls) -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/28iterator.php b/htdocs/includes/phpoffice/phpexcel/Examples/28iterator.php deleted file mode 100644 index 3e1e681de37..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/28iterator.php +++ /dev/null @@ -1,68 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -/** PHPExcel_IOFactory */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel/IOFactory.php'; - - -if (!file_exists("05featuredemo.xlsx")) { - exit("Please run 05featuredemo.php first." . EOL); -} - -echo date('H:i:s') , " Load from Excel2007 file" , EOL; -$objReader = PHPExcel_IOFactory::createReader('Excel2007'); -$objPHPExcel = $objReader->load("05featuredemo.xlsx"); - -echo date('H:i:s') , " Iterate worksheets" , EOL; -foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) { - echo 'Worksheet - ' , $worksheet->getTitle() , EOL; - - foreach ($worksheet->getRowIterator() as $row) { - echo ' Row number - ' , $row->getRowIndex() , EOL; - - $cellIterator = $row->getCellIterator(); - $cellIterator->setIterateOnlyExistingCells(false); // Loop all cells, even if it is not set - foreach ($cellIterator as $cell) { - if (!is_null($cell)) { - echo ' Cell - ' , $cell->getCoordinate() , ' - ' , $cell->getCalculatedValue() , EOL; - } - } - } -} - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/29advancedvaluebinder.php b/htdocs/includes/phpoffice/phpexcel/Examples/29advancedvaluebinder.php deleted file mode 100644 index bb387f9cd1d..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/29advancedvaluebinder.php +++ /dev/null @@ -1,183 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -/** PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Set timezone -echo date('H:i:s') , " Set timezone" , EOL; -date_default_timezone_set('UTC'); - -// Set value binder -echo date('H:i:s') , " Set value binder" , EOL; -PHPExcel_Cell::setValueBinder( new PHPExcel_Cell_AdvancedValueBinder() ); - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - -// Set default font -echo date('H:i:s') , " Set default font" , EOL; -$objPHPExcel->getActiveSheet()->getDefaultStyle()->getFont()->setName('Arial'); -$objPHPExcel->getActiveSheet()->getDefaultStyle()->getFont()->setSize(10); - -// Set column widths -echo date('H:i:s') , " Set column widths" , EOL; -$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setAutoSize(true); -$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(14); - -// Add some data, resembling some different data types -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->getActiveSheet()->setCellValue('A1', 'String value:') - ->setCellValue('B1', 'Mark Baker'); - -$objPHPExcel->getActiveSheet()->setCellValue('A2', 'Numeric value #1:') - ->setCellValue('B2', 12345); - -$objPHPExcel->getActiveSheet()->setCellValue('A3', 'Numeric value #2:') - ->setCellValue('B3', -12.345); - -$objPHPExcel->getActiveSheet()->setCellValue('A4', 'Numeric value #3:') - ->setCellValue('B4', .12345); - -$objPHPExcel->getActiveSheet()->setCellValue('A5', 'Numeric value #4:') - ->setCellValue('B5', '12345'); - -$objPHPExcel->getActiveSheet()->setCellValue('A6', 'Numeric value #5:') - ->setCellValue('B6', '1.2345'); - -$objPHPExcel->getActiveSheet()->setCellValue('A7', 'Numeric value #6:') - ->setCellValue('B7', '.12345'); - -$objPHPExcel->getActiveSheet()->setCellValue('A8', 'Numeric value #7:') - ->setCellValue('B8', '1.234e-5'); - -$objPHPExcel->getActiveSheet()->setCellValue('A9', 'Numeric value #8:') - ->setCellValue('B9', '-1.234e+5'); - -$objPHPExcel->getActiveSheet()->setCellValue('A10', 'Boolean value:') - ->setCellValue('B10', 'TRUE'); - -$objPHPExcel->getActiveSheet()->setCellValue('A11', 'Percentage value #1:') - ->setCellValue('B11', '10%'); - -$objPHPExcel->getActiveSheet()->setCellValue('A12', 'Percentage value #2:') - ->setCellValue('B12', '12.5%'); - -$objPHPExcel->getActiveSheet()->setCellValue('A13', 'Fraction value #1:') - ->setCellValue('B13', '-1/2'); - -$objPHPExcel->getActiveSheet()->setCellValue('A14', 'Fraction value #2:') - ->setCellValue('B14', '3 1/2'); - -$objPHPExcel->getActiveSheet()->setCellValue('A15', 'Fraction value #3:') - ->setCellValue('B15', '-12 3/4'); - -$objPHPExcel->getActiveSheet()->setCellValue('A16', 'Fraction value #4:') - ->setCellValue('B16', '13/4'); - -$objPHPExcel->getActiveSheet()->setCellValue('A17', 'Currency value #1:') - ->setCellValue('B17', '$12345'); - -$objPHPExcel->getActiveSheet()->setCellValue('A18', 'Currency value #2:') - ->setCellValue('B18', '$12345.67'); - -$objPHPExcel->getActiveSheet()->setCellValue('A19', 'Currency value #3:') - ->setCellValue('B19', '$12,345.67'); - -$objPHPExcel->getActiveSheet()->setCellValue('A20', 'Date value #1:') - ->setCellValue('B20', '21 December 1983'); - -$objPHPExcel->getActiveSheet()->setCellValue('A21', 'Date value #2:') - ->setCellValue('B21', '19-Dec-1960'); - -$objPHPExcel->getActiveSheet()->setCellValue('A22', 'Date value #3:') - ->setCellValue('B22', '07/12/1982'); - -$objPHPExcel->getActiveSheet()->setCellValue('A23', 'Date value #4:') - ->setCellValue('B23', '24-11-1950'); - -$objPHPExcel->getActiveSheet()->setCellValue('A24', 'Date value #5:') - ->setCellValue('B24', '17-Mar'); - -$objPHPExcel->getActiveSheet()->setCellValue('A25', 'Time value #1:') - ->setCellValue('B25', '01:30'); - -$objPHPExcel->getActiveSheet()->setCellValue('A26', 'Time value #2:') - ->setCellValue('B26', '01:30:15'); - -$objPHPExcel->getActiveSheet()->setCellValue('A27', 'Date/Time value:') - ->setCellValue('B27', '19-Dec-1960 01:30'); - -$objPHPExcel->getActiveSheet()->setCellValue('A28', 'Formula:') - ->setCellValue('B28', '=SUM(B2:B9)'); - -// Rename worksheet -echo date('H:i:s') , " Rename worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Advanced value binder'); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -// Save Excel5 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/30template.php b/htdocs/includes/phpoffice/phpexcel/Examples/30template.php deleted file mode 100644 index 2b66c2ceb41..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/30template.php +++ /dev/null @@ -1,91 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -/** PHPExcel_IOFactory */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel/IOFactory.php'; - - - -echo date('H:i:s') , " Load from Excel5 template" , EOL; -$objReader = PHPExcel_IOFactory::createReader('Excel5'); -$objPHPExcel = $objReader->load("templates/30template.xls"); - - - - -echo date('H:i:s') , " Add new data to the template" , EOL; -$data = array(array('title' => 'Excel for dummies', - 'price' => 17.99, - 'quantity' => 2 - ), - array('title' => 'PHP for dummies', - 'price' => 15.99, - 'quantity' => 1 - ), - array('title' => 'Inside OOP', - 'price' => 12.95, - 'quantity' => 1 - ) - ); - -$objPHPExcel->getActiveSheet()->setCellValue('D1', PHPExcel_Shared_Date::PHPToExcel(time())); - -$baseRow = 5; -foreach($data as $r => $dataRow) { - $row = $baseRow + $r; - $objPHPExcel->getActiveSheet()->insertNewRowBefore($row,1); - - $objPHPExcel->getActiveSheet()->setCellValue('A'.$row, $r+1) - ->setCellValue('B'.$row, $dataRow['title']) - ->setCellValue('C'.$row, $dataRow['price']) - ->setCellValue('D'.$row, $dataRow['quantity']) - ->setCellValue('E'.$row, '=C'.$row.'*D'.$row); -} -$objPHPExcel->getActiveSheet()->removeRow($baseRow-1,1); - - -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/31docproperties_write-xls.php b/htdocs/includes/phpoffice/phpexcel/Examples/31docproperties_write-xls.php deleted file mode 100644 index f3ad0a4bdb7..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/31docproperties_write-xls.php +++ /dev/null @@ -1,119 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -$inputFileType = 'Excel5'; -$inputFileName = 'templates/31docproperties.xls'; - - -echo date('H:i:s') , " Load Tests from $inputFileType file" , EOL; -$callStartTime = microtime(true); - -$objPHPExcelReader = PHPExcel_IOFactory::createReader($inputFileType); -$objPHPExcel = $objPHPExcelReader->load($inputFileName); - -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; -echo 'Call time to read Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -echo date('H:i:s') , " Adjust properties" , EOL; -$objPHPExcel->getProperties()->setTitle("Office 95 XLS Test Document") - ->setSubject("Office 95 XLS Test Document") - ->setDescription("Test XLS document, generated using PHPExcel") - ->setKeywords("office 95 biff php"); - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " . (memory_get_peak_usage(true) / 1024 / 1024) . " MB" , EOL; - - -echo EOL; -// Reread File -echo date('H:i:s') , " Reread Excel5 file" , EOL; -$objPHPExcelRead = PHPExcel_IOFactory::load(str_replace('.php', '.xls', __FILE__)); - -// Set properties -echo date('H:i:s') , " Get properties" , EOL; - -echo 'Core Properties:' , EOL; -echo ' Created by - ' , $objPHPExcel->getProperties()->getCreator() , EOL; -echo ' Created on - ' , date('d-M-Y',$objPHPExcel->getProperties()->getCreated()) , ' at ' , - date('H:i:s',$objPHPExcel->getProperties()->getCreated()) , EOL; -echo ' Last Modified by - ' , $objPHPExcel->getProperties()->getLastModifiedBy() , EOL; -echo ' Last Modified on - ' , date('d-M-Y',$objPHPExcel->getProperties()->getModified()) , ' at ' , - date('H:i:s',$objPHPExcel->getProperties()->getModified()) , EOL; -echo ' Title - ' , $objPHPExcel->getProperties()->getTitle() , EOL; -echo ' Subject - ' , $objPHPExcel->getProperties()->getSubject() , EOL; -echo ' Description - ' , $objPHPExcel->getProperties()->getDescription() , EOL; -echo ' Keywords: - ' , $objPHPExcel->getProperties()->getKeywords() , EOL; - - -echo 'Extended (Application) Properties:' , EOL; -echo ' Category - ' , $objPHPExcel->getProperties()->getCategory() , EOL; -echo ' Company - ' , $objPHPExcel->getProperties()->getCompany() , EOL; -echo ' Manager - ' , $objPHPExcel->getProperties()->getManager() , EOL; - - -echo 'Custom Properties:' , EOL; -$customProperties = $objPHPExcel->getProperties()->getCustomProperties(); -foreach($customProperties as $customProperty) { - $propertyValue = $objPHPExcel->getProperties()->getCustomPropertyValue($customProperty); - $propertyType = $objPHPExcel->getProperties()->getCustomPropertyType($customProperty); - echo ' ' , $customProperty , ' - (' , $propertyType , ') - '; - if ($propertyType == PHPExcel_DocumentProperties::PROPERTY_TYPE_DATE) { - echo date('d-M-Y H:i:s',$propertyValue) , EOL; - } elseif ($propertyType == PHPExcel_DocumentProperties::PROPERTY_TYPE_BOOLEAN) { - echo (($propertyValue) ? 'TRUE' : 'FALSE') , EOL; - } else { - echo $propertyValue , EOL; - } -} - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) . " MB" , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/31docproperties_write.php b/htdocs/includes/phpoffice/phpexcel/Examples/31docproperties_write.php deleted file mode 100644 index 3f5328c5ec3..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/31docproperties_write.php +++ /dev/null @@ -1,119 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -$inputFileType = 'Excel2007'; -$inputFileName = 'templates/31docproperties.xlsx'; - - -echo date('H:i:s') , " Load Tests from $inputFileType file" , EOL; -$callStartTime = microtime(true); - -$objPHPExcelReader = PHPExcel_IOFactory::createReader($inputFileType); -$objPHPExcel = $objPHPExcelReader->load($inputFileName); - -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; -echo 'Call time to read Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -echo date('H:i:s') , " Adjust properties" , EOL; -$objPHPExcel->getProperties()->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test XLSX document, generated using PHPExcel") - ->setKeywords("office 2007 openxml php"); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " . (memory_get_peak_usage(true) / 1024 / 1024) . " MB" , EOL; - - -echo EOL; -// Reread File -echo date('H:i:s') , " Reread Excel2007 file" , EOL; -$objPHPExcelRead = PHPExcel_IOFactory::load(str_replace('.php', '.xlsx', __FILE__)); - -// Set properties -echo date('H:i:s') , " Get properties" , EOL; - -echo 'Core Properties:' , EOL; -echo ' Created by - ' , $objPHPExcel->getProperties()->getCreator() , EOL; -echo ' Created on - ' , date('d-M-Y',$objPHPExcel->getProperties()->getCreated()) , ' at ' , - date('H:i:s',$objPHPExcel->getProperties()->getCreated()) , EOL; -echo ' Last Modified by - ' , $objPHPExcel->getProperties()->getLastModifiedBy() , EOL; -echo ' Last Modified on - ' , date('d-M-Y',$objPHPExcel->getProperties()->getModified()) , ' at ' , - date('H:i:s',$objPHPExcel->getProperties()->getModified()) , EOL; -echo ' Title - ' , $objPHPExcel->getProperties()->getTitle() , EOL; -echo ' Subject - ' , $objPHPExcel->getProperties()->getSubject() , EOL; -echo ' Description - ' , $objPHPExcel->getProperties()->getDescription() , EOL; -echo ' Keywords: - ' , $objPHPExcel->getProperties()->getKeywords() , EOL; - - -echo 'Extended (Application) Properties:' , EOL; -echo ' Category - ' , $objPHPExcel->getProperties()->getCategory() , EOL; -echo ' Company - ' , $objPHPExcel->getProperties()->getCompany() , EOL; -echo ' Manager - ' , $objPHPExcel->getProperties()->getManager() , EOL; - - -echo 'Custom Properties:' , EOL; -$customProperties = $objPHPExcel->getProperties()->getCustomProperties(); -foreach($customProperties as $customProperty) { - $propertyValue = $objPHPExcel->getProperties()->getCustomPropertyValue($customProperty); - $propertyType = $objPHPExcel->getProperties()->getCustomPropertyType($customProperty); - echo ' ' , $customProperty , ' - (' , $propertyType , ') - '; - if ($propertyType == PHPExcel_DocumentProperties::PROPERTY_TYPE_DATE) { - echo date('d-M-Y H:i:s',$propertyValue) , EOL; - } elseif ($propertyType == PHPExcel_DocumentProperties::PROPERTY_TYPE_BOOLEAN) { - echo (($propertyValue) ? 'TRUE' : 'FALSE') , EOL; - } else { - echo $propertyValue , EOL; - } -} - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) . " MB" , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/32chartreadwrite.php b/htdocs/includes/phpoffice/phpexcel/Examples/32chartreadwrite.php deleted file mode 100644 index be1925a5b4f..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/32chartreadwrite.php +++ /dev/null @@ -1,131 +0,0 @@ -<?php - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); -date_default_timezone_set('Europe/London'); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Include path **/ -set_include_path(get_include_path() . PATH_SEPARATOR . dirname(__FILE__) . '/../Classes/'); - -/** PHPExcel_IOFactory */ -include 'PHPExcel/IOFactory.php'; - -$inputFileType = 'Excel2007'; -$inputFileNames = 'templates/32readwrite*[0-9].xlsx'; - -if ((isset($argc)) && ($argc > 1)) { - $inputFileNames = array(); - for($i = 1; $i < $argc; ++$i) { - $inputFileNames[] = dirname(__FILE__) . '/templates/' . $argv[$i]; - } -} else { - $inputFileNames = glob($inputFileNames); -} -foreach($inputFileNames as $inputFileName) { - $inputFileNameShort = basename($inputFileName); - - if (!file_exists($inputFileName)) { - echo date('H:i:s') , " File " , $inputFileNameShort , ' does not exist' , EOL; - continue; - } - - echo date('H:i:s') , " Load Test from $inputFileType file " , $inputFileNameShort , EOL; - - $objReader = PHPExcel_IOFactory::createReader($inputFileType); - $objReader->setIncludeCharts(TRUE); - $objPHPExcel = $objReader->load($inputFileName); - - - echo date('H:i:s') , " Iterate worksheets looking at the charts" , EOL; - foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) { - $sheetName = $worksheet->getTitle(); - echo 'Worksheet: ' , $sheetName , EOL; - - $chartNames = $worksheet->getChartNames(); - if(empty($chartNames)) { - echo ' There are no charts in this worksheet' , EOL; - } else { - natsort($chartNames); - foreach($chartNames as $i => $chartName) { - $chart = $worksheet->getChartByName($chartName); - if (!is_null($chart->getTitle())) { - $caption = '"' . implode(' ',$chart->getTitle()->getCaption()) . '"'; - } else { - $caption = 'Untitled'; - } - echo ' ' , $chartName , ' - ' , $caption , EOL; - echo str_repeat(' ',strlen($chartName)+3); - $groupCount = $chart->getPlotArea()->getPlotGroupCount(); - if ($groupCount == 1) { - $chartType = $chart->getPlotArea()->getPlotGroupByIndex(0)->getPlotType(); - echo ' ' , $chartType , EOL; - } else { - $chartTypes = array(); - for($i = 0; $i < $groupCount; ++$i) { - $chartTypes[] = $chart->getPlotArea()->getPlotGroupByIndex($i)->getPlotType(); - } - $chartTypes = array_unique($chartTypes); - if (count($chartTypes) == 1) { - $chartType = 'Multiple Plot ' . array_pop($chartTypes); - echo ' ' , $chartType , EOL; - } elseif (count($chartTypes) == 0) { - echo ' *** Type not yet implemented' , EOL; - } else { - echo ' Combination Chart' , EOL; - } - } - } - } - } - - - $outputFileName = basename($inputFileName); - - echo date('H:i:s') , " Write Tests to Excel2007 file " , EOL; - $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); - $objWriter->setIncludeCharts(TRUE); - $objWriter->save($outputFileName); - echo date('H:i:s') , " File written to " , $outputFileName , EOL; - - $objPHPExcel->disconnectWorksheets(); - unset($objPHPExcel); -} - -// Echo memory peak usage -echo date('H:i:s') , ' Peak memory usage: ' , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-area.php b/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-area.php deleted file mode 100644 index 53fe52398d2..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-area.php +++ /dev/null @@ -1,142 +0,0 @@ -<?php - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); -date_default_timezone_set('Europe/London'); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -$objPHPExcel = new PHPExcel(); -$objWorksheet = $objPHPExcel->getActiveSheet(); -$objWorksheet->fromArray( - array( - array('', 2010, 2011, 2012), - array('Q1', 12, 15, 21), - array('Q2', 56, 73, 86), - array('Q3', 52, 61, 69), - array('Q4', 30, 32, 0), - ) -); - -// Set the Labels for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesLabels = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$B$1', NULL, 1), // 2010 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C$1', NULL, 1), // 2011 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$D$1', NULL, 1), // 2012 -); -// Set the X-Axis Labels -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$xAxisTickValues = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$A$5', NULL, 4), // Q1 to Q4 -); -// Set the Data values for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesValues = array( - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$B$2:$B$5', NULL, 4), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$5', NULL, 4), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$D$2:$D$5', NULL, 4), -); - -// Build the dataseries -$series = new PHPExcel_Chart_DataSeries( - PHPExcel_Chart_DataSeries::TYPE_AREACHART, // plotType - PHPExcel_Chart_DataSeries::GROUPING_PERCENT_STACKED, // plotGrouping - range(0, count($dataSeriesValues)-1), // plotOrder - $dataSeriesLabels, // plotLabel - $xAxisTickValues, // plotCategory - $dataSeriesValues // plotValues -); - -// Set the series in the plot area -$plotArea = new PHPExcel_Chart_PlotArea(NULL, array($series)); -// Set the chart legend -$legend = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_TOPRIGHT, NULL, false); - -$title = new PHPExcel_Chart_Title('Test %age-Stacked Area Chart'); -$yAxisLabel = new PHPExcel_Chart_Title('Value ($k)'); - - -// Create the chart -$chart = new PHPExcel_Chart( - 'chart1', // name - $title, // title - $legend, // legend - $plotArea, // plotArea - true, // plotVisibleOnly - 0, // displayBlanksAs - NULL, // xAxisLabel - $yAxisLabel // yAxisLabel -); - -// Set the position where the chart should appear in the worksheet -$chart->setTopLeftPosition('A7'); -$chart->setBottomRightPosition('H20'); - -// Add the chart to the worksheet -$objWorksheet->addChart($chart); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->setIncludeCharts(TRUE); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-bar-stacked.php b/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-bar-stacked.php deleted file mode 100644 index cac29f29f55..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-bar-stacked.php +++ /dev/null @@ -1,145 +0,0 @@ -<?php - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); -date_default_timezone_set('Europe/London'); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -$objPHPExcel = new PHPExcel(); -$objWorksheet = $objPHPExcel->getActiveSheet(); -$objWorksheet->fromArray( - array( - array('', 2010, 2011, 2012), - array('Q1', 12, 15, 21), - array('Q2', 56, 73, 86), - array('Q3', 52, 61, 69), - array('Q4', 30, 32, 0), - ) -); - -// Set the Labels for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesLabels = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$B$1', NULL, 1), // 2010 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C$1', NULL, 1), // 2011 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$D$1', NULL, 1), // 2012 -); -// Set the X-Axis Labels -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$xAxisTickValues = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$A$5', NULL, 4), // Q1 to Q4 -); -// Set the Data values for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesValues = array( - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$B$2:$B$5', NULL, 4), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$5', NULL, 4), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$D$2:$D$5', NULL, 4), -); - -// Build the dataseries -$series = new PHPExcel_Chart_DataSeries( - PHPExcel_Chart_DataSeries::TYPE_BARCHART, // plotType - PHPExcel_Chart_DataSeries::GROUPING_STACKED, // plotGrouping - range(0, count($dataSeriesValues)-1), // plotOrder - $dataSeriesLabels, // plotLabel - $xAxisTickValues, // plotCategory - $dataSeriesValues // plotValues -); -// Set additional dataseries parameters -// Make it a horizontal bar rather than a vertical column graph -$series->setPlotDirection(PHPExcel_Chart_DataSeries::DIRECTION_BAR); - -// Set the series in the plot area -$plotArea = new PHPExcel_Chart_PlotArea(NULL, array($series)); -// Set the chart legend -$legend = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_RIGHT, NULL, false); - -$title = new PHPExcel_Chart_Title('Test Chart'); -$yAxisLabel = new PHPExcel_Chart_Title('Value ($k)'); - - -// Create the chart -$chart = new PHPExcel_Chart( - 'chart1', // name - $title, // title - $legend, // legend - $plotArea, // plotArea - true, // plotVisibleOnly - 0, // displayBlanksAs - NULL, // xAxisLabel - $yAxisLabel // yAxisLabel -); - -// Set the position where the chart should appear in the worksheet -$chart->setTopLeftPosition('A7'); -$chart->setBottomRightPosition('H20'); - -// Add the chart to the worksheet -$objWorksheet->addChart($chart); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->setIncludeCharts(TRUE); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-bar.php b/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-bar.php deleted file mode 100644 index 14fd5d485f9..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-bar.php +++ /dev/null @@ -1,145 +0,0 @@ -<?php - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); -date_default_timezone_set('Europe/London'); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -$objPHPExcel = new PHPExcel(); -$objWorksheet = $objPHPExcel->getActiveSheet(); -$objWorksheet->fromArray( - array( - array('', 2010, 2011, 2012), - array('Q1', 12, 15, 21), - array('Q2', 56, 73, 86), - array('Q3', 52, 61, 69), - array('Q4', 30, 32, 0), - ) -); - -// Set the Labels for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesLabels = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$B$1', NULL, 1), // 2010 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C$1', NULL, 1), // 2011 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$D$1', NULL, 1), // 2012 -); -// Set the X-Axis Labels -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$xAxisTickValues = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$A$5', NULL, 4), // Q1 to Q4 -); -// Set the Data values for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesValues = array( - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$B$2:$B$5', NULL, 4), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$5', NULL, 4), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$D$2:$D$5', NULL, 4), -); - -// Build the dataseries -$series = new PHPExcel_Chart_DataSeries( - PHPExcel_Chart_DataSeries::TYPE_BARCHART, // plotType - PHPExcel_Chart_DataSeries::GROUPING_CLUSTERED, // plotGrouping - range(0, count($dataSeriesValues)-1), // plotOrder - $dataSeriesLabels, // plotLabel - $xAxisTickValues, // plotCategory - $dataSeriesValues // plotValues -); -// Set additional dataseries parameters -// Make it a horizontal bar rather than a vertical column graph -$series->setPlotDirection(PHPExcel_Chart_DataSeries::DIRECTION_BAR); - -// Set the series in the plot area -$plotArea = new PHPExcel_Chart_PlotArea(NULL, array($series)); -// Set the chart legend -$legend = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_RIGHT, NULL, false); - -$title = new PHPExcel_Chart_Title('Test Bar Chart'); -$yAxisLabel = new PHPExcel_Chart_Title('Value ($k)'); - - -// Create the chart -$chart = new PHPExcel_Chart( - 'chart1', // name - $title, // title - $legend, // legend - $plotArea, // plotArea - true, // plotVisibleOnly - 0, // displayBlanksAs - NULL, // xAxisLabel - $yAxisLabel // yAxisLabel -); - -// Set the position where the chart should appear in the worksheet -$chart->setTopLeftPosition('A7'); -$chart->setBottomRightPosition('H20'); - -// Add the chart to the worksheet -$objWorksheet->addChart($chart); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->setIncludeCharts(TRUE); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-column-2.php b/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-column-2.php deleted file mode 100644 index 00bf0d71b50..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-column-2.php +++ /dev/null @@ -1,154 +0,0 @@ -<?php - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); -date_default_timezone_set('Europe/London'); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -$objPHPExcel = new PHPExcel(); -$objWorksheet = $objPHPExcel->getActiveSheet(); -$objWorksheet->fromArray( - array( - array('', '', 'Budget', 'Forecast', 'Actual'), - array('2010', 'Q1', 47, 44, 43 ), - array('', 'Q2', 56, 53, 50 ), - array('', 'Q3', 52, 46, 45 ), - array('', 'Q4', 45, 40, 40 ), - array('2011', 'Q1', 51, 42, 46 ), - array('', 'Q2', 53, 58, 56 ), - array('', 'Q3', 64, 66, 69 ), - array('', 'Q4', 54, 55, 56 ), - array('2012', 'Q1', 49, 52, 58 ), - array('', 'Q2', 68, 73, 86 ), - array('', 'Q3', 72, 78, 0 ), - array('', 'Q4', 50, 60, 0 ), - ) -); - -// Set the Labels for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesLabels = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C$1', NULL, 1), // 'Budget' - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$D$1', NULL, 1), // 'Forecast' - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$E$1', NULL, 1), // 'Actual' -); -// Set the X-Axis Labels -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$xAxisTickValues = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$B$13', NULL, 12), // Q1 to Q4 for 2010 to 2012 -); -// Set the Data values for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesValues = array( - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$13', NULL, 12), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$D$2:$D$13', NULL, 12), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$E$2:$E$13', NULL, 12), -); - -// Build the dataseries -$series = new PHPExcel_Chart_DataSeries( - PHPExcel_Chart_DataSeries::TYPE_BARCHART, // plotType - PHPExcel_Chart_DataSeries::GROUPING_CLUSTERED, // plotGrouping - range(0, count($dataSeriesValues)-1), // plotOrder - $dataSeriesLabels, // plotLabel - $xAxisTickValues, // plotCategory - $dataSeriesValues // plotValues -); -// Set additional dataseries parameters -// Make it a vertical column rather than a horizontal bar graph -$series->setPlotDirection(PHPExcel_Chart_DataSeries::DIRECTION_COL); - -// Set the series in the plot area -$plotArea = new PHPExcel_Chart_PlotArea(NULL, array($series)); -// Set the chart legend -$legend = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_BOTTOM, NULL, false); - -$title = new PHPExcel_Chart_Title('Test Grouped Column Chart'); -$xAxisLabel = new PHPExcel_Chart_Title('Financial Period'); -$yAxisLabel = new PHPExcel_Chart_Title('Value ($k)'); - - -// Create the chart -$chart = new PHPExcel_Chart( - 'chart1', // name - $title, // title - $legend, // legend - $plotArea, // plotArea - true, // plotVisibleOnly - 0, // displayBlanksAs - $xAxisLabel, // xAxisLabel - $yAxisLabel // yAxisLabel -); - -// Set the position where the chart should appear in the worksheet -$chart->setTopLeftPosition('G2'); -$chart->setBottomRightPosition('P20'); - -// Add the chart to the worksheet -$objWorksheet->addChart($chart); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->setIncludeCharts(TRUE); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-column.php b/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-column.php deleted file mode 100644 index ae9c6185e26..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-column.php +++ /dev/null @@ -1,145 +0,0 @@ -<?php - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); -date_default_timezone_set('Europe/London'); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -$objPHPExcel = new PHPExcel(); -$objWorksheet = $objPHPExcel->getActiveSheet(); -$objWorksheet->fromArray( - array( - array('', 2010, 2011, 2012), - array('Q1', 12, 15, 21), - array('Q2', 56, 73, 86), - array('Q3', 52, 61, 69), - array('Q4', 30, 32, 0), - ) -); - -// Set the Labels for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesLabels = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$B$1', NULL, 1), // 2010 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C$1', NULL, 1), // 2011 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$D$1', NULL, 1), // 2012 -); -// Set the X-Axis Labels -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$xAxisTickValues = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$A$5', NULL, 4), // Q1 to Q4 -); -// Set the Data values for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesValues = array( - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$B$2:$B$5', NULL, 4), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$5', NULL, 4), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$D$2:$D$5', NULL, 4), -); - -// Build the dataseries -$series = new PHPExcel_Chart_DataSeries( - PHPExcel_Chart_DataSeries::TYPE_BARCHART, // plotType - PHPExcel_Chart_DataSeries::GROUPING_STANDARD, // plotGrouping - range(0, count($dataSeriesValues)-1), // plotOrder - $dataSeriesLabels, // plotLabel - $xAxisTickValues, // plotCategory - $dataSeriesValues // plotValues -); -// Set additional dataseries parameters -// Make it a vertical column rather than a horizontal bar graph -$series->setPlotDirection(PHPExcel_Chart_DataSeries::DIRECTION_COL); - -// Set the series in the plot area -$plotArea = new PHPExcel_Chart_PlotArea(NULL, array($series)); -// Set the chart legend -$legend = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_RIGHT, NULL, false); - -$title = new PHPExcel_Chart_Title('Test Column Chart'); -$yAxisLabel = new PHPExcel_Chart_Title('Value ($k)'); - - -// Create the chart -$chart = new PHPExcel_Chart( - 'chart1', // name - $title, // title - $legend, // legend - $plotArea, // plotArea - true, // plotVisibleOnly - 0, // displayBlanksAs - NULL, // xAxisLabel - $yAxisLabel // yAxisLabel -); - -// Set the position where the chart should appear in the worksheet -$chart->setTopLeftPosition('A7'); -$chart->setBottomRightPosition('H20'); - -// Add the chart to the worksheet -$objWorksheet->addChart($chart); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->setIncludeCharts(TRUE); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-composite.php b/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-composite.php deleted file mode 100644 index 8ea72126ccb..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-composite.php +++ /dev/null @@ -1,203 +0,0 @@ -<?php - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); -date_default_timezone_set('Europe/London'); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -$objPHPExcel = new PHPExcel(); -$objWorksheet = $objPHPExcel->getActiveSheet(); -$objWorksheet->fromArray( - array( - array('', 'Rainfall (mm)', 'Temperature (°F)', 'Humidity (%)'), - array('Jan', 78, 52, 61), - array('Feb', 64, 54, 62), - array('Mar', 62, 57, 63), - array('Apr', 21, 62, 59), - array('May', 11, 75, 60), - array('Jun', 1, 75, 57), - array('Jul', 1, 79, 56), - array('Aug', 1, 79, 59), - array('Sep', 10, 75, 60), - array('Oct', 40, 68, 63), - array('Nov', 69, 62, 64), - array('Dec', 89, 57, 66), - ) -); - - -// Set the Labels for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesLabels1 = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$B$1', NULL, 1), // Temperature -); -$dataSeriesLabels2 = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C$1', NULL, 1), // Rainfall -); -$dataSeriesLabels3 = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$D$1', NULL, 1), // Humidity -); - -// Set the X-Axis Labels -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$xAxisTickValues = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$A$13', NULL, 12), // Jan to Dec -); - - -// Set the Data values for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesValues1 = array( - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$B$2:$B$13', NULL, 12), -); - -// Build the dataseries -$series1 = new PHPExcel_Chart_DataSeries( - PHPExcel_Chart_DataSeries::TYPE_BARCHART, // plotType - PHPExcel_Chart_DataSeries::GROUPING_CLUSTERED, // plotGrouping - range(0, count($dataSeriesValues1)-1), // plotOrder - $dataSeriesLabels1, // plotLabel - $xAxisTickValues, // plotCategory - $dataSeriesValues1 // plotValues -); -// Set additional dataseries parameters -// Make it a vertical column rather than a horizontal bar graph -$series1->setPlotDirection(PHPExcel_Chart_DataSeries::DIRECTION_COL); - - -// Set the Data values for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesValues2 = array( - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$13', NULL, 12), -); - -// Build the dataseries -$series2 = new PHPExcel_Chart_DataSeries( - PHPExcel_Chart_DataSeries::TYPE_LINECHART, // plotType - PHPExcel_Chart_DataSeries::GROUPING_STANDARD, // plotGrouping - range(0, count($dataSeriesValues2)-1), // plotOrder - $dataSeriesLabels2, // plotLabel - NULL, // plotCategory - $dataSeriesValues2 // plotValues -); - - -// Set the Data values for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesValues3 = array( - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$D$2:$D$13', NULL, 12), -); - -// Build the dataseries -$series3 = new PHPExcel_Chart_DataSeries( - PHPExcel_Chart_DataSeries::TYPE_AREACHART, // plotType - PHPExcel_Chart_DataSeries::GROUPING_STANDARD, // plotGrouping - range(0, count($dataSeriesValues2)-1), // plotOrder - $dataSeriesLabels3, // plotLabel - NULL, // plotCategory - $dataSeriesValues3 // plotValues -); - - -// Set the series in the plot area -$plotArea = new PHPExcel_Chart_PlotArea(NULL, array($series1, $series2, $series3)); -// Set the chart legend -$legend = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_RIGHT, NULL, false); - -$title = new PHPExcel_Chart_Title('Average Weather Chart for Crete'); - - -// Create the chart -$chart = new PHPExcel_Chart( - 'chart1', // name - $title, // title - $legend, // legend - $plotArea, // plotArea - true, // plotVisibleOnly - 0, // displayBlanksAs - NULL, // xAxisLabel - NULL // yAxisLabel -); - -// Set the position where the chart should appear in the worksheet -$chart->setTopLeftPosition('F2'); -$chart->setBottomRightPosition('O16'); - -// Add the chart to the worksheet -$objWorksheet->addChart($chart); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->setIncludeCharts(TRUE); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-line.php b/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-line.php deleted file mode 100644 index 145ae72e8fd..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-line.php +++ /dev/null @@ -1,142 +0,0 @@ -<?php - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); -date_default_timezone_set('Europe/London'); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -$objPHPExcel = new PHPExcel(); -$objWorksheet = $objPHPExcel->getActiveSheet(); -$objWorksheet->fromArray( - array( - array('', 2010, 2011, 2012), - array('Q1', 12, 15, 21), - array('Q2', 56, 73, 86), - array('Q3', 52, 61, 69), - array('Q4', 30, 32, 0), - ) -); - -// Set the Labels for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesLabels = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$B$1', NULL, 1), // 2010 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C$1', NULL, 1), // 2011 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$D$1', NULL, 1), // 2012 -); -// Set the X-Axis Labels -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$xAxisTickValues = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$A$5', NULL, 4), // Q1 to Q4 -); -// Set the Data values for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesValues = array( - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$B$2:$B$5', NULL, 4), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$5', NULL, 4), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$D$2:$D$5', NULL, 4), -); - -// Build the dataseries -$series = new PHPExcel_Chart_DataSeries( - PHPExcel_Chart_DataSeries::TYPE_LINECHART, // plotType - PHPExcel_Chart_DataSeries::GROUPING_STACKED, // plotGrouping - range(0, count($dataSeriesValues)-1), // plotOrder - $dataSeriesLabels, // plotLabel - $xAxisTickValues, // plotCategory - $dataSeriesValues // plotValues -); - -// Set the series in the plot area -$plotArea = new PHPExcel_Chart_PlotArea(NULL, array($series)); -// Set the chart legend -$legend = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_TOPRIGHT, NULL, false); - -$title = new PHPExcel_Chart_Title('Test Stacked Line Chart'); -$yAxisLabel = new PHPExcel_Chart_Title('Value ($k)'); - - -// Create the chart -$chart = new PHPExcel_Chart( - 'chart1', // name - $title, // title - $legend, // legend - $plotArea, // plotArea - true, // plotVisibleOnly - 0, // displayBlanksAs - NULL, // xAxisLabel - $yAxisLabel // yAxisLabel -); - -// Set the position where the chart should appear in the worksheet -$chart->setTopLeftPosition('A7'); -$chart->setBottomRightPosition('H20'); - -// Add the chart to the worksheet -$objWorksheet->addChart($chart); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->setIncludeCharts(TRUE); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-multiple-charts.php b/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-multiple-charts.php deleted file mode 100644 index a95c2763323..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-multiple-charts.php +++ /dev/null @@ -1,220 +0,0 @@ -<?php - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); -date_default_timezone_set('Europe/London'); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -$objPHPExcel = new PHPExcel(); -$objWorksheet = $objPHPExcel->getActiveSheet(); -$objWorksheet->fromArray( - array( - array('', 2010, 2011, 2012), - array('Q1', 12, 15, 21), - array('Q2', 56, 73, 86), - array('Q3', 52, 61, 69), - array('Q4', 30, 32, 0), - ) -); - - -// Set the Labels for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesLabels1 = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$B$1', NULL, 1), // 2010 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C$1', NULL, 1), // 2011 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$D$1', NULL, 1), // 2012 -); -// Set the X-Axis Labels -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$xAxisTickValues1 = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$A$5', NULL, 4), // Q1 to Q4 -); -// Set the Data values for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesValues1 = array( - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$B$2:$B$5', NULL, 4), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$5', NULL, 4), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$D$2:$D$5', NULL, 4), -); - -// Build the dataseries -$series1 = new PHPExcel_Chart_DataSeries( - PHPExcel_Chart_DataSeries::TYPE_AREACHART, // plotType - PHPExcel_Chart_DataSeries::GROUPING_PERCENT_STACKED, // plotGrouping - range(0, count($dataSeriesValues1)-1), // plotOrder - $dataSeriesLabels1, // plotLabel - $xAxisTickValues1, // plotCategory - $dataSeriesValues1 // plotValues -); - -// Set the series in the plot area -$plotArea1 = new PHPExcel_Chart_PlotArea(NULL, array($series1)); -// Set the chart legend -$legend1 = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_TOPRIGHT, NULL, false); - -$title1 = new PHPExcel_Chart_Title('Test %age-Stacked Area Chart'); -$yAxisLabel1 = new PHPExcel_Chart_Title('Value ($k)'); - - -// Create the chart -$chart1 = new PHPExcel_Chart( - 'chart1', // name - $title1, // title - $legend1, // legend - $plotArea1, // plotArea - true, // plotVisibleOnly - 0, // displayBlanksAs - NULL, // xAxisLabel - $yAxisLabel1 // yAxisLabel -); - -// Set the position where the chart should appear in the worksheet -$chart1->setTopLeftPosition('A7'); -$chart1->setBottomRightPosition('H20'); - -// Add the chart to the worksheet -$objWorksheet->addChart($chart1); - - -// Set the Labels for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesLabels2 = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$B$1', NULL, 1), // 2010 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C$1', NULL, 1), // 2011 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$D$1', NULL, 1), // 2012 -); -// Set the X-Axis Labels -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$xAxisTickValues2 = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$A$5', NULL, 4), // Q1 to Q4 -); -// Set the Data values for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesValues2 = array( - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$B$2:$B$5', NULL, 4), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$5', NULL, 4), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$D$2:$D$5', NULL, 4), -); - -// Build the dataseries -$series2 = new PHPExcel_Chart_DataSeries( - PHPExcel_Chart_DataSeries::TYPE_BARCHART, // plotType - PHPExcel_Chart_DataSeries::GROUPING_STANDARD, // plotGrouping - range(0, count($dataSeriesValues2)-1), // plotOrder - $dataSeriesLabels2, // plotLabel - $xAxisTickValues2, // plotCategory - $dataSeriesValues2 // plotValues -); -// Set additional dataseries parameters -// Make it a vertical column rather than a horizontal bar graph -$series2->setPlotDirection(PHPExcel_Chart_DataSeries::DIRECTION_COL); - -// Set the series in the plot area -$plotArea2 = new PHPExcel_Chart_PlotArea(NULL, array($series2)); -// Set the chart legend -$legend2 = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_RIGHT, NULL, false); - -$title2 = new PHPExcel_Chart_Title('Test Column Chart'); -$yAxisLabel2 = new PHPExcel_Chart_Title('Value ($k)'); - - -// Create the chart -$chart2 = new PHPExcel_Chart( - 'chart2', // name - $title2, // title - $legend2, // legend - $plotArea2, // plotArea - true, // plotVisibleOnly - 0, // displayBlanksAs - NULL, // xAxisLabel - $yAxisLabel2 // yAxisLabel -); - -// Set the position where the chart should appear in the worksheet -$chart2->setTopLeftPosition('I7'); -$chart2->setBottomRightPosition('P20'); - -// Add the chart to the worksheet -$objWorksheet->addChart($chart2); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->setIncludeCharts(TRUE); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-pie.php b/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-pie.php deleted file mode 100644 index 5af02905bfc..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-pie.php +++ /dev/null @@ -1,215 +0,0 @@ -<?php - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); -date_default_timezone_set('Europe/London'); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -$objPHPExcel = new PHPExcel(); -$objWorksheet = $objPHPExcel->getActiveSheet(); -$objWorksheet->fromArray( - array( - array('', 2010, 2011, 2012), - array('Q1', 12, 15, 21), - array('Q2', 56, 73, 86), - array('Q3', 52, 61, 69), - array('Q4', 30, 32, 0), - ) -); - - -// Set the Labels for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesLabels1 = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C$1', NULL, 1), // 2011 -); -// Set the X-Axis Labels -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$xAxisTickValues1 = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$A$5', NULL, 4), // Q1 to Q4 -); -// Set the Data values for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesValues1 = array( - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$5', NULL, 4), -); - -// Build the dataseries -$series1 = new PHPExcel_Chart_DataSeries( - PHPExcel_Chart_DataSeries::TYPE_PIECHART, // plotType - NULL, // plotGrouping (Pie charts don't have any grouping) - range(0, count($dataSeriesValues1)-1), // plotOrder - $dataSeriesLabels1, // plotLabel - $xAxisTickValues1, // plotCategory - $dataSeriesValues1 // plotValues -); - -// Set up a layout object for the Pie chart -$layout1 = new PHPExcel_Chart_Layout(); -$layout1->setShowVal(TRUE); -$layout1->setShowPercent(TRUE); - -// Set the series in the plot area -$plotArea1 = new PHPExcel_Chart_PlotArea($layout1, array($series1)); -// Set the chart legend -$legend1 = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_RIGHT, NULL, false); - -$title1 = new PHPExcel_Chart_Title('Test Pie Chart'); - - -// Create the chart -$chart1 = new PHPExcel_Chart( - 'chart1', // name - $title1, // title - $legend1, // legend - $plotArea1, // plotArea - true, // plotVisibleOnly - 0, // displayBlanksAs - NULL, // xAxisLabel - NULL // yAxisLabel - Pie charts don't have a Y-Axis -); - -// Set the position where the chart should appear in the worksheet -$chart1->setTopLeftPosition('A7'); -$chart1->setBottomRightPosition('H20'); - -// Add the chart to the worksheet -$objWorksheet->addChart($chart1); - - -// Set the Labels for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesLabels2 = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C$1', NULL, 1), // 2011 -); -// Set the X-Axis Labels -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$xAxisTickValues2 = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$A$5', NULL, 4), // Q1 to Q4 -); -// Set the Data values for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesValues2 = array( - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$5', NULL, 4), -); - -// Build the dataseries -$series2 = new PHPExcel_Chart_DataSeries( - PHPExcel_Chart_DataSeries::TYPE_DONUTCHART, // plotType - NULL, // plotGrouping (Donut charts don't have any grouping) - range(0, count($dataSeriesValues2)-1), // plotOrder - $dataSeriesLabels2, // plotLabel - $xAxisTickValues2, // plotCategory - $dataSeriesValues2 // plotValues -); - -// Set up a layout object for the Pie chart -$layout2 = new PHPExcel_Chart_Layout(); -$layout2->setShowVal(TRUE); -$layout2->setShowCatName(TRUE); - -// Set the series in the plot area -$plotArea2 = new PHPExcel_Chart_PlotArea($layout2, array($series2)); - -$title2 = new PHPExcel_Chart_Title('Test Donut Chart'); - - -// Create the chart -$chart2 = new PHPExcel_Chart( - 'chart2', // name - $title2, // title - NULL, // legend - $plotArea2, // plotArea - true, // plotVisibleOnly - 0, // displayBlanksAs - NULL, // xAxisLabel - NULL // yAxisLabel - Like Pie charts, Donut charts don't have a Y-Axis -); - -// Set the position where the chart should appear in the worksheet -$chart2->setTopLeftPosition('I7'); -$chart2->setBottomRightPosition('P20'); - -// Add the chart to the worksheet -$objWorksheet->addChart($chart2); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->setIncludeCharts(TRUE); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-radar.php b/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-radar.php deleted file mode 100644 index b8b427f3b12..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-radar.php +++ /dev/null @@ -1,154 +0,0 @@ -<?php - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); -date_default_timezone_set('Europe/London'); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -$objPHPExcel = new PHPExcel(); -$objWorksheet = $objPHPExcel->getActiveSheet(); -$objWorksheet->fromArray( - array( - array('', 2010, 2011, 2012), - array('Jan', 47, 45, 71), - array('Feb', 56, 73, 86), - array('Mar', 52, 61, 69), - array('Apr', 40, 52, 60), - array('May', 42, 55, 71), - array('Jun', 58, 63, 76), - array('Jul', 53, 61, 89), - array('Aug', 46, 69, 85), - array('Sep', 62, 75, 81), - array('Oct', 51, 70, 96), - array('Nov', 55, 66, 89), - array('Dec', 68, 62, 0), - ) -); - - -// Set the Labels for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesLabels = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C$1', NULL, 1), // 2011 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$D$1', NULL, 1), // 2012 -); -// Set the X-Axis Labels -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$xAxisTickValues = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$A$13', NULL, 12), // Jan to Dec - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$A$13', NULL, 12), // Jan to Dec -); -// Set the Data values for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesValues = array( - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$13', NULL, 12), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$D$2:$D$13', NULL, 12), -); - -// Build the dataseries -$series = new PHPExcel_Chart_DataSeries( - PHPExcel_Chart_DataSeries::TYPE_RADARCHART, // plotType - NULL, // plotGrouping (Radar charts don't have any grouping) - range(0, count($dataSeriesValues)-1), // plotOrder - $dataSeriesLabels, // plotLabel - $xAxisTickValues, // plotCategory - $dataSeriesValues, // plotValues - NULL, // smooth line - PHPExcel_Chart_DataSeries::STYLE_MARKER // plotStyle -); - -// Set up a layout object for the Pie chart -$layout = new PHPExcel_Chart_Layout(); - -// Set the series in the plot area -$plotArea = new PHPExcel_Chart_PlotArea($layout, array($series)); -// Set the chart legend -$legend = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_RIGHT, NULL, false); - -$title = new PHPExcel_Chart_Title('Test Radar Chart'); - - -// Create the chart -$chart = new PHPExcel_Chart( - 'chart1', // name - $title, // title - $legend, // legend - $plotArea, // plotArea - true, // plotVisibleOnly - 0, // displayBlanksAs - NULL, // xAxisLabel - NULL // yAxisLabel - Radar charts don't have a Y-Axis -); - -// Set the position where the chart should appear in the worksheet -$chart->setTopLeftPosition('F2'); -$chart->setBottomRightPosition('M15'); - -// Add the chart to the worksheet -$objWorksheet->addChart($chart); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->setIncludeCharts(TRUE); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-scatter.php b/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-scatter.php deleted file mode 100644 index 250c61d7e4c..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-scatter.php +++ /dev/null @@ -1,138 +0,0 @@ -<?php - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); -date_default_timezone_set('Europe/London'); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -$objPHPExcel = new PHPExcel(); -$objWorksheet = $objPHPExcel->getActiveSheet(); -$objWorksheet->fromArray( - array( - array('', 2010, 2011, 2012), - array('Q1', 12, 15, 21), - array('Q2', 56, 73, 86), - array('Q3', 52, 61, 69), - array('Q4', 30, 32, 0), - ) -); - -// Set the Labels for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesLabels = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$B$1', NULL, 1), // 2010 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C$1', NULL, 1), // 2011 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$D$1', NULL, 1), // 2012 -); -// Set the X-Axis Labels -$xAxisTickValues = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$A$5', NULL, 4), // Q1 to Q4 -); -// Set the Data values for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesValues = array( - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$B$2:$B$5', NULL, 4), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$5', NULL, 4), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$D$2:$D$5', NULL, 4), -); - -// Build the dataseries -$series = new PHPExcel_Chart_DataSeries( - PHPExcel_Chart_DataSeries::TYPE_SCATTERCHART, // plotType - NULL, // plotGrouping (Scatter charts don't have any grouping) - range(0, count($dataSeriesValues)-1), // plotOrder - $dataSeriesLabels, // plotLabel - $xAxisTickValues, // plotCategory - $dataSeriesValues, // plotValues - NULL, // smooth line - PHPExcel_Chart_DataSeries::STYLE_LINEMARKER // plotStyle -); - -// Set the series in the plot area -$plotArea = new PHPExcel_Chart_PlotArea(NULL, array($series)); -// Set the chart legend -$legend = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_TOPRIGHT, NULL, false); - -$title = new PHPExcel_Chart_Title('Test Scatter Chart'); -$yAxisLabel = new PHPExcel_Chart_Title('Value ($k)'); - - -// Create the chart -$chart = new PHPExcel_Chart( - 'chart1', // name - $title, // title - $legend, // legend - $plotArea, // plotArea - true, // plotVisibleOnly - 0, // displayBlanksAs - NULL, // xAxisLabel - $yAxisLabel // yAxisLabel -); - -// Set the position where the chart should appear in the worksheet -$chart->setTopLeftPosition('A7'); -$chart->setBottomRightPosition('H20'); - -// Add the chart to the worksheet -$objWorksheet->addChart($chart); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->setIncludeCharts(TRUE); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-stock.php b/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-stock.php deleted file mode 100644 index b38fd518153..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-stock.php +++ /dev/null @@ -1,151 +0,0 @@ -<?php - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); -date_default_timezone_set('Europe/London'); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -$objPHPExcel = new PHPExcel(); -$objWorksheet = $objPHPExcel->getActiveSheet(); -$objWorksheet->fromArray( - array( - array('Counts', 'Max', 'Min', 'Min Threshold', 'Max Threshold' ), - array(10, 10, 5, 0, 50 ), - array(30, 20, 10, 0, 50 ), - array(20, 30, 15, 0, 50 ), - array(40, 10, 0, 0, 50 ), - array(100, 40, 5, 0, 50 ), - ), null, 'A1', true -); -$objWorksheet->getStyle('B2:E6')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER_00); - - -// Set the Labels for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesLabels = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$B$1', NULL, 1), //Max / Open - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C$1', NULL, 1), //Min / Close - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$D$1', NULL, 1), //Min Threshold / Min - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$E$1', NULL, 1), //Max Threshold / Max -); -// Set the X-Axis Labels -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$xAxisTickValues = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$A$6', NULL, 5), // Counts -); -// Set the Data values for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesValues = array( - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$B$2:$B$6', NULL, 5), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$6', NULL, 5), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$D$2:$D$6', NULL, 5), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$E$2:$E$6', NULL, 5), -); - -// Build the dataseries -$series = new PHPExcel_Chart_DataSeries( - PHPExcel_Chart_DataSeries::TYPE_STOCKCHART, // plotType - null, // plotGrouping - if we set this to not null, then xlsx throws error - range(0, count($dataSeriesValues)-1), // plotOrder - $dataSeriesLabels, // plotLabel - $xAxisTickValues, // plotCategory - $dataSeriesValues // plotValues -); - -// Set the series in the plot area -$plotArea = new PHPExcel_Chart_PlotArea(NULL, array($series)); -// Set the chart legend -$legend = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_RIGHT, NULL, false); - -$title = new PHPExcel_Chart_Title('Test Stock Chart'); -$xAxisLabel = new PHPExcel_Chart_Title('Counts'); -$yAxisLabel = new PHPExcel_Chart_Title('Values'); - -// Create the chart -$chart = new PHPExcel_Chart( - 'stock-chart', // name - $title, // title - $legend, // legend - $plotArea, // plotArea - true, // plotVisibleOnly - 0, // displayBlanksAs - $xAxisLabel, // xAxisLabel - $yAxisLabel // yAxisLabel -); - -// Set the position where the chart should appear in the worksheet -$chart->setTopLeftPosition('A7'); -$chart->setBottomRightPosition('H20'); - -// Add the chart to the worksheet -$objWorksheet->addChart($chart); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->setIncludeCharts(TRUE); -$filename = str_replace('.php', '.xlsx', __FILE__); -if(file_exists($filename)) { - unlink($filename); -} -$objWriter->save($filename); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/34chartupdate.php b/htdocs/includes/phpoffice/phpexcel/Examples/34chartupdate.php deleted file mode 100644 index cb586a31867..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/34chartupdate.php +++ /dev/null @@ -1,78 +0,0 @@ -<?php - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); -date_default_timezone_set('Europe/London'); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - -if (!file_exists("33chartcreate-bar.xlsx")) { - exit("Please run 33chartcreate-bar.php first." . EOL); -} - -echo date('H:i:s') , " Load from Excel2007 file" , EOL; -$objReader = PHPExcel_IOFactory::createReader("Excel2007"); -$objReader->setIncludeCharts(TRUE); -$objPHPExcel = $objReader->load("33chartcreate-bar.xlsx"); - - -echo date('H:i:s') , " Update cell data values that are displayed in the chart" , EOL; -$objWorksheet = $objPHPExcel->getActiveSheet(); -$objWorksheet->fromArray( - array( - array(50-12, 50-15, 50-21), - array(50-56, 50-73, 50-86), - array(50-52, 50-61, 50-69), - array(50-30, 50-32, 50), - ), - NULL, - 'B2' -); - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->setIncludeCharts(TRUE); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/35chartrender.php b/htdocs/includes/phpoffice/phpexcel/Examples/35chartrender.php deleted file mode 100644 index f0e79636b11..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/35chartrender.php +++ /dev/null @@ -1,134 +0,0 @@ -<?php - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); -date_default_timezone_set('Europe/London'); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Include path **/ -set_include_path(get_include_path() . PATH_SEPARATOR . dirname(__FILE__) . '/../Classes/'); - -/** PHPExcel_IOFactory */ -include 'PHPExcel/IOFactory.php'; - - -// Change these values to select the Rendering library that you wish to use -// and its directory location on your server -$rendererName = PHPExcel_Settings::CHART_RENDERER_JPGRAPH; -$rendererLibrary = 'jpgraph3.5.0b1/src/'; -$rendererLibraryPath = '/php/libraries/Charts/' . $rendererLibrary; - - -if (!PHPExcel_Settings::setChartRenderer( - $rendererName, - $rendererLibraryPath - )) { - die( - 'NOTICE: Please set the $rendererName and $rendererLibraryPath values' . - EOL . - 'at the top of this script as appropriate for your directory structure' - ); -} - - -$inputFileType = 'Excel2007'; -$inputFileNames = 'templates/32readwrite*[0-9].xlsx'; - - if ((isset($argc)) && ($argc > 1)) { - $inputFileNames = array(); - for($i = 1; $i < $argc; ++$i) { - $inputFileNames[] = dirname(__FILE__) . '/templates/' . $argv[$i]; - } -} else { - $inputFileNames = glob($inputFileNames); -} -foreach($inputFileNames as $inputFileName) { - $inputFileNameShort = basename($inputFileName); - - if (!file_exists($inputFileName)) { - echo date('H:i:s') , " File " , $inputFileNameShort , ' does not exist' , EOL; - continue; - } - - echo date('H:i:s') , " Load Test from $inputFileType file " , $inputFileNameShort , EOL; - - $objReader = PHPExcel_IOFactory::createReader($inputFileType); - $objReader->setIncludeCharts(TRUE); - $objPHPExcel = $objReader->load($inputFileName); - - - echo date('H:i:s') , " Iterate worksheets looking at the charts" , EOL; - foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) { - $sheetName = $worksheet->getTitle(); - echo 'Worksheet: ' , $sheetName , EOL; - - $chartNames = $worksheet->getChartNames(); - if(empty($chartNames)) { - echo ' There are no charts in this worksheet' , EOL; - } else { - natsort($chartNames); - foreach($chartNames as $i => $chartName) { - $chart = $worksheet->getChartByName($chartName); - if (!is_null($chart->getTitle())) { - $caption = '"' . implode(' ',$chart->getTitle()->getCaption()) . '"'; - } else { - $caption = 'Untitled'; - } - echo ' ' , $chartName , ' - ' , $caption , EOL; - echo str_repeat(' ',strlen($chartName)+3); - - $jpegFile = '35'.str_replace('.xlsx', '.jpg', substr($inputFileNameShort,2)); - if (file_exists($jpegFile)) { - unlink($jpegFile); - } - try { - $chart->render($jpegFile); - } catch (Exception $e) { - echo 'Error rendering chart: ',$e->getMessage(); - } - } - } - } - - - $objPHPExcel->disconnectWorksheets(); - unset($objPHPExcel); -} - -// Echo memory peak usage -echo date('H:i:s') , ' Peak memory usage: ' , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done rendering charts as images" , EOL; -echo 'Image files have been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/36chartreadwriteHTML.php b/htdocs/includes/phpoffice/phpexcel/Examples/36chartreadwriteHTML.php deleted file mode 100644 index b4bae11cba2..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/36chartreadwriteHTML.php +++ /dev/null @@ -1,151 +0,0 @@ -<?php - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); -date_default_timezone_set('Europe/London'); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Include path **/ -set_include_path(get_include_path() . PATH_SEPARATOR . dirname(__FILE__) . '/../Classes/'); - -/** PHPExcel_IOFactory */ -include 'PHPExcel/IOFactory.php'; - - -// Change these values to select the Rendering library that you wish to use -// and its directory location on your server -$rendererName = PHPExcel_Settings::CHART_RENDERER_JPGRAPH; -$rendererLibrary = 'jpgraph3.5.0b1/src'; -$rendererLibraryPath = '/php/libraries/Charts/' . $rendererLibrary; - - -if (!PHPExcel_Settings::setChartRenderer( - $rendererName, - $rendererLibraryPath - )) { - die( - 'NOTICE: Please set the $rendererName and $rendererLibraryPath values' . - EOL . - 'at the top of this script as appropriate for your directory structure' - ); -} - - -$inputFileType = 'Excel2007'; -$inputFileNames = 'templates/36write*.xlsx'; - -if ((isset($argc)) && ($argc > 1)) { - $inputFileNames = array(); - for($i = 1; $i < $argc; ++$i) { - $inputFileNames[] = dirname(__FILE__) . '/templates/' . $argv[$i]; - } -} else { - $inputFileNames = glob($inputFileNames); -} -foreach($inputFileNames as $inputFileName) { - $inputFileNameShort = basename($inputFileName); - - if (!file_exists($inputFileName)) { - echo date('H:i:s') , " File " , $inputFileNameShort , ' does not exist' , EOL; - continue; - } - - echo date('H:i:s') , " Load Test from $inputFileType file " , $inputFileNameShort , EOL; - - $objReader = PHPExcel_IOFactory::createReader($inputFileType); - $objReader->setIncludeCharts(TRUE); - $objPHPExcel = $objReader->load($inputFileName); - - - echo date('H:i:s') , " Iterate worksheets looking at the charts" , EOL; - foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) { - $sheetName = $worksheet->getTitle(); - echo 'Worksheet: ' , $sheetName , EOL; - - $chartNames = $worksheet->getChartNames(); - if(empty($chartNames)) { - echo ' There are no charts in this worksheet' , EOL; - } else { - natsort($chartNames); - foreach($chartNames as $i => $chartName) { - $chart = $worksheet->getChartByName($chartName); - if (!is_null($chart->getTitle())) { - $caption = '"' . implode(' ',$chart->getTitle()->getCaption()) . '"'; - } else { - $caption = 'Untitled'; - } - echo ' ' , $chartName , ' - ' , $caption , EOL; - echo str_repeat(' ',strlen($chartName)+3); - $groupCount = $chart->getPlotArea()->getPlotGroupCount(); - if ($groupCount == 1) { - $chartType = $chart->getPlotArea()->getPlotGroupByIndex(0)->getPlotType(); - echo ' ' , $chartType , EOL; - } else { - $chartTypes = array(); - for($i = 0; $i < $groupCount; ++$i) { - $chartTypes[] = $chart->getPlotArea()->getPlotGroupByIndex($i)->getPlotType(); - } - $chartTypes = array_unique($chartTypes); - if (count($chartTypes) == 1) { - $chartType = 'Multiple Plot ' . array_pop($chartTypes); - echo ' ' , $chartType , EOL; - } elseif (count($chartTypes) == 0) { - echo ' *** Type not yet implemented' , EOL; - } else { - echo ' Combination Chart' , EOL; - } - } - } - } - } - - - $outputFileName = str_replace('.xlsx', '.html', basename($inputFileName)); - - echo date('H:i:s') , " Write Tests to HTML file " , EOL; - $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'HTML'); - $objWriter->setIncludeCharts(TRUE); - $objWriter->save($outputFileName); - echo date('H:i:s') , " File written to " , $outputFileName , EOL; - - $objPHPExcel->disconnectWorksheets(); - unset($objPHPExcel); -} - -// Echo memory peak usage -echo date('H:i:s') , ' Peak memory usage: ' , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/36chartreadwritePDF.php b/htdocs/includes/phpoffice/phpexcel/Examples/36chartreadwritePDF.php deleted file mode 100644 index 10d62cd04ba..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/36chartreadwritePDF.php +++ /dev/null @@ -1,174 +0,0 @@ -<?php - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); -date_default_timezone_set('Europe/London'); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Include path **/ -set_include_path(get_include_path() . PATH_SEPARATOR . dirname(__FILE__) . '/../Classes/'); - -/** PHPExcel_IOFactory */ -include 'PHPExcel/IOFactory.php'; - - -// Change these values to select the Rendering library that you wish to use -// for PDF files, and its directory location on your server -//$rendererName = PHPExcel_Settings::PDF_RENDERER_TCPDF; -$rendererName = PHPExcel_Settings::PDF_RENDERER_MPDF; -//$rendererName = PHPExcel_Settings::PDF_RENDERER_DOMPDF; -//$rendererLibrary = 'tcPDF5.9'; -$rendererLibrary = 'mPDF5.4'; -//$rendererLibrary = 'domPDF0.6.0beta3'; -$rendererLibraryPath = '/php/libraries/PDF/' . $rendererLibrary; - - -if (!PHPExcel_Settings::setPdfRenderer( - $rendererName, - $rendererLibraryPath - )) { - die( - 'NOTICE: Please set the $rendererName and $rendererLibraryPath values' . - EOL . - 'at the top of this script as appropriate for your directory structure' - ); -} - - -// Change these values to select the Rendering library that you wish to use -// for Chart images, and its directory location on your server -$rendererName = PHPExcel_Settings::CHART_RENDERER_JPGRAPH; -$rendererLibrary = 'jpgraph3.5.0b1/src'; -$rendererLibraryPath = '/php/libraries/Charts/' . $rendererLibrary; - - -if (!PHPExcel_Settings::setChartRenderer( - $rendererName, - $rendererLibraryPath - )) { - die( - 'NOTICE: Please set the $rendererName and $rendererLibraryPath values' . - EOL . - 'at the top of this script as appropriate for your directory structure' - ); -} - - -$inputFileType = 'Excel2007'; -$inputFileNames = 'templates/36write*.xlsx'; - -if ((isset($argc)) && ($argc > 1)) { - $inputFileNames = array(); - for($i = 1; $i < $argc; ++$i) { - $inputFileNames[] = dirname(__FILE__) . '/templates/' . $argv[$i]; - } -} else { - $inputFileNames = glob($inputFileNames); -} -foreach($inputFileNames as $inputFileName) { - $inputFileNameShort = basename($inputFileName); - - if (!file_exists($inputFileName)) { - echo date('H:i:s') , " File " , $inputFileNameShort , ' does not exist' , EOL; - continue; - } - - echo date('H:i:s') , " Load Test from $inputFileType file " , $inputFileNameShort , EOL; - - $objReader = PHPExcel_IOFactory::createReader($inputFileType); - $objReader->setIncludeCharts(TRUE); - $objPHPExcel = $objReader->load($inputFileName); - - - echo date('H:i:s') , " Iterate worksheets looking at the charts" , EOL; - foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) { - $sheetName = $worksheet->getTitle(); - echo 'Worksheet: ' , $sheetName , EOL; - - $chartNames = $worksheet->getChartNames(); - if(empty($chartNames)) { - echo ' There are no charts in this worksheet' , EOL; - } else { - natsort($chartNames); - foreach($chartNames as $i => $chartName) { - $chart = $worksheet->getChartByName($chartName); - if (!is_null($chart->getTitle())) { - $caption = '"' . implode(' ',$chart->getTitle()->getCaption()) . '"'; - } else { - $caption = 'Untitled'; - } - echo ' ' , $chartName , ' - ' , $caption , EOL; - echo str_repeat(' ',strlen($chartName)+3); - $groupCount = $chart->getPlotArea()->getPlotGroupCount(); - if ($groupCount == 1) { - $chartType = $chart->getPlotArea()->getPlotGroupByIndex(0)->getPlotType(); - echo ' ' , $chartType , EOL; - } else { - $chartTypes = array(); - for($i = 0; $i < $groupCount; ++$i) { - $chartTypes[] = $chart->getPlotArea()->getPlotGroupByIndex($i)->getPlotType(); - } - $chartTypes = array_unique($chartTypes); - if (count($chartTypes) == 1) { - $chartType = 'Multiple Plot ' . array_pop($chartTypes); - echo ' ' , $chartType , EOL; - } elseif (count($chartTypes) == 0) { - echo ' *** Type not yet implemented' , EOL; - } else { - echo ' Combination Chart' , EOL; - } - } - } - } - } - - - $outputFileName = str_replace('.xlsx', '.pdf', basename($inputFileName)); - - echo date('H:i:s') , " Write Tests to HTML file " , EOL; - $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'PDF'); - $objWriter->setIncludeCharts(TRUE); - $objWriter->save($outputFileName); - echo date('H:i:s') , " File written to " , $outputFileName , EOL; - - $objPHPExcel->disconnectWorksheets(); - unset($objPHPExcel); -} - -// Echo memory peak usage -echo date('H:i:s') , ' Peak memory usage: ' , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/37page_layout_view.php b/htdocs/includes/phpoffice/phpexcel/Examples/37page_layout_view.php deleted file mode 100644 index 070f512a2a7..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/37page_layout_view.php +++ /dev/null @@ -1,83 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); -date_default_timezone_set('Europe/London'); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("PHPOffice") - ->setLastModifiedBy("PHPOffice") - ->setTitle("PHPExcel Test Document") - ->setSubject("PHPExcel Test Document") - ->setDescription("Test document for PHPExcel, generated using PHP classes.") - ->setKeywords("Office PHPExcel php") - ->setCategory("Test result file"); - - -// Add some data -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A1', 'Hello') - ->setCellValue('B2', 'world!'); - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - -// Set the page layout view as page layout -$objPHPExcel->getActiveSheet()->getSheetView()->setView(PHPExcel_Worksheet_SheetView::SHEETVIEW_PAGE_LAYOUT); - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -// Save Excel5 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/38cloneWorksheet.php b/htdocs/includes/phpoffice/phpexcel/Examples/38cloneWorksheet.php deleted file mode 100644 index 901b887eeb9..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/38cloneWorksheet.php +++ /dev/null @@ -1,118 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); -date_default_timezone_set('Europe/London'); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("PHPExcel Test Document") - ->setSubject("PHPExcel Test Document") - ->setDescription("Test document for PHPExcel, generated using PHP classes.") - ->setKeywords("office PHPExcel php") - ->setCategory("Test result file"); - - -// Add some data -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A1', 'Hello') - ->setCellValue('B2', 'world!') - ->setCellValue('C1', 'Hello') - ->setCellValue('D2', 'world!'); - -// Miscellaneous glyphs, UTF-8 -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A4', 'Miscellaneous glyphs') - ->setCellValue('A5', 'éàèùâêîôûëïüÿäöüç'); - - -$objPHPExcel->getActiveSheet()->setCellValue('A8',"Hello\nWorld"); -$objPHPExcel->getActiveSheet()->getRowDimension(8)->setRowHeight(-1); -$objPHPExcel->getActiveSheet()->getStyle('A8')->getAlignment()->setWrapText(true); - - -// Rename worksheet -echo date('H:i:s') , " Rename worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Simple'); - - -// Clone worksheet -echo date('H:i:s') , " Clone worksheet" , EOL; -$clonedSheet = clone $objPHPExcel->getActiveSheet(); -$clonedSheet - ->setCellValue('A1', 'Goodbye') - ->setCellValue('A2', 'cruel') - ->setCellValue('C1', 'Goodbye') - ->setCellValue('C2', 'cruel'); - -// Rename cloned worksheet -echo date('H:i:s') , " Rename cloned worksheet" , EOL; -$clonedSheet->setTitle('Simple Clone'); -$objPHPExcel->addSheet($clonedSheet); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/39dropdown.php b/htdocs/includes/phpoffice/phpexcel/Examples/39dropdown.php deleted file mode 100644 index 5dadc09922f..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/39dropdown.php +++ /dev/null @@ -1,175 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); -date_default_timezone_set('Europe/London'); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties() - ->setCreator("PHPOffice") - ->setLastModifiedBy("PHPOffice") - ->setTitle("PHPExcel Test Document") - ->setSubject("PHPExcel Test Document") - ->setDescription("Test document for PHPExcel, generated using PHP classes.") - ->setKeywords("Office PHPExcel php") - ->setCategory("Test result file"); - - -function transpose($value) { - return array($value); -} - -// Add some data -$continentColumn = 'D'; -$column = 'F'; - -// Set data for dropdowns -foreach(glob('./data/continents/*') as $key => $filename) { - $continent = pathinfo($filename, PATHINFO_FILENAME); - echo "Loading $continent", EOL; - $continent = str_replace(' ','_',$continent); - $countries = file($filename, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); - $countryCount = count($countries); - - // Transpose $countries from a row to a column array - $countries = array_map('transpose', $countries); - $objPHPExcel->getActiveSheet() - ->fromArray($countries, null, $column . '1'); - $objPHPExcel->addNamedRange( - new PHPExcel_NamedRange( - $continent, - $objPHPExcel->getActiveSheet(), $column . '1:' . $column . $countryCount - ) - ); - $objPHPExcel->getActiveSheet() - ->getColumnDimension($column) - ->setVisible(false); - - $objPHPExcel->getActiveSheet() - ->setCellValue($continentColumn . ($key+1), $continent); - - ++$column; -} - -// Hide the dropdown data -$objPHPExcel->getActiveSheet() - ->getColumnDimension($continentColumn) - ->setVisible(false); - -$objPHPExcel->addNamedRange( - new PHPExcel_NamedRange( - 'Continents', - $objPHPExcel->getActiveSheet(), $continentColumn . '1:' . $continentColumn . ($key+1) - ) -); - - -// Set selection cells -$objPHPExcel->getActiveSheet() - ->setCellValue('A1', 'Continent:'); -$objPHPExcel->getActiveSheet() - ->setCellValue('B1', 'Select continent'); -$objPHPExcel->getActiveSheet() - ->setCellValue('B3', '=' . $column . 1); -$objPHPExcel->getActiveSheet() - ->setCellValue('B3', 'Select country'); -$objPHPExcel->getActiveSheet() - ->getStyle('A1:A3') - ->getFont()->setBold(true); - -// Set linked validators -$objValidation = $objPHPExcel->getActiveSheet() - ->getCell('B1') - ->getDataValidation(); -$objValidation->setType( PHPExcel_Cell_DataValidation::TYPE_LIST ) - ->setErrorStyle( PHPExcel_Cell_DataValidation::STYLE_INFORMATION ) - ->setAllowBlank(false) - ->setShowInputMessage(true) - ->setShowErrorMessage(true) - ->setShowDropDown(true) - ->setErrorTitle('Input error') - ->setError('Continent is not in the list.') - ->setPromptTitle('Pick from the list') - ->setPrompt('Please pick a continent from the drop-down list.') - ->setFormula1('=Continents'); - -$objPHPExcel->getActiveSheet() - ->setCellValue('A3', 'Country:'); -$objPHPExcel->getActiveSheet() - ->getStyle('A3') - ->getFont()->setBold(true); - -$objValidation = $objPHPExcel->getActiveSheet() - ->getCell('B3') - ->getDataValidation(); -$objValidation->setType( PHPExcel_Cell_DataValidation::TYPE_LIST ) - ->setErrorStyle( PHPExcel_Cell_DataValidation::STYLE_INFORMATION ) - ->setAllowBlank(false) - ->setShowInputMessage(true) - ->setShowErrorMessage(true) - ->setShowDropDown(true) - ->setErrorTitle('Input error') - ->setError('Country is not in the list.') - ->setPromptTitle('Pick from the list') - ->setPrompt('Please pick a country from the drop-down list.') - ->setFormula1('=INDIRECT($B$1)'); - - -$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(12); -$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(30); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - -// Save Excel 2007 file -// This linked validation list method only seems to work for Excel2007, not for Excel5 -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/40duplicateStyle.php b/htdocs/includes/phpoffice/phpexcel/Examples/40duplicateStyle.php deleted file mode 100644 index be31951a492..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/40duplicateStyle.php +++ /dev/null @@ -1,51 +0,0 @@ -<?php -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); -date_default_timezone_set('Europe/London'); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); -$worksheet = $objPHPExcel->getActiveSheet(); - -echo date('H:i:s') , " Create styles array" , EOL; -$styles = array(); -for ($i = 0; $i < 10; $i++) { - $style = new PHPExcel_Style(); - $style->getFont()->setSize($i + 4); - $styles[] = $style; -} - -echo date('H:i:s') , " Add data (begin)" , EOL; -$t = microtime(true); -for ($col = 0; $col < 50; $col++) { - for ($row = 0; $row < 100; $row++) { - $str = ($row + $col); - $style = $styles[$row % 10]; - $coord = PHPExcel_Cell::stringFromColumnIndex($col) . ($row + 1); - $worksheet->setCellValue($coord, $str); - $worksheet->duplicateStyle($style, $coord); - } -} -$d = microtime(true) - $t; -echo date('H:i:s') , " Add data (end), time: " . round($d, 2) . " s", EOL; - - -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/41password.php b/htdocs/includes/phpoffice/phpexcel/Examples/41password.php deleted file mode 100644 index 7b03e4f9a1f..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/41password.php +++ /dev/null @@ -1,84 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -date_default_timezone_set('Europe/London'); - -include "05featuredemo.inc.php"; - -/** Include PHPExcel_IOFactory */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel/IOFactory.php'; - - -// Set password against the spreadsheet file -$objPHPExcel->getSecurity()->setLockWindows(true); -$objPHPExcel->getSecurity()->setLockStructure(true); -$objPHPExcel->getSecurity()->setWorkbookPassword('secret'); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/42richText.php b/htdocs/includes/phpoffice/phpexcel/Examples/42richText.php deleted file mode 100644 index 4e99b853544..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/42richText.php +++ /dev/null @@ -1,159 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); -ini_set('display_errors', TRUE); -ini_set('display_startup_errors', TRUE); -date_default_timezone_set('Europe/London'); - -define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("PHPExcel Test Document") - ->setSubject("PHPExcel Test Document") - ->setDescription("Test document for PHPExcel, generated using PHP classes.") - ->setKeywords("office PHPExcel php") - ->setCategory("Test result file"); - - -// Add some data -echo date('H:i:s') , " Add some data" , EOL; - -$html1='<font color="#0000ff"> -<h1 align="center">My very first example of rich text<br />generated from html markup</h1> -<p> -<font size="14" COLOR="rgb(0,255,128)"> -<b>This block</b> contains an <i>italicized</i> word; -while this block uses an <u>underline</u>. -</font> -</p> -<p align="right"><font size="9" color="red"> -I want to eat <ins><del>healthy food</del><strong>pizza</strong></ins>. -</font> -'; - -$html2='<p> -<font color="#ff0000"> - 100°C is a hot temperature -</font> -<br> -<font color="#0080ff"> - 10°F is cold -</font> -</p>'; - -$html3='2<sup>3</sup> equals 8'; - -$html4='H<sub>2</sub>SO<sub>4</sub> is the chemical formula for Sulphuric acid'; - - -$wizard = new PHPExcel_Helper_HTML; -$richText = $wizard->toRichTextObject($html1); - -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A1', $richText); - -$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(48); -$objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(-1); -$objPHPExcel->getActiveSheet()->getStyle('A1') - ->getAlignment() - ->setWrapText(true); - -$richText = $wizard->toRichTextObject($html2); - -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A2', $richText); - -$objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(-1); -$objPHPExcel->getActiveSheet()->getStyle('A2') - ->getAlignment() - ->setWrapText(true); - -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A3', $wizard->toRichTextObject($html3)); - -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A4', $wizard->toRichTextObject($html4)); - - -// Rename worksheet -echo date('H:i:s') , " Rename worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Simple'); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/Excel2003XMLReader.php b/htdocs/includes/phpoffice/phpexcel/Examples/Excel2003XMLReader.php deleted file mode 100644 index 99d6df80728..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/Excel2003XMLReader.php +++ /dev/null @@ -1,61 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); - -date_default_timezone_set('Europe/London'); - -/** PHPExcel_IOFactory */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel/IOFactory.php'; - - -echo date('H:i:s') , " Load from Excel2003XML file" , PHP_EOL; -$callStartTime = microtime(true); - -$objReader = PHPExcel_IOFactory::createReader('Excel2003XML'); -$objPHPExcel = $objReader->load("Excel2003XMLTest.xml"); - - -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; -echo 'Call time to read Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , PHP_EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , PHP_EOL; - - -echo date('H:i:s') , " Write to Excel5 format" , PHP_EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', __FILE__) , PHP_EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , PHP_EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , PHP_EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/Excel2003XMLTest.xml b/htdocs/includes/phpoffice/phpexcel/Examples/Excel2003XMLTest.xml deleted file mode 100644 index fb2d305c379..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/Excel2003XMLTest.xml +++ /dev/null @@ -1 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?><?mso-application progid="Excel.Sheet"?><Workbook xmlns:c="urn:schemas-microsoft-com:office:component:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:x2="http://schemas.microsoft.com/office/excel/2003/xml" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:x="urn:schemas-microsoft-com:office:excel"><OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office"><Colors><Color><Index>3</Index><RGB>#000000</RGB></Color><Color><Index>4</Index><RGB>#0000ff</RGB></Color><Color><Index>5</Index><RGB>#008000</RGB></Color><Color><Index>6</Index><RGB>#00ccff</RGB></Color><Color><Index>7</Index><RGB>#800080</RGB></Color><Color><Index>8</Index><RGB>#993366</RGB></Color><Color><Index>9</Index><RGB>#c0c0c0</RGB></Color><Color><Index>10</Index><RGB>#c47512</RGB></Color><Color><Index>11</Index><RGB>#ccffcc</RGB></Color><Color><Index>12</Index><RGB>#ddbc7d</RGB></Color><Color><Index>13</Index><RGB>#ff0000</RGB></Color><Color><Index>14</Index><RGB>#ff00ff</RGB></Color><Color><Index>15</Index><RGB>#ff6600</RGB></Color><Color><Index>16</Index><RGB>#ff9900</RGB></Color><Color><Index>17</Index><RGB>#ff99cc</RGB></Color><Color><Index>18</Index><RGB>#ffff00</RGB></Color></Colors></OfficeDocumentSettings><ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel"><WindowHeight>9000</WindowHeight><WindowWidth>13860</WindowWidth><WindowTopX>240</WindowTopX><WindowTopY>75</WindowTopY><ProtectStructure>False</ProtectStructure><ProtectWindows>False</ProtectWindows></ExcelWorkbook><Styles><Style ss:ID="Default" ss:Name="Default"/><Style ss:ID="Result" ss:Name="Result"><Font ss:Bold="1" ss:Italic="1" ss:Underline="Single"/></Style><Style ss:ID="Result2" ss:Name="Result2"><Font ss:Bold="1" ss:Italic="1" ss:Underline="Single"/><NumberFormat ss:Format="Currency"/></Style><Style ss:ID="Heading" ss:Name="Heading"><Font ss:Bold="1" ss:Italic="1" ss:Size="16"/></Style><Style ss:ID="Heading1" ss:Name="Heading1"><Font ss:Bold="1" ss:Italic="1" ss:Size="16"/></Style><Style ss:ID="Gnumeric-default" ss:Name="Gnumeric-default"><Font ss:Color="#000000" ss:FontName="Sans" ss:Size="10"/></Style><Style ss:ID="co1"/><Style ss:ID="co2"/><Style ss:ID="co3"/><Style ss:ID="co4"/><Style ss:ID="co5"/><Style ss:ID="co6"/><Style ss:ID="co7"/><Style ss:ID="co8"/><Style ss:ID="co9"/><Style ss:ID="ta1"/><Style ss:ID="ce1"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders/><Font ss:Bold="1" ss:Color="#ff0000" ss:FontName="Arial1" ss:Size="11"/></Style><Style ss:ID="ce2"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders/><Font ss:Bold="1" ss:Color="#000000" ss:FontName="Arial1" ss:Italic="1" ss:Size="11"/></Style><Style ss:ID="ce3"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders/><Font ss:Color="#000000" ss:FontName="Arial1" ss:Size="11" ss:Underline="Single"/></Style><Style ss:ID="ce4"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders/><Font ss:Color="#000000" ss:FontName="Arial1" ss:Size="11"/></Style><Style ss:ID="ce5"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders/><Font ss:Color="#000000" ss:FontName="Calibri" ss:Size="11"/></Style><Style ss:ID="ce6"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders/><Font ss:Color="#000000" ss:FontName="Calibri" ss:Size="11" ss:Underline="Single"/></Style><Style ss:ID="ce7"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders/><Font ss:Color="#000000" ss:FontName="Calibri" ss:Size="11" ss:Underline="Double"/></Style><Style ss:ID="ce8"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders/><Font ss:Color="#000000" ss:FontName="Calibri" ss:Size="11" ss:StrikeThrough="1"/></Style><Style ss:ID="ce9"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders/><Font ss:Color="#000000" ss:FontName="Arial1" ss:Size="11"/><NumberFormat ss:Format="Short Date"/></Style><Style ss:ID="ce10"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders/><Font ss:Color="#000000" ss:FontName="Arial1" ss:Size="11"/><NumberFormat ss:Format="Fixed"/></Style><Style ss:ID="ce11"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders/><Font ss:Color="#000000" ss:FontName="Calibri" ss:Size="11"/><NumberFormat ss:Format="Short Time"/></Style><Style ss:ID="ce12"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders/><Font ss:Color="#000000" ss:FontName="Calibri" ss:Size="11"/><NumberFormat ss:Format="General Date"/></Style><Style ss:ID="ce13"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders/><Font ss:Color="#000000" ss:FontName="Sans" ss:Size="10"/></Style><Style ss:ID="ce14"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders/><Font ss:Color="#000000" ss:FontName="Sans" ss:Size="10" ss:Underline="Single"/></Style><Style ss:ID="ce15"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders/><Font ss:Color="#000000" ss:FontName="Sans" ss:Size="10" ss:Underline="Double"/></Style><Style ss:ID="ce16"><Alignment ss:Vertical="Bottom" ss:WrapText="1" ss:Rotate="0"/><Borders/><Font ss:Color="#000000" ss:FontName="Sans" ss:Size="10"/></Style><Style ss:ID="ce17"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders/><Font ss:Color="#0000ff" ss:FontName="Sans" ss:Size="10" ss:Underline="Single"/></Style><Style ss:ID="ce18"><Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:Rotate="0"/><Borders><Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="3" ss:Color="#00b050"/><Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="3" ss:Color="#0070c0"/><Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="3" ss:Color="#ffff00"/><Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="3" ss:Color="#ff0000"/></Borders><Font ss:Color="#000000" ss:FontName="Arial1" ss:Size="11"/></Style><Style ss:ID="ce19"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders><Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="2" ss:Color="#000000"/></Borders><Font ss:Color="#000000" ss:FontName="Arial1" ss:Size="11"/></Style><Style ss:ID="ce20"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders><Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="2" ss:Color="#000000"/></Borders><Font ss:Color="#000000" ss:FontName="Arial1" ss:Size="11"/></Style><Style ss:ID="ce21"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders><Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="2" ss:Color="#000000"/></Borders><Font ss:Color="#000000" ss:FontName="Arial1" ss:Size="11"/></Style><Style ss:ID="ce22"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders><Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="2" ss:Color="#000000"/></Borders><Font ss:Color="#000000" ss:FontName="Arial1" ss:Size="11"/></Style><Style ss:ID="ce23"><Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:Rotate="90"/><Borders/><Font ss:Color="#000000" ss:FontName="Sans" ss:Size="10"/></Style><Style ss:ID="ce24"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders/><Font ss:Color="#000000" ss:FontName="Arial1" ss:Size="11"/><NumberFormat ss:Format="General"/></Style><Style ss:ID="ce25"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders/><Font ss:Color="#000000" ss:FontName="Calibri" ss:Size="11"/><NumberFormat ss:Format="General"/></Style><Style ss:ID="ce26"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders/><Font ss:Bold="1" ss:Color="#000000" ss:FontName="Arial1" ss:Size="11"/></Style><Style ss:ID="ce27"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders/><Font ss:Color="#000000" ss:FontName="Arial1" ss:Italic="1" ss:Size="11"/></Style><Style ss:ID="ce28"><Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:Rotate="45"/><Borders/><Font ss:Color="#000000" ss:FontName="Sans" ss:Size="10"/></Style><Style ss:ID="ce29"><Alignment ss:Vertical="Top" ss:WrapText="1" ss:Rotate="0"/><Borders/><Font ss:Color="#000000" ss:FontName="Calibri" ss:Size="11"/></Style><Style ss:ID="ce30"><Alignment ss:Vertical="Bottom" ss:WrapText="1" ss:Rotate="0"/><Borders/><Font ss:Color="#000000" ss:FontName="Calibri" ss:Size="11"/></Style><Style ss:ID="ce31"><Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:Rotate="-90"/><Borders/><Font ss:Color="#000000" ss:FontName="Sans" ss:Size="10"/></Style><Style ss:ID="ce32"><Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1" ss:Rotate="0"/><Borders/><Font ss:Color="#000000" ss:FontName="Calibri" ss:Size="11"/></Style><Style ss:ID="ce33"><Alignment ss:Vertical="Bottom" ss:WrapText="1" ss:Rotate="0"/><Borders/><Font ss:Color="#000000" ss:FontName="Calibri" ss:Size="11"/></Style><Style ss:ID="ce34"><Alignment ss:Vertical="Bottom" ss:WrapText="1" ss:Rotate="0"/><Borders/><Font ss:Color="#000000" ss:FontName="Calibri" ss:Size="11"/></Style><Style ss:ID="ce35"><Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:Rotate="-45"/><Borders/><Font ss:Color="#000000" ss:FontName="Sans" ss:Size="10"/></Style><Style ss:ID="ce36"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders/><Font ss:Color="#000000" ss:FontName="Calibri" ss:Size="11"/></Style><Style ss:ID="ce37"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders/><Font ss:Color="#000000" ss:FontName="Calibri" ss:Size="11"/><Interior ss:Color="#ff0000" ss:Pattern="Solid"/></Style><Style ss:ID="ce38"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders/><Font ss:Color="#000000" ss:FontName="Calibri" ss:Size="11"/><Interior ss:Color="#ff9900" ss:Pattern="Solid"/></Style><Style ss:ID="ce39"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders/><Font ss:Color="#000000" ss:FontName="Calibri" ss:Size="11"/><Interior ss:Color="#ffff00" ss:Pattern="Solid"/></Style><Style ss:ID="ce40"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders/><Font ss:Color="#000000" ss:FontName="Calibri" ss:Size="11"/><Interior ss:Color="#008000" ss:Pattern="Solid"/></Style><Style ss:ID="ce41"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders/><Font ss:Color="#000000" ss:FontName="Calibri" ss:Size="11"/><Interior ss:Color="#0000ff" ss:Pattern="Solid"/></Style><Style ss:ID="ce42"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders/><Font ss:Color="#000000" ss:FontName="Calibri" ss:Size="11"/><Interior ss:Color="#993366" ss:Pattern="Solid"/></Style><Style ss:ID="ce43"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders/><Font ss:Color="#000000" ss:FontName="Calibri" ss:Size="11"/><Interior ss:Color="#ff99cc" ss:Pattern="Solid"/></Style><Style ss:ID="ce44"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders/><Font ss:Color="#000000" ss:FontName="Calibri" ss:Size="11"/><Interior ss:Color="#ddbc7d" ss:Pattern="Solid"/></Style><Style ss:ID="ce45"><Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:Rotate="0"/><Borders/><Font ss:Color="#000000" ss:FontName="Calibri" ss:Size="11"/><Interior ss:Color="#00ccff" ss:Pattern="Solid"/></Style><Style ss:ID="ce46"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders/><Font ss:Color="#ff0000" ss:FontName="Calibri" ss:Size="11"/></Style><Style ss:ID="ce47"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders/><Font ss:Color="#ff6600" ss:FontName="Calibri" ss:Size="11"/></Style><Style ss:ID="ce48"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders/><Font ss:Color="#ffff00" ss:FontName="Calibri" ss:Size="11"/></Style><Style ss:ID="ce49"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders/><Font ss:Color="#008000" ss:FontName="Calibri" ss:Size="11"/></Style><Style ss:ID="ce50"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders/><Font ss:Color="#0000ff" ss:FontName="Calibri" ss:Size="11"/></Style><Style ss:ID="ce51"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders/><Font ss:Color="#800080" ss:FontName="Calibri" ss:Size="11"/></Style><Style ss:ID="ce52"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders/><Font ss:Color="#ff00ff" ss:FontName="Calibri" ss:Size="11"/></Style><Style ss:ID="ce53"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders/><Font ss:Color="#c47512" ss:FontName="Calibri" ss:Size="11"/></Style><Style ss:ID="ce54"><Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1" ss:Rotate="0"/><Borders/><Font ss:Color="#ccffcc" ss:FontName="Calibri" ss:Size="11"/><Interior ss:Color="#ff0000" ss:Pattern="Solid"/></Style><Style ss:ID="ce55"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders><Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" ss:Color="#000000"/></Borders><Font ss:Color="#000000" ss:FontName="Calibri" ss:Size="11"/></Style><Style ss:ID="ce56"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders><Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" ss:Color="#000000"/></Borders><Font ss:Color="#000000" ss:FontName="Calibri" ss:Size="11"/></Style><Style ss:ID="ce57"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders><Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" ss:Color="#000000"/></Borders><Font ss:Color="#000000" ss:FontName="Calibri" ss:Size="11"/></Style><Style ss:ID="ce58"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders><Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" ss:Color="#000000"/></Borders><Font ss:Color="#000000" ss:FontName="Calibri" ss:Size="11"/></Style><Style ss:ID="ce59"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders><Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="2" ss:Color="#000000"/></Borders><Font ss:Color="#000000" ss:FontName="Calibri" ss:Size="11"/></Style><Style ss:ID="ce60"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders><Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="2" ss:Color="#000000"/></Borders><Font ss:Color="#000000" ss:FontName="Calibri" ss:Size="11"/></Style><Style ss:ID="ce61"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders><Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="2" ss:Color="#000000"/></Borders><Font ss:Color="#000000" ss:FontName="Calibri" ss:Size="11"/></Style><Style ss:ID="ce62"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders><Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="2" ss:Color="#000000"/></Borders><Font ss:Color="#000000" ss:FontName="Calibri" ss:Size="11"/></Style><Style ss:ID="ce63"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders><Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="2" ss:Color="#000000"/></Borders><Font ss:Color="#000000" ss:FontName="Calibri" ss:Size="11"/></Style><Style ss:ID="ce64"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders><Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="3" ss:Color="#000000"/></Borders><Font ss:Color="#000000" ss:FontName="Calibri" ss:Size="11"/></Style><Style ss:ID="ce65"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders><Border ss:Position="Bottom" ss:LineStyle="Double" ss:Weight="3" ss:Color="#000000"/></Borders><Font ss:Color="#000000" ss:FontName="Calibri" ss:Size="11"/></Style><Style ss:ID="ce66"><Alignment ss:Horizontal="Center" ss:Vertical="Bottom" ss:WrapText="1" ss:Rotate="0"/><Borders/><Font ss:Bold="1" ss:Color="#000000" ss:FontName="Arial1" ss:Size="12"/></Style><Style ss:ID="ce67"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders/><Font ss:Color="#000000" ss:FontName="Arial1" ss:Size="11"/><NumberFormat ss:Format="General"/></Style><Style ss:ID="ce68"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders/><Font ss:Color="#000000" ss:FontName="Arial1" ss:Size="11"/><NumberFormat ss:Format="Medium Date"/></Style><Style ss:ID="ce69"><Alignment ss:Vertical="Bottom" ss:Rotate="0"/><Borders/><Font ss:Color="#000000" ss:FontName="Arial1" ss:Size="11"/><NumberFormat ss:Format="Medium Time"/></Style><Style ss:ID="gr1"/><Style ss:ID="gr2"/><Style ss:ID="ta_extref"/><Style ss:ID="P1"><Font ss:FontName="Sans" ss:Size="10"/></Style><Style ss:ID="T1"/></Styles><ss:Worksheet ss:Name="Sample Data"><Table ss:StyleID="ta1"><Column ss:Width="96.4913"/><Column ss:Span="1" ss:Width="48.3874"/><Column ss:Index="4" ss:Width="35.8866"/><Column ss:Span="6" ss:Width="48.3874"/><Column ss:Index="12" ss:Width="50.2583"/><Column ss:Span="1011" ss:Width="48.3874"/><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:StyleID="ce1"><ss:Data xmlns="http://www.w3.org/TR/REC-html40" ss:Type="String">Test String 1</ss:Data><Comment><ss:Data xmlns="http://www.w3.org/TR/REC-html40"><Font html:Face="Sans" html:Size="10">Test for a simple colour-formatted string</Font></ss:Data></Comment></Cell><Cell ss:StyleID="ce4"><Data ss:Type="Number">1</Data></Cell><Cell ss:StyleID="ce4"><Data ss:Type="Number">5</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce2"><Data ss:Type="String">A</Data></Cell><Cell ss:StyleID="ce26"><Data ss:Type="String">E</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5" ss:Formula="of:=[.B1]+[.C1]"><Data ss:Type="Number">6</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5" ss:Formula="of:=[.E1]&[.F1]"><Data ss:Type="String">AE</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:StyleID="ce2"><Data ss:Type="String">Test - String 2</Data></Cell><Cell ss:StyleID="ce5"><Data ss:Type="Number">2</Data></Cell><Cell ss:StyleID="ce4"><Data ss:Type="Number">6</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"><Data ss:Type="String">B</Data></Cell><Cell ss:StyleID="ce5"><Data ss:Type="String">F</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5" ss:Formula="of:=[.B2]+[.C2]"><Data ss:Type="Number">8</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5" ss:Formula="of:=[.E2]&[.F2]"><Data ss:Type="String">BF</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce55"><Data ss:Type="String">Dot</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:StyleID="ce3"><Data ss:Type="String">Test #3</Data></Cell><Cell ss:StyleID="ce4"><Data ss:Type="Number">3</Data></Cell><Cell ss:StyleID="ce4"><Data ss:Type="Number">7</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce26"><Data ss:Type="String">C</Data></Cell><Cell ss:StyleID="ce2"><Data ss:Type="String">G</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5" ss:Formula="of:=[.B3]+[.C3]"><Data ss:Type="Number">10</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5" ss:Formula="of:=[.E3]&[.F3]"><Data ss:Type="String">CG</Data></Cell><Cell ss:StyleID="ce37"><Data ss:Type="String">Red</Data></Cell><Cell ss:StyleID="ce46"><Data ss:Type="String">Red</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce56"><Data ss:Type="String">Dash</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:StyleID="ce4"><Data ss:Type="String">Test with (") in string</Data></Cell><Cell ss:StyleID="ce5"><Data ss:Type="Number">4</Data></Cell><Cell ss:StyleID="ce4"><Data ss:Type="Number">8</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce27"><Data ss:Type="String">D</Data></Cell><Cell ss:StyleID="ce5"><Data ss:Type="String">H</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5" ss:Formula="of:=[.B4]+[.C4]"><Data ss:Type="Number">12</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5" ss:Formula="of:=[.E4]&[.F4]"><Data ss:Type="String">DH</Data></Cell><Cell ss:StyleID="ce38"><Data ss:Type="String">Orange</Data></Cell><Cell ss:StyleID="ce47"><Data ss:Type="String">Orange</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce57"><Data ss:Type="String">Dash/Dot/Dot</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5" ss:Formula="of:=SUM([.B1:.B4])"><Data ss:Type="Number">10</Data></Cell><Cell ss:StyleID="ce5" ss:Formula="of:=SUM([.C1:.C4])"><Data ss:Type="Number">26</Data></Cell><Cell ss:StyleID="ce5" ss:Formula="of:=SUM([.B1:.C4])"><Data ss:Type="Number">36</Data></Cell><Cell ss:StyleID="ce39"><Data ss:Type="String">Yellow</Data></Cell><Cell ss:StyleID="ce48"><Data ss:Type="String">Yellow</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce58"><Data ss:Type="String">Dash/Dot</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:StyleID="ce6"><Data ss:Type="String">Test #3</Data></Cell><Cell ss:StyleID="ce5"><Data ss:Type="Number">1.23</Data></Cell><Cell ss:StyleID="ce5" ss:Formula="of:=TRUE()"><Data ss:Type="Boolean">1</Data></Cell><Cell ss:StyleID="ce24"><Data ss:Type="Boolean">1</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce40"><Data ss:Type="String">Green</Data></Cell><Cell ss:StyleID="ce49"><Data ss:Type="String">Green</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce56"><Data ss:Type="String">Thin Line</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:StyleID="ce7"><Data ss:Type="String">Test #3</Data></Cell><Cell ss:StyleID="ce5"><Data ss:Type="Number">2.34</Data></Cell><Cell ss:StyleID="ce5" ss:Formula="of:=FALSE()"><Data ss:Type="Boolean">0</Data></Cell><Cell ss:StyleID="ce25"><Data ss:Type="Boolean">0</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5" ss:Formula="of:=SUM(marksrange)"><Data ss:Type="Number">0</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce41"><Data ss:Type="String">Blue</Data></Cell><Cell ss:StyleID="ce50"><Data ss:Type="String">Blue</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce59"><Data ss:Type="String">Thick Dash/Dot/Dot</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/></Row><Row ss:Index="8" ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:StyleID="ce8"><Data ss:Type="String">Test #3</Data></Cell><Cell ss:StyleID="ce5"><Data ss:Type="Number">3.45</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce42"><Data ss:Type="String">Purple</Data></Cell><Cell ss:StyleID="ce51"><Data ss:Type="String">Purple</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce60"><Data ss:Type="String">Variant Thick Dash/Dot/Dot</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/></Row><Row ss:AutoFitHeight="0" ss:Height="13.4929"><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce43"><Data ss:Type="String">Pink</Data></Cell><Cell ss:StyleID="ce52"><Data ss:Type="String">Pink</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce61"><Data ss:Type="String">Thick Dash/Dot</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:StyleID="ce9"><Data ss:Type="DateTime">1960-12-19T00:00:00.000</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce19"><Data ss:Type="String">TOP</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"><Data ss:Type="Number">0</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce44"><Data ss:Type="String">Brown</Data></Cell><Cell ss:StyleID="ce53"><Data ss:Type="String">Brown</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce62"><Data ss:Type="String">Thick Dash</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:StyleID="ce10"><Data ss:Type="Number">1.5</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5" ss:Formula="of:=12/0"><Data ss:Type="Number">0</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce63"><Data ss:Type="String">Thick Line</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/></Row><Row ss:AutoFitHeight="0" ss:Height="13.4929"><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce20"><Data ss:Type="String">BOTTOM</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce64"><Data ss:Type="String">Extra Thick Line</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:StyleID="ce11"><Data ss:Type="DateTime">1899-12-31T02:30:00.000</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"><ss:Data xmlns="http://www.w3.org/TR/REC-html40" ss:Type="String">Мойва сушеная</ss:Data><Comment><ss:Data xmlns="http://www.w3.org/TR/REC-html40"><Font html:Face="Sans" html:Size="10">Tests for UTF-8 content</Font></ss:Data></Comment></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce65"><Data ss:Type="String">Double Line</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce21"><Data ss:Type="String">LEFT</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"><Data ss:Type="String">Ärendetext</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:StyleID="ce12"><Data ss:Type="DateTime">1960-12-19T01:30:00.000</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"><Data ss:Type="String">Højde</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/></Row><Row ss:Index="16" ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce22"><Data ss:Type="String">RIGHT</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/></Row><Row ss:AutoFitHeight="0" ss:Height="13.4929"><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/></Row><Row ss:Height="41.7543"><Cell ss:StyleID="ce5"/><Cell ss:MergeAcross="1" ss:MergeDown="1" ss:StyleID="ce18"><Data ss:Type="String">BOX</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce29"><Data ss:Type="String">Test Column 1</Data></Cell><Cell ss:StyleID="ce30"/><Cell ss:StyleID="ce33"/><Cell ss:StyleID="ce36"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/></Row><Row ss:Height="41.7543"><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce30"/><Cell ss:StyleID="ce32"><Data ss:Type="String">Test Column 2</Data></Cell><Cell ss:StyleID="ce30"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce45"><Data ss:Type="String">Patterned</Data></Cell><Cell ss:StyleID="ce54"><Data ss:Type="String">Patterned 2</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/></Row><Row ss:Height="41.7543"><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce30"/><Cell ss:StyleID="ce30"/><Cell ss:StyleID="ce34"><Data ss:Type="String">Test Column 3</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:StyleID="ce13"><Data ss:Type="String">Underline None</Data></Cell><Cell ss:Index="3" ss:MergeAcross="1" ss:MergeDown="4" ss:StyleID="ce23"><Data ss:Type="String">Rotate 90</Data></Cell><Cell ss:MergeAcross="1" ss:MergeDown="4" ss:StyleID="ce28"><Data ss:Type="String">Rotate 45</Data></Cell><Cell ss:MergeAcross="1" ss:MergeDown="4" ss:StyleID="ce31"><Data ss:Type="String">Rotate -90</Data></Cell><Cell ss:MergeAcross="1" ss:MergeDown="4" ss:StyleID="ce35"><Data ss:Type="String">Rotate -45</Data></Cell><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:StyleID="ce14"><Data ss:Type="String">Underline 1</Data></Cell><Cell ss:StyleID="ce13"><Data ss:Type="String">Subscript</Data></Cell><Cell ss:Index="1016" ss:StyleID="ce13"/></Row><Row ss:Index="24" ss:Height="12.8409"><Cell ss:StyleID="ce15"><Data ss:Type="String">Underline 2</Data></Cell><Cell ss:StyleID="ce13"><Data ss:Type="String">Superscript</Data></Cell><Cell ss:Index="1016" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:StyleID="ce14"><Data ss:Type="String">Underline 3</Data></Cell><Cell ss:Index="1016" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:StyleID="ce15"><Data ss:Type="String">Underline 4</Data></Cell><Cell ss:Index="1016" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="49.2378"><Cell ss:MergeAcross="2" ss:StyleID="ce16"><ss:Data xmlns="http://www.w3.org/TR/REC-html40" ss:Type="String">I don't know if Gnumeric supports <B><Font html:Face="Sans" html:Color="#000000" html:Size="10">Rich Text</Font></B> in the same way as <B><Font html:Face="Sans" html:Color="#000000" html:Size="10">Excel</Font></B>, And this row should be autofit height with text wrap</ss:Data></Cell><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/><Cell ss:StyleID="ce16"/></Row><Row ss:Height="13.4079"><Cell ss:MergeAcross="2" ss:HRef="http://www.phpexcel.net/" ss:StyleID="ce17"><Data ss:Type="String">PHPExcel</Data></Cell><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Index="65536" ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row></Table><x:WorksheetOptions/></ss:Worksheet><ss:Worksheet ss:Name="Report Data"><Table ss:StyleID="ta1"><Column ss:Span="2" ss:Width="56.2394"/><Column ss:Index="4" ss:Width="78.7465"/><Column ss:Width="58.5071"/><Column ss:Width="27.4961"/><Column ss:Width="78.7465"/><Column ss:Width="68.5984"/><Column ss:Span="1015" ss:Width="48.3874"/><Column ss:Index="1025"/><Column ss:Span="1"/><Row ss:AutoFitHeight="0" ss:Height="31.4929"><Cell ss:StyleID="ce66"/><Cell ss:StyleID="ce66"/><Cell ss:StyleID="ce66"/><Cell ss:StyleID="ce66"/><Cell ss:StyleID="ce66"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce66"/><Cell ss:StyleID="ce66"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/></Row><Row ss:AutoFitHeight="0" ss:Height="31.4929"><Cell ss:StyleID="ce66"><Data ss:Type="String">Heading 1</Data></Cell><Cell ss:StyleID="ce66"><Data ss:Type="String">Heading 2</Data></Cell><Cell ss:StyleID="ce66"><Data ss:Type="String">Third Heading</Data></Cell><Cell ss:StyleID="ce66"><Data ss:Type="String">Date Heading</Data></Cell><Cell ss:StyleID="ce66"><Data ss:Type="String">Time Heading</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce66"><Data ss:Type="String">Adjusted Date</Data></Cell><Cell ss:StyleID="ce66"><Data ss:Type="String">Adjusted Number</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce13"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/></Row><Row><Cell ss:StyleID="ce13"><Data ss:Type="String"/></Cell><Cell ss:StyleID="ce13"><Data ss:Type="String">Adjusted Number</Data></Cell><Cell ss:StyleID="ce13"><Data ss:Type="String">Third Heading</Data></Cell></Row><Row><Cell ss:StyleID="ce13"><Data ss:Type="String">1</Data></Cell><Cell ss:StyleID="ce13"><Data ss:Type="Number">1.11</Data></Cell><Cell ss:StyleID="ce13"><Data ss:Type="Number">1.11</Data></Cell></Row><Row><Cell ss:StyleID="ce13"><Data ss:Type="String">2</Data></Cell><Cell ss:StyleID="ce13"><Data ss:Type="Number">4.44</Data></Cell><Cell ss:StyleID="ce13"><Data ss:Type="Number">2.22</Data></Cell></Row><Row><Cell ss:StyleID="ce13"><Data ss:Type="String">3</Data></Cell><Cell ss:StyleID="ce13"><Data ss:Type="Number">9.99</Data></Cell><Cell ss:StyleID="ce13"><Data ss:Type="Number">3.33</Data></Cell></Row><Row><Cell ss:StyleID="ce13"><Data ss:Type="String">4</Data></Cell><Cell ss:StyleID="ce13"><Data ss:Type="Number">17.76</Data></Cell><Cell ss:StyleID="ce13"><Data ss:Type="Number">4.44</Data></Cell></Row><Row ss:Index="8"><Cell ss:StyleID="ce13"><Data ss:Type="String">5</Data></Cell><Cell ss:StyleID="ce13"><Data ss:Type="Number">27.75</Data></Cell><Cell ss:StyleID="ce13"><Data ss:Type="Number">5.55</Data></Cell></Row><Row><Cell ss:StyleID="ce13"><Data ss:Type="String">6</Data></Cell><Cell ss:StyleID="ce13"><Data ss:Type="Number">39.96</Data></Cell><Cell ss:StyleID="ce13"><Data ss:Type="Number">6.66</Data></Cell></Row><Row><Cell ss:StyleID="ce13"><Data ss:Type="String">7</Data></Cell><Cell ss:StyleID="ce13"><Data ss:Type="Number">54.39</Data></Cell><Cell ss:StyleID="ce13"><Data ss:Type="Number">7.77</Data></Cell></Row><Row><Cell ss:StyleID="ce13"><Data ss:Type="String">8</Data></Cell><Cell ss:StyleID="ce13"><Data ss:Type="Number">71.04</Data></Cell><Cell ss:StyleID="ce13"><Data ss:Type="Number">8.88</Data></Cell></Row><Row><Cell ss:StyleID="ce13"><Data ss:Type="String">9</Data></Cell><Cell ss:StyleID="ce13"><Data ss:Type="Number">89.91</Data></Cell><Cell ss:StyleID="ce13"><Data ss:Type="Number">9.99</Data></Cell></Row><Row><Cell ss:StyleID="ce13"><Data ss:Type="String">10</Data></Cell><Cell ss:StyleID="ce13"><Data ss:Type="Number">111</Data></Cell><Cell ss:StyleID="ce13"><Data ss:Type="Number">11.1</Data></Cell></Row><Row><Cell ss:StyleID="ce13"><Data ss:Type="String">11</Data></Cell><Cell ss:StyleID="ce13"><Data ss:Type="Number">134.31</Data></Cell><Cell ss:StyleID="ce13"><Data ss:Type="Number">12.21</Data></Cell></Row><Row><Cell ss:StyleID="ce13"><Data ss:Type="String">12</Data></Cell><Cell ss:StyleID="ce13"><Data ss:Type="Number">159.84</Data></Cell><Cell ss:StyleID="ce13"><Data ss:Type="Number">13.32</Data></Cell></Row><Row ss:Index="16"><Cell ss:StyleID="ce13"><Data ss:Type="String">13</Data></Cell><Cell ss:StyleID="ce13"><Data ss:Type="Number">1.11</Data></Cell><Cell ss:StyleID="ce13"><Data ss:Type="Number">-1.11</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:StyleID="ce5"><Data ss:Type="String">ABC</Data></Cell><Cell ss:StyleID="ce5"><Data ss:Type="Number">1</Data></Cell><Cell ss:StyleID="ce67"><Data ss:Type="Number">1.11</Data></Cell><Cell ss:StyleID="ce68"><Data ss:Type="DateTime">2001-01-01T00:00:00.000</Data></Cell><Cell ss:StyleID="ce69"><Data ss:Type="DateTime">1899-12-31T01:00:00.000</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce68" ss:Formula="of:=[.D3]-[.B3]"><Data ss:Type="DateTime">2000-12-31T00:00:00.000</Data></Cell><Cell ss:StyleID="ce67" ss:Formula="of:=[.B3]*[.C3]"><Data ss:Type="Number">1.11</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"><Data ss:Type="String">A</Data></Cell><Cell ss:StyleID="ce5" ss:Formula="of:=[.B3]&[.J3]"><Data ss:Type="String">1A</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:StyleID="ce5"><Data ss:Type="String">BCD</Data></Cell><Cell ss:StyleID="ce5"><Data ss:Type="Number">2</Data></Cell><Cell ss:StyleID="ce67"><Data ss:Type="Number">2.22</Data></Cell><Cell ss:StyleID="ce68"><Data ss:Type="DateTime">2002-02-02T00:00:00.000</Data></Cell><Cell ss:StyleID="ce69"><Data ss:Type="DateTime">1899-12-31T02:00:00.000</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce68" ss:Formula="of:=[.D4]-[.B4]"><Data ss:Type="DateTime">2002-01-31T00:00:00.000</Data></Cell><Cell ss:StyleID="ce67" ss:Formula="of:=[.B4]*[.C4]"><Data ss:Type="Number">4.44</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"><Data ss:Type="String">B</Data></Cell><Cell ss:StyleID="ce5" ss:Formula="of:=[.B4]&[.J4]"><Data ss:Type="String">2B</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:StyleID="ce5"><Data ss:Type="String">CDE</Data></Cell><Cell ss:StyleID="ce5"><Data ss:Type="Number">3</Data></Cell><Cell ss:StyleID="ce67"><Data ss:Type="Number">3.33</Data></Cell><Cell ss:StyleID="ce68"><Data ss:Type="DateTime">2003-03-03T00:00:00.000</Data></Cell><Cell ss:StyleID="ce69"><Data ss:Type="DateTime">1899-12-31T03:00:00.000</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce68" ss:Formula="of:=[.D5]-[.B5]"><Data ss:Type="DateTime">2003-02-28T00:00:00.000</Data></Cell><Cell ss:StyleID="ce67" ss:Formula="of:=[.B5]*[.C5]"><Data ss:Type="Number">9.99</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"><Data ss:Type="String">C</Data></Cell><Cell ss:StyleID="ce5" ss:Formula="of:=[.B5]&[.J5]"><Data ss:Type="String">3C</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:StyleID="ce5"><Data ss:Type="String">DEF</Data></Cell><Cell ss:StyleID="ce5"><Data ss:Type="Number">4</Data></Cell><Cell ss:StyleID="ce67"><Data ss:Type="Number">4.44</Data></Cell><Cell ss:StyleID="ce68"><Data ss:Type="DateTime">2004-04-03T23:00:00.000</Data></Cell><Cell ss:StyleID="ce69"><Data ss:Type="DateTime">1899-12-31T04:00:00.000</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce68" ss:Formula="of:=[.D6]-[.B6]"><Data ss:Type="DateTime">2004-03-30T23:00:00.000</Data></Cell><Cell ss:StyleID="ce67" ss:Formula="of:=[.B6]*[.C6]"><Data ss:Type="Number">17.76</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"><Data ss:Type="String">D</Data></Cell><Cell ss:StyleID="ce5" ss:Formula="of:=[.B6]&[.J6]"><Data ss:Type="String">4D</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:StyleID="ce5"><Data ss:Type="String">EFG</Data></Cell><Cell ss:StyleID="ce5"><Data ss:Type="Number">5</Data></Cell><Cell ss:StyleID="ce67"><Data ss:Type="Number">5.55</Data></Cell><Cell ss:StyleID="ce68"><Data ss:Type="DateTime">2005-05-04T23:00:00.000</Data></Cell><Cell ss:StyleID="ce69"><Data ss:Type="DateTime">1899-12-31T05:00:00.000</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce68" ss:Formula="of:=[.D7]-[.B7]"><Data ss:Type="DateTime">2005-04-29T23:00:00.000</Data></Cell><Cell ss:StyleID="ce67" ss:Formula="of:=[.B7]*[.C7]"><Data ss:Type="Number">27.75</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"><Data ss:Type="String">E</Data></Cell><Cell ss:StyleID="ce5" ss:Formula="of:=[.B7]&[.J7]"><Data ss:Type="String">5E</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:StyleID="ce5"><Data ss:Type="String">FGH</Data></Cell><Cell ss:StyleID="ce5"><Data ss:Type="Number">6</Data></Cell><Cell ss:StyleID="ce67"><Data ss:Type="Number">6.66</Data></Cell><Cell ss:StyleID="ce68"><Data ss:Type="DateTime">2006-06-05T23:00:00.000</Data></Cell><Cell ss:StyleID="ce69"><Data ss:Type="DateTime">1899-12-31T06:00:00.000</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce68" ss:Formula="of:=[.D8]-[.B8]"><Data ss:Type="DateTime">2006-05-30T23:00:00.000</Data></Cell><Cell ss:StyleID="ce67" ss:Formula="of:=[.B8]*[.C8]"><Data ss:Type="Number">39.96</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"><Data ss:Type="String">F</Data></Cell><Cell ss:StyleID="ce5" ss:Formula="of:=[.B8]&[.J8]"><Data ss:Type="String">6F</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:StyleID="ce5"><Data ss:Type="String">GHI</Data></Cell><Cell ss:StyleID="ce5"><Data ss:Type="Number">7</Data></Cell><Cell ss:StyleID="ce67"><Data ss:Type="Number">7.77</Data></Cell><Cell ss:StyleID="ce68"><Data ss:Type="DateTime">2007-07-06T23:00:00.000</Data></Cell><Cell ss:StyleID="ce69"><Data ss:Type="DateTime">1899-12-31T07:00:00.000</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce68" ss:Formula="of:=[.D9]-[.B9]"><Data ss:Type="DateTime">2007-06-29T23:00:00.000</Data></Cell><Cell ss:StyleID="ce67" ss:Formula="of:=[.B9]*[.C9]"><Data ss:Type="Number">54.39</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"><Data ss:Type="String">G</Data></Cell><Cell ss:StyleID="ce5" ss:Formula="of:=[.B9]&[.J9]"><Data ss:Type="String">7G</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/></Row><Row ss:Index="24" ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:StyleID="ce5"><Data ss:Type="String">HIJ</Data></Cell><Cell ss:StyleID="ce5"><Data ss:Type="Number">8</Data></Cell><Cell ss:StyleID="ce67"><Data ss:Type="Number">8.88</Data></Cell><Cell ss:StyleID="ce68"><Data ss:Type="DateTime">2008-08-07T23:00:00.000</Data></Cell><Cell ss:StyleID="ce69"><Data ss:Type="DateTime">1899-12-31T08:00:00.000</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce68" ss:Formula="of:=[.D10]-[.B10]"><Data ss:Type="DateTime">2008-07-30T23:00:00.000</Data></Cell><Cell ss:StyleID="ce67" ss:Formula="of:=[.B10]*[.C10]"><Data ss:Type="Number">71.04</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"><Data ss:Type="String">H</Data></Cell><Cell ss:StyleID="ce5" ss:Formula="of:=[.B10]&[.J10]"><Data ss:Type="String">8H</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:StyleID="ce5"><Data ss:Type="String">IJK</Data></Cell><Cell ss:StyleID="ce5"><Data ss:Type="Number">9</Data></Cell><Cell ss:StyleID="ce67"><Data ss:Type="Number">9.99</Data></Cell><Cell ss:StyleID="ce68"><Data ss:Type="DateTime">2009-09-08T23:00:00.000</Data></Cell><Cell ss:StyleID="ce69"><Data ss:Type="DateTime">1899-12-31T09:00:00.000</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce68" ss:Formula="of:=[.D11]-[.B11]"><Data ss:Type="DateTime">2009-08-30T23:00:00.000</Data></Cell><Cell ss:StyleID="ce67" ss:Formula="of:=[.B11]*[.C11]"><Data ss:Type="Number">89.91</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"><Data ss:Type="String">I</Data></Cell><Cell ss:StyleID="ce5" ss:Formula="of:=[.B11]&[.J11]"><Data ss:Type="String">9I</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:StyleID="ce5"><Data ss:Type="String">JKL</Data></Cell><Cell ss:StyleID="ce5"><Data ss:Type="Number">10</Data></Cell><Cell ss:StyleID="ce67"><Data ss:Type="Number">11.1</Data></Cell><Cell ss:StyleID="ce68"><Data ss:Type="DateTime">2010-10-09T23:00:00.000</Data></Cell><Cell ss:StyleID="ce69"><Data ss:Type="DateTime">1899-12-31T10:00:00.000</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce68" ss:Formula="of:=[.D12]-[.B12]"><Data ss:Type="DateTime">2010-09-29T23:00:00.000</Data></Cell><Cell ss:StyleID="ce67" ss:Formula="of:=[.B12]*[.C12]"><Data ss:Type="Number">111</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"><Data ss:Type="String">J</Data></Cell><Cell ss:StyleID="ce5" ss:Formula="of:=[.B12]&[.J12]"><Data ss:Type="String">10J</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:StyleID="ce5"><Data ss:Type="String">KLM</Data></Cell><Cell ss:StyleID="ce5"><Data ss:Type="Number">11</Data></Cell><Cell ss:StyleID="ce67"><Data ss:Type="Number">12.21</Data></Cell><Cell ss:StyleID="ce68"><Data ss:Type="DateTime">2011-11-11T00:00:00.000</Data></Cell><Cell ss:StyleID="ce69"><Data ss:Type="DateTime">1899-12-31T11:00:00.000</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce68" ss:Formula="of:=[.D13]-[.B13]"><Data ss:Type="DateTime">2011-10-31T00:00:00.000</Data></Cell><Cell ss:StyleID="ce67" ss:Formula="of:=[.B13]*[.C13]"><Data ss:Type="Number">134.31</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"><Data ss:Type="String">K</Data></Cell><Cell ss:StyleID="ce5" ss:Formula="of:=[.B13]&[.J13]"><Data ss:Type="String">11K</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:StyleID="ce5"><Data ss:Type="String">LMN</Data></Cell><Cell ss:StyleID="ce5"><Data ss:Type="Number">12</Data></Cell><Cell ss:StyleID="ce67"><Data ss:Type="Number">13.32</Data></Cell><Cell ss:StyleID="ce68"><Data ss:Type="DateTime">2012-12-12T00:00:00.000</Data></Cell><Cell ss:StyleID="ce69"><Data ss:Type="DateTime">1899-12-31T288:00:00.000</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce68" ss:Formula="of:=[.D14]-[.B14]"><Data ss:Type="DateTime">2012-11-30T00:00:00.000</Data></Cell><Cell ss:StyleID="ce67" ss:Formula="of:=[.B14]*[.C14]"><Data ss:Type="Number">159.84</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"><Data ss:Type="String">L</Data></Cell><Cell ss:StyleID="ce5" ss:Formula="of:=[.B14]&[.J14]"><Data ss:Type="String">12L</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:StyleID="ce5"><Data ss:Type="String">ZYX</Data></Cell><Cell ss:StyleID="ce5"><Data ss:Type="Number">-1</Data></Cell><Cell ss:StyleID="ce67"><Data ss:Type="Number">-1.11</Data></Cell><Cell ss:StyleID="ce68"><Data ss:Type="DateTime">1999-12-01T00:00:00.000</Data></Cell><Cell ss:StyleID="ce69"><Data ss:Type="DateTime">1899-12-31T23:00:00.000</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce68" ss:Formula="of:=[.D15]-[.B15]"><Data ss:Type="DateTime">1999-12-02T00:00:00.000</Data></Cell><Cell ss:StyleID="ce67" ss:Formula="of:=[.B15]*[.C15]"><Data ss:Type="Number">1.11</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"><Data ss:Type="String">M</Data></Cell><Cell ss:StyleID="ce5" ss:Formula="of:=[.B15]&[.J15]"><Data ss:Type="String">-1M</Data></Cell><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/><Cell ss:StyleID="ce5"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:AutoFitHeight="0" ss:Height="14.9953"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row><Row ss:Index="65550" ss:Height="12.8409"><Cell ss:Index="1024" ss:StyleID="ce13"/></Row></Table><x:WorksheetOptions/></ss:Worksheet></Workbook> \ No newline at end of file diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/GnumericReader.php b/htdocs/includes/phpoffice/phpexcel/Examples/GnumericReader.php deleted file mode 100644 index 5ea2c4f7a0a..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/GnumericReader.php +++ /dev/null @@ -1,60 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); - -date_default_timezone_set('Europe/London'); - -/** PHPExcel_IOFactory */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel/IOFactory.php'; - -echo date('H:i:s') , " Load from Gnumeric file" , PHP_EOL; -$callStartTime = microtime(true); - -$objReader = PHPExcel_IOFactory::createReader('Gnumeric'); -$objPHPExcel = $objReader->load("GnumericTest.gnumeric"); - - -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; -echo 'Call time to read Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , PHP_EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , PHP_EOL; - - -echo date('H:i:s') , " Write to Excel2007 format" , PHP_EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', __FILE__) , PHP_EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , PHP_EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , PHP_EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/GnumericTest.gnumeric b/htdocs/includes/phpoffice/phpexcel/Examples/GnumericTest.gnumeric deleted file mode 100644 index ea2fac379e51e707060c8c8d5314899c60bad287..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7823 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 VLZ^G*{(bnLF?gxMdc{IU1^^XSQ?392 diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/OOCalcReader.php b/htdocs/includes/phpoffice/phpexcel/Examples/OOCalcReader.php deleted file mode 100644 index e278aae4d7b..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/OOCalcReader.php +++ /dev/null @@ -1,61 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); - -date_default_timezone_set('Europe/London'); - -/** PHPExcel_IOFactory */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel/IOFactory.php'; - -echo date('H:i:s') , " Load from OOCalc file" , PHP_EOL; -$callStartTime = microtime(true); - -$objReader = PHPExcel_IOFactory::createReader('OOCalc'); -$objPHPExcel = $objReader->load("OOCalcTest.ods"); - - -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; -echo 'Call time to read Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , PHP_EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , PHP_EOL; - - -echo date('H:i:s') , " Write to Excel2007 format" , PHP_EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', __FILE__) , PHP_EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , PHP_EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , PHP_EOL; - diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/OOCalcReaderPCLZip.php b/htdocs/includes/phpoffice/phpexcel/Examples/OOCalcReaderPCLZip.php deleted file mode 100644 index 45a5cdacbd2..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/OOCalcReaderPCLZip.php +++ /dev/null @@ -1,64 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); - -date_default_timezone_set('Europe/London'); - -/** PHPExcel_IOFactory */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel/IOFactory.php'; - -// Use PCLZip rather than ZipArchive to read the Excel2007 OfficeOpenXML file -PHPExcel_Settings::setZipClass(PHPExcel_Settings::PCLZIP); - -echo date('H:i:s') , " Load from OOCalc file" , PHP_EOL; -$callStartTime = microtime(true); - -$objReader = PHPExcel_IOFactory::createReader('OOCalc'); -$objPHPExcel = $objReader->load("OOCalcTest.ods"); - - -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; -echo 'Call time to read Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , PHP_EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , PHP_EOL; - - -echo date('H:i:s') , " Write to Excel2007 format" , PHP_EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', __FILE__) , PHP_EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , PHP_EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , PHP_EOL; - diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/OOCalcTest.ods b/htdocs/includes/phpoffice/phpexcel/Examples/OOCalcTest.ods deleted file mode 100644 index b29db7663dbdbba6f8bb42145b7a0cd9590c7f05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17931 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 diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/Quadratic.php b/htdocs/includes/phpoffice/phpexcel/Examples/Quadratic.php deleted file mode 100644 index 8440c5546bd..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/Quadratic.php +++ /dev/null @@ -1,68 +0,0 @@ -<html> -<head> -<title>Quadratic Equation Solver</title> -</head> -<body> -<?php - -/** Error reporting **/ -error_reporting(E_ALL); - -/** Include path **/ -set_include_path(get_include_path() . PATH_SEPARATOR . dirname(__FILE__) . '/../Classes/'); - -?> -<h1>Quadratic Equation Solver</h1> -<form action="Quadratic.php" method="POST"> -Enter the coefficients for the Ax<sup>2</sup> + Bx + C = 0 -<table border="0" cellpadding="0" cellspacing="0"> - <tr><td><b>A </b></td> - <td><input name="A" type="text" size="8" value="<?php echo (isset($_POST['A'])) ? htmlentities($_POST['A']) : ''; ?>"></td> - </tr> - <tr><td><b>B </b></td> - <td><input name="B" type="text" size="8" value="<?php echo (isset($_POST['B'])) ? htmlentities($_POST['B']) : ''; ?>"></td> - </tr> - <tr><td><b>C </b></td> - <td><input name="C" type="text" size="8" value="<?php echo (isset($_POST['C'])) ? htmlentities($_POST['C']) : ''; ?>"></td> - </tr> -</table> -<input name="submit" type="submit" value="calculate"><br /> -If A=0, the equation is not quadratic. -</form> - -<?php -/** If the user has submitted the form, then we need to execute a calculation **/ -if (isset($_POST['submit'])) { - if ($_POST['A'] == 0) { - echo 'The equation is not quadratic'; - } else { - /** So we include PHPExcel to perform the calculations **/ - include 'PHPExcel/IOFactory.php'; - - /** Load the quadratic equation solver worksheet into memory **/ - $objPHPExcel = PHPExcel_IOFactory::load('./Quadratic.xlsx'); - - /** Set our A, B and C values **/ - $objPHPExcel->getActiveSheet()->setCellValue('A1', $_POST['A']); - $objPHPExcel->getActiveSheet()->setCellValue('B1', $_POST['B']); - $objPHPExcel->getActiveSheet()->setCellValue('C1', $_POST['C']); - - - /** Calculate and Display the results **/ - echo '<hr /><b>Roots:</b><br />'; - - $callStartTime = microtime(true); - echo $objPHPExcel->getActiveSheet()->getCell('B5')->getCalculatedValue().'<br />'; - echo $objPHPExcel->getActiveSheet()->getCell('B6')->getCalculatedValue().'<br />'; - $callEndTime = microtime(true); - $callTime = $callEndTime - $callStartTime; - - echo '<hr />Call time for Quadratic Equation Solution was '.sprintf('%.4f',$callTime).' seconds<br /><hr />'; - echo ' Peak memory usage: '.(memory_get_peak_usage(true) / 1024 / 1024).' MB<br />'; - } -} - -?> - -</body> -<html> diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/Quadratic2.php b/htdocs/includes/phpoffice/phpexcel/Examples/Quadratic2.php deleted file mode 100644 index 05cd5c17372..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/Quadratic2.php +++ /dev/null @@ -1,65 +0,0 @@ -<html> -<head> -<title>Quadratic Equation Solver</title> -</head> -<body> -<?php - -/** Error reporting **/ -error_reporting(E_ALL); - -/** Include path **/ -set_include_path(get_include_path() . PATH_SEPARATOR . dirname(__FILE__) . '/../Classes/'); - -?> -<h1>Quadratic Equation Solver</h1> -<form action="Quadratic2.php" method="POST"> -Enter the coefficients for the Ax<sup>2</sup> + Bx + C = 0 -<table border="0" cellpadding="0" cellspacing="0"> - <tr><td><b>A </b></td> - <td><input name="A" type="text" size="8" value="<?php echo (isset($_POST['A'])) ? htmlentities($_POST['A']) : ''; ?>"></td> - </tr> - <tr><td><b>B </b></td> - <td><input name="B" type="text" size="8" value="<?php echo (isset($_POST['B'])) ? htmlentities($_POST['B']) : ''; ?>"></td> - </tr> - <tr><td><b>C </b></td> - <td><input name="C" type="text" size="8" value="<?php echo (isset($_POST['C'])) ? htmlentities($_POST['C']) : ''; ?>"></td> - </tr> -</table> -<input name="submit" type="submit" value="calculate"><br /> -If A=0, the equation is not quadratic. -</form> - -<?php -/** If the user has submitted the form, then we need to execute a calculation **/ -if (isset($_POST['submit'])) { - if ($_POST['A'] == 0) { - echo 'The equation is not quadratic'; - } else { - /** So we include PHPExcel to perform the calculations **/ - include 'PHPExcel/Calculation.php'; - - /** Calculate and Display the results **/ - echo '<hr /><b>Roots:</b><br />'; - - $callStartTime = microtime(true); - $discriminantFormula = '=POWER('.$_POST['B'].',2) - (4 * '.$_POST['A'].' * '.$_POST['C'].')'; - $discriminant = PHPExcel_Calculation::getInstance()->calculateFormula($discriminantFormula); - - $r1Formula = '=IMDIV(IMSUM(-'.$_POST['B'].',IMSQRT('.$discriminant.')),2 * '.$_POST['A'].')'; - $r2Formula = '=IF('.$discriminant.'=0,"Only one root",IMDIV(IMSUB(-'.$_POST['B'].',IMSQRT('.$discriminant.')),2 * '.$_POST['A'].'))'; - - echo PHPExcel_Calculation::getInstance()->calculateFormula($r1Formula).'<br />'; - echo PHPExcel_Calculation::getInstance()->calculateFormula($r2Formula).'<br />'; - $callEndTime = microtime(true); - $callTime = $callEndTime - $callStartTime; - - echo '<hr />Call time for Quadratic Equation Solution was '.sprintf('%.4f',$callTime).' seconds<br /><hr />'; - echo ' Peak memory usage: '.(memory_get_peak_usage(true) / 1024 / 1024).' MB<br />'; - } -} - -?> - -</body> -<html> diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/SylkReader.php b/htdocs/includes/phpoffice/phpexcel/Examples/SylkReader.php deleted file mode 100644 index 8049ff0bf46..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/SylkReader.php +++ /dev/null @@ -1,50 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); - -date_default_timezone_set('Europe/London'); - -/** PHPExcel_IOFactory */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel/IOFactory.php'; - - -echo date('H:i:s') , " Load from SYLK file" , PHP_EOL; -$objPHPExcel = PHPExcel_IOFactory::load("SylkTest.slk"); - -echo date('H:i:s') , " Write to Excel2007 format" , PHP_EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', __FILE__) , PHP_EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , PHP_EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , PHP_EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/SylkTest.slk b/htdocs/includes/phpoffice/phpexcel/Examples/SylkTest.slk deleted file mode 100644 index 329abe26f7e..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/SylkTest.slk +++ /dev/null @@ -1,152 +0,0 @@ -ID;PWXL;N;E -P;PGeneral -P;P0 -P;P0.00 -P;P#,##0 -P;P#,##0.00 -P;P#,##0;;\-#,##0 -P;P#,##0;;[Red]\-#,##0 -P;P#,##0.00;;\-#,##0.00 -P;P#,##0.00;;[Red]\-#,##0.00 -P;P"$"#,##0;;\-"$"#,##0 -P;P"$"#,##0;;[Red]\-"$"#,##0 -P;P"$"#,##0.00;;\-"$"#,##0.00 -P;P"$"#,##0.00;;[Red]\-"$"#,##0.00 -P;P0% -P;P0.00% -P;P0.00E+00 -P;P##0.0E+0 -P;P#\ ?/? -P;P#\ ??/?? -P;Pdd/mm/yyyy -P;Pdd\-mmm\-yy -P;Pdd\-mmm -P;Pmmm\-yy -P;Ph:mm\ AM/PM -P;Ph:mm:ss\ AM/PM -P;Phh:mm -P;Phh:mm:ss -P;Pdd/mm/yyyy\ hh:mm -P;Pmm:ss -P;Pmm:ss.0 -P;P@ -P;P[h]:mm:ss -P;P_-"$"* #,##0_-;;\-"$"* #,##0_-;;_-"$"* "-"_-;;_-@_- -P;P_-* #,##0_-;;\-* #,##0_-;;_-* "-"_-;;_-@_- -P;P_-"$"* #,##0.00_-;;\-"$"* #,##0.00_-;;_-"$"* "-"??_-;;_-@_- -P;P_-* #,##0.00_-;;\-* #,##0.00_-;;_-* "-"??_-;;_-@_- -P;FArial;M200 -P;FArial;M200 -P;FArial;M200 -P;FArial;M200 -P;EArial;M200 -P;EArial;M200 -P;EArial;M200 -P;EArial;M200;SB -P;EArial;M200;SBI -P;EArial;M200;SI -P;EArial;M200;SU -P;EArial;M200;L11 -P;EArial;M200;SB -P;EArial;M200 -P;EArial;M200;SI -P;EArial;M200;SBI -P;EArial;M200;SBU -P;EArial;M200;SBIU -P;EArial;M200 -P;EArial;M200;SI -F;P0;DG0G8;M255 -B;Y18;X10;D0 0 17 9 -O;L;D;V0;K47;G100 0.001 -F;W1 1 17 -F;W4 6 6 -F;M270;R9 -F;M270;R12 -F;M270;R17 -F;M270;R18 -F;SM12;Y1;X1 -C;K"Test String 1" -F;SM19;X2 -C;K1 -F;SM19;X3 -C;K5 -F;SIDM18;X5 -C;K"A" -F;SDM17;X6 -C;K"E" -C;X8;K6;ERC[-6]+RC[-5] -C;X10;K"AE";ERC[-5]&RC[-4] -F;SSM0;Y2;X1 -C;K"Test - String 2" -C;X2;K2 -F;SM19;X3 -C;K6 -C;X5;K"B" -C;X6;K"F" -C;X8;K8;ERC[-6]+RC[-5] -C;X10;K"BF";ERC[-5]&RC[-4] -C;Y3;X1;K"Test #3" -F;SM19;X2 -C;K3 -F;SM19;X3 -C;K7 -F;SDM13;X5 -C;K"C" -F;SIDM16;X6 -C;K"G" -C;X8;K10;ERC[-6]+RC[-5] -C;X10;K"CG";ERC[-5]&RC[-4] -F;SM11;Y4;X1 -C;K"Test with (;;) in string" -C;X2;K4 -F;SM19;X3 -C;K8 -F;SIM15;X5 -C;K"D" -C;X6;K"H" -C;X8;K12;ERC[-6]+RC[-5] -C;X10;K"DH";ERC[-5]&RC[-4] -C;Y5;X8;K10;ESUM(R[-4]C[-6]:R[-1]C[-6]) -C;X9;K26;ESUM(R[-4]C[-6]:R[-1]C[-6]) -C;X10;K36;ESUM(R[-4]C[-8]:R[-1]C[-7]) -C;Y6;X2;K1.23 -C;X3;KTRUE -F;P19;FG0G;X4 -C;Y7;X2;K2.34 -C;X3;KFALSE -C;Y8;X2;K3.45 -F;Y9;X1 -F;X2 -F;X3 -F;X4 -F;X5 -F;X6 -F;X7 -F;X8 -F;X9 -F;X10 -F;P19;FG0G;Y10;X1 -C;K22269 -F;STM0;X3 -C;K"TOP" -F;P17;FG0G;Y11;X1 -C;K1.5 -F;Y12 -F;X2 -F;SBM0;X3 -C;K"BOTTOM" -F;X4 -F;X5 -F;X6 -F;X7 -F;X8 -F;X9 -F;X10 -F;SLM0;Y14;X3 -C;K"LEFT" -F;SRM0;Y16 -C;K"RIGHT" -F;Y17 -F;SLRTBM0;Y18 -C;K"BOX" -E diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/XMLReader.php b/htdocs/includes/phpoffice/phpexcel/Examples/XMLReader.php deleted file mode 100644 index 1aa0f95f773..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/XMLReader.php +++ /dev/null @@ -1,60 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); - -date_default_timezone_set('Europe/London'); - -/** PHPExcel_IOFactory */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel/IOFactory.php'; - - -echo date('H:i:s') , " Load from XML file" , PHP_EOL; -$inputFileName = "XMLTest.xml"; - -/** Identify the type of $inputFileName **/ -$inputFileType = PHPExcel_IOFactory::identify($inputFileName); -echo 'Loading ' , $inputFileName , ' using ' , $inputFileType , " Reader" , PHP_EOL; - -/** Create a new Reader of the type that has been identified **/ -$objReader = PHPExcel_IOFactory::createReader($inputFileType); -/** Load $inputFileName to a PHPExcel Object **/ -$objPHPExcel = $objReader->load($inputFileName); - - -echo date('H:i:s') , " Write to Excel2007 format" , PHP_EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', __FILE__) , PHP_EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , PHP_EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , PHP_EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/XMLTest.xml b/htdocs/includes/phpoffice/phpexcel/Examples/XMLTest.xml deleted file mode 100644 index 4159a94c88c..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/XMLTest.xml +++ /dev/null @@ -1,450 +0,0 @@ -<?xml version="1.0"?> -<?mso-application progid="Excel.Sheet"?> -<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" - xmlns:o="urn:schemas-microsoft-com:office:office" - xmlns:x="urn:schemas-microsoft-com:office:excel" - xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" - xmlns:html="http://www.w3.org/TR/REC-html40"> - <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office"> - <Title>Excel 2003 XML Test Workbook</Title> - <Subject>This is a test workbook saved as Excel 2003 XML</Subject> - <Author>Mark Baker</Author> - <Keywords>PHPExcel Excel 2003 XML Reader</Keywords> - <Description>This is a test for the PHPExcel Reader for workbooks saved using Excel 2003's XML Format</Description> - <LastAuthor>Mark Baker</LastAuthor> - <Created>2009-09-11T08:26:08Z</Created> - <LastSaved>2009-09-17T22:53:09Z</LastSaved> - <Category>Reader</Category> - <Company>PHPExcel</Company> - <Version>14.00</Version> - </DocumentProperties> - <OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office"> - <AllowPNG/> - </OfficeDocumentSettings> - <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel"> - <WindowHeight>13176</WindowHeight> - <WindowWidth>28452</WindowWidth> - <WindowTopX>240</WindowTopX> - <WindowTopY>516</WindowTopY> - <ProtectStructure>False</ProtectStructure> - <ProtectWindows>False</ProtectWindows> - </ExcelWorkbook> - <Styles> - <Style ss:ID="Default" ss:Name="Normal"> - <Alignment ss:Vertical="Bottom"/> - <Borders/> - <Font ss:FontName="Calibri" ss:Size="11" ss:Color="#000000"/> - <Interior/> - <NumberFormat/> - <Protection/> - </Style> - <Style ss:ID="m42221568"> - <Alignment ss:Horizontal="Center" ss:Vertical="Center"/> - <Borders> - <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="3" - ss:Color="#00B050"/> - <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="3" - ss:Color="#0070C0"/> - <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="3" - ss:Color="#FFFF00"/> - <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="3" - ss:Color="#FF0000"/> - </Borders> - <Font ss:FontName="Arial" ss:Size="11" ss:Color="#000000"/> - </Style> - <Style ss:ID="s62"> - <Font ss:FontName="Arial" ss:Size="11" ss:Color="#FF0000" ss:Bold="1"/> - </Style> - <Style ss:ID="s63"> - <Font ss:FontName="Arial" ss:Size="11" ss:Color="#000000"/> - </Style> - <Style ss:ID="s64"> - <Font ss:FontName="Arial" ss:Size="11" ss:Color="#000000" ss:Bold="1" - ss:Italic="1" ss:Underline="Single"/> - </Style> - <Style ss:ID="s65"> - <Font ss:FontName="Arial" ss:Size="11" ss:Color="#000000" ss:Bold="1" - ss:Underline="Single"/> - </Style> - <Style ss:ID="s66"> - <Font ss:FontName="Arial" ss:Size="11" ss:Color="#000000" ss:Bold="1"/> - <Interior/> - </Style> - <Style ss:ID="s67"> - <Font ss:FontName="Arial" ss:Size="11" ss:Color="#000000"/> - <Interior/> - </Style> - <Style ss:ID="s68"> - <Font ss:FontName="Arial" ss:Size="11" ss:Color="#000000" ss:Bold="1"/> - </Style> - <Style ss:ID="s69"> - <Font ss:FontName="Arial" ss:Size="11" ss:Color="#000000" ss:Bold="1" - ss:Italic="1"/> - </Style> - <Style ss:ID="s70"> - <Font ss:FontName="Arial" ss:Size="11" ss:Color="#000000" ss:Underline="Single"/> - </Style> - <Style ss:ID="s71"> - <Font ss:FontName="Arial" ss:Size="11" ss:Color="#000000" ss:Italic="1"/> - </Style> - <Style ss:ID="s72"> - <Font ss:FontName="Arial" ss:Size="11" ss:Color="#000000"/> - <NumberFormat ss:Format="Short Date"/> - </Style> - <Style ss:ID="s73"> - <Borders> - <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="2" - ss:Color="#000000"/> - </Borders> - <Font ss:FontName="Arial" ss:Size="11" ss:Color="#000000"/> - </Style> - <Style ss:ID="s74"> - <Font ss:FontName="Arial" ss:Size="11" ss:Color="#000000"/> - <NumberFormat ss:Format="#\ ?/?"/> - </Style> - <Style ss:ID="s75"> - <Borders> - <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="2" - ss:Color="#000000"/> - </Borders> - <Font ss:FontName="Arial" ss:Size="11" ss:Color="#000000"/> - </Style> - <Style ss:ID="s76"> - <Borders> - <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="2" - ss:Color="#000000"/> - </Borders> - <Font ss:FontName="Arial" ss:Size="11" ss:Color="#000000"/> - </Style> - <Style ss:ID="s77"> - <Borders> - <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="2" - ss:Color="#000000"/> - </Borders> - <Font ss:FontName="Arial" ss:Size="11" ss:Color="#000000"/> - </Style> - <Style ss:ID="s85"> - <Borders> - <Border ss:Position="DiagonalLeft" ss:LineStyle="Double" ss:Weight="3" - ss:Color="#FF0000"/> - <Border ss:Position="DiagonalRight" ss:LineStyle="Double" ss:Weight="3" - ss:Color="#FF0000"/> - </Borders> - </Style> - <Style ss:ID="s86"> - <Alignment ss:Horizontal="Center" ss:Vertical="Bottom" ss:WrapText="1"/> - <Font ss:FontName="Arial" ss:Size="12" ss:Color="#000000" ss:Bold="1" - ss:Underline="Single"/> - </Style> - <Style ss:ID="s87"> - <Font ss:FontName="Arial" ss:Size="11" ss:Color="#000000"/> - <NumberFormat ss:Format="0.00;[Red]0.00"/> - </Style> - <Style ss:ID="s88"> - <Font ss:FontName="Arial" ss:Size="11" ss:Color="#000000"/> - <NumberFormat ss:Format="dd\-mmm\-yyyy"/> - </Style> - </Styles> - <Worksheet ss:Name="Sample Data"> - <Table ss:ExpandedColumnCount="10" ss:ExpandedRowCount="20" x:FullColumns="1" - x:FullRows="1" ss:DefaultRowHeight="15"> - <Column ss:AutoFitWidth="0" ss:Width="90.6"/> - <Column ss:Index="4" ss:AutoFitWidth="0" ss:Width="33.6"/> - <Row ss:AutoFitHeight="0"> - <Cell ss:StyleID="s62"><Data ss:Type="String">Test String 1</Data></Cell> - <Cell ss:StyleID="s63"><Data ss:Type="Number">1</Data></Cell> - <Cell ss:StyleID="s63"><Data ss:Type="Number">5</Data></Cell> - <Cell ss:Index="5" ss:StyleID="s64"><Data ss:Type="String">A</Data></Cell> - <Cell ss:StyleID="s65"><Data ss:Type="String">E</Data></Cell> - <Cell ss:Index="8" ss:Formula="=RC[-6]+RC[-5]"><Data ss:Type="Number">6</Data></Cell> - <Cell ss:Index="10" ss:Formula="=RC[-5]&RC[-4]"><Data ss:Type="String">AE</Data></Cell> - </Row> - <Row ss:AutoFitHeight="0"> - <Cell ss:StyleID="s66"><Data ss:Type="String">Test - String 2</Data></Cell> - <Cell><Data ss:Type="Number">2</Data></Cell> - <Cell ss:StyleID="s63"><Data ss:Type="Number">6</Data></Cell> - <Cell ss:Index="5"><Data ss:Type="String">B</Data></Cell> - <Cell><Data ss:Type="String">F</Data></Cell> - <Cell ss:Index="8" ss:Formula="=RC[-6]+RC[-5]"><Data ss:Type="Number">8</Data></Cell> - <Cell ss:Index="10" ss:Formula="=RC[-5]&RC[-4]"><Data ss:Type="String">BF</Data></Cell> - </Row> - <Row ss:AutoFitHeight="0"> - <Cell ss:StyleID="s67"><Data ss:Type="String">Test #3</Data></Cell> - <Cell ss:StyleID="s63"><Data ss:Type="Number">3</Data></Cell> - <Cell ss:StyleID="s63"><Data ss:Type="Number">7</Data></Cell> - <Cell ss:Index="5" ss:StyleID="s68"><Data ss:Type="String">C</Data></Cell> - <Cell ss:StyleID="s69"><Data ss:Type="String">G</Data></Cell> - <Cell ss:Index="8" ss:Formula="=RC[-6]+RC[-5]"><Data ss:Type="Number">10</Data></Cell> - <Cell ss:Index="10" ss:Formula="=RC[-5]&RC[-4]"><Data ss:Type="String">CG</Data></Cell> - </Row> - <Row ss:AutoFitHeight="0"> - <Cell ss:StyleID="s70"><Data ss:Type="String">Test with (") in string</Data></Cell> - <Cell><Data ss:Type="Number">4</Data></Cell> - <Cell ss:StyleID="s63"><Data ss:Type="Number">8</Data></Cell> - <Cell ss:Index="5" ss:StyleID="s71"><Data ss:Type="String">D</Data></Cell> - <Cell><Data ss:Type="String">H</Data></Cell> - <Cell ss:Index="8" ss:Formula="=RC[-6]+RC[-5]"><Data ss:Type="Number">12</Data></Cell> - <Cell ss:Index="10" ss:Formula="=RC[-5]&RC[-4]"><Data ss:Type="String">DH</Data></Cell> - </Row> - <Row ss:AutoFitHeight="0"> - <Cell ss:Index="8" ss:Formula="=SUM(R[-4]C[-6]:R[-1]C[-6])"><Data - ss:Type="Number">10</Data></Cell> - <Cell ss:Formula="=SUM(R[-4]C[-6]:R[-1]C[-6])"><Data ss:Type="Number">26</Data></Cell> - <Cell ss:Formula="=SUM(R[-4]C[-8]:R[-1]C[-7])"><Data ss:Type="Number">36</Data></Cell> - </Row> - <Row ss:AutoFitHeight="0"> - <Cell ss:Index="2"><Data ss:Type="Number">1.23</Data></Cell> - <Cell><Data ss:Type="Boolean">1</Data></Cell> - <Cell ss:StyleID="s72"/> - </Row> - <Row ss:AutoFitHeight="0"> - <Cell ss:Index="2"><Data ss:Type="Number">2.34</Data></Cell> - <Cell><Data ss:Type="Boolean">0</Data></Cell> - </Row> - <Row ss:AutoFitHeight="0"> - <Cell ss:Index="2"><Data ss:Type="Number">3.45</Data></Cell> - </Row> - <Row ss:AutoFitHeight="0" ss:Height="13.5"/> - <Row ss:AutoFitHeight="0"> - <Cell ss:StyleID="s72"><Data ss:Type="DateTime">1960-12-19T00:00:00.000</Data></Cell> - <Cell ss:Index="3" ss:StyleID="s73"><Data ss:Type="String">TOP</Data></Cell> - <Cell ss:Index="7" ss:Formula="=#N/A"><Data ss:Type="Error">#N/A</Data></Cell> - </Row> - <Row ss:AutoFitHeight="0"> - <Cell ss:StyleID="s74"><Data ss:Type="Number">1.5</Data></Cell> - <Cell ss:Index="7" ss:Formula="=12/0"><Data ss:Type="Error">#DIV/0!</Data></Cell> - </Row> - <Row ss:AutoFitHeight="0" ss:Height="13.5"> - <Cell ss:Index="3" ss:StyleID="s75"><Data ss:Type="String">BOTTOM</Data></Cell> - </Row> - <Row ss:Index="14" ss:AutoFitHeight="0"> - <Cell ss:Index="3" ss:StyleID="s76"><Data ss:Type="String">LEFT</Data></Cell> - </Row> - <Row ss:Index="16" ss:AutoFitHeight="0"> - <Cell ss:Index="3" ss:StyleID="s77"><Data ss:Type="String">RIGHT</Data></Cell> - </Row> - <Row ss:AutoFitHeight="0" ss:Height="13.5"/> - <Row ss:AutoFitHeight="0" ss:Height="13.5"> - <Cell ss:Index="2" ss:MergeAcross="1" ss:MergeDown="1" ss:StyleID="m42221568"><Data - ss:Type="String">BOX</Data></Cell> - <Cell ss:Index="5" ss:StyleID="s85"/> - <Cell ss:Index="7"><Data ss:Type="String">Test Column 1</Data></Cell> - </Row> - <Row ss:AutoFitHeight="0"> - <Cell ss:Index="8"><Data ss:Type="String">Test Column 2</Data></Cell> - </Row> - <Row ss:AutoFitHeight="0"> - <Cell ss:Index="9"><Data ss:Type="String">Test Column 3</Data></Cell> - </Row> - </Table> - <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> - <PageSetup> - <Header x:Margin="0.3"/> - <Footer x:Margin="0.3"/> - <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/> - </PageSetup> - <Unsynced/> - <Print> - <ValidPrinterInfo/> - <HorizontalResolution>600</HorizontalResolution> - <VerticalResolution>600</VerticalResolution> - </Print> - <Selected/> - <Panes> - <Pane> - <Number>3</Number> - <ActiveRow>17</ActiveRow> - <ActiveCol>4</ActiveCol> - </Pane> - </Panes> - <ProtectObjects>False</ProtectObjects> - <ProtectScenarios>False</ProtectScenarios> - <AllowFormatCells/> - <AllowSizeCols/> - <AllowSizeRows/> - <AllowInsertCols/> - <AllowInsertRows/> - <AllowInsertHyperlinks/> - <AllowDeleteCols/> - <AllowDeleteRows/> - <AllowSort/> - <AllowFilter/> - <AllowUsePivotTables/> - </WorksheetOptions> - </Worksheet> - <Worksheet ss:Name="Report Data"> - <Table ss:ExpandedColumnCount="7" ss:ExpandedRowCount="14" x:FullColumns="1" - x:FullRows="1" ss:DefaultRowHeight="15"> - <Column ss:AutoFitWidth="0" ss:Width="66.600000000000009"/> - <Column ss:AutoFitWidth="0" ss:Width="68.399999999999991"/> - <Column ss:AutoFitWidth="0" ss:Width="62.400000000000006"/> - <Column ss:Width="69.599999999999994"/> - <Column ss:Index="6" ss:Width="69.599999999999994"/> - <Column ss:AutoFitWidth="0" ss:Width="64.8"/> - <Row ss:AutoFitHeight="0" ss:Height="31.5"> - <Cell ss:StyleID="s86"><Data ss:Type="String">Heading 1</Data></Cell> - <Cell ss:StyleID="s86"><Data ss:Type="String">Heading 2</Data></Cell> - <Cell ss:StyleID="s86"><Data ss:Type="String">Third Heading</Data></Cell> - <Cell ss:StyleID="s86"><Data ss:Type="String">Date Heading</Data></Cell> - <Cell ss:Index="6" ss:StyleID="s86"><Data ss:Type="String">Adjusted Date</Data></Cell> - <Cell ss:StyleID="s86"><Data ss:Type="String">Adjusted Number</Data></Cell> - </Row> - <Row ss:AutoFitHeight="0"> - <Cell><Data ss:Type="String">ABC</Data></Cell> - <Cell><Data ss:Type="Number">1</Data></Cell> - <Cell ss:StyleID="s87"><Data ss:Type="Number">1.1100000000000001</Data></Cell> - <Cell ss:StyleID="s88"><Data ss:Type="DateTime">2001-01-01T00:00:00.000</Data></Cell> - <Cell ss:Index="6" ss:StyleID="s88" ss:Formula="=RC[-2]-RC[-4]"><Data - ss:Type="DateTime">2000-12-31T00:00:00.000</Data></Cell> - <Cell ss:StyleID="s87" ss:Formula="=RC[-5]*RC[-4]"><Data ss:Type="Number">1.1100000000000001</Data></Cell> - </Row> - <Row ss:AutoFitHeight="0"> - <Cell><Data ss:Type="String">BCD</Data></Cell> - <Cell><Data ss:Type="Number">2</Data></Cell> - <Cell ss:StyleID="s87"><Data ss:Type="Number">2.2200000000000002</Data></Cell> - <Cell ss:StyleID="s88"><Data ss:Type="DateTime">2002-02-02T00:00:00.000</Data></Cell> - <Cell ss:Index="6" ss:StyleID="s88" ss:Formula="=RC[-2]-RC[-4]"><Data - ss:Type="DateTime">2002-01-31T00:00:00.000</Data></Cell> - <Cell ss:StyleID="s87" ss:Formula="=RC[-5]*RC[-4]"><Data ss:Type="Number">4.4400000000000004</Data></Cell> - </Row> - <Row ss:AutoFitHeight="0"> - <Cell><Data ss:Type="String">CDE</Data></Cell> - <Cell><Data ss:Type="Number">3</Data></Cell> - <Cell ss:StyleID="s87"><Data ss:Type="Number">3.33</Data></Cell> - <Cell ss:StyleID="s88"><Data ss:Type="DateTime">2003-03-03T00:00:00.000</Data></Cell> - <Cell ss:Index="6" ss:StyleID="s88" ss:Formula="=RC[-2]-RC[-4]"><Data - ss:Type="DateTime">2003-02-28T00:00:00.000</Data></Cell> - <Cell ss:StyleID="s87" ss:Formula="=RC[-5]*RC[-4]"><Data ss:Type="Number">9.99</Data></Cell> - </Row> - <Row ss:AutoFitHeight="0"> - <Cell><Data ss:Type="String">DEF</Data></Cell> - <Cell><Data ss:Type="Number">4</Data></Cell> - <Cell ss:StyleID="s87"><Data ss:Type="Number">4.4400000000000004</Data></Cell> - <Cell ss:StyleID="s88"><Data ss:Type="DateTime">2004-04-03T23:00:00.000</Data></Cell> - <Cell ss:Index="6" ss:StyleID="s88" ss:Formula="=RC[-2]-RC[-4]"><Data - ss:Type="DateTime">2004-03-30T23:00:00.000</Data></Cell> - <Cell ss:StyleID="s87" ss:Formula="=RC[-5]*RC[-4]"><Data ss:Type="Number">17.760000000000002</Data></Cell> - </Row> - <Row ss:AutoFitHeight="0"> - <Cell><Data ss:Type="String">EFG</Data></Cell> - <Cell><Data ss:Type="Number">5</Data></Cell> - <Cell ss:StyleID="s87"><Data ss:Type="Number">5.55</Data></Cell> - <Cell ss:StyleID="s88"><Data ss:Type="DateTime">2005-05-04T23:00:00.000</Data></Cell> - <Cell ss:Index="6" ss:StyleID="s88" ss:Formula="=RC[-2]-RC[-4]"><Data - ss:Type="DateTime">2005-04-29T23:00:00.000</Data></Cell> - <Cell ss:StyleID="s87" ss:Formula="=RC[-5]*RC[-4]"><Data ss:Type="Number">27.75</Data></Cell> - </Row> - <Row ss:AutoFitHeight="0"> - <Cell><Data ss:Type="String">FGH</Data></Cell> - <Cell><Data ss:Type="Number">6</Data></Cell> - <Cell ss:StyleID="s87"><Data ss:Type="Number">6.66</Data></Cell> - <Cell ss:StyleID="s88"><Data ss:Type="DateTime">2006-06-05T23:00:00.000</Data></Cell> - <Cell ss:Index="6" ss:StyleID="s88" ss:Formula="=RC[-2]-RC[-4]"><Data - ss:Type="DateTime">2006-05-30T23:00:00.000</Data></Cell> - <Cell ss:StyleID="s87" ss:Formula="=RC[-5]*RC[-4]"><Data ss:Type="Number">39.96</Data></Cell> - </Row> - <Row ss:AutoFitHeight="0"> - <Cell><Data ss:Type="String">GHI</Data></Cell> - <Cell><Data ss:Type="Number">7</Data></Cell> - <Cell ss:StyleID="s87"><Data ss:Type="Number">7.77</Data></Cell> - <Cell ss:StyleID="s88"><Data ss:Type="DateTime">2007-07-06T23:00:00.000</Data></Cell> - <Cell ss:Index="6" ss:StyleID="s88" ss:Formula="=RC[-2]-RC[-4]"><Data - ss:Type="DateTime">2007-06-29T23:00:00.000</Data></Cell> - <Cell ss:StyleID="s87" ss:Formula="=RC[-5]*RC[-4]"><Data ss:Type="Number">54.39</Data></Cell> - </Row> - <Row ss:AutoFitHeight="0"> - <Cell><Data ss:Type="String">HIJ</Data></Cell> - <Cell><Data ss:Type="Number">8</Data></Cell> - <Cell ss:StyleID="s87"><Data ss:Type="Number">8.8800000000000008</Data></Cell> - <Cell ss:StyleID="s88"><Data ss:Type="DateTime">2008-08-07T23:00:00.000</Data></Cell> - <Cell ss:Index="6" ss:StyleID="s88" ss:Formula="=RC[-2]-RC[-4]"><Data - ss:Type="DateTime">2008-07-30T23:00:00.000</Data></Cell> - <Cell ss:StyleID="s87" ss:Formula="=RC[-5]*RC[-4]"><Data ss:Type="Number">71.040000000000006</Data></Cell> - </Row> - <Row ss:AutoFitHeight="0"> - <Cell><Data ss:Type="String">IJK</Data></Cell> - <Cell><Data ss:Type="Number">9</Data></Cell> - <Cell ss:StyleID="s87"><Data ss:Type="Number">9.99</Data></Cell> - <Cell ss:StyleID="s88"><Data ss:Type="DateTime">2009-09-08T23:00:00.000</Data></Cell> - <Cell ss:Index="6" ss:StyleID="s88" ss:Formula="=RC[-2]-RC[-4]"><Data - ss:Type="DateTime">2009-08-30T23:00:00.000</Data></Cell> - <Cell ss:StyleID="s87" ss:Formula="=RC[-5]*RC[-4]"><Data ss:Type="Number">89.91</Data></Cell> - </Row> - <Row ss:AutoFitHeight="0"> - <Cell><Data ss:Type="String">JKL</Data></Cell> - <Cell><Data ss:Type="Number">10</Data></Cell> - <Cell ss:StyleID="s87"><Data ss:Type="Number">11.1</Data></Cell> - <Cell ss:StyleID="s88"><Data ss:Type="DateTime">2010-10-09T23:00:00.000</Data></Cell> - <Cell ss:Index="6" ss:StyleID="s88" ss:Formula="=RC[-2]-RC[-4]"><Data - ss:Type="DateTime">2010-09-29T23:00:00.000</Data></Cell> - <Cell ss:StyleID="s87" ss:Formula="=RC[-5]*RC[-4]"><Data ss:Type="Number">111</Data></Cell> - </Row> - <Row ss:AutoFitHeight="0"> - <Cell><Data ss:Type="String">KLM</Data></Cell> - <Cell><Data ss:Type="Number">11</Data></Cell> - <Cell ss:StyleID="s87"><Data ss:Type="Number">12.21</Data></Cell> - <Cell ss:StyleID="s88"><Data ss:Type="DateTime">2011-11-11T00:00:00.000</Data></Cell> - <Cell ss:Index="6" ss:StyleID="s88" ss:Formula="=RC[-2]-RC[-4]"><Data - ss:Type="DateTime">2011-10-31T00:00:00.000</Data></Cell> - <Cell ss:StyleID="s87" ss:Formula="=RC[-5]*RC[-4]"><Data ss:Type="Number">134.31</Data></Cell> - </Row> - <Row ss:AutoFitHeight="0"> - <Cell><Data ss:Type="String">LMN</Data></Cell> - <Cell><Data ss:Type="Number">12</Data></Cell> - <Cell ss:StyleID="s87"><Data ss:Type="Number">13.32</Data></Cell> - <Cell ss:StyleID="s88"><Data ss:Type="DateTime">2012-12-12T00:00:00.000</Data></Cell> - <Cell ss:Index="6" ss:StyleID="s88" ss:Formula="=RC[-2]-RC[-4]"><Data - ss:Type="DateTime">2012-11-30T00:00:00.000</Data></Cell> - <Cell ss:StyleID="s87" ss:Formula="=RC[-5]*RC[-4]"><Data ss:Type="Number">159.84</Data></Cell> - </Row> - <Row ss:AutoFitHeight="0"> - <Cell><Data ss:Type="String">ZYX</Data></Cell> - <Cell><Data ss:Type="Number">-1</Data></Cell> - <Cell ss:StyleID="s87"><Data ss:Type="Number">-1.1100000000000001</Data></Cell> - <Cell ss:StyleID="s88"><Data ss:Type="DateTime">1999-12-01T00:00:00.000</Data></Cell> - <Cell ss:Index="6" ss:StyleID="s88" ss:Formula="=RC[-2]-RC[-4]"><Data - ss:Type="DateTime">1999-12-02T00:00:00.000</Data></Cell> - <Cell ss:StyleID="s87" ss:Formula="=RC[-5]*RC[-4]"><Data ss:Type="Number">1.1100000000000001</Data></Cell> - </Row> - </Table> - <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> - <PageSetup> - <Header x:Margin="0.3"/> - <Footer x:Margin="0.3"/> - <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/> - </PageSetup> - <Unsynced/> - <Print> - <ValidPrinterInfo/> - <HorizontalResolution>600</HorizontalResolution> - <VerticalResolution>600</VerticalResolution> - </Print> - <ProtectObjects>False</ProtectObjects> - <ProtectScenarios>False</ProtectScenarios> - <AllowFormatCells/> - <AllowSizeCols/> - <AllowSizeRows/> - <AllowInsertCols/> - <AllowInsertRows/> - <AllowInsertHyperlinks/> - <AllowDeleteCols/> - <AllowDeleteRows/> - <AllowSort/> - <AllowFilter/> - <AllowUsePivotTables/> - </WorksheetOptions> - <ConditionalFormatting xmlns="urn:schemas-microsoft-com:office:excel"> - <Range>R2C3:R14C3</Range> - <Condition> - <Qualifier>Greater</Qualifier> - <Value1>0</Value1> - <Format Style='color:#006100;background:#C6EFCE'/> - </Condition> - <Condition> - <Qualifier>Less</Qualifier> - <Value1>0</Value1> - <Format Style='color:#9C0006;background:#FFC7CE'/> - </Condition> - </ConditionalFormatting> - </Worksheet> -</Workbook> diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/data/continents/Africa.txt b/htdocs/includes/phpoffice/phpexcel/Examples/data/continents/Africa.txt deleted file mode 100644 index 407fa769aa3..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/data/continents/Africa.txt +++ /dev/null @@ -1,54 +0,0 @@ -Algeria -Angola -Benin -Botswana -Burkina -Burundi -Cameroon -Cape Verde -Central African Republic -Chad -Comoros -Congo -Congo, Democratic Republic of -Djibouti -Egypt -Equatorial Guinea -Eritrea -Ethiopia -Gabon -Gambia -Ghana -Guinea -Guinea-Bissau -Ivory Coast -Kenya -Lesotho -Liberia -Libya -Madagascar -Malawi -Mali -Mauritania -Mauritius -Morocco -Mozambique -Namibia -Niger -Nigeria -Rwanda -Sao Tome and Principe -Senegal -Seychelles -Sierra Leone -Somalia -South Africa -South Sudan -Sudan -Swaziland -Tanzania -Togo -Tunisia -Uganda -Zambia -Zimbabwe diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/data/continents/Asia.txt b/htdocs/includes/phpoffice/phpexcel/Examples/data/continents/Asia.txt deleted file mode 100644 index 9ce006c53c8..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/data/continents/Asia.txt +++ /dev/null @@ -1,44 +0,0 @@ -Afghanistan -Bahrain -Bangladesh -Bhutan -Brunei -Burma (Myanmar) -Cambodia -China -East Timor -India -Indonesia -Iran -Iraq -Israel -Japan -Jordan -Kazakhstan -Korea, North -Korea, South -Kuwait -Kyrgyzstan -Laos -Lebanon -Malaysia -Maldives -Mongolia -Nepal -Oman -Pakistan -Philippines -Qatar -Russian Federation -Saudi Arabia -Singapore -Sri Lanka -Syria -Tajikistan -Thailand -Turkey -Turkmenistan -United Arab Emirates -Uzbekistan -Vietnam -Yemen diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/data/continents/Europe.txt b/htdocs/includes/phpoffice/phpexcel/Examples/data/continents/Europe.txt deleted file mode 100644 index 70c11607ab9..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/data/continents/Europe.txt +++ /dev/null @@ -1,47 +0,0 @@ -Albania -Andorra -Armenia -Austria -Azerbaijan -Belarus -Belgium -Bosnia and Herzegovina -Bulgaria -Croatia -Cyprus -Czech Republic -Denmark -Estonia -Finland -France -Georgia -Germany -Greece -Hungary -Iceland -Ireland -Italy -Latvia -Liechtenstein -Lithuania -Luxembourg -Macedonia -Malta -Moldova -Monaco -Montenegro -Netherlands -Norway -Poland -Portugal -Romania -San Marino -Serbia -Slovakia -Slovenia -Spain -Sweden -Switzerland -Ukraine -United Kingdom -Vatican City diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/data/continents/North America.txt b/htdocs/includes/phpoffice/phpexcel/Examples/data/continents/North America.txt deleted file mode 100644 index 5881ae132ab..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/data/continents/North America.txt +++ /dev/null @@ -1,23 +0,0 @@ -Antigua and Barbuda -Bahamas -Barbados -Belize -Canada -Costa Rica -Cuba -Dominica -Dominican Republic -El Salvador -Grenada -Guatemala -Haiti -Honduras -Jamaica -Mexico -Nicaragua -Panama -Saint Kitts and Nevis -Saint Lucia -Saint Vincent and the Grenadines -Trinidad and Tobago -United States diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/data/continents/Oceania.txt b/htdocs/includes/phpoffice/phpexcel/Examples/data/continents/Oceania.txt deleted file mode 100644 index cbdc896c1ca..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/data/continents/Oceania.txt +++ /dev/null @@ -1,14 +0,0 @@ -Australia -Fiji -Kiribati -Marshall Islands -Micronesia -Nauru -New Zealand -Palau -Papua New Guinea -Samoa -Solomon Islands -Tonga -Tuvalu -Vanuatu diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/data/continents/South America.txt b/htdocs/includes/phpoffice/phpexcel/Examples/data/continents/South America.txt deleted file mode 100644 index 777ffbfb94b..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/data/continents/South America.txt +++ /dev/null @@ -1,12 +0,0 @@ -Argentina -Bolivia -Brazil -Chile -Colombia -Ecuador -Guyana -Paraguay -Peru -Suriname -Uruguay -Venezuela diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/images/officelogo.jpg b/htdocs/includes/phpoffice/phpexcel/Examples/images/officelogo.jpg deleted file mode 100644 index 7e0133d13462f2aa206ac0463c3bdbb5e04e66e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5597 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 diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/images/paid.png b/htdocs/includes/phpoffice/phpexcel/Examples/images/paid.png deleted file mode 100644 index a4355bd6de59bcba25c7092654086f7e3898745c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1605 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 Y3yQf?WLoz#FfcH9y85}Sb4q9e01c1p*Z=?k diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/images/phpexcel_logo.gif b/htdocs/includes/phpoffice/phpexcel/Examples/images/phpexcel_logo.gif deleted file mode 100644 index 6e1b5ee45266afddac77bc2b71b3e65f0a3e4037..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6104 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 WT4eugN&K&6^}km9S7c;lum%8W1uvEW diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/images/termsconditions.jpg b/htdocs/includes/phpoffice/phpexcel/Examples/images/termsconditions.jpg deleted file mode 100644 index 1f21302e4265ddae9dde9cac249634da1008ddef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 528 zcmex=<NpH&0WUXCHwH#V1_nk3Mh1rew;7xnxY*e_*x9%^I5@buxVZTw1o(J)`D8`K z1SOQ^RaKPal@!&q&GpqZO*9pi3>*zjEUoSA>{Rt!Je_Sk%x&$gL547LadY$W^2rDY z$XIJAX;_mC{vTiv<X{kE5MyRkVqg+vWEN!ne}q92<Wy!x1|-1B#LUj}{|JM&00R>v zGcyx2Crp}=iJ5^#kd@6)NKr&7kX_iwF|n|5;=&LAk1$9uGB7bC8N$H8%*wz7GDc32 zfr*I;S(1^7L6Dh6$XHRS@c%6a9%e=cCP8LF2788=({{H>FISXPvys?*=~b=uH~UkQ zcj)H{X{LQB=j%9rE@s911I%y#nPz>@d1?N6%comkPW@*PK6cdeZwPPdY>&&&wnVB` zC{JiD|6HaZlm2p+`yMmHN8hu>Kb)=DA@)IicFL=$V+$+G0*|-#GJFrVOj_fgQ&o0W z+kdl~@GGe$5Bfw44?g*`(&wv{*n{FS$%|TY+qcJuzBY(InU!)p>Px$uO*(sXS5VK7 u%L<Pk9g*4?oRqw+Z0WY!k+Ur4RX#r+(_{F9Y0A<FhD9wclXA}gzX<@cmYv1` diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/runall.php b/htdocs/includes/phpoffice/phpexcel/Examples/runall.php deleted file mode 100644 index b2af1ccd0be..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/runall.php +++ /dev/null @@ -1,130 +0,0 @@ -<?php -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Error reporting */ -error_reporting(E_ALL); - -if (PHP_SAPI != 'cli') { - die ('This script executes all tests, and should only be run from the command line'); -} - -// List of tests -$aTests = array( - '01simple.php' - , '01simplePCLZip.php' - , '02types.php' - , '02types-xls.php' - , '03formulas.php' - , '04printing.php' - , '05featuredemo.php' - , '06largescale.php' - , '06largescale-with-cellcaching.php' - , '06largescale-with-cellcaching-sqlite.php' - , '06largescale-with-cellcaching-sqlite3.php' - , '06largescale-xls.php' - , '07reader.php' - , '07readerPCLZip.php' - , '08conditionalformatting.php' - , '08conditionalformatting2.php' - , '09pagebreaks.php' - , '10autofilter.php' - , '10autofilter-selection-1.php' - , '10autofilter-selection-2.php' - , '10autofilter-selection-display.php' - , '11documentsecurity.php' - , '11documentsecurity-xls.php' - , '12cellProtection.php' - , '13calculation.php' - , '13calculationCyclicFormulae.php' - , '14excel5.php' - , '15datavalidation.php' - , '15datavalidation-xls.php' - , '16csv.php' - , '17html.php' - , '18extendedcalculation.php' - , '19namedrange.php' - , '20readexcel5.php' - , '21pdf.php' - , '22heavilyformatted.php' - , '23sharedstyles.php' - , '24readfilter.php' - , '25inmemoryimage.php' - , '26utf8.php' - , '27imagesexcel5.php' - , '28iterator.php' - , '29advancedvaluebinder.php' - , '30template.php' - , '31docproperties_write.php' - , '31docproperties_write-xls.php' - , '32chartreadwrite.php' - , '33chartcreate-area.php' - , '33chartcreate-bar.php' - , '33chartcreate-bar-stacked.php' - , '33chartcreate-column.php' - , '33chartcreate-column-2.php' - , '33chartcreate-line.php' - , '33chartcreate-pie.php' - , '33chartcreate-radar.php' - , '33chartcreate-stock.php' - , '33chartcreate-multiple-charts.php' - , '33chartcreate-composite.php' - , '34chartupdate.php' - , '35chartrender.php' - , '36chartreadwriteHTML.php' - , '36chartreadwritePDF.php' - , '37page_layout_view.php' - , '38cloneWorksheet.php' - , '39dropdown.php' - , '40duplicateStyle.php' - , '41password.php' - , '42richText.php' - , 'OOCalcReader.php' - , 'OOCalcReaderPCLZip.php' - , 'SylkReader.php' - , 'Excel2003XMLReader.php' - , 'XMLReader.php' - , 'GnumericReader.php' -); - -// First, clear all previous run results -foreach ($aTests as $sTest) { - @unlink( str_replace('.php', '.xls', $sTest) ); - @unlink( str_replace('.php', '.xlsx', $sTest) ); - @unlink( str_replace('.php', '.csv', $sTest) ); - @unlink( str_replace('.php', '.htm', $sTest) ); - @unlink( str_replace('.php', '.pdf', $sTest) ); -} - -// Run all tests -foreach ($aTests as $sTest) { - echo '============== TEST ==============' . "\r\n"; - echo 'Test name: ' . $sTest . "\r\n"; - echo "\r\n"; - echo shell_exec('php ' . $sTest); - echo "\r\n"; - echo "\r\n"; -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/AutoloaderTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/AutoloaderTest.php deleted file mode 100644 index 286ef627c88..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/AutoloaderTest.php +++ /dev/null @@ -1,56 +0,0 @@ -<?php - - -class AutoloaderTest extends PHPUnit_Framework_TestCase -{ - - public function setUp() - { - if (!defined('PHPEXCEL_ROOT')) - { - define('PHPEXCEL_ROOT', APPLICATION_PATH . '/'); - } - require_once(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); - } - - public function testAutoloaderNonPHPExcelClass() - { - $className = 'InvalidClass'; - - $result = PHPExcel_Autoloader::Load($className); - // Must return a boolean... - $this->assertTrue(is_bool($result)); - // ... indicating failure - $this->assertFalse($result); - } - - public function testAutoloaderInvalidPHPExcelClass() - { - $className = 'PHPExcel_Invalid_Class'; - - $result = PHPExcel_Autoloader::Load($className); - // Must return a boolean... - $this->assertTrue(is_bool($result)); - // ... indicating failure - $this->assertFalse($result); - } - - public function testAutoloadValidPHPExcelClass() - { - $className = 'PHPExcel_IOFactory'; - - $result = PHPExcel_Autoloader::Load($className); - // Check that class has been loaded - $this->assertTrue(class_exists($className)); - } - - public function testAutoloadInstantiateSuccess() - { - $result = new PHPExcel_Calculation_Function(1,2,3); - // Must return an object... - $this->assertTrue(is_object($result)); - // ... of the correct type - $this->assertTrue(is_a($result,'PHPExcel_Calculation_Function')); - } - -} \ No newline at end of file diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/DateTimeTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/DateTimeTest.php deleted file mode 100644 index d4bdc5abff2..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/DateTimeTest.php +++ /dev/null @@ -1,466 +0,0 @@ -<?php - - -require_once 'testDataFileIterator.php'; - -class DateTimeTest extends PHPUnit_Framework_TestCase -{ - - public function setUp() - { - if (!defined('PHPEXCEL_ROOT')) - { - define('PHPEXCEL_ROOT', APPLICATION_PATH . '/'); - } - require_once(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); - - PHPExcel_Calculation_Functions::setCompatibilityMode(PHPExcel_Calculation_Functions::COMPATIBILITY_EXCEL); - } - - /** - * @dataProvider providerDATE - */ - public function testDATE() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_DateTime','DATE'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerDATE() - { - return new testDataFileIterator('rawTestData/Calculation/DateTime/DATE.data'); - } - - public function testDATEtoPHP() - { - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC); - $result = PHPExcel_Calculation_DateTime::DATE(2012,1,31); - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_EXCEL); - $this->assertEquals(1327968000, $result, NULL, 1E-8); - } - - public function testDATEtoPHPObject() - { - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_PHP_OBJECT); - $result = PHPExcel_Calculation_DateTime::DATE(2012,1,31); - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_EXCEL); - // Must return an object... - $this->assertTrue(is_object($result)); - // ... of the correct type - $this->assertTrue(is_a($result,'DateTime')); - // ... with the correct value - $this->assertEquals($result->format('d-M-Y'),'31-Jan-2012'); - } - - public function testDATEwith1904Calendar() - { - PHPExcel_Shared_Date::setExcelCalendar(PHPExcel_Shared_Date::CALENDAR_MAC_1904); - $result = PHPExcel_Calculation_DateTime::DATE(1918,11,11); - PHPExcel_Shared_Date::setExcelCalendar(PHPExcel_Shared_Date::CALENDAR_WINDOWS_1900); - $this->assertEquals($result,5428); - } - - public function testDATEwith1904CalendarError() - { - PHPExcel_Shared_Date::setExcelCalendar(PHPExcel_Shared_Date::CALENDAR_MAC_1904); - $result = PHPExcel_Calculation_DateTime::DATE(1901,1,31); - PHPExcel_Shared_Date::setExcelCalendar(PHPExcel_Shared_Date::CALENDAR_WINDOWS_1900); - $this->assertEquals($result,'#NUM!'); - } - - /** - * @dataProvider providerDATEVALUE - */ - public function testDATEVALUE() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_DateTime','DATEVALUE'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerDATEVALUE() - { - return new testDataFileIterator('rawTestData/Calculation/DateTime/DATEVALUE.data'); - } - - public function testDATEVALUEtoPHP() - { - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC); - $result = PHPExcel_Calculation_DateTime::DATEVALUE('2012-1-31'); - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_EXCEL); - $this->assertEquals(1327968000, $result, NULL, 1E-8); - } - - public function testDATEVALUEtoPHPObject() - { - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_PHP_OBJECT); - $result = PHPExcel_Calculation_DateTime::DATEVALUE('2012-1-31'); - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_EXCEL); - // Must return an object... - $this->assertTrue(is_object($result)); - // ... of the correct type - $this->assertTrue(is_a($result,'DateTime')); - // ... with the correct value - $this->assertEquals($result->format('d-M-Y'),'31-Jan-2012'); - } - - /** - * @dataProvider providerYEAR - */ - public function testYEAR() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_DateTime','YEAR'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerYEAR() - { - return new testDataFileIterator('rawTestData/Calculation/DateTime/YEAR.data'); - } - - /** - * @dataProvider providerMONTH - */ - public function testMONTH() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_DateTime','MONTHOFYEAR'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerMONTH() - { - return new testDataFileIterator('rawTestData/Calculation/DateTime/MONTH.data'); - } - - /** - * @dataProvider providerWEEKNUM - */ - public function testWEEKNUM() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_DateTime','WEEKOFYEAR'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerWEEKNUM() - { - return new testDataFileIterator('rawTestData/Calculation/DateTime/WEEKNUM.data'); - } - - /** - * @dataProvider providerWEEKDAY - */ - public function testWEEKDAY() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_DateTime','DAYOFWEEK'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerWEEKDAY() - { - return new testDataFileIterator('rawTestData/Calculation/DateTime/WEEKDAY.data'); - } - - /** - * @dataProvider providerDAY - */ - public function testDAY() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_DateTime','DAYOFMONTH'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerDAY() - { - return new testDataFileIterator('rawTestData/Calculation/DateTime/DAY.data'); - } - - /** - * @dataProvider providerTIME - */ - public function testTIME() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_DateTime','TIME'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerTIME() - { - return new testDataFileIterator('rawTestData/Calculation/DateTime/TIME.data'); - } - - public function testTIMEtoPHP() - { - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC); - $result = PHPExcel_Calculation_DateTime::TIME(7,30,20); - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_EXCEL); - $this->assertEquals(27020, $result, NULL, 1E-8); - } - - public function testTIMEtoPHPObject() - { - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_PHP_OBJECT); - $result = PHPExcel_Calculation_DateTime::TIME(7,30,20); - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_EXCEL); - // Must return an object... - $this->assertTrue(is_object($result)); - // ... of the correct type - $this->assertTrue(is_a($result,'DateTime')); - // ... with the correct value - $this->assertEquals($result->format('H:i:s'),'07:30:20'); - } - - /** - * @dataProvider providerTIMEVALUE - */ - public function testTIMEVALUE() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_DateTime','TIMEVALUE'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerTIMEVALUE() - { - return new testDataFileIterator('rawTestData/Calculation/DateTime/TIMEVALUE.data'); - } - - public function testTIMEVALUEtoPHP() - { - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC); - $result = PHPExcel_Calculation_DateTime::TIMEVALUE('7:30:20'); - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_EXCEL); - $this->assertEquals(23420, $result, NULL, 1E-8); - } - - public function testTIMEVALUEtoPHPObject() - { - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_PHP_OBJECT); - $result = PHPExcel_Calculation_DateTime::TIMEVALUE('7:30:20'); - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_EXCEL); - // Must return an object... - $this->assertTrue(is_object($result)); - // ... of the correct type - $this->assertTrue(is_a($result,'DateTime')); - // ... with the correct value - $this->assertEquals($result->format('H:i:s'),'07:30:20'); - } - - /** - * @dataProvider providerHOUR - */ - public function testHOUR() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_DateTime','HOUROFDAY'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerHOUR() - { - return new testDataFileIterator('rawTestData/Calculation/DateTime/HOUR.data'); - } - - /** - * @dataProvider providerMINUTE - */ - public function testMINUTE() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_DateTime','MINUTEOFHOUR'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerMINUTE() - { - return new testDataFileIterator('rawTestData/Calculation/DateTime/MINUTE.data'); - } - - /** - * @dataProvider providerSECOND - */ - public function testSECOND() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_DateTime','SECONDOFMINUTE'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerSECOND() - { - return new testDataFileIterator('rawTestData/Calculation/DateTime/SECOND.data'); - } - - /** - * @dataProvider providerNETWORKDAYS - */ - public function testNETWORKDAYS() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_DateTime','NETWORKDAYS'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerNETWORKDAYS() - { - return new testDataFileIterator('rawTestData/Calculation/DateTime/NETWORKDAYS.data'); - } - - /** - * @dataProvider providerWORKDAY - */ - public function testWORKDAY() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_DateTime','WORKDAY'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerWORKDAY() - { - return new testDataFileIterator('rawTestData/Calculation/DateTime/WORKDAY.data'); - } - - /** - * @dataProvider providerEDATE - */ - public function testEDATE() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_DateTime','EDATE'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerEDATE() - { - return new testDataFileIterator('rawTestData/Calculation/DateTime/EDATE.data'); - } - - public function testEDATEtoPHP() - { - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC); - $result = PHPExcel_Calculation_DateTime::EDATE('2012-1-26',-1); - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_EXCEL); - $this->assertEquals(1324857600, $result, NULL, 1E-8); - } - - public function testEDATEtoPHPObject() - { - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_PHP_OBJECT); - $result = PHPExcel_Calculation_DateTime::EDATE('2012-1-26',-1); - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_EXCEL); - // Must return an object... - $this->assertTrue(is_object($result)); - // ... of the correct type - $this->assertTrue(is_a($result,'DateTime')); - // ... with the correct value - $this->assertEquals($result->format('d-M-Y'),'26-Dec-2011'); - } - - /** - * @dataProvider providerEOMONTH - */ - public function testEOMONTH() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_DateTime','EOMONTH'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerEOMONTH() - { - return new testDataFileIterator('rawTestData/Calculation/DateTime/EOMONTH.data'); - } - - public function testEOMONTHtoPHP() - { - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC); - $result = PHPExcel_Calculation_DateTime::EOMONTH('2012-1-26',-1); - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_EXCEL); - $this->assertEquals(1325289600, $result, NULL, 1E-8); - } - - public function testEOMONTHtoPHPObject() - { - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_PHP_OBJECT); - $result = PHPExcel_Calculation_DateTime::EOMONTH('2012-1-26',-1); - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_EXCEL); - // Must return an object... - $this->assertTrue(is_object($result)); - // ... of the correct type - $this->assertTrue(is_a($result,'DateTime')); - // ... with the correct value - $this->assertEquals($result->format('d-M-Y'),'31-Dec-2011'); - } - - /** - * @dataProvider providerDATEDIF - */ - public function testDATEDIF() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_DateTime','DATEDIF'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerDATEDIF() - { - return new testDataFileIterator('rawTestData/Calculation/DateTime/DATEDIF.data'); - } - - /** - * @dataProvider providerDAYS360 - */ - public function testDAYS360() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_DateTime','DAYS360'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerDAYS360() - { - return new testDataFileIterator('rawTestData/Calculation/DateTime/DAYS360.data'); - } - - /** - * @dataProvider providerYEARFRAC - */ - public function testYEARFRAC() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_DateTime','YEARFRAC'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerYEARFRAC() - { - return new testDataFileIterator('rawTestData/Calculation/DateTime/YEARFRAC.data'); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/EngineeringTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/EngineeringTest.php deleted file mode 100644 index 1f511ffacc0..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/EngineeringTest.php +++ /dev/null @@ -1,698 +0,0 @@ -<?php - -// Custom assertion class for handling precision of Complex numbers -require_once 'custom/complexAssert.php'; - -// Data Provider handler -require_once 'testDataFileIterator.php'; - - -class EngineeringTest extends PHPUnit_Framework_TestCase -{ - - public function setUp() - { - if (!defined('PHPEXCEL_ROOT')) - { - define('PHPEXCEL_ROOT', APPLICATION_PATH . '/'); - } - require_once(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); - - PHPExcel_Calculation_Functions::setCompatibilityMode(PHPExcel_Calculation_Functions::COMPATIBILITY_EXCEL); - } - - /** - * @dataProvider providerBESSELI - */ - public function testBESSELI() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','BESSELI'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerBESSELI() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/BESSELI.data'); - } - - /** - * @dataProvider providerBESSELJ - */ - public function testBESSELJ() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','BESSELJ'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerBESSELJ() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/BESSELJ.data'); - } - - /** - * @dataProvider providerBESSELK - */ - public function testBESSELK() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','BESSELK'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerBESSELK() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/BESSELK.data'); - } - - /** - * @dataProvider providerBESSELY - */ - public function testBESSELY() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','BESSELY'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerBESSELY() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/BESSELY.data'); - } - - /** - * @dataProvider providerCOMPLEX - */ - public function testCOMPLEX() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','COMPLEX'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerCOMPLEX() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/COMPLEX.data'); - } - - /** - * @dataProvider providerIMAGINARY - */ - public function testIMAGINARY() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','IMAGINARY'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerIMAGINARY() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/IMAGINARY.data'); - } - - /** - * @dataProvider providerIMREAL - */ - public function testIMREAL() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','IMREAL'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerIMREAL() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/IMREAL.data'); - } - - /** - * @dataProvider providerIMABS - */ - public function testIMABS() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','IMABS'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerIMABS() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/IMABS.data'); - } - - /** - * @dataProvider providerIMARGUMENT - */ - public function testIMARGUMENT() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','IMARGUMENT'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerIMARGUMENT() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/IMARGUMENT.data'); - } - - /** - * @dataProvider providerIMCONJUGATE - */ - public function testIMCONJUGATE() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','IMCONJUGATE'),$args); - $complexAssert = new complexAssert(); - $this->assertTrue($complexAssert->assertComplexEquals($expectedResult, $result, 1E-8), - $complexAssert->getErrorMessage()); - } - - public function providerIMCONJUGATE() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/IMCONJUGATE.data'); - } - - /** - * @dataProvider providerIMCOS - */ - public function testIMCOS() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','IMCOS'),$args); - $complexAssert = new complexAssert(); - $this->assertTrue($complexAssert->assertComplexEquals($expectedResult, $result, 1E-8), - $complexAssert->getErrorMessage()); - } - - public function providerIMCOS() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/IMCOS.data'); - } - - /** - * @dataProvider providerIMDIV - */ - public function testIMDIV() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','IMDIV'),$args); - $complexAssert = new complexAssert(); - $this->assertTrue($complexAssert->assertComplexEquals($expectedResult, $result, 1E-8), - $complexAssert->getErrorMessage()); - } - - public function providerIMDIV() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/IMDIV.data'); - } - - /** - * @dataProvider providerIMEXP - */ - public function testIMEXP() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','IMEXP'),$args); - $complexAssert = new complexAssert(); - $this->assertTrue($complexAssert->assertComplexEquals($expectedResult, $result, 1E-8), - $complexAssert->getErrorMessage()); - } - - public function providerIMEXP() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/IMEXP.data'); - } - - /** - * @dataProvider providerIMLN - */ - public function testIMLN() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','IMLN'),$args); - $complexAssert = new complexAssert(); - $this->assertTrue($complexAssert->assertComplexEquals($expectedResult, $result, 1E-8), - $complexAssert->getErrorMessage()); - } - - public function providerIMLN() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/IMLN.data'); - } - - /** - * @dataProvider providerIMLOG2 - */ - public function testIMLOG2() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','IMLOG2'),$args); - $complexAssert = new complexAssert(); - $this->assertTrue($complexAssert->assertComplexEquals($expectedResult, $result, 1E-8), - $complexAssert->getErrorMessage()); - } - - public function providerIMLOG2() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/IMLOG2.data'); - } - - /** - * @dataProvider providerIMLOG10 - */ - public function testIMLOG10() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','IMLOG10'),$args); - $complexAssert = new complexAssert(); - $this->assertTrue($complexAssert->assertComplexEquals($expectedResult, $result, 1E-8), - $complexAssert->getErrorMessage()); - } - - public function providerIMLOG10() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/IMLOG10.data'); - } - - /** - * @dataProvider providerIMPOWER - */ - public function testIMPOWER() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','IMPOWER'),$args); - $complexAssert = new complexAssert(); - $this->assertTrue($complexAssert->assertComplexEquals($expectedResult, $result, 1E-8), - $complexAssert->getErrorMessage()); - } - - public function providerIMPOWER() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/IMPOWER.data'); - } - - /** - * @dataProvider providerIMPRODUCT - */ - public function testIMPRODUCT() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','IMPRODUCT'),$args); - $complexAssert = new complexAssert(); - $this->assertTrue($complexAssert->assertComplexEquals($expectedResult, $result, 1E-8), - $complexAssert->getErrorMessage()); - } - - public function providerIMPRODUCT() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/IMPRODUCT.data'); - } - - /** - * @dataProvider providerIMSIN - */ - public function testIMSIN() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','IMSIN'),$args); - $complexAssert = new complexAssert(); - $this->assertTrue($complexAssert->assertComplexEquals($expectedResult, $result, 1E-8), - $complexAssert->getErrorMessage()); - } - - public function providerIMSIN() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/IMSIN.data'); - } - - /** - * @dataProvider providerIMSQRT - */ - public function testIMSQRT() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','IMSQRT'),$args); - $complexAssert = new complexAssert(); - $this->assertTrue($complexAssert->assertComplexEquals($expectedResult, $result, 1E-8), - $complexAssert->getErrorMessage()); - } - - public function providerIMSQRT() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/IMSQRT.data'); - } - - /** - * @dataProvider providerIMSUB - */ - public function testIMSUB() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','IMSUB'),$args); - $complexAssert = new complexAssert(); - $this->assertTrue($complexAssert->assertComplexEquals($expectedResult, $result, 1E-8), - $complexAssert->getErrorMessage()); - } - - public function providerIMSUB() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/IMSUB.data'); - } - - /** - * @dataProvider providerIMSUM - */ - public function testIMSUM() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','IMSUM'),$args); - $complexAssert = new complexAssert(); - $this->assertTrue($complexAssert->assertComplexEquals($expectedResult, $result, 1E-8), - $complexAssert->getErrorMessage()); - } - - public function providerIMSUM() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/IMSUM.data'); - } - - /** - * @dataProvider providerERF - */ - public function testERF() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','ERF'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerERF() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/ERF.data'); - } - - /** - * @dataProvider providerERFC - */ - public function testERFC() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','ERFC'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerERFC() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/ERFC.data'); - } - - /** - * @dataProvider providerBIN2DEC - */ - public function testBIN2DEC() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','BINTODEC'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerBIN2DEC() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/BIN2DEC.data'); - } - - /** - * @dataProvider providerBIN2HEX - */ - public function testBIN2HEX() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','BINTOHEX'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerBIN2HEX() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/BIN2HEX.data'); - } - - /** - * @dataProvider providerBIN2OCT - */ - public function testBIN2OCT() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','BINTOOCT'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerBIN2OCT() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/BIN2OCT.data'); - } - - /** - * @dataProvider providerDEC2BIN - */ - public function testDEC2BIN() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','DECTOBIN'),$args); - $this->assertEquals($expectedResult, $result, NULL); - } - - public function providerDEC2BIN() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/DEC2BIN.data'); - } - - /** - * @dataProvider providerDEC2HEX - */ - public function testDEC2HEX() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','DECTOHEX'),$args); - $this->assertEquals($expectedResult, $result, NULL); - } - - public function providerDEC2HEX() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/DEC2HEX.data'); - } - - /** - * @dataProvider providerDEC2OCT - */ - public function testDEC2OCT() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','DECTOOCT'),$args); - $this->assertEquals($expectedResult, $result, NULL); - } - - public function providerDEC2OCT() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/DEC2OCT.data'); - } - - /** - * @dataProvider providerHEX2BIN - */ - public function testHEX2BIN() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','HEXTOBIN'),$args); - $this->assertEquals($expectedResult, $result, NULL); - } - - public function providerHEX2BIN() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/HEX2BIN.data'); - } - - /** - * @dataProvider providerHEX2DEC - */ - public function testHEX2DEC() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','HEXTODEC'),$args); - $this->assertEquals($expectedResult, $result, NULL); - } - - public function providerHEX2DEC() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/HEX2DEC.data'); - } - - /** - * @dataProvider providerHEX2OCT - */ - public function testHEX2OCT() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','HEXTOOCT'),$args); - $this->assertEquals($expectedResult, $result, NULL); - } - - public function providerHEX2OCT() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/HEX2OCT.data'); - } - - /** - * @dataProvider providerOCT2BIN - */ - public function testOCT2BIN() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','OCTTOBIN'),$args); - $this->assertEquals($expectedResult, $result, NULL); - } - - public function providerOCT2BIN() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/OCT2BIN.data'); - } - - /** - * @dataProvider providerOCT2DEC - */ - public function testOCT2DEC() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','OCTTODEC'),$args); - $this->assertEquals($expectedResult, $result, NULL); - } - - public function providerOCT2DEC() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/OCT2DEC.data'); - } - - /** - * @dataProvider providerOCT2HEX - */ - public function testOCT2HEX() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','OCTTOHEX'),$args); - $this->assertEquals($expectedResult, $result, NULL); - } - - public function providerOCT2HEX() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/OCT2HEX.data'); - } - - /** - * @dataProvider providerDELTA - */ - public function testDELTA() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','DELTA'),$args); - $this->assertEquals($expectedResult, $result, NULL); - } - - public function providerDELTA() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/DELTA.data'); - } - - /** - * @dataProvider providerGESTEP - */ - public function testGESTEP() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','GESTEP'),$args); - $this->assertEquals($expectedResult, $result, NULL); - } - - public function providerGESTEP() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/GESTEP.data'); - } - - public function testGetConversionGroups() - { - $result = PHPExcel_Calculation_Engineering::getConversionGroups(); - $this->assertInternalType('array', $result); - } - - public function testGetConversionGroupUnits() - { - $result = PHPExcel_Calculation_Engineering::getConversionGroupUnits(); - $this->assertInternalType('array', $result); - } - - public function testGetConversionGroupUnitDetails() - { - $result = PHPExcel_Calculation_Engineering::getConversionGroupUnitDetails(); - $this->assertInternalType('array', $result); - } - - public function testGetConversionMultipliers() - { - $result = PHPExcel_Calculation_Engineering::getConversionMultipliers(); - $this->assertInternalType('array', $result); - } - - /** - * @dataProvider providerCONVERTUOM - */ - public function testCONVERTUOM() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','CONVERTUOM'),$args); - $this->assertEquals($expectedResult, $result, NULL); - } - - public function providerCONVERTUOM() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/CONVERTUOM.data'); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/FinancialTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/FinancialTest.php deleted file mode 100644 index f5689c95048..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/FinancialTest.php +++ /dev/null @@ -1,516 +0,0 @@ -<?php - - -require_once 'testDataFileIterator.php'; - -class FinancialTest extends PHPUnit_Framework_TestCase -{ - - public function setUp() - { - if (!defined('PHPEXCEL_ROOT')) - { - define('PHPEXCEL_ROOT', APPLICATION_PATH . '/'); - } - require_once(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); - - PHPExcel_Calculation_Functions::setCompatibilityMode(PHPExcel_Calculation_Functions::COMPATIBILITY_EXCEL); - } - - /** - * @dataProvider providerACCRINT - */ - public function testACCRINT() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','ACCRINT'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerACCRINT() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/ACCRINT.data'); - } - - /** - * @dataProvider providerACCRINTM - */ - public function testACCRINTM() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','ACCRINTM'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerACCRINTM() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/ACCRINTM.data'); - } - - /** - * @dataProvider providerAMORDEGRC - */ - public function testAMORDEGRC() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','AMORDEGRC'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerAMORDEGRC() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/AMORDEGRC.data'); - } - - /** - * @dataProvider providerAMORLINC - */ - public function testAMORLINC() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','AMORLINC'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerAMORLINC() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/AMORLINC.data'); - } - - /** - * @dataProvider providerCOUPDAYBS - */ - public function testCOUPDAYBS() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','COUPDAYBS'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerCOUPDAYBS() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/COUPDAYBS.data'); - } - - /** - * @dataProvider providerCOUPDAYS - */ - public function testCOUPDAYS() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','COUPDAYS'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerCOUPDAYS() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/COUPDAYS.data'); - } - - /** - * @dataProvider providerCOUPDAYSNC - */ - public function testCOUPDAYSNC() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','COUPDAYSNC'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerCOUPDAYSNC() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/COUPDAYSNC.data'); - } - - /** - * @dataProvider providerCOUPNCD - */ - public function testCOUPNCD() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','COUPNCD'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerCOUPNCD() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/COUPNCD.data'); - } - - /** - * @dataProvider providerCOUPNUM - */ - public function testCOUPNUM() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','COUPNUM'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerCOUPNUM() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/COUPNUM.data'); - } - - /** - * @dataProvider providerCOUPPCD - */ - public function testCOUPPCD() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','COUPPCD'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerCOUPPCD() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/COUPPCD.data'); - } - - /** - * @dataProvider providerCUMIPMT - */ - public function testCUMIPMT() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','CUMIPMT'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerCUMIPMT() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/CUMIPMT.data'); - } - - /** - * @dataProvider providerCUMPRINC - */ - public function testCUMPRINC() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','CUMPRINC'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerCUMPRINC() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/CUMPRINC.data'); - } - - /** - * @dataProvider providerDB - */ - public function testDB() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','DB'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerDB() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/DB.data'); - } - - /** - * @dataProvider providerDDB - */ - public function testDDB() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','DDB'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerDDB() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/DDB.data'); - } - - /** - * @dataProvider providerDISC - */ - public function testDISC() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','DISC'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerDISC() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/DISC.data'); - } - - /** - * @dataProvider providerDOLLARDE - */ - public function testDOLLARDE() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','DOLLARDE'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerDOLLARDE() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/DOLLARDE.data'); - } - - /** - * @dataProvider providerDOLLARFR - */ - public function testDOLLARFR() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','DOLLARFR'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerDOLLARFR() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/DOLLARFR.data'); - } - - /** - * @dataProvider providerEFFECT - */ - public function testEFFECT() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','EFFECT'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerEFFECT() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/EFFECT.data'); - } - - /** - * @dataProvider providerFV - */ - public function testFV() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','FV'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerFV() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/FV.data'); - } - - /** - * @dataProvider providerFVSCHEDULE - */ - public function testFVSCHEDULE() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','FVSCHEDULE'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerFVSCHEDULE() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/FVSCHEDULE.data'); - } - - /** - * @dataProvider providerINTRATE - */ - public function testINTRATE() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','INTRATE'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerINTRATE() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/INTRATE.data'); - } - - /** - * @dataProvider providerIPMT - */ - public function testIPMT() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','IPMT'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerIPMT() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/IPMT.data'); - } - - /** - * @dataProvider providerIRR - */ - public function testIRR() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','IRR'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerIRR() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/IRR.data'); - } - - /** - * @dataProvider providerISPMT - */ - public function testISPMT() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','ISPMT'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerISPMT() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/ISPMT.data'); - } - - /** - * @dataProvider providerMIRR - */ - public function testMIRR() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','MIRR'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerMIRR() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/MIRR.data'); - } - - /** - * @dataProvider providerNOMINAL - */ - public function testNOMINAL() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','NOMINAL'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerNOMINAL() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/NOMINAL.data'); - } - - /** - * @dataProvider providerNPER - */ - public function testNPER() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','NPER'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerNPER() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/NPER.data'); - } - - /** - * @dataProvider providerNPV - */ - public function testNPV() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','NPV'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerNPV() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/NPV.data'); - } - - /** - * @dataProvider providerPRICE - */ - public function testPRICE() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','PRICE'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerPRICE() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/PRICE.data'); - } - - /** - * @dataProvider providerRATE - */ - public function testRATE() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','RATE'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerRATE() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/RATE.data'); - } - - /** - * @dataProvider providerXIRR - */ - public function testXIRR() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','XIRR'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerXIRR() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/XIRR.data'); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/FunctionsTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/FunctionsTest.php deleted file mode 100644 index 013332940ff..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/FunctionsTest.php +++ /dev/null @@ -1,276 +0,0 @@ -<?php - - -require_once 'testDataFileIterator.php'; - -class FunctionsTest extends PHPUnit_Framework_TestCase -{ - - public function setUp() - { - if (!defined('PHPEXCEL_ROOT')) - { - define('PHPEXCEL_ROOT', APPLICATION_PATH . '/'); - } - require_once(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); - - PHPExcel_Calculation_Functions::setCompatibilityMode(PHPExcel_Calculation_Functions::COMPATIBILITY_EXCEL); - } - - public function testDUMMY() - { - $result = PHPExcel_Calculation_Functions::DUMMY(); - $this->assertEquals('#Not Yet Implemented', $result); - } - - public function testDIV0() - { - $result = PHPExcel_Calculation_Functions::DIV0(); - $this->assertEquals('#DIV/0!', $result); - } - - public function testNA() - { - $result = PHPExcel_Calculation_Functions::NA(); - $this->assertEquals('#N/A', $result); - } - - public function testNaN() - { - $result = PHPExcel_Calculation_Functions::NaN(); - $this->assertEquals('#NUM!', $result); - } - - public function testNAME() - { - $result = PHPExcel_Calculation_Functions::NAME(); - $this->assertEquals('#NAME?', $result); - } - - public function testREF() - { - $result = PHPExcel_Calculation_Functions::REF(); - $this->assertEquals('#REF!', $result); - } - - public function testNULL() - { - $result = PHPExcel_Calculation_Functions::NULL(); - $this->assertEquals('#NULL!', $result); - } - - public function testVALUE() - { - $result = PHPExcel_Calculation_Functions::VALUE(); - $this->assertEquals('#VALUE!', $result); - } - - /** - * @dataProvider providerIS_BLANK - */ - public function testIS_BLANK() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Functions','IS_BLANK'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerIS_BLANK() - { - return new testDataFileIterator('rawTestData/Calculation/Functions/IS_BLANK.data'); - } - - /** - * @dataProvider providerIS_ERR - */ - public function testIS_ERR() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Functions','IS_ERR'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerIS_ERR() - { - return new testDataFileIterator('rawTestData/Calculation/Functions/IS_ERR.data'); - } - - /** - * @dataProvider providerIS_ERROR - */ - public function testIS_ERROR() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Functions','IS_ERROR'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerIS_ERROR() - { - return new testDataFileIterator('rawTestData/Calculation/Functions/IS_ERROR.data'); - } - - /** - * @dataProvider providerERROR_TYPE - */ - public function testERROR_TYPE() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Functions','ERROR_TYPE'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerERROR_TYPE() - { - return new testDataFileIterator('rawTestData/Calculation/Functions/ERROR_TYPE.data'); - } - - /** - * @dataProvider providerIS_LOGICAL - */ - public function testIS_LOGICAL() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Functions','IS_LOGICAL'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerIS_LOGICAL() - { - return new testDataFileIterator('rawTestData/Calculation/Functions/IS_LOGICAL.data'); - } - - /** - * @dataProvider providerIS_NA - */ - public function testIS_NA() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Functions','IS_NA'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerIS_NA() - { - return new testDataFileIterator('rawTestData/Calculation/Functions/IS_NA.data'); - } - - /** - * @dataProvider providerIS_NUMBER - */ - public function testIS_NUMBER() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Functions','IS_NUMBER'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerIS_NUMBER() - { - return new testDataFileIterator('rawTestData/Calculation/Functions/IS_NUMBER.data'); - } - - /** - * @dataProvider providerIS_TEXT - */ - public function testIS_TEXT() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Functions','IS_TEXT'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerIS_TEXT() - { - return new testDataFileIterator('rawTestData/Calculation/Functions/IS_TEXT.data'); - } - - /** - * @dataProvider providerIS_NONTEXT - */ - public function testIS_NONTEXT() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Functions','IS_NONTEXT'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerIS_NONTEXT() - { - return new testDataFileIterator('rawTestData/Calculation/Functions/IS_NONTEXT.data'); - } - - /** - * @dataProvider providerIS_EVEN - */ - public function testIS_EVEN() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Functions','IS_EVEN'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerIS_EVEN() - { - return new testDataFileIterator('rawTestData/Calculation/Functions/IS_EVEN.data'); - } - - /** - * @dataProvider providerIS_ODD - */ - public function testIS_ODD() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Functions','IS_ODD'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerIS_ODD() - { - return new testDataFileIterator('rawTestData/Calculation/Functions/IS_ODD.data'); - } - - /** - * @dataProvider providerTYPE - */ - public function testTYPE() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Functions','TYPE'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerTYPE() - { - return new testDataFileIterator('rawTestData/Calculation/Functions/TYPE.data'); - } - - /** - * @dataProvider providerN - */ - public function testN() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Functions','N'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerN() - { - return new testDataFileIterator('rawTestData/Calculation/Functions/N.data'); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/LogicalTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/LogicalTest.php deleted file mode 100644 index cc8f8b33383..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/LogicalTest.php +++ /dev/null @@ -1,112 +0,0 @@ -<?php - - -require_once 'testDataFileIterator.php'; - -class LogicalTest extends PHPUnit_Framework_TestCase -{ - - public function setUp() - { - if (!defined('PHPEXCEL_ROOT')) - { - define('PHPEXCEL_ROOT', APPLICATION_PATH . '/'); - } - require_once(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); - - PHPExcel_Calculation_Functions::setCompatibilityMode(PHPExcel_Calculation_Functions::COMPATIBILITY_EXCEL); - } - - public function testTRUE() - { - $result = PHPExcel_Calculation_Logical::TRUE(); - $this->assertEquals(TRUE, $result); - } - - public function testFALSE() - { - $result = PHPExcel_Calculation_Logical::FALSE(); - $this->assertEquals(FALSE, $result); - } - - /** - * @dataProvider providerAND - */ - public function testAND() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Logical','LOGICAL_AND'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerAND() - { - return new testDataFileIterator('rawTestData/Calculation/Logical/AND.data'); - } - - /** - * @dataProvider providerOR - */ - public function testOR() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Logical','LOGICAL_OR'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerOR() - { - return new testDataFileIterator('rawTestData/Calculation/Logical/OR.data'); - } - - /** - * @dataProvider providerNOT - */ - public function testNOT() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Logical','NOT'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerNOT() - { - return new testDataFileIterator('rawTestData/Calculation/Logical/NOT.data'); - } - - /** - * @dataProvider providerIF - */ - public function testIF() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Logical','STATEMENT_IF'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerIF() - { - return new testDataFileIterator('rawTestData/Calculation/Logical/IF.data'); - } - - /** - * @dataProvider providerIFERROR - */ - public function testIFERROR() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Logical','IFERROR'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerIFERROR() - { - return new testDataFileIterator('rawTestData/Calculation/Logical/IFERROR.data'); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/LookupRefTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/LookupRefTest.php deleted file mode 100644 index 6450b082244..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/LookupRefTest.php +++ /dev/null @@ -1,52 +0,0 @@ -<?php - - -require_once 'testDataFileIterator.php'; - -class LookupRefTest extends PHPUnit_Framework_TestCase -{ - - public function setUp() - { - if (!defined('PHPEXCEL_ROOT')) - { - define('PHPEXCEL_ROOT', APPLICATION_PATH . '/'); - } - require_once(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); - - PHPExcel_Calculation_Functions::setCompatibilityMode(PHPExcel_Calculation_Functions::COMPATIBILITY_EXCEL); - } - - /** - * @dataProvider providerHLOOKUP - */ - public function testHLOOKUP() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_LookupRef','HLOOKUP'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerHLOOKUP() - { - return new testDataFileIterator('rawTestData/Calculation/LookupRef/HLOOKUP.data'); - } - - /** - * @dataProvider providerVLOOKUP - */ - public function testVLOOKUP() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_LookupRef','VLOOKUP'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerVLOOKUP() - { - return new testDataFileIterator('rawTestData/Calculation/LookupRef/VLOOKUP.data'); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/MathTrigTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/MathTrigTest.php deleted file mode 100644 index 0059ed08e6c..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/MathTrigTest.php +++ /dev/null @@ -1,560 +0,0 @@ -<?php - - -require_once 'testDataFileIterator.php'; - -class MathTrigTest extends PHPUnit_Framework_TestCase -{ - - public function setUp() - { - if (!defined('PHPEXCEL_ROOT')) - { - define('PHPEXCEL_ROOT', APPLICATION_PATH . '/'); - } - require_once(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); - - PHPExcel_Calculation_Functions::setCompatibilityMode(PHPExcel_Calculation_Functions::COMPATIBILITY_EXCEL); - } - - /** - * @dataProvider providerATAN2 - */ - public function testATAN2() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','ATAN2'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerATAN2() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/ATAN2.data'); - } - - /** - * @dataProvider providerCEILING - */ - public function testCEILING() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','CEILING'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerCEILING() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/CEILING.data'); - } - - /** - * @dataProvider providerCOMBIN - */ - public function testCOMBIN() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','COMBIN'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerCOMBIN() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/COMBIN.data'); - } - - /** - * @dataProvider providerEVEN - */ - public function testEVEN() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','EVEN'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerEVEN() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/EVEN.data'); - } - - /** - * @dataProvider providerODD - */ - public function testODD() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','ODD'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerODD() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/ODD.data'); - } - - /** - * @dataProvider providerFACT - */ - public function testFACT() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','FACT'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerFACT() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/FACT.data'); - } - - /** - * @dataProvider providerFACTDOUBLE - */ - public function testFACTDOUBLE() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','FACTDOUBLE'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerFACTDOUBLE() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/FACTDOUBLE.data'); - } - - /** - * @dataProvider providerFLOOR - */ - public function testFLOOR() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','FLOOR'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerFLOOR() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/FLOOR.data'); - } - - /** - * @dataProvider providerGCD - */ - public function testGCD() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','GCD'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerGCD() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/GCD.data'); - } - - /** - * @dataProvider providerLCM - */ - public function testLCM() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','LCM'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerLCM() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/LCM.data'); - } - - /** - * @dataProvider providerINT - */ - public function testINT() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','INT'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerINT() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/INT.data'); - } - - /** - * @dataProvider providerSIGN - */ - public function testSIGN() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','SIGN'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerSIGN() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/SIGN.data'); - } - - /** - * @dataProvider providerPOWER - */ - public function testPOWER() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','POWER'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerPOWER() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/POWER.data'); - } - - /** - * @dataProvider providerLOG - */ - public function testLOG() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','LOG_BASE'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerLOG() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/LOG.data'); - } - - /** - * @dataProvider providerMOD - */ - public function testMOD() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','MOD'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerMOD() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/MOD.data'); - } - - /** - * @dataProvider providerMDETERM - */ - public function testMDETERM() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','MDETERM'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerMDETERM() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/MDETERM.data'); - } - - /** - * @dataProvider providerMINVERSE - */ - public function testMINVERSE() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','MINVERSE'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerMINVERSE() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/MINVERSE.data'); - } - - /** - * @dataProvider providerMMULT - */ - public function testMMULT() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','MMULT'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerMMULT() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/MMULT.data'); - } - - /** - * @dataProvider providerMULTINOMIAL - */ - public function testMULTINOMIAL() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','MULTINOMIAL'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerMULTINOMIAL() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/MULTINOMIAL.data'); - } - - /** - * @dataProvider providerMROUND - */ - public function testMROUND() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - PHPExcel_Calculation::setArrayReturnType(PHPExcel_Calculation::RETURN_ARRAY_AS_VALUE); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','MROUND'),$args); - PHPExcel_Calculation::setArrayReturnType(PHPExcel_Calculation::RETURN_ARRAY_AS_ARRAY); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerMROUND() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/MROUND.data'); - } - - /** - * @dataProvider providerPRODUCT - */ - public function testPRODUCT() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','PRODUCT'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerPRODUCT() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/PRODUCT.data'); - } - - /** - * @dataProvider providerQUOTIENT - */ - public function testQUOTIENT() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','QUOTIENT'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerQUOTIENT() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/QUOTIENT.data'); - } - - /** - * @dataProvider providerROUNDUP - */ - public function testROUNDUP() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','ROUNDUP'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerROUNDUP() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/ROUNDUP.data'); - } - - /** - * @dataProvider providerROUNDDOWN - */ - public function testROUNDDOWN() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','ROUNDDOWN'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerROUNDDOWN() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/ROUNDDOWN.data'); - } - - /** - * @dataProvider providerSERIESSUM - */ - public function testSERIESSUM() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','SERIESSUM'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerSERIESSUM() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/SERIESSUM.data'); - } - - /** - * @dataProvider providerSUMSQ - */ - public function testSUMSQ() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','SUMSQ'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerSUMSQ() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/SUMSQ.data'); - } - - /** - * @dataProvider providerTRUNC - */ - public function testTRUNC() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','TRUNC'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerTRUNC() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/TRUNC.data'); - } - - /** - * @dataProvider providerROMAN - */ - public function testROMAN() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','ROMAN'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerROMAN() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/ROMAN.data'); - } - - /** - * @dataProvider providerSQRTPI - */ - public function testSQRTPI() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','SQRTPI'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerSQRTPI() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/SQRTPI.data'); - } - - /** - * @dataProvider providerSUMIF - */ - public function testSUMIF() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig', 'SUMIF'), $args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerSUMIF() - { - return array( - array( - array( - array(1), - array(5), - array(10), - ), - '>=5', - 15, - ), - array( - array( - array('text'), - array(2), - ), - '=text', - array( - array(10), - array(100), - ), - 10, - ), - array( - array( - array('"text with quotes"'), - array(2), - ), - '="text with quotes"', - array( - array(10), - array(100), - ), - 10, - ), - array( - array( - array('"text with quotes"'), - array(''), - ), - '>"', // Compare to the single characater " (double quote) - array( - array(10), - array(100), - ), - 10 - ), - array( - array( - array(''), - array('anything'), - ), - '>"', // Compare to the single characater " (double quote) - array( - array(10), - array(100), - ), - 100 - ), - ); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/TextDataTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/TextDataTest.php deleted file mode 100644 index 4b1caf5179d..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/TextDataTest.php +++ /dev/null @@ -1,365 +0,0 @@ -<?php - - -require_once 'testDataFileIterator.php'; - -class TextDataTest extends PHPUnit_Framework_TestCase -{ - - public function setUp() - { - if (!defined('PHPEXCEL_ROOT')) - { - define('PHPEXCEL_ROOT', APPLICATION_PATH . '/'); - } - require_once(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); - - PHPExcel_Calculation_Functions::setCompatibilityMode(PHPExcel_Calculation_Functions::COMPATIBILITY_EXCEL); - } - - /** - * @dataProvider providerCHAR - */ - public function testCHAR() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_TextData','CHARACTER'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerCHAR() - { - return new testDataFileIterator('rawTestData/Calculation/TextData/CHAR.data'); - } - - /** - * @dataProvider providerCODE - */ - public function testCODE() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_TextData','ASCIICODE'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerCODE() - { - return new testDataFileIterator('rawTestData/Calculation/TextData/CODE.data'); - } - - /** - * @dataProvider providerCONCATENATE - */ - public function testCONCATENATE() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_TextData','CONCATENATE'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerCONCATENATE() - { - return new testDataFileIterator('rawTestData/Calculation/TextData/CONCATENATE.data'); - } - - /** - * @dataProvider providerLEFT - */ - public function testLEFT() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_TextData','LEFT'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerLEFT() - { - return new testDataFileIterator('rawTestData/Calculation/TextData/LEFT.data'); - } - - /** - * @dataProvider providerMID - */ - public function testMID() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_TextData','MID'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerMID() - { - return new testDataFileIterator('rawTestData/Calculation/TextData/MID.data'); - } - - /** - * @dataProvider providerRIGHT - */ - public function testRIGHT() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_TextData','RIGHT'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerRIGHT() - { - return new testDataFileIterator('rawTestData/Calculation/TextData/RIGHT.data'); - } - - /** - * @dataProvider providerLOWER - */ - public function testLOWER() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_TextData','LOWERCASE'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerLOWER() - { - return new testDataFileIterator('rawTestData/Calculation/TextData/LOWER.data'); - } - - /** - * @dataProvider providerUPPER - */ - public function testUPPER() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_TextData','UPPERCASE'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerUPPER() - { - return new testDataFileIterator('rawTestData/Calculation/TextData/UPPER.data'); - } - - /** - * @dataProvider providerPROPER - */ - public function testPROPER() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_TextData','PROPERCASE'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerPROPER() - { - return new testDataFileIterator('rawTestData/Calculation/TextData/PROPER.data'); - } - - /** - * @dataProvider providerLEN - */ - public function testLEN() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_TextData','STRINGLENGTH'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerLEN() - { - return new testDataFileIterator('rawTestData/Calculation/TextData/LEN.data'); - } - - /** - * @dataProvider providerSEARCH - */ - public function testSEARCH() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_TextData','SEARCHINSENSITIVE'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerSEARCH() - { - return new testDataFileIterator('rawTestData/Calculation/TextData/SEARCH.data'); - } - - /** - * @dataProvider providerFIND - */ - public function testFIND() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_TextData','SEARCHSENSITIVE'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerFIND() - { - return new testDataFileIterator('rawTestData/Calculation/TextData/FIND.data'); - } - - /** - * @dataProvider providerREPLACE - */ - public function testREPLACE() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_TextData','REPLACE'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerREPLACE() - { - return new testDataFileIterator('rawTestData/Calculation/TextData/REPLACE.data'); - } - - /** - * @dataProvider providerSUBSTITUTE - */ - public function testSUBSTITUTE() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_TextData','SUBSTITUTE'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerSUBSTITUTE() - { - return new testDataFileIterator('rawTestData/Calculation/TextData/SUBSTITUTE.data'); - } - - /** - * @dataProvider providerTRIM - */ - public function testTRIM() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_TextData','TRIMSPACES'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerTRIM() - { - return new testDataFileIterator('rawTestData/Calculation/TextData/TRIM.data'); - } - - /** - * @dataProvider providerCLEAN - */ - public function testCLEAN() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_TextData','TRIMNONPRINTABLE'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerCLEAN() - { - return new testDataFileIterator('rawTestData/Calculation/TextData/CLEAN.data'); - } - - /** - * @dataProvider providerDOLLAR - */ - public function testDOLLAR() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_TextData','DOLLAR'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerDOLLAR() - { - return new testDataFileIterator('rawTestData/Calculation/TextData/DOLLAR.data'); - } - - /** - * @dataProvider providerFIXED - */ - public function testFIXED() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_TextData','FIXEDFORMAT'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerFIXED() - { - return new testDataFileIterator('rawTestData/Calculation/TextData/FIXED.data'); - } - - /** - * @dataProvider providerT - */ - public function testT() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_TextData','RETURNSTRING'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerT() - { - return new testDataFileIterator('rawTestData/Calculation/TextData/T.data'); - } - - /** - * @dataProvider providerTEXT - */ - public function testTEXT() - { - // Enforce decimal and thousands separator values to UK/US, and currency code to USD - call_user_func(array('PHPExcel_Shared_String','setDecimalSeparator'),'.'); - call_user_func(array('PHPExcel_Shared_String','setThousandsSeparator'),','); - call_user_func(array('PHPExcel_Shared_String','setCurrencyCode'),'$'); - - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_TextData','TEXTFORMAT'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerTEXT() - { - return new testDataFileIterator('rawTestData/Calculation/TextData/TEXT.data'); - } - - /** - * @dataProvider providerVALUE - */ - public function testVALUE() - { - call_user_func(array('PHPExcel_Shared_String','setDecimalSeparator'),'.'); - call_user_func(array('PHPExcel_Shared_String','setThousandsSeparator'),' '); - call_user_func(array('PHPExcel_Shared_String','setCurrencyCode'),'$'); - - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_TextData','VALUE'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerVALUE() - { - return new testDataFileIterator('rawTestData/Calculation/TextData/VALUE.data'); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/CalculationTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/CalculationTest.php deleted file mode 100644 index 1de827ca815..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/CalculationTest.php +++ /dev/null @@ -1,37 +0,0 @@ -<?php - -require_once 'testDataFileIterator.php'; - -class CalculationTest extends PHPUnit_Framework_TestCase -{ - - public function setUp() - { - if (!defined('PHPEXCEL_ROOT')) { - define('PHPEXCEL_ROOT', APPLICATION_PATH . '/'); - } - require_once(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); - - PHPExcel_Calculation_Functions::setCompatibilityMode(PHPExcel_Calculation_Functions::COMPATIBILITY_EXCEL); - } - - /** - * @dataProvider providerBinaryComparisonOperation - */ - public function testBinaryComparisonOperation($formula, $expectedResultExcel, $expectedResultOpenOffice) - { - PHPExcel_Calculation_Functions::setCompatibilityMode(PHPExcel_Calculation_Functions::COMPATIBILITY_EXCEL); - $resultExcel = \PHPExcel_Calculation::getInstance()->_calculateFormulaValue($formula); - $this->assertEquals($expectedResultExcel, $resultExcel, 'should be Excel compatible'); - - PHPExcel_Calculation_Functions::setCompatibilityMode(PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE); - $resultOpenOffice = \PHPExcel_Calculation::getInstance()->_calculateFormulaValue($formula); - $this->assertEquals($expectedResultOpenOffice, $resultOpenOffice, 'should be OpenOffice compatible'); - } - - public function providerBinaryComparisonOperation() - { - return new testDataFileIterator('rawTestData/CalculationBinaryComparisonOperation.data'); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Cell/AdvancedValueBinderTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Cell/AdvancedValueBinderTest.php deleted file mode 100644 index 0a6ca54da8a..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Cell/AdvancedValueBinderTest.php +++ /dev/null @@ -1,73 +0,0 @@ -<?php - -class AdvancedValueBinderTest extends PHPUnit_Framework_TestCase -{ - public function setUp() - { - if (!defined('PHPEXCEL_ROOT')) { - define('PHPEXCEL_ROOT', APPLICATION_PATH . '/'); - } - require_once(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); - } - - public function provider() - { - if (!class_exists('PHPExcel_Style_NumberFormat')) { - $this->setUp(); - } - $currencyUSD = PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_USD_SIMPLE; - $currencyEURO = str_replace('$', '€', PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_USD_SIMPLE); - - return array( - array('10%', 0.1, PHPExcel_Style_NumberFormat::FORMAT_PERCENTAGE_00, ',', '.', '$'), - array('$10.11', 10.11, $currencyUSD, ',', '.', '$'), - array('$1,010.12', 1010.12, $currencyUSD, ',', '.', '$'), - array('$20,20', 20.2, $currencyUSD, '.', ',', '$'), - array('$2.020,20', 2020.2, $currencyUSD, '.', ',', '$'), - array('€2.020,20', 2020.2, $currencyEURO, '.', ',', '€'), - array('€ 2.020,20', 2020.2, $currencyEURO, '.', ',', '€'), - array('€2,020.22', 2020.22, $currencyEURO, ',', '.', '€'), - ); - } - - /** - * @dataProvider provider - */ - public function testCurrency($value, $valueBinded, $format, $thousandsSeparator, $decimalSeparator, $currencyCode) - { - $sheet = $this->getMock( - 'PHPExcel_Worksheet', - array('getStyle', 'getNumberFormat', 'setFormatCode','getCellCacheController') - ); - $cache = $this->getMockBuilder('PHPExcel_CachedObjectStorage_Memory') - ->disableOriginalConstructor() - ->getMock(); - $cache->expects($this->any()) - ->method('getParent') - ->will($this->returnValue($sheet)); - - $sheet->expects($this->once()) - ->method('getStyle') - ->will($this->returnSelf()); - $sheet->expects($this->once()) - ->method('getNumberFormat') - ->will($this->returnSelf()); - $sheet->expects($this->once()) - ->method('setFormatCode') - ->with($format) - ->will($this->returnSelf()); - $sheet->expects($this->any()) - ->method('getCellCacheController') - ->will($this->returnValue($cache)); - - PHPExcel_Shared_String::setCurrencyCode($currencyCode); - PHPExcel_Shared_String::setDecimalSeparator($decimalSeparator); - PHPExcel_Shared_String::setThousandsSeparator($thousandsSeparator); - - $cell = new PHPExcel_Cell(NULL, PHPExcel_Cell_DataType::TYPE_STRING, $sheet); - - $binder = new PHPExcel_Cell_AdvancedValueBinder(); - $binder->bindValue($cell, $value); - $this->assertEquals($valueBinded, $cell->getValue()); - } -} \ No newline at end of file diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Cell/DataTypeTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Cell/DataTypeTest.php deleted file mode 100644 index c17c5d0fcc3..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Cell/DataTypeTest.php +++ /dev/null @@ -1,24 +0,0 @@ -<?php - - -class DataTypeTest extends PHPUnit_Framework_TestCase -{ - - public function setUp() - { - if (!defined('PHPEXCEL_ROOT')) - { - define('PHPEXCEL_ROOT', APPLICATION_PATH . '/'); - } - require_once(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); - } - - public function testGetErrorCodes() - { - $result = call_user_func(array('PHPExcel_Cell_DataType','getErrorCodes')); - $this->assertInternalType('array', $result); - $this->assertGreaterThan(0, count($result)); - $this->assertArrayHasKey('#NULL!', $result); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Cell/DefaultValueBinderTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Cell/DefaultValueBinderTest.php deleted file mode 100644 index 1c74d96f6f8..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Cell/DefaultValueBinderTest.php +++ /dev/null @@ -1,85 +0,0 @@ -<?php - -require_once 'testDataFileIterator.php'; - -class DefaultValueBinderTest extends PHPUnit_Framework_TestCase -{ - protected $cellStub; - - public function setUp() - { - if (!defined('PHPEXCEL_ROOT')) - { - define('PHPEXCEL_ROOT', APPLICATION_PATH . '/'); - } - require_once(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); - } - - protected function createCellStub() - { - // Create a stub for the Cell class. - $this->cellStub = $this->getMockBuilder('PHPExcel_Cell') - ->disableOriginalConstructor() - ->getMock(); - // Configure the stub. - $this->cellStub->expects($this->any()) - ->method('setValueExplicit') - ->will($this->returnValue(true)); - - } - - /** - * @dataProvider binderProvider - */ - public function testBindValue($value) - { - $this->createCellStub(); - $binder = new PHPExcel_Cell_DefaultValueBinder(); - $result = $binder->bindValue($this->cellStub, $value); - $this->assertTrue($result); - } - - public function binderProvider() - { - return array( - array(null), - array(''), - array('ABC'), - array('=SUM(A1:B2)'), - array(true), - array(false), - array(123), - array(-123.456), - array('123'), - array('-123.456'), - array('#REF!'), - array(new DateTime()), - ); - } - - /** - * @dataProvider providerDataTypeForValue - */ - public function testDataTypeForValue() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Cell_DefaultValueBinder','dataTypeForValue'), $args); - $this->assertEquals($expectedResult, $result); - } - - public function providerDataTypeForValue() - { - return new testDataFileIterator('rawTestData/Cell/DefaultValueBinder.data'); - } - - public function testDataTypeForRichTextObject() - { - $objRichText = new PHPExcel_RichText(); - $objRichText->createText('Hello World'); - - $expectedResult = PHPExcel_Cell_DataType::TYPE_INLINE; - $result = call_user_func(array('PHPExcel_Cell_DefaultValueBinder','dataTypeForValue'), $objRichText); - $this->assertEquals($expectedResult, $result); - } -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Cell/HyperlinkTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Cell/HyperlinkTest.php deleted file mode 100644 index 54910cfd565..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Cell/HyperlinkTest.php +++ /dev/null @@ -1,88 +0,0 @@ -<?php - - -class HyperlinkTest extends PHPUnit_Framework_TestCase -{ - - public function setUp() - { - if (!defined('PHPEXCEL_ROOT')) - { - define('PHPEXCEL_ROOT', APPLICATION_PATH . '/'); - } - require_once(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); - } - - public function testGetUrl() - { - $urlValue = 'http://www.phpexcel.net'; - - $testInstance = new PHPExcel_Cell_Hyperlink($urlValue); - - $result = $testInstance->getUrl(); - $this->assertEquals($urlValue,$result); - } - - public function testSetUrl() - { - $initialUrlValue = 'http://www.phpexcel.net'; - $newUrlValue = 'http://github.com/PHPOffice/PHPExcel'; - - $testInstance = new PHPExcel_Cell_Hyperlink($initialUrlValue); - $result = $testInstance->setUrl($newUrlValue); - $this->assertTrue($result instanceof PHPExcel_Cell_Hyperlink); - - $result = $testInstance->getUrl(); - $this->assertEquals($newUrlValue,$result); - } - - public function testGetTooltip() - { - $tooltipValue = 'PHPExcel Web Site'; - - $testInstance = new PHPExcel_Cell_Hyperlink(NULL, $tooltipValue); - - $result = $testInstance->getTooltip(); - $this->assertEquals($tooltipValue,$result); - } - - public function testSetTooltip() - { - $initialTooltipValue = 'PHPExcel Web Site'; - $newTooltipValue = 'PHPExcel Repository on Github'; - - $testInstance = new PHPExcel_Cell_Hyperlink(NULL, $initialTooltipValue); - $result = $testInstance->setTooltip($newTooltipValue); - $this->assertTrue($result instanceof PHPExcel_Cell_Hyperlink); - - $result = $testInstance->getTooltip(); - $this->assertEquals($newTooltipValue,$result); - } - - public function testIsInternal() - { - $initialUrlValue = 'http://www.phpexcel.net'; - $newUrlValue = 'sheet://Worksheet1!A1'; - - $testInstance = new PHPExcel_Cell_Hyperlink($initialUrlValue); - $result = $testInstance->isInternal(); - $this->assertFalse($result); - - $testInstance->setUrl($newUrlValue); - $result = $testInstance->isInternal(); - $this->assertTrue($result); - } - - public function testGetHashCode() - { - $urlValue = 'http://www.phpexcel.net'; - $tooltipValue = 'PHPExcel Web Site'; - $initialExpectedHash = 'd84d713aed1dbbc8a7c5af183d6c7dbb'; - - $testInstance = new PHPExcel_Cell_Hyperlink($urlValue, $tooltipValue); - - $result = $testInstance->getHashCode(); - $this->assertEquals($initialExpectedHash,$result); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/CellTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/CellTest.php deleted file mode 100644 index 11df404ce5d..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/CellTest.php +++ /dev/null @@ -1,295 +0,0 @@ -<?php - - -require_once 'testDataFileIterator.php'; - -class CellTest extends PHPUnit_Framework_TestCase -{ - - public function setUp() - { - if (!defined('PHPEXCEL_ROOT')) { - define('PHPEXCEL_ROOT', APPLICATION_PATH . '/'); - } - require_once(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); - } - - /** - * @dataProvider providerColumnString - */ - public function testColumnIndexFromString() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Cell','columnIndexFromString'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerColumnString() - { - return new testDataFileIterator('rawTestData/ColumnString.data'); - } - - public function testColumnIndexFromStringTooLong() - { - $cellAddress = 'ABCD'; - try { - $result = call_user_func(array('PHPExcel_Cell','columnIndexFromString'),$cellAddress); - } catch (PHPExcel_Exception $e) { - $this->assertEquals($e->getMessage(), 'Column string index can not be longer than 3 characters'); - return; - } - $this->fail('An expected exception has not been raised.'); - } - - public function testColumnIndexFromStringTooShort() - { - $cellAddress = ''; - try { - $result = call_user_func(array('PHPExcel_Cell','columnIndexFromString'),$cellAddress); - } catch (PHPExcel_Exception $e) { - $this->assertEquals($e->getMessage(), 'Column string index can not be empty'); - return; - } - $this->fail('An expected exception has not been raised.'); - } - - /** - * @dataProvider providerColumnIndex - */ - public function testStringFromColumnIndex() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Cell','stringFromColumnIndex'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerColumnIndex() - { - return new testDataFileIterator('rawTestData/ColumnIndex.data'); - } - - /** - * @dataProvider providerCoordinates - */ - public function testCoordinateFromString() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Cell','coordinateFromString'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerCoordinates() - { - return new testDataFileIterator('rawTestData/CellCoordinates.data'); - } - - public function testCoordinateFromStringWithRangeAddress() - { - $cellAddress = 'A1:AI2012'; - try { - $result = call_user_func(array('PHPExcel_Cell','coordinateFromString'),$cellAddress); - } catch (PHPExcel_Exception $e) { - $this->assertEquals($e->getMessage(), 'Cell coordinate string can not be a range of cells'); - return; - } - $this->fail('An expected exception has not been raised.'); - } - - public function testCoordinateFromStringWithEmptyAddress() - { - $cellAddress = ''; - try { - $result = call_user_func(array('PHPExcel_Cell','coordinateFromString'),$cellAddress); - } catch (PHPExcel_Exception $e) { - $this->assertEquals($e->getMessage(), 'Cell coordinate can not be zero-length string'); - return; - } - $this->fail('An expected exception has not been raised.'); - } - - public function testCoordinateFromStringWithInvalidAddress() - { - $cellAddress = 'AI'; - try { - $result = call_user_func(array('PHPExcel_Cell','coordinateFromString'),$cellAddress); - } catch (PHPExcel_Exception $e) { - $this->assertEquals($e->getMessage(), 'Invalid cell coordinate '.$cellAddress); - return; - } - $this->fail('An expected exception has not been raised.'); - } - - /** - * @dataProvider providerAbsoluteCoordinates - */ - public function testAbsoluteCoordinateFromString() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Cell','absoluteCoordinate'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerAbsoluteCoordinates() - { - return new testDataFileIterator('rawTestData/CellAbsoluteCoordinate.data'); - } - - public function testAbsoluteCoordinateFromStringWithRangeAddress() - { - $cellAddress = 'A1:AI2012'; - try { - $result = call_user_func(array('PHPExcel_Cell','absoluteCoordinate'),$cellAddress); - } catch (PHPExcel_Exception $e) { - $this->assertEquals($e->getMessage(), 'Cell coordinate string can not be a range of cells'); - return; - } - $this->fail('An expected exception has not been raised.'); - } - - /** - * @dataProvider providerAbsoluteReferences - */ - public function testAbsoluteReferenceFromString() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Cell','absoluteReference'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerAbsoluteReferences() - { - return new testDataFileIterator('rawTestData/CellAbsoluteReference.data'); - } - - public function testAbsoluteReferenceFromStringWithRangeAddress() - { - $cellAddress = 'A1:AI2012'; - try { - $result = call_user_func(array('PHPExcel_Cell','absoluteReference'),$cellAddress); - } catch (PHPExcel_Exception $e) { - $this->assertEquals($e->getMessage(), 'Cell coordinate string can not be a range of cells'); - return; - } - $this->fail('An expected exception has not been raised.'); - } - - /** - * @dataProvider providerSplitRange - */ - public function testSplitRange() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Cell','splitRange'),$args); - foreach($result as $key => $split) { - if (!is_array($expectedResult[$key])) { - $this->assertEquals($expectedResult[$key], $split[0]); - } else { - $this->assertEquals($expectedResult[$key], $split); - } - } - } - - public function providerSplitRange() - { - return new testDataFileIterator('rawTestData/CellSplitRange.data'); - } - - /** - * @dataProvider providerBuildRange - */ - public function testBuildRange() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Cell','buildRange'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerBuildRange() - { - return new testDataFileIterator('rawTestData/CellBuildRange.data'); - } - - public function testBuildRangeInvalid() - { - $cellRange = ''; - try { - $result = call_user_func(array('PHPExcel_Cell','buildRange'),$cellRange); - } catch (PHPExcel_Exception $e) { - $this->assertEquals($e->getMessage(), 'Range does not contain any information'); - return; - } - $this->fail('An expected exception has not been raised.'); - } - - /** - * @dataProvider providerRangeBoundaries - */ - public function testRangeBoundaries() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Cell','rangeBoundaries'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerRangeBoundaries() - { - return new testDataFileIterator('rawTestData/CellRangeBoundaries.data'); - } - - /** - * @dataProvider providerRangeDimension - */ - public function testRangeDimension() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Cell','rangeDimension'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerRangeDimension() - { - return new testDataFileIterator('rawTestData/CellRangeDimension.data'); - } - - /** - * @dataProvider providerGetRangeBoundaries - */ - public function testGetRangeBoundaries() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Cell','getRangeBoundaries'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerGetRangeBoundaries() - { - return new testDataFileIterator('rawTestData/CellGetRangeBoundaries.data'); - } - - /** - * @dataProvider providerExtractAllCellReferencesInRange - */ - public function testExtractAllCellReferencesInRange() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Cell','extractAllCellReferencesInRange'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerExtractAllCellReferencesInRange() - { - return new testDataFileIterator('rawTestData/CellExtractAllCellReferencesInRange.data'); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Chart/DataSeriesValuesTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Chart/DataSeriesValuesTest.php deleted file mode 100644 index 38284de9a94..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Chart/DataSeriesValuesTest.php +++ /dev/null @@ -1,55 +0,0 @@ -<?php - - -class DataSeriesValuesTest extends PHPUnit_Framework_TestCase -{ - - public function setUp() - { - if (!defined('PHPEXCEL_ROOT')) - { - define('PHPEXCEL_ROOT', APPLICATION_PATH . '/'); - } - require_once(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); - } - - public function testSetDataType() - { - $dataTypeValues = array( - 'Number', - 'String' - ); - - $testInstance = new PHPExcel_Chart_DataSeriesValues; - - foreach($dataTypeValues as $dataTypeValue) { - $result = $testInstance->setDataType($dataTypeValue); - $this->assertTrue($result instanceof PHPExcel_Chart_DataSeriesValues); - } - } - - public function testSetInvalidDataTypeThrowsException() - { - $testInstance = new PHPExcel_Chart_DataSeriesValues; - - try { - $result = $testInstance->setDataType('BOOLEAN'); - } catch (Exception $e) { - $this->assertEquals($e->getMessage(), 'Invalid datatype for chart data series values'); - return; - } - $this->fail('An expected exception has not been raised.'); - } - - public function testGetDataType() - { - $dataTypeValue = 'String'; - - $testInstance = new PHPExcel_Chart_DataSeriesValues; - $setValue = $testInstance->setDataType($dataTypeValue); - - $result = $testInstance->getDataType(); - $this->assertEquals($dataTypeValue,$result); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Chart/LayoutTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Chart/LayoutTest.php deleted file mode 100644 index f24e01c3131..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Chart/LayoutTest.php +++ /dev/null @@ -1,37 +0,0 @@ -<?php - - -class LayoutTest extends PHPUnit_Framework_TestCase -{ - - public function setUp() - { - if (!defined('PHPEXCEL_ROOT')) - { - define('PHPEXCEL_ROOT', APPLICATION_PATH . '/'); - } - require_once(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); - } - - public function testSetLayoutTarget() - { - $LayoutTargetValue = 'String'; - - $testInstance = new PHPExcel_Chart_Layout; - - $result = $testInstance->setLayoutTarget($LayoutTargetValue); - $this->assertTrue($result instanceof PHPExcel_Chart_Layout); - } - - public function testGetLayoutTarget() - { - $LayoutTargetValue = 'String'; - - $testInstance = new PHPExcel_Chart_Layout; - $setValue = $testInstance->setLayoutTarget($LayoutTargetValue); - - $result = $testInstance->getLayoutTarget(); - $this->assertEquals($LayoutTargetValue,$result); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Chart/LegendTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Chart/LegendTest.php deleted file mode 100644 index 4c4f8df81f2..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Chart/LegendTest.php +++ /dev/null @@ -1,134 +0,0 @@ -<?php - - -class LegendTest extends PHPUnit_Framework_TestCase -{ - - public function setUp() - { - if (!defined('PHPEXCEL_ROOT')) - { - define('PHPEXCEL_ROOT', APPLICATION_PATH . '/'); - } - require_once(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); - } - - public function testSetPosition() - { - $positionValues = array( - PHPExcel_Chart_Legend::POSITION_RIGHT, - PHPExcel_Chart_Legend::POSITION_LEFT, - PHPExcel_Chart_Legend::POSITION_TOP, - PHPExcel_Chart_Legend::POSITION_BOTTOM, - PHPExcel_Chart_Legend::POSITION_TOPRIGHT, - ); - - $testInstance = new PHPExcel_Chart_Legend; - - foreach($positionValues as $positionValue) { - $result = $testInstance->setPosition($positionValue); - $this->assertTrue($result); - } - } - - public function testSetInvalidPositionReturnsFalse() - { - $testInstance = new PHPExcel_Chart_Legend; - - $result = $testInstance->setPosition('BottomLeft'); - $this->assertFalse($result); - // Ensure that value is unchanged - $result = $testInstance->getPosition(); - $this->assertEquals(PHPExcel_Chart_Legend::POSITION_RIGHT,$result); - } - - public function testGetPosition() - { - $PositionValue = PHPExcel_Chart_Legend::POSITION_BOTTOM; - - $testInstance = new PHPExcel_Chart_Legend; - $setValue = $testInstance->setPosition($PositionValue); - - $result = $testInstance->getPosition(); - $this->assertEquals($PositionValue,$result); - } - - public function testSetPositionXL() - { - $positionValues = array( - PHPExcel_Chart_Legend::xlLegendPositionBottom, - PHPExcel_Chart_Legend::xlLegendPositionCorner, - PHPExcel_Chart_Legend::xlLegendPositionCustom, - PHPExcel_Chart_Legend::xlLegendPositionLeft, - PHPExcel_Chart_Legend::xlLegendPositionRight, - PHPExcel_Chart_Legend::xlLegendPositionTop, - ); - - $testInstance = new PHPExcel_Chart_Legend; - - foreach($positionValues as $positionValue) { - $result = $testInstance->setPositionXL($positionValue); - $this->assertTrue($result); - } - } - - public function testSetInvalidXLPositionReturnsFalse() - { - $testInstance = new PHPExcel_Chart_Legend; - - $result = $testInstance->setPositionXL(999); - $this->assertFalse($result); - // Ensure that value is unchanged - $result = $testInstance->getPositionXL(); - $this->assertEquals(PHPExcel_Chart_Legend::xlLegendPositionRight,$result); - } - - public function testGetPositionXL() - { - $PositionValue = PHPExcel_Chart_Legend::xlLegendPositionCorner; - - $testInstance = new PHPExcel_Chart_Legend; - $setValue = $testInstance->setPositionXL($PositionValue); - - $result = $testInstance->getPositionXL(); - $this->assertEquals($PositionValue,$result); - } - - public function testSetOverlay() - { - $overlayValues = array( - TRUE, - FALSE, - ); - - $testInstance = new PHPExcel_Chart_Legend; - - foreach($overlayValues as $overlayValue) { - $result = $testInstance->setOverlay($overlayValue); - $this->assertTrue($result); - } - } - - public function testSetInvalidOverlayReturnsFalse() - { - $testInstance = new PHPExcel_Chart_Legend; - - $result = $testInstance->setOverlay('INVALID'); - $this->assertFalse($result); - - $result = $testInstance->getOverlay(); - $this->assertFalse($result); - } - - public function testGetOverlay() - { - $OverlayValue = TRUE; - - $testInstance = new PHPExcel_Chart_Legend; - $setValue = $testInstance->setOverlay($OverlayValue); - - $result = $testInstance->getOverlay(); - $this->assertEquals($OverlayValue,$result); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Reader/XEEValidatorTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Reader/XEEValidatorTest.php deleted file mode 100644 index f635dbb8764..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Reader/XEEValidatorTest.php +++ /dev/null @@ -1,55 +0,0 @@ -<?php - - -class XEEValidatorTest extends PHPUnit_Framework_TestCase -{ - - public function setUp() - { - if (!defined('PHPEXCEL_ROOT')) { - define('PHPEXCEL_ROOT', APPLICATION_PATH . '/'); - } - require_once(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); - } - - /** - * @dataProvider providerInvalidXML - * @expectedException PHPExcel_Reader_Exception - */ - public function testInvalidXML($filename) - { - $reader = $this->getMockForAbstractClass('PHPExcel_Reader_Abstract'); - $expectedResult = 'FAILURE: Should throw an Exception rather than return a value'; - $result = $reader->securityScanFile($filename); - $this->assertEquals($expectedResult, $result); - } - - public function providerInvalidXML() - { - $tests = []; - foreach(glob('rawTestData/Reader/XEETestInvalid*.xml') as $file) { - $tests[] = [realpath($file), true]; - } - return $tests; - } - - /** - * @dataProvider providerValidXML - */ - public function testValidXML($filename, $expectedResult) - { - $reader = $this->getMockForAbstractClass('PHPExcel_Reader_Abstract'); - $result = $reader->securityScanFile($filename); - $this->assertEquals($expectedResult, $result); - } - - public function providerValidXML() - { - $tests = []; - foreach(glob('rawTestData/Reader/XEETestValid*.xml') as $file) { - $tests[] = [realpath($file), file_get_contents($file)]; - } - return $tests; - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/ReferenceHelperTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/ReferenceHelperTest.php deleted file mode 100644 index f37db692e03..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/ReferenceHelperTest.php +++ /dev/null @@ -1,58 +0,0 @@ -<?php - - -class ReferenceHelperTest extends PHPUnit_Framework_TestCase -{ - - public function setUp() - { - if (!defined('PHPEXCEL_ROOT')) { - define('PHPEXCEL_ROOT', APPLICATION_PATH . '/'); - } - require_once(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); - } - - public function testColumnSort() - { - $columnBase = $columnExpectedResult = array( - 'A','B','Z', - 'AA','AB','AZ', - 'BA','BB','BZ', - 'ZA','ZB','ZZ', - 'AAA','AAB','AAZ', - 'ABA','ABB','ABZ', - 'AZA','AZB','AZZ', - 'BAA','BAB','BAZ', - 'BBA','BBB','BBZ', - 'BZA','BZB','BZZ' - ); - shuffle($columnBase); - usort($columnBase, array('PHPExcel_ReferenceHelper','columnSort')); - foreach($columnBase as $key => $value) { - $this->assertEquals($columnExpectedResult[$key], $value); - } - } - - public function testColumnReverseSort() - { - $columnBase = $columnExpectedResult = array( - 'A','B','Z', - 'AA','AB','AZ', - 'BA','BB','BZ', - 'ZA','ZB','ZZ', - 'AAA','AAB','AAZ', - 'ABA','ABB','ABZ', - 'AZA','AZB','AZZ', - 'BAA','BAB','BAZ', - 'BBA','BBB','BBZ', - 'BZA','BZB','BZZ' - ); - shuffle($columnBase); - $columnExpectedResult = array_reverse($columnExpectedResult); - usort($columnBase, array('PHPExcel_ReferenceHelper','columnReverseSort')); - foreach($columnBase as $key => $value) { - $this->assertEquals($columnExpectedResult[$key], $value); - } - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/CodePageTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/CodePageTest.php deleted file mode 100644 index ae4aeecc5cd..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/CodePageTest.php +++ /dev/null @@ -1,57 +0,0 @@ -<?php - - -require_once 'testDataFileIterator.php'; - -class CodePageTest extends PHPUnit_Framework_TestCase -{ - - public function setUp() - { - if (!defined('PHPEXCEL_ROOT')) { - define('PHPEXCEL_ROOT', APPLICATION_PATH . '/'); - } - require_once(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); - } - - /** - * @dataProvider providerCodePage - */ - public function testCodePageNumberToName() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Shared_CodePage','NumberToName'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerCodePage() - { - return new testDataFileIterator('rawTestData/Shared/CodePage.data'); - } - - public function testNumberToNameWithInvalidCodePage() - { - $invalidCodePage = 12345; - try { - $result = call_user_func(array('PHPExcel_Shared_CodePage','NumberToName'),$invalidCodePage); - } catch (Exception $e) { - $this->assertEquals($e->getMessage(), 'Unknown codepage: 12345'); - return; - } - $this->fail('An expected exception has not been raised.'); - } - - public function testNumberToNameWithUnsupportedCodePage() - { - $unsupportedCodePage = 720; - try { - $result = call_user_func(array('PHPExcel_Shared_CodePage','NumberToName'),$unsupportedCodePage); - } catch (Exception $e) { - $this->assertEquals($e->getMessage(), 'Code page 720 not supported.'); - return; - } - $this->fail('An expected exception has not been raised.'); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/DateTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/DateTest.php deleted file mode 100644 index 80b77d3c691..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/DateTest.php +++ /dev/null @@ -1,188 +0,0 @@ -<?php - - -require_once 'testDataFileIterator.php'; - -class DateTest extends PHPUnit_Framework_TestCase -{ - - public function setUp() - { - if (!defined('PHPEXCEL_ROOT')) { - define('PHPEXCEL_ROOT', APPLICATION_PATH . '/'); - } - require_once(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); - } - - public function testSetExcelCalendar() - { - $calendarValues = array( - PHPExcel_Shared_Date::CALENDAR_MAC_1904, - PHPExcel_Shared_Date::CALENDAR_WINDOWS_1900, - ); - - foreach($calendarValues as $calendarValue) { - $result = call_user_func(array('PHPExcel_Shared_Date','setExcelCalendar'),$calendarValue); - $this->assertTrue($result); - } - } - - public function testSetExcelCalendarWithInvalidValue() - { - $unsupportedCalendar = '2012'; - $result = call_user_func(array('PHPExcel_Shared_Date','setExcelCalendar'),$unsupportedCalendar); - $this->assertFalse($result); - } - - /** - * @dataProvider providerDateTimeExcelToPHP1900 - */ - public function testDateTimeExcelToPHP1900() - { - $result = call_user_func( - array('PHPExcel_Shared_Date','setExcelCalendar'), - PHPExcel_Shared_Date::CALENDAR_WINDOWS_1900 - ); - - $args = func_get_args(); - $expectedResult = array_pop($args); - if ($args[0] < 1) { - $expectedResult += gmmktime(0,0,0); - } - $result = call_user_func_array(array('PHPExcel_Shared_Date','ExcelToPHP'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerDateTimeExcelToPHP1900() - { - return new testDataFileIterator('rawTestData/Shared/DateTimeExcelToPHP1900.data'); - } - - /** - * @dataProvider providerDateTimePHPToExcel1900 - */ - public function testDateTimePHPToExcel1900() - { - $result = call_user_func( - array('PHPExcel_Shared_Date','setExcelCalendar'), - PHPExcel_Shared_Date::CALENDAR_WINDOWS_1900 - ); - - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Shared_Date','PHPToExcel'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-5); - } - - public function providerDateTimePHPToExcel1900() - { - return new testDataFileIterator('rawTestData/Shared/DateTimePHPToExcel1900.data'); - } - - /** - * @dataProvider providerDateTimeFormattedPHPToExcel1900 - */ - public function testDateTimeFormattedPHPToExcel1900() - { - $result = call_user_func( - array('PHPExcel_Shared_Date','setExcelCalendar'), - PHPExcel_Shared_Date::CALENDAR_WINDOWS_1900 - ); - - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Shared_Date','FormattedPHPToExcel'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-5); - } - - public function providerDateTimeFormattedPHPToExcel1900() - { - return new testDataFileIterator('rawTestData/Shared/DateTimeFormattedPHPToExcel1900.data'); - } - - /** - * @dataProvider providerDateTimeExcelToPHP1904 - */ - public function testDateTimeExcelToPHP1904() - { - $result = call_user_func( - array('PHPExcel_Shared_Date','setExcelCalendar'), - PHPExcel_Shared_Date::CALENDAR_MAC_1904 - ); - - $args = func_get_args(); - $expectedResult = array_pop($args); - if ($args[0] < 1) { - $expectedResult += gmmktime(0,0,0); - } - $result = call_user_func_array(array('PHPExcel_Shared_Date','ExcelToPHP'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerDateTimeExcelToPHP1904() - { - return new testDataFileIterator('rawTestData/Shared/DateTimeExcelToPHP1904.data'); - } - - /** - * @dataProvider providerDateTimePHPToExcel1904 - */ - public function testDateTimePHPToExcel1904() - { - $result = call_user_func( - array('PHPExcel_Shared_Date','setExcelCalendar'), - PHPExcel_Shared_Date::CALENDAR_MAC_1904 - ); - - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Shared_Date','PHPToExcel'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-5); - } - - public function providerDateTimePHPToExcel1904() - { - return new testDataFileIterator('rawTestData/Shared/DateTimePHPToExcel1904.data'); - } - - /** - * @dataProvider providerIsDateTimeFormatCode - */ - public function testIsDateTimeFormatCode() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Shared_Date','isDateTimeFormatCode'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerIsDateTimeFormatCode() - { - return new testDataFileIterator('rawTestData/Shared/DateTimeFormatCodes.data'); - } - - /** - * @dataProvider providerDateTimeExcelToPHP1900Timezone - */ - public function testDateTimeExcelToPHP1900Timezone() - { - $result = call_user_func( - array('PHPExcel_Shared_Date','setExcelCalendar'), - PHPExcel_Shared_Date::CALENDAR_WINDOWS_1900 - ); - - $args = func_get_args(); - $expectedResult = array_pop($args); - if ($args[0] < 1) { - $expectedResult += gmmktime(0,0,0); - } - $result = call_user_func_array(array('PHPExcel_Shared_Date','ExcelToPHP'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerDateTimeExcelToPHP1900Timezone() - { - return new testDataFileIterator('rawTestData/Shared/DateTimeExcelToPHP1900Timezone.data'); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/FileTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/FileTest.php deleted file mode 100644 index 9deb401d91b..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/FileTest.php +++ /dev/null @@ -1,39 +0,0 @@ -<?php - - -require_once 'testDataFileIterator.php'; - -class FileTest extends PHPUnit_Framework_TestCase -{ - - public function setUp() - { - if (!defined('PHPEXCEL_ROOT')) { - define('PHPEXCEL_ROOT', APPLICATION_PATH . '/'); - } - require_once(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); - } - - public function testGetUseUploadTempDirectory() - { - $expectedResult = FALSE; - - $result = call_user_func(array('PHPExcel_Shared_File','getUseUploadTempDirectory')); - $this->assertEquals($expectedResult, $result); - } - - public function testSetUseUploadTempDirectory() - { - $useUploadTempDirectoryValues = array( - TRUE, - FALSE, - ); - - foreach($useUploadTempDirectoryValues as $useUploadTempDirectoryValue) { - call_user_func(array('PHPExcel_Shared_File','setUseUploadTempDirectory'),$useUploadTempDirectoryValue); - - $result = call_user_func(array('PHPExcel_Shared_File','getUseUploadTempDirectory')); - $this->assertEquals($useUploadTempDirectoryValue, $result); - } - } -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/FontTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/FontTest.php deleted file mode 100644 index 6ce5a0261f3..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/FontTest.php +++ /dev/null @@ -1,94 +0,0 @@ -<?php - - -require_once 'testDataFileIterator.php'; - -class FontTest extends PHPUnit_Framework_TestCase -{ - - public function setUp() - { - if (!defined('PHPEXCEL_ROOT')) { - define('PHPEXCEL_ROOT', APPLICATION_PATH . '/'); - } - require_once(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); - } - - public function testGetAutoSizeMethod() - { - $expectedResult = PHPExcel_Shared_Font::AUTOSIZE_METHOD_APPROX; - - $result = call_user_func(array('PHPExcel_Shared_Font','getAutoSizeMethod')); - $this->assertEquals($expectedResult, $result); - } - - public function testSetAutoSizeMethod() - { - $autosizeMethodValues = array( - PHPExcel_Shared_Font::AUTOSIZE_METHOD_EXACT, - PHPExcel_Shared_Font::AUTOSIZE_METHOD_APPROX, - ); - - foreach($autosizeMethodValues as $autosizeMethodValue) { - $result = call_user_func(array('PHPExcel_Shared_Font','setAutoSizeMethod'),$autosizeMethodValue); - $this->assertTrue($result); - } - } - - public function testSetAutoSizeMethodWithInvalidValue() - { - $unsupportedAutosizeMethod = 'guess'; - - $result = call_user_func(array('PHPExcel_Shared_Font','setAutoSizeMethod'),$unsupportedAutosizeMethod); - $this->assertFalse($result); - } - - /** - * @dataProvider providerFontSizeToPixels - */ - public function testFontSizeToPixels() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Shared_Font','fontSizeToPixels'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerFontSizeToPixels() - { - return new testDataFileIterator('rawTestData/Shared/FontSizeToPixels.data'); - } - - /** - * @dataProvider providerInchSizeToPixels - */ - public function testInchSizeToPixels() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Shared_Font','inchSizeToPixels'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerInchSizeToPixels() - { - return new testDataFileIterator('rawTestData/Shared/InchSizeToPixels.data'); - } - - /** - * @dataProvider providerCentimeterSizeToPixels - */ - public function testCentimeterSizeToPixels() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Shared_Font','centimeterSizeToPixels'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerCentimeterSizeToPixels() - { - return new testDataFileIterator('rawTestData/Shared/CentimeterSizeToPixels.data'); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/PasswordHasherTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/PasswordHasherTest.php deleted file mode 100644 index 24a26178a10..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/PasswordHasherTest.php +++ /dev/null @@ -1,33 +0,0 @@ -<?php - - -require_once 'testDataFileIterator.php'; - -class PasswordHasherTest extends PHPUnit_Framework_TestCase -{ - - public function setUp() - { - if (!defined('PHPEXCEL_ROOT')) { - define('PHPEXCEL_ROOT', APPLICATION_PATH . '/'); - } - require_once(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); - } - - /** - * @dataProvider providerHashPassword - */ - public function testHashPassword() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Shared_PasswordHasher','hashPassword'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerHashPassword() - { - return new testDataFileIterator('rawTestData/Shared/PasswordHashes.data'); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/StringTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/StringTest.php deleted file mode 100644 index 9a34729d6cf..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/StringTest.php +++ /dev/null @@ -1,83 +0,0 @@ -<?php - - -require_once 'testDataFileIterator.php'; - -class StringTest extends PHPUnit_Framework_TestCase -{ - - public function setUp() - { - if (!defined('PHPEXCEL_ROOT')) { - define('PHPEXCEL_ROOT', APPLICATION_PATH . '/'); - } - require_once(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); - } - - public function testGetIsMbStringEnabled() - { - $result = call_user_func(array('PHPExcel_Shared_String','getIsMbstringEnabled')); - $this->assertTrue($result); - } - - public function testGetIsIconvEnabled() - { - $result = call_user_func(array('PHPExcel_Shared_String','getIsIconvEnabled')); - $this->assertTrue($result); - } - - public function testGetDecimalSeparator() - { - $localeconv = localeconv(); - - $expectedResult = (!empty($localeconv['decimal_point'])) ? $localeconv['decimal_point'] : ','; - $result = call_user_func(array('PHPExcel_Shared_String','getDecimalSeparator')); - $this->assertEquals($expectedResult, $result); - } - - public function testSetDecimalSeparator() - { - $expectedResult = ','; - $result = call_user_func(array('PHPExcel_Shared_String','setDecimalSeparator'),$expectedResult); - - $result = call_user_func(array('PHPExcel_Shared_String','getDecimalSeparator')); - $this->assertEquals($expectedResult, $result); - } - - public function testGetThousandsSeparator() - { - $localeconv = localeconv(); - - $expectedResult = (!empty($localeconv['thousands_sep'])) ? $localeconv['thousands_sep'] : ','; - $result = call_user_func(array('PHPExcel_Shared_String','getThousandsSeparator')); - $this->assertEquals($expectedResult, $result); - } - - public function testSetThousandsSeparator() - { - $expectedResult = ' '; - $result = call_user_func(array('PHPExcel_Shared_String','setThousandsSeparator'),$expectedResult); - - $result = call_user_func(array('PHPExcel_Shared_String','getThousandsSeparator')); - $this->assertEquals($expectedResult, $result); - } - - public function testGetCurrencyCode() - { - $localeconv = localeconv(); - - $expectedResult = (!empty($localeconv['currency_symbol'])) ? $localeconv['currency_symbol'] : '$'; - $result = call_user_func(array('PHPExcel_Shared_String','getCurrencyCode')); - $this->assertEquals($expectedResult, $result); - } - - public function testSetCurrencyCode() - { - $expectedResult = '£'; - $result = call_user_func(array('PHPExcel_Shared_String','setCurrencyCode'),$expectedResult); - - $result = call_user_func(array('PHPExcel_Shared_String','getCurrencyCode')); - $this->assertEquals($expectedResult, $result); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/TimeZoneTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/TimeZoneTest.php deleted file mode 100644 index 0e44ceb628a..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/TimeZoneTest.php +++ /dev/null @@ -1,39 +0,0 @@ -<?php - - -class TimeZoneTest extends PHPUnit_Framework_TestCase -{ - - public function setUp() - { - if (!defined('PHPEXCEL_ROOT')) { - define('PHPEXCEL_ROOT', APPLICATION_PATH . '/'); - } - require_once(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); - } - - public function testSetTimezone() - { - $timezoneValues = array( - 'Europe/Prague', - 'Asia/Tokyo', - 'America/Indiana/Indianapolis', - 'Pacific/Honolulu', - 'Atlantic/St_Helena', - ); - - foreach($timezoneValues as $timezoneValue) { - $result = call_user_func(array('PHPExcel_Shared_TimeZone','setTimezone'),$timezoneValue); - $this->assertTrue($result); - } - - } - - public function testSetTimezoneWithInvalidValue() - { - $unsupportedTimezone = 'Etc/GMT+10'; - $result = call_user_func(array('PHPExcel_Shared_TimeZone','setTimezone'),$unsupportedTimezone); - $this->assertFalse($result); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Style/ColorTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Style/ColorTest.php deleted file mode 100644 index f157b1a34b5..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Style/ColorTest.php +++ /dev/null @@ -1,81 +0,0 @@ -<?php - - -require_once 'testDataFileIterator.php'; - -class ColorTest extends PHPUnit_Framework_TestCase -{ - - public function setUp() - { - if (!defined('PHPEXCEL_ROOT')) { - define('PHPEXCEL_ROOT', APPLICATION_PATH . '/'); - } - require_once(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); - } - - /** - * @dataProvider providerColorGetRed - */ - public function testGetRed() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Style_Color','getRed'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerColorGetRed() - { - return new testDataFileIterator('rawTestData/Style/ColorGetRed.data'); - } - - /** - * @dataProvider providerColorGetGreen - */ - public function testGetGreen() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Style_Color','getGreen'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerColorGetGreen() - { - return new testDataFileIterator('rawTestData/Style/ColorGetGreen.data'); - } - - /** - * @dataProvider providerColorGetBlue - */ - public function testGetBlue() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Style_Color','getBlue'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerColorGetBlue() - { - return new testDataFileIterator('rawTestData/Style/ColorGetBlue.data'); - } - - /** - * @dataProvider providerColorChangeBrightness - */ - public function testChangeBrightness() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Style_Color','changeBrightness'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerColorChangeBrightness() - { - return new testDataFileIterator('rawTestData/Style/ColorChangeBrightness.data'); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Style/NumberFormatTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Style/NumberFormatTest.php deleted file mode 100644 index 13fc3ede3a6..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Style/NumberFormatTest.php +++ /dev/null @@ -1,36 +0,0 @@ -<?php - - -require_once 'testDataFileIterator.php'; - -class NumberFormatTest extends PHPUnit_Framework_TestCase -{ - - public function setUp() - { - if (!defined('PHPEXCEL_ROOT')) { - define('PHPEXCEL_ROOT', APPLICATION_PATH . '/'); - } - require_once(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); - - PHPExcel_Shared_String::setDecimalSeparator('.'); - PHPExcel_Shared_String::setThousandsSeparator(','); - } - - /** - * @dataProvider providerNumberFormat - */ - public function testFormatValueWithMask() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Style_NumberFormat','toFormattedString'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerNumberFormat() - { - return new testDataFileIterator('rawTestData/Style/NumberFormat.data'); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/AutoFilter/Column/RuleTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/AutoFilter/Column/RuleTest.php deleted file mode 100644 index 65d0a85c651..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/AutoFilter/Column/RuleTest.php +++ /dev/null @@ -1,109 +0,0 @@ -<?php - - -class RuleTest extends PHPUnit_Framework_TestCase -{ - private $_testAutoFilterRuleObject; - - private $_mockAutoFilterColumnObject; - - public function setUp() - { - if (!defined('PHPEXCEL_ROOT')) { - define('PHPEXCEL_ROOT', APPLICATION_PATH . '/'); - } - require_once(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); - - $this->_mockAutoFilterColumnObject = $this->getMockBuilder('PHPExcel_Worksheet_AutoFilter_Column') - ->disableOriginalConstructor() - ->getMock(); - - $this->_mockAutoFilterColumnObject->expects($this->any()) - ->method('testColumnInRange') - ->will($this->returnValue(3)); - - $this->_testAutoFilterRuleObject = new PHPExcel_Worksheet_AutoFilter_Column_Rule( - $this->_mockAutoFilterColumnObject - ); - } - - public function testGetRuleType() - { - $result = $this->_testAutoFilterRuleObject->getRuleType(); - $this->assertEquals(PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_FILTER, $result); - } - - public function testSetRuleType() - { - $expectedResult = PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP; - - // Setters return the instance to implement the fluent interface - $result = $this->_testAutoFilterRuleObject->setRuleType($expectedResult); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter_Column_Rule', $result); - - $result = $this->_testAutoFilterRuleObject->getRuleType(); - $this->assertEquals($expectedResult, $result); - } - - public function testSetValue() - { - $expectedResult = 100; - - // Setters return the instance to implement the fluent interface - $result = $this->_testAutoFilterRuleObject->setValue($expectedResult); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter_Column_Rule', $result); - - $result = $this->_testAutoFilterRuleObject->getValue(); - $this->assertEquals($expectedResult, $result); - } - - public function testGetOperator() - { - $result = $this->_testAutoFilterRuleObject->getOperator(); - $this->assertEquals(PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL, $result); - } - - public function testSetOperator() - { - $expectedResult = PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_LESSTHAN; - - // Setters return the instance to implement the fluent interface - $result = $this->_testAutoFilterRuleObject->setOperator($expectedResult); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter_Column_Rule', $result); - - $result = $this->_testAutoFilterRuleObject->getOperator(); - $this->assertEquals($expectedResult, $result); - } - - public function testSetGrouping() - { - $expectedResult = PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_MONTH; - - // Setters return the instance to implement the fluent interface - $result = $this->_testAutoFilterRuleObject->setGrouping($expectedResult); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter_Column_Rule', $result); - - $result = $this->_testAutoFilterRuleObject->getGrouping(); - $this->assertEquals($expectedResult, $result); - } - - public function testGetParent() - { - $result = $this->_testAutoFilterRuleObject->getParent(); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter_Column', $result); - } - - public function testSetParent() - { - // Setters return the instance to implement the fluent interface - $result = $this->_testAutoFilterRuleObject->setParent($this->_mockAutoFilterColumnObject); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter_Column_Rule', $result); - } - - public function testClone() - { - $result = clone $this->_testAutoFilterRuleObject; - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter_Column_Rule', $result); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/AutoFilter/ColumnTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/AutoFilter/ColumnTest.php deleted file mode 100644 index 3c1821bad9b..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/AutoFilter/ColumnTest.php +++ /dev/null @@ -1,173 +0,0 @@ -<?php - - -class AutofilterColumnTest extends PHPUnit_Framework_TestCase -{ - private $_testInitialColumn = 'H'; - - private $_testAutoFilterColumnObject; - - private $_mockAutoFilterObject; - - public function setUp() - { - if (!defined('PHPEXCEL_ROOT')) { - define('PHPEXCEL_ROOT', APPLICATION_PATH . '/'); - } - require_once(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); - - $this->_mockAutoFilterObject = $this->getMockBuilder('PHPExcel_Worksheet_AutoFilter') - ->disableOriginalConstructor() - ->getMock(); - - $this->_mockAutoFilterObject->expects($this->any()) - ->method('testColumnInRange') - ->will($this->returnValue(3)); - - $this->_testAutoFilterColumnObject = new PHPExcel_Worksheet_AutoFilter_Column( - $this->_testInitialColumn, - $this->_mockAutoFilterObject - ); - } - - public function testGetColumnIndex() - { - $result = $this->_testAutoFilterColumnObject->getColumnIndex(); - $this->assertEquals($this->_testInitialColumn, $result); - } - - public function testSetColumnIndex() - { - $expectedResult = 'L'; - - // Setters return the instance to implement the fluent interface - $result = $this->_testAutoFilterColumnObject->setColumnIndex($expectedResult); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter_Column', $result); - - $result = $this->_testAutoFilterColumnObject->getColumnIndex(); - $this->assertEquals($expectedResult, $result); - } - - public function testGetParent() - { - $result = $this->_testAutoFilterColumnObject->getParent(); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter', $result); - } - - public function testSetParent() - { - // Setters return the instance to implement the fluent interface - $result = $this->_testAutoFilterColumnObject->setParent($this->_mockAutoFilterObject); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter_Column', $result); - } - - public function testGetFilterType() - { - $result = $this->_testAutoFilterColumnObject->getFilterType(); - $this->assertEquals(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_FILTER, $result); - } - - public function testSetFilterType() - { - $result = $this->_testAutoFilterColumnObject->setFilterType(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_DYNAMICFILTER); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter_Column', $result); - - $result = $this->_testAutoFilterColumnObject->getFilterType(); - $this->assertEquals(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_DYNAMICFILTER, $result); - } - - /** - * @expectedException PHPExcel_Exception - */ - public function testSetInvalidFilterTypeThrowsException() - { - $expectedResult = 'Unfiltered'; - - $result = $this->_testAutoFilterColumnObject->setFilterType($expectedResult); - } - - public function testGetJoin() - { - $result = $this->_testAutoFilterColumnObject->getJoin(); - $this->assertEquals(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_COLUMN_JOIN_OR, $result); - } - - public function testSetJoin() - { - $result = $this->_testAutoFilterColumnObject->setJoin(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_COLUMN_JOIN_AND); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter_Column', $result); - - $result = $this->_testAutoFilterColumnObject->getJoin(); - $this->assertEquals(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_COLUMN_JOIN_AND, $result); - } - - /** - * @expectedException PHPExcel_Exception - */ - public function testSetInvalidJoinThrowsException() - { - $expectedResult = 'Neither'; - - $result = $this->_testAutoFilterColumnObject->setJoin($expectedResult); - } - - public function testSetAttributes() - { - $attributeSet = array( 'val' => 100, - 'maxVal' => 200 - ); - - // Setters return the instance to implement the fluent interface - $result = $this->_testAutoFilterColumnObject->setAttributes($attributeSet); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter_Column', $result); - } - - public function testGetAttributes() - { - $attributeSet = array( 'val' => 100, - 'maxVal' => 200 - ); - - $this->_testAutoFilterColumnObject->setAttributes($attributeSet); - - $result = $this->_testAutoFilterColumnObject->getAttributes(); - $this->assertTrue(is_array($result)); - $this->assertEquals(count($attributeSet), count($result)); - } - - public function testSetAttribute() - { - $attributeSet = array( 'val' => 100, - 'maxVal' => 200 - ); - - foreach($attributeSet as $attributeName => $attributeValue) { - // Setters return the instance to implement the fluent interface - $result = $this->_testAutoFilterColumnObject->setAttribute($attributeName,$attributeValue); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter_Column', $result); - } - } - - public function testGetAttribute() - { - $attributeSet = array( 'val' => 100, - 'maxVal' => 200 - ); - - $this->_testAutoFilterColumnObject->setAttributes($attributeSet); - - foreach($attributeSet as $attributeName => $attributeValue) { - $result = $this->_testAutoFilterColumnObject->getAttribute($attributeName); - $this->assertEquals($attributeValue, $result); - } - $result = $this->_testAutoFilterColumnObject->getAttribute('nonExistentAttribute'); - $this->assertNull($result); - } - - public function testClone() - { - $result = clone $this->_testAutoFilterColumnObject; - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter_Column', $result); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/AutoFilterTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/AutoFilterTest.php deleted file mode 100644 index 9907eabc50a..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/AutoFilterTest.php +++ /dev/null @@ -1,340 +0,0 @@ -<?php - - -class AutoFilterTest extends PHPUnit_Framework_TestCase -{ - private $_testInitialRange = 'H2:O256'; - - private $_testAutoFilterObject; - - - public function setUp() - { - if (!defined('PHPEXCEL_ROOT')) { - define('PHPEXCEL_ROOT', APPLICATION_PATH . '/'); - } - require_once(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); - - $this->_mockWorksheetObject = $this->getMockBuilder('PHPExcel_Worksheet') - ->disableOriginalConstructor() - ->getMock(); - $this->_mockCacheController = $this->getMockBuilder('PHPExcel_CachedObjectStorage_Memory') - ->disableOriginalConstructor() - ->getMock(); - $this->_mockWorksheetObject->expects($this->any()) - ->method('getCellCacheController') - ->will($this->returnValue($this->_mockCacheController)); - - $this->_testAutoFilterObject = new PHPExcel_Worksheet_AutoFilter( - $this->_testInitialRange, - $this->_mockWorksheetObject - ); - } - - public function testToString() - { - $expectedResult = $this->_testInitialRange; - - // magic __toString should return the active autofilter range - $result = $this->_testAutoFilterObject; - $this->assertEquals($expectedResult, $result); - } - - public function testGetParent() - { - $result = $this->_testAutoFilterObject->getParent(); - $this->assertInstanceOf('PHPExcel_Worksheet', $result); - } - - public function testSetParent() - { - // Setters return the instance to implement the fluent interface - $result = $this->_testAutoFilterObject->setParent($this->_mockWorksheetObject); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter', $result); - } - - public function testGetRange() - { - $expectedResult = $this->_testInitialRange; - - // Result should be the active autofilter range - $result = $this->_testAutoFilterObject->getRange(); - $this->assertEquals($expectedResult, $result); - } - - public function testSetRange() - { - $ranges = array('G1:J512' => 'Worksheet1!G1:J512', - 'K1:N20' => 'K1:N20' - ); - - foreach($ranges as $actualRange => $fullRange) { - // Setters return the instance to implement the fluent interface - $result = $this->_testAutoFilterObject->setRange($fullRange); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter', $result); - - // Result should be the new autofilter range - $result = $this->_testAutoFilterObject->getRange(); - $this->assertEquals($actualRange, $result); - } - } - - public function testClearRange() - { - $expectedResult = ''; - - // Setters return the instance to implement the fluent interface - $result = $this->_testAutoFilterObject->setRange(); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter', $result); - - // Result should be a clear range - $result = $this->_testAutoFilterObject->getRange(); - $this->assertEquals($expectedResult, $result); - } - - /** - * @expectedException PHPExcel_Exception - */ - public function testSetRangeInvalidRange() - { - $expectedResult = 'A1'; - - $result = $this->_testAutoFilterObject->setRange($expectedResult); - } - - public function testGetColumnsEmpty() - { - // There should be no columns yet defined - $result = $this->_testAutoFilterObject->getColumns(); - $this->assertInternalType('array', $result); - $this->assertEquals(0, count($result)); - } - - public function testGetColumnOffset() - { - $columnIndexes = array( 'H' => 0, - 'K' => 3, - 'M' => 5 - ); - - // If we request a specific column by its column ID, we should get an - // integer returned representing the column offset within the range - foreach($columnIndexes as $columnIndex => $columnOffset) { - $result = $this->_testAutoFilterObject->getColumnOffset($columnIndex); - $this->assertEquals($columnOffset, $result); - } - } - - /** - * @expectedException PHPExcel_Exception - */ - public function testGetInvalidColumnOffset() - { - $invalidColumn = 'G'; - - $result = $this->_testAutoFilterObject->getColumnOffset($invalidColumn); - } - - public function testSetColumnWithString() - { - $expectedResult = 'L'; - - // Setters return the instance to implement the fluent interface - $result = $this->_testAutoFilterObject->setColumn($expectedResult); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter', $result); - - $result = $this->_testAutoFilterObject->getColumns(); - // Result should be an array of PHPExcel_Worksheet_AutoFilter_Column - // objects for each column we set indexed by the column ID - $this->assertInternalType('array', $result); - $this->assertEquals(1, count($result)); - $this->assertArrayHasKey($expectedResult,$result); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter_Column', $result[$expectedResult]); - } - - /** - * @expectedException PHPExcel_Exception - */ - public function testSetInvalidColumnWithString() - { - $invalidColumn = 'A'; - - $result = $this->_testAutoFilterObject->setColumn($invalidColumn); - } - - public function testSetColumnWithColumnObject() - { - $expectedResult = 'M'; - $columnObject = new PHPExcel_Worksheet_AutoFilter_Column($expectedResult); - - // Setters return the instance to implement the fluent interface - $result = $this->_testAutoFilterObject->setColumn($columnObject); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter', $result); - - $result = $this->_testAutoFilterObject->getColumns(); - // Result should be an array of PHPExcel_Worksheet_AutoFilter_Column - // objects for each column we set indexed by the column ID - $this->assertInternalType('array', $result); - $this->assertEquals(1, count($result)); - $this->assertArrayHasKey($expectedResult,$result); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter_Column', $result[$expectedResult]); - } - - /** - * @expectedException PHPExcel_Exception - */ - public function testSetInvalidColumnWithObject() - { - $invalidColumn = 'E'; - $columnObject = new PHPExcel_Worksheet_AutoFilter_Column($invalidColumn); - - $result = $this->_testAutoFilterObject->setColumn($invalidColumn); - } - - /** - * @expectedException PHPExcel_Exception - */ - public function testSetColumnWithInvalidDataType() - { - $invalidColumn = 123.456; - $columnObject = new PHPExcel_Worksheet_AutoFilter_Column($invalidColumn); - - $result = $this->_testAutoFilterObject->setColumn($invalidColumn); - } - - public function testGetColumns() - { - $columnIndexes = array('L','M'); - - foreach($columnIndexes as $columnIndex) { - $this->_testAutoFilterObject->setColumn($columnIndex); - } - - $result = $this->_testAutoFilterObject->getColumns(); - // Result should be an array of PHPExcel_Worksheet_AutoFilter_Column - // objects for each column we set indexed by the column ID - $this->assertInternalType('array', $result); - $this->assertEquals(count($columnIndexes), count($result)); - foreach($columnIndexes as $columnIndex) { - $this->assertArrayHasKey($columnIndex,$result); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter_Column', $result[$columnIndex]); - } - } - - public function testGetColumn() - { - $columnIndexes = array('L','M'); - - foreach($columnIndexes as $columnIndex) { - $this->_testAutoFilterObject->setColumn($columnIndex); - } - - // If we request a specific column by its column ID, we should - // get a PHPExcel_Worksheet_AutoFilter_Column object returned - foreach($columnIndexes as $columnIndex) { - $result = $this->_testAutoFilterObject->getColumn($columnIndex); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter_Column', $result); - } - } - - public function testGetColumnByOffset() - { - $columnIndexes = array( 0 => 'H', - 3 => 'K', - 5 => 'M' - ); - - // If we request a specific column by its offset, we should - // get a PHPExcel_Worksheet_AutoFilter_Column object returned - foreach($columnIndexes as $columnIndex => $columnID) { - $result = $this->_testAutoFilterObject->getColumnByOffset($columnIndex); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter_Column', $result); - $this->assertEquals($result->getColumnIndex(),$columnID); - } - } - - public function testGetColumnIfNotSet() - { - // If we request a specific column by its column ID, we should - // get a PHPExcel_Worksheet_AutoFilter_Column object returned - $result = $this->_testAutoFilterObject->getColumn('K'); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter_Column', $result); - } - - /** - * @expectedException PHPExcel_Exception - */ - public function testGetColumnWithoutRangeSet() - { - // Clear the range - $result = $this->_testAutoFilterObject->setRange(); - - $result = $this->_testAutoFilterObject->getColumn('A'); - } - - public function testClearRangeWithExistingColumns() - { - $expectedResult = ''; - - $columnIndexes = array('L','M','N'); - foreach($columnIndexes as $columnIndex) { - $this->_testAutoFilterObject->setColumn($columnIndex); - } - - // Setters return the instance to implement the fluent interface - $result = $this->_testAutoFilterObject->setRange(); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter', $result); - - // Range should be cleared - $result = $this->_testAutoFilterObject->getRange(); - $this->assertEquals($expectedResult, $result); - - // Column array should be cleared - $result = $this->_testAutoFilterObject->getColumns(); - $this->assertInternalType('array', $result); - $this->assertEquals(0, count($result)); - } - - public function testSetRangeWithExistingColumns() - { - $expectedResult = 'G1:J512'; - - // These columns should be retained - $columnIndexes1 = array('I','J'); - foreach($columnIndexes1 as $columnIndex) { - $this->_testAutoFilterObject->setColumn($columnIndex); - } - // These columns should be discarded - $columnIndexes2 = array('K','L','M'); - foreach($columnIndexes2 as $columnIndex) { - $this->_testAutoFilterObject->setColumn($columnIndex); - } - - // Setters return the instance to implement the fluent interface - $result = $this->_testAutoFilterObject->setRange($expectedResult); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter', $result); - - // Range should be correctly set - $result = $this->_testAutoFilterObject->getRange(); - $this->assertEquals($expectedResult, $result); - - // Only columns that existed in the original range and that - // still fall within the new range should be retained - $result = $this->_testAutoFilterObject->getColumns(); - $this->assertInternalType('array', $result); - $this->assertEquals(count($columnIndexes1), count($result)); - } - - public function testClone() - { - $columnIndexes = array('L','M'); - - foreach($columnIndexes as $columnIndex) { - $this->_testAutoFilterObject->setColumn($columnIndex); - } - - $result = clone $this->_testAutoFilterObject; - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter', $result); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/CellCollectionTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/CellCollectionTest.php deleted file mode 100644 index c2c130d7a3a..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/CellCollectionTest.php +++ /dev/null @@ -1,31 +0,0 @@ -<?php - -class CellCollectionTest extends PHPUnit_Framework_TestCase -{ - - public function setUp() - { - if (!defined('PHPEXCEL_ROOT')) - { - define('PHPEXCEL_ROOT', APPLICATION_PATH . '/'); - } - require_once(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); - } - - - public function testCacheLastCell() - { - $methods = PHPExcel_CachedObjectStorageFactory::getCacheStorageMethods(); - foreach ($methods as $method) { - PHPExcel_CachedObjectStorageFactory::initialize($method); - $workbook = new PHPExcel(); - $cells = array('A1', 'A2'); - $worksheet = $workbook->getActiveSheet(); - $worksheet->setCellValue('A1', 1); - $worksheet->setCellValue('A2', 2); - $this->assertEquals($cells, $worksheet->getCellCollection(), "Cache method \"$method\"."); - PHPExcel_CachedObjectStorageFactory::finalize(); - } - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/ColumnCellIteratorTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/ColumnCellIteratorTest.php deleted file mode 100644 index bef500ca82a..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/ColumnCellIteratorTest.php +++ /dev/null @@ -1,87 +0,0 @@ -<?php - -class ColumnCellIteratorTest extends PHPUnit_Framework_TestCase -{ - public $mockWorksheet; - public $mockColumnCell; - - public function setUp() - { - if (!defined('PHPEXCEL_ROOT')) { - define('PHPEXCEL_ROOT', APPLICATION_PATH . '/'); - } - require_once(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); - - $this->mockCell = $this->getMockBuilder('PHPExcel_Cell') - ->disableOriginalConstructor() - ->getMock(); - - $this->mockWorksheet = $this->getMockBuilder('PHPExcel_Worksheet') - ->disableOriginalConstructor() - ->getMock(); - - $this->mockWorksheet->expects($this->any()) - ->method('getHighestRow') - ->will($this->returnValue(5)); - $this->mockWorksheet->expects($this->any()) - ->method('getCellByColumnAndRow') - ->will($this->returnValue($this->mockCell)); - } - - - public function testIteratorFullRange() - { - $iterator = new PHPExcel_Worksheet_ColumnCellIterator($this->mockWorksheet, 'A'); - $ColumnCellIndexResult = 1; - $this->assertEquals($ColumnCellIndexResult, $iterator->key()); - - foreach($iterator as $key => $ColumnCell) { - $this->assertEquals($ColumnCellIndexResult++, $key); - $this->assertInstanceOf('PHPExcel_Cell', $ColumnCell); - } - } - - public function testIteratorStartEndRange() - { - $iterator = new PHPExcel_Worksheet_ColumnCellIterator($this->mockWorksheet, 'A', 2, 4); - $ColumnCellIndexResult = 2; - $this->assertEquals($ColumnCellIndexResult, $iterator->key()); - - foreach($iterator as $key => $ColumnCell) { - $this->assertEquals($ColumnCellIndexResult++, $key); - $this->assertInstanceOf('PHPExcel_Cell', $ColumnCell); - } - } - - public function testIteratorSeekAndPrev() - { - $iterator = new PHPExcel_Worksheet_ColumnCellIterator($this->mockWorksheet, 'A', 2, 4); - $columnIndexResult = 4; - $iterator->seek(4); - $this->assertEquals($columnIndexResult, $iterator->key()); - - for($i = 1; $i < $columnIndexResult-1; $i++) { - $iterator->prev(); - $this->assertEquals($columnIndexResult - $i, $iterator->key()); - } - } - - /** - * @expectedException PHPExcel_Exception - */ - public function testSeekOutOfRange() - { - $iterator = new PHPExcel_Worksheet_ColumnCellIterator($this->mockWorksheet, 'A', 2, 4); - $iterator->seek(1); - } - - /** - * @expectedException PHPExcel_Exception - */ - public function testPrevOutOfRange() - { - $iterator = new PHPExcel_Worksheet_ColumnCellIterator($this->mockWorksheet, 'A', 2, 4); - $iterator->prev(); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/ColumnIteratorTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/ColumnIteratorTest.php deleted file mode 100644 index 7d78b61791d..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/ColumnIteratorTest.php +++ /dev/null @@ -1,89 +0,0 @@ -<?php - -class ColumnIteratorTest extends PHPUnit_Framework_TestCase -{ - public $mockWorksheet; - public $mockColumn; - - public function setUp() - { - if (!defined('PHPEXCEL_ROOT')) { - define('PHPEXCEL_ROOT', APPLICATION_PATH . '/'); - } - require_once(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); - - $this->mockColumn = $this->getMockBuilder('PHPExcel_Worksheet_Column') - ->disableOriginalConstructor() - ->getMock(); - - $this->mockWorksheet = $this->getMockBuilder('PHPExcel_Worksheet') - ->disableOriginalConstructor() - ->getMock(); - - $this->mockWorksheet->expects($this->any()) - ->method('getHighestColumn') - ->will($this->returnValue('E')); - $this->mockWorksheet->expects($this->any()) - ->method('current') - ->will($this->returnValue($this->mockColumn)); - } - - - public function testIteratorFullRange() - { - $iterator = new PHPExcel_Worksheet_ColumnIterator($this->mockWorksheet); - $columnIndexResult = 'A'; - $this->assertEquals($columnIndexResult, $iterator->key()); - - foreach($iterator as $key => $column) { - $this->assertEquals($columnIndexResult++, $key); - $this->assertInstanceOf('PHPExcel_Worksheet_Column', $column); - } - } - - public function testIteratorStartEndRange() - { - $iterator = new PHPExcel_Worksheet_ColumnIterator($this->mockWorksheet, 'B', 'D'); - $columnIndexResult = 'B'; - $this->assertEquals($columnIndexResult, $iterator->key()); - - foreach($iterator as $key => $column) { - $this->assertEquals($columnIndexResult++, $key); - $this->assertInstanceOf('PHPExcel_Worksheet_Column', $column); - } - } - - public function testIteratorSeekAndPrev() - { - $ranges = range('A','E'); - $iterator = new PHPExcel_Worksheet_ColumnIterator($this->mockWorksheet, 'B', 'D'); - $columnIndexResult = 'D'; - $iterator->seek('D'); - $this->assertEquals($columnIndexResult, $iterator->key()); - - for($i = 1; $i < array_search($columnIndexResult, $ranges); $i++) { - $iterator->prev(); - $expectedResult = $ranges[array_search($columnIndexResult, $ranges) - $i]; - $this->assertEquals($expectedResult, $iterator->key()); - } - } - - /** - * @expectedException PHPExcel_Exception - */ - public function testSeekOutOfRange() - { - $iterator = new PHPExcel_Worksheet_ColumnIterator($this->mockWorksheet, 'B', 'D'); - $iterator->seek('A'); - } - - /** - * @expectedException PHPExcel_Exception - */ - public function testPrevOutOfRange() - { - $iterator = new PHPExcel_Worksheet_ColumnIterator($this->mockWorksheet, 'B', 'D'); - $iterator->prev(); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/RowCellIteratorTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/RowCellIteratorTest.php deleted file mode 100644 index cdd3c84d4bd..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/RowCellIteratorTest.php +++ /dev/null @@ -1,89 +0,0 @@ -<?php - -class RowCellIteratorTest extends PHPUnit_Framework_TestCase -{ - public $mockWorksheet; - public $mockRowCell; - - public function setUp() - { - if (!defined('PHPEXCEL_ROOT')) { - define('PHPEXCEL_ROOT', APPLICATION_PATH . '/'); - } - require_once(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); - - $this->mockCell = $this->getMockBuilder('PHPExcel_Cell') - ->disableOriginalConstructor() - ->getMock(); - - $this->mockWorksheet = $this->getMockBuilder('PHPExcel_Worksheet') - ->disableOriginalConstructor() - ->getMock(); - - $this->mockWorksheet->expects($this->any()) - ->method('getHighestColumn') - ->will($this->returnValue('E')); - $this->mockWorksheet->expects($this->any()) - ->method('getCellByColumnAndRow') - ->will($this->returnValue($this->mockCell)); - } - - - public function testIteratorFullRange() - { - $iterator = new PHPExcel_Worksheet_RowCellIterator($this->mockWorksheet); - $RowCellIndexResult = 'A'; - $this->assertEquals($RowCellIndexResult, $iterator->key()); - - foreach($iterator as $key => $RowCell) { - $this->assertEquals($RowCellIndexResult++, $key); - $this->assertInstanceOf('PHPExcel_Cell', $RowCell); - } - } - - public function testIteratorStartEndRange() - { - $iterator = new PHPExcel_Worksheet_RowCellIterator($this->mockWorksheet, 2, 'B', 'D'); - $RowCellIndexResult = 'B'; - $this->assertEquals($RowCellIndexResult, $iterator->key()); - - foreach($iterator as $key => $RowCell) { - $this->assertEquals($RowCellIndexResult++, $key); - $this->assertInstanceOf('PHPExcel_Cell', $RowCell); - } - } - - public function testIteratorSeekAndPrev() - { - $ranges = range('A','E'); - $iterator = new PHPExcel_Worksheet_RowCellIterator($this->mockWorksheet, 2, 'B', 'D'); - $RowCellIndexResult = 'D'; - $iterator->seek('D'); - $this->assertEquals($RowCellIndexResult, $iterator->key()); - - for($i = 1; $i < array_search($RowCellIndexResult, $ranges); $i++) { - $iterator->prev(); - $expectedResult = $ranges[array_search($RowCellIndexResult, $ranges) - $i]; - $this->assertEquals($expectedResult, $iterator->key()); - } - } - - /** - * @expectedException PHPExcel_Exception - */ - public function testSeekOutOfRange() - { - $iterator = new PHPExcel_Worksheet_RowCellIterator($this->mockWorksheet, 2, 'B', 'D'); - $iterator->seek(1); - } - - /** - * @expectedException PHPExcel_Exception - */ - public function testPrevOutOfRange() - { - $iterator = new PHPExcel_Worksheet_RowCellIterator($this->mockWorksheet, 2, 'B', 'D'); - $iterator->prev(); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/RowIteratorTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/RowIteratorTest.php deleted file mode 100644 index 48d8b6bb1cf..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/RowIteratorTest.php +++ /dev/null @@ -1,87 +0,0 @@ -<?php - -class RowIteratorTest extends PHPUnit_Framework_TestCase -{ - public $mockWorksheet; - public $mockRow; - - public function setUp() - { - if (!defined('PHPEXCEL_ROOT')) { - define('PHPEXCEL_ROOT', APPLICATION_PATH . '/'); - } - require_once(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); - - $this->mockRow = $this->getMockBuilder('PHPExcel_Worksheet_Row') - ->disableOriginalConstructor() - ->getMock(); - - $this->mockWorksheet = $this->getMockBuilder('PHPExcel_Worksheet') - ->disableOriginalConstructor() - ->getMock(); - - $this->mockWorksheet->expects($this->any()) - ->method('getHighestRow') - ->will($this->returnValue(5)); - $this->mockWorksheet->expects($this->any()) - ->method('current') - ->will($this->returnValue($this->mockRow)); - } - - - public function testIteratorFullRange() - { - $iterator = new PHPExcel_Worksheet_RowIterator($this->mockWorksheet); - $rowIndexResult = 1; - $this->assertEquals($rowIndexResult, $iterator->key()); - - foreach($iterator as $key => $row) { - $this->assertEquals($rowIndexResult++, $key); - $this->assertInstanceOf('PHPExcel_Worksheet_Row', $row); - } - } - - public function testIteratorStartEndRange() - { - $iterator = new PHPExcel_Worksheet_RowIterator($this->mockWorksheet, 2, 4); - $rowIndexResult = 2; - $this->assertEquals($rowIndexResult, $iterator->key()); - - foreach($iterator as $key => $row) { - $this->assertEquals($rowIndexResult++, $key); - $this->assertInstanceOf('PHPExcel_Worksheet_Row', $row); - } - } - - public function testIteratorSeekAndPrev() - { - $iterator = new PHPExcel_Worksheet_RowIterator($this->mockWorksheet, 2, 4); - $columnIndexResult = 4; - $iterator->seek(4); - $this->assertEquals($columnIndexResult, $iterator->key()); - - for($i = 1; $i < $columnIndexResult-1; $i++) { - $iterator->prev(); - $this->assertEquals($columnIndexResult - $i, $iterator->key()); - } - } - - /** - * @expectedException PHPExcel_Exception - */ - public function testSeekOutOfRange() - { - $iterator = new PHPExcel_Worksheet_RowIterator($this->mockWorksheet, 2, 4); - $iterator->seek(1); - } - - /** - * @expectedException PHPExcel_Exception - */ - public function testPrevOutOfRange() - { - $iterator = new PHPExcel_Worksheet_RowIterator($this->mockWorksheet, 2, 4); - $iterator->prev(); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/WorksheetColumnTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/WorksheetColumnTest.php deleted file mode 100644 index c70c38d364f..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/WorksheetColumnTest.php +++ /dev/null @@ -1,46 +0,0 @@ -<?php - -class WorksheetColumnTest extends PHPUnit_Framework_TestCase -{ - public $mockWorksheet; - public $mockColumn; - - public function setUp() - { - if (!defined('PHPEXCEL_ROOT')) { - define('PHPEXCEL_ROOT', APPLICATION_PATH . '/'); - } - require_once(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); - - $this->mockWorksheet = $this->getMockBuilder('PHPExcel_Worksheet') - ->disableOriginalConstructor() - ->getMock(); - $this->mockWorksheet->expects($this->any()) - ->method('getHighestRow') - ->will($this->returnValue(5)); - } - - - public function testInstantiateColumnDefault() - { - $column = new PHPExcel_Worksheet_Column($this->mockWorksheet); - $this->assertInstanceOf('PHPExcel_Worksheet_Column', $column); - $columnIndex = $column->getColumnIndex(); - $this->assertEquals('A', $columnIndex); - } - - public function testInstantiateColumnSpecified() - { - $column = new PHPExcel_Worksheet_Column($this->mockWorksheet, 'E'); - $this->assertInstanceOf('PHPExcel_Worksheet_Column', $column); - $columnIndex = $column->getColumnIndex(); - $this->assertEquals('E', $columnIndex); - } - - public function testGetCellIterator() - { - $column = new PHPExcel_Worksheet_Column($this->mockWorksheet); - $cellIterator = $column->getCellIterator(); - $this->assertInstanceOf('PHPExcel_Worksheet_ColumnCellIterator', $cellIterator); - } -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/WorksheetRowTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/WorksheetRowTest.php deleted file mode 100644 index 2761b52be61..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/WorksheetRowTest.php +++ /dev/null @@ -1,46 +0,0 @@ -<?php - -class WorksheetRowTest extends PHPUnit_Framework_TestCase -{ - public $mockWorksheet; - public $mockRow; - - public function setUp() - { - if (!defined('PHPEXCEL_ROOT')) { - define('PHPEXCEL_ROOT', APPLICATION_PATH . '/'); - } - require_once(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); - - $this->mockWorksheet = $this->getMockBuilder('PHPExcel_Worksheet') - ->disableOriginalConstructor() - ->getMock(); - $this->mockWorksheet->expects($this->any()) - ->method('getHighestColumn') - ->will($this->returnValue('E')); - } - - - public function testInstantiateRowDefault() - { - $row = new PHPExcel_Worksheet_Row($this->mockWorksheet); - $this->assertInstanceOf('PHPExcel_Worksheet_Row', $row); - $rowIndex = $row->getRowIndex(); - $this->assertEquals(1, $rowIndex); - } - - public function testInstantiateRowSpecified() - { - $row = new PHPExcel_Worksheet_Row($this->mockWorksheet, 5); - $this->assertInstanceOf('PHPExcel_Worksheet_Row', $row); - $rowIndex = $row->getRowIndex(); - $this->assertEquals(5, $rowIndex); - } - - public function testGetCellIterator() - { - $row = new PHPExcel_Worksheet_Row($this->mockWorksheet); - $cellIterator = $row->getCellIterator(); - $this->assertInstanceOf('PHPExcel_Worksheet_RowCellIterator', $cellIterator); - } -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/bootstrap.php b/htdocs/includes/phpoffice/phpexcel/unitTests/bootstrap.php deleted file mode 100644 index 8e8cdb39a9c..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/bootstrap.php +++ /dev/null @@ -1,49 +0,0 @@ -<?php -/** - * $Id: bootstrap.php 2892 2011-08-14 15:11:50Z markbaker@phpexcel.net $ - * - * @copyright Copyright (C) 2011-2014 PHPExcel. All rights reserved. - * @package PHPExcel - * @subpackage PHPExcel Unit Tests - * @author Mark Baker - */ - -chdir(dirname(__FILE__)); - -setlocale(LC_ALL, 'en_US.utf8'); - -// PHP 5.3 Compat -date_default_timezone_set('Europe/London'); - -// Define path to application directory -defined('APPLICATION_PATH') - || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../Classes')); - -// Define path to application tests directory -defined('APPLICATION_TESTS_PATH') - || define('APPLICATION_TESTS_PATH', realpath(dirname(__FILE__) )); - -// Define application environment -defined('APPLICATION_ENV') || define('APPLICATION_ENV', 'ci'); - -// Ensure library/ is on include_path -set_include_path(implode(PATH_SEPARATOR, array( - realpath(APPLICATION_PATH . '/../Classes'), - './', - dirname(__FILE__), - get_include_path(), -))); - - -/** - * @todo Sort out xdebug in vagrant so that this works in all sandboxes - * For now, it is safer to test for it rather then remove it. - */ -echo "PHPExcel tests beginning\n"; - -if(extension_loaded('xdebug')) { - echo "Xdebug extension loaded and running\n"; - xdebug_enable(); -} else { - echo 'Xdebug not found, you should run the following at the command line: echo "zend_extension=/usr/lib64/php/modules/xdebug.so" > /etc/php.d/xdebug.ini' . "\n"; -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/custom/Complex.php b/htdocs/includes/phpoffice/phpexcel/unitTests/custom/Complex.php deleted file mode 100644 index a0ac2d2c9d0..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/custom/Complex.php +++ /dev/null @@ -1,114 +0,0 @@ -<?php - -class Complex { - - private $realPart = 0; - private $imaginaryPart = 0; - private $suffix = NULL; - - public static function _parseComplex($complexNumber) - { - // Test for real number, with no imaginary part - if (is_numeric($complexNumber)) - return array( $complexNumber, 0, NULL ); - - // Fix silly human errors - if (strpos($complexNumber,'+-') !== FALSE) - $complexNumber = str_replace('+-','-',$complexNumber); - if (strpos($complexNumber,'++') !== FALSE) - $complexNumber = str_replace('++','+',$complexNumber); - if (strpos($complexNumber,'--') !== FALSE) - $complexNumber = str_replace('--','-',$complexNumber); - - // Basic validation of string, to parse out real and imaginary parts, and any suffix - $validComplex = preg_match('/^([\-\+]?(\d+\.?\d*|\d*\.?\d+)([Ee][\-\+]?[0-2]?\d{1,3})?)([\-\+]?(\d+\.?\d*|\d*\.?\d+)([Ee][\-\+]?[0-2]?\d{1,3})?)?(([\-\+]?)([ij]?))$/ui',$complexNumber,$complexParts); - - if (!$validComplex) { - // Neither real nor imaginary part, so test to see if we actually have a suffix - $validComplex = preg_match('/^([\-\+]?)([ij])$/ui',$complexNumber,$complexParts); - if (!$validComplex) { - throw new Exception('COMPLEX: Invalid complex number'); - } - // We have a suffix, so set the real to 0, the imaginary to either 1 or -1 (as defined by the sign) - $imaginary = 1; - if ($complexParts[1] === '-') { - $imaginary = 0 - $imaginary; - } - return array(0, $imaginary, $complexParts[2]); - } - - // If we don't have an imaginary part, identify whether it should be +1 or -1... - if (($complexParts[4] === '') && ($complexParts[9] !== '')) { - if ($complexParts[7] !== $complexParts[9]) { - $complexParts[4] = 1; - if ($complexParts[8] === '-') { - $complexParts[4] = -1; - } - // ... or if we have only the real and no imaginary part (in which case our real should be the imaginary) - } else { - $complexParts[4] = $complexParts[1]; - $complexParts[1] = 0; - } - } - - // Return real and imaginary parts and suffix as an array, and set a default suffix if user input lazily - return array( $complexParts[1], - $complexParts[4], - !empty($complexParts[9]) ? $complexParts[9] : 'i' - ); - } // function _parseComplex() - - - public function __construct($realPart, $imaginaryPart = null, $suffix = 'i') - { - if ($imaginaryPart === null) { - if (is_array($realPart)) { - // We have an array of (potentially) real and imaginary parts, and any suffix - list ($realPart, $imaginaryPart, $suffix) = array_values($realPart) + array(0.0, 0.0, 'i'); - } elseif((is_string($realPart)) || (is_numeric($realPart))) { - // We've been given a string to parse to extract the real and imaginary parts, and any suffix - list ($realPart, $imaginaryPart, $suffix) = self::_parseComplex($realPart); - } - } - - // Set parsed values in our properties - $this->realPart = (float) $realPart; - $this->imaginaryPart = (float) $imaginaryPart; - $this->suffix = strtolower($suffix); - } - - public function getReal() - { - return $this->realPart; - } - - public function getImaginary() - { - return $this->imaginaryPart; - } - - public function getSuffix() - { - return $this->suffix; - } - - public function __toString() { - $str = ""; - if ($this->imaginaryPart != 0.0) { - if (abs($this->imaginaryPart) != 1.0) { - $str .= $this->imaginaryPart . $this->suffix; - } else { - $str .= (($this->imaginaryPart < 0.0) ? '-' : ''). $this->suffix; - } - } - if ($this->realPart != 0.0) { - if (($str) && ($this->imaginaryPart > 0.0)) - $str = "+" . $str; - $str = $this->realPart . $str; - } - if (!$str) - $str = "0.0"; - return $str; - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/custom/complexAssert.php b/htdocs/includes/phpoffice/phpexcel/unitTests/custom/complexAssert.php deleted file mode 100644 index 5b64e4ced51..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/custom/complexAssert.php +++ /dev/null @@ -1,62 +0,0 @@ -<?php - -include_once dirname(__FILE__).'/Complex.php'; - - -class complexAssert { - - private $_errorMessage = ''; - - public function assertComplexEquals($expected, $actual, $delta = 0) - { - if ($expected{0} === '#') { - // Expecting an error, so we do a straight string comparison - if ($expected === $actual) { - return TRUE; - } - $this->_errorMessage = 'Expected Error: ' . - $actual . ' !== ' . $expected; - return FALSE; - } - - $expectedComplex = new Complex($expected); - $actualComplex = new Complex($actual); - - if (!is_numeric($actualComplex->getReal()) || !is_numeric($expectedComplex->getReal())) { - if ($actualComplex->getReal() !== $expectedComplex->getReal()) { - $this->_errorMessage = 'Mismatched String: ' . - $actualComplex->getReal() . ' !== ' . $expectedComplex->getReal(); - return FALSE; - } - return TRUE; - } - - if ($actualComplex->getReal() < ($expectedComplex->getReal() - $delta) || - $actualComplex->getReal() > ($expectedComplex->getReal() + $delta)) { - $this->_errorMessage = 'Mismatched Real part: ' . - $actualComplex->getReal() . ' != ' . $expectedComplex->getReal(); - return FALSE; - } - - if ($actualComplex->getImaginary() < ($expectedComplex->getImaginary() - $delta) || - $actualComplex->getImaginary() > ($expectedComplex->getImaginary() + $delta)) { - $this->_errorMessage = 'Mismatched Imaginary part: ' . - $actualComplex->getImaginary() . ' != ' . $expectedComplex->getImaginary(); - return FALSE; - } - - if ($actualComplex->getSuffix() !== $actualComplex->getSuffix()) { - $this->_errorMessage = 'Mismatched Suffix: ' . - $actualComplex->getSuffix() . ' != ' . $expectedComplex->getSuffix(); - return FALSE; - } - - return TRUE; - } - - - public function getErrorMessage() { - return $this->_errorMessage; - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/phpunit-cc.xml b/htdocs/includes/phpoffice/phpexcel/unitTests/phpunit-cc.xml deleted file mode 100644 index 7e598cc9ab4..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/phpunit-cc.xml +++ /dev/null @@ -1,40 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<phpunit bootstrap="./bootstrap.php" - backupGlobals="true" - colors="true" - convertErrorsToExceptions="true" - convertNoticesToExceptions="true" - convertWarningsToExceptions="true" - processIsolation="false" - syntaxCheck="true" - verbose="true" - strict="true" - stopOnError="false" - stopOnFailure="false" - stopOnIncomplete="false" - stopOnSkipped="false"> - <php> - <ini name="memory_limit" value="2048M"/> - </php> - <testsuite name="PHPExcel Unit Test Suite"> - <directory suffix="Test.php">./Classes</directory> - </testsuite> - <filter> - <whitelist> - <directory suffix=".php">../Classes</directory> - <exclude> - <directory>../Classes/PHPExcel/Shared/PCLZip</directory> - <directory>../Classes/PHPExcel/Shared/JAMA</directory> - <directory>../Classes/PHPExcel/Writer/PDF</directory> - </exclude> - </whitelist> - </filter> - <logging> - <log type="coverage-html" target="./codeCoverage" charset="UTF-8" - yui="true" highlight="false" - lowUpperBound="35" highLowerBound="70"/> - <log type="coverage-clover" target="./codeCoverage/codeCoverage.xml"/> - <log type="metrics-xml" target="./metrics/metrics.xml"/> - <log type="test-xml" target="./testResults/logfile.xml" logIncompleteSkipped="false"/> - </logging> -</phpunit> diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/phpunit.xml b/htdocs/includes/phpoffice/phpexcel/unitTests/phpunit.xml deleted file mode 100644 index 2c2ff360ae0..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/phpunit.xml +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<phpunit bootstrap="./bootstrap.php" - backupGlobals="true" - colors="true" - convertErrorsToExceptions="true" - convertNoticesToExceptions="true" - convertWarningsToExceptions="true" - processIsolation="false" - syntaxCheck="true" - verbose="true" - strict="true" - stopOnError="false" - stopOnFailure="false" - stopOnIncomplete="false" - stopOnSkipped="false"> - <php> - <ini name="memory_limit" value="2048M"/> - </php> - <testsuite name="PHPExcel Unit Test Suite"> - <directory suffix="Test.php">./Classes</directory> - </testsuite> - <filter> - <whitelist> - <directory suffix=".php">../Classes</directory> - <exclude> - <directory>../Classes/PHPExcel/Shared/PCLZip</directory> - <directory>../Classes/PHPExcel/Shared/JAMA</directory> - <directory>../Classes/PHPExcel/Writer/PDF</directory> - </exclude> - </whitelist> - </filter> -</phpunit> diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/DATE.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/DATE.data deleted file mode 100644 index cdcc776b044..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/DATE.data +++ /dev/null @@ -1,79 +0,0 @@ -# Year Month Day Result Comments -18, 11, 11, 6890 -1900, 1, 1, 1 // Excel 1900 Calendar Base Date -1900, 2, 28, 59 // Day before Excel mythical 1900 leap day -1900, 2, 29, 60 // Excel mythical 1900 leap day -1900, 3, 1, 61 // Day after Excel mythical 1900 leap day -1901, 12, 13, 713 // Day after Excel mythical 1900 leap day -1901, 12, 14, 714 // PHP 32-bit Earliest Date -1903, 12, 31, 1461 -1904, 1, 1, 1462 // Excel 1904 Calendar Base Date -1904, 1, 2, 1463 -1960, 12, 19, 22269 -1970, 1, 1, 25569 // PHP Base Date -1982, 12, 7, 30292 -2008, 6, 12, 39611 -2038, 1, 19, 50424 // PHP 32-bit Latest Date -2038, 1, 20, 50425 // Day after PHP 32-bit Latest Date -2008, 1, 1, 39448 -2008, 1, , 39447 -2008, 1, -1, 39446 -2008, 1, -30, 39417 -2008, 1, -31, 39416 -2008, 1, -365, 39082 -2008, 3, 1, 39508 -2008, 3, , 39507 -2008, 3, -1, 39506 -2008, 3, -365, 39142 -2008, , 1, 39417 -2008, -1, 1, 39387 -2008, -11, 1, 39083 -2008, -12, 1, 39052 -2008, -13, 1, 39022 -2008, -13, 30, 39051 -2008, -13, , 39021 -2008, -13, -30, 38991 -2008, -13, -31, 38990 -2008, 13, 1, 39814 -2007, 15, , 39507 -2008, 26, 1, 40210 -2008, 26, -10, 40199 -2008, -26, 61, 38686 -2010, -15, -50, 39641 -2010, -15, 50, 39741 -2010, 15, -50, 40552 -2010, 15, 50, 40652 -2010, 1.5, 1, 40179 -2010, 1.5, 0, 40178 -2010, 0, 1.5, 40148 -2010, 1, 1.5, 40179 -2012, 6, 15, 41075 -2012, 6, , 41060 -2012, , 15, 40892 -, 6, 15, 167 -10, 6, 15, 3819 -10, , , 3622 -, 10, , 274 -, , 10, "#NUM!" --20, , , "#NUM!" --20, 6, 15, "#NUM!" -9999, 12, 31, 2958465 // Excel Maximum Date -10000, 1, 1, "#NUM!" // Exceeded Excel Maximum Date -2008, 8, 10, 39670 -2008, 12, 31, 39813 -2008, 8, 32, 39692 -2008, 13, 31, 39844 -2009, 1, 0, 39813 -2009, 1, -1, 39812 -2009, 0, 0, 39782 -2009, 0, -1, 39781 -2009, -1, 0, 39752 -2009, -1, -1, 39751 -2010, 0, -1, 40146 -2010, 5, 31, 40329 -2010, 1, '21st', 40199 // MS Excel will fail with a #VALUE return, but PHPExcel can parse this date -2010, "March",'21st', 40258 // MS Excel will fail with a #VALUE return, but PHPExcel can parse this date -2010, "March",21, 40258 // MS Excel will fail with a #VALUE return, but PHPExcel can parse this date -"ABC", 1, 21, "#VALUE!" -2010, "DEF", 21, "#VALUE!" -2010, 3, "GHI", "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/DATEDIF.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/DATEDIF.data deleted file mode 100644 index e8d9e06bfac..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/DATEDIF.data +++ /dev/null @@ -1,96 +0,0 @@ -"ABC", "2007-1-10", "Y", "#VALUE!" -"2007-1-1", "DEF", "Y", "#VALUE!" -"2007-1-1", "2007-1-10", "XYZ", "#VALUE!" -"2007-1-10", "2007-1-1", "Y", "#NUM!" -"2007-12-31", "2008-1-10", "Y", 0 -"2007-1-1", "2007-1-10", "Y", 0 -"2007-1-1", "2007-1-10", "M", 0 -"2007-1-1", "2007-1-10", "D", 9 -"2007-1-1", "2007-1-10", "YM", 0 -"2007-1-1", "2007-1-10", "YD", 9 -"2007-1-1", "2007-1-10", "MD", 9 -"2007-1-1", "2007-12-31", "Y", 0 -"2007-1-1", "2007-12-31", "M", 11 -"2007-1-1", "2007-12-31", "D", 364 -"2007-1-1", "2007-12-31", "YM", 11 -"2007-1-1", "2007-12-31", "YD", 364 -"2007-1-1", "2007-12-31", "MD", 30 -"2007-1-1", "2008-7-1", "Y", 1 -"2007-1-1", "2008-7-1", "M", 18 -"2007-1-1", "2008-7-1", "D", 547 -"2007-1-1", "2008-7-1", "YM", 6 -"2007-1-1", "2008-7-1", "YD", 181 -"2007-1-1", "2008-7-1", "MD", 0 -"2007-1-1", "2007-1-31", "Y", 0 -"2007-1-1", "2007-1-31", "M", 0 -"2007-1-1", "2007-1-31", "D", 30 -"2007-1-1", "2007-1-31", "YM", 0 -"2007-1-1", "2007-1-31", "YD", 30 -"2007-1-1", "2007-1-31", "MD", 30 -"2007-1-1", "2007-2-1", "Y", 0 -"2007-1-1", "2007-2-1", "M", 1 -"2007-1-1", "2007-2-1", "D", 31 -"2007-1-1", "2007-2-1", "YM", 1 -"2007-1-1", "2007-2-1", "YD", 31 -"2007-1-1", "2007-2-1", "MD", 0 -"2007-1-1", "2007-2-28", "Y", 0 -"2007-1-1", "2007-2-28", "M", 1 -"2007-1-1", "2007-2-28", "D", 58 -"2007-1-1", "2007-2-28", "YM", 1 -"2007-1-1", "2007-2-28", "YD", 58 -"2007-1-1", "2007-2-28", "MD", 27 -"2007-1-31", "2007-2-1", "Y", 0 -"2007-1-31", "2007-2-1", "M", 0 -"2007-1-31", "2007-2-1", "D", 1 -"2007-1-31", "2007-2-1", "YM", 0 -"2007-1-31", "2007-2-1", "YD", 1 -"2007-1-31", "2007-2-1", "MD", 1 -"2007-1-31", "2007-3-1", "Y", 0 -"2007-1-31", "2007-3-1", "M", 1 -"2007-1-31", "2007-3-1", "D", 29 -"2007-1-31", "2007-3-1", "YM", 1 -"2007-1-31", "2007-3-1", "YD", 29 -"2007-1-31", "2007-3-1", "MD", -2 -"2007-1-31", "2007-3-31", "Y", 0 -"2007-1-31", "2007-3-31", "M", 2 -"2007-1-31", "2007-3-31", "D", 59 -"2007-1-31", "2007-3-31", "YM", 2 -"2007-1-31", "2007-3-31", "YD", 59 -"2007-1-31", "2007-3-31", "MD", 0 -"2008-1-1", "2008-9-1", "Y", 0 -"2008-1-1", "2008-9-1", "M", 8 -"2008-1-1", "2008-9-1", "D", 244 -"2008-1-1", "2008-9-1", "YM", 8 -"2008-1-1", "2008-9-1", "YD", 244 -"2008-1-1", "2008-9-1", "MD", 0 -"2007-2-1", "2008-4-1", "Y", 1 -"2007-2-1", "2008-4-1", "M", 14 -"2007-2-1", "2008-4-1", "D", 425 -"2007-2-1", "2008-4-1", "YM", 2 -"2007-2-1", "2008-4-1", "YD", 59 -"2007-2-1", "2008-4-1", "MD", 0 -"1960-12-19", "2008-6-28", "Y", 47 -"1960-12-19", "2008-6-28", "M", 570 -"1960-12-19", "2008-6-28", "D", 17358 -"1960-12-19", "2008-6-28", "YM", 6 -"1960-12-19", "2008-6-28", "YD", 191 -"1960-12-19", "2008-6-28", "MD", 9 -"1982-12-7", "2008-6-28", "Y", 25 -"1982-12-7", "2008-6-28", "M", 306 -"1982-12-7", "2008-6-28", "D", 9335 -"1982-12-7", "2008-6-28", "YM", 6 -"1982-12-7", "2008-6-28", "YD", 203 -"1982-12-7", "2008-6-28", "MD", 21 -"2007-12-25", "2010-3-17", "Y", 2 -"2007-12-25", "2010-3-17", "M", 26 -"2007-12-25", "2010-3-17", "D", 813 -"2007-12-25", "2010-3-17", "YM", 2 -"2007-12-25", "2010-3-17", "YD", 82 -"2007-12-25", "2010-3-17", "MD", 20 -"19-12-1960", "26-01-2012" "Y", 51 -"19-12-1960", "26-01-2012" "M", 613 -"19-12-1960", "26-01-2012" "D", 18665 -"19-12-1960", "26-01-2012" "YM", 1 -"19-12-1960", "26-01-2012" "YD", 38 -"19-12-1960", "26-01-2012" "MD", 7 -"19-12-1960", "12-12-2012" "Y", 50 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/DATEVALUE.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/DATEVALUE.data deleted file mode 100644 index f4b0f68e369..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/DATEVALUE.data +++ /dev/null @@ -1,66 +0,0 @@ -# Date String Result -"25-Dec-1899", "#VALUE!" -"31-Dec-1899", "#VALUE!" -"1-Jan-1900", 1 -"1900/2/28", 59 -"29-02-1900", 60 -"29th February 1900", 60 // MS Excel will fail with a #VALUE return, but PHPExcel can parse this date -"1900/3/1", 61 -"13-12-1901", 713 -"14-12-1901", 714 -"1903/12/31", 1461 -"1-Jan-1904", 1462 -"2nd-Jan-1904", 1463 // MS Excel will fail with a #VALUE return, but PHPExcel can parse this date -"19-12-1960", 22269 -"1st January 1970", 25569 // MS Excel will fail with a #VALUE return, but PHPExcel can parse this date -"7-Dec-1982", 30292 -"1-1-2008", 39448 -"2038-01-19", 50424 -"2-6-2008", 39601 -"December 25th 2008", 39807 // MS Excel will fail with a #VALUE return, but PHPExcel can parse this date -"1 Jan-2008", 39448 -"12-31-2008", 39813 // MS Excel success or failure dependent on country settings -"31-12-2008", 39813 // PHPExcel tries to handle both US and UK formats, irrespective of country settings -"8/22/2008", 39682 // MS Excel success or failure dependent on country settings -"22/8/2008", 39682 // PHPExcel tries to handle both US and UK formats, irrespective of country settings -"22/8/08", 39682 -"22-AUG-2008", 39682 -"2008/02/23", 39501 -"6-7-2008", 39635 -"28-2-2007", 39141 // MS Excel success or failure dependent on country settings -"2-28-2007", 39141 // PHPExcel tries to handle both US and UK formats, irrespective of country settings -"29-2-2007", "#VALUE!" // Should fail because it's an invalid date, but PHPExcel currently adjusts to 1-3-2007 - FIX NEEDED -"1/1/1999", 36161 -"1954-07-20", 19925 -"22 August 98", 36029 -"1st March 2007", 39142 // MS Excel will fail with a #VALUE return, but PHPExcel can parse this date -"The 1st day of March 2007", "#VALUE!" -"1 Jan", 41275 -"31/12", 41639 -"12/31", 11658 // Excel reads as 1st December 1931, not 31st December in current year -"5-JUL", 41460 -"5 Jul", 41460 -"12/2008", 39783 -"10/32", 11963 -11, "#VALUE!" -TRUE, "#VALUE!" -FALSE, "#VALUE!" -1, "#VALUE!" -12345, "#VALUE!" -12, "#VALUE!" -"12-Feb-2010", 40221 -"Feb-12-2010", 40221 // MS Excel will fail with a #VALUE return, but PHPExcel can parse this date -"February-12-2010", 40221 // MS Excel will fail with a #VALUE return, but PHPExcel can parse this date -"February 12 2010", 40221 // MS Excel will fail with a #VALUE return, but PHPExcel can parse this date -"18 Feb 2010", 40227 -"17th 3rd 2010", 40254 // MS Excel will fail with a #VALUE return, but PHPExcel can parse this date -"Feb 18th 2010", 40227 // MS Excel will fail with a #VALUE return, but PHPExcel can parse this date -"1st Feb 2010", 40210 // MS Excel will fail with a #VALUE return, but PHPExcel can parse this date -"1st-Feb-2010", 40210 // MS Excel will fail with a #VALUE return, but PHPExcel can parse this date -"1me Fev 2010", "#VALUE!" -"February 1st 2010", 40210 // MS Excel will fail with a #VALUE return, but PHPExcel can parse this date -"2nd Feb 2010", 40211 // MS Excel will fail with a #VALUE return, but PHPExcel can parse this date -"Second Feb 2010", "#VALUE!" -"First August 2010", "#VALUE!" -"1st August 2010", 40391 // MS Excel will fail with a #VALUE return, but PHPExcel can parse this date -"15:30:25", 0 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/DAY.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/DAY.data deleted file mode 100644 index bde1e8b5e11..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/DAY.data +++ /dev/null @@ -1,8 +0,0 @@ -# Date Value Result -22269, 19 -30348, 1 -30843, 10 -"11-Nov-1918", 11 -"28-Feb-1904", 28 -"Invalid", "#VALUE!" --1, "#NUM!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/DAYS360.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/DAYS360.data deleted file mode 100644 index c7abb61285b..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/DAYS360.data +++ /dev/null @@ -1,34 +0,0 @@ -"ABC", "2007-1-10", FALSE, "#VALUE!" -"2007-1-1", "DEF", TRUE, "#VALUE!" -"2007-1-1", "2007-1-10", "XYZ", "#VALUE!" -"2007-1-10", "2007-1-1", "Y", "#VALUE!" -"2007-1-1", "2007-1-10", FALSE, 9 -"2007-1-1", "2007-1-10", TRUE, 9 -"2007-1-1", "2007-12-31", FALSE, 360 -"2007-1-1", "2007-12-31", TRUE, 359 -"2007-1-1", "2008-7-1", FALSE, 540 -"2007-1-1", "2008-7-1", TRUE, 540 -"2007-1-1", "2007-1-31", FALSE, 30 -"2007-1-1", "2007-1-31", TRUE, 29 -"2007-1-1", "2007-2-1", FALSE, 30 -"2007-1-1", "2007-2-1", TRUE, 30 -"2007-1-1", "2007-2-28", FALSE, 57 -"2007-1-1", "2007-2-28", TRUE, 57 -"2007-1-31", "2007-2-1", FALSE, 1 -"2007-1-31", "2007-2-1", TRUE, 1 -"2007-1-31", "2007-3-1", FALSE, 31 -"2007-1-31", "2007-3-1", TRUE, 31 -"2007-1-31", "2007-3-31", FALSE, 60 -"2007-1-31", "2007-3-31", TRUE, 60 -"2008-1-1", "2008-9-1", FALSE, 240 -"2008-1-1", "2008-9-1", TRUE, 240 -"2007-2-1", "2008-4-1", FALSE, 420 -"2007-2-1", "2008-4-1", TRUE, 420 -"1960-12-19", "2008-6-28", FALSE, 17109 -"1960-12-19", "2008-6-28", TRUE, 17109 -"1982-12-7", "2008-6-28", FALSE, 9201 -"1982-12-7", "2008-6-28", TRUE, 9201 -"2000-2-28", "2000-3-31", FALSE, 33 -"2000-2-28", "2000-3-31", TRUE, 32 -"2000-2-29", "2000-3-31", FALSE, 30 -"2000-2-29", "2000-3-31", TRUE, 31 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/EDATE.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/EDATE.data deleted file mode 100644 index b7b13e09e31..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/EDATE.data +++ /dev/null @@ -1,15 +0,0 @@ -"15-Jan-2008", 1, 39493 -"15-Jan-2008", -1, 39431 -"15-Jan-2008", 2, 39522 -"31-Mar-2007", 1, 39202 -"31-Mar-2007", -1, 39141 -"31-Mar-2008", -1, 39507 -"31-Mar-2008", -4, 39416 -"29-Feb-2008", -12, 39141 -"15-Mar-2007", 3, 39248 -22269.0, 0, 22269 -22269.0, 2, 22331 -22269.0, 110, 25618 -22269.0, -110, 18920 -"15-Mar-2007", "ABC", "#VALUE!" -"Invalid", 12, "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/EOMONTH.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/EOMONTH.data deleted file mode 100644 index 130a769c78d..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/EOMONTH.data +++ /dev/null @@ -1,17 +0,0 @@ -"15-Jan-2008", 1, 39507 -"15-Jan-2008", -1, 39447 -"15-Jan-2008", 2, 39538 -"31-Mar-2007", 1, 39202 -"31-Mar-2007", -1, 39141 -"31-Mar-2008", -1, 39507 -"31-Mar-2008", -4, 39416 -"29-Feb-2008", -12, 39141 -"15-Mar-2007", 3, 39263 -22269.0, 0, 22281 -22269.0, 2, 22340 -22269.0, 110, 25627 -22269.0, -110, 18932 -22269.0, 3, 22371 -22269.0, 3.75, 22371 -"15-Mar-2007", "ABC", "#VALUE!" -"Invalid", 12, "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/HOUR.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/HOUR.data deleted file mode 100644 index c07d0dccd1e..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/HOUR.data +++ /dev/null @@ -1,12 +0,0 @@ -0.25, 6 -0.75, 18 -0.5, 12 -0.6, 14 -"11-Nov-1918 11:11", 11 -"11:59 PM", 23 -"23:59:59", 23 -3600, 2 --3600, 0 -7200, 3 -65535, 19 -"1 O'Clock", "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/MINUTE.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/MINUTE.data deleted file mode 100644 index 2931c750095..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/MINUTE.data +++ /dev/null @@ -1,12 +0,0 @@ -0.2, 48 -0.4, 36 -0.6, 24 -0.8, 12 -"11-Nov-1918 11:15", 15 -"11:59 PM", 59 -"23:59:59", 59 -3600, 0 --3600, 0 -12500, 28 -65535, 12 -"Half past 1 O'Clock", "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/MONTH.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/MONTH.data deleted file mode 100644 index 6336ffdabb3..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/MONTH.data +++ /dev/null @@ -1,12 +0,0 @@ -, 1 -0, 1 -22269.0, 12 -30348.0, 2 -30843.0, 6 -"11-Nov-1918", 11 -"28-Feb-1904", 2 -"01 Jul 2003", 7 -38094, 4 -"Dec 2003", 12 --10, "#NUM!" -"ABCD", "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/NETWORKDAYS.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/NETWORKDAYS.data deleted file mode 100644 index 70034bfd793..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/NETWORKDAYS.data +++ /dev/null @@ -1,18 +0,0 @@ -"1-Jan-2007", "10-Jan-2007", 8 -"18-Jun-2008", "20-Jun-2008", 3 -"16-Jun-2008", "20-Jun-2008", 5 -"14-Jun-2008", "20-Jun-2008", 5 -"20-Jun-2008", "20-Jun-2008", 1 -"21-Jun-2008", "21-Jun-2008", 0 -"20-Jun-2008", "20-Jun-2008", "20-Jun-2008", 0 -"20-Jun-2008", "20-Jun-2008", "20-Jun-2008", "20-Jun-2008", 0 -"14-Jun-2008", "25-Jun-2008", 8 -"19-Dec-1960", "10-Jan-1961", 17 -"10-Jan-1961", "19-Dec-1960", -17 -"19-Dec-1960", "10-Jan-1961", "25-Dec-1960", "26-Dec-1960", "01-Jan-1961", 16 -"10-Jan-1961", "19-Dec-1960", "25-Dec-1960", "26-Dec-1960", "01-Jan-1961", -16 -"1-Jan-2007", "31-Mar-2007", 65 -"1-Jan-2007", "31-Jan-2007", 23 -"1-Jan-2007", "1-Feb-2007", 24 -"1-Jan-2007", "28-Feb-2007", 43 -"31-Jan-2007", "1-Feb-2007", 2 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/SECOND.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/SECOND.data deleted file mode 100644 index 14a8d3a5990..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/SECOND.data +++ /dev/null @@ -1,12 +0,0 @@ -0.2339930556, 57 -0.4202893519, 13 -0.6078935185, 22 -0.8022106481, 11 -"11-Nov-1918 11:15:35", 35 -"11:59 PM", 0 -"23:59:59", 59 -3600, 0 --3601, 59 -12500, 20 -65535, 15 -"Half past 1 O'Clock", "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/TIME.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/TIME.data deleted file mode 100644 index 46d0b9ac07e..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/TIME.data +++ /dev/null @@ -1,22 +0,0 @@ -18, 11, 11, 0.757766203704 -6, 15, 5, 0.260474537037 -12, 30, 10, 0.520949074074 -18, 45, 25, 0.781539351852 -15, 32, 50, 0.647800925926 -12, , 61, 0.500706018519 -11, , -1, 0.458321759259 -10, , -67, 0.415891203704 -13, 62, 5, 0.584780092593 -9, -80, 17, 0.319641203704 -8, -162, , 0.220833333333 -2, -120, -1, "#NUM!" -2, -120, , 0.000000000000 -2, -120, 1, 0.000011574074 -36, 1, 2, 0.500717592593 --1, 2, 3, "#NUM!" --1, 61, 29, 0.001030092593 --1, 61, -60, 0.000000000000 -"A", , , "#VALUE!" -11, 59, 0, 0.499305555556 -12, 0, 0, 0.500000000000 -16, 48, 10, 0.700115740741 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/TIMEVALUE.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/TIMEVALUE.data deleted file mode 100644 index 457de24e37c..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/TIMEVALUE.data +++ /dev/null @@ -1,13 +0,0 @@ -"12:00:00 am", 0 -"12:01:02 am", 0.000717593 -"12:03 pm", 0.502083333 -"12:7:11 pm", 0.504988426 -"4:13:39", 0.176145833 -"6:20:17 pm", 0.764085648 -"18:33:27", 0.773229167 -"31/12/2007 03:27:15", 0.143923611 -"9:44:55 pm", 0.90619213 -12, "#VALUE!" -"13:01", 0.542361111 -"33:45", 0.40625 -"13:01PM", "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/WEEKDAY.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/WEEKDAY.data deleted file mode 100644 index ca2e11f7b32..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/WEEKDAY.data +++ /dev/null @@ -1,27 +0,0 @@ -"24-Oct-1968", 5 -"24-Oct-1968", 2, 4 -"24-Oct-1968", 3, 3 -"2000-06-14", 4 -"2000-06-14", 2, 3 -"2000-06-14", 3, 2 -"1996-07-24", 4 -"1996-07-24", 2, 3 -"1996-07-24", 3, 2 -"1996-07-27", 7 -"1996-07-27", 2, 6 -"1996-07-27", 3, 5 -"1977-7-31", 1 -"1977-7-31", 2, 7 -"1977-7-31", 3, 6 -"1977-8-1", 2 -"1977-8-1", 2, 1 -"1977-8-1", 3, 0 -"1900-2-5", 2, 7 -"1900-2-1", 1 -38093, 6 -38093, 2, 5 -38093, 3, 4 -"3/7/1977", "A", "#VALUE!" -"3/7/1977", 0, "#NUM!" -"Invalid", 1, "#VALUE!" --1, "#NUM!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/WEEKNUM.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/WEEKNUM.data deleted file mode 100644 index 22a01a74c52..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/WEEKNUM.data +++ /dev/null @@ -1,7 +0,0 @@ -"21-Dec-2000", 1, 52 -"1995-01-01", 1, 1 -"3/7/1977", 27 -"3/7/1977", "A", "#VALUE!" -"3/7/1977", 0, "#NUM!" -"Invalid", 1, "#VALUE!" --1, "#NUM!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/WORKDAY.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/WORKDAY.data deleted file mode 100644 index 1070898b248..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/WORKDAY.data +++ /dev/null @@ -1,13 +0,0 @@ -"1-Jan-2007", "ABC", "#VALUE!" -"1-Jan-2007", 9, 39094 -"18-Jun-2008", 2, 39619 -"16-Jun-2008", 4, 39619 -"14-Jun-2008", 6, 39622 -"14-Jun-2008", 11, 39629 -"14-Jun-2008", -2, 39611 -"14-Jun-2008", -6, 39605 -"19-Dec-2008", 10, 39815 -"19-Dec-2008", 10, "25-Dec-2008", "26-Dec-2008", "01-Jan-2009", 39820 -"19-Dec-2008", 10, {"25-Dec-2008"|"26-Dec-2008"|"01-Jan-2009"}, 39820 -39820, -10, {"25-Dec-2008"|"26-Dec-2008"|"01-Jan-2009"}, 39801 -"5-Apr-2012", 3, {"6-Apr-2012"|"9-Apr-2012"}, 41010 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/YEAR.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/YEAR.data deleted file mode 100644 index fe35f1b4a36..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/YEAR.data +++ /dev/null @@ -1,11 +0,0 @@ -, 1900 -1, 1900 -33333.33, 1991 -22269.0, 1960 -30348.0, 1983 -30843.0, 1984 -"01 Jan 2525", 2525 -"11-Nov-1918", 1918 -"28-Feb-1904", 1904 --10, "#NUM!" -"ABCD", "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/YEARFRAC.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/YEARFRAC.data deleted file mode 100644 index 3fc5827728a..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/YEARFRAC.data +++ /dev/null @@ -1,65 +0,0 @@ -"2007-1-1", "2007-1-10", 0, 0.025 -"2007-1-1", "2007-1-10", 1, 0.02465753424658 -"2007-1-1", "2007-1-10", 2, 0.025 -"2007-1-1", "2007-1-10", 3, 0.02465753424658 -"2007-1-1", "2007-1-10", 4, 0.025 -"2007-1-1", "2007-12-31", 0, 1.0 -"2007-1-1", "2007-12-31", 1, 0.99726027397260 -"2007-1-1", "2007-12-31", 2, 1.01111111111111 -"2007-1-1", "2007-12-31", 3, 0.99726027397260 -"2007-1-1", "2007-12-31", 4, 0.99722222222222 -"2007-1-1", "2008-7-1", 0, 1.5 -"2007-1-1", "2008-7-1", 1, 1.49658002735978 -"2007-1-1", "2008-7-1", 2, 1.51944444444444 -"2007-1-1", "2008-7-1", 3, 1.49863013698630 -"2007-1-1", "2008-7-1", 4, 1.5 -"2007-1-1", "2007-1-31", 0, 0.08333333333333 -"2007-1-1", "2007-1-31", 1, 0.08219178082192 -"2007-1-1", "2007-1-31", 2, 0.08333333333333 -"2007-1-1", "2007-1-31", 3, 0.08219178082192 -"2007-1-1", "2007-1-31", 4, 0.08055555555556 -"2007-1-1", "2007-2-1", 0, 0.08333333333333 -"2007-1-1", "2007-2-1", 1, 0.08493150684932 -"2007-1-1", "2007-2-1", 2, 0.08611111111111 -"2007-1-1", "2007-2-1", 3, 0.08493150684932 -"2007-1-1", "2007-2-1", 4, 0.08333333333333 -"2007-1-1", "2007-2-28", 0, 0.15833333333333 -"2007-1-1", "2007-2-28", 1, 0.15890410958904 -"2007-1-1", "2007-2-28", 2, 0.16111111111111 -"2007-1-1", "2007-2-28", 3, 0.15890410958904 -"2007-1-1", "2007-2-28", 4, 0.15833333333333 -"2007-1-31", "2007-2-1", 0, 0.00277777777778 -"2007-1-31", "2007-2-1", 1, 0.00273972602740 -"2007-1-31", "2007-2-1", 2, 0.00277777777778 -"2007-1-31", "2007-2-1", 3, 0.00273972602740 -"2007-1-31", "2007-2-1", 4, 0.00277777777778 -"2007-1-31", "2007-3-1", 0, 0.08611111111111 -"2007-1-31", "2007-3-1", 1, 0.07945205479452 -"2007-1-31", "2007-3-1", 2, 0.08055555555556 -"2007-1-31", "2007-3-1", 3, 0.07945205479452 -"2007-1-31", "2007-3-1", 4, 0.08611111111111 -"2007-1-31", "2007-3-31", 0, 0.16666666666667 -"2007-1-31", "2007-3-31", 1, 0.16164383561644 -"2007-1-31", "2007-3-31", 2, 0.16388888888889 -"2007-1-31", "2007-3-31", 3, 0.16164383561644 -"2007-1-31", "2007-3-31", 4, 0.16666666666667 -"2008-1-1", "2008-9-1", 0, 0.66666666666667 -"2008-1-1", "2008-9-1", 1, 0.66666666666667 -"2008-1-1", "2008-9-1", 2, 0.67777777777778 -"2008-1-1", "2008-9-1", 3, 0.66849315068493 -"2008-1-1", "2008-9-1", 4, 0.66666666666667 -"2007-2-1", "2008-4-1", 0, 1.16666666666667 -"2007-2-1", "2008-4-1", 1, 1.16279069767442 -"2007-2-1", "2008-4-1", 2, 1.18055555555556 -"2007-2-1", "2008-4-1", 3, 1.16438356164384 -"2007-2-1", "2008-4-1", 4, 1.16666666666667 -"1960-12-19", "2008-6-28", 0, 47.525 -"1960-12-19", "2008-6-28", 1, 47.52162252765670 -"1960-12-19", "2008-6-28", 2, 48.21666666666670 -"1960-12-19", "2008-6-28", 3, 47.55616438356160 -"1960-12-19", "2008-6-28", 4, 47.525 -"1982-12-7", "2008-6-28", 0, 25.55833333333330 -"1982-12-7", "2008-6-28", 1, 25.55718921111340 -"1982-12-7", "2008-6-28", 2, 25.93055555555560 -"1982-12-7", "2008-6-28", 3, 25.57534246575340 -"1982-12-7", "2008-6-28", 4, 25.55833333333330 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/BESSELI.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/BESSELI.data deleted file mode 100644 index bab50c698e5..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/BESSELI.data +++ /dev/null @@ -1,59 +0,0 @@ -1.5, -1, "#NUM!" --1, 6, 2.2488660949282200E-05 -0, 3, 0.0 -3, 0, 4.8807925650332900 -1, 5, 2.7146314958504900E-04 -1.5, 1, 9.8166642847516600E-01 --1.5, 2.5, 3.3783462087443800E-01 --1.5, 14.99, 2.1218581758012900E-13 -1, 30, 3.5395005050254700E-42 -2.5, 1, 2.5167162420253600 -2.5, 1.5, 2.5167162420253600 --2.5, 1.5, -2.5167162420253600 -3.5, 1, 6.2058349320630000 -0.7, 3, 7.3673733669342700E-03 -3.5, 2, 3.8320120716293600 -35, 2, 1.0129348967887200E+14 --35, 2, 1.0129348967887200E+14 --35, 3, -9.4217724797020600E+13 --35, 4, 8.5141821583727800E+13 -1.5, "XYZ", "#VALUE!" -"ABC", 3, "#VALUE!" --9, 1, -1.0309147086534900E+03 --3.5, 1, -6.2058349320630000 --0.735, 1, -3.9288151661176300E-01 -0, 1, 0.0 -0.035, 1, 1.7502679823335300E-02 -1, 1, 5.6515909758194300E-01 -1.5, 1, 9.8166642847516600E-01 -2.5, 1, 2.5167162420253600 -3.5, 1, 6.2058349320630000 --9, 2, 8.6449622063929800E+02 --3.5, 2, 3.8320120716293600 --0.735, 2, 7.0619941066585700E-02 -0, 2, 0.0 -0.035, 2, 1.5314063208086000E-04 -0.9, 2, 1.0825972222234100E-01 -1, 2, 1.3574766658069900E-01 -1.9, 2, 6.0327243548745000E-01 -2.5, 2, 1.2764661588156100 -3.5, 2, 3.8320120716293600 -4, 2, 6.4221894991960900 -0.035, 3, 8.9329755645604500E-07 -0.7, 3, 7.3673733669342700E-03 -0.89, 3, 1.5428502532466100E-02 -4, 3, 3.3372758428109200 -4, 5, 5.0472437285149600E-01 -1.5, 7, 2.8406417355214300E-05 -3, 9, 1.3237298826652200E-04 --3.5, 0, 7.3782034775718600 --1.5, 0, 1.6467232021476800 -0, 0, 1.0 -1, 0, 1.2660658480342600 -1.5, 0, 1.6467232021476800 -2.5, 0, 3.2898391723912900 -3.5, 0, 7.3782034775718600 --3.5, -1, "#NUM!" -TRUE, 1, "#VALUE!" -1, TRUE, "#VALUE!" -21, 2, 1.0477785626593200E+08 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/BESSELJ.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/BESSELJ.data deleted file mode 100644 index e84f16e6dfc..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/BESSELJ.data +++ /dev/null @@ -1,37 +0,0 @@ -1.5, -1, "#NUM!" -0, 1, 0.0 -1, 1, 4.4005058567713000E-01 -1, 5, 2.4975773021123400E-04 -1.9, 2, 3.2992582866978500E-01 --2.5, 1.5, -4.9709410250442200E-01 -3.5, 1, 1.3737752717818600E-01 -0.89, 3, 1.3974004027880800E-02 -3.5, 2, 4.5862918476829000E-01 -35, 2, 1.2935945082689100E-01 --35, 2, 1.2935945082689100E-01 --35, 3, 2.9207004782372000E-02 --35, 4, -1.3436636593244100E-01 -1.5, "XYZ", "#VALUE!" -"ABC", 3, "#VALUE!" --3.5, 1, -1.3737752717818600E-01 --0.735, 1, -3.4323577520309400E-01 -0, 1, 0.0 -0.035, 1, 1.7497320451918700E-02 -1.5, 1, 5.5793650789080400E-01 -2.5, 1, 4.9709410250442200E-01 -3.5, 1, 1.3737752717818600E-01 --9, 2, 1.4484636919412800E-01 --0.735, 2, 6.4538955636373900E-02 -0, 2, 0.0 -0.9, 2, 9.4586304292255000E-02 -1.9, 2, 3.2992582866978500E-01 -0.035, 2, 1.5310936908796500E-04 -3.5, 2, 4.5862918476829000E-01 -4, 2, 3.6412814319431200E-01 -0.035, 3, 8.9316078090293600E-07 -0.7, 3, 6.9296548267509400E-03 -0.89, 3, 1.3974004027880800E-02 -4, 3, 4.3017147115339600E-01 -4, 5, 1.3208665605594800E-01 -1.5, 7, 2.4679795788287900E-05 -3, 9, 8.4395021309091800E-05 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/BESSELK.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/BESSELK.data deleted file mode 100644 index fce3a78d672..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/BESSELK.data +++ /dev/null @@ -1,38 +0,0 @@ -1.5, -1, "#NUM!" -0, 2, "#NUM!" -0.1, 3, 7.9900124326586500E+03 -1, 0, 4.2102442108341800E-01 -1.5, 0, 2.1380556932365400E-01 --1.5, 2, "#NUM!" -1.5, 1, 2.7738780363225900E-01 -1.5, 2, 5.8365597416666600E-01 -2.3, 1.5, 9.4982447142959400E-02 -2.5, 1, 7.3890815650266900E-02 -3.5, 1, 2.2239393224640700E-02 -3.5, 3, 5.9161817991348200E-02 -3, 9, 3.9795880106238500E+02 -3.5, 2, 3.2307121670869000E-02 -1.5, "XYZ", "#VALUE!" -"ABC", 3, "#VALUE!" --3.5, 1, "#NUM!" --0.735, 1, "#NUM!" -0, 1, "#NUM!" -0.035, 1, 2.8501970000186900E+01 -1.5, 1, 2.7738780363225900E-01 -2.5, 1, 7.3890815650266900E-02 -3.5, 1, 2.2239393224640700E-02 --9, 2, "#NUM!" --0.735, 2, "#NUM!" -0, 2, "#NUM!" -0.9, 2, 2.0790271301014400 -1.9, 2, 2.9690930137427500E-01 -0.035, 2, 1.6321537072931900E+03 -3.5, 2, 3.2307121670869000E-02 -4, 2, 1.7401425543547400E-02 -0.035, 3, 1.8656035423207900E+05 -0.7, 3, 2.1972168909566600E+01 -0.89, 3, 1.0317473075007600E+01 -4, 3, 2.9884924431707800E-02 -4, 5, 1.5434254881392600E-01 -1.5, 7, 2.4577004526116700E+03 -3, 9, 3.9795880106238500E+02 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/BESSELY.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/BESSELY.data deleted file mode 100644 index 2247f4ecf42..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/BESSELY.data +++ /dev/null @@ -1,37 +0,0 @@ -1.5, -1, "#NUM!" -1.23, 45.67, -2.7027311261175000E+63 -2.5, 0, 4.9807035844668900E-01 -2.5, 1, 1.4591813750831300E-01 -2.5, 2, -3.8133584844003800E-01 -3.5, 1, 4.1018841662769800E-01 -3.5, 3, -3.5833534643622900E-01 -4, 2, 2.1590359910699000E-01 -3.5, 2, 4.5371436417535000E-02 -12.5, 0, -1.7121430684466900E-01 -12.5, 1, -1.5383825635163900E-01 -12.5, 2, 1.4660018586805400E-01 -12.5, 22, -3.5760343503878700E+02 -1.5, "XYZ", "#VALUE!" -"ABC", 3, "#VALUE!" --3.5, 1, "#NUM!" --0.735, 1, "#NUM!" -0, 1, "#NUM!" -0.035, 1, -1.8233338940000000E+01 -1.5, 1, -4.1230862700000000E-01 -2.5, 1, 1.4591813800000000E-01 -3.5, 1, 4.1018841700000000E-01 --9, 2, "#NUM!" --0.735, 2, "#NUM!" -0, 2, "#NUM!" -0.9, 2, -1.9459096070000000 -1.9, 2, -6.6987867400000000E-01 -0.035, 2, -1.0396979410000000E+03 -3.5, 2, 4.5371436000000000E-02 -4, 2, 2.1590359900000000E-01 -0.035, 3, -1.1880438840000000E+05 -0.7, 3, -1.5819479070000000E+01 -0.89, 3, -8.0204412520000000 -4, 3, -1.8202211000000000E-01 -4, 5, -7.9585141800000000E-01 -1.5, 7, -1.8873970340000000E+03 -3, 9, -4.4495950710000000E+02 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/BIN2DEC.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/BIN2DEC.data deleted file mode 100644 index 04365fcae3f..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/BIN2DEC.data +++ /dev/null @@ -1,10 +0,0 @@ -"10110010", "178" -"1100100", "100" -"111001010101", "#NUM!" // Too large -"101", "5" -"10", "2" -"0", "0" -"21", "#NUM!" // Invalid binary number -TRUE, "#VALUE!" // Non string -"1110010101", "-107" // 2's Complement -"1111111111", "-1" // 2's Complement diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/BIN2HEX.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/BIN2HEX.data deleted file mode 100644 index 7f7198e6587..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/BIN2HEX.data +++ /dev/null @@ -1,14 +0,0 @@ -"10110010", "B2" -"111001010101", "#NUM!" // Too large -"11111011", 4, "00FB" // Leading places -"11111011", 3.75, "0FB" // Leading places as a float -"11111011", -1, "#NUM!" // Leading places negative -"11111011", "ABC", "#VALUE!" // Leading places non-numeric -"1110", "E" -"101", "5" -"10", "2" -"0", "0" -"21", "#NUM!" // Invalid binary number -TRUE, "#VALUE!" // Non string -"1110010101", "FFFFFFFF95" // 2's Complement -"1111111111", "FFFFFFFFFF" // 2's Complement diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/BIN2OCT.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/BIN2OCT.data deleted file mode 100644 index 3971654b368..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/BIN2OCT.data +++ /dev/null @@ -1,15 +0,0 @@ -"1100100", "144" -"10110010", "262" -"111001010101", "#NUM!" // Too large -"1001", 3, "011" // Leading places -"1001", 4.75, "0011" // Leading places as a float -"1001", -1, "#NUM!" // Leading places negative -"1001", "ABC", "#VALUE!" // Leading places non-numeric -"00000010", "2" -"00000101", "5" -"00001101", "15" -"0", "0" -"21", "#NUM!" // Invalid binary number -TRUE, "#VALUE!" // Non string -"1110010101", "7777777625" // 2's Complement -"1111111111", "7777777777" // 2's Complement diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/COMPLEX.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/COMPLEX.data deleted file mode 100644 index 980b53bf8a3..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/COMPLEX.data +++ /dev/null @@ -1,547 +0,0 @@ -3, 4, "3+4i" -3, 4, "j", "3+4j" -12.34, 5.67, "j", "12.34+5.67j" -3.5, "A", "#VALUE!" -1.234E-5, 6.78E9, "1.234E-5+6780000000i" -1.234E5, 6.78E-9, "123400+6.78E-9i" -3.5, 2.5, "3.5+2.5i" -3.5, 1, "3.5+i" -3.5, 0, 3.5 -3.5, -1, "3.5-i" -3.5, -2.5, "3.5-2.5i" -1, 2.5, "1+2.5i" -1, 1, "1+i" -1, 0, 1 -1, -1, "1-i" -1, -2.5, "1-2.5i" -0, 2.5, "2.5i" -0, 1, "i" -0, 0, 0 -0, -1, "-i" -0, -2.5, "-2.5i" --1, 2.5, "-1+2.5i" --1, 1, "-1+i" --1, 0, -1 --1, -1, "-1-i" --1, -2.5, "-1-2.5i" --3.5, 2.5, "-3.5+2.5i" --3.5, 1, "-3.5+i" --3.5, 0, "-3.5" --3.5, -1, "-3.5-i" --3.5, -2.5, "-3.5-2.5i" --2.5, -2.5, "-2.5-2.5i" --2.5, -2.5, "-2.5-2.5i" --1.5, -2.5, "-1.5-2.5i" --1.5, -2.5, "-1.5-2.5i" --0.5, -2.5, "-0.5-2.5i" -0, -2.5, "-2.5i" -0.5, -2.5, "0.5-2.5i" -1, -2.5, "1-2.5i" -1.5, -2.5, "1.5-2.5i" -2, -2.5, "2-2.5i" -2.5, -2.5, "2.5-2.5i" -3, -2.5, "3-2.5i" -3.5, -2.5, "3.5-2.5i" --2.5, -2.5, "-2.5-2.5i" --2.5, -2.5, "-2.5-2.5i" --1.5, -2.5, "-1.5-2.5i" --1.5, -2.5, "-1.5-2.5i" --0.5, -2.5, "-0.5-2.5i" -0, -2.5, "-2.5i" -0.5, -2.5, "0.5-2.5i" -1, -2.5, "1-2.5i" -1.5, -2.5, "1.5-2.5i" -2, -2.5, "2-2.5i" -2.5, -2.5, "2.5-2.5i" -3, -2.5, "3-2.5i" -3.5, -2.5, "3.5-2.5i" --2.5, -1.5, "-2.5-1.5i" --2.5, -1.5, "-2.5-1.5i" --1.5, -1.5, "-1.5-1.5i" --1.5, -1.5, "-1.5-1.5i" --0.5, -1.5, "-0.5-1.5i" -0, -1.5, "-1.5i" -0.5, -1.5, "0.5-1.5i" -1, -1.5, "1-1.5i" -1.5, -1.5, "1.5-1.5i" -2, -1.5, "2-1.5i" -2.5, -1.5, "2.5-1.5i" -3, -1.5, "3-1.5i" -3.5, -1.5, "3.5-1.5i" --2.5, -1.5, "-2.5-1.5i" --2.5, -1.5, "-2.5-1.5i" --1.5, -1.5, "-1.5-1.5i" --1.5, -1.5, "-1.5-1.5i" --0.5, -1.5, "-0.5-1.5i" -0, -1.5, "-1.5i" -0.5, -1.5, "0.5-1.5i" -1, -1.5, "1-1.5i" -1.5, -1.5, "1.5-1.5i" -2, -1.5, "2-1.5i" -2.5, -1.5, "2.5-1.5i" -3, -1.5, "3-1.5i" -3.5, -1.5, "3.5-1.5i" --2.5, -0.5, "-2.5-0.5i" --2.5, -0.5, "-2.5-0.5i" --1.5, -0.5, "-1.5-0.5i" --1.5, -0.5, "-1.5-0.5i" --0.5, -0.5, "-0.5-0.5i" -0, -0.5, "-0.5i" -0.5, -0.5, "0.5-0.5i" -1, -0.5, "1-0.5i" -1.5, -0.5, "1.5-0.5i" -2, -0.5, "2-0.5i" -2.5, -0.5, "2.5-0.5i" -3, -0.5, "3-0.5i" -3.5, -0.5, "3.5-0.5i" --2.5, 0, -2.5 --2.5, 0, -2.5 --1.5, 0, -1.5 --1.5, 0, -1.5 --0.5, 0, -0.5 -0, 0, 0 -0.5, 0, 0.5 -1, 0, 1 -1.5, 0, 1.5 -2, 0, 2 -2.5, 0, 2.5 -3, 0, 3 -3.5, 0, 3.5 --2.5, 0.5, "-2.5+0.5i" --2.5, 0.5, "-2.5+0.5i" --1.5, 0.5, "-1.5+0.5i" --1.5, 0.5, "-1.5+0.5i" --0.5, 0.5, "-0.5+0.5i" -0, 0.5, "0.5i" -0.5, 0.5, "0.5+0.5i" -1, 0.5, "1+0.5i" -1.5, 0.5, "1.5+0.5i" -2, 0.5, "2+0.5i" -2.5, 0.5, "2.5+0.5i" -3, 0.5, "3+0.5i" -3.5, 0.5, "3.5+0.5i" --2.5, 1, "-2.5+i" --2.5, 1, "-2.5+i" --1.5, 1, "-1.5+i" --1.5, 1, "-1.5+i" --0.5, 1, "-0.5+i" -0, 1, "i" -0.5, 1, "0.5+i" -1, 1, "1+i" -1.5, 1, "1.5+i" -2, 1, "2+i" -2.5, 1, "2.5+i" -3, 1, "3+i" -3.5, 1, "3.5+i" --2.5, 1.5, "-2.5+1.5i" --2.5, 1.5, "-2.5+1.5i" --1.5, 1.5, "-1.5+1.5i" --1.5, 1.5, "-1.5+1.5i" --0.5, 1.5, "-0.5+1.5i" -0, 1.5, "1.5i" -0.5, 1.5, "0.5+1.5i" -1, 1.5, "1+1.5i" -1.5, 1.5, "1.5+1.5i" -2, 1.5, "2+1.5i" -2.5, 1.5, "2.5+1.5i" -3, 1.5, "3+1.5i" -3.5, 1.5, "3.5+1.5i" --2.5, 2, "-2.5+2i" --2.5, 2, "-2.5+2i" --1.5, 2, "-1.5+2i" --1.5, 2, "-1.5+2i" --0.5, 2, "-0.5+2i" -0, 2, "2i" -0.5, 2, "0.5+2i" -1, 2, "1+2i" -1.5, 2, "1.5+2i" -2, 2, "2+2i" -2.5, 2, "2.5+2i" -3, 2, "3+2i" -3.5, 2, "3.5+2i" --2.5, 2.5, "-2.5+2.5i" --2.5, 2.5, "-2.5+2.5i" --1.5, 2.5, "-1.5+2.5i" --1.5, 2.5, "-1.5+2.5i" --0.5, 2.5, "-0.5+2.5i" -0, 2.5, "2.5i" -0.5, 2.5, "0.5+2.5i" -1, 2.5, "1+2.5i" -1.5, 2.5, "1.5+2.5i" -2, 2.5, "2+2.5i" -2.5, 2.5, "2.5+2.5i" -3, 2.5, "3+2.5i" -3.5, 2.5, "3.5+2.5i" --2.5, 3, "-2.5+3i" --2.5, 3, "-2.5+3i" --1.5, 3, "-1.5+3i" --1.5, 3, "-1.5+3i" --0.5, 3, "-0.5+3i" -0, 3, "3i" -0.5, 3, "0.5+3i" -1, 3, "1+3i" -1.5, 3, "1.5+3i" -2, 3, "2+3i" -2.5, 3, "2.5+3i" -3, 3, "3+3i" -3.5, 3, "3.5+3i" --2.5, 3.5, "-2.5+3.5i" --2.5, 3.5, "-2.5+3.5i" --1.5, 3.5, "-1.5+3.5i" --1.5, 3.5, "-1.5+3.5i" --0.5, 3.5, "-0.5+3.5i" -0, 3.5, "3.5i" -0.5, 3.5, "0.5+3.5i" -1, 3.5, "1+3.5i" -1.5, 3.5, "1.5+3.5i" -2, 3.5, "2+3.5i" -2.5, 3.5, "2.5+3.5i" -3, 3.5, "3+3.5i" -3.5, 3.5, "3.5+3.5i" --2.5, -2.5, "i", "-2.5-2.5i" --2.5, -2.5, "i", "-2.5-2.5i" --1.5, -2.5, "i", "-1.5-2.5i" --1.5, -2.5, "i", "-1.5-2.5i" --0.5, -2.5, "i", "-0.5-2.5i" -0, -2.5, "i", "-2.5i" -0.5, -2.5, "i", "0.5-2.5i" -1, -2.5, "i", "1-2.5i" -1.5, -2.5, "i", "1.5-2.5i" -2, -2.5, "i", "2-2.5i" -2.5, -2.5, "i", "2.5-2.5i" -3, -2.5, "i", "3-2.5i" -3.5, -2.5, "i", "3.5-2.5i" --2.5, -2.5, "i", "-2.5-2.5i" --2.5, -2.5, "i", "-2.5-2.5i" --1.5, -2.5, "i", "-1.5-2.5i" --1.5, -2.5, "i", "-1.5-2.5i" --0.5, -2.5, "i", "-0.5-2.5i" -0, -2.5, "i", "-2.5i" -0.5, -2.5, "i", "0.5-2.5i" -1, -2.5, "i", "1-2.5i" -1.5, -2.5, "i", "1.5-2.5i" -2, -2.5, "i", "2-2.5i" -2.5, -2.5, "i", "2.5-2.5i" -3, -2.5, "i", "3-2.5i" -3.5, -2.5, "i", "3.5-2.5i" --2.5, -1.5, "i", "-2.5-1.5i" --2.5, -1.5, "i", "-2.5-1.5i" --1.5, -1.5, "i", "-1.5-1.5i" --1.5, -1.5, "i", "-1.5-1.5i" --0.5, -1.5, "i", "-0.5-1.5i" -0, -1.5, "i", "-1.5i" -0.5, -1.5, "i", "0.5-1.5i" -1, -1.5, "i", "1-1.5i" -1.5, -1.5, "i", "1.5-1.5i" -2, -1.5, "i", "2-1.5i" -2.5, -1.5, "i", "2.5-1.5i" -3, -1.5, "i", "3-1.5i" -3.5, -1.5, "i", "3.5-1.5i" --2.5, -1.5, "i", "-2.5-1.5i" --2.5, -1.5, "i", "-2.5-1.5i" --1.5, -1.5, "i", "-1.5-1.5i" --1.5, -1.5, "i", "-1.5-1.5i" --0.5, -1.5, "i", "-0.5-1.5i" -0, -1.5, "i", "-1.5i" -0.5, -1.5, "i", "0.5-1.5i" -1, -1.5, "i", "1-1.5i" -1.5, -1.5, "i", "1.5-1.5i" -2, -1.5, "i", "2-1.5i" -2.5, -1.5, "i", "2.5-1.5i" -3, -1.5, "i", "3-1.5i" -3.5, -1.5, "i", "3.5-1.5i" --2.5, -0.5, "i", "-2.5-0.5i" --2.5, -0.5, "i", "-2.5-0.5i" --1.5, -0.5, "i", "-1.5-0.5i" --1.5, -0.5, "i", "-1.5-0.5i" --0.5, -0.5, "i", "-0.5-0.5i" -0, -0.5, "i", "-0.5i" -0.5, -0.5, "i", "0.5-0.5i" -1, -0.5, "i", "1-0.5i" -1.5, -0.5, "i", "1.5-0.5i" -2, -0.5, "i", "2-0.5i" -2.5, -0.5, "i", "2.5-0.5i" -3, -0.5, "i", "3-0.5i" -3.5, -0.5, "i", "3.5-0.5i" --2.5, 0, "i", -2.5 --2.5, 0, "i", -2.5 --1.5, 0, "i", -1.5 --1.5, 0, "i", -1.5 --0.5, 0, "i", -0.5 -0, 0, "i", 0 -0.5, 0, "i", 0.5 -1, 0, "i", 1 -1.5, 0, "i", 1.5 -2, 0, "i", 2 -2.5, 0, "i", 2.5 -3, 0, "i", 3 -3.5, 0, "i", 3.5 --2.5, 0.5, "i", "-2.5+0.5i" --2.5, 0.5, "i", "-2.5+0.5i" --1.5, 0.5, "i", "-1.5+0.5i" --1.5, 0.5, "i", "-1.5+0.5i" --0.5, 0.5, "i", "-0.5+0.5i" -0, 0.5, "i", "0.5i" -0.5, 0.5, "i", "0.5+0.5i" -1, 0.5, "i", "1+0.5i" -1.5, 0.5, "i", "1.5+0.5i" -2, 0.5, "i", "2+0.5i" -2.5, 0.5, "i", "2.5+0.5i" -3, 0.5, "i", "3+0.5i" -3.5, 0.5, "i", "3.5+0.5i" --2.5, 1, "i", "-2.5+i" --2.5, 1, "i", "-2.5+i" --1.5, 1, "i", "-1.5+i" --1.5, 1, "i", "-1.5+i" --0.5, 1, "i", "-0.5+i" -0, 1, "i", "i" -0.5, 1, "i", "0.5+i" -1, 1, "i", "1+i" -1.5, 1, "i", "1.5+i" -2, 1, "i", "2+i" -2.5, 1, "i", "2.5+i" -3, 1, "i", "3+i" -3.5, 1, "i", "3.5+i" --2.5, 1.5, "i", "-2.5+1.5i" --2.5, 1.5, "i", "-2.5+1.5i" --1.5, 1.5, "i", "-1.5+1.5i" --1.5, 1.5, "i", "-1.5+1.5i" --0.5, 1.5, "i", "-0.5+1.5i" -0, 1.5, "i", "1.5i" -0.5, 1.5, "i", "0.5+1.5i" -1, 1.5, "i", "1+1.5i" -1.5, 1.5, "i", "1.5+1.5i" -2, 1.5, "i", "2+1.5i" -2.5, 1.5, "i", "2.5+1.5i" -3, 1.5, "i", "3+1.5i" -3.5, 1.5, "i", "3.5+1.5i" --2.5, 2, "i", "-2.5+2i" --2.5, 2, "i", "-2.5+2i" --1.5, 2, "i", "-1.5+2i" --1.5, 2, "i", "-1.5+2i" --0.5, 2, "i", "-0.5+2i" -0, 2, "i", "2i" -0.5, 2, "i", "0.5+2i" -1, 2, "i", "1+2i" -1.5, 2, "i", "1.5+2i" -2, 2, "i", "2+2i" -2.5, 2, "i", "2.5+2i" -3, 2, "i", "3+2i" -3.5, 2, "i", "3.5+2i" --2.5, 2.5, "i", "-2.5+2.5i" --2.5, 2.5, "i", "-2.5+2.5i" --1.5, 2.5, "i", "-1.5+2.5i" --1.5, 2.5, "i", "-1.5+2.5i" --0.5, 2.5, "i", "-0.5+2.5i" -0, 2.5, "i", "2.5i" -0.5, 2.5, "i", "0.5+2.5i" -1, 2.5, "i", "1+2.5i" -1.5, 2.5, "i", "1.5+2.5i" -2, 2.5, "i", "2+2.5i" -2.5, 2.5, "i", "2.5+2.5i" -3, 2.5, "i", "3+2.5i" -3.5, 2.5, "i", "3.5+2.5i" --2.5, 3, "i", "-2.5+3i" --2.5, 3, "i", "-2.5+3i" --1.5, 3, "i", "-1.5+3i" --1.5, 3, "i", "-1.5+3i" --0.5, 3, "i", "-0.5+3i" -0, 3, "i", "3i" -0.5, 3, "i", "0.5+3i" -1, 3, "i", "1+3i" -1.5, 3, "i", "1.5+3i" -2, 3, "i", "2+3i" -2.5, 3, "i", "2.5+3i" -3, 3, "i", "3+3i" -3.5, 3, "i", "3.5+3i" --2.5, 3.5, "i", "-2.5+3.5i" --2.5, 3.5, "i", "-2.5+3.5i" --1.5, 3.5, "i", "-1.5+3.5i" --1.5, 3.5, "i", "-1.5+3.5i" --0.5, 3.5, "i", "-0.5+3.5i" -0, 3.5, "i", "3.5i" -0.5, 3.5, "i", "0.5+3.5i" -1, 3.5, "i", "1+3.5i" -1.5, 3.5, "i", "1.5+3.5i" -2, 3.5, "i", "2+3.5i" -2.5, 3.5, "i", "2.5+3.5i" -3, 3.5, "i", "3+3.5i" -3.5, 3.5, "i", "3.5+3.5i" --2.5, -2.5, "j", "-2.5-2.5j" --2.5, -2.5, "j", "-2.5-2.5j" --1.5, -2.5, "j", "-1.5-2.5j" --1.5, -2.5, "j", "-1.5-2.5j" --0.5, -2.5, "j", "-0.5-2.5j" -0, -2.5, "j", "-2.5j" -0.5, -2.5, "j", "0.5-2.5j" -1, -2.5, "j", "1-2.5j" -1.5, -2.5, "j", "1.5-2.5j" -2, -2.5, "j", "2-2.5j" -2.5, -2.5, "j", "2.5-2.5j" -3, -2.5, "j", "3-2.5j" -3.5, -2.5, "j", "3.5-2.5j" --2.5, -2.5, "j", "-2.5-2.5j" --2.5, -2.5, "j", "-2.5-2.5j" --1.5, -2.5, "j", "-1.5-2.5j" --1.5, -2.5, "j", "-1.5-2.5j" --0.5, -2.5, "j", "-0.5-2.5j" -0, -2.5, "j", "-2.5j" -0.5, -2.5, "j", "0.5-2.5j" -1, -2.5, "j", "1-2.5j" -1.5, -2.5, "j", "1.5-2.5j" -2, -2.5, "j", "2-2.5j" -2.5, -2.5, "j", "2.5-2.5j" -3, -2.5, "j", "3-2.5j" -3.5, -2.5, "j", "3.5-2.5j" --2.5, -1.5, "j", "-2.5-1.5j" --2.5, -1.5, "j", "-2.5-1.5j" --1.5, -1.5, "j", "-1.5-1.5j" --1.5, -1.5, "j", "-1.5-1.5j" --0.5, -1.5, "j", "-0.5-1.5j" -0, -1.5, "j", "-1.5j" -0.5, -1.5, "j", "0.5-1.5j" -1, -1.5, "j", "1-1.5j" -1.5, -1.5, "j", "1.5-1.5j" -2, -1.5, "j", "2-1.5j" -2.5, -1.5, "j", "2.5-1.5j" -3, -1.5, "j", "3-1.5j" -3.5, -1.5, "j", "3.5-1.5j" --2.5, -1.5, "j", "-2.5-1.5j" --2.5, -1.5, "j", "-2.5-1.5j" --1.5, -1.5, "j", "-1.5-1.5j" --1.5, -1.5, "j", "-1.5-1.5j" --0.5, -1.5, "j", "-0.5-1.5j" -0, -1.5, "j", "-1.5j" -0.5, -1.5, "j", "0.5-1.5j" -1, -1.5, "j", "1-1.5j" -1.5, -1.5, "j", "1.5-1.5j" -2, -1.5, "j", "2-1.5j" -2.5, -1.5, "j", "2.5-1.5j" -3, -1.5, "j", "3-1.5j" -3.5, -1.5, "j", "3.5-1.5j" --2.5, -0.5, "j", "-2.5-0.5j" --2.5, -0.5, "j", "-2.5-0.5j" --1.5, -0.5, "j", "-1.5-0.5j" --1.5, -0.5, "j", "-1.5-0.5j" --0.5, -0.5, "j", "-0.5-0.5j" -0, -0.5, "j", "-0.5j" -0.5, -0.5, "j", "0.5-0.5j" -1, -0.5, "j", "1-0.5j" -1.5, -0.5, "j", "1.5-0.5j" -2, -0.5, "j", "2-0.5j" -2.5, -0.5, "j", "2.5-0.5j" -3, -0.5, "j", "3-0.5j" -3.5, -0.5, "j", "3.5-0.5j" --2.5, 0, "j", -2.5 --2.5, 0, "j", -2.5 --1.5, 0, "j", -1.5 --1.5, 0, "j", -1.5 --0.5, 0, "j", -0.5 -0, 0, "j", 0 -0.5, 0, "j", 0.5 -1, 0, "j", 1 -1.5, 0, "j", 1.5 -2, 0, "j", 2 -2.5, 0, "j", 2.5 -3, 0, "j", 3 -3.5, 0, "j", 3.5 --2.5, 0.5, "j", "-2.5+0.5j" --2.5, 0.5, "j", "-2.5+0.5j" --1.5, 0.5, "j", "-1.5+0.5j" --1.5, 0.5, "j", "-1.5+0.5j" --0.5, 0.5, "j", "-0.5+0.5j" -0, 0.5, "j", "0.5j" -0.5, 0.5, "j", "0.5+0.5j" -1, 0.5, "j", "1+0.5j" -1.5, 0.5, "j", "1.5+0.5j" -2, 0.5, "j", "2+0.5j" -2.5, 0.5, "j", "2.5+0.5j" -3, 0.5, "j", "3+0.5j" -3.5, 0.5, "j", "3.5+0.5j" --2.5, 1, "j", "-2.5+j" --2.5, 1, "j", "-2.5+j" --1.5, 1, "j", "-1.5+j" --1.5, 1, "j", "-1.5+j" --0.5, 1, "j", "-0.5+j" -0, 1, "j", "j" -0.5, 1, "j", "0.5+j" -1, 1, "j", "1+j" -1.5, 1, "j", "1.5+j" -2, 1, "j", "2+j" -2.5, 1, "j", "2.5+j" -3, 1, "j", "3+j" -3.5, 1, "j", "3.5+j" --2.5, 1.5, "j", "-2.5+1.5j" --2.5, 1.5, "j", "-2.5+1.5j" --1.5, 1.5, "j", "-1.5+1.5j" --1.5, 1.5, "j", "-1.5+1.5j" --0.5, 1.5, "j", "-0.5+1.5j" -0, 1.5, "j", "1.5j" -0.5, 1.5, "j", "0.5+1.5j" -1, 1.5, "j", "1+1.5j" -1.5, 1.5, "j", "1.5+1.5j" -2, 1.5, "j", "2+1.5j" -2.5, 1.5, "j", "2.5+1.5j" -3, 1.5, "j", "3+1.5j" -3.5, 1.5, "j", "3.5+1.5j" --2.5, 2, "j", "-2.5+2j" --2.5, 2, "j", "-2.5+2j" --1.5, 2, "j", "-1.5+2j" --1.5, 2, "j", "-1.5+2j" --0.5, 2, "j", "-0.5+2j" -0, 2, "j", "2j" -0.5, 2, "j", "0.5+2j" -1, 2, "j", "1+2j" -1.5, 2, "j", "1.5+2j" -2, 2, "j", "2+2j" -2.5, 2, "j", "2.5+2j" -3, 2, "j", "3+2j" -3.5, 2, "j", "3.5+2j" --2.5, 2.5, "j", "-2.5+2.5j" --2.5, 2.5, "j", "-2.5+2.5j" --1.5, 2.5, "j", "-1.5+2.5j" --1.5, 2.5, "j", "-1.5+2.5j" --0.5, 2.5, "j", "-0.5+2.5j" -0, 2.5, "j", "2.5j" -0.5, 2.5, "j", "0.5+2.5j" -1, 2.5, "j", "1+2.5j" -1.5, 2.5, "j", "1.5+2.5j" -2, 2.5, "j", "2+2.5j" -2.5, 2.5, "j", "2.5+2.5j" -3, 2.5, "j", "3+2.5j" -3.5, 2.5, "j", "3.5+2.5j" --2.5, 3, "j", "-2.5+3j" --2.5, 3, "j", "-2.5+3j" --1.5, 3, "j", "-1.5+3j" --1.5, 3, "j", "-1.5+3j" --0.5, 3, "j", "-0.5+3j" -0, 3, "j", "3j" -0.5, 3, "j", "0.5+3j" -1, 3, "j", "1+3j" -1.5, 3, "j", "1.5+3j" -2, 3, "j", "2+3j" -2.5, 3, "j", "2.5+3j" -3, 3, "j", "3+3j" -3.5, 3, "j", "3.5+3j" --2.5, 3.5, "j", "-2.5+3.5j" --2.5, 3.5, "j", "-2.5+3.5j" --1.5, 3.5, "j", "-1.5+3.5j" --1.5, 3.5, "j", "-1.5+3.5j" --0.5, 3.5, "j", "-0.5+3.5j" -0, 3.5, "j", "3.5j" -0.5, 3.5, "j", "0.5+3.5j" -1, 3.5, "j", "1+3.5j" -1.5, 3.5, "j", "1.5+3.5j" -2, 3.5, "j", "2+3.5j" -2.5, 3.5, "j", "2.5+3.5j" -3, 3.5, "j", "3+3.5j" -3.5, 3.5, "j", "3.5+3.5j" --1.23, -4.56, "-1.23-4.56i" -0, -3.21, "i", "-3.21i" -1.23, -2.34, "j", "1.23-2.34j" --1.23, 0, -1.23 -0, 0, "i", 0 -1.23, 0, "j", 1.23 --1.23, 4.56, "-1.23+4.56i" -0, 3.21, "i", "3.21i" -1.23, 2.34, "j", "1.23+2.34j" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/CONVERTUOM.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/CONVERTUOM.data deleted file mode 100644 index dbcfb0119aa..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/CONVERTUOM.data +++ /dev/null @@ -1,24 +0,0 @@ -1.0, "lbm", "kg", 0.45359230974881 -123.45, "kg", "kg", 123.45 -68, "F", "C", 20 -20, "C", "F", 68 -68, "F", "K", 293.15 -293.15, "K", "F", 68 -22, "C", "K", 295.15 -295.65, "K", "C", 22.5 -2.5, "ft", "sec", "#N/A" -12345, "m", "km", 12.345 -12.345, "km", "m", 12345 -1, "km", "mi", 0.62137119223733 -"three","ft", "yds", "#VALUE!" -123.45, "K", "kel", 123.45 -123.45, "C", "cel", 123.45 -123.45, "F", "fah", 123.45 -1, "ft", "day", "#N/A" -123.45, "m", "m", 123.45 -234.56, "km", "km", 234.56 -234.56, "kpt", "lt", "#N/A" -234.56, "sm", "m", "#N/A" -234.56, "lt", "kpt", "#N/A" -234.56, "m", "sm", "#N/A" -12.345, "km", "mm", 12345000 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/DEC2BIN.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/DEC2BIN.data deleted file mode 100644 index 404adaba023..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/DEC2BIN.data +++ /dev/null @@ -1,16 +0,0 @@ -357, "101100101" -1357, "#NUM!" // Too large -9, 4, "1001" -9, 8, "00001001" -9, 6.75, "001001" // Leading places as a float -9, -1, "#NUM!" // Leading places negative -9, "ABC", "#VALUE!" // Leading places non-numeric -246, "11110110" -12345, "#NUM!" -123456789, "#NUM!" -123.45, "1111011" -0, "0" -"3579A", "#VALUE!" // Invalid decimal -TRUE, "#VALUE!" // Non string --100, "1110011100" // 2's Complement --107, "1110010101" // 2's Complement diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/DEC2HEX.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/DEC2HEX.data deleted file mode 100644 index 5210e91593f..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/DEC2HEX.data +++ /dev/null @@ -1,15 +0,0 @@ -"357", "165" -"1357", "54D" -"246", "F6" -"12345", "3039" -"123456789", "75BCD15" -"100", 4, "0064" -"100", 5.75, "00064" // Leading places as a float -"100", -1, "#NUM!" // Leading places negative -"100", "ABC", "#VALUE!" // Leading places non-numeric -"123.45", "7B" -"0", "0" -"3579A", "#VALUE!" // Invalid decimal -TRUE, "#VALUE!" // Non string -"-54", "FFFFFFFFCA" // 2's Complement -"-107", "FFFFFFFF95" // 2's Complement diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/DEC2OCT.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/DEC2OCT.data deleted file mode 100644 index 923532e2814..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/DEC2OCT.data +++ /dev/null @@ -1,12 +0,0 @@ -"357", "545" -"1357", "2515" -"246", "366" -"12345", "30071" -"123456789", "726746425" -"123.45", "173" -"58, 3, "072" -"0", "0" -"3579A", "#VALUE!" // Invalid decimal -TRUE, "#VALUE!" // Non string -"-100", "7777777634" // 2's Complement -"-107", "7777777625" // 2's Complement diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/DELTA.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/DELTA.data deleted file mode 100644 index e994277b28e..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/DELTA.data +++ /dev/null @@ -1,25 +0,0 @@ --1.5, -1.5, 1 --0.75, -1.5, 0 -0, -1.5, 0 -0.75, -1.5, 0 -1.5, -1.5, 0 --1.5, -0.75, 0 --0.75, -0.75, 1 -0, -0.75, 0 -0.75, -0.75, 0 -1.5, -0.75, 0 --1.5, 0, 0 --0.75, 0, 0 -0, 0, 1 -0.75, 0, 0 -1.5, 0, 0 --1.5, 0.75, 0 --0.75, 0.75, 0 -0, 0.75, 0 -0.75, 0.75, 1 -1.5, 0.75, 0 --1.5, 1.5, 0 --0.75, 1.5, 0 -0, 1.5, 0 -0.75, 1.5, 0 -1.5, 1.5, 1 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/ERF.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/ERF.data deleted file mode 100644 index 5c4fc1e9f1b..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/ERF.data +++ /dev/null @@ -1,124 +0,0 @@ -# lower bound upper bound Result -0, 0.0 -0.01, 0.0112834155558496 -0.05, 0.0563719777970166 -0.1, 0.1124629160182850 -0.125, 0.1403162048013340 -0.15, 0.1679959714273630 -0.2, 0.2227025892104780 -0.25, 0.2763263901682370 -0.3, 0.3286267594591270 -0.35, 0.3793820535623100 -0.4, 0.4283923550466680 -0.45, 0.4754817197869240 -0.5, 0.5204998778130470 -0.6, 0.6038560908479260 -0.7, 0.6778011938374180 -0.8, 0.7421009647076610 -0.9, 0.7969082124228320 -1, 0.8427007929497150 -1.1, 0.8802050695740820 -1.2, 0.9103139782296350 -1.3, 0.9340079449406520 -1.4, 0.9522851197626490 -1.5, 0.9661051464753110 -1.75, 0.9866716712191820 -2, 0.9953222650189530 -2.5, 0.9995930479825550 -3, 0.9999779095030010 -3.5, 0.9999992569016280 -4, 0.9999999845827420 -4.5, 0.9999999998033840 -5, 0.9999999999984630 -5.5, 0.9999999999999930 -6, 1.0 -32, 1.0 --0.1, -0.1124629160182850 --1, -0.8427007929497150 -TRUE, "#VALUE!" -FALSE, "#VALUE!" -"2", 0.9953222650189530 -"TWO", "#VALUE!" --1.5, -1.5, 0.0 --0.75, -1.5, -0.2549495128217960 -0, -1.5, -0.9661051464753110 -0.75, -1.5, -1.6772607801288300 -1.5, -1.5, -1.9322102929506200 -2.25, -1.5, -1.9646424298886300 -3, -1.5, -1.9660830559783100 -3.75, -1.5, -1.9661050327480500 -4.5, -1.5, -1.9661051462786900 --1.5, -0.75, 0.2549495128217960 --0.75, -0.75, 0.0 -0, -0.75, -0.7111556336535150 -0.75, -0.75, -1.4223112673070300 -1.5, -0.75, -1.6772607801288300 -2.25, -0.75, -1.7096929170668300 -3, -0.75, -1.7111335431565200 -3.75, -0.75, -1.7111555199262600 -4.5, -0.75, -1.7111556334569000 --1.5, 0, 0.9661051464753110 --0.75, 0, 0.7111556336535150 -0, 0, 0.0 -0.75, 0, -0.7111556336535150 -1.5, 0, -0.9661051464753110 -2.25, 0, -0.9985372834133190 -3, 0, -0.9999779095030010 -3.75, 0, -0.9999998862727430 -4.5, 0, -0.9999999998033840 --1.5, 0.75, 1.6772607801288300 --0.75, 0.75, 1.4223112673070300 -0, 0.75, 0.7111556336535150 -0.75, 0.75, 0.0 -1.5, 0.75, -0.2549495128217960 -2.25, 0.75, -0.2873816497598040 -3, 0.75, -0.2888222758494860 -3.75, 0.75, -0.2888442526192280 -4.5, 0.75, -0.2888443661498690 --1.5, 1.5, 1.9322102929506200 --0.75, 1.5, 1.6772607801288300 -0, 1.5, 0.9661051464753110 -0.75, 1.5, 0.2549495128217960 -1.5, 1.5, 0.0 -2.25, 1.5, -0.0324321369380081 -3, 1.5, -0.0338727630276906 -3.75, 1.5, -0.0338947397974326 -4.5, 1.5, -0.0338948533280732 --1.5, 2.25, 1.9646424298886300 --0.75, 2.25, 1.7096929170668300 -0, 2.25, 0.9985372834133190 -0.75, 2.25, 0.2873816497598040 -1.5, 2.25, 0.0324321369380081 -2.25, 2.25, 0.0 -3, 2.25, -0.0014406260896825 -3.75, 2.25, -0.0014626028594246 -4.5, 2.25, -0.0014627163900651 --1.5, 3, 1.9660830559783100 --0.75, 3, 1.7111335431565200 -0, 3, 0.9999779095030010 -0.75, 3, 0.2888222758494860 -1.5, 3, 0.0338727630276906 -2.25, 3, 0.0014406260896825 -3, 3, 0.0 -3.75, 3, -0.0000219767697420 -4.5, 3, -0.0000220903003826 --1.5, 3.75, 1.9661050327480500 --0.75, 3.75, 1.7111555199262600 -0, 3.75, 0.9999998862727430 -0.75, 3.75, 0.2888442526192280 -1.5, 3.75, 0.0338947397974326 -2.25, 3.75, 0.0014626028594246 -3, 3.75, 0.0000219767697420 -3.75, 3.75, 0.0 -4.5, 3.75, -0.0000001135306406 --1.5, 4.5, 1.9661051462786900 --0.75, 4.5, 1.7111556334569000 -0, 4.5, 0.9999999998033840 -0.75, 4.5, 0.2888443661498690 -1.5, 4.5, 0.0338948533280732 -2.25, 4.5, 0.0014627163900651 -3, 4.5, 0.0000220903003826 -3.75, 4.5, 0.0000001135306406 -4.5, 4.5, 0.0 -5, -1, -1.8427007929481800 --5, 1, 1.8427007929481800 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/ERFC.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/ERFC.data deleted file mode 100644 index df814893e2d..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/ERFC.data +++ /dev/null @@ -1,41 +0,0 @@ -# x value Result -0, 1.0 -0.01, 0.9887165844441500 -0.05, 0.9436280222029830 -0.1, 0.8875370839817150 -0.125, 0.8596837951986660 -0.15, 0.8320040285726360 -0.2, 0.7772974107895220 -0.25, 0.7236736098317630 -0.3, 0.6713732405408730 -0.35, 0.6206179464376900 -0.4, 0.5716076449533320 -0.45, 0.5245182802130760 -0.5, 0.4795001221869530 -0.6, 0.3961439091520740 -0.7, 0.3221988061625820 -0.8, 0.2578990352923390 -0.9, 0.2030917875771680 -1, 0.1572992070502850 -1.1, 0.1197949304259180 -1.2, 0.0896860217703646 -1.3, 0.0659920550593475 -1.4, 0.0477148802373512 -1.5, 0.0338948535246893 -1.75, 0.0133283287808176 -2, 0.0046777349810473 -2.5, 0.0004069520174450 -3, 0.0000220904969986 -3.5, 0.0000007430983723 -4, 0.0000000154172579 -4.5, 0.0000000001966160 -5, 0.0000000000015375 -5.5, 0.0000000000000074 -6, 0.0 -32, 0.0 --0.1, 1.1124629160182900 --1, 1.8427007929497100 -TRUE, "#VALUE!" -FALSE, "#VALUE!" -"2", 0.0046777349810473 -"TWO", "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/GESTEP.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/GESTEP.data deleted file mode 100644 index f6bf40ea8f4..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/GESTEP.data +++ /dev/null @@ -1,81 +0,0 @@ --1.5, -1.5, 1 --0.75, -1.5, 1 -0, -1.5, 1 -0.75, -1.5, 1 -1.5, -1.5, 1 -2.25, -1.5, 1 -3, -1.5, 1 -3.75, -1.5, 1 -4.5, -1.5, 1 --1.5, -0.75, 0 --0.75, -0.75, 1 -0, -0.75, 1 -0.75, -0.75, 1 -1.5, -0.75, 1 -2.25, -0.75, 1 -3, -0.75, 1 -3.75, -0.75, 1 -4.5, -0.75, 1 --1.5, 0, 0 --0.75, 0, 0 -0, 0, 1 -0.75, 0, 1 -1.5, 0, 1 -2.25, 0, 1 -3, 0, 1 -3.75, 0, 1 -4.5, 0, 1 --1.5, 0.75, 0 --0.75, 0.75, 0 -0, 0.75, 0 -0.75, 0.75, 1 -1.5, 0.75, 1 -2.25, 0.75, 1 -3, 0.75, 1 -3.75, 0.75, 1 -4.5, 0.75, 1 --1.5, 1.5, 0 --0.75, 1.5, 0 -0, 1.5, 0 -0.75, 1.5, 0 -1.5, 1.5, 1 -2.25, 1.5, 1 -3, 1.5, 1 -3.75, 1.5, 1 -4.5, 1.5, 1 --1.5, 2.25, 0 --0.75, 2.25, 0 -0, 2.25, 0 -0.75, 2.25, 0 -1.5, 2.25, 0 -2.25, 2.25, 1 -3, 2.25, 1 -3.75, 2.25, 1 -4.5, 2.25, 1 --1.5, 3, 0 --0.75, 3, 0 -0, 3, 0 -0.75, 3, 0 -1.5, 3, 0 -2.25, 3, 0 -3, 3, 1 -3.75, 3, 1 -4.5, 3, 1 --1.5, 3.75, 0 --0.75, 3.75, 0 -0, 3.75, 0 -0.75, 3.75, 0 -1.5, 3.75, 0 -2.25, 3.75, 0 -3, 3.75, 0 -3.75, 3.75, 1 -4.5, 3.75, 1 --1.5, 4.5, 0 --0.75, 4.5, 0 -0, 4.5, 0 -0.75, 4.5, 0 -1.5, 4.5, 0 -2.25, 4.5, 0 -3, 4.5, 0 -3.75, 4.5, 0 -4.5, 4.5, 1 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/HEX2BIN.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/HEX2BIN.data deleted file mode 100644 index 9e1aecb12df..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/HEX2BIN.data +++ /dev/null @@ -1,13 +0,0 @@ -"01AB", "110101011" -"ABCD", "#NUM!" -"F6", "11110110" -"F", 8, "00001111" -"B7", "10110111" -"12345", "#NUM!" -"123456789", "#NUM!" -"123.45", "#NUM!" -"0", "0" -"G3579A", "#NUM!" -TRUE, "#VALUE!" -"-107", "#NUM!" -"FFFFFFFFFF", "1111111111" // 2's Complement diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/HEX2DEC.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/HEX2DEC.data deleted file mode 100644 index 17fc866710d..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/HEX2DEC.data +++ /dev/null @@ -1,13 +0,0 @@ -"01AB", "427" -"ABCD", "43981" -"F6", "246" -"12345", "74565" -"123456789", "4886718345" -"123.45", "#NUM!" -"0", "0" -"G3579A", "#NUM!" -TRUE, "#VALUE!" -"-107", "#NUM!" -"A5", "165" -"FFFFFFFF5B", "-165" -"3DA408B9", "1034160313" // 2's Complement diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/HEX2OCT.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/HEX2OCT.data deleted file mode 100644 index 2ebd893ab53..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/HEX2OCT.data +++ /dev/null @@ -1,13 +0,0 @@ -"01AB", "653" -"ABCD", "125715" -"F6", "366" -"3B4E", "35516" -"F", 3, "017" -"12345", "221505" -"123456789", "#NUM!" -"123.45", "#NUM!" -"0", "0" -"G3579A", "#NUM!" -TRUE, "#VALUE!" -"-107", "#NUM!" -"FFFFFFFF00", "7777777400" // 2's Complement diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMABS.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMABS.data deleted file mode 100644 index e92de41b664..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMABS.data +++ /dev/null @@ -1,27 +0,0 @@ -"12.34+5.67j", 13.580298229420 -"1.234E-5+6.78E9i", 6.78E9 -"3.5+2.5i", 4.301162633521 -"3.5+i", 3.640054944640 -"3.5", 3.5 -"3.5-i", 3.640054944640 -"3.5-2.5i", 4.301162633521 -"1+2.5i", 2.692582403567 -"1+i", 1.414213562373 -"1", 1 -"1-i", 1.414213562373 -"1-2.5i", 2.692582403567 -"2.5i", 2.5 -"i", 1 -"0", 0 -"-i", 1 -"-2.5i", 2.5 -"-1+2.5i", 2.692582403567 -"-1+i", 1.414213562373 -"-1", 1 -"-1-i", 1.414213562373 -"-1-2.5i", 2.692582403567 -"-3.5+2.5i", 4.301162633521 -"-3.5+i", 3.640054944640 -"-3.5", 3.5 -"-3.5-i", 3.640054944640 -"-3.5-2.5i", 4.301162633521 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMAGINARY.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMAGINARY.data deleted file mode 100644 index ac888bae8e1..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMAGINARY.data +++ /dev/null @@ -1,30 +0,0 @@ -"12.34+5.67j", 5.67 -"1.234E-5+6.78E9i", 6.78E9 -"3.5+2.5i", 2.5 -"3.5+i", 1 -"3.5", 0 -"3.5-i", -1 -"3.5-2.5i", -2.5 -"1+2.5i", 2.5 -"1+i", 1 -"1", 0 -1, 0 -"1-i", -1 -"1-2.5i", -2.5 -"2.5i", 2.5 -"i", 1 -"0", 0 -0, 0 -0.0, 0 -"-i", -1 -"-2.5i", -2.5 -"-1+2.5i", 2.5 -"-1+i", 1 -"-1", 0 -"-1-i", -1 -"-1-2.5i", -2.5 -"-3.5+2.5i", 2.5 -"-3.5+i", 1 -"-3.5", 0 -"-3.5-i", -1 -"-3.5-2.5i", -2.5 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMARGUMENT.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMARGUMENT.data deleted file mode 100644 index 4b11d998ac4..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMARGUMENT.data +++ /dev/null @@ -1,26 +0,0 @@ -"12.34+5.67j", 0.430710595550 -"3.5+2.5i", 0.620249485983 -"3.5+i", 0.278299659005 -"3.5", 0 -"3.5-i", -0.278299659005 -"3.5-2.5i", -0.620249485983 -"1+2.5i", 1.190289949683 -"1+i", 0.785398163397 -"1", 0 -"1-i", -0.785398163397 -"1-2.5i", -1.190289949683 -"2.5i", 1.570796326795 -"i", 1.570796326795 -"0", "#DIV/0!" -"-i", -1.570796326795 -"-2.5i", -1.570796326795 -"-1+2.5i", 1.951302703907 -"-1+i", 2.356194490192 -"-1", 3.141592653590 -"-1-i", -2.356194490192 -"-1-2.5i", -1.951302703907 -"-3.5+2.5i", 2.521343167607 -"-3.5+i", 2.863292994585 -"-3.5", 3.141592653590 -"-3.5-i", -2.863292994585 -"-3.5-2.5i", -2.521343167607 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMCONJUGATE.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMCONJUGATE.data deleted file mode 100644 index 67eb96ff575..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMCONJUGATE.data +++ /dev/null @@ -1,26 +0,0 @@ -"12.34+5.67j", "12.34-5.67j" -"3.5+2.5i", "3.5-2.5i" -"3.5+i", "3.5-i" -"3.5", "3.5" -"3.5-i", "3.5+i" -"3.5-2.5i", "3.5+2.5i" -"1+2.5i", "1-2.5i" -"1+i", "1-i" -"1", "1" -"1-i", "1+i" -"1-2.5i", "1+2.5i" -"2.5i", "-2.5i" -"i", "-i" -"0", "0" -"-i", "i" -"-2.5i", "2.5i" -"-1+2.5i", "-1-2.5i" -"-1+i", "-1-i" -"-1", "-1" -"-1-i", "-1+i" -"-1-2.5i", "-1+2.5i" -"-3.5+2.5i", "-3.5-2.5i" -"-3.5+i", "-3.5-i" -"-3.5", "-3.5" -"-3.5-i", "-3.5+i" -"-3.5-2.5i", "-3.5+2.5i" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMCOS.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMCOS.data deleted file mode 100644 index 7ada86eaeaa..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMCOS.data +++ /dev/null @@ -1,27 +0,0 @@ -"12.34+5.67j", "141.319179436356+32.547610312508j" -"3.5+2.5i", "-5.74262349163406+2.12231025604134i" -"3.5+i", "-1.44502817950166+0.412240867891067i" -"3.5", "-0.936456687290796" -"3.5-i", "-1.44502817950166-0.412240867891067i" -"3.5-2.5i", "-5.74262349163406-2.12231025604134i" -"1+2.5i", "3.31329014611322-5.0910715229497i" -"1+i", "0.833730025131149-0.988897705762865i" -"1", "0.54030230586814" -"1-i", "0.833730025131149+0.988897705762865i" -"1-2.5i", "3.31329014611322+5.0910715229497i" -"2.5i", "6.13228947966369" -"i", "1.54308063481524" -"0", "1" -"-i", "1.54308063481524" -"-2.5i", "6.13228947966369" -"-1+2.5i", "3.31329014611322+5.0910715229497i" -"-1+i", "0.833730025131149+0.988897705762865i" -"-1", "0.54030230586814" -"-1-i", "0.833730025131149-0.988897705762865i" -"-1-2.5i", "3.31329014611322-5.0910715229497i" -"-3.5+2.5i", "-5.74262349163406-2.12231025604134i" -"-3.5+i", "-1.44502817950166-0.412240867891067i" -"-3.5", "-0.936456687290796" -"-3.5-i", "-1.44502817950166+0.412240867891067i" -"-3.5-2.5i", "-5.74262349163406+2.12231025604134i" -"3", "-0.989992496600445" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMDIV.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMDIV.data deleted file mode 100644 index 52d5cbb6e1a..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMDIV.data +++ /dev/null @@ -1,20 +0,0 @@ -"12.34+5.67j", "123.45+67.89i", "#NUM!" -"12.34+5.67j", "123.45+67.89j", "0.0961415519586104-0.00694248653276682j" -"-12.34+5.67i", "-123.45+67.89i", "0.0961415519586104+0.00694248653276682i" -"-12.34-5.67i", "-123.45+67.89i", "0.0573549954111941+0.0774712890924744i" -"-12.34+5.67i", "-123.45-67.89i", "0.0573549954111941-0.0774712890924744i" -"-12.34-5.67i", "-123.45-67.89i", "0.0961415519586104-0.00694248653276682i" -"12.34+5.67i", "-123.45+67.89i", "-0.0573549954111941-0.0774712890924744i" -"12.34-5.67i", "-123.45+67.89i", "-0.0961415519586104-0.00694248653276682i" -"12.34+5.67i", "-123.45-67.89i", "-0.0961415519586104+0.00694248653276682i" -"12.34-5.67i", "-123.45-67.89i", "-0.0573549954111941+0.0774712890924744i" -"-12.34+5.67i", "123.45+67.89i", "-0.0573549954111941+0.0774712890924744i" -"-12.34-5.67i", "123.45+67.89i", "-0.0961415519586104+0.00694248653276682i" -"-12.34+5.67i", "123.45-67.89i", "-0.0961415519586104-0.00694248653276682i" -"-12.34-5.67i", "123.45-67.89i", "-0.0573549954111941-0.0774712890924744i" -"-12.34-5.67i", "123.45-67.89", "#NUM!" -"-12.34-5.67j", "123.45-67.89", "#NUM!" -"-12.34-5.67", "123.45-67.89j", "#NUM!" -"-12.34-5.67i", "-12.34-5.67i", "1" -"-12.34", "123.45-67.89i", "-0.0767482736849023-0.0422068878126206i" -"-12.34-5.67i", "-12.34", "1+0.459481361426256i" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMEXP.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMEXP.data deleted file mode 100644 index 4c4d9b62b4e..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMEXP.data +++ /dev/null @@ -1,27 +0,0 @@ -"12.34+5.67j", "187004.11273906-131589.323796073j" -"-12.34E-5+6.78E9i", "1.79747131321615E+308+1.79747131321615E+308i" -"3.5+2.5i", "-26.5302329126575+19.8186755366902i" -"3.5+i", "17.8923550531471+27.8656919720394i" -"3.5", "33.1154519586923" -"3.5-i", "17.8923550531471-27.8656919720394i" -"3.5-2.5i", "-26.5302329126575-19.8186755366902i" -"1+2.5i", "-2.17773413212721+1.62681595415671i" -"1+i", "1.46869393991589+2.28735528717884i" -"1", "2.71828182845905" -"1-i", "1.46869393991589-2.28735528717884i" -"1-2.5i", "-2.17773413212721-1.62681595415671i" -"2.5i", "-0.801143615546934+0.598472144103957i" -"i", "0.54030230586814+0.841470984807897i" -"0", "1" -"-i", "0.54030230586814-0.841470984807897i" -"-2.5i", "-0.801143615546934-0.598472144103957i" -"-1+2.5i", "-0.294724265585475+0.220165597929638i" -"-1+i", "0.198766110346413+0.309559875653112i" -"-1", "0.367879441171442" -"-1-i", "0.198766110346413-0.309559875653112i" -"-1-2.5i", "-0.294724265585475-0.220165597929638i" -"-3.5+2.5i", "-0.0241924409350133+0.0180722928030842i" -"-3.5+i", "0.016315715894263+0.025410221967i" -"-3.5", "0.0301973834223185" -"-3.5-i", "0.016315715894263-0.025410221967i" -"-3.5-2.5i", "-0.0241924409350133-0.0180722928030842i" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMLN.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMLN.data deleted file mode 100644 index cb24be4ef7b..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMLN.data +++ /dev/null @@ -1,27 +0,0 @@ -"12.34+5.67j", "2.60862008281875+0.430710595550204j" -"-1.234E-5+6.78E9i", "22.6372429388987+1.5707963267949i" -"3.5+2.5i", "1.45888536604214+0.620249485982821i" -"3.5+i", "1.29199877621612+0.278299659005111i" -"3.5", "1.25276296849537" -"3.5-i", "1.29199877621612-0.278299659005111i" -"3.5-2.5i", "1.45888536604214-0.620249485982821i" -"1+2.5i", "0.990500734433292+1.19028994968253i" -"1+i", "0.346573590279973+0.785398163397448i" -"1", "0" -"1-i", "0.346573590279973-0.785398163397448i" -"1-2.5i", "0.990500734433292-1.19028994968253i" -"2.5i", "0.916290731874155+1.5707963267949i" -"i", "1.5707963267949i" -"0", "#NUM!" -"-i", "-1.5707963267949i" -"-2.5i", "0.916290731874155-1.5707963267949i" -"-1+2.5i", "0.990500734433292+1.95130270390726i" -"-1+i", "0.346573590279973+2.35619449019234i" -"-1", "3.14159265358979i" -"-1-i", "0.346573590279973-2.35619449019234i" -"-1-2.5i", "0.990500734433292-1.95130270390726i" -"-3.5+2.5i", "1.45888536604214+2.52134316760697i" -"-3.5+i", "1.29199877621612+2.86329299458468i" -"-3.5", "1.25276296849537+3.14159265358979i" -"-3.5-i", "1.29199877621612-2.86329299458468i" -"-3.5-2.5i", "1.45888536604214-2.52134316760697i" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMLOG10.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMLOG10.data deleted file mode 100644 index 8c57ff90cb2..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMLOG10.data +++ /dev/null @@ -1,27 +0,0 @@ -"12.34+5.67j", "1.13290930735019+0.187055234944717j" -"-12.34E-5+6.78E9i", "9.83122969386706+0.682188176920927i" -"3.5+2.5i", "0.633585864201507+0.269370929165668i" -"3.5+i", "0.561107939136413+0.120864006221476i" -"3.5", "0.544068044350276" -"3.5-i", "0.561107939136413-0.120864006221476i" -"3.5-2.5i", "0.633585864201507-0.269370929165668i" -"1+2.5i", "0.430169003285497+0.516936357012023i" -"1+i", "0.150514997831991+0.34109408846046i" -"1", "0" -"1-i", "0.150514997831991-0.34109408846046i" -"1-2.5i", "0.430169003285497-0.516936357012023i" -"2.5i", "0.397940008672038+0.68218817692092i" -"i", "0.68218817692092i" -"0", "#NUM!" -"-i", "-0.68218817692092i" -"-2.5i", "0.397940008672038-0.68218817692092i" -"-1+2.5i", "0.430169003285497+0.847439996829817i" -"-1+i", "0.150514997831991+1.02328226538138i" -"-1", "1.36437635384184i" -"-1-i", "0.150514997831991-1.02328226538138i" -"-1-2.5i", "0.430169003285497-0.847439996829817i" -"-3.5+2.5i", "0.633585864201507+1.09500542467617i" -"-3.5+i", "0.561107939136413+1.24351234762036i" -"-3.5", "0.544068044350276+1.36437635384184i" -"-3.5-i", "0.561107939136413-1.24351234762036i" -"-3.5-2.5i", "0.633585864201507-1.09500542467617i" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMLOG2.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMLOG2.data deleted file mode 100644 index a5a41367909..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMLOG2.data +++ /dev/null @@ -1,27 +0,0 @@ -"12.34+5.67j", "3.76344325733562+0.621384040306436j" -"-12.34E-5+6.78E9i", "32.6586381298614+2.26618007108803i" -"3.5+2.5i", "2.10472668297646+0.894830857610216i" -"3.5+i", "1.86396022742506+0.401501537958665i" -"3.5", "1.80735492219671" -"3.5-i", "1.86396022742506-0.401501537958665i" -"3.5-2.5i", "2.10472668297646-0.894830857610216i" -"1+2.5i", "1.42899049767377+1.71722540775913i" -"1+i", "0.500000000038482+1.13309003554401i" -"1", "0" -"1-i", "0.500000000038482-1.13309003554401i" -"1-2.5i", "1.42899049767377-1.71722540775913i" -"2.5i", "1.3219280949891+2.26618007108801i" -"i", "2.26618007108801i" -"0", "#NUM!" -"-i", "-2.26618007108801i" -"-2.5i", "1.3219280949891-2.26618007108801i" -"-1+2.5i", "1.42899049767377+2.81513473441689i" -"-1+i", "0.500000000038482+3.39927010663201i" -"-1", "4.53236014217602i" -"-1-i", "0.500000000038482-3.39927010663201i" -"-1-2.5i", "1.42899049767377-2.81513473441689i" -"-3.5+2.5i", "2.10472668297646+3.63752928456581i" -"-3.5+i", "1.86396022742506+4.13085860421736i" -"-3.5", "1.80735492219671+4.53236014217602i" -"-3.5-i", "1.86396022742506-4.13085860421736i" -"-3.5-2.5i", "2.10472668297646-3.63752928456581i" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMPOWER.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMPOWER.data deleted file mode 100644 index 8e753bc24fd..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMPOWER.data +++ /dev/null @@ -1,18 +0,0 @@ -"12.34+5.67j", 2, "120.1267+139.9356j" -"12.34+5.67j", 3, "688.928626+2407.923693j" -"12.34+5.67j", -1, "6.69108496973016E-002-3.07442883131037E-002j" -"12.34+5.67j", -2, "3.53185054333564E-003-4.11425290873718E-003j" -"12.34+5.67j", 0.5, "3.60002071031685+0.787495469644252j" -"12.34+5.67j", -0.25, "0.517904976730581-5.59833234375533E-002j" -"12.34+5.67j", 0, "1" -"-i", 2, "-1-1.34451369308841E-014i" -"1-i", 2, "1.22460635382238E-016-2i" -"2.5i", 2, "-6.25+8.40321058180257E-014i" -"2.5i", "2.5", "-6.98771242968685-6.98771242968684i" -"2.5i", "2.5i", "#VALUE!" -"2.5", "2.5", 9.88211768802619 -"2", "2", 4 -"-12.34-5.67i", "-12.34", "-4.69972844488573E-15+9.35464904349343E-15i" -"12.34-5.67i", "-12.34", "5.93343000067521E-15-8.62503997728057E-15i" -"-12.34-5.67i", "12.34", "-42881944468901.9-85355046682682.3i" -"12.34-5.67i", "12.34", "54138663282971.3+78697841733874.3i" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMPRODUCT.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMPRODUCT.data deleted file mode 100644 index 81ab40b7ce0..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMPRODUCT.data +++ /dev/null @@ -1,15 +0,0 @@ -"12.34+5.67j", "123.45+67.89i", "#NUM!" -"12.34+5.67j", "12.34+5.67j" -"12.34+5.67i", "123.45+67.89i", "5.67", "6454.936089+8718.895647i" -"12.34+5.67j", "123.45+67.89j", "5.67", "6454.936089+8718.895647j" -"12.34+5.67j", "123.45+67.89j", "1138.4367+1537.7241j" -"12.34-5.67i", "123.45+67.89i", "1908.3093+137.8011i" -"12.34+5.67i", "123.45-67.89i", "1908.3093-137.8011i" -"12.34-5.67i", "123.45-67.89i", "1138.4367-1537.7241i" -"-12.34+5.67i", "123.45+67.89i", "-1908.3093-137.8011i" -"-12.34-5.67i", "123.45+67.89i", "-1138.4367-1537.7241i" -"12.34+5.67i", "-123.45+67.89i", "-1908.3093+137.8011i" -"-12.34+5.67i", "-123.45+67.89i", "1138.4367-1537.7241i" -"-12.34-5.67i", "-123.45-67.89i", "1138.4367+1537.7241i" -"-12.34", "123.45-67.89i", "-1523.373+837.7626i" -"-12.34-5.67i", "-12.34", "152.2756+69.9678i" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMREAL.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMREAL.data deleted file mode 100644 index ffa4382cbc2..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMREAL.data +++ /dev/null @@ -1,30 +0,0 @@ -12.34+5.67j", 12.34 -"-1.234E-5+6.78E9i", -1.234E-5 -"3.5+2.5i", 3.5 -"3.5+i", 3.5 -"3.5", 3.5 -3.5, 3.5 -"3.5-i", 3.5 -"3.5-2.5i", 3.5 -"1+2.5i", 1 -"1+i", 1 -"1", 1 -1, 1 -"1-i", 1 -"1-2.5i", 1 -"2.5i", 0 -"i", 0 -"0", 0 -0, 0 -"-i", 0 -"-2.5i", 0 -"-1+2.5i", -1 -"-1+i", -1 -"-1", -1 -"-1-i", -1 -"-1-2.5i", -1 -"-3.5+2.5i", -3.5 -"-3.5+i", -3.5 -"-3.5", -3.5 -"-3.5-i", -3.5 -"-3.5-2.5i", -3.5 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMSIN.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMSIN.data deleted file mode 100644 index 50ab20034bb..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMSIN.data +++ /dev/null @@ -1,27 +0,0 @@ -"12.34+5.67j", "-32.5483841590412+141.315819535092j" -"3.5+2.5i", "-2.15110429680353-5.66575444574645i" -"3.5+i", "-0.541286805665839-1.10052501669986i" -"3.5", "-0.35078322768962" -"3.5-i", "-0.541286805665839+1.10052501669986i" -"3.5-2.5i", "-2.15110429680353+5.66575444574645i" -"1+2.5i", "5.16014366757971+3.26893943207955i" -"1+i", "1.29845758141598+0.634963914784736i" -"1", "0.841470984807897" -"1-i", "1.29845758141598-0.634963914784736i" -"1-2.5i", "5.16014366757971-3.26893943207955i" -"2.5i", "6.05020448103979i" -"i", "1.1752011936438i" -"0", "0" -"-i", "-1.1752011936438i" -"-2.5i", "-6.05020448103979i" -"-1+2.5i", "-5.16014366757971+3.26893943207955i" -"-1+i", "-1.29845758141598+0.634963914784736i" -"-1", "-0.841470984807897" -"-1-i", "-1.29845758141598-0.634963914784736i" -"-1-2.5i", "-5.16014366757971-3.26893943207955i" -"-3.5+2.5i", "2.15110429680353-5.66575444574645i" -"-3.5+i", "0.541286805665839-1.10052501669986i" -"-3.5", "0.35078322768962" -"-3.5-i", "0.541286805665839+1.10052501669986i" -"-3.5-2.5i", "2.15110429680353+5.66575444574645i" -"3", "0.141120008059867" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMSQRT.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMSQRT.data deleted file mode 100644 index d35a4d752cf..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMSQRT.data +++ /dev/null @@ -1,28 +0,0 @@ -"12.34+5.67j", "3.60002071031685+0.787495469644252j" -"-1.234E-5+6.78E9i", "58223.7065120385+58223.7065120386i" -"3.5+2.5i", "1.9749889409211+0.632914936433528i" -"3.5+i", "1.88945163270197+0.264627043818521i" -"3.5", "1.87082869338697" -"3.5-i", "1.88945163270197-0.264627043818521i" -"3.5-2.5i", "1.9749889409211-0.632914936433528i" -"1+2.5i", "1.35878298553655+0.919940868634298i" -"1+i", "1.09868411346781+0.455089860562227i" -"1", "1" -"1-i", "1.09868411346781-0.455089860562227i" -"1-2.5i", "1.35878298553655-0.919940868634298i" -"2.5i", "1.11803398874989+1.11803398874989i" -"i", "0.707106781186548+0.707106781186547i" -"0", "0" -"-i", "0.707106781186548-0.707106781186547i" -"-2.5i", "1.11803398874989-1.11803398874989i" -"-1+2.5i", "0.919940868634298+1.35878298553655i" -"-1+i", "0.455089860562227+1.09868411346781i" -"-1", "6.12303176911189E-017+i" -"-1-i", "0.455089860562227-1.09868411346781i" -"-1-2.5i", "0.919940868634298-1.35878298553655i" -"-3.5+2.5i", "0.632914936433528+1.9749889409211i" -"-3.5+i", "0.264627043818521+1.88945163270197i" -"-3.5", "1.14551435241745E-016+1.87082869338697i" -"-3.5-i", "0.264627043818521-1.88945163270197i" -"-3.5-2.5i", "0.632914936433528-1.9749889409211i" -"9", "3" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMSUB.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMSUB.data deleted file mode 100644 index 024d35859fe..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMSUB.data +++ /dev/null @@ -1,10 +0,0 @@ -"12.34+5.67j", "123.45+67.89i", "#NUM!" -"123.45+67.89j", "12.34+5.67j", "111.11+62.22j" -"12.34+5.67j", "123.45+67.89j", "-111.11-62.22j" -"12.34+5.67i", "123.45+67.89i", "123.45+67.89i", "-111.11-62.22i" -"-12.34-5.67i", "123.45-67.89i", "-135.79+62.22i" -"12.34-5.67i", "-123.45-67.89i", "135.79+62.22i" -"-12.34-5.67i", "-123.45-67.89i", "111.11+62.22i" -"-12.34-5.67i", "-123.45-67.89", "#NUM!" -"-12.34-5.67j", "-123.45-67.89", "#NUM!" -"-12.34-5.67", "-123.45-67.89j", "#NUM!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMSUM.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMSUM.data deleted file mode 100644 index e63aed946ce..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMSUM.data +++ /dev/null @@ -1,10 +0,0 @@ -"12.34+5.67j", "123.45+67.89i", "#NUM!" -"12.34+5.67j", "123.45+67.89j", "135.79+73.56j" -"12.34-5.67i", "123.45+67.89i", "135.79+62.22i" -"12.34+5.67i", "123.45-67.89i", "135.79-62.22i" -"12.34-5.67i", "123.45-67.89i", "135.79-73.56i" -"12.34+5.67i", "123.45+67.89i", "123.45+67.89i", "259.24+141.45i" -"12.34+5.67i", "123.45+67.89i", "123.45+67.89j", "#NUM!" -"-12.34-5.67i", "123.45-67.89i", "111.11-73.56i" -"12.34-5.67i", "-123.45-67.89i", "-111.11-73.56i" -"-12.34-5.67i", "-123.45-67.89i", "-135.79-73.56i" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/OCT2BIN.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/OCT2BIN.data deleted file mode 100644 index 1f212fd9d4c..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/OCT2BIN.data +++ /dev/null @@ -1,9 +0,0 @@ -"1357", "#NUM!" -"246", "10100110" -"3", 3, "011" -"12345", "#NUM!" -"123.45", "#NUM!" -"0", "0" -TRUE, "#VALUE!" -"3579", "#NUM!" -"7777777000", "1000000000" // 2's Complement diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/OCT2DEC.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/OCT2DEC.data deleted file mode 100644 index 19f6dbd69c8..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/OCT2DEC.data +++ /dev/null @@ -1,9 +0,0 @@ -"1357", "751" -"246", "166" -"12345", "5349" -"123.45", "#NUM!" -"0", "0" -TRUE, "#VALUE!" -"3579", "#NUM!" -"54", "44" -"7777777533", "-165" // 2's Complement diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/OCT2HEX.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/OCT2HEX.data deleted file mode 100644 index c18e7fdb5c9..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/OCT2HEX.data +++ /dev/null @@ -1,9 +0,0 @@ -"1357", "2EF" -"246", "A6" -"12345", "14E5" -"100", 4, "0040" -"123.45", "#NUM!" -"0", "0" -TRUE, "#VALUE!" -"3579", "#NUM!" -"7777777533", "FFFFFFFF5B" // 2's Complement diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/ACCRINT.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/ACCRINT.data deleted file mode 100644 index 5d92786fb5f..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/ACCRINT.data +++ /dev/null @@ -1,8 +0,0 @@ -#Issue date 1st Interest Settlement Rate Par Freq Basis Result -"2008-03-01", "2008-08-31", "2008-05-01", 0.10, 1000, 2, 0, 16.666666666667 -"2008-03-05", "2008-08-31", "2008-05-01", 0.10, 1000, 2, 0, 15.555555555556 -"2010-01-01", "2010-06-30", "2010-04-01", 0.08, 10000, 4, 202.222222222222 -"2008-03-05", "2008-08-31", "2008-05-01", -0.10, 1000, 2, 0, "#NUM!" -"Invalid Date", "2008-08-31", "2008-05-01", 0.10, 1000, 2, 0, "#VALUE!" -"2008-03-01", "2008-08-31", "2008-05-01", "ABC", 1000, 2, 0, "#VALUE!" -"2008-03-01", "2008-08-31", "2008-05-01", 0.10, 1000, 2, "ABC", "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/ACCRINTM.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/ACCRINTM.data deleted file mode 100644 index e43e93bb6cb..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/ACCRINTM.data +++ /dev/null @@ -1,6 +0,0 @@ -#Issue date Settlement Rate Par Basis Result -"2008-04-01", "2008-06-15", 0.10, 1000, 3, 20.547945205479 -"2010-01-01", "2010-12-31", 0.08, 10000, 800 -"2008-03-05", "2008-08-31", -0.10, 1000, 2, "#NUM!" -"Invalid Date", "2008-08-31", 0.10, 1000, 2, "#VALUE!" -"2008-03-01", "2008-08-31", "ABC", 1000, 2, "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/AMORDEGRC.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/AMORDEGRC.data deleted file mode 100644 index d753a6d00db..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/AMORDEGRC.data +++ /dev/null @@ -1,3 +0,0 @@ -#Cost Date purchased End of the 1st period Salvage Period Depreciation Basis Result -2400, "2008-08-19", "2008-12-31", 300, 1, 0.15, 1, 776 -150, "2011-01-01", "2011-09-30", 20, 1, 0.2, 4, 42 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/AMORLINC.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/AMORLINC.data deleted file mode 100644 index db6920ac20f..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/AMORLINC.data +++ /dev/null @@ -1,3 +0,0 @@ -#Cost Date purchased End of the 1st period Salvage Period Depreciation Basis Result -2400, "2008-08-19", "2008-12-31", 300, 1, 0.15, 1, 360 -150, "2011-01-01", "2011-09-30", 20, 1, 0.2, 4, 30 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/COUPDAYBS.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/COUPDAYBS.data deleted file mode 100644 index 5905db94e4f..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/COUPDAYBS.data +++ /dev/null @@ -1,6 +0,0 @@ -#Settlement Maturity Frequency Basis Result -"25-Jan-2007", "15-Nov-2008", 2, 1, 71 -"2011-01-01", "2012-10-25", 4, 66 -"Invalid Date", "15-Nov-2008", 2, 1, "#VALUE!" -"25-Jan-2007", "Invalid Date", 2, 1, "#VALUE!" -"25-Jan-2007", "15-Nov-2008", 3, 1, "#NUM!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/COUPDAYS.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/COUPDAYS.data deleted file mode 100644 index 26de7302155..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/COUPDAYS.data +++ /dev/null @@ -1,6 +0,0 @@ -#Settlement Maturity Frequency Basis Result -"25-Jan-2007", "15-Nov-2008", 2, 1, 181 -"2011-01-01", "2012-10-25", 4, 90 -"Invalid Date", "15-Nov-2008", 2, 1, "#VALUE!" -"25-Jan-2007", "Invalid Date", 2, 1, "#VALUE!" -"25-Jan-2007", "15-Nov-2008", 3, 1, "#NUM!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/COUPDAYSNC.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/COUPDAYSNC.data deleted file mode 100644 index 91b9f73c4d9..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/COUPDAYSNC.data +++ /dev/null @@ -1,6 +0,0 @@ -#Settlement Maturity Frequency Basis Result -"25-Jan-2007", "15-Nov-2008", 2, 1, 110 -"2011-01-01", "2012-10-25", 4, 24 -"Invalid Date", "15-Nov-2008", 2, 1, "#VALUE!" -"25-Jan-2007", "Invalid Date", 2, 1, "#VALUE!" -"25-Jan-2007", "15-Nov-2008", 3, 1, "#NUM!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/COUPNCD.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/COUPNCD.data deleted file mode 100644 index fe5bba5d1b5..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/COUPNCD.data +++ /dev/null @@ -1,6 +0,0 @@ -#Settlement Maturity Frequency Basis Result -"25-Jan-2007", "15-Nov-2008", 2, 1, 39217 -"2011-01-01", "2012-10-25", 4, 40568 -"Invalid Date", "15-Nov-2008", 2, 1, "#VALUE!" -"25-Jan-2007", "Invalid Date", 2, 1, "#VALUE!" -"25-Jan-2007", "15-Nov-2008", 3, 1, "#NUM!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/COUPNUM.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/COUPNUM.data deleted file mode 100644 index 43f77cd735f..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/COUPNUM.data +++ /dev/null @@ -1,7 +0,0 @@ -#Settlement Maturity Frequency Basis Result -"25-Jan-2007", "15-Nov-2008", 2, 1, 4 -"2011-01-01", "2012-10-25", 4, 0, 8 -"Invalid Date", "15-Nov-2008", 2, 1, "#VALUE!" -"25-Jan-2007", "Invalid Date", 2, 1, "#VALUE!" -"25-Jan-2007", "15-Nov-2008", 3, 1, "#NUM!" -"01-Jan-2008", "31-Dec-2012", 1, 1, 5 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/COUPPCD.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/COUPPCD.data deleted file mode 100644 index 86212afa8da..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/COUPPCD.data +++ /dev/null @@ -1,6 +0,0 @@ -#Settlement Maturity Frequency Basis Result -"25-Jan-2007", "15-Nov-2008", 2, 1, 39036 -"2011-01-01", "2012-10-25", 4, 40476 -"Invalid Date", "15-Nov-2008", 2, 1, "#VALUE!" -"25-Jan-2007", "Invalid Date", 2, 1, "#VALUE!" -"25-Jan-2007", "15-Nov-2008", 3, 1, "#NUM!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/CUMIPMT.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/CUMIPMT.data deleted file mode 100644 index 8427c465164..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/CUMIPMT.data +++ /dev/null @@ -1,10 +0,0 @@ -#rate nper pv start_period end_period type result -0.0075, 360, 125000, 13, 24, 0, -11135.232130751 -0.0075, 360, 125000, 1, 1, 0, -937.50 -0.004166666667, 60, 50000, 1, 12, 0, -2294.9775375121 -0.004166666667, 60, 50000, 13, 24, 0, -1833.1000667254 -0.004166666667, 60, 50000, 25, 36, 0, -1347.5920679425 -0.004166666667, 60, 50000, 37, 48, 0, -837.24455850309 -0.004166666667, 60, 50000, 49, 60, 0, -300.78670189939 -0.0075, 360, 125000, 24, 13, 0, "#VALUE!" -0.0075, 360, 125000, 24, 13, 2, "#NUM!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/CUMPRINC.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/CUMPRINC.data deleted file mode 100644 index 65e6d6d14b8..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/CUMPRINC.data +++ /dev/null @@ -1,10 +0,0 @@ -#rate nper pv start_period end_period type result -0.0075, 360, 125000, 13, 24, 0, -934.10712342088 -0.0075, 360, 125000, 1, 1, 0, -68.278271180977 -0.004166666667, 60, 50000, 1, 12, 0, -9027.7626490046 -0.004166666667, 60, 50000, 13, 24, 0, -9489.6401197913 -0.004166666667, 60, 50000, 25, 36, 0, -9975.1481185741 -0.004166666667, 60, 50000, 37, 48, 0, -10485.495628014 -0.004166666667, 60, 50000, 49, 60, 0, -11021.953484617 -0.0075, 360, 125000, 24, 13, 0, "#VALUE!" -0.0075, 360, 125000, 24, 13, 2, "#NUM!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/DB.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/DB.data deleted file mode 100644 index e8c5fcf7901..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/DB.data +++ /dev/null @@ -1,17 +0,0 @@ -#cost salvage life period month result -1000000, 100000, 6, 1, 7, 186083.33333333 -1000000, 100000, 6, 2, 7, 259639.41666667 -1000000, 100000, 6, 3, 7, 176814.44275 -1000000, 100000, 6, 4, 7, 120410.63551275 -1000000, 100000, 6, 5, 7, 81999.642784183 -1000000, 100000, 6, 6, 7, 55841.756736028 -1000000, 100000, 6, 7, 7, 15845.098473848 -10000, 1000, 5, 1, 6, 1845.00 -10000, 1000, 5, 2, 6, 3009.195 -10000, 1000, 5, 3, 6, 1898.802045 -10000, 1000, 5, 4, 6, 1198.144090395 -10000, 1000, 5, 5, 6, 756.02892103925 -10000, 1000, 5, 6, 6, 238.52712458788 -0, 0, 5, 6, 6, 0.0 --1000, 100, 5, 6, 6, "#NUM!" -"ABC", 100, 5, 6, 6, "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/DDB.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/DDB.data deleted file mode 100644 index 2dfd5205641..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/DDB.data +++ /dev/null @@ -1,16 +0,0 @@ -#cost salvage life period month result -2400, 300, 36500, 1, 0.13150684931507 -2400, 300, 36500, 2, 0.13149964346031 -2400, 300, 36500, 7, 0.13146362010871 -2400, 300, 36500, 7, 14, 0.91843145432708 -2400, 300, 120, 1, 2, 40.00 -2400, 300, 10, 1, 2, 480.00 -2400, 300, 10, 2, 1.5, 306.00 -2400, 300, 10, 10, 22.12254720000030 -10000, 1000, 5, 1, 4000.00 -10000, 1000, 5, 2, 2400.00 -10000, 1000, 5, 3, 1440.00 -10000, 1000, 5, 4, 864.00 -10000, 1000, 5, 5, 296.00 --2400, 300, 36500, 1, "#NUM!" -"ABC", 300, 36500, 1, "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/DISC.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/DISC.data deleted file mode 100644 index b5790c74c48..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/DISC.data +++ /dev/null @@ -1,6 +0,0 @@ -#settlement maturity price redemption basis result -"2007-01-25", "2007-06-15", 97.975, 100, 1, 0.052420213 -"2010-04-01", "2015-03-31", 95, 100, 0.01 -"2010-04-01", "2015-03-31", 0, 100, "#NUM!" -"2010-04-01", "2015-03-31", "ABC", 100, "#VALUE!" -"Invalid Date", "2007-06-15", 97.975, 100, 1, "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/DOLLARDE.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/DOLLARDE.data deleted file mode 100644 index c41b51dc19a..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/DOLLARDE.data +++ /dev/null @@ -1,10 +0,0 @@ -#fractional_dollar fraction result -1.02, 16, 1.125 -1.1, 32, 1.3125 -1.01, 16, 1.0625 -1.1, 16, 1.625 -1.03, 32, 1.09375 -1.3, 32, 1.9375 -1.12, 32, 1.375 -1.2345, 0, "#DIV/0!" -1.2345, -2, "#NUM!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/DOLLARFR.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/DOLLARFR.data deleted file mode 100644 index a83a7231f66..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/DOLLARFR.data +++ /dev/null @@ -1,10 +0,0 @@ -#decimal_dollar fraction result -1.125, 16, 1.02 -1.125, 32, 1.04 -1.0625, 16, 1.01 -1.625, 16, 1.1 -1.09375, 32, 1.03 -1.9375, 32, 1.3 -1.375, 32, 1.12 -1.2345, 0, "#DIV/0!" -1.2345, -2, "#NUM!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/EFFECT.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/EFFECT.data deleted file mode 100644 index 34de2b2c6e0..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/EFFECT.data +++ /dev/null @@ -1,6 +0,0 @@ -#nominal_rate npery Result -0.0525, 4, 0.053542667370758 -0.10, 4, 0.103812890625 -0.10, 2, 0.1025 -0.025, 2, 0.02515625 -1, 0, "#NUM!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/FV.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/FV.data deleted file mode 100644 index 2955e9a23db..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/FV.data +++ /dev/null @@ -1,9 +0,0 @@ -#rate nper pmt pv type Result -0.005, 10, -200, -500, 1, 2581.4033740601 -0.01, 12, -1000, 12682.503013197 -0.009166666667, 35, -2000, , 1, 82846.246372418 -0.005, 12, -100, -1000, 1, 2301.4018303409 -0.004166666667, 60, -1000, 68006.082841536 -0.025, 16, -2000, 0, 1, 39729.460894166 -0.1, 12, -100, 0, 2, "#NUM!" -0.0, 12, -100, -100, 1300 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/FVSCHEDULE.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/FVSCHEDULE.data deleted file mode 100644 index 0b5ad893e74..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/FVSCHEDULE.data +++ /dev/null @@ -1,4 +0,0 @@ -#principal schedule Result -1, {0.09|0.11|0.1}, 1.33089 -10, {0.09;0.11;0.1}, 13.3089 -10000, {0.05|0.05|0.035|0.035|0.035}, 12223.614571875 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/INTRATE.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/INTRATE.data deleted file mode 100644 index 38195a427f9..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/INTRATE.data +++ /dev/null @@ -1,6 +0,0 @@ -#Settlement Maturity Investment Redemption Basis Result -"2008-02-15", "2008-05-15", 1000000, 1014420, 2, 0.05768 -"2005-04-01", "2010-03-31", 1000, 2125, 0.225 -"2008-02-15", "2008-05-15", 1000000, 1014420, "ABC", "#VALUE!" -"2008-02-15", "2008-05-15", 1000000, -1014420, 2, "#NUM!" -"Invalid Date", "2008-05-15", 1000000, 1014420, 2, "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/IPMT.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/IPMT.data deleted file mode 100644 index 9d5dab00d56..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/IPMT.data +++ /dev/null @@ -1,9 +0,0 @@ -#rate per nper pv fv type Result -0.008333333333, 3, 3, 8000, -22.406893015021 -0.10, 3, 3, 8000, -292.44712990937 -0.004166666667, 1, 60, 50000, -208.33333335 -0.004166666667, 2, 60, 50000, -205.26988189617 -0.00875, 1, 8, 10000, 5000, 1, 0.00 -0.00875, 2, 8, 10000, 5000, 1, -70.968650395559 -0.005, 2, 8, 2500, 200, 6, "#NUM!" -0.005, 8, 2, 2500, 200, 1, "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/IRR.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/IRR.data deleted file mode 100644 index 0d4458ff699..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/IRR.data +++ /dev/null @@ -1,6 +0,0 @@ -#values guess Result -{-70000;12000;15000;18000;21000}, -0.021244848273410 -{-70000;12000;15000;18000;21000;26000}, 0.08663094803652 -{-70000;12000;15000;18000}, 0.10, -0.18213746414550 -{-100;20|24|28.80}, -0.13618951095869 -{-100;20|24|28.80|34.56|41.47}, 0.130575756371527 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/ISPMT.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/ISPMT.data deleted file mode 100644 index eac8167d193..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/ISPMT.data +++ /dev/null @@ -1,5 +0,0 @@ -#rate per nper pv result -0.008333333333, 1, 36, 8000000, -64814.814812222 -0.10, 1, 3, 8000000, -533333.33333333 -0.004166666667, 1, 60, 50000, -204.8611111275 -0.004166666667, 2, 60, 50000, -201.388888905 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/MIRR.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/MIRR.data deleted file mode 100644 index f91b030bba1..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/MIRR.data +++ /dev/null @@ -1,6 +0,0 @@ -#values finance_rate reinvestment_rate Result -{-120000;39000|30000|21000|37000|46000}, 0.10, 0.12, 0.12609413036591 -{-120000;39000|30000|21000}, 0.10, 0.12, -0.048044655249981 -{-120000;39000|30000|21000|37000|46000}, 0.10, 0.14, 0.13475911082831 -{-100;12|14|11}, 5.5, 5, 0.74021752686287 -{-100;12|14|11|13|16}, 5.5, 5, 1.8579321744785 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/NOMINAL.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/NOMINAL.data deleted file mode 100644 index df78c55343b..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/NOMINAL.data +++ /dev/null @@ -1,6 +0,0 @@ -#effect_rate npery result -0.053543, 4, 0.052500319868356 -0.10, 4, 0.09645475633778 -0.10, 2, 0.097617696340303 -0.025, 12, 0.024718035238113 --0.025, 12, "#NUM!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/NPER.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/NPER.data deleted file mode 100644 index 205d0aabfe2..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/NPER.data +++ /dev/null @@ -1,10 +0,0 @@ -#rate pmt pv fv type result -0.01, -100, -1000, 10000, 1, 59.673865674295 -0.01, -100, -1000, 10000, 60.082122853762 -0.01, -100, -1000, -9.5785940398132 -0.003333333333, -1000, 50000, 54.78757726 -0.015, -1200, 9000, 5000, 1, 11.90373729 -0.015, -1200, 9000, 5000, 2, "#NUM!" -0.015, 0.0, 0.0, 5000, 1, "#NUM!" -0.0, 0.0, -500, 5000, 1, "#NUM!" -0.0, -50, -250, 150, 1, -2.0 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/NPV.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/NPV.data deleted file mode 100644 index c927fa5427d..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/NPV.data +++ /dev/null @@ -1,5 +0,0 @@ -#rate values result -0.10, -10000, 3000, 4200, 6800, 1188.4434123352 -0.08, 8000, 9200, 10000, 12000, 14500, 41922.061554932 -0.08, 8000, 9200, 10000, 12000, 14500, -9000, 36250.534912984 -0.05, 2000, 2400, 2900, 3500, 4100, 12678.677633095 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/PRICE.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/PRICE.data deleted file mode 100644 index c36be488b0e..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/PRICE.data +++ /dev/null @@ -1,10 +0,0 @@ -#Settlement Maturity Rate Yield Redemption Frequency Basis Result -"15-Feb-2008", "15-Nov-2017", 0.0575, 0.065, 100, 2, 0, 94.6343616213221 -"15-Feb-2008", "15-Nov-2017", 0.0575, 0.065, 100, 2, 1, 94.6354492078772 -"15-Feb-2008", "15-Nov-2017", 0.0575, 0.065, 100, 2, 2, 94.6365640300251 -"15-Feb-2008", "15-Nov-2017", 0.0575, 0.065, 100, 2, 3, 94.6351747967845 -"01-Apr-2012", "31-Mar-2020", 0.12, 0.10, 100, 2, NULL, 110.8344835932160 -"01-Apr-2012", "31-Mar-2020", 0.12, 0.10, 100, 2, 1, 110.8345373958590 -"01-Apr-2012", "31-Mar-2020", 0.12, 0.10, 100, 2, 2, 110.8344835932160 -"01-Apr-2012", "31-Mar-2020", 0.12, 0.10, 100, 2, 3, 110.8345285514390 -"01-Apr-2012", "31-Mar-2020", 0.12, 0.10, 100, 4, 3, 110.9217329631980 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/RATE.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/RATE.data deleted file mode 100644 index 2dd8449ebd0..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/RATE.data +++ /dev/null @@ -1,11 +0,0 @@ -#Periods Payment Present Value Future Value Type Guess Result -48, -200, 8000, 0.0077014724882014 -60, -6000, 120000, 0.0467819164224934 -60, -1000, 120000, -0.0204429522193565 -24, -250, 5000, 0.0151308439023434 -24, -250, 5000, NULL, 1, 0.0165501190667120 -208, -700, 8000, 0.0874999976840937 -10, -1000, 6500, 0.0871137556058636 -6, -1000, 100000, -126068, 0.0484721272835728 -6, 1000, 100000, -126068, 0.0302728738275435 -6, -1000, -100000, 126068, 0, 0.0302728738275437 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/XIRR.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/XIRR.data deleted file mode 100644 index 36a8e23dd8a..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/XIRR.data +++ /dev/null @@ -1,4 +0,0 @@ -#values dates guess Result -{-10000;2750|4250|3250|2750|46000}, {"2008-01-01";"2008-03-01"|"2008-10-30"|"2009-02-15"|"2009-04-01"}, 0.10, 0.373362535 -{-100;20|40|25}, {"2010-01-01";"2010-04-01"|"2010-10-01"|"2011-02-01"}, -0.3024 -{-100;20|40|25|8|15}, {"2010-01-01";"2010-04-01"|"2010-10-01"|"2011-02-01"|"2011-03-01"|"2011-06-01"}, 0.2095 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/ERROR_TYPE.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/ERROR_TYPE.data deleted file mode 100644 index f2722937d6f..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/ERROR_TYPE.data +++ /dev/null @@ -1,14 +0,0 @@ - "#N/A" -NULL, "#N/A" --1, "#N/A" -1.25, "#N/A" -"", "#N/A" -"2.5", "#N/A" -TRUE, "#N/A" -"#NULL!", 1 -"#DIV/0!", 2 -"#VALUE!", 3 -"#REF!", 4 -"#NAME?", 5 -"#NUM!", 6 -"#N/A", 7 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_BLANK.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_BLANK.data deleted file mode 100644 index 1daa126dad5..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_BLANK.data +++ /dev/null @@ -1,16 +0,0 @@ - TRUE -NULL, TRUE --1, FALSE -0, FALSE -9, FALSE -1.5, FALSE -"", FALSE -"-1", FALSE -"2", FALSE -"-1.5", FALSE -"ABC", FALSE -"#VALUE!", FALSE -"#N/A", FALSE -"TRUE", FALSE -TRUE, FALSE -FALSE, FALSE diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_ERR.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_ERR.data deleted file mode 100644 index e6384d14f69..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_ERR.data +++ /dev/null @@ -1,16 +0,0 @@ - FALSE -NULL, FALSE --1, FALSE -0, FALSE -9, FALSE -1.5, FALSE -"", FALSE -"-1", FALSE -"2", FALSE -"-1.5", FALSE -"ABC", FALSE -"#VALUE!", TRUE -"#N/A", FALSE -"TRUE", FALSE -TRUE, FALSE -FALSE, FALSE diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_ERROR.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_ERROR.data deleted file mode 100644 index 244807a12ad..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_ERROR.data +++ /dev/null @@ -1,16 +0,0 @@ - FALSE -NULL, FALSE --1, FALSE -0, FALSE -9, FALSE -1.5, FALSE -"", FALSE -"-1", FALSE -"2", FALSE -"-1.5", FALSE -"ABC", FALSE -"#VALUE!", TRUE -"#N/A", TRUE -"TRUE", FALSE -TRUE, FALSE -FALSE, FALSE diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_EVEN.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_EVEN.data deleted file mode 100644 index 8f985df4097..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_EVEN.data +++ /dev/null @@ -1,20 +0,0 @@ - "#NAME?" -NULL, "#NAME?" --1, FALSE -0, TRUE -9, FALSE -1.25, FALSE -1.5, FALSE -2.25, TRUE -2.5, TRUE -"", "#VALUE!" -"-1", FALSE -"2", TRUE -"-1.5", FALSE -"2.5", TRUE -"ABC", "#VALUE!" -"#VALUE!", "#VALUE!" -"#N/A", "#VALUE!" -"TRUE", "#VALUE!" -TRUE, "#VALUE!" -FALSE, "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_LOGICAL.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_LOGICAL.data deleted file mode 100644 index d977ba7b3ff..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_LOGICAL.data +++ /dev/null @@ -1,16 +0,0 @@ - FALSE -NULL, FALSE --1, FALSE -0, FALSE -9, FALSE -1.5, FALSE -"", FALSE -"-1", FALSE -"2", FALSE -"-1.5", FALSE -"ABC", FALSE -"#VALUE!", FALSE -"#N/A", FALSE -"TRUE", FALSE -TRUE, TRUE -FALSE, TRUE diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_NA.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_NA.data deleted file mode 100644 index be96e6bf2db..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_NA.data +++ /dev/null @@ -1,16 +0,0 @@ - FALSE -NULL, FALSE --1, FALSE -0, FALSE -9, FALSE -1.5, FALSE -"", FALSE -"-1", FALSE -"2", FALSE -"-1.5", FALSE -"ABC", FALSE -"#VALUE!", FALSE -"#N/A", TRUE -"TRUE", FALSE -TRUE, FALSE -FALSE, FALSE diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_NONTEXT.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_NONTEXT.data deleted file mode 100644 index 223053a256f..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_NONTEXT.data +++ /dev/null @@ -1,16 +0,0 @@ - TRUE -NULL, TRUE --1, TRUE -0, TRUE -9, TRUE -1.5, TRUE -"", FALSE -"-1", FALSE -"2", FALSE -"-1.5", FALSE -"ABC", FALSE -"#VALUE!", TRUE -"#N/A", TRUE -"TRUE", FALSE -TRUE, TRUE -FALSE, TRUE diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_NUMBER.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_NUMBER.data deleted file mode 100644 index 525d0fe7e2f..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_NUMBER.data +++ /dev/null @@ -1,16 +0,0 @@ - FALSE -NULL, FALSE --1, TRUE -0, TRUE -9, TRUE -1.5, TRUE -"", FALSE -"-1", FALSE -"2", FALSE -"-1.5", FALSE -"ABC", FALSE -"#VALUE!", FALSE -"#N/A", FALSE -"TRUE", FALSE -TRUE, FALSE -FALSE, FALSE diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_ODD.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_ODD.data deleted file mode 100644 index 0cf0741eafe..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_ODD.data +++ /dev/null @@ -1,20 +0,0 @@ - "#NAME?" -NULL, "#NAME?" --1, TRUE -0, FALSE -9, TRUE -1.25, TRUE -1.5, TRUE -2.25, FALSE -2.5, FALSE -"", "#VALUE!" -"-1", TRUE -"2", FALSE -"-1.5", TRUE -"2.5", FALSE -"ABC", "#VALUE!" -"#VALUE!", "#VALUE!" -"#N/A", "#VALUE!" -"TRUE", "#VALUE!" -TRUE, "#VALUE!" -FALSE, "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_TEXT.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_TEXT.data deleted file mode 100644 index 3f3abf1b63b..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_TEXT.data +++ /dev/null @@ -1,16 +0,0 @@ - FALSE -NULL, FALSE --1, FALSE -0, FALSE -9, FALSE -1.5, FALSE -"", TRUE -"-1", TRUE -"2", TRUE -"-1.5", TRUE -"ABC", TRUE -"#VALUE!", FALSE -"#N/A", FALSE -"TRUE", TRUE -TRUE, FALSE -FALSE, FALSE diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/N.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/N.data deleted file mode 100644 index 9fc130e0a51..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/N.data +++ /dev/null @@ -1,20 +0,0 @@ - 0 -NULL, 0 --1, -1 -1.25, 1.25 -"", 0 -"2.5", 0 -"TRUE", 0 -"ABCDE", 0 -TRUE, 1 -"#DIV/0!", "#DIV/0!" -"#NUM!", "#NUM!" -{}, 0 -{123}, 123 -{123|456}, 123 -{123|"A"}, 123 -{"A"|123}, 0 -{"A"|123;456|789}, 0 -{123|"A";456|789}, 123 -{123|456;"A"|789}, 123 -{123|456;789|"A"}, 123 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/TYPE.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/TYPE.data deleted file mode 100644 index 52d168802b1..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/TYPE.data +++ /dev/null @@ -1,16 +0,0 @@ - 1 -NULL, 1 --1, 1 -1.25, 1 -"", 2 -"2.5", 2 -"TRUE", 2 -"ABCDE", 2 -TRUE, 4 -"#DIV/0!", 16 -"#NUM!", 16 -{}, 1 -{1}, 1 -{1;2;3}, 64 -{1|2|3;4|5|6;7|8|9}, 64 -{|;|}, 64 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Logical/AND.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Logical/AND.data deleted file mode 100644 index 76870343e5d..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Logical/AND.data +++ /dev/null @@ -1,21 +0,0 @@ -"#VALUE!" // No arguments -NULL, TRUE // NULL -TRUE, NULL, TRUE // Boolean TRUE and NULL -FALSE, NULL, FALSE // Boolean FALSE and NULL -TRUE, TRUE, TRUE // Both TRUE Booleans -TRUE, FALSE, FALSE // Mixed Booleans -FALSE, TRUE, FALSE // Mixed Booleans -FALSE, FALSE, FALSE // Both FALSE Booleans -TRUE, TRUE, FALSE, FALSE // Multiple Mixed Booleans -TRUE, TRUE, TRUE, TRUE // Multiple TRUE Booleans -FALSE, FALSE, FALSE, FALSE, FALSE // Multiple FALSE Booleans --1, -2, TRUE -0, 0, FALSE -0, 1, FALSE -1, 1, TRUE -"1",1, "#VALUE!" -"TRUE", 1, TRUE // 'TRUE' String -"FALSE",TRUE, FALSE // 'FALSE' String -"ABCD", 1, "#VALUE!" // Non-numeric String --2, 1, TRUE --2, 0, FALSE diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Logical/IF.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Logical/IF.data deleted file mode 100644 index 23017b5b396..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Logical/IF.data +++ /dev/null @@ -1,7 +0,0 @@ -0 -TRUE, 0 -FALSE, FALSE -TRUE, "ABC", "ABC" -FALSE, "ABC", FALSE -TRUE, "ABC", "XYZ", "ABC" -FALSE, "ABC", "XYZ", "XYZ" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Logical/IFERROR.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Logical/IFERROR.data deleted file mode 100644 index 2095481f0c3..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Logical/IFERROR.data +++ /dev/null @@ -1,8 +0,0 @@ -, "Error", NULL -TRUE, "Error", TRUE -42, "Error", 42 -"", "Error", "" -"ABC", "Error", "ABC" -"#VALUE!", "Error", "Error" -"#NAME?", "Error", "Error" -"#N/A", "Error", "Error" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Logical/NOT.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Logical/NOT.data deleted file mode 100644 index adc515d8252..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Logical/NOT.data +++ /dev/null @@ -1,20 +0,0 @@ -TRUE -NULL, TRUE --1, FALSE -0, TRUE -1, FALSE -2, FALSE --1.5, FALSE -1.5, FALSE -"-1", "#VALUE!" -"0", "#VALUE!" -"1", "#VALUE!" -"2", "#VALUE!" -"-1.5", "#VALUE!" -"1.5", "#VALUE!" -"", "#VALUE!" -"ABC", "#VALUE!" -"FALSE",TRUE -"TRUE", FALSE -TRUE, FALSE -FALSE, TRUE diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Logical/OR.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Logical/OR.data deleted file mode 100644 index 738916ee25e..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Logical/OR.data +++ /dev/null @@ -1,20 +0,0 @@ -"#VALUE!" // No arguments -NULL, FALSE // NULL -TRUE, NULL, TRUE // Boolean TRUE and NULL -FALSE, NULL, FALSE // Boolean FALSE and NULL -TRUE, TRUE, TRUE // Both TRUE Booleans -TRUE, FALSE, TRUE // Mixed Booleans -FALSE, TRUE, TRUE // Mixed Booleans -FALSE, FALSE, FALSE // Both FALSE Booleans -TRUE, TRUE, FALSE, TRUE // Multiple Mixed Booleans -TRUE, TRUE, TRUE, TRUE // Multiple TRUE Booleans -FALSE, FALSE, FALSE, FALSE, FALSE // Multiple FALSE Booleans --1, -2, TRUE -0, 0, FALSE -0, 1, TRUE -1, 1, TRUE -"TRUE", 1, TRUE // 'TRUE' String -"FALSE",TRUE, TRUE // 'FALSE' String -"ABCD", 1, "#VALUE!" // Non-numeric String --2, 1, TRUE --2, 0, TRUE diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/LookupRef/HLOOKUP.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/LookupRef/HLOOKUP.data deleted file mode 100644 index c29fdc95ded..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/LookupRef/HLOOKUP.data +++ /dev/null @@ -1,9 +0,0 @@ -10251, {"Order ID"|10247|10249|10250|10251|10252|10253;"Unit Price"|14.00|18.60|7.70|16.80|16.80|64.80;"Quantity"|12|9|10|6|20|40}, 2, FALSE, 16.8 -10251, {"Order ID"|10247|10249|10250|10251|10252|10253;"Unit Price"|14.00|18.60|7.70|16.80|16.80|64.80;"Quantity"|12|9|10|6|20|40}, 3, FALSE, 6.0 -10248, {"Order ID"|10247|10249|10250|10251|10252|10253;"Unit Price"|14.00|18.60|7.70|16.80|16.80|64.80;"Quantity"|12|9|10|6|20|40}, 2, FALSE, "#N/A" -10248, {"Order ID"|10247|10249|10250|10251|10252|10253;"Unit Price"|14.00|18.60|7.70|16.80|16.80|64.80;"Quantity"|12|9|10|6|20|40}, 2, TRUE, 14.0 -"Axles", {"Axles"|"Bearings"|"Bolts";4|4|9;5|7|10;6|8|11}, 2, TRUE, 4 -"Bearings", {"Axles"|"Bearings"|"Bolts";4|4|9;5|7|10;6|8|11}, 3, FALSE, 7 -"B", {"Axles"|"Bearings"|"Bolts";4|4|9;5|7|10;6|8|11}, 3, TRUE, 5 -"Bolts", {"Axles"|"Bearings"|"Bolts";4|4|9;5|7|10;6|8|11}, 4, 11 -3, {1|2|3;"a"|"b"|"c";"d"|"e"|"f"}, 2, TRUE, "c" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/LookupRef/VLOOKUP.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/LookupRef/VLOOKUP.data deleted file mode 100644 index 8fefc6cc0b3..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/LookupRef/VLOOKUP.data +++ /dev/null @@ -1,5 +0,0 @@ -1, {"Density"|"Viscosity"|"Temperature";0.457|3.55|500;0.525|3.25|400;0.616|2.93|300;0.675|2.75|250;0.746|2.57|200;0.835|2.38|150;0.946|2.17|100;1.09|1.95|50;1.29|1.71|0}, 2, FALSE, 2.17 -1, {"Density"|"Viscosity"|"Temperature";0.457|3.55|500;0.525|3.25|400;0.616|2.93|300;0.675|2.75|250;0.746|2.57|200;0.835|2.38|150;0.946|2.17|100;1.09|1.95|50;1.29|1.71|0}, 3, TRUE, 100 -.7, {"Density"|"Viscosity"|"Temperature";0.457|3.55|500;0.525|3.25|400;0.616|2.93|300;0.675|2.75|250;0.746|2.57|200;0.835|2.38|150;0.946|2.17|100;1.09|1.95|50;1.29|1.71|0}, 3, FALSE, "#N/A" -0.1, {"Density"|"Viscosity"|"Temperature";0.457|3.55|500;0.525|3.25|400;0.616|2.93|300;0.675|2.75|250;0.746|2.57|200;0.835|2.38|150;0.946|2.17|100;1.09|1.95|50;1.29|1.71|0}, 2, TRUE, "#N/A" -2, {"Density"|"Viscosity"|"Temperature";0.457|3.55|500;0.525|3.25|400;0.616|2.93|300;0.675|2.75|250;0.746|2.57|200;0.835|2.38|150;0.946|2.17|100;1.09|1.95|50;1.29|1.71|0}, 2, TRUE, 1.71 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/ATAN2.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/ATAN2.data deleted file mode 100644 index 47dade23884..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/ATAN2.data +++ /dev/null @@ -1,17 +0,0 @@ -#x_num y_num Result -0, 0, "#DIV/0!" -1, 1, 0.785398163397 --1, -1, -2.356194490192 --1, 1, 2.356194490192 -1, -1, -0.785398163397 -0.5, 1, 1.107148717794 --0.5, 2, 1.815774989922 -1, 0.8, 0.674740942224 -0.8, -0.6, -0.643501108793 -1, -9, -1.460139105621 -0.2, 0, 0.0 -0.1, 0.2, 1.107148717794 -0, 0.2, 1.570796326795 -"A", 0.2, "#VALUE!" -TRUE, 1, 0.785398163397 -FALSE, -2.5, -1.570796326795 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/CEILING.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/CEILING.data deleted file mode 100644 index ed46ca8bde1..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/CEILING.data +++ /dev/null @@ -1,21 +0,0 @@ -#number significance result -2.5, 1, 3.0 --2.5, -2, -4.0 -1.5, 0.1, 1.5 -0.234, 0.01, 0.24 --2.341, -0.1, -2.4 -8, 0, 0.0 -8, 1.5, 9.0 -8, -1.5, "#NUM!" --8, 1.5, "#NUM!" --8, -1.5, -9.0 -8.26, 0.05, 8.3 -2.341, 0.05, 2.35 -123.456, "#VALUE!" -"PHPExcel", "#VALUE!" -210.67, 1, 211.0 -210.67, 0.05, 210.70 -210.63, 0.05, 210.65 -2.98, 2, 4.0 --2.98, 2, "#NUM!" --4.5, -1, -5.0 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/COMBIN.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/COMBIN.data deleted file mode 100644 index 568ad14da79..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/COMBIN.data +++ /dev/null @@ -1,25 +0,0 @@ -#NumObjs NumInSet Result -7, 3, 35 -8, 2, 28 -8, 3, 56 -8, 4, 70 -100, 3, 161700 --7, -10, "#NUM!" --7, 10, "#NUM!" -7, -10, "#NUM!" -2, 3, "#NUM!" -2, 2, 1 -2, 1, 2 -2, 0, 1 -2.5, 2, 1 -"ABCD", "EFGH", "#VALUE!" -10, 5, 252 -10, 3, 120 -21, 5, 20349 -6, 1, 6 -6, 2, 15 -6, 3, 20 -6, 4, 15 -6, 5, 6 -6, 6, 1 -6, 7, "#NUM!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/EVEN.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/EVEN.data deleted file mode 100644 index 604533c23d0..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/EVEN.data +++ /dev/null @@ -1,17 +0,0 @@ -, 0 -5.4, 6 --5.4, -6 -1.5, 2 -0.1, 2 -3, 4 -2, 2 --2, -2 --1, -2 -"ABC", "#VALUE!" -TRUE, 2 -FALSE, 0 -0, 0 -210.61, 212 -2.98, 4 --2.98, -4 -6, 6 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/FACT.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/FACT.data deleted file mode 100644 index 6340f6c1b9a..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/FACT.data +++ /dev/null @@ -1,10 +0,0 @@ -5, 120 -1.9, 1 -0, 1 --4, "#NUM!" -1, 1 -3, 6 -6, 720 -10, 3628800 -3.2, 6 -"ABC", "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/FACTDOUBLE.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/FACTDOUBLE.data deleted file mode 100644 index 81ee2e94a71..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/FACTDOUBLE.data +++ /dev/null @@ -1,8 +0,0 @@ -0, 1 -6, 48 -7, 105 -5, 15 -8, 384 -13, 135135 --1, "#NUM!" -"ABC", "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/FLOOR.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/FLOOR.data deleted file mode 100644 index 29785f72341..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/FLOOR.data +++ /dev/null @@ -1,11 +0,0 @@ -2.5, 1, 2 --2.5, -2, -2 --2.5, 2, "#NUM!" -2.5, -2, "#NUM!" -123.456,0, "#DIV/0!" -1.5, 0.1, 1.5 -0.234, 0.01, 0.23 -123.456, "#VALUE!" -"ABC", "#VALUE!" -17, 3, 15 -19, 4, 16 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/GCD.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/GCD.data deleted file mode 100644 index ca673481efa..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/GCD.data +++ /dev/null @@ -1,20 +0,0 @@ -5, 2, 1 -24, 36, 12 -7, 1, 1 -5, 0, 5 -30, 15, 10, 5 -42, 56, 140, 14 -24, 28, 40, 4 -27, 45, 54, 9 -84, 126, 196, 14 -3, 5, 7, 1 -3, 5, 0, 1 -3, 5, -7, "#NUM!" -3, 6, 12, 3 -3, 6, "12", 3 -3, 6, "ABC", "#VALUE!" -3, 3 -15, 10, 25, 5 -0, 8, 12, 4 -7, 2, 1 -0, 0, 0 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/INT.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/INT.data deleted file mode 100644 index b5d8cd5c89f..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/INT.data +++ /dev/null @@ -1,19 +0,0 @@ -, 0 -5.4, 5 --5.4, -6 --3.2, -4 -1.5, 1 -0.1, 0 --0.1, -1 -3, 3 -2, 2 --2.01, -3 --2, -2 --1, -1 -"ABC", "#VALUE!" -TRUE, 1 -FALSE, 0 -0, 0 -"-3.5", -4 -8.9, 8 --8.9, -9 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/LCM.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/LCM.data deleted file mode 100644 index 8f402684110..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/LCM.data +++ /dev/null @@ -1,12 +0,0 @@ -5, 2, 10 -24, 36, 72 -3, 7, 12, 84 -24.9, 36.9, 72 -6, 22, 121, 726 -6, "ABC", "#VALUE!" -24, -12, "#NUM!" -3, 0, 0 -1, 5, 5 -15, 10, 25, 150 -1, 8, 12, 24 -7, 2, 14 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/LOG.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/LOG.data deleted file mode 100644 index 219ac59e095..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/LOG.data +++ /dev/null @@ -1,70 +0,0 @@ -#number base result -"ABC", "#VALUE!" -"123ABC", "#VALUE!" -1.2345, 0.0914910942679511 --1.5, -0.75, "#NUM!" -0, -0.75, "#NUM!" -3.75, -0.75, "#NUM!" --1.5, 0, "#NUM!" -0, 0, "#NUM!" -3.75, 0, "#NUM!" --0.75, 0.75, "#NUM!" -0, 0.75, "#NUM!" -0.75, 0.75, 1.0 -1.5, 0.75, -1.4094208396532100 -2.25, 0.75, -2.8188416793064200 -3, 0.75, -3.8188416793064200 -3.75, 0.75, -4.5945019399978900 -4.5, 0.75, -5.2282625189596300 --0.75, 1.5, "#NUM!" -0, 1.5, "#NUM!" -0.75, 1.5, -0.7095112913514550 -1.5, 1.5, 1.0 -2.25, 1.5, 2.0 -3, 1.5, 2.7095112913514500 -3.75, 1.5, 3.2598510045646600 -4.5, 1.5, 3.7095112913514500 --0.75, 2.25, "#NUM!" -0, 2.25, "#NUM!" -0.75, 2.25, -0.3547556456757270 -1.5, 2.25, 0.5 -2.25, 2.25, 1.0 -3, 2.25, 1.3547556456757300 -3.75, 2.25, 1.6299255022823300 -4.5, 2.25, 1.8547556456757300 --0.75, 3, "#NUM!" -0, 3, "#NUM!" -0.75, 3, -0.2618595071429150 -1.5, 3, 0.3690702464285430 -2.25, 3, 0.7381404928570850 -3, 3, 1.0 -3.75, 3, 1.2031140135750100 -4.5, 3, 1.3690702464285400 --0.75, 3.75, "#NUM!" -0, 3.75, "#NUM!" -0.75, 3.75, -0.2176514479827300 -1.5, 3.75, 0.3067624865675560 -2.25, 3.75, 0.6135249731351110 -3, 3.75, 0.8311764211178410 -3.75, 3.75, 1.0 -4.5, 3.75, 1.1379389076854000 --0.75, 4.5, "#NUM!" -0, 4.5, "#NUM!" -0.75, 4.5, -0.1912681309275550 -1.5, 4.5, 0.2695772896908150 -2.25, 4.5, 0.5391545793816300 -3, 4.5, 0.7304227103091850 -3.75, 4.5, 0.8787817986064220 -4.5, 4.5, 1.0 -64, 2, 6 -100, 2 -4, 0.5, -2 -500, 2.698970004336 -10, 1 -8, 2, 3 -86, 2.7182818, 4.454347342888 -20, 1.301029995664 -20, 10, 1.301029995664 -20, 25, 0.930676558073 -25, 5.1, 1.975690971574 -200, 3, 4.822736302150 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/MDETERM.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/MDETERM.data deleted file mode 100644 index 970bec5383c..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/MDETERM.data +++ /dev/null @@ -1,14 +0,0 @@ -{1|2|3;4|5|6;7|8|9}, 6.661338147750940E-16 -{1.1|2.2|3.3;4.4|5.5|6.6;7.7|8.8|9.9}, 1.61204383175573E-15 -{10|20|30;40|50|60;70|80|90}, -4.26325641456060E-12 -{8|1|6;3|5|7;4|9|2}, -3.6E+02 -{5|2;7|1}, -9 -{6|4|2;3|5|3;2|3|4}, 40 -{0.2|1;0.35|10.8}, 1.81 -{0.2|1|-0.9;0.35|10.8|4;-3.15|5|}, "#VALUE!" -{1|2;3|4}, -2 -{1|2|1;3|4|2;1|1|2}, -3 -{1|3|8|5;1|3|6|1;1|1|1|0;7|3|10|2}, 88 -{3|6|1;1|1|0;3|10|2}, 1 -{3|6;1|1}, -3 -{1|3|8|5;1|3|6|1}, "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/MINVERSE.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/MINVERSE.data deleted file mode 100644 index 8c9a962fa6d..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/MINVERSE.data +++ /dev/null @@ -1,15 +0,0 @@ -{1|2|3;4|5|6;7|8|9}, {-4.50359962737050E+15|9.00719925474099E+15|-4.50359962737050E+15;9.00719925474100E+15|-1.80143985094820E+16|9.00719925474099E+15;-4.50359962737050E+15|9.00719925474099E+15|-4.50359962737050E+15} -{10|20|30;40|50|60;70|80|90}, {7.03687441776639E+13|-1.40737488355328E+14|7.03687441776640E+13;-1.40737488355328E+14|2.81474976710656E+14|-1.40737488355328E+14;7.03687441776641E+13|-1.40737488355328E+14|7.03687441776640E+13} -{8|1|6;3|5|7;4|9|2}, {1.47222222222222E-01|-1.44444444444444E-01|6.38888888888889E-02;-6.11111111111111E-02|2.22222222222222E-02|1.05555555555556E-01;-1.94444444444444E-02|1.88888888888889E-01|-1.02777777777778E-01} -{4|-1;2|0}, {0|0.5;-1|2} -{1|2|1;3|4|-1;0|2|0}, {0.25|0.25|-0.75;0|0|0.5;0.75|-0.25|-0.25} -{1|4|1|1;1|4|0|1;2|3|1|2;3|2|6|4}, {3.2|-4.8|2.8|-1;0.2|0.2|0.2|0;1|-1|0|0;-4|5|-2|1} -{0.2|1;0.35|10.8}, {5.96685082872928|-0.55248618784530;-0.19337016574586|0.11049723756906} -{0.2|1|-0.9;0.35|10.8|4;-3.15|5}, "#VALUE!" -{1|2;3|4}, {-2|1;1.5|-0.5} -{1|2|1;3|4|2;1|1|2}, {-2|1|0;1.33333333333333|-0.33333333333333|-0.33333333333333;0.33333333333333|-0.33333333333333|0.66666666666667} -{2|3;4|5}, {-2.5|1.5;2|-1} -{5|8;7|9}, {-0.818181818181818|0.727272727272727;0.636363636363636|-0.454545454545455} -{45|78;17|50}, {0.054112554112554|-0.084415584415584;-0.018398268398268|0.048701298701299} -{2|2;2|1}, {-0.5|1.0;1|-1} -{1|4|6;7|4|10;15|16|20}, {-0.2941176470588230|0.0588235294117647|0.0588235294117647;0.0367647058823529|-0.2573529411764710|0.1176470588235290;0.1911764705882350|0.1617647058823530|-0.0882352941176471} \ No newline at end of file diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/MMULT.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/MMULT.data deleted file mode 100644 index 86c9bfdb416..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/MMULT.data +++ /dev/null @@ -1,12 +0,0 @@ -{1|2;3|4}, {1|2;3|4}, {7|10;15|22} -{1|2|3;4|5|6;7|8|9}, {1|2|3;4|5|6;7|8|9}, {30|36|42;66|81|96;102|126|150} -{1|2;3|4}, 2, "#VALUE!" // Mismatched dimensions -{1|2;3|4}, {2}, "#VALUE!" // Mismatched dimensions -{1.2;2.4}, {3.6|4.5}, {14.43|14.43;14.43|14.43} -2, {1|2;3|4}, "#VALUE!" // Mismatched dimensions -{2}, {1|2;3|4}, "#VALUE!" // Mismatched dimensions -{1|2;3|4}, {2|4}, "#VALUE!" -{1|2;3|4}, {2;4}, {{10};{22}} -{2|4}, {1|2;3|4}, {14|20} -{2;4}, {1|2;3|4}, "#VALUE!" // Mismatched dimensions -{1|2;3|4;5|6}, {1|2|3;4|5|6}, {9|12|15;19|26|33;29|40|51} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/MOD.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/MOD.data deleted file mode 100644 index 7e0aee6f460..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/MOD.data +++ /dev/null @@ -1,9 +0,0 @@ -19, 17, 2 -19, -13, -7 -34, 17, 0 -34, 0, "#DIV/0!" -3, 2, 1 --3, 2, 1 -3, -2, -1 --3, -2, -1 -2.5, 1.3, 1.2 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/MROUND.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/MROUND.data deleted file mode 100644 index fc68ed7bc48..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/MROUND.data +++ /dev/null @@ -1,11 +0,0 @@ -10, 3, 9 --10, -3, -9 -1.3, 0.2, 1.4 -5, 0, 0 -3.14159, 0.002, 3.142 --3.14159, -.02, -3.14 -31415.92654, 10, 31420 -31415.92654, 1, 31416 -5, -2, "#NUM!" -"ABC", 1, "#VALUE!" -1.234, "ABC", "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/MULTINOMIAL.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/MULTINOMIAL.data deleted file mode 100644 index c943f20a24b..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/MULTINOMIAL.data +++ /dev/null @@ -1,2 +0,0 @@ -2, 3, 4, 1260 -3, 1, 2, 5, 27720 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/ODD.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/ODD.data deleted file mode 100644 index 54898cc1cec..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/ODD.data +++ /dev/null @@ -1,13 +0,0 @@ -, 1 -5.4, 7 --5.4, -7 -1.5, 3 -0.1, 1 -3, 3 -2, 3 --2, -3 --1, -1 -"ABC", "#VALUE!" -TRUE, 1 -FALSE, 1 -0, 1 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/POWER.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/POWER.data deleted file mode 100644 index f00915e7282..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/POWER.data +++ /dev/null @@ -1,81 +0,0 @@ --1.5, -1.5, "#NUM!" --0.75, -1.5, "#NUM!" -0, -1.5, "#DIV/0!" -0.75, -1.5, 1.539600717839 -1.5, -1.5, 0.54433105395182 -2.25, -1.5, 0.2962962962963 -3, -1.5, 0.19245008972988 -3.75, -1.5, 0.13770607453182 -4.5, -1.5, 0.10475656017579 --1.5, -0.75, "#NUM!" --0.75, -0.75, "#NUM!" -0, -0.75, "#DIV/0!" -0.75, -0.75, 1.2408064788028 -1.5, -0.75, 0.73778794646688 -2.25, -0.75, 0.54433105395182 -3, -0.75, 0.43869133765083 -3.75, -0.75, 0.37108769116183 -4.5, -0.75, 0.32366118113822 --1.5, 0, 1 --0.75, 0, 1 -0, 0, "#NUM!" -0.75, 0, 1 -1.5, 0, 1 -2.25, 0, 1 -3, 0, 1 -3.75, 0, 1 -4.5, 0, 1 --1.5, 0.75, "#NUM!" --0.75, 0.75, "#NUM!" -0, 0.75, 0 -0.75, 0.75, 0.80592744886766 -1.5, 0.75, 1.35540300541477 -2.25, 0.75, 1.83711730708738 -3, 0.75, 2.27950705695478 -3.75, 0.75, 2.69478083972313 -4.5, 0.75, 3.08965071586068 --1.5, 1.5, "#NUM!" --0.75, 1.5, "#NUM!" -0, 1.5, 0 -0.75, 1.5, 0.64951905283833 -1.5, 1.5, 1.83711730708738 -2.25, 1.5, 3.375 -3, 1.5, 5.19615242270663 -3.75, 1.5, 7.26184377413891 -4.5, 1.5, 9.54594154601839 --1.5, 2.25, "#NUM!" --0.75, 2.25, "#NUM!" -0, 2.25, 0 -0.75, 2.25, 0.52346523324493 -1.5, 2.25, 2.49003431932572 -2.25, 2.25, 6.20027091141992 -3, 2.25, 11.8446661165724 -3.75, 2.25, 19.5690774636122 -4.5, 2.25, 29.4936251312199 --1.5, 3, -3.375 --0.75, 3, -0.421875 -0, 3, 0 -0.75, 3, 0.421875 -1.5, 3, 3.375 -2.25, 3, 11.390625 -3, 3, 27 -3.75, 3, 52.734375 -4.5, 3, 91.125 --1.5, 3.75, "#NUM!" --0.75, 3.75, "#NUM!" -0, 3.75, 0 -0.75, 3.75, 0.34000064249104 -1.5, 3.75, 4.57448514327484 -2.25, 3.75, 20.9259143260422 -3, 3.75, 61.546690537779 -3.75, 3.75, 142.107583344775 -4.5, 3.75, 281.544421482804 --1.5, 4.5, "#NUM!" --0.75, 4.5, "#NUM!" -0, 4.5, 0 -0.75, 4.5, 0.27401585041617 -1.5, 4.5, 6.20027091141992 -2.25, 4.5, 38.443359375 -3, 4.5, 140.296115413079 -3.75, 4.5, 382.948792776857 -4.5, 4.5, 869.873923380926 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/PRODUCT.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/PRODUCT.data deleted file mode 100644 index 9ff8b20c471..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/PRODUCT.data +++ /dev/null @@ -1,7 +0,0 @@ -5, 15, 30, 2250 -5, 15, 30, 2, 4500 -3, 6, 2, 8, 5, 1440 -3, 4, 12 -3, 4, 4.5, 54 -3, 4, 4.5, -6.78, -366.12 -3, 4, 4.5, -6.78, -2, 732.24 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/QUOTIENT.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/QUOTIENT.data deleted file mode 100644 index 16c3aa95821..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/QUOTIENT.data +++ /dev/null @@ -1,6 +0,0 @@ -5, 2, 2 -4.5, 3.1, 1 --10, 3, -3 -10, 2.2, 4 -5.5, 2.667, 2 --7, 2, -4 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/ROMAN.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/ROMAN.data deleted file mode 100644 index 69085897b81..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/ROMAN.data +++ /dev/null @@ -1,5 +0,0 @@ -49, "XLIX" -50, "L" -2012, "MMXII" -999, "CMXCIX" -499, "CDXCIX" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/ROUNDDOWN.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/ROUNDDOWN.data deleted file mode 100644 index 7bb42c0c1ab..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/ROUNDDOWN.data +++ /dev/null @@ -1,14 +0,0 @@ -662.79, 0, 662 -662.79, 1, 662.7 -54.1, -1, 50 -55.1, -1, 50 --23.67, 1, -23.6 -3.2, 0, 3 -3.2, 0.01, 3 -76.9, 0, 76 -3.14159, 3, 3.141 --3.14159, 1, -3.1 -31415.92654, -2, 31400 -31415.92654, -1, 31410 -"ABC", 1, "#VALUE!" -1.234, "ABC", "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/ROUNDUP.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/ROUNDUP.data deleted file mode 100644 index ba81e3db1af..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/ROUNDUP.data +++ /dev/null @@ -1,14 +0,0 @@ -662.79, 0, 663 -662.79, 1, 662.8 -54.1, -1, 60 -55.1, -1, 60 --23.62, 1, -23.7 -3.2, 0, 4 -3.2, 0.01, 4 -76.9, 0, 77 -3.14159, 3, 3.142 --3.14159, 1, -3.2 -31415.92654, -2, 31500 -31415.92654, -1, 31420 -"ABC", 1, "#VALUE!" -1.234, "ABC", "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/SERIESSUM.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/SERIESSUM.data deleted file mode 100644 index eb47f6843f3..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/SERIESSUM.data +++ /dev/null @@ -1,2 +0,0 @@ -5, 1, 1, {1|1|1|1|1}, 3905 -2, 1, 2, {1|2|3|4|5}, 3186 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/SIGN.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/SIGN.data deleted file mode 100644 index 8494da9e001..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/SIGN.data +++ /dev/null @@ -1,13 +0,0 @@ --1.5, -1 --1, -1 --0.5, -1 -0, 0 -0.5, 1 -1, 1 -1.5, 1 -2, 1 -2.5, 1 -"ABC", "#VALUE!" -TRUE, 1 -FALSE, 0 -"-3.5", -1 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/SQRTPI.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/SQRTPI.data deleted file mode 100644 index fc1ea52533a..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/SQRTPI.data +++ /dev/null @@ -1,15 +0,0 @@ -"ABC", "#VALUE!" --1.5, "#NUM!" --1, "#NUM!" --0.5, "#NUM!" -0, 0.000000000000000000 -0.5, 1.253314137315500000 -1, 1.772453850905520000 -1.5, 2.170803763674800000 -2, 2.506628274631000000 -2.5, 2.802495608198960000 -3, 3.069980123839470000 -3.5, 3.315957521978270000 -4, 3.544907701811030000 -4.5, 3.759942411946500000 -5, 3.963327297606010000 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/SUMSQ.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/SUMSQ.data deleted file mode 100644 index 557c5c05ef8..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/SUMSQ.data +++ /dev/null @@ -1,7 +0,0 @@ -3, 4, 25 -5, 2, 1, 3, 39 -5, 2, 1, 6, 66 -1, 3, 10 -1, 3, 2, 4, 30 -3, 5, 7, 83 -1, 2, 3, 14 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/TRUNC.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/TRUNC.data deleted file mode 100644 index 8c85bddc50f..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/TRUNC.data +++ /dev/null @@ -1,19 +0,0 @@ -3.14159, 2, 3.14 -3.14159, 3, 3.141 --3.14159, 2, -3.14 --3.14159, 3, -3.141 -31415.92654, 10, 31415.92654 --31415.92654, 10, -31415.92654 -31415.92654, 2, 31415.92 -31415.92654, -2, 31400 -31415.92654, -10, 0 --31415.92654, -10, 0 -12345.6789, -3, 12000 -12345.6789, -2, 12300 -12345.6789, -1, 12340 -12345.6789, 0, 12345 -12345.6789, 1, 12345.6 -12345.6789, 2, 12345.67 -12345.6789, 3, 12345.678 -"ABC", 2, "#VALUE!" -31415.92654, "ABC", "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/CHAR.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/CHAR.data deleted file mode 100644 index f4cbee5dbaa..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/CHAR.data +++ /dev/null @@ -1,5 +0,0 @@ -"ABC", "#VALUE!" --5, "#VALUE!" -65, "A" -123, "{" -126, "~" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/CLEAN.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/CLEAN.data deleted file mode 100644 index 21f0c0d13c4..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/CLEAN.data +++ /dev/null @@ -1,5 +0,0 @@ -"HELLO ", "HELLO " -" HELLO", "HELLO" -"HELLO WORLD", "HELLO WORLD" -TRUE, "TRUE" -NULL, NULL diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/CODE.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/CODE.data deleted file mode 100644 index d251fb6eb4e..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/CODE.data +++ /dev/null @@ -1,12 +0,0 @@ -, "#VALUE!" -"", "#VALUE!" -"ABC", 65 -123, 49 -TRUE, 84 -"DEF", 68 -"PHPExcel", 80 -1.5, 49 -"Mark Baker", 77 -"mark baker", 109 -"£125.00", 163 -"Бензин", 1234 \ No newline at end of file diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/CONCATENATE.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/CONCATENATE.data deleted file mode 100644 index 7b8984624e5..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/CONCATENATE.data +++ /dev/null @@ -1,3 +0,0 @@ -"ABCDE", "FGHIJ", "ABCDEFGHIJ" -1, 2, 3, "123" -"Boolean", "-", TRUE, "Boolean-TRUE" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/DOLLAR.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/DOLLAR.data deleted file mode 100644 index aee1b006088..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/DOLLAR.data +++ /dev/null @@ -1,6 +0,0 @@ -123.456, 2, '"$123.46"' -123.321, 2, '"$123.32"' -1234567, -3, '"$1,235,000"' -1234567, -5, '"$1,200,000"' -"ABC", 2, "#NUM!" -123.456, "ABC", "#NUM!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/FIND.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/FIND.data deleted file mode 100644 index 411150da480..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/FIND.data +++ /dev/null @@ -1,13 +0,0 @@ -"E", "QWERTYUIOP", 3 -"D", "ABCDEFGHI", 4 -"E", TRUE, 4 -"E", FALSE, 5 -"A", "Mark Baker", "#VALUE!" -"A", "MARK BAKER", 2 -"a", "Mark Baker", 2, 2 -"k", "Mark Baker", 2, 4 -"k", "Mark Baker", 5, 8 -"a", "Mark Baker", 3, 7 -"BITE", "BIT", "#VALUE!" -"", "Mark Baker", 1 -"", "Mark Baker", 8, 8 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/FIXED.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/FIXED.data deleted file mode 100644 index cd7d57bb593..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/FIXED.data +++ /dev/null @@ -1,5 +0,0 @@ -123456.789, 2, FALSE, '"123,456.79"' -123456.789, 1, TRUE, '"123456.8"' -123456.789, 2, TRUE, '"123456.79"' -"ABC", 2, NULL, "#NUM!" -123.456, "ABC", NULL, "#NUM!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/LEFT.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/LEFT.data deleted file mode 100644 index e76e009cc9e..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/LEFT.data +++ /dev/null @@ -1,6 +0,0 @@ -, 1, "" -"", 1, "" -"QWERTYUIOP", -1, "#VALUE!" -"ABCDEFGHI", 3, "ABC" -TRUE, 2, "TR" -FALSE, 2, "FA" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/LEN.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/LEN.data deleted file mode 100644 index 09676eae737..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/LEN.data +++ /dev/null @@ -1,6 +0,0 @@ -, 0 -"", 0 -"AbCdEfGhI", 9 -"MARK BAKER", 10 -TRUE, 4 -FALSE, 5 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/LOWER.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/LOWER.data deleted file mode 100644 index 04148f0bd5e..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/LOWER.data +++ /dev/null @@ -1,4 +0,0 @@ -"AbCdEfGhI", "abcdefghi" -"MARK BAKER", "mark baker" -TRUE, "true" -FALSE, "false" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/MID.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/MID.data deleted file mode 100644 index 5d9b503c896..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/MID.data +++ /dev/null @@ -1,9 +0,0 @@ -, 1, 1, "" -"", 1, 1, "" -"QWERTYUIOP", -1, 1, "#VALUE!" -"QWERTYUIOP", 5, -1, "#VALUE!" -"QWERTYUIOP", 5, "" -"QWERTYUIOP", 8, 20, "IOP" -"ABCDEFGHI", 4, 3, "DEF" -TRUE, 2, 1, "R" -FALSE, 2, 2, "AL" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/PROPER.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/PROPER.data deleted file mode 100644 index ca142494589..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/PROPER.data +++ /dev/null @@ -1,3 +0,0 @@ -"MARK BAKER", "Mark Baker" -TRUE, "True" -FALSE, "False" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/REPLACE.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/REPLACE.data deleted file mode 100644 index 7c8f414bac1..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/REPLACE.data +++ /dev/null @@ -1,4 +0,0 @@ -"QWERTYUIOP", 3, 3, "DFG", "QWDFGYUIOP" -"QWERTYUIOP", 5, 3, "DFG", "QWERDFGIOP" -"QWERTYUIOP", 3, 0, "DFG", "QWDFGERTYUIOP" -"QWERTYUIOP", 5, 0, "DFG", "QWERDFGTYUIOP" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/RIGHT.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/RIGHT.data deleted file mode 100644 index 02bf333219c..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/RIGHT.data +++ /dev/null @@ -1,6 +0,0 @@ -, 1, "" -"", 1, "" -"QWERTYUIOP", -1, "#VALUE!" -"ABCDEFGHI", 3, "GHI" -TRUE, 2, "UE" -FALSE, 2, "SE" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/SEARCH.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/SEARCH.data deleted file mode 100644 index 9925e699167..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/SEARCH.data +++ /dev/null @@ -1,11 +0,0 @@ -"E", "QWERTYUIOP", 3 -"D", "ABCDEFGHI", 4 -"E", TRUE, 4 -"E", FALSE, 5 -"A", "Mark Baker", 2 -"C", "Mark Baker", "#VALUE!" -"A", "Mark Baker", 3, 7 -"K", "Mark Baker", 4 -"K", "Mark Baker", 5, 8 -"A", "Mark Baker", 2, 2 -"BITE", "BIT", "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/SUBSTITUTE.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/SUBSTITUTE.data deleted file mode 100644 index be15c94103c..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/SUBSTITUTE.data +++ /dev/null @@ -1,4 +0,0 @@ -"QWERTYUIOP", "ERT", "DFG", "QWDFGYUIOP" -"Mark Baker", "a", "x", "Mxrk Bxker" -"Mark Baker", "a", "x", 1, "Mxrk Baker" -"Mark Baker", "x", "a", 1, "Mark Baker" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/T.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/T.data deleted file mode 100644 index 87f67e99d5f..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/T.data +++ /dev/null @@ -1,5 +0,0 @@ -123456.789, NULL -"123456.789", "123456.789" -"Mark Baker", "Mark Baker" -NULL, NULL -TRUE, NULL diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/TEXT.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/TEXT.data deleted file mode 100644 index da18defa35f..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/TEXT.data +++ /dev/null @@ -1,13 +0,0 @@ -123.456, '"$#,##0.00"', "$123.46" --123.456, '"$#,##0.00"', "$-123.46" -123.456, '"#,##0.00"', "123.46" -123.456, '"#,##0"', "123" -123.456, "00000", "00123" -123456.789, '"$#,##0.00"', '"$123,456.79"' -123456.789, '"#,##0.00"', '"123,456.79"' -123456.789, "0.00E+00", "1.23E05" --123456.789, "0.00E+00", "-1.23E05" -0.000012345, "0.00E+00", "1.23E-05" -"19-Dec-1960", "yyyy-mm-dd", "1960-12-19" -"1-Jan-2012", "yyyy-mm-dd", "2012-01-01" -1.75, "# ?/?", "1 3/4" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/TRIM.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/TRIM.data deleted file mode 100644 index ea800963ce9..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/TRIM.data +++ /dev/null @@ -1,7 +0,0 @@ -"HELLO ", "HELLO" -" HELLO", "HELLO" -" HELLO ", "HELLO" -" HELLO", " HELLO" -"HELLO WORLD", "HELLO WORLD" -TRUE, "TRUE" -NULL, NULL diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/UPPER.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/UPPER.data deleted file mode 100644 index 8ebf1d12983..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/UPPER.data +++ /dev/null @@ -1,4 +0,0 @@ -"AbCdEfGhI", "ABCDEFGHI" -"mark baker", "MARK BAKER" -TRUE, "TRUE" -FALSE, "FALSE" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/VALUE.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/VALUE.data deleted file mode 100644 index 505c2915b97..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/VALUE.data +++ /dev/null @@ -1,10 +0,0 @@ -"1000", "1000" -"1 000", "1000" -"$1 000", "1000" -"£1 000", "#VALUE!" -"1.1", "1.1" -"1 000.1", "1000.1" -"13 Monkeys", "#VALUE!" -"1-Jan-2014", "41640" -"12:34:56", "0.524259259259259" -"2:46 AM", "0.11527777777778" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CalculationBinaryComparisonOperation.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CalculationBinaryComparisonOperation.data deleted file mode 100644 index de04cbf792f..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CalculationBinaryComparisonOperation.data +++ /dev/null @@ -1,53 +0,0 @@ -# formula, expectedResultExcel, expectedResultOpenOffice -'=TRUE', TRUE, TRUE -'=1 + 2.5', 3.5, 3.5 -'=2.5 + 1', 3.5, 3.5 -'=1 - 2.5', -1.5, -1.5 -'=2.5 - 1', 1.5, 1.5 -'=3 > 1', TRUE, TRUE -'=3 > 3', FALSE, FALSE -'=1 > 3', FALSE, FALSE -'=3 < 1', FALSE, FALSE -'=3 < 3', FALSE, FALSE -'=1 < 3', TRUE, TRUE -'=3 = 1', FALSE, FALSE -'=3 = 3', TRUE, TRUE -'=1 = 1.0', TRUE, TRUE -'=3 >= 1', TRUE, TRUE -'=3 >= 3', TRUE, TRUE -'=1 >= 3', FALSE, FALSE -'=3 <= 1', FALSE, FALSE -'=3 <= 3', TRUE, TRUE -'=1 <= 3', TRUE, TRUE -'=3 <> 1', TRUE, TRUE -'=3 <> 3', FALSE, FALSE -'=1 <> 1.0', FALSE, FALSE -'="a" > "a"', FALSE, FALSE -'="A" > "A"', FALSE, FALSE -'="A" > "a"', FALSE, TRUE -'="a" > "A"', FALSE, FALSE -'="a" < "a"', FALSE, FALSE -'="A" < "A"', FALSE, FALSE -'="A" < "a"', FALSE, FALSE -'="a" < "A"', FALSE, TRUE -'="a" = "a"', TRUE, TRUE -'="A" = "A"', TRUE, TRUE -'="A" = "a"', TRUE, FALSE -'="a" = "A"', TRUE, FALSE -'="a" <= "a"', TRUE, TRUE -'="A" <= "A"', TRUE, TRUE -'="A" <= "a"', TRUE, FALSE -'="a" <= "A"', TRUE, TRUE -'="a" >= "a"', TRUE, TRUE -'="A" >= "A"', TRUE, TRUE -'="A" >= "a"', TRUE, TRUE -'="a" >= "A"', TRUE, FALSE -'="a" <> "a"', FALSE, FALSE -'="A" <> "A"', FALSE, FALSE -'="A" <> "a"', FALSE, TRUE -'="a" <> "A"', FALSE, TRUE -'="A" > "b"', FALSE, TRUE -'="a" > "b"', FALSE, FALSE -'="b" > "a"', TRUE, TRUE -'="b" > "A"', TRUE, FALSE -'="a2" > "a10"', TRUE, TRUE // Test natural sorting is not used diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Cell/DefaultValueBinder.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Cell/DefaultValueBinder.data deleted file mode 100644 index 446ded6cdb4..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Cell/DefaultValueBinder.data +++ /dev/null @@ -1,19 +0,0 @@ -NULL, "null" -, "null" -"#NULL!", "e" -FALSE, "b" -TRUE, "b" -"FALSE", "s" -"TRUE", "s" -"", "s" -"ABC", "s" -"123", "n" -123, "n" -0.123, "n" -"-123", "n" -"1.23E4", "n" -"-1.23E4", "n" -"1.23E-4", "n" -"000123", "s" -"=123", "f" -"#DIV/0!", "e" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellAbsoluteCoordinate.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellAbsoluteCoordinate.data deleted file mode 100644 index ad642947d07..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellAbsoluteCoordinate.data +++ /dev/null @@ -1,12 +0,0 @@ -"A1", "$A$1" -"A12", "$A$12" -"J1", "$J$1" -"J20", "$J$20" -"AI1", "$AI$1" -"AI2012", "$AI$2012" -"'Worksheet1'!AI256", "'Worksheet1'!$AI$256" -"Worksheet1!AI256", "Worksheet1!$AI$256" -"'Data Worksheet'!AI256", "'Data Worksheet'!$AI$256" -"'Worksheet1'!$AI256", "'Worksheet1'!$AI$256" -"'Worksheet1'!AI$256", "'Worksheet1'!$AI$256" -"'Worksheet1'!$AI$256", "'Worksheet1'!$AI$256" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellAbsoluteReference.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellAbsoluteReference.data deleted file mode 100644 index 8aa314a2b50..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellAbsoluteReference.data +++ /dev/null @@ -1,16 +0,0 @@ -"A1", "$A$1" -"A12", "$A$12" -"J1", "$J$1" -"J20", "$J$20" -"AI1", "$AI$1" -"AI2012", "$AI$2012" -"'Worksheet1'!AI256", "'Worksheet1'!$AI$256" -"Worksheet1!AI256", "Worksheet1!$AI$256" -"'Data Worksheet'!AI256", "'Data Worksheet'!$AI$256" -"AI", "$AI" -2012, "$2012" -"Worksheet1!AI", "Worksheet1!$AI" -"Worksheet1!256", "Worksheet1!$256" -"'Worksheet1'!$AI256", "'Worksheet1'!$AI$256" -"'Worksheet1'!AI$256", "'Worksheet1'!$AI$256" -"'Worksheet1'!$AI$256", "'Worksheet1'!$AI$256" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellBuildRange.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellBuildRange.data deleted file mode 100644 index 8d6efbffc87..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellBuildRange.data +++ /dev/null @@ -1,2 +0,0 @@ -{"B4"|"E9"}, "B4:E9" -{"B4"|"E9";"H2"|"O11"}, '"B4:E9,H2:O11"' diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellCoordinates.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellCoordinates.data deleted file mode 100644 index e64ce5598af..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellCoordinates.data +++ /dev/null @@ -1,6 +0,0 @@ -"A1", {"A";1} -"A12", {"A";12} -"J1", {"J";1} -"J20", {"J";20} -"AI1", {"AI";1} -"AI2012", {"AI";2012} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellExtractAllCellReferencesInRange.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellExtractAllCellReferencesInRange.data deleted file mode 100644 index 4b44a83a3ad..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellExtractAllCellReferencesInRange.data +++ /dev/null @@ -1,9 +0,0 @@ -"B4:B6", {"B4";"B5";"B6"} -'"B4:B6,D4:D6"', {"B4";"B5";"B6";"D4";"D5";"D6"} -'"B4:B6 D4:D6"', {"B4";"B5";"B6";"D4";"D5";"D6"} -"B4:D6", {"B4";"B5";"B6";"C4";"C5";"C6";"D4";"D5";"D6"} -'"B4:D6,C5:E7"', {"B4";"B5";"B6";"C4";"C5";"C6";"C7";"D4";"D5";"D6";"D7";"E5";"E6";"E7"} -'"B4:D6 C5:E7"', {"B4";"B5";"B6";"C4";"C5";"C6";"C7";"D4";"D5";"D6";"D7";"E5";"E6";"E7"} -"B2:D4 C5:D5 E3:E5 D6:E6 F4:F6", {"B2";"B3";"B4";"C2";"C3";"C4";"C5";"D2";"D3";"D4";"D5";"D6";"E3";"E4";"E5";"E6";"F4";"F5";"F6"} -"B2:D4 C3:E5 D4:F6", {"B2";"B3";"B4";"C2";"C3";"C4";"C5";"D2";"D3";"D4";"D5";"D6";"E3";"E4";"E5";"E6";"F4";"F5";"F6"} -"B4:B6 B8", {"B4";"B5";"B6";"B8"} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellGetRangeBoundaries.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellGetRangeBoundaries.data deleted file mode 100644 index f01a5fd9940..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellGetRangeBoundaries.data +++ /dev/null @@ -1,2 +0,0 @@ -"B4:E9", {"B"|4;"E"|9} -"B4", {"B"|4;"B"|4} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellRangeBoundaries.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellRangeBoundaries.data deleted file mode 100644 index 2fca6dc23d1..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellRangeBoundaries.data +++ /dev/null @@ -1,2 +0,0 @@ -"B4:E9", {2|4;5|9} -"B4", {2|4;2|4} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellRangeDimension.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellRangeDimension.data deleted file mode 100644 index 1718f1219c0..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellRangeDimension.data +++ /dev/null @@ -1,2 +0,0 @@ -"B4:E9", {4;6} -"B4", {1;1} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellSplitRange.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellSplitRange.data deleted file mode 100644 index 215fce253f9..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellSplitRange.data +++ /dev/null @@ -1,3 +0,0 @@ -"B4:E9", {"B4"|"E9"} -"B4", {"B4"} -'"B4:E9,H2:O11"', {"B4"|"E9";"H2"|"O11"} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/ColumnIndex.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/ColumnIndex.data deleted file mode 100644 index 9a1679b6b91..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/ColumnIndex.data +++ /dev/null @@ -1,9 +0,0 @@ -0, "A" -25, "Z" -26, "AA" -27, "AB" -51, "AZ" -52, "BA" -701, "ZZ" -702, "AAA" -1378, "BAA" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/ColumnString.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/ColumnString.data deleted file mode 100644 index 5573759eb93..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/ColumnString.data +++ /dev/null @@ -1,9 +0,0 @@ -"A", 1 -"Z", 26 -"AA", 27 -"AB", 28 -"AZ", 52 -"BA", 53 -"ZZ", 702 -"AAA", 703 -"BAA", 1379 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestInvalidUTF-16.xml b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestInvalidUTF-16.xml deleted file mode 100644 index 94eaedfc2aec6c1eb2e723c914acf0afcdbbfd65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 276 zcmezOpTUN~o}q#vmm!BifuW2cm7$2Cm?4uPpCOOImO+WZkU@{ZfI*2tfgzP4k0F^M zpCN@IlOc~G9V{El5W?Wbpvz#$U<OuG%uvFR$dJd7!jQ<212!WStgezFm7$nHiNT)1 zj)9kfi@}CLk->$*pTU_Sgdvh4fWehPfuV>YpCO;2gh7EJ8mvZv0R};;T^alsLKr;3 z>J=C&7z`K`7?c=X81fl{8I+)=#zJX`4KVW{HgYnQfZb5SV8x)opuwO9Hp7}h6Kt0a JgFf7TI{<>ICxrk2 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestInvalidUTF-16BE.xml b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestInvalidUTF-16BE.xml deleted file mode 100644 index 1d186ff443435bec745501c2d7bfc81271e4c3c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 278 zcmZRuVX$YYV8~_2VNhTwV@PEvVkl<FWXNa8W3XjVVlZUTV=!P)Vo+d6WyoVlX2@qq zVaR02V@L<fhBAaOxH0H57&4eKI5D__)fF?8FeEbMF{CggGUR~GNd>E|WJqNwW>8|V zXRu@7W#D44VNhgnVen^gW(Z-3WC&nzWl&%!V#sI6XDDG%V2B2*QDA^UkZM;3KZXzn zPq2Cgh6)A)1_cHs1{a2WhF}IIsHw3~8e#*?Jcx~)3?*PUlrUH^C@^R+sDaI}X3zxN LWy7Ekx8Du`_k|`8 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestInvalidUTF-16LE.xml b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestInvalidUTF-16LE.xml deleted file mode 100644 index c3913f71bb84e44fb3659848c69c0434945a2642..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 278 zcmcCvuxF@X$Ysc3P+%xyNM$HuC}zlH$Y;o7uw_tUFl5kUFknz(P+&-9$YV%m$Y)4l z$YjW4NC(S?GK4U=G3YWFGMF*=Ft~!%6*H7DBr@bNq%b5h<bcgd1*@%ONM$HyP-3uW zuw&q5;9{_0P-Jjn@Mmyl2w{k12w-q!P+%xx$Y;oBC}B`whz6@sV1Pl8YF7q7h7bl% zuzCfC3I+oP1qLMs7lwR>U<M_qsj*NRVgt-Ph>e^KC15v{Fjz4tFlaESfz7aH&;;9M L!=Mkh-;MzQC9WnJ diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestInvalidUTF-8.xml b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestInvalidUTF-8.xml deleted file mode 100644 index 212003fd4fb..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestInvalidUTF-8.xml +++ /dev/null @@ -1,8 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<!DOCTYPE root [ - <!ENTITY x0 "DoS"> -]> - -<root> - test: (&x0;) -</root> \ No newline at end of file diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestValidUTF-16.xml b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestValidUTF-16.xml deleted file mode 100644 index 6473fe6b6382c7f6993f3c9f0187bd0636613a98..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 176 zcmezOpTUN~o}q#vmm!BifuW2cm7$2Cm?4uPpCOOImO+WZkU@{ZfI*2tfgzP4k0F^M zpCN@IlOc~G9V{El5W?Wbpvz#$U<OuG%uvFR$dJd7!jQ<212!WStgezFm7$nHiNT)1 rj)9kfi@}DWh#{XLpP>ZG=VT}Wt0-ZxVo+cR1MALYNP()=N2mq>yEz>O diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestValidUTF-16BE.xml b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestValidUTF-16BE.xml deleted file mode 100644 index 677e712f99d0619ab707c616cfc7789095e37ee7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 178 zcmZRuVX$YYV8~_2VNhTwV@PEvVkl<FWXNa8W3XjVVlZUTV=!P)Vo+d6WyoVlX2@qq zVaR02V@L<fhBAaOxH0H57&4eKI5D__)fF?8FeEbMF{CggGUR~GNd>E|WJqNwW>8|V sXRu@7W#D44VJKqAXUJzLf$}*SO28^g7_1l+7{b81GZ|8#YV{GS0m3{RkN^Mx diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestValidUTF-16LE.xml b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestValidUTF-16LE.xml deleted file mode 100644 index 64353bfbab10e9caa40b2910d956468a7161ed40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 178 zcmcCvuxF@X$Ysc3P+%xyNM$HuC}zlH$Y;o7uw_tUFl5kUFknz(P+&-9$YV%m$Y)4l z$YjW4NC(S?GK4U=G3YWFGMF*=Ft~!%6*H7DBr@bNq%b5h<bcgd1*@%ONM$HyP-3uW suw&q5;9{_0C}PNG$Y&^l@;Mnwz$!`@tQZs+!oa#S8B(BX^^sHq0O9W&ng9R* diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestValidUTF-8.xml b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestValidUTF-8.xml deleted file mode 100644 index c400ae88b5c..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestValidUTF-8.xml +++ /dev/null @@ -1,4 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<root> - test: Valid -</root> \ No newline at end of file diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/CentimeterSizeToPixels.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/CentimeterSizeToPixels.data deleted file mode 100644 index fc48f21ab11..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/CentimeterSizeToPixels.data +++ /dev/null @@ -1,5 +0,0 @@ -0.1, 3.7795275591 -0.2, 7.5590551182 -0.5, 18.8976377955 -1.0, 37.795275591 -2.0, 75.590551182 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/CodePage.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/CodePage.data deleted file mode 100644 index 68ceda1feda..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/CodePage.data +++ /dev/null @@ -1,43 +0,0 @@ -367, "ASCII" // ASCII -437, "CP437" // OEM US -737, "CP737" // OEM Greek -775, "CP775" // OEM Baltic -850, "CP850" // OEM Latin I -852, "CP852" // OEM Latin II (Central European) -855, "CP855" // OEM Cyrillic -857, "CP857" // OEM Turkish -858, "CP858" // OEM Multilingual Latin I with Euro -860, "CP860" // OEM Portugese -861, "CP861" // OEM Icelandic -862, "CP862" // OEM Hebrew -863, "CP863" // OEM Canadian (French) -864, "CP864" // OEM Arabic -865, "CP865" // OEM Nordic -866, "CP866" // OEM Cyrillic (Russian) -869, "CP869" // OEM Greek (Modern) -874, "CP874" // ANSI Thai -932, "CP932" // ANSI Japanese Shift-JIS -936, "CP936" // ANSI Chinese Simplified GBK -949, "CP949" // ANSI Korean (Wansung) -950, "CP950" // ANSI Chinese Traditional BIG5 -1200, "UTF-16LE" // UTF-16 (BIFF8) -1250, "CP1250" // ANSI Latin II (Central European) -1251, "CP1251" // ANSI Cyrillic -0, "CP1252" // ANSI Latin I (BIFF4-BIFF7) -1252, "CP1252" // ANSI Latin I (BIFF4-BIFF7) -1253, "CP1253" // ANSI Greek -1254, "CP1254" // ANSI Turkish -1255, "CP1255" // ANSI Hebrew -1256, "CP1256" // ANSI Arabic -1257, "CP1257" // ANSI Baltic -1258, "CP1258" // ANSI Vietnamese -1361, "CP1361" // ANSI Korean (Johab) -10000, "MAC" // Apple Roman -10006, "MACGREEK" // Macintosh Greek -10007, "MACCYRILLIC" // Macintosh Cyrillic -10029, "MACCENTRALEUROPE" // Macintosh Central Europe -10079, "MACICELAND" // Macintosh Icelandic -10081, "MACTURKISH" // Macintosh Turkish -32768, "MAC" // Apple Roman -65000, "UTF-7" // Unicode (UTF-7) -65001, "UTF-8" // Unicode (UTF-8) diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/DateTimeExcelToPHP1900.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/DateTimeExcelToPHP1900.data deleted file mode 100644 index d348b0aa41d..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/DateTimeExcelToPHP1900.data +++ /dev/null @@ -1,15 +0,0 @@ -#Excel DateTimeStamp Result Comments -714, -2147472000 // PHP 32-bit Earliest Date 14-Dec-1901 -1461, -2082931200 // 31-Dec-1903 -1462, -2082844800 // Excel 1904 Calendar Base Date 01-Jan-1904 -1463, -2082758400 // 02-Jan-1904 -22269, -285120000 // 19-Dec-1960 -25569, 0 // PHP Base Date 01-Jan-1970 -30292, 408067200 // 07-Dec-1982 -39611, 1213228800 // 12-Jun-2008 -50424, 2147472000 // PHP 32-bit Latest Date 19-Jan-2038 -1234.56789, -2102494934 // 18-May-1903 13:37:46 -12345.6789, -1142494943 // 18-Oct-1933 16:17:37 -0.5, 43200 // 12:00:00 -0.75, 64800 // 18:00.00 -0.12345, 10666 // 02:57:46 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/DateTimeExcelToPHP1900Timezone.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/DateTimeExcelToPHP1900Timezone.data deleted file mode 100644 index e106b5fe13c..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/DateTimeExcelToPHP1900Timezone.data +++ /dev/null @@ -1,23 +0,0 @@ -#Excel DateTimeStamp Adjust Timezone Result Comments -22269, TRUE, 'America/New_York', -285138000 // 19-Dec-1960 00:00:00 UST -25569, TRUE, 'America/New_York', -18000 // PHP Base Date 01-Jan-1970 00:00:00 UST -30292, TRUE, 'America/New_York', 408049200 // 07-Dec-1982 00:00:00 UST -39611, TRUE, 'America/New_York', 1213214400 // 12-Jun-2008 00:00:00 UST -50424, TRUE, 'America/New_York', 2147454000 // PHP 32-bit Latest Date 19-Jan-2038 00:00:00 UST -22345.56789, TRUE, 'America/New_York', -278522534 // 18-May-1903 13:37:46 UST -22345.6789, TRUE, 'America/New_York', -278512943 // 18-Oct-1933 16:17:37 UST -0.5, TRUE, 'America/New_York', 25200 // 12:00:00 UST -0.75, TRUE, 'America/New_York', 46800 // 18:00.00 UST -0.12345, TRUE, 'America/New_York', -7334 // 02:57:46 UST -41215, TRUE, 'America/New_York', 1351800000 // 02-Nov-2012 00:00:00 UST -22269, TRUE, 'Pacific/Auckland', -285076800 // 19-Dec-1960 00:00:00 UST -25569, TRUE, 'Pacific/Auckland', 43200 // PHP Base Date 01-Jan-1970 00:00:00 UST -30292, TRUE, 'Pacific/Auckland', 408114000 // 07-Dec-1982 00:00:00 UST -39611, TRUE, 'Pacific/Auckland', 1213272000 // 12-Jun-2008 00:00:00 UST -50423.5, TRUE, 'Pacific/Auckland', 2147475600 // PHP 32-bit Latest Date 19-Jan-2038 00:00:00 UST -22345.56789, TRUE, 'Pacific/Auckland', -278461334 // 18-May-1903 13:37:46 UST -22345.6789, TRUE, 'Pacific/Auckland', -278451743 // 18-Oct-1933 16:17:37 UST -0.5, TRUE, 'Pacific/Auckland', 90000 // 12:00:00 UST -0.75, TRUE, 'Pacific/Auckland', 111600 // 18:00.00 UST -0.12345, TRUE, 'Pacific/Auckland', 57466 // 02:57:46 UST -41215, TRUE, 'Pacific/Auckland', 1351861200 // 02-Nov-2012 00:00:00 UST diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/DateTimeExcelToPHP1904.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/DateTimeExcelToPHP1904.data deleted file mode 100644 index 5501ad17cea..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/DateTimeExcelToPHP1904.data +++ /dev/null @@ -1,10 +0,0 @@ -#Excel DateTimeStamp Result -1462, -1956528000 -1463, -1956441600 -22269, -158803200 -25569, 126316800 -30292, 534384000 -39611, 1339545600 -0.25, 21600 // 06:00:00 -0.3333333333333333333, 28800 // 08:00.00 -0.54321, 46933 // 02:57:46 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/DateTimeFormatCodes.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/DateTimeFormatCodes.data deleted file mode 100644 index 73420470490..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/DateTimeFormatCodes.data +++ /dev/null @@ -1,37 +0,0 @@ -#Excel Format Code Result -"General", FALSE -"@", FALSE -"0", FALSE -"0.00", FALSE -"#,##0.00", FALSE -"#,##0.00_-", FALSE -"0%", FALSE -"0.00%", FALSE -"yyyy-mm-dd", TRUE -"yy-mm-dd", TRUE -"dd/mm/yy", TRUE -"d/m/y", TRUE -"d-m-y", TRUE -"d-m", TRUE -"m-y", TRUE -"mm-dd-yy", TRUE -"d-mmm-yy", TRUE -"d-mmm", TRUE -"mmm-yy", TRUE -"m/d/yy h:mm", TRUE -"d/m/y h:mm", TRUE -"h:mm AM/PM", TRUE -"h:mm:ss AM/PM", TRUE -"h:mm", TRUE -"h:mm:ss", TRUE -"mm:ss", TRUE -"h:mm:ss", TRUE -"i:s.S", TRUE -"h:mm:ss;@", TRUE -"yy/mm/dd;@", TRUE -"\"$\"#,##0.00_-", FALSE -"$#,##0_-", FALSE -"[$EUR ]#,##0.00_-", FALSE -"_[$EUR ]#,##0.00_-", FALSE -"[Green]#,##0.00;[Red]#,##0.00_-", FALSE -"#,##0.00 \"dollars\"", FALSE diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/DateTimeFormattedPHPToExcel1900.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/DateTimeFormattedPHPToExcel1900.data deleted file mode 100644 index bb6ed3f4292..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/DateTimeFormattedPHPToExcel1900.data +++ /dev/null @@ -1,12 +0,0 @@ -#Year Month Day Hours Minutes Seconds Result Comments -1901, 12, 14, 714 // PHP 32-bit Earliest Date 14-Dec-1901 -1903, 12, 31, 1461 // 31-Dec-1903 -1904, 1, 1, 1462 // Excel 1904 Calendar Base Date 01-Jan-1904 -1904, 1, 2, 1463 // 02-Jan-1904 -1960, 12, 19, 22269 // 19-Dec-1960 -1970, 1, 1, 25569 // PHP Base Date 01-Jan-1970 -1982, 12, 7, 30292 // 07-Dec-1982 -2008, 6, 12, 39611 // 12-Jun-2008 -2038, 1, 19, 50424 // PHP 32-bit Latest Date 19-Jan-2038 -1903, 5, 18, 13, 37, 46, 1234.56789 // 18-May-1903 13:37:46 -1933, 10, 18, 16, 17, 37, 12345.6789 // 18-Oct-1933 16:17:37 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/DateTimePHPToExcel1900.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/DateTimePHPToExcel1900.data deleted file mode 100644 index dc6a9d909a4..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/DateTimePHPToExcel1900.data +++ /dev/null @@ -1,12 +0,0 @@ -#Excel DateTimeStamp Result Comments --2147472000, 714 // PHP 32-bit Earliest Date 14-Dec-1901 --2082931200, 1461 // 31-Dec-1903 --2082844800, 1462 // Excel 1904 Calendar Base Date 01-Jan-1904 --2082758400, 1463 // 02-Jan-1904 --285120000, 22269 // 19-Dec-1960 -0, 25569 // PHP Base Date 01-Jan-1970 -408067200, 30292 // 07-Dec-1982 -1213228800, 39611 // 12-Jun-2008 -2147472000, 50424 // PHP 32-bit Latest Date 19-Jan-2038 --2102494934, 1234.56789 // 18-May-1903 13:37:46 --1142494943, 12345.6789 // 18-Oct-1933 16:17:37 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/DateTimePHPToExcel1904.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/DateTimePHPToExcel1904.data deleted file mode 100644 index 98fa49514ba..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/DateTimePHPToExcel1904.data +++ /dev/null @@ -1,7 +0,0 @@ -#Excel DateTimeStamp Result --1956528000, 1462 --1956441600, 1463 --158803200, 22269 -126316800, 25569 -534384000, 30292 -1339545600, 39611 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/FontSizeToPixels.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/FontSizeToPixels.data deleted file mode 100644 index af89196d3ff..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/FontSizeToPixels.data +++ /dev/null @@ -1,16 +0,0 @@ -6, 8 -7, 9 -8, 10 -9, 12 -10, 13 -11, 14 -12, 16 -14, 18 -16, 21 -18, 24 -20, 26 -22, 29 -24, 32 -36, 48 -48, 64 -60, 80 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/InchSizeToPixels.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/InchSizeToPixels.data deleted file mode 100644 index 147eaa989ea..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/InchSizeToPixels.data +++ /dev/null @@ -1,5 +0,0 @@ -0.1, 9.6 -0.2, 19.2 -0.5, 48.0 -1.0, 96.0 -2.0, 192.0 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/PasswordHashes.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/PasswordHashes.data deleted file mode 100644 index c6846812616..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/PasswordHashes.data +++ /dev/null @@ -1,9 +0,0 @@ -"PHPExcel", "8053" -"Mark Baker", "877D" -"!+&=()~§±æþ", "C0EA" -"μυστικό κωδικό πρόσβασης", "FFFF26DD" -"গোপন পাসওয়ার্ড", "E858" -"Секретный пароль", "EA5F" -"秘密口令", "C07E" -"leyndarmál lykilorð", "99E8" -"", "CE4B" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Style/ColorChangeBrightness.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Style/ColorChangeBrightness.data deleted file mode 100644 index de5eeaf5f7c..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Style/ColorChangeBrightness.data +++ /dev/null @@ -1,14 +0,0 @@ -"FFAABBCC", 0.1, "FFB2C1D1" // RGBA -"FFAABBCC", -0.1, "FF99A8B7" // RGBA -"AABBCC", 0.1, "B2C1D1" // RGB -"AABBCC", -0.1, "99A8B7" // RGB -"FF0000", 0.1, "FF1919" -"FF0000", -0.1, "E50000" -"FF8080", 0.1, "FF8C8C" -"FF8080", -0.1, "E57373" -"FF0000", 0.15, "FF2626" -"FF0000", -0.15, "D80000" -"FF8080", 0.15, "FF9393" -"FF8080", -0.15, "D86C6C" -"FFF008", 0.5, "FFF783" -"FFF008", -0.5, "7F7804" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Style/ColorGetBlue.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Style/ColorGetBlue.data deleted file mode 100644 index 4e01d1c7ca1..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Style/ColorGetBlue.data +++ /dev/null @@ -1,6 +0,0 @@ -"FFAABBCC", "CC" // RGBA (hex) -"FFAABBCC", FALSE, 204 // RGBA (decimal) -"AABBCC", "CC" // RGB (hex) -"AABBCC", FALSE, 204 // RGB (decimal) -"FFFF00", "00" -"FFFF00", FALSE, 0 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Style/ColorGetGreen.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Style/ColorGetGreen.data deleted file mode 100644 index 0ace610340b..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Style/ColorGetGreen.data +++ /dev/null @@ -1,6 +0,0 @@ -"FFAABBCC", "BB" // RGBA (hex) -"FFAABBCC", FALSE, 187 // RGBA (decimal) -"AABBCC", "BB" // RGB (hex) -"AABBCC", FALSE, 187 // RGB (decimal) -"FF00FF", "00" -"FF00FF", FALSE, 0 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Style/ColorGetRed.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Style/ColorGetRed.data deleted file mode 100644 index 1692a6ad716..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Style/ColorGetRed.data +++ /dev/null @@ -1,6 +0,0 @@ -"FFAABBCC", "AA" // RGBA (hex) -"FFAABBCC", FALSE, 170 // RGBA (decimal) -"AABBCC", "AA" // RGB (hex) -"AABBCC", FALSE, 170 // RGB (decimal) -"00FFFF", "00" -"00FFFF", FALSE, 0 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Style/NumberFormat.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Style/NumberFormat.data deleted file mode 100644 index 49acaccfc7d..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Style/NumberFormat.data +++ /dev/null @@ -1,37 +0,0 @@ -# value format result -0.0, "0.0", "0.0" -0.0, "0", "0" -0, "0.0", "0.0" -0, "0", "0" -0, "##0", "000" -12, "#.0#", "12.0" -0.1, "0.0", "0.1" -0.1, "0", "0" -5.5555, "0.###", "5.556" -5.5555, "0.0##", "5.556" -5.5555, "0.00#", "5.556" -5.5555, "0.000", "5.556" -5.5555, "0.0000", "5.5555" -12345.6789, '"#,##0.00"', '"12,345.68"' -12345.6789, '"#,##0.000"', '"12,345.679"' -12345.6789, '"£ #,##0.00"', '"£ 12,345.68"' -12345.6789, '"$ #,##0.000"', '"$ 12,345.679"' -5.6789, '"#,##0.00"', '"5.68"' -12000, '"#,###"', '"12,000"' -12000, '"#,"', '12' -12200000, '"0.0,,"', '12.2' // Scaling test -0.08, "0%", "8%" -0.8, "0%", "80%" -2.8, "0%", "280%" -125.74, '$0.00" Surplus";$-0.00" Shortage"', "$125.74 Surplus" --125.74, '$0.00" Surplus";$-0.00" Shortage"', "$-125.74 Shortage" --125.74, '$0.00" Surplus";$0.00" Shortage"', "$125.74 Shortage" -5.25, '# ???/???', "5 1/4" // Fraction -5.3, '# ???/???', "5 3/10" // Vulgar Fraction -5.25, '???/???', "21/4" -123456789, '(000) 0-0000-000', "(001) 2-3456-789" -123456789, '0 (+00) 0000 00 00 00', "0 (+00) 0123 45 67 89" -123456789, '0000:00:00', "12345:67:89" --123456789, '0000:00:00', "-12345:67:89" -1234567.89, '0000:00.00', "12345:67.89" --1234567.89,'0000:00.00', "-12345:67.89" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/testDataFileIterator.php b/htdocs/includes/phpoffice/phpexcel/unitTests/testDataFileIterator.php deleted file mode 100644 index a092cd59339..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/testDataFileIterator.php +++ /dev/null @@ -1,131 +0,0 @@ -<?php - -class testDataFileIterator implements Iterator -{ - - protected $file; - protected $key = 0; - protected $current; - - public function __construct($file) - { - $this->file = fopen($file, 'r'); - } - - public function __destruct() - { - fclose($this->file); - } - - public function rewind() - { - rewind($this->file); - $this->current = $this->_parseNextDataset(); - $this->key = 0; - } - - public function valid() - { - return !feof($this->file); - } - - public function key() - { - return $this->key; - } - - public function current() - { - return $this->current; - } - - public function next() - { - $this->current = $this->_parseNextDataset(); - $this->key++; - } - - private function _parseNextDataset() - { - // Read a line of test data from the file - do { - // Only take lines that contain test data and that aren't commented out - $testDataRow = trim(fgets($this->file)); - } while (($testDataRow > '') && ($testDataRow{0} === '#')); - - // Discard any comments at the end of the line - list($testData) = explode('//',$testDataRow); - - // Split data into an array of individual values and a result - $dataSet = $this->_getcsv($testData, ',', "'"); - foreach($dataSet as &$dataValue) { - $dataValue = $this->_parseDataValue($dataValue); - } - unset($dataValue); - - return $dataSet; - } - - private function _getcsv($input, $delimiter, $enclosure) - { - if (function_exists('str_getcsv')) { - return str_getcsv($input, $delimiter, $enclosure); - } - - $temp = fopen('php://memory', 'rw'); - fwrite($temp, $input); - rewind($temp); - $data = fgetcsv($temp, strlen($input), $delimiter, $enclosure); - fclose($temp); - - if ($data === false) { - $data = array(null); - } - - return $data; - } - - private function _parseDataValue($dataValue) { - // discard any white space - $dataValue = trim($dataValue); - // test for the required datatype and convert accordingly - if (!is_numeric($dataValue)) { - if($dataValue == '') { - $dataValue = NULL; - } elseif($dataValue == '""') { - $dataValue = ''; - } elseif(($dataValue[0] == '"') && ($dataValue[strlen($dataValue)-1] == '"')) { - $dataValue = substr($dataValue,1,-1); - } elseif(($dataValue[0] == '{') && ($dataValue[strlen($dataValue)-1] == '}')) { - $dataValue = explode(';',substr($dataValue,1,-1)); - foreach($dataValue as &$dataRow) { - if (strpos($dataRow,'|') !== FALSE) { - $dataRow = explode('|',$dataRow); - foreach($dataRow as &$dataCell) { - $dataCell = $this->_parseDataValue($dataCell); - } - unset($dataCell); - } else { - $dataRow = $this->_parseDataValue($dataRow); - } - } - unset($dataRow); - } else { - switch (strtoupper($dataValue)) { - case 'NULL' : $dataValue = NULL; break; - case 'TRUE' : $dataValue = TRUE; break; - case 'FALSE' : $dataValue = FALSE; break; - } - } - } else { - if (strpos($dataValue,'.') !== FALSE) { - $dataValue = (float) $dataValue; - } else { - $dataValue = (int) $dataValue; - } - } - - return $dataValue; - } - -} -- GitLab From 26b85d7cac82c077ec70e4f3f932e79af0794c85 Mon Sep 17 00:00:00 2001 From: Ion Agorria <ion@agorria.com> Date: Fri, 11 Dec 2015 18:28:55 +0100 Subject: [PATCH 157/197] Remove unnecesary variable --- htdocs/core/tpl/objectline_create.tpl.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/tpl/objectline_create.tpl.php b/htdocs/core/tpl/objectline_create.tpl.php index bb84e47ad7d..bcbcae00639 100644 --- a/htdocs/core/tpl/objectline_create.tpl.php +++ b/htdocs/core/tpl/objectline_create.tpl.php @@ -518,7 +518,7 @@ jQuery(document).ready(function() { /* focus work on a standard textarea but not if field was replaced with CKEDITOR */ jQuery('#dp_desc').focus(); /* focus if CKEDITOR */ - if (typeof CKEDITOR == "object" && typeof CKEDITOR.instances != "undefined" && CKEDITOR.instances[key] != "undefined") + if (typeof CKEDITOR == "object" && typeof CKEDITOR.instances != "undefined") { var editor = CKEDITOR.instances['dp_desc']; if (editor) { editor.focus(); } @@ -624,7 +624,7 @@ jQuery(document).ready(function() { /* focus work on a standard textarea but not if field was replaced with CKEDITOR */ jQuery('#dp_desc').focus(); /* focus if CKEDITOR */ - if (typeof CKEDITOR == "object" && typeof CKEDITOR.instances != "undefined" && CKEDITOR.instances[key] != "undefined") + if (typeof CKEDITOR == "object" && typeof CKEDITOR.instances != "undefined") { var editor = CKEDITOR.instances['dp_desc']; if (editor) { editor.focus(); } -- GitLab From 2cd49043a644e2b137bae7dac083fa1e2a3d23ff Mon Sep 17 00:00:00 2001 From: philippe grand <philippe.grand@atoo-net.com> Date: Fri, 11 Dec 2015 19:37:12 +0100 Subject: [PATCH 158/197] [Qual] Close database handler should be after Footer --- htdocs/don/info.php | 3 +-- htdocs/don/list.php | 4 +--- htdocs/don/payment/payment.php | 4 +--- htdocs/ecm/docfile.php | 3 +-- htdocs/ecm/docmine.php | 3 +-- htdocs/ecm/docother.php | 3 +-- htdocs/expedition/list.php | 3 +-- htdocs/expensereport/card.php | 3 +-- htdocs/expensereport/payment/payment.php | 4 +--- htdocs/fichinter/info.php | 3 +-- htdocs/fourn/facture/impayees.php | 2 +- htdocs/fourn/facture/paiement.php | 3 +-- htdocs/fourn/product/list.php | 4 +--- htdocs/fourn/recap-fourn.php | 4 +--- htdocs/hrm/establishment/info.php | 3 +-- htdocs/loan/payment/payment.php | 4 +--- htdocs/product/stock/fiche-valo.php | 3 +-- htdocs/projet/admin/project.php | 5 ++--- htdocs/societe/checkvat/checkVatPopup.php | 1 + htdocs/societe/commerciaux.php | 4 +--- htdocs/societe/societecontact.php | 6 +++--- htdocs/user/group/perms.php | 3 +-- htdocs/user/ldap.php | 6 +----- 23 files changed, 26 insertions(+), 55 deletions(-) diff --git a/htdocs/don/info.php b/htdocs/don/info.php index daa5c6e62de..1c51a1fa9f8 100644 --- a/htdocs/don/info.php +++ b/htdocs/don/info.php @@ -57,6 +57,5 @@ if ($id) print '</div>'; } -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/don/list.php b/htdocs/don/list.php index 36c74826952..0a91e59593d 100644 --- a/htdocs/don/list.php +++ b/htdocs/don/list.php @@ -236,7 +236,5 @@ else dol_print_error($db); } - -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/don/payment/payment.php b/htdocs/don/payment/payment.php index da33a92e750..a0062632770 100644 --- a/htdocs/don/payment/payment.php +++ b/htdocs/don/payment/payment.php @@ -308,7 +308,5 @@ if (GETPOST("action") == 'create') print "</form>\n"; } - -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/ecm/docfile.php b/htdocs/ecm/docfile.php index d533e1cf559..ce4bf480668 100644 --- a/htdocs/ecm/docfile.php +++ b/htdocs/ecm/docfile.php @@ -285,6 +285,5 @@ if ($_GET["action"] != 'edit') // End of page -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/ecm/docmine.php b/htdocs/ecm/docmine.php index 13f5ee516b9..ae4e6c6b08c 100644 --- a/htdocs/ecm/docmine.php +++ b/htdocs/ecm/docmine.php @@ -364,6 +364,5 @@ if ($user->rights->ecm->read) */ // End of page -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/ecm/docother.php b/htdocs/ecm/docother.php index 2f0f231523f..addf559e01c 100644 --- a/htdocs/ecm/docother.php +++ b/htdocs/ecm/docother.php @@ -167,6 +167,5 @@ if ($mesg) { print $mesg."<br>"; } print $langs->trans("FeatureNotYetAvailable"); // End of page -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/expedition/list.php b/htdocs/expedition/list.php index 6d8dc1d22df..5339538901e 100644 --- a/htdocs/expedition/list.php +++ b/htdocs/expedition/list.php @@ -237,6 +237,5 @@ else dol_print_error($db); } -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/expensereport/card.php b/htdocs/expensereport/card.php index e7b0be3d6d5..aa36b690619 100644 --- a/htdocs/expensereport/card.php +++ b/htdocs/expensereport/card.php @@ -1198,9 +1198,8 @@ else print $langs->trans('NotUserRightToView'); print '</div>'; - $db->close(); - llxFooter(); + $db->close(); exit; } diff --git a/htdocs/expensereport/payment/payment.php b/htdocs/expensereport/payment/payment.php index 94f37389fc9..b7d40b2e65b 100644 --- a/htdocs/expensereport/payment/payment.php +++ b/htdocs/expensereport/payment/payment.php @@ -313,7 +313,5 @@ if (GETPOST("action") == 'create') print "</form>\n"; } - -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/fichinter/info.php b/htdocs/fichinter/info.php index f577913ebe2..5be4af71d27 100644 --- a/htdocs/fichinter/info.php +++ b/htdocs/fichinter/info.php @@ -65,6 +65,5 @@ print '</td></tr></table>'; print '</div>'; -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/fourn/facture/impayees.php b/htdocs/fourn/facture/impayees.php index ecb6b990a64..ccb6671ba3a 100644 --- a/htdocs/fourn/facture/impayees.php +++ b/htdocs/fourn/facture/impayees.php @@ -299,5 +299,5 @@ if ($user->rights->fournisseur->facture->lire) } // End of page -$db->close(); llxFooter(); +$db->close(); diff --git a/htdocs/fourn/facture/paiement.php b/htdocs/fourn/facture/paiement.php index d500f8eceb1..599ce879d8e 100644 --- a/htdocs/fourn/facture/paiement.php +++ b/htdocs/fourn/facture/paiement.php @@ -621,6 +621,5 @@ if (empty($action)) } } -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/fourn/product/list.php b/htdocs/fourn/product/list.php index fc04c6838ab..f21390776d3 100644 --- a/htdocs/fourn/product/list.php +++ b/htdocs/fourn/product/list.php @@ -249,7 +249,5 @@ else dol_print_error($db); } - -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/fourn/recap-fourn.php b/htdocs/fourn/recap-fourn.php index eb976acb4a0..acf4c9400d3 100644 --- a/htdocs/fourn/recap-fourn.php +++ b/htdocs/fourn/recap-fourn.php @@ -213,7 +213,5 @@ else dol_print_error($db); } - -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/hrm/establishment/info.php b/htdocs/hrm/establishment/info.php index 806bd893fbb..1ef523fa607 100644 --- a/htdocs/hrm/establishment/info.php +++ b/htdocs/hrm/establishment/info.php @@ -53,6 +53,5 @@ if ($id) print '</div>'; } -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/loan/payment/payment.php b/htdocs/loan/payment/payment.php index f095272d5f2..06061da5c22 100644 --- a/htdocs/loan/payment/payment.php +++ b/htdocs/loan/payment/payment.php @@ -307,7 +307,5 @@ if ($_GET["action"] == 'create') print "</form>\n"; } - -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/product/stock/fiche-valo.php b/htdocs/product/stock/fiche-valo.php index 10cdb0144ac..8add246afa2 100644 --- a/htdocs/product/stock/fiche-valo.php +++ b/htdocs/product/stock/fiche-valo.php @@ -141,6 +141,5 @@ if ($_GET["id"]) print "</div>"; } -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/projet/admin/project.php b/htdocs/projet/admin/project.php index f42fc7c4720..400560d0040 100644 --- a/htdocs/projet/admin/project.php +++ b/htdocs/projet/admin/project.php @@ -2,7 +2,7 @@ /* Copyright (C) 2010-2014 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2011 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2011-2012 Juanjo Menent <jmenent@2byte.es> - * Copyright (C) 2011-2013 Philippe Grand <philippe.grand@atoo-net.com> + * Copyright (C) 2011-2015 Philippe Grand <philippe.grand@atoo-net.com> * Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro> * Copyright (C) 2015 Juanjo Menent <jmenent@2byte.es> * Copyright (C) 2015 Marcos García <marcosgdf@gmail.com> @@ -935,6 +935,5 @@ else } print '</tr></table></form>'; -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/societe/checkvat/checkVatPopup.php b/htdocs/societe/checkvat/checkVatPopup.php index 152cd5d9a3f..702dbb0a08a 100644 --- a/htdocs/societe/checkvat/checkVatPopup.php +++ b/htdocs/societe/checkvat/checkVatPopup.php @@ -171,3 +171,4 @@ if ($messagetoshow) llxFooter(); +$db->close(); diff --git a/htdocs/societe/commerciaux.php b/htdocs/societe/commerciaux.php index 12a1612ab1d..b35e7096ef3 100644 --- a/htdocs/societe/commerciaux.php +++ b/htdocs/societe/commerciaux.php @@ -256,7 +256,5 @@ if ($socid) } - -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/societe/societecontact.php b/htdocs/societe/societecontact.php index 691f930b767..69298f263e8 100644 --- a/htdocs/societe/societecontact.php +++ b/htdocs/societe/societecontact.php @@ -2,9 +2,9 @@ /* Copyright (C) 2005 Patrick Rouillon <patrick@rouillon.net> * Copyright (C) 2005-2011 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com> - * Copyright (C) 2011-2012 Philippe Grand <philippe.grand@atoo-net.com> + * Copyright (C) 2011-2015 Philippe Grand <philippe.grand@atoo-net.com> * Copyright (C) 2014 Charles-Fr Benke <charles.fr@benke.fr> - * Copyright (C) 2015 Marcos García <marcosgdf@gmail.com> + * Copyright (C) 2015 Marcos García <marcosgdf@gmail.com> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -333,5 +333,5 @@ if ($id > 0 || ! empty($ref)) } } -$db->close(); llxFooter(); +$db->close(); diff --git a/htdocs/user/group/perms.php b/htdocs/user/group/perms.php index a910753c643..11e08988de6 100644 --- a/htdocs/user/group/perms.php +++ b/htdocs/user/group/perms.php @@ -326,6 +326,5 @@ if ($id) print '</table>'; } -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/user/ldap.php b/htdocs/user/ldap.php index 968c3e565a5..34d29150251 100644 --- a/htdocs/user/ldap.php +++ b/htdocs/user/ldap.php @@ -209,9 +209,5 @@ else print '</table>'; - - - -$db->close(); - llxFooter(); +$db->close(); -- GitLab From 57102aefde71f5def0ae66d83c701cd52680c233 Mon Sep 17 00:00:00 2001 From: Ion Agorria <ion@agorria.com> Date: Sat, 12 Dec 2015 01:38:24 +0100 Subject: [PATCH 159/197] Price expression selector fix --- htdocs/product/dynamic_price/editor.php | 2 +- htdocs/product/fournisseurs.php | 2 +- htdocs/product/price.php | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/product/dynamic_price/editor.php b/htdocs/product/dynamic_price/editor.php index ba00d3be3bd..dc7c670f4cb 100644 --- a/htdocs/product/dynamic_price/editor.php +++ b/htdocs/product/dynamic_price/editor.php @@ -231,7 +231,7 @@ print '<script type="text/javascript"> window.location = "'.str_replace('dynamic_price/editor.php', $tab.'.php', $_SERVER["PHP_SELF"]).'?id='.$id.($tab == 'price' ? '&action=edit_price' : '').'"; } function on_change() { - window.location = "'.$_SERVER["PHP_SELF"].'?id='.$id.'&tab='.$tab.'&eid=" + $("#expression_selection").attr("value"); + window.location = "'.$_SERVER["PHP_SELF"].'?id='.$id.'&tab='.$tab.'&eid=" + $("#expression_selection").val(); } </script>'; diff --git a/htdocs/product/fournisseurs.php b/htdocs/product/fournisseurs.php index dab8d8dcf5d..04007d2ede1 100644 --- a/htdocs/product/fournisseurs.php +++ b/htdocs/product/fournisseurs.php @@ -467,7 +467,7 @@ if ($id > 0 || $ref) window.location = "'.DOL_URL_ROOT.'/product/dynamic_price/editor.php?id='.$id.'&tab=fournisseurs&eid=" + $("#eid").attr("value"); } function on_change() { - if ($("#eid").attr("value") == 0) { + if ($("#eid").val() == 0) { jQuery("#price_numeric").show(); } else { jQuery("#price_numeric").hide(); diff --git a/htdocs/product/price.php b/htdocs/product/price.php index 3f16a20d98b..2a770841c60 100644 --- a/htdocs/product/price.php +++ b/htdocs/product/price.php @@ -841,13 +841,13 @@ if ($action == 'edit_price' && $object->getRights()->creer) <script type="text/javascript"> jQuery(document).ready(function() { jQuery("#expression_editor").click(function() { - window.location = "<?php echo DOL_URL_ROOT ?>/product/dynamic_price/editor.php?id=<?php echo $id ?>&tab=price&eid=" + $("#eid").attr("value"); + window.location = "<?php echo DOL_URL_ROOT ?>/product/dynamic_price/editor.php?id=<?php echo $id ?>&tab=price&eid=" + $("#eid").val(); }); jQuery("#eid").change(on_change); on_change(); }); function on_change() { - if ($("#eid").attr("value") == 0) { + if ($("#eid").val() == 0) { jQuery("#price_numeric").show(); } else { jQuery("#price_numeric").hide(); -- GitLab From 442f669dc7801a24a9db2e131ca6ca9c5efc7739 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= <frederic.france@free.fr> Date: Sat, 12 Dec 2015 10:45:33 +0100 Subject: [PATCH 160/197] typo --- htdocs/core/class/html.formsms.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/html.formsms.class.php b/htdocs/core/class/html.formsms.class.php index 815bad896b5..c3b38a85c6a 100644 --- a/htdocs/core/class/html.formsms.class.php +++ b/htdocs/core/class/html.formsms.class.php @@ -324,7 +324,7 @@ function limitChars(textarea, limit, infodiv) print '<input class="button" type="submit" name="sendmail" value="'.$langs->trans("SendSms").'">'; if ($this->withcancel) { - print ' &nbnp; '; + print ' '; print '<input class="button" type="submit" name="cancel" value="'.$langs->trans("Cancel").'">'; } print '</div>'; -- GitLab From de0a13ae8fa9af5886d64f0320d20e1b3579ae19 Mon Sep 17 00:00:00 2001 From: philippe grand <philippe.grand@atoo-net.com> Date: Sat, 12 Dec 2015 10:59:02 +0100 Subject: [PATCH 161/197] [Qual] Uniformize code --- htdocs/margin/admin/margin.php | 6 +++--- htdocs/opensurvey/card.php | 4 ++-- htdocs/opensurvey/results.php | 6 +++--- htdocs/opensurvey/wizard/choix_autre.php | 2 +- htdocs/opensurvey/wizard/choix_date.php | 4 ++-- htdocs/opensurvey/wizard/create_survey.php | 4 ++-- htdocs/paybox/admin/paybox.php | 2 +- htdocs/paypal/admin/paypal.php | 4 ++-- htdocs/product/admin/dynamic_prices.php | 18 +++++++++--------- htdocs/product/admin/price_rules.php | 4 ++-- htdocs/product/admin/product.php | 8 ++++---- htdocs/product/admin/product_tools.php | 8 ++++---- htdocs/product/composition/card.php | 10 ++++++---- htdocs/product/dynamic_price/editor.php | 22 +++++++++++----------- htdocs/product/stock/card.php | 15 ++++++++------- htdocs/product/stock/massstockmove.php | 18 +++++++++--------- 16 files changed, 69 insertions(+), 66 deletions(-) diff --git a/htdocs/margin/admin/margin.php b/htdocs/margin/admin/margin.php index 8ff533df259..706d14ebe12 100644 --- a/htdocs/margin/admin/margin.php +++ b/htdocs/margin/admin/margin.php @@ -73,7 +73,7 @@ if ($action == 'remises') { if (dolibarr_set_const($db, 'MARGIN_METHODE_FOR_DISCOUNT', $_POST['MARGIN_METHODE_FOR_DISCOUNT'], 'chaine', 0, '', $conf->entity) > 0) { - setEventMessage($langs->trans("RecordModifiedSuccessfully")); + setEventMessages($langs->trans("RecordModifiedSuccessfully"), null, 'mesgs'); } else { @@ -85,7 +85,7 @@ if ($action == 'typemarges') { if (dolibarr_set_const($db, 'MARGIN_TYPE', $_POST['MARGIN_TYPE'], 'chaine', 0, '', $conf->entity) > 0) { - setEventMessage($langs->trans("RecordModifiedSuccessfully")); + setEventMessages($langs->trans("RecordModifiedSuccessfully"), null, 'mesgs'); } else { @@ -97,7 +97,7 @@ if ($action == 'contact') { if (dolibarr_set_const($db, 'AGENT_CONTACT_TYPE', $_POST['AGENT_CONTACT_TYPE'], 'chaine', 0, '', $conf->entity) > 0) { - setEventMessage($langs->trans("RecordModifiedSuccessfully")); + setEventMessages($langs->trans("RecordModifiedSuccessfully"), null, 'mesgs'); } else { diff --git a/htdocs/opensurvey/card.php b/htdocs/opensurvey/card.php index 7a36a316d13..c419a804210 100644 --- a/htdocs/opensurvey/card.php +++ b/htdocs/opensurvey/card.php @@ -99,7 +99,7 @@ if ($action == 'update') $res=$object->update($user); if ($res < 0) { - setEventMessage($object->error,'errors'); + setEventMessages($object->error, $object->errors, 'errors'); $action='edit'; } } @@ -131,7 +131,7 @@ if (GETPOST('ajoutcomment')) if (! $resql) { - setEventMessage($langs->trans('ErrorInsertingComment'), 'errors'); + setEventMessages($langs->trans('ErrorInsertingComment'), null, 'errors'); } } } diff --git a/htdocs/opensurvey/results.php b/htdocs/opensurvey/results.php index ca10eac09b9..5c14a20de23 100644 --- a/htdocs/opensurvey/results.php +++ b/htdocs/opensurvey/results.php @@ -91,7 +91,7 @@ if (GETPOST("boutonp") || GETPOST("boutonp.x") || GETPOST("boutonp_x")) // bout $num_rows = $db->num_rows($resql); if ($num_rows > 0) { - setEventMessage($langs->trans("VoteNameAlreadyExists"),'errors'); + setEventMessages($langs->trans("VoteNameAlreadyExists"), null, 'errors'); $error++; } else @@ -1024,11 +1024,11 @@ if (isset($_POST["boutonp"]) && $_POST["nom"] == "") { } if (isset($erreur_prenom) && $erreur_prenom) { - setEventMessage($langs->trans('VoteNameAlreadyExists'), 'errors'); + setEventMessages($langs->trans('VoteNameAlreadyExists'), null, 'errors'); } if (isset($erreur_ajout_date) && $erreur_ajout_date) { - setEventMessage($langs->trans("ErrorWrongDate"), 'errors'); + setEventMessages($langs->trans("ErrorWrongDate"), null, 'errors'); } //fin du tableau diff --git a/htdocs/opensurvey/wizard/choix_autre.php b/htdocs/opensurvey/wizard/choix_autre.php index 9797762d6cb..a415d6b4987 100644 --- a/htdocs/opensurvey/wizard/choix_autre.php +++ b/htdocs/opensurvey/wizard/choix_autre.php @@ -84,7 +84,7 @@ if (isset($_POST["confirmecreation"])) //message d'erreur si aucun champ renseigné if ($testremplissage != "ok" || (!$toutchoix)) { - setEventMessage($langs->trans("ErrorOpenSurveyOneChoice"), 'errors'); + setEventMessages($langs->trans("ErrorOpenSurveyOneChoice"), null, 'errors'); } else { //format du sondage AUTRE diff --git a/htdocs/opensurvey/wizard/choix_date.php b/htdocs/opensurvey/wizard/choix_date.php index 6a1efd39617..ecfe319828a 100644 --- a/htdocs/opensurvey/wizard/choix_date.php +++ b/htdocs/opensurvey/wizard/choix_date.php @@ -156,13 +156,13 @@ if (GETPOST('confirmation')) } if (isset($errheure)) { - setEventMessage($langs->trans("ErrorBadFormat"), 'errors'); + setEventMessages($langs->trans("ErrorBadFormat"), null, 'errors'); } } //If just one day and no other time options, error message if (count($_SESSION["totalchoixjour"])=="1" && $_POST["horaires0"][0]=="" && $_POST["horaires0"][1]=="" && $_POST["horaires0"][2]=="" && $_POST["horaires0"][3]=="" && $_POST["horaires0"][4]=="") { - setEventMessage($langs->trans("MoreChoices"), 'errors'); + setEventMessages($langs->trans("MoreChoices"), null, 'errors'); $erreur=true; } diff --git a/htdocs/opensurvey/wizard/create_survey.php b/htdocs/opensurvey/wizard/create_survey.php index ec78e9789ca..c9ba1324a70 100644 --- a/htdocs/opensurvey/wizard/create_survey.php +++ b/htdocs/opensurvey/wizard/create_survey.php @@ -94,12 +94,12 @@ if (GETPOST("creation_sondage_date") || GETPOST("creation_sondage_autre")) $_SESSION['champdatefin'] = dol_print_date($champdatefin,'dayrfc'); //$testdate = false; //$_SESSION['champdatefin'] = dol_print_date($champdatefin,'dayrfc'); - setEventMessage('ExpireDate','warnings'); + setEventMessages('ExpireDate', null, 'warnings'); } } if (! $testdate) { - setEventMessage($langs->trans('ErrorFieldRequired',$langs->transnoentitiesnoconv("ExpireDate")), 'errors'); + setEventMessages($langs->trans('ErrorFieldRequired',$langs->transnoentitiesnoconv("ExpireDate")), null, 'errors'); } if ($titre && $testdate) diff --git a/htdocs/paybox/admin/paybox.php b/htdocs/paybox/admin/paybox.php index 5a7301613c4..98645575a13 100644 --- a/htdocs/paybox/admin/paybox.php +++ b/htdocs/paybox/admin/paybox.php @@ -67,7 +67,7 @@ if ($action == 'setvalue' && $user->admin) if (! $error) { $db->commit(); - setEventMessage($langs->trans("SetupSaved")); + setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } else { diff --git a/htdocs/paypal/admin/paypal.php b/htdocs/paypal/admin/paypal.php index 89065cb7c77..f794989c59e 100644 --- a/htdocs/paypal/admin/paypal.php +++ b/htdocs/paypal/admin/paypal.php @@ -75,7 +75,7 @@ if ($action == 'setvalue' && $user->admin) if (! $error) { $db->commit(); - setEventMessage($langs->trans("SetupSaved")); + setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } else { @@ -113,7 +113,7 @@ print $langs->trans("PaypalDesc")."<br>\n"; if (! function_exists('curl_version')) { $langs->load("errors"); - setEventMessage($langs->trans("ErrorPhpCurlNotInstalled"), 'errors'); + setEventMessages($langs->trans("ErrorPhpCurlNotInstalled"), null, 'errors'); } diff --git a/htdocs/product/admin/dynamic_prices.php b/htdocs/product/admin/dynamic_prices.php index 79d7cdebfc2..45086630c47 100644 --- a/htdocs/product/admin/dynamic_prices.php +++ b/htdocs/product/admin/dynamic_prices.php @@ -43,14 +43,14 @@ $price_globals = new PriceGlobalVariable($db); if ($action == 'edit_variable') { $res = $price_globals->fetch($selection); if ($res < 1) { - setEventMessage($price_globals->error, 'errors'); + setEventMessages($price_globals->error, $price_globals->errors, 'errors'); } } $price_updaters = new PriceGlobalVariableUpdater($db); if ($action == 'edit_updater') { $res = $price_updaters->fetch($selection); if ($res < 1) { - setEventMessage($price_updaters->error, 'errors'); + setEventMessages($price_updaters->error, $price_updaters->errors, 'errors'); } } @@ -67,7 +67,7 @@ if (!empty($action) && empty($cancel)) { if (!empty($save)) { foreach ($price_globals->listGlobalVariables() as $entry) { if ($price_globals->id != $entry->id && dol_strtolower($price_globals->code) == dol_strtolower($entry->code)) { - setEventMessage($langs->trans("ErrorRecordAlreadyExists"), 'errors'); + setEventMessages($langs->trans("ErrorRecordAlreadyExists"), null, 'errors'); $save = null; } } @@ -78,21 +78,21 @@ if (!empty($action) && empty($cancel)) { if ($res > 0) { $action = ''; } else { - setEventMessage($price_globals->error, 'errors'); + setEventMessages($price_globals->error, $price_globals->errors, 'errors'); } } elseif ($action == 'edit_variable' && !empty($save)) { $res = $price_globals->update($user); if ($res > 0) { $action = ''; } else { - setEventMessage($price_globals->error, 'errors'); + setEventMessages($price_globals->error, $price_globals->errors, 'errors'); } } elseif ($action == 'delete_variable') { $res = $price_globals->delete($selection, $user); if ($res > 0) { $action = ''; } else { - setEventMessage($price_globals->error, 'errors'); + setEventMessages($price_globals->error, $price_globals->errors, 'errors'); } } @@ -113,7 +113,7 @@ if (!empty($action) && empty($cancel)) { if ($res > 0) { $action = ''; } else { - setEventMessage($price_updaters->error, 'errors'); + setEventMessages($price_updaters->error, $price_updaters->errors, 'errors'); } } elseif ($action == 'edit_updater' && !empty($save)) { //Verify if process() works @@ -124,14 +124,14 @@ if (!empty($action) && empty($cancel)) { if ($res > 0) { $action = ''; } else { - setEventMessage($price_updaters->error, 'errors'); + setEventMessages($price_updaters->error, $price_updaters->errors, 'errors'); } } elseif ($action == 'delete_updater') { $res = $price_updaters->delete($selection, $user); if ($res > 0) { $action = ''; } else { - setEventMessage($price_updaters->error, 'errors'); + setEventMessages($price_updaters->error, $price_updaters->errors, 'errors'); } } } elseif (!empty($cancel)) { diff --git a/htdocs/product/admin/price_rules.php b/htdocs/product/admin/price_rules.php index 83d90485b3d..64fa982fff1 100644 --- a/htdocs/product/admin/price_rules.php +++ b/htdocs/product/admin/price_rules.php @@ -89,13 +89,13 @@ if ($_POST) { SET fk_level = ".$db->escape($i_fk_level).", var_percent = ".$i_var_percent.", var_min_percent = ".$i_var_min_percent." WHERE level = ".$i; if (!$db->query($sql)) { - setEventMessage($langs->trans('ErrorSavingChanges'), 'errors'); + setEventMessages($langs->trans('ErrorSavingChanges'), null, 'errors'); } } } - setEventMessage($langs->trans("RecordSaved")); + setEventMessages($langs->trans("RecordSaved"), null, 'mesgs'); } /* diff --git a/htdocs/product/admin/product.php b/htdocs/product/admin/product.php index b3d17646db5..57f6577f789 100644 --- a/htdocs/product/admin/product.php +++ b/htdocs/product/admin/product.php @@ -98,12 +98,12 @@ if ($action == 'setModuleOptions') if (! $error) { $db->commit(); - setEventMessage($langs->trans("SetupSaved")); + setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } else { $db->rollback(); - setEventMessage($langs->trans("Error"), 'errors'); + setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -196,11 +196,11 @@ if ($action) if (! $error) { - setEventMessage($langs->trans("SetupSaved")); + setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } else { - setEventMessage($langs->trans("Error"), 'errors'); + setEventMessages($langs->trans("Error"), null, 'errors'); } } diff --git a/htdocs/product/admin/product_tools.php b/htdocs/product/admin/product_tools.php index 1f2820358e1..0d3ea7584f1 100644 --- a/htdocs/product/admin/product_tools.php +++ b/htdocs/product/admin/product_tools.php @@ -57,7 +57,7 @@ if ($action == 'convert') if ($oldvatrate == $newvatrate) { $langs->load("errors"); - setEventMessage($langs->trans("ErrorNewValueCantMatchOldValue"),'errors'); + setEventMessages($langs->trans("ErrorNewValueCantMatchOldValue"), null, 'errors'); $error++; } @@ -225,12 +225,12 @@ if ($action == 'convert') // Output result if (! $error) { - if ($nbrecordsmodified > 0) setEventMessage($langs->trans("RecordsModified",$nbrecordsmodified)); - else setEventMessage($langs->trans("NoRecordFound"),'warnings'); + if ($nbrecordsmodified > 0) setEventMessages($langs->trans("RecordsModified",$nbrecordsmodified), null, 'mesgs'); + else setEventMessages($langs->trans("NoRecordFound"), null, 'warnings'); } else { - setEventMessage($langs->trans("Error"),'errors'); + setEventMessages($langs->trans("Error"), null, 'errors'); } } diff --git a/htdocs/product/composition/card.php b/htdocs/product/composition/card.php index 86dfb8a8fd4..9686c4683ae 100644 --- a/htdocs/product/composition/card.php +++ b/htdocs/product/composition/card.php @@ -85,9 +85,11 @@ if ($action == 'add_prod' && ($user->rights->produit->creer || $user->rights->se $error++; $action = 're-edit'; if ($object->error == "isFatherOfThis") { - setEventMessage($langs->trans("ErrorAssociationIsFatherOfThis"), 'errors'); - } else { - setEventMessage($object->error, 'errors'); + setEventMessages($langs->trans("ErrorAssociationIsFatherOfThis"), null, 'errors'); + } + else + { + setEventMessages($object->error, $object->errors, 'errors'); } } } @@ -101,7 +103,7 @@ if ($action == 'add_prod' && ($user->rights->produit->creer || $user->rights->se { $error++; $action = 're-edit'; - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } } diff --git a/htdocs/product/dynamic_price/editor.php b/htdocs/product/dynamic_price/editor.php index ba00d3be3bd..bcef4a6fea2 100644 --- a/htdocs/product/dynamic_price/editor.php +++ b/htdocs/product/dynamic_price/editor.php @@ -75,7 +75,7 @@ if ($action == 'add') $priceparser = new PriceParser($db); $price_result = $priceparser->parseProductSupplierExpression($id, $expression, 0, 0); if ($price_result < 0) { //Expression is not valid - setEventMessage($priceparser->translatedError(), 'errors'); + setEventMessages($priceparser->translatedError(), null, 'errors'); } else { @@ -85,21 +85,21 @@ if ($action == 'add') if ($result > 0) //created successfully, set the eid to newly created entry { $eid = $price_expression->id; - setEventMessage($langs->trans("RecordSaved")); + setEventMessages($langs->trans("RecordSaved"), null, 'mesgs'); } else { - setEventMessage("add: ".$price_expression->error, 'errors'); + setEventMessages("add: ".$price_expression->error, $price_expression->errors, 'errors'); } } } else if ($result < 0) { - setEventMessage("add find: ".$price_expression->error, 'errors'); + setEventMessages("add find: ".$price_expression->error, $price_expression->errors, 'errors'); } else { - setEventMessage($langs->trans("ErrorRecordAlreadyExists"), 'errors'); + setEventMessages($langs->trans("ErrorRecordAlreadyExists"), null, 'errors'); } } } @@ -115,7 +115,7 @@ if ($action == 'update') $priceparser = new PriceParser($db); $price_result = $priceparser->parseProductSupplierExpression($id, $expression, 0, 0); if ($price_result < 0) { //Expression is not valid - setEventMessage($priceparser->translatedError(), 'errors'); + setEventMessages($priceparser->translatedError(), null, 'errors'); } else { @@ -125,21 +125,21 @@ if ($action == 'update') $result = $price_expression->update($user); if ($result < 0) { - setEventMessage("update: ".$price_expression->error, 'errors'); + setEventMessages("update: ".$price_expression->error, $price_expression->errors, 'errors'); } else { - setEventMessage($langs->trans("RecordSaved")); + setEventMessages($langs->trans("RecordSaved"), null, 'mesgs'); } } } else if ($result < 0) { - setEventMessage("update find: ".$price_expression->error, 'errors'); + setEventMessages("update find: ".$price_expression->error, $price_expression->errors, 'errors'); } else { - setEventMessage($langs->trans("ErrorRecordAlreadyExists"), 'errors'); + setEventMessages($langs->trans("ErrorRecordAlreadyExists"), null, 'errors'); } } } @@ -151,7 +151,7 @@ if ($action == 'delete') $result = $price_expression->delete($eid, $user); if ($result < 0) { - setEventMessage("delete: ".$price_expression->error, 'errors'); + setEventMessages("delete: ".$price_expression->error, $price_expression->errors, 'errors'); } $eid = 0; } diff --git a/htdocs/product/stock/card.php b/htdocs/product/stock/card.php index 522d2cf242a..5cc9e27a8cb 100644 --- a/htdocs/product/stock/card.php +++ b/htdocs/product/stock/card.php @@ -78,7 +78,7 @@ if ($action == 'add' && $user->rights->stock->creer) $id = $object->create($user); if ($id > 0) { - setEventMessage($langs->trans("RecordSaved")); + setEventMessages($langs->trans("RecordSaved"), null, 'mesgs'); if (! empty($backtopage)) { @@ -94,11 +94,12 @@ if ($action == 'add' && $user->rights->stock->creer) else { $action = 'create'; - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } - else { - setEventMessage($langs->trans("ErrorWarehouseRefRequired"), 'errors'); + else + { + setEventMessages($langs->trans("ErrorWarehouseRefRequired"), null, 'errors'); $action="create"; // Force retour sur page creation } } @@ -116,7 +117,7 @@ if ($action == 'confirm_delete' && $confirm == 'yes' && $user->rights->stock->su } else { - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); $action=''; } } @@ -143,13 +144,13 @@ if ($action == 'update' && $cancel <> $langs->trans("Cancel")) else { $action = 'edit'; - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } else { $action = 'edit'; - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } diff --git a/htdocs/product/stock/massstockmove.php b/htdocs/product/stock/massstockmove.php index 604d7d30280..ffce2e4db8f 100644 --- a/htdocs/product/stock/massstockmove.php +++ b/htdocs/product/stock/massstockmove.php @@ -95,7 +95,7 @@ if ($action == 'addline') { $error++; $langs->load("errors"); - setEventMessage($langs->trans("ErrorWarehouseMustDiffers"),'errors'); + setEventMessages($langs->trans("ErrorWarehouseMustDiffers"), null, 'errors'); } if (! $qty) { @@ -113,7 +113,7 @@ if ($action == 'addline') if (empty($batch)) { $error++; - setEventMessage($langs->trans("ErrorTryToMakeMoveOnProductRequiringBatchData"), 'errors'); + setEventMessages($langs->trans("ErrorTryToMakeMoveOnProductRequiringBatchData"), null, 'errors'); } } } @@ -161,7 +161,7 @@ if ($action == 'createmovements') if (! GETPOST("label")) { $error++; - setEventMessage($langs->trans("ErrorFieldRequired"),$langs->transnoentitiesnoconv("LabelMovement")); + setEventMessages($langs->trans("ErrorFieldRequired"),$langs->transnoentitiesnoconv("LabelMovement"), null, 'errors'); } $db->begin(); @@ -209,7 +209,7 @@ if ($action == 'createmovements') if ($result1 < 0) { $error++; - setEventMessage($product->errors,'errors'); + setEventMessages($product->errors, $product->errorss, 'errors'); } // Add stock @@ -225,7 +225,7 @@ if ($action == 'createmovements') if ($result2 < 0) { $error++; - setEventMessage($product->errors,'errors'); + setEventMessages($product->errors, $product->errorss, 'errors'); } } else @@ -260,7 +260,7 @@ if ($action == 'createmovements') if ($result1 < 0) { $error++; - setEventMessage($product->errors,'errors'); + setEventMessages($product->errors, $product->errorss, 'errors'); } // Add stock @@ -279,7 +279,7 @@ if ($action == 'createmovements') if ($result2 < 0) { $error++; - setEventMessage($product->errors,'errors'); + setEventMessages($product->errors, $product->errorss, 'errors'); } } } @@ -296,14 +296,14 @@ if ($action == 'createmovements') unset($_SESSION['massstockmove']); $db->commit(); - setEventMessage($langs->trans("StockMovementRecorded"),'mesgs'); + setEventMessages($langs->trans("StockMovementRecorded"), null, 'mesgs'); header("Location: ".DOL_URL_ROOT.'/product/stock/index.php'); // Redirect to avoid pb when using back exit; } else { $db->rollback(); - setEventMessage($langs->trans("Error"),'errors'); + setEventMessages($langs->trans("Error"), null, 'errors'); } } -- GitLab From 84205b5be471c9cc647d3ca7a5753e67e664b597 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sat, 12 Dec 2015 14:12:53 +0100 Subject: [PATCH 162/197] Fix: text too long --- htdocs/core/modules/propale/doc/pdf_azur.modules.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/htdocs/core/modules/propale/doc/pdf_azur.modules.php b/htdocs/core/modules/propale/doc/pdf_azur.modules.php index cb7bad2c6c7..4e03a0c4237 100644 --- a/htdocs/core/modules/propale/doc/pdf_azur.modules.php +++ b/htdocs/core/modules/propale/doc/pdf_azur.modules.php @@ -177,7 +177,7 @@ class pdf_azur extends ModelePDFPropales if (empty($object->lines[$i]->fk_product)) continue; $objphoto->fetch($object->lines[$i]->fk_product); - + //var_dump($objphoto->ref);exit; if (! empty($conf->global->PRODUCT_USE_OLD_PATH_FOR_PHOTO)) { $pdir[0] = get_exdir($objphoto->id,2,0,0,$objphoto,'product') . $objphoto->id ."/photos/"; @@ -575,7 +575,7 @@ class pdf_azur extends ModelePDFPropales if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblignes - 1)) { $pdf->setPage($pageposafter); - $pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(60,60,60))); + $pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(80,80,80))); //$pdf->SetDrawColor(190,190,200); $pdf->line($this->marge_gauche, $nexY+1, $this->page_largeur - $this->marge_droite, $nexY+1); $pdf->SetLineStyle(array('dash'=>0)); @@ -1567,6 +1567,7 @@ class pdf_azur extends ModelePDFPropales // Total HT $pdf->SetFillColor(255,255,255); $pdf->SetXY($posx, $tab_top + 0); + $pdf->SetFont('','', $default_font_size - 2); $pdf->MultiCell($largcol, $tab_hl, $outputlangs->transnoentities("ProposalCustomerSignature"), 0, 'L', 1); $pdf->SetXY($posx, $tab_top + $tab_hl); -- GitLab From 0330d8237f1b52f81ea5522f282a9eac8e3105e7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sat, 12 Dec 2015 14:13:45 +0100 Subject: [PATCH 163/197] Fix: Color too dark --- htdocs/core/modules/commande/doc/pdf_einstein.modules.php | 2 +- htdocs/core/modules/expedition/doc/pdf_merou.modules.php | 2 +- htdocs/core/modules/expedition/doc/pdf_rouget.modules.php | 2 +- htdocs/core/modules/facture/doc/pdf_crabe.modules.php | 2 +- htdocs/core/modules/livraison/doc/pdf_typhon.modules.php | 2 +- htdocs/core/modules/project/doc/pdf_baleine.modules.php | 2 +- .../core/modules/supplier_invoice/pdf/pdf_canelle.modules.php | 2 +- htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php | 2 +- .../core/modules/supplier_proposal/doc/pdf_aurore.modules.php | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/htdocs/core/modules/commande/doc/pdf_einstein.modules.php b/htdocs/core/modules/commande/doc/pdf_einstein.modules.php index 0bba9873a52..76a386c48c1 100644 --- a/htdocs/core/modules/commande/doc/pdf_einstein.modules.php +++ b/htdocs/core/modules/commande/doc/pdf_einstein.modules.php @@ -487,7 +487,7 @@ class pdf_einstein extends ModelePDFCommandes if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblignes - 1)) { $pdf->setPage($pageposafter); - $pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(60,60,60))); + $pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(80,80,80))); //$pdf->SetDrawColor(190,190,200); $pdf->line($this->marge_gauche, $nexY+1, $this->page_largeur - $this->marge_droite, $nexY+1); $pdf->SetLineStyle(array('dash'=>0)); diff --git a/htdocs/core/modules/expedition/doc/pdf_merou.modules.php b/htdocs/core/modules/expedition/doc/pdf_merou.modules.php index 5be6bc09847..075609fda2a 100644 --- a/htdocs/core/modules/expedition/doc/pdf_merou.modules.php +++ b/htdocs/core/modules/expedition/doc/pdf_merou.modules.php @@ -280,7 +280,7 @@ class pdf_merou extends ModelePdfExpedition if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblignes - 1)) { $pdf->setPage($pageposafter); - $pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(60,60,60))); + $pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(80,80,80))); //$pdf->SetDrawColor(190,190,200); $pdf->line($this->marge_gauche, $nexY+1, $this->page_largeur - $this->marge_droite, $nexY+1); $pdf->SetLineStyle(array('dash'=>0)); diff --git a/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php b/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php index 57afdac711d..300132eb986 100644 --- a/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php +++ b/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php @@ -316,7 +316,7 @@ class pdf_rouget extends ModelePdfExpedition if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblignes - 1)) { $pdf->setPage($pageposafter); - $pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(60,60,60))); + $pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(80,80,80))); //$pdf->SetDrawColor(190,190,200); $pdf->line($this->marge_gauche, $nexY+1, $this->page_largeur - $this->marge_droite, $nexY+1); $pdf->SetLineStyle(array('dash'=>0)); diff --git a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php index 71050008e07..c0f3ffcc069 100644 --- a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php +++ b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php @@ -582,7 +582,7 @@ class pdf_crabe extends ModelePDFFactures if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblignes - 1)) { $pdf->setPage($pageposafter); - $pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(60,60,60))); + $pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(80,80,80))); //$pdf->SetDrawColor(190,190,200); $pdf->line($this->marge_gauche, $nexY+1, $this->page_largeur - $this->marge_droite, $nexY+1); $pdf->SetLineStyle(array('dash'=>0)); diff --git a/htdocs/core/modules/livraison/doc/pdf_typhon.modules.php b/htdocs/core/modules/livraison/doc/pdf_typhon.modules.php index f0db8f9e61b..ace4f5e0139 100644 --- a/htdocs/core/modules/livraison/doc/pdf_typhon.modules.php +++ b/htdocs/core/modules/livraison/doc/pdf_typhon.modules.php @@ -422,7 +422,7 @@ class pdf_typhon extends ModelePDFDeliveryOrder if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblines - 1)) { $pdf->setPage($pageposafter); - $pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(60,60,60))); + $pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(80,80,80))); //$pdf->SetDrawColor(190,190,200); $pdf->line($this->marge_gauche, $nexY+1, $this->page_largeur - $this->marge_droite, $nexY+1); $pdf->SetLineStyle(array('dash'=>0)); diff --git a/htdocs/core/modules/project/doc/pdf_baleine.modules.php b/htdocs/core/modules/project/doc/pdf_baleine.modules.php index 4b49397716f..24b0bcb627d 100644 --- a/htdocs/core/modules/project/doc/pdf_baleine.modules.php +++ b/htdocs/core/modules/project/doc/pdf_baleine.modules.php @@ -250,7 +250,7 @@ class pdf_baleine extends ModelePDFProjects if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblignes - 1)) { $pdf->setPage($pageposafter); - $pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(60,60,60))); + $pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(80,80,80))); //$pdf->SetDrawColor(190,190,200); $pdf->line($this->marge_gauche, $nexY+1, $this->page_largeur - $this->marge_droite, $nexY+1); $pdf->SetLineStyle(array('dash'=>0)); diff --git a/htdocs/core/modules/supplier_invoice/pdf/pdf_canelle.modules.php b/htdocs/core/modules/supplier_invoice/pdf/pdf_canelle.modules.php index 743e333208d..c456bd7e0db 100644 --- a/htdocs/core/modules/supplier_invoice/pdf/pdf_canelle.modules.php +++ b/htdocs/core/modules/supplier_invoice/pdf/pdf_canelle.modules.php @@ -451,7 +451,7 @@ class pdf_canelle extends ModelePDFSuppliersInvoices if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblignes - 1)) { $pdf->setPage($pageposafter); - $pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(60,60,60))); + $pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(80,80,80))); //$pdf->SetDrawColor(190,190,200); $pdf->line($this->marge_gauche, $nexY+1, $this->page_largeur - $this->marge_droite, $nexY+1); $pdf->SetLineStyle(array('dash'=>0)); diff --git a/htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php b/htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php index a9247534165..e84416e114e 100644 --- a/htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php +++ b/htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php @@ -473,7 +473,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblignes - 1)) { $pdf->setPage($pageposafter); - $pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(60,60,60))); + $pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(80,80,80))); //$pdf->SetDrawColor(190,190,200); $pdf->line($this->marge_gauche, $nexY+1, $this->page_largeur - $this->marge_droite, $nexY+1); $pdf->SetLineStyle(array('dash'=>0)); diff --git a/htdocs/core/modules/supplier_proposal/doc/pdf_aurore.modules.php b/htdocs/core/modules/supplier_proposal/doc/pdf_aurore.modules.php index a0d565d5337..4a14998d0c4 100644 --- a/htdocs/core/modules/supplier_proposal/doc/pdf_aurore.modules.php +++ b/htdocs/core/modules/supplier_proposal/doc/pdf_aurore.modules.php @@ -497,7 +497,7 @@ class pdf_aurore extends ModelePDFSupplierProposal if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblignes - 1)) { $pdf->setPage($pageposafter); - $pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(60,60,60))); + $pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(80,80,80))); //$pdf->SetDrawColor(190,190,200); $pdf->line($this->marge_gauche, $nexY+1, $this->page_largeur - $this->marge_droite, $nexY+1); $pdf->SetLineStyle(array('dash'=>0)); -- GitLab From 2a6fbe352630613f8f65068942d8493ddc76f2c9 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sat, 12 Dec 2015 14:29:59 +0100 Subject: [PATCH 164/197] Fix debug shipment doc generation (bad position of fields, code differences, text size, ...) --- .../expedition/doc/pdf_merou.modules.php | 32 ++-- .../expedition/doc/pdf_rouget.modules.php | 166 ++++++++++++++++-- .../modules/propale/doc/pdf_azur.modules.php | 2 +- 3 files changed, 171 insertions(+), 29 deletions(-) diff --git a/htdocs/core/modules/expedition/doc/pdf_merou.modules.php b/htdocs/core/modules/expedition/doc/pdf_merou.modules.php index 075609fda2a..935c2c3f400 100644 --- a/htdocs/core/modules/expedition/doc/pdf_merou.modules.php +++ b/htdocs/core/modules/expedition/doc/pdf_merou.modules.php @@ -262,9 +262,11 @@ class pdf_merou extends ModelePdfExpedition $pdf->SetFont('','', $default_font_size - 3); - //Creation des cases a cocher + // Check boxes + $pdf->SetDrawColor(120,120,120); $pdf->Rect(10+3, $curY, 3, 3); $pdf->Rect(20+3, $curY, 3, 3); + //Insertion de la reference du produit $pdf->SetXY(30, $curY); $pdf->SetFont('','B', $default_font_size - 3); @@ -522,7 +524,7 @@ class pdf_merou extends ModelePdfExpedition $origin_id = $object->origin_id; // Add list of linked elements - $posy = pdf_writeLinkedObjects($pdf, $object, $outputlangs, $posx, $posy, 100, 3, 'R', $default_font_size, $hookmanager); + $posy = pdf_writeLinkedObjects($pdf, $object, $outputlangs, $posx, $posy, 100, 3, 'R', $default_font_size - 1, $hookmanager); //$this->Code39($Xoff+43, $Yoff+1, $object->commande->ref,$ext = true, $cks = false, $w = 0.4, $h = 4, $wide = true); //Definition Emplacement du bloc Societe @@ -560,18 +562,18 @@ class pdf_merou extends ModelePdfExpedition $Yoff = $Yoff+7; $pdf->SetXY($blSocX-80,$blSocY+17); - $pdf->SetFont('','B', $default_font_size - 2); + $pdf->SetFont('','B', $default_font_size - 3); $pdf->SetTextColor(0,0,0); - $pdf->MultiCell(50, 8, $outputlangs->transnoentities("DateDelivery")." : " . dol_print_date($object->date_delivery,'day',false,$outputlangs,true), '', 'L'); + $pdf->MultiCell(50, 8, $outputlangs->transnoentities("DateDeliveryPlanned")." : " . dol_print_date($object->date_delivery,'day',false,$outputlangs,true), '', 'L'); $pdf->SetXY($blSocX-80,$blSocY+20); - $pdf->SetFont('','B', $default_font_size - 2); + $pdf->SetFont('','B', $default_font_size - 3); $pdf->SetTextColor(0,0,0); $pdf->MultiCell(50, 8, $outputlangs->transnoentities("TrackingNumber")." : " . $object->tracking_number, '', 'L'); // Deliverer $pdf->SetXY($blSocX-80,$blSocY+23); - $pdf->SetFont('','', $default_font_size - 2); + $pdf->SetFont('','', $default_font_size - 3); $pdf->SetTextColor(0,0,0); if (! empty($object->tracking_number)) @@ -592,7 +594,7 @@ class pdf_merou extends ModelePdfExpedition $label.=" : "; $label.=$object->tracking_url; } - $pdf->SetFont('','B', $default_font_size - 2); + $pdf->SetFont('','B', $default_font_size - 3); $pdf->writeHTMLCell(50, 8, '', '', $label, '', 'L'); } } @@ -603,9 +605,7 @@ class pdf_merou extends ModelePdfExpedition } - /**********************************/ - //Emplacement Informations Expediteur (My Company) - /**********************************/ + // Shipping company (My Company) $Yoff = $blSocY; $blExpX=$Xoff-20; $blW=52; @@ -623,7 +623,7 @@ class pdf_merou extends ModelePdfExpedition $result=$object->fetch_contact($arrayidcontact[0]); } - //Recipient name + // Recipient name // On peut utiliser le nom de la societe du contact if ($usecontact && !empty($conf->global->MAIN_USE_COMPANY_NAME_OF_CONTACT)) { $thirdparty = $object->contact; @@ -631,15 +631,15 @@ class pdf_merou extends ModelePdfExpedition $thirdparty = $object->client; } - $carac_client_name= pdfBuildThirdpartyName($thirdparty, $outputlangs); + $carac_client_name=pdfBuildThirdpartyName($thirdparty, $outputlangs); $carac_client=pdf_build_address($outputlangs,$this->emetteur,$object->client,((!empty($object->contact))?$object->contact:null),$usecontact,'targetwithdetails'); $blDestX=$blExpX+55; - $blW=50; + $blW=54; $Yoff = $Ydef +1; - // Show recipient frame + // Show Recipient frame $pdf->SetFont('','B', $default_font_size - 3); $pdf->SetXY($blDestX,$Yoff-4); $pdf->MultiCell($blW,3, $outputlangs->transnoentities("Recipient"), 0, 'L'); @@ -653,8 +653,8 @@ class pdf_merou extends ModelePdfExpedition $posy = $pdf->getY(); // Show recipient information - $pdf->SetFont('','', $default_font_size - 1); - $pdf->SetXY($posx+2,$posy); + $pdf->SetFont('','', $default_font_size - 3); + $pdf->SetXY($blDestX,$posy); $pdf->MultiCell($widthrecbox, 4, $carac_client, 0, 'L'); } } diff --git a/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php b/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php index 300132eb986..091f754a01c 100644 --- a/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php +++ b/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php @@ -71,6 +71,14 @@ class pdf_rouget extends ModelePdfExpedition $this->posxdesc=$this->marge_gauche+1; $this->posxqtyordered=$this->page_largeur - $this->marge_droite - 70; $this->posxqtytoship=$this->page_largeur - $this->marge_droite - 35; + $this->posxpicture=$this->posxqtyordered - (empty($conf->global->MAIN_DOCUMENTS_WITH_PICTURE_WIDTH)?20:$conf->global->MAIN_DOCUMENTS_WITH_PICTURE_WIDTH); // width of images + + if ($this->page_largeur < 210) // To work with US executive format + { + $this->posxpicture-=20; + $this->posxqtyordered-=20; + $this->posxqtytoship-=20; + } } /** @@ -103,6 +111,68 @@ class pdf_rouget extends ModelePdfExpedition $outputlangs->load("deliveries"); $outputlangs->load("sendings"); + $nblignes = count($object->lines); + + // Loop on each lines to detect if there is at least one image to show + $realpatharray=array(); + if (! empty($conf->global->MAIN_GENERATE_SHIPMENT_WITH_PICTURE)) + { + $objphoto = new Product($this->db); + + for ($i = 0 ; $i < $nblignes ; $i++) + { + if (empty($object->lines[$i]->fk_product)) continue; + + $objphoto->fetch($object->lines[$i]->fk_product); + //var_dump($objphoto->ref);exit; + if (! empty($conf->global->PRODUCT_USE_OLD_PATH_FOR_PHOTO)) + { + $pdir[0] = get_exdir($objphoto->id,2,0,0,$objphoto,'product') . $objphoto->id ."/photos/"; + $pdir[1] = get_exdir(0,0,0,0,$objphoto,'product') . dol_sanitizeFileName($objphoto->ref).'/'; + } + else + { + $pdir[0] = get_exdir(0,0,0,0,$objphoto,'product') . dol_sanitizeFileName($objphoto->ref).'/'; // default + $pdir[1] = get_exdir($objphoto->id,2,0,0,$objphoto,'product') . $objphoto->id ."/photos/"; // alternative + } + + $arephoto = false; + foreach ($pdir as $midir) + { + if (! $arephoto) + { + $dir = $conf->product->dir_output.'/'.$midir; + + foreach ($objphoto->liste_photos($dir,1) as $key => $obj) + { + if (empty($conf->global->CAT_HIGH_QUALITY_IMAGES)) // If CAT_HIGH_QUALITY_IMAGES not defined, we use thumb if defined and then original photo + { + if ($obj['photo_vignette']) + { + $filename= $obj['photo_vignette']; + } + else + { + $filename=$obj['photo']; + } + } + else + { + $filename=$obj['photo']; + } + + $realpath = $dir.$filename; + $arephoto = true; + } + } + } + + if ($realpath && $arephoto) $realpatharray[$i]=$realpath; + } + } + + if (count($realpatharray) == 0) $this->posxpicture=$this->posxqtyordered; + if ($conf->expedition->dir_output) { // Definition de $dir et $file @@ -140,8 +210,6 @@ class pdf_rouget extends ModelePdfExpedition global $action; $reshook=$hookmanager->executeHooks('beforePDFCreation',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks - $nblignes = count($object->lines); - $pdf=pdf_getInstance($this->format); $default_font_size = pdf_getPDFFontSize($outputlangs); $heightforinfotot = 0; // Height reserved to output the info and total part @@ -278,27 +346,98 @@ class pdf_rouget extends ModelePdfExpedition $curY = $tab_top + 7; $nexY = $tab_top + 7; - $num=count($object->lines); // Loop on each lines - for ($i = 0; $i < $num; $i++) + for ($i = 0; $i < $nblignes; $i++) { $curY = $nexY; $pdf->SetFont('','', $default_font_size - 1); // Into loop to work with multipage $pdf->SetTextColor(0,0,0); + // Define size of image if we need it + $imglinesize=array(); + if (! empty($realpatharray[$i])) $imglinesize=pdf_getSizeForImage($realpatharray[$i]); + $pdf->setTopMargin($tab_top_newpage); $pdf->setPageOrientation('', 1, $heightforfooter+$heightforfreetext+$heightforinfotot); // The only function to edit the bottom margin of current page to set it. $pageposbefore=$pdf->getPage(); - // Description de la ligne produit - pdf_writelinedesc($pdf,$object,$i,$outputlangs,$this->posxqtyordered-10,3,$this->posxdesc,$curY,0,1); + $showpricebeforepagebreak=1; + $posYAfterImage=0; + $posYAfterDescription=0; + // We start with Photo of product line + if (isset($imglinesize['width']) && isset($imglinesize['height']) && ($curY + $imglinesize['height']) > ($this->page_hauteur-($heightforfooter+$heightforfreetext+$heightforinfotot))) // If photo too high, we moved completely on new page + { + $pdf->AddPage('','',true); + if (! empty($tplidx)) $pdf->useTemplate($tplidx); + if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) $this->_pagehead($pdf, $object, 0, $outputlangs); + $pdf->setPage($pageposbefore+1); + + $curY = $tab_top_newpage; + $showpricebeforepagebreak=0; + } + + if (isset($imglinesize['width']) && isset($imglinesize['height'])) + { + $curX = $this->posxpicture-1; + $pdf->Image($realpatharray[$i], $curX + (($this->posxqtyordered-$this->posxpicture-$imglinesize['width'])/2), $curY, $imglinesize['width'], $imglinesize['height'], '', '', '', 2, 300); // Use 300 dpi + // $pdf->Image does not increase value return by getY, so we save it manually + $posYAfterImage=$curY+$imglinesize['height']; + } + + // Description of product line + $curX = $this->posxdesc-1; + + $pdf->startTransaction(); + // Description de la ligne produit + pdf_writelinedesc($pdf,$object,$i,$outputlangs,$this->posxpicture-$curX,3,$curX,$curY,$hideref,$hidedesc); + + $pageposafter=$pdf->getPage(); + if ($pageposafter > $pageposbefore) // There is a pagebreak + { + $pdf->rollbackTransaction(true); + $pageposafter=$pageposbefore; + //print $pageposafter.'-'.$pageposbefore;exit; + $pdf->setPageOrientation('', 1, $heightforfooter); // The only function to edit the bottom margin of current page to set it. + pdf_writelinedesc($pdf,$object,$i,$outputlangs,$this->posxpicture-$curX,3,$curX,$curY,$hideref,$hidedesc); + + $pageposafter=$pdf->getPage(); + $posyafter=$pdf->GetY(); + //var_dump($posyafter); var_dump(($this->page_hauteur - ($heightforfooter+$heightforfreetext+$heightforinfotot))); exit; + if ($posyafter > ($this->page_hauteur - ($heightforfooter+$heightforfreetext+$heightforinfotot))) // There is no space left for total+free text + { + if ($i == ($nblignes-1)) // No more lines, and no space left to show total, so we create a new page + { + $pdf->AddPage('','',true); + if (! empty($tplidx)) $pdf->useTemplate($tplidx); + if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) $this->_pagehead($pdf, $object, 0, $outputlangs); + $pdf->setPage($pageposafter+1); + } + } + else + { + // We found a page break + $showpricebeforepagebreak=0; + } + } + else // No pagebreak + { + $pdf->commitTransaction(); + } + $posYAfterDescription=$pdf->GetY(); + $nexY = $pdf->GetY(); $pageposafter=$pdf->getPage(); + $pdf->setPage($pageposbefore); $pdf->setTopMargin($this->marge_haute); $pdf->setPageOrientation('', 1, 0); // The only function to edit the bottom margin of current page to set it. + // We suppose that a too long description or photo were moved completely on next page + if ($pageposafter > $pageposbefore && empty($showpricebeforepagebreak)) { + $pdf->setPage($pageposafter); $curY = $tab_top_newpage; + } + // We suppose that a too long description is moved completely on next page if ($pageposafter > $pageposbefore) { $pdf->setPage($pageposafter); $curY = $tab_top_newpage; @@ -563,12 +702,15 @@ class pdf_rouget extends ModelePdfExpedition $pdf->SetTextColor(0,0,60); $pdf->MultiCell(100, 4, $outputlangs->transnoentities("RefSending") ." : ".$object->ref, '', 'R'); - // Date Expedition - $posy+=4; - $pdf->SetXY($posx,$posy); - $pdf->SetTextColor(0,0,60); - $pdf->MultiCell(100, 4, $outputlangs->transnoentities("DateDeliveryPlanned")." : ".dol_print_date($object->date_delivery,"daytext",false,$outputlangs,true), '', 'R'); - + // Date planned delivery + if (! empty($object->date_delivery)) + { + $posy+=4; + $pdf->SetXY($posx,$posy); + $pdf->SetTextColor(0,0,60); + $pdf->MultiCell(100, 4, $outputlangs->transnoentities("DateDeliveryPlanned")." : ".dol_print_date($object->date_delivery,"day",false,$outputlangs,true), '', 'R'); + } + if (! empty($object->client->code_client)) { $posy+=4; diff --git a/htdocs/core/modules/propale/doc/pdf_azur.modules.php b/htdocs/core/modules/propale/doc/pdf_azur.modules.php index 4e03a0c4237..8f5109eb4ec 100644 --- a/htdocs/core/modules/propale/doc/pdf_azur.modules.php +++ b/htdocs/core/modules/propale/doc/pdf_azur.modules.php @@ -395,7 +395,7 @@ class pdf_azur extends ModelePDFPropales $nexY = $tab_top + 7; // Loop on each lines - for ($i = 0 ; $i < $nblignes ; $i++) + for ($i = 0; $i < $nblignes; $i++) { $curY = $nexY; $pdf->SetFont('','', $default_font_size - 1); // Into loop to work with multipage -- GitLab From 9cc77787c5bbb60ba0c2f3f34bec0af905369293 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= <frederic.france@free.fr> Date: Sat, 12 Dec 2015 16:10:36 +0100 Subject: [PATCH 165/197] typo --- htdocs/core/class/html.formsms.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/html.formsms.class.php b/htdocs/core/class/html.formsms.class.php index 815bad896b5..8fa5c3e3110 100644 --- a/htdocs/core/class/html.formsms.class.php +++ b/htdocs/core/class/html.formsms.class.php @@ -17,7 +17,7 @@ */ /** - * \file htdocs/core/class/html.formmail.class.php + * \file htdocs/core/class/html.formsms.class.php * \ingroup core * \brief Fichier de la classe permettant la generation du formulaire html d'envoi de mail unitaire */ -- GitLab From 3680202c1c6a4a836f0a11d4bf4c3581ae08a577 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sun, 13 Dec 2015 14:39:12 +0100 Subject: [PATCH 166/197] Fix do not share color for title of table and title of pages --- htdocs/admin/ihm.php | 7 ++++-- htdocs/core/lib/usergroups.lib.php | 36 +++++++++++++++++++++++++++--- htdocs/langs/en_US/admin.lang | 1 + htdocs/theme/eldy/style.css.php | 18 +++++++++------ htdocs/theme/md/style.css.php | 14 +++++++----- 5 files changed, 59 insertions(+), 17 deletions(-) diff --git a/htdocs/admin/ihm.php b/htdocs/admin/ihm.php index af560e73c46..0b6e65f7d1f 100644 --- a/htdocs/admin/ihm.php +++ b/htdocs/admin/ihm.php @@ -85,7 +85,11 @@ if ($action == 'update') if ($val == '') dolibarr_del_const($db, 'THEME_ELDY_BACKTITLE1', $conf->entity); else dolibarr_set_const($db, 'THEME_ELDY_BACKTITLE1', join(',',colorStringToArray(GETPOST('THEME_ELDY_BACKTITLE1'),array())),'chaine',0,'',$conf->entity); - if (GETPOST('THEME_ELDY_USE_HOVER') == '') dolibarr_del_const($db, "THEME_ELDY_USE_HOVER", $conf->entity); + $val=(join(',',(colorStringToArray(GETPOST('THEME_ELDY_TEXTTITLENOTAB'),array())))); + if ($val == '') dolibarr_del_const($db, 'THEME_ELDY_TEXTTITLENOTAB', $conf->entity); + else dolibarr_set_const($db, 'THEME_ELDY_TEXTTITLENOTAB', join(',',colorStringToArray(GETPOST('THEME_ELDY_TEXTTITLENOTAB'),array())),'chaine',0,'',$conf->entity); + + if (GETPOST('THEME_ELDY_USE_HOVER') == '') dolibarr_del_const($db, "THEME_ELDY_USE_HOVER", $conf->entity); else dolibarr_set_const($db, "THEME_ELDY_USE_HOVER", $_POST["THEME_ELDY_USE_HOVER"], 'chaine', 0, '', $conf->entity); $val=(join(',',(colorStringToArray(GETPOST('THEME_ELDY_TEXTLINK'),array())))); @@ -157,7 +161,6 @@ if ($action == 'edit') // Edit clearstatcache(); $var=true; - print load_fiche_titre($langs->trans("Language"),'',''); print '<br>'; print '<table summary="edit" class="noborder" width="100%">'; print '<tr class="liste_titre"><td>'.$langs->trans("Parameters").'</td><td>'.$langs->trans("Value").'</td>'; diff --git a/htdocs/core/lib/usergroups.lib.php b/htdocs/core/lib/usergroups.lib.php index 56b44845e3b..c1d13b49429 100644 --- a/htdocs/core/lib/usergroups.lib.php +++ b/htdocs/core/lib/usergroups.lib.php @@ -317,8 +317,8 @@ function show_theme($fuser,$edit=0,$foruserprofile=false) { print '<tr class="liste_titre"><th width="35%">'.$langs->trans("DefaultSkin").'</th>'; print '<th align="right">'; - $url='http://www.dolistore.com/lang-en/4-skins'; - if (preg_match('/fr/i',$langs->defaultlang)) $url='http://www.dolistore.com/lang-fr/4-themes'; + $url='https://www.dolistore.com/lang-en/4-skins'; + if (preg_match('/fr/i',$langs->defaultlang)) $url='https://www.dolistore.com/fr/4-themes'; //if (preg_match('/es/i',$langs->defaultlang)) $url='http://www.dolistore.com/lang-es/4-themes'; print '<a href="'.$url.'" target="_blank">'; print $langs->trans('DownloadMoreSkins'); @@ -506,6 +506,32 @@ function show_theme($fuser,$edit=0,$foruserprofile=false) print '</tr>'; } + + // TextTitleColor + if ($foruserprofile) + { + + + } + else + { + $var=!$var; + print '<tr '.$bc[$var].'>'; + print '<td>'.$langs->trans("TextTitleColor").'</td>'; + print '<td colspan="'.($colspan-1).'">'; + if ($edit) + { + print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TEXTTITLENOTAB,array()),''),'THEME_ELDY_TEXTTITLENOTAB','formcolor',1).' '; + } + else + { + print $formother->showColor($conf->global->THEME_ELDY_TEXTTITLENOTAB, $langs->trans("Default")); + } + print ' ('.$langs->trans("Default").': <strong>3c3c14</strong>, '.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')'; + print '</td>'; + + print '</tr>'; + } // Use Hover $var=!$var; @@ -539,7 +565,11 @@ function show_theme($fuser,$edit=0,$foruserprofile=false) { if ($conf->global->THEME_ELDY_USE_HOVER == '1') $color='edf4fb'; else $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_USE_HOVER,array()),''); - if ($color) print '<input type="text" class="colorthumb" disabled="disabled" style="padding: 1px; margin-top: 0; margin-bottom: 0; width: 40px; background-color: #'.$color.'" value="'.$color.'">'; + if ($color) + { + if ($color != 'edf4fb') print '<input type="text" class="colorthumb" disabled="disabled" style="padding: 1px; margin-top: 0; margin-bottom: 0; width: 40px; background-color: #'.$color.'" value="'.$color.'">'; + else print $langs->trans("Default"); + } else print $langs->trans("None"); } print ' ('.$langs->trans("Default").': <strong>edf4fb</strong>, '.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')'; diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 2df962ee15f..9a36531e543 100755 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -1664,6 +1664,7 @@ InstallModuleFromWebHasBeenDisabledByFile=Install of external module from applic ConfFileMuseContainCustom=Installing an external module from application save the module files into directory <strong>%s</strong>. To have this directory processed by Dolibarr, you must setup your <strong>conf/conf.php</strong> to have option<br>- <strong>$dolibarr_main_url_root_alt</strong> enabled to value <strong>$dolibarr_main_url_root_alt="/custom"</strong><br>- <strong>$dolibarr_main_document_root_alt</strong> enabled to value <strong>"%s/custom"</strong> HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over HighlightLinesColor=Highlight color of the line when the mouse passes over (keep empty for no highlight) +TextTitleColor=Color of page title LinkColor=Color of links PressF5AfterChangingThis=Press F5 on keyboard after changing this value to have it effective NotSupportedByAllThemes=Will works with eldy theme but is not supported by all themes diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 66d62959e43..a83f3430bc4 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -90,7 +90,7 @@ $colorbacklinepair1='248,248,248'; // line pair $colorbacklinepair2='248,248,248'; // line pair $colorbacklinepairhover='238,246,252'; // line pair $colorbackbody='255,255,255'; -$colortexttitlenotab='80,80,0'; +$colortexttitlenotab='60,60,20'; $colortexttitle='0,0,0'; $colortext='0,0,0'; $colortextlink='0,0,120'; @@ -100,11 +100,12 @@ $usegradient=1; $useboldtitle=1; // Case of option always editable -if (! isset($conf->global->THEME_ELDY_BACKBODY)) $conf->global->THEME_ELDY_BACKBODY='255,255,255'; +if (! isset($conf->global->THEME_ELDY_BACKBODY)) $conf->global->THEME_ELDY_BACKBODY=$colorbackbody; if (! isset($conf->global->THEME_ELDY_TOPMENU_BACK1)) $conf->global->THEME_ELDY_TOPMENU_BACK1='120,130,170'; -if (! isset($conf->global->THEME_ELDY_BACKTITLE1)) $conf->global->THEME_ELDY_BACKTITLE1='230,230,230'; +if (! isset($conf->global->THEME_ELDY_BACKTITLE1)) $conf->global->THEME_ELDY_BACKTITLE1=$colorbacktitle1; if (! isset($conf->global->THEME_ELDY_USE_HOVER)) $conf->global->THEME_ELDY_USE_HOVER=='238,246,252'; -if (! isset($conf->global->THEME_ELDY_TEXTLINK)) $conf->global->THEME_ELDY_TEXTLINK='0,0,120'; +if (! isset($conf->global->THEME_ELDY_TEXTTITLENOTAB)) $conf->global->THEME_ELDY_TEXTTITLENOTAB=$colortexttitlenotab; +if (! isset($conf->global->THEME_ELDY_TEXTLINK)) $conf->global->THEME_ELDY_TEXTLINK=$colortextlink; // Case of option editable only if option THEME_ELDY_ENABLE_PERSONALIZED is on if (empty($conf->global->THEME_ELDY_ENABLE_PERSONALIZED)) @@ -124,6 +125,7 @@ if (empty($conf->global->THEME_ELDY_ENABLE_PERSONALIZED)) //var_dump($conf->global->THEME_ELDY_BACKBODY); //var_dump($user->conf->THEME_ELDY_BACKTITLE1); + // Case of option availables only if THEME_ELDY_ENABLE_PERSONALIZED is on $colorbackhmenu1 =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_TOPMENU_BACK1)?$colorbackhmenu1:$conf->global->THEME_ELDY_TOPMENU_BACK1) :(empty($user->conf->THEME_ELDY_TOPMENU_BACK1)?$colorbackhmenu1:$user->conf->THEME_ELDY_TOPMENU_BACK1); $colorbackvmenu1 =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_VERMENU_BACK1)?$colorbackvmenu1:$conf->global->THEME_ELDY_VERMENU_BACK1) :(empty($user->conf->THEME_ELDY_VERMENU_BACK1)?$colorbackvmenu1:$user->conf->THEME_ELDY_VERMENU_BACK1); @@ -136,12 +138,12 @@ $colorbacklinepair1 =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty( $colorbacklinepair2 =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_LINEPAIR2) ?$colorbacklinepair2:$conf->global->THEME_ELDY_LINEPAIR2) :(empty($user->conf->THEME_ELDY_LINEPAIR2)?$colorbacklinepair2:$user->conf->THEME_ELDY_LINEPAIR2); $colorbacklinepairhover=empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_LINEPAIRHOVER) ?$colorbacklinepairhover:$conf->global->THEME_ELDY_LINEPAIRHOVER) :(empty($user->conf->THEME_ELDY_LINEPAIRHOVER)?$colorbacklinepairhover:$user->conf->THEME_ELDY_LINEPAIRHOVER); $colorbackbody =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_BACKBODY) ?$colorbackbody:$conf->global->THEME_ELDY_BACKBODY) :(empty($user->conf->THEME_ELDY_BACKBODY)?$colorbackbody:$user->conf->THEME_ELDY_BACKBODY); -$colortexttitle =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_TEXTTITLE) ?$colortext:$conf->global->THEME_ELDY_TEXTTITLE) :(empty($user->conf->THEME_ELDY_TEXTTITLE)?$colortexttitle:$user->conf->THEME_ELDY_TEXTTITLE); +$colortexttitlenotab =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_TEXTTITLENOTAB)?$colortexttitlenotab:$conf->global->THEME_ELDY_TEXTTITLENOTAB) :(empty($user->conf->THEME_ELDY_TEXTTITLENOTAB)?$colortexttitlenotab:$user->conf->THEME_ELDY_TEXTTITLENOTAB); +$colortexttitle =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_TEXTTITLE) ?$colortexttitle:$conf->global->THEME_ELDY_TEXTTITLE) :(empty($user->conf->THEME_ELDY_TEXTTITLE)?$colortexttitle:$user->conf->THEME_ELDY_TEXTTITLE); $colortext =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_TEXT) ?$colortext:$conf->global->THEME_ELDY_TEXT) :(empty($user->conf->THEME_ELDY_TEXT)?$colortext:$user->conf->THEME_ELDY_TEXT); -$colortextlink =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_TEXTLINK) ?$colortext:$conf->global->THEME_ELDY_TEXTLINK) :(empty($user->conf->THEME_ELDY_TEXTLINK)?$colortextlink:$user->conf->THEME_ELDY_TEXTLINK); +$colortextlink =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_TEXTLINK) ?$colortextlink:$conf->global->THEME_ELDY_TEXTLINK) :(empty($user->conf->THEME_ELDY_TEXTLINK)?$colortextlink:$user->conf->THEME_ELDY_TEXTLINK); $fontsize =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_FONT_SIZE1) ?$fontsize:$conf->global->THEME_ELDY_FONT_SIZE1) :(empty($user->conf->THEME_ELDY_FONT_SIZE1)?$fontsize:$user->conf->THEME_ELDY_FONT_SIZE1); $fontsizesmaller =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_FONT_SIZE2) ?$fontsize:$conf->global->THEME_ELDY_FONT_SIZE2) :(empty($user->conf->THEME_ELDY_FONT_SIZE2)?$fontsize:$user->conf->THEME_ELDY_FONT_SIZE2); - // Hover color $colorbacklinepairhover=((! isset($conf->global->THEME_ELDY_USE_HOVER) || (string) $conf->global->THEME_ELDY_USE_HOVER === '0')?'':($conf->global->THEME_ELDY_USE_HOVER === '1'?'edf4fb':$conf->global->THEME_ELDY_USE_HOVER)); if (! empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)) @@ -186,6 +188,7 @@ $colorbacklinepair1=join(',',colorStringToArray($colorbacklinepair1)); $colorbacklinepair2=join(',',colorStringToArray($colorbacklinepair2)); if ($colorbacklinepairhover != '') $colorbacklinepairhover=join(',',colorStringToArray($colorbacklinepairhover)); $colorbackbody=join(',',colorStringToArray($colorbackbody)); +$colortexttitlenotab=join(',',colorStringToArray($colortexttitlenotab)); $colortexttitle=join(',',colorStringToArray($colortexttitle)); $colortext=join(',',colorStringToArray($colortext)); $colortextlink=join(',',colorStringToArray($colortextlink)); @@ -204,6 +207,7 @@ print 'colorbacklineimpair2='.$colorbacklineimpair2."\n"; print 'colorbacklinepair1='.$colorbacklinepair1."\n"; print 'colorbacklinepair2='.$colorbacklinepair2."\n"; print 'colorbacklinepairhover='.$colorbacklinepairhover."\n"; +print '$colortexttitlenotab='.$colortexttitlenotab."\n"; print '$colortexttitle='.$colortexttitle."\n"; print '$colortext='.$colortext."\n"; print '$colortextlink='.$colortextlink."\n"; diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 9839959bfb8..ad4237dc769 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -91,7 +91,7 @@ $colorbacklinepair1='250,250,250'; // line pair $colorbacklinepair2='248,248,248'; // line pair $colorbacklinepairhover='244,244,244'; // line pair $colorbackbody='255,255,255'; -$colortexttitlenotab='80,80,0'; +$colortexttitlenotab='90,90,90'; $colortexttitle='0,0,0'; $colortext='0,0,0'; $colortextlink='0,0,120'; @@ -101,11 +101,12 @@ $usegradient=1; $useboldtitle=1; // Case of option always editable -if (! isset($conf->global->THEME_ELDY_BACKBODY)) $conf->global->THEME_ELDY_BACKBODY='255,255,255'; -if (! isset($conf->global->THEME_ELDY_TOPMENU_BACK1)) $conf->global->THEME_ELDY_TOPMENU_BACK1=join(',',colorStringToArray('#000000')); // topmenu (140,160,185) -if (! isset($conf->global->THEME_ELDY_BACKTITLE1)) $conf->global->THEME_ELDY_BACKTITLE1='140,150,180'; // title of arrays TO MATCH ELDY (140,160,185) +if (! isset($conf->global->THEME_ELDY_BACKBODY)) $conf->global->THEME_ELDY_BACKBODY=$colorbackbody; +if (! isset($conf->global->THEME_ELDY_TOPMENU_BACK1)) $conf->global->THEME_ELDY_TOPMENU_BACK1='0,0,0'; +if (! isset($conf->global->THEME_ELDY_BACKTITLE1)) $conf->global->THEME_ELDY_BACKTITLE1=$colorbacktitle1; if (! isset($conf->global->THEME_ELDY_USE_HOVER)) $conf->global->THEME_ELDY_USE_HOVER=='238,246,252'; -if (! isset($conf->global->THEME_ELDY_TEXTLINK)) $conf->global->THEME_ELDY_TEXTLINK='0,0,120'; +if (! isset($conf->global->THEME_ELDY_TEXTTITLENOTAB)) $conf->global->THEME_ELDY_TEXTTITLENOTAB=$colortexttitlenotab; +if (! isset($conf->global->THEME_ELDY_TEXTLINK)) $conf->global->THEME_ELDY_TEXTLINK=$colortextlink; // Case of option editable only if option THEME_ELDY_ENABLE_PERSONALIZED is on if (empty($conf->global->THEME_ELDY_ENABLE_PERSONALIZED)) @@ -138,6 +139,7 @@ $colorbacklinepair1 =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty( $colorbacklinepair2 =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_LINEPAIR2) ?$colorbacklinepair2:$conf->global->THEME_ELDY_LINEPAIR2) :(empty($user->conf->THEME_ELDY_LINEPAIR2)?$colorbacklinepair2:$user->conf->THEME_ELDY_LINEPAIR2); $colorbacklinepairhover =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_LINEPAIRHOVER) ?$colorbacklinepairhover:$conf->global->THEME_ELDY_LINEPAIRHOVER) :(empty($user->conf->THEME_ELDY_LINEPAIRHOVER)?$colorbacklinepairhover:$user->conf->THEME_ELDY_LINEPAIRHOVER); $colorbackbody =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_BACKBODY) ?$colorbackbody:$conf->global->THEME_ELDY_BACKBODY) :(empty($user->conf->THEME_ELDY_BACKBODY)?$colorbackbody:$user->conf->THEME_ELDY_BACKBODY); +$colortexttitlenotab =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_TEXTTITLENOTAB)?$colortexttitlenotab:$conf->global->THEME_ELDY_TEXTTITLENOTAB) :(empty($user->conf->THEME_ELDY_TEXTTITLENOTAB)?$colortexttitlenotab:$user->conf->THEME_ELDY_TEXTTITLENOTAB); $colortexttitle =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_TEXTTITLE) ?$colortext:$conf->global->THEME_ELDY_TEXTTITLE) :(empty($user->conf->THEME_ELDY_TEXTTITLE)?$colortexttitle:$user->conf->THEME_ELDY_TEXTTITLE); $colortext =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_TEXT) ?$colortext:$conf->global->THEME_ELDY_TEXT) :(empty($user->conf->THEME_ELDY_TEXT)?$colortext:$user->conf->THEME_ELDY_TEXT); $colortextlink =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_TEXTLINK) ?$colortext:$conf->global->THEME_ELDY_TEXTLINK) :(empty($user->conf->THEME_ELDY_TEXTLINK)?$colortextlink:$user->conf->THEME_ELDY_TEXTLINK); @@ -181,6 +183,7 @@ $colorbacklinepair1=join(',',colorStringToArray($colorbacklinepair1)); $colorbacklinepair2=join(',',colorStringToArray($colorbacklinepair2)); if ($colorbacklinepairhover != '') $colorbacklinepairhover=join(',',colorStringToArray($colorbacklinepairhover)); $colorbackbody=join(',',colorStringToArray($colorbackbody)); +$colortexttitlenotab=join(',',colorStringToArray($colortexttitlenotab)); $colortexttitle=join(',',colorStringToArray($colortexttitle)); $colortext=join(',',colorStringToArray($colortext)); $colortextlink=join(',',colorStringToArray($colortextlink)); @@ -199,6 +202,7 @@ print 'colorbacklineimpair2='.$colorbacklineimpair2."\n"; print 'colorbacklinepair1='.$colorbacklinepair1."\n"; print 'colorbacklinepair2='.$colorbacklinepair2."\n"; print 'colorbacklinepairhover='.$colorbacklinepairhover."\n"; +print '$colortexttitlenotab='.$colortexttitlenotab."\n"; print '$colortexttitle='.$colortexttitle."\n"; print '$colortext='.$colortext."\n"; print '$colortextlink='.$colortextlink."\n"; -- GitLab From ef33691818999414125b77354a09f55c0a1b56a6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sun, 13 Dec 2015 15:21:46 +0100 Subject: [PATCH 167/197] FIX Removed hard coded parameters for asterisk setup --- htdocs/asterisk/wrapper.php | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/htdocs/asterisk/wrapper.php b/htdocs/asterisk/wrapper.php index bcd5957dbb3..e5c9a6b2093 100644 --- a/htdocs/asterisk/wrapper.php +++ b/htdocs/asterisk/wrapper.php @@ -79,6 +79,10 @@ if (! isset($conf->global->ASTERISK_TYPE)) $conf->global->ASTERISK_TYPE="SI if (! isset($conf->global->ASTERISK_INDICATIF)) $conf->global->ASTERISK_INDICATIF="0"; if (! isset($conf->global->ASTERISK_PORT)) $conf->global->ASTERISK_PORT=5038; if ($conf->global->ASTERISK_INDICATIF=='NONE') $conf->global->ASTERISK_INDICATIF=''; +if (! isset($conf->global->ASTERISK_CONTEXT)) $conf->global->ASTERISK_CONTEXT="from-internal"; +if (! isset($conf->global->ASTERISK_WAIT_TIME)) $conf->global->ASTERISK_WAIT_TIME="30"; +if (! isset($conf->global->ASTERISK_PRIORITY)) $conf->global->ASTERISK_PRIORITY="1"; +if (! isset($conf->global->ASTERISK_MAX_RETRY)) $conf->global->ASTERISK_MAX_RETRY="2"; $login = $_GET['login']; @@ -96,14 +100,13 @@ $prefix = $conf->global->ASTERISK_INDICATIF; // Port $port = $conf->global->ASTERISK_PORT; // Context ( generalement from-internal ) -$strContext = "from-internal"; - +$strContext = $conf->global->ASTERISK_CONTEXT; // Delai d'attente avant de raccrocher -$strWaitTime = "30"; +$strWaitTime = $conf->global->ASTERISK_WAIT_TIME; // Priority -$strPriority = "1"; +$strPriority = $conf->global->ASTERISK_PRIORITY; // Nomber of try -$strMaxRetry = "2"; +$strMaxRetry = $conf->global->ASTERISK_MAX_RETRY; /* -- GitLab From 7db6ac592f783204236d8540a6cea5a2b8a0fb24 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sun, 13 Dec 2015 15:51:52 +0100 Subject: [PATCH 168/197] FIX Option start tls of ldap was not correctly supported. --- htdocs/core/class/ldap.class.php | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/htdocs/core/class/ldap.class.php b/htdocs/core/class/ldap.class.php index c081ed34a96..8ea3221c648 100644 --- a/htdocs/core/class/ldap.class.php +++ b/htdocs/core/class/ldap.class.php @@ -149,7 +149,7 @@ class Ldap */ function connect_bind() { - global $langs; + global $langs, $conf; $connected=0; $this->bind=0; @@ -186,7 +186,18 @@ class Ldap if (is_resource($this->connection)) { - // Execute the ldap_set_option here (after connect and before bind) + // Begin TLS if requested by the configuration + if (! empty($conf->global->LDAP_SERVER_USE_TLS)) + { + if (! ldap_start_tls($this->connection)) + { + dol_syslog(get_class($this)."::connect_bind failed to start tls", LOG_WARNING); + $connected = 0; + $this->close(); + } + } + + // Execute the ldap_set_option here (after connect and before bind) $this->setVersion(); ldap_set_option($this->connection, LDAP_OPT_SIZELIMIT, 0); // no limit here. should return true. -- GitLab From 4b741c6b9c6c1da489a975e78701a2fef4e13e58 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sun, 13 Dec 2015 16:16:30 +0100 Subject: [PATCH 169/197] Fix permissions --- test/phpunit/CategorieTest.php | 0 test/phpunit/ExportTest.php | 0 test/phpunit/Functions2LibTest.php | 0 test/phpunit/FunctionsLibTest.php | 0 test/phpunit/JsonLibTest.php | 0 test/phpunit/LangTest.php | 0 test/phpunit/ModulesTest.php | 0 test/phpunit/PricesTest.php | 0 test/phpunit/SecurityTest.php | 0 test/phpunit/SocieteTest.php | 0 test/phpunit/SqlTest.php | 0 test/phpunit/WebservicesInvoicesTest.php | 0 test/phpunit/WebservicesThirdpartyTest.php | 0 13 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 test/phpunit/CategorieTest.php mode change 100755 => 100644 test/phpunit/ExportTest.php mode change 100755 => 100644 test/phpunit/Functions2LibTest.php mode change 100755 => 100644 test/phpunit/FunctionsLibTest.php mode change 100755 => 100644 test/phpunit/JsonLibTest.php mode change 100755 => 100644 test/phpunit/LangTest.php mode change 100755 => 100644 test/phpunit/ModulesTest.php mode change 100755 => 100644 test/phpunit/PricesTest.php mode change 100755 => 100644 test/phpunit/SecurityTest.php mode change 100755 => 100644 test/phpunit/SocieteTest.php mode change 100755 => 100644 test/phpunit/SqlTest.php mode change 100755 => 100644 test/phpunit/WebservicesInvoicesTest.php mode change 100755 => 100644 test/phpunit/WebservicesThirdpartyTest.php diff --git a/test/phpunit/CategorieTest.php b/test/phpunit/CategorieTest.php old mode 100755 new mode 100644 diff --git a/test/phpunit/ExportTest.php b/test/phpunit/ExportTest.php old mode 100755 new mode 100644 diff --git a/test/phpunit/Functions2LibTest.php b/test/phpunit/Functions2LibTest.php old mode 100755 new mode 100644 diff --git a/test/phpunit/FunctionsLibTest.php b/test/phpunit/FunctionsLibTest.php old mode 100755 new mode 100644 diff --git a/test/phpunit/JsonLibTest.php b/test/phpunit/JsonLibTest.php old mode 100755 new mode 100644 diff --git a/test/phpunit/LangTest.php b/test/phpunit/LangTest.php old mode 100755 new mode 100644 diff --git a/test/phpunit/ModulesTest.php b/test/phpunit/ModulesTest.php old mode 100755 new mode 100644 diff --git a/test/phpunit/PricesTest.php b/test/phpunit/PricesTest.php old mode 100755 new mode 100644 diff --git a/test/phpunit/SecurityTest.php b/test/phpunit/SecurityTest.php old mode 100755 new mode 100644 diff --git a/test/phpunit/SocieteTest.php b/test/phpunit/SocieteTest.php old mode 100755 new mode 100644 diff --git a/test/phpunit/SqlTest.php b/test/phpunit/SqlTest.php old mode 100755 new mode 100644 diff --git a/test/phpunit/WebservicesInvoicesTest.php b/test/phpunit/WebservicesInvoicesTest.php old mode 100755 new mode 100644 diff --git a/test/phpunit/WebservicesThirdpartyTest.php b/test/phpunit/WebservicesThirdpartyTest.php old mode 100755 new mode 100644 -- GitLab From ef13bd43b07806b53688163448bae58d27600b90 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sun, 13 Dec 2015 17:27:55 +0100 Subject: [PATCH 170/197] Fix bad merge --- htdocs/product/class/product.class.php | 1 - 1 file changed, 1 deletion(-) diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index a77689949c4..b68ac04b87d 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -880,7 +880,6 @@ class Product extends CommonObject // Delete all child tables if (! $error) - foreach($elements as $table) { $elements = array('product_fournisseur_price','product_price','product_lang','categorie_product','product_stock','product_customer_price'); foreach($elements as $table) -- GitLab From 65cebe37f36b5fe4de628f193840d0c774a97346 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= <frederic.france@free.fr> Date: Sun, 13 Dec 2015 21:12:08 +0100 Subject: [PATCH 171/197] Update sms.php --- htdocs/admin/sms.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/htdocs/admin/sms.php b/htdocs/admin/sms.php index 604b426b800..05fe548daff 100644 --- a/htdocs/admin/sms.php +++ b/htdocs/admin/sms.php @@ -124,10 +124,12 @@ if ($action == 'send' && ! $_POST['cancel']) if ($result) { setEventMessages($langs->trans("SmsSuccessfulySent",$smsfrom,$sendto), null, 'mesgs'); + setEventMessages($smsfile->error, $smsfile->errors, 'mesgs'); } else { setEventMessages($langs->trans("ResultKo"), null, 'errors'); + setEventMessages($smsfile->error, $smsfile->errors, 'errors'); } $action=''; -- GitLab From 1aa232c4a7f8d34aaf31da2e5e48026aaa3d945b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= <frederic.france@free.fr> Date: Sun, 13 Dec 2015 21:14:53 +0100 Subject: [PATCH 172/197] Update CSMSFile.class.php --- htdocs/core/class/CSMSFile.class.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/core/class/CSMSFile.class.php b/htdocs/core/class/CSMSFile.class.php index b6819fdd87f..4456df76f83 100644 --- a/htdocs/core/class/CSMSFile.class.php +++ b/htdocs/core/class/CSMSFile.class.php @@ -149,9 +149,10 @@ class CSMSFile $sms->message=$this->message; $res=$sms->SmsSend(); + $this->error = $sms->error; + $this->errors = $sms->errors; if ($res <= 0) { - $this->error=$sms->error; dol_syslog("CSMSFile::sendfile: sms send error=".$this->error, LOG_ERR); } else -- GitLab From bbe7498de6b1590f3b806eb4400e5cfb5837cb73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Doursenaud?= <rdoursenaud@gpcsolutions.fr> Date: Fri, 11 Dec 2015 05:08:32 +0100 Subject: [PATCH 173/197] Better Travis CI NEW: Cleaned up routines for better readability of both declaration and results. PHP versions now really covered. The old code forced install of PHP and didn't use Travis provided versions. This resulted in the process not being executed with the declared PHP version. Dropped MySQL in favor of MariaDB. This is now the FLOSS community standard. This should help avoid problems with buggy MySQL releases. Fast finish enabled to show results faster. Optimized tools installation with composer. The right version of the tool is installed for the PHP version under test. New PHP linter to check for syntax errors. Parallelized for better speed. Apache + PHP FPM for testing webservices. The previous mod_php configuration was not supported on Travis. New global DEBUG environment variable to show verbose output with configuration files content. IRC notification on #dolibarr@freenode for community awareness. FIXES: Bug in scripts preventing execution with environmentalized PHP. Wrong detection of MAIN_URL_ROOT under specific circumstances. $_SERVER["DOCUMENT_ROOT"] empty and $_SERVER["SCRIPT_NAME"] populated. Relative ignore directive in coding style ruleset to avoid bypassing test. Unit test errors without an exit status. This prevented the CI from properly detecting and reporting the error. TODOS: PostgreSQL support. This one is tricky since we only have a MySQL dump and the syntax is not directly compatible. SQLite support. Disabled in core at the moment. Nginx + PHP FPM support. Test webservices on the second most popular webserver. Run dev/* checks. We have a nice collection of scripts we could leverage. Check Javascript. Check CSS. Check SQL. --- .travis.yml | 434 ++++++++++++------ build/aps/configure.php | 2 +- build/generate_filecheck_xml.php | 2 +- build/travis-ci/apache.conf | 18 + composer.json.phpcs | 18 - dev/codesniffer/ruleset.xml | 12 +- dev/examples/create_invoice.php | 2 +- dev/examples/create_order.php | 2 +- dev/examples/create_product.php | 2 +- dev/examples/create_user.php | 2 +- dev/examples/get_contracts.php | 2 +- dev/initdata/generate-invoice.php | 2 +- dev/initdata/generate-order.php | 2 +- dev/initdata/generate-product.php | 2 +- dev/initdata/generate-proposal.php | 2 +- dev/initdata/generate-thirdparty.php | 2 +- dev/initdata/sftpget_and_loaddump.php | 2 +- dev/skeletons/build_api_class.php | 2 +- dev/skeletons/build_class_from_table.php | 2 +- dev/skeletons/build_webservice_from_class.php | 2 +- dev/skeletons/skeleton_script.php | 2 +- dev/translation/autotranslator.php | 2 +- dev/translation/sanity_check_en_langfiles.php | 2 +- dev/translation/strip_language_file.php | 2 +- htdocs/filefunc.inc.php | 6 +- .../accountancy/export-thirdpartyaccount.php | 3 +- scripts/bank/export-bank-receipts.php | 2 +- .../company/export-contacts-xls-example.php | 2 +- .../company/sync_contacts_dolibarr2ldap.php | 2 +- .../email_expire_services_to_customers.php | 2 +- ...ail_expire_services_to_representatives.php | 2 +- scripts/cron/cron_run_jobs.php | 2 +- scripts/emailings/mailing-send.php | 2 +- .../email_unpaid_invoices_to_customers.php | 2 +- ...ail_unpaid_invoices_to_representatives.php | 2 +- scripts/invoices/rebuild_merge_pdf.php | 2 +- .../members/sync_members_dolibarr2ldap.php | 2 +- .../members/sync_members_ldap2dolibarr.php | 2 +- scripts/product/migrate_picture_path.php | 2 +- scripts/user/sync_groups_dolibarr2ldap.php | 2 +- scripts/user/sync_groups_ldap2dolibarr.php | 2 +- scripts/user/sync_users_dolibarr2ldap.php | 2 +- scripts/user/sync_users_ldap2dolibarr.php | 2 +- scripts/withdrawals/build_withdrawal_file.php | 2 +- test/phpunit/AllTests.php | 8 +- test/phpunit/ContactTest.php | 2 +- test/phpunit/PricesTest.php | 2 +- test/phpunit/WebservicesProductsTest.php | 2 +- 48 files changed, 370 insertions(+), 211 deletions(-) create mode 100644 build/travis-ci/apache.conf delete mode 100644 composer.json.phpcs diff --git a/.travis.yml b/.travis.yml index 9956d9c58c8..a5330042b58 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,154 +1,308 @@ # This script is used by Travis CI to run automatically Continuous test integration # from Dolibarr GitHub repository. -# Command run is phpunit # For syntax, see http://about.travis-ci.org/docs/user/languages/php/ -notifications: - email: - on_success: never # [always|never|change] default: change - on_failure: change # [always|never|change] default: always - +sudo: required + +language: php + +php: +- '5.3' +- '5.4' +- '5.5' +- '5.6' +- '7.0' +- nightly + addons: - postgresql: "9.3" + mariadb: '10.0' + # FIXME: find a way to import a MySQL dump into PostgreSQL + #postgresql: '9.3' + apt: + packages: + # We need a webserver to test the webservices + # Let's install Apache with. + - apache2 + # mod_php is not supported by Travis. Add fcgi. We install FPM later on. + - libapache2-mod-fastcgi +# Start on every boot services: - - memcached # will start memcached +- memcached -# This will tell travis to run phpunit -language: php -php: - - 5.3 - - 5.4 - - 5.5 - - 5.6 - - 7.0 +env: + global: + # Set to true for very verbose output + - DEBUG=false + matrix: + # MariaDB overrides MySQL installation so it's not possible to test both yet + #- DB=mysql + - DB=mariadb + # FIXME: find a way to import a MySQL dump into PostgreSQL + #- DB=postgresql + # TODO + #- DB=sqlite + # See https://docs.travis-ci.com/user/languages/php/#Apache-%2B-PHP + #- WS=apache + # See https://github.com/DracoBlue/travis-ci-nginx-php-fpm-test + #- WS=nginx matrix: + fast_finish: true allow_failures: - - php: 7.0 + - php: '7.0' + - php: nightly + # FIXME + #- env: DB=postgresql + # TODO + #- env: DB=sqlite -env: - - DB=mysql -# - DB=postgres - -before_script: - - echo Start travis - - echo Current dir is `pwd` - - echo Home dir is `echo ~` - - export PHPV=`phpenv version-name` - - echo PHP version $PHPV -# - echo Update composer -# - ~/.phpenv/versions/$(phpenv version-name)/bin/composer.phar self-update - - echo PHPUnit version - - which phpunit - - phpunit --version - - echo Install phpcs then show installed rules - - cp composer.json composer.json.old - - cp composer.json.phpcs composer.json - - composer self-update - - composer require squizlabs/php_codesniffer:"^2.0.0" - - composer install - - phpenv rehash - - htdocs/includes/squizlabs/php_codesniffer/scripts/phpcs --version - - htdocs/includes/squizlabs/php_codesniffer/scripts/phpcs -i -# - which phpcs -# - phpcs --version -# - phpcs -i - - echo Create dir $(pwd)/htdocs/documents - - sudo mkdir -p $(pwd)/htdocs/documents/admin/temp; - - sudo touch $(pwd)/htdocs/documents/dolibarr.log; - - sudo chmod a+rwx /home; sudo chmod a+rwx /home/travis; sudo chmod -R a+rwx /home/travis/build; - - sudo chmod -R a+rwx $(pwd); - - sudo chown -R www-data:travis $(pwd)/htdocs/documents; - - find $(pwd)/htdocs/documents -type d -exec ls -alt {} \; - - echo Edit php.ini file - - echo 'date.timezone = "Europe/Paris"' >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini -# - echo "extension = memcache.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini - - echo "extension = memcached.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini - - sh -c "if [ '$PHPV' = '5.3' ]; then echo 'extension = apc.so' >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini; fi" - - sh -c "if [ '$PHPV' = '5.4' ]; then echo 'extension = apc.so' >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini; fi" - - sh -c "if [ '$PHPV' = '5.3' ]; then echo 'zend_extension_ts = xdebug.so' >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini; fi" - - sh -c "if [ '$PHPV' = '5.4' ]; then echo 'zend_extension_ts = xdebug.so' >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini; fi" - - cat ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini - - echo Mysql version -# INSTALL MYSQL 5.6 -# (https://github.com/piwik/piwik/commit/20bd2e1c24e5d673dce3feb256204ad48c29f160) -# TODO: Remove when mysql 5.6 is provided by travis. -# Otherwise, our migrations will raise a syntax error. -# - "sudo apt-get remove mysql-common mysql-server-5.5 mysql-server-core-5.5 mysql-client-5.5 mysql-client-core-5.5" -# - "sudo apt-get autoremove" -# - "sudo apt-get install libaio1" -# - "wget -O mysql-5.6.14.deb http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.14-debian6.0-x86_64.deb/from/http://cdn.mysql.com/" -# - "sudo dpkg -i mysql-5.6.14.deb" -# - "sudo cp /opt/mysql/server-5.6/support-files/mysql.server /etc/init.d/mysql.server" -# - "sudo ln -s /opt/mysql/server-5.6/bin/* /usr/bin/" -# - "sudo sed -i'' 's/table_cache/table_open_cache/' /etc/mysql/my.cnf" -# - "sudo sed -i'' 's/log_slow_queries/slow_query_log/' /etc/mysql/my.cnf" -# - "sudo sed -i'' 's/basedir[^=]\\+=.*$/basedir = \\/opt\\/mysql\\/server-5.6/' /etc/mysql/my.cnf" -# - "sudo /etc/init.d/mysql.server start" -# /END MYSQL 5.6- mysql --version - - mysql --version - - mysql -e "SELECT VERSION();" - - echo Init database - - sh -c "if [ '$DB' = 'pgsql' ]; then psql -c 'DROP DATABASE IF EXISTS myapp_test;' -U postgres; fi" - - sh -c "if [ '$DB' = 'pgsql' ]; then psql -c 'CREATE DATABASE myapp_test;' -U postgres; fi" - - sh -c "if [ '$DB' = 'mysql' ]; then mysql -e 'DROP DATABASE IF EXISTS myapp_test;'; fi" - - sh -c "if [ '$DB' = 'mysql' ]; then mysql -e 'CREATE DATABASE IF NOT EXISTS myapp_test;'; fi" - - sh -c "if [ '$DB' = 'mysql' ]; then mysql -D myapp_test < $(pwd)/dev/initdata/mysqldump_dolibarr_3.5.0.sql; fi" - - echo Create config file htdocs/conf/conf.php - - echo '<?php ' > htdocs/conf/conf.php - - sh -c "if [ '$DB' = 'pgsql' ]; then echo '$'dolibarr_main_db_type=\'pgsql\'';' >> htdocs/conf/conf.php; fi" - - sh -c "if [ '$DB' = 'mysql' ]; then echo '$'dolibarr_main_db_type=\'mysqli\'';' >> htdocs/conf/conf.php; fi" - - echo '$'dolibarr_main_url_root=\'http://localhost/\'';' >> htdocs/conf/conf.php - - echo '$'dolibarr_main_document_root=\'$(pwd)/htdocs\'';' >> htdocs/conf/conf.php - - echo '$'dolibarr_main_data_root=\'$(pwd)/htdocs/documents\'';' >> htdocs/conf/conf.php - - echo '$'dolibarr_main_db_host=\'localhost\'';' >> htdocs/conf/conf.php - - echo '$'dolibarr_main_db_name=\'myapp_test\'';' >> htdocs/conf/conf.php - - echo '$'dolibarr_main_db_user=\'travis\'';' >> htdocs/conf/conf.php - - echo '$'dolibarr_main_authentication=\'dolibarr\'';' >> htdocs/conf/conf.php - - echo '?>' >> htdocs/conf/conf.php - - echo Show conf.php content - - cat htdocs/conf/conf.php - - echo Install apache server - - sudo apt-get update - - sudo apt-get install -y --force-yes apache2 libapache2-mod-php5 php5-curl php5-mysql php5-pgsql php5-intl - - sudo sed -i -e "s,/var/www,$(pwd)/htdocs,g" /etc/apache2/sites-available/default - - echo Show default virtual host - - sudo cat /etc/apache2/sites-available/default - - sudo /etc/init.d/apache2 restart - - wget http://localhost/ - - sudo cat /etc/apache2/envvars - - sudo cat /var/log/apache2/error.log - - cat index.html - - - -script: - - cd htdocs/install - - date -# - php upgrade.php 3.4.0 3.5.0 ignoredbversion > upgrade340350.log -# - php upgrade2.php 3.4.0 3.5.0 ignoredbversion > upgrade340350-2.log - - php upgrade.php 3.5.0 3.6.0 ignoredbversion > upgrade350360.log - - php upgrade2.php 3.5.0 3.6.0 ignoredbversion > upgrade350360-2.log - - php upgrade.php 3.6.0 3.7.0 ignoredbversion > upgrade360370.log - - php upgrade2.php 3.6.0 3.7.0 ignoredbversion > upgrade360370-2.log - - php upgrade.php 3.7.0 3.8.0 ignoredbversion > upgrade370380.log -# - cat upgrade370380.log - - php upgrade2.php 3.7.0 3.8.0 ignoredbversion > upgrade370380-2.log - - php upgrade.php 3.8.0 3.9.0 ignoredbversion > upgrade380390.log -# - cat upgrade380390.log - - php upgrade2.php 3.8.0 3.9.0 ignoredbversion > upgrade380390-2.log -# - cat upgrade380390-2.log - - cd ../.. - - date - - phpunit -d memory_limit=-1 --configuration test/phpunit/phpunittest.xml test/phpunit/AllTests.php - - date -# - phpcs -p --warning-severity=0 -s --report-summary --standard=dev/codesniffer/ruleset.xml --tab-width=4 --ignore=/build/html/,/dev/vagrant/,/documents/,/includes/,/test/report/ htdocs/core/class/dolgraph.class.php 2>&1 - - htdocs/includes/squizlabs/php_codesniffer/scripts/phpcs -p --warning-severity=0 -s --report-checkstyle --report-summary --standard=dev/codesniffer/ruleset.xml --tab-width=4 --ignore=/htdocs/conf/conf.php,/build/html/,/dev/vagrant/,/documents/,/includes/,/test/report/ . 2>&1 - - date +notifications: + email: + on_success: never # [always|never|change] default: change + on_failure: change # [always|never|change] default: always + irc: + channels: + - "chat.freenode.net#dolibarr" + on_success: change + on_failure: always + use_notice: true -after_script: -# - echo Output dolibarr log file; cat $(pwd)/htdocs/documents/dolibarr.log - - echo Output apache log file; sudo cat /var/log/apache2/error.log - - echo End travis +before_install: +- | + echo "Disabling Xdebug for composer" + export PHP_VERSION_NAME=$(phpenv version-name) + cp ~/.phpenv/versions/$PHP_VERSION_NAME/etc/conf.d/xdebug.ini /tmp/xdebug.ini + phpenv config-rm xdebug.ini + echo + +install: +- | + echo "Updating Composer" + composer self-update + echo + +- | + echo "Installing Parallel Lint" + composer -n require jakub-onderka/php-parallel-lint ^0 + composer -n require jakub-onderka/php-console-highlighter ^0 + echo + +- | + echo "Installing PHP Unit" + if [ "$TRAVIS_PHP_VERSION" = '5.3' ] || [ "$TRAVIS_PHP_VERSION" = '5.4' ] || [ "$TRAVIS_PHP_VERSION" = '5.5' ]; then + composer -n require phpunit/phpunit ^4 + fi + if [ "$TRAVIS_PHP_VERSION" = '5.6' ] || [ "$TRAVIS_PHP_VERSION" = '7.0' ] || [ "$TRAVIS_PHP_VERSION" = 'nightly' ]; then + composer -n require phpunit/phpunit ^5 + fi + echo + +- | + echo "Installing PHP CodeSniffer" + composer require squizlabs/php_codesniffer ^2 + echo +- | + echo "Adding Composer binaries to the path" + export PATH="$TRAVIS_BUILD_DIR/htdocs/includes/bin:$PATH" + echo + +before_script: +- | + echo "Re-enabling Xdebug for PHP CodeSniffer and PHP Unit" + phpenv config-add /tmp/xdebug.ini + echo + +- | + echo "Setting up PHP" + echo + echo "Set timezone" + echo 'date.timezone = "Europe/Paris"' >> ~/.phpenv/versions/$PHP_VERSION_NAME/etc/php.ini + if [ "$TRAVIS_PHP_VERSION" = '5.3' ] || [ "$TRAVIS_PHP_VERSION" = '5.4' ]; then + echo + echo "Enabling APC for PHP <= 5.4" + # Documentation says it should be available for PHP <= 5.6 but it's not for 5.5 and 5.6! + echo 'extension = apc.so' >> ~/.phpenv/versions/$PHP_VERSION_NAME/etc/php.ini + echo + echo "Enabling Memcached for PHP <= 5.4" + # Documentation says it should be available for all PHP versions but it's not for 5.5 and 5.6, 7.0 and nightly! + echo 'extension = memcached.so' >> ~/.phpenv/versions/$PHP_VERSION_NAME/etc/php.ini + fi + phpenv rehash + echo + +- | + if [ "$DEBUG" = true ]; then + echo "Debugging informations" + # Check PHP + php -i + # Check PHP CodeSniffer installation + which phpcs + phpcs --version + phpcs -i + # Check PHPUnit installation + which phpunit + phpunit --version + # Check MySQL + mysql --version + mysql -e "SELECT VERSION();" + echo + fi + +- | + echo "Setting up database" + if [ "$DB" = 'mysql' ] || [ "$DB" = 'mariadb' ]; then + echo "MySQL" + mysql -e 'DROP DATABASE IF EXISTS travis;' + mysql -e 'CREATE DATABASE IF NOT EXISTS travis;' + mysql -D travis < dev/initdata/mysqldump_dolibarr_3.5.0.sql + fi + # FIXME: find a way to import a MySQL dump into PostgreSQL + #if [ "$DB" = 'postgresql' ]; then + # pgsql travis < dev/initdata/mysqldump_dolibarr_3.5.0.sql + #fi + # TODO: SQLite + echo + +- | + echo "Setting up Dolibarr" + export CONF_FILE=htdocs/conf/conf.php + echo '<?php ' > $CONF_FILE + echo '$'dolibarr_main_url_root=\'http://127.0.0.1\'';' >> $CONF_FILE + echo '$'dolibarr_main_document_root=\'$TRAVIS_BUILD_DIR/htdocs\'';' >> $CONF_FILE + echo '$'dolibarr_main_data_root=\'$TRAVIS_BUILD_DIR/documents\'';' >> $CONF_FILE + echo '$'dolibarr_main_db_host=\'127.0.0.1\'';' >> $CONF_FILE + echo '$'dolibarr_main_db_name=\'travis\'';' >> $CONF_FILE + echo '$'dolibarr_main_db_user=\'travis\'';' >> $CONF_FILE + if [ "$DB" = 'mysql' ] || [ "$DB" = 'mariadb' ]; then + echo '$'dolibarr_main_db_type=\'mysqli\'';' >> $CONF_FILE + fi + # FIXME + #if [ "$DB" = 'postgresql' ]; then + # echo '$'dolibarr_main_db_type=\'pgsql\'';' >> $CONF_FILE + #fi + # TODO: SQLite + echo '$'dolibarr_main_authentication=\'dolibarr\'';' >> $CONF_FILE + echo + +- | + if [ "$DEBUG" = true ]; then + echo "Debugging informations" + cat $CONF_FILE + echo + fi + +- | + echo "Create documents directory and set permissions" + # and admin/temp subdirectory needed for unit tests + mkdir -p documents/admin/temp + echo + +- | + echo "Setting up Apache + FPM" + # enable php-fpm + cp ~/.phpenv/versions/$PHP_VERSION_NAME/etc/php-fpm.conf.default ~/.phpenv/versions/$PHP_VERSION_NAME/etc/php-fpm.conf + if [ "$TRAVIS_PHP_VERSION" = '7.0' ] || [ "$TRAVIS_PHP_VERSION" = 'nightly' ]; then + # Copy the included pool + cp ~/.phpenv/versions/$PHP_VERSION_NAME/etc/php-fpm.d/www.conf.default ~/.phpenv/versions/$PHP_VERSION_NAME/etc/php-fpm.d/www.conf + fi + if [ "$DEBUG" = true ]; then + cat ~/.phpenv/versions/$PHP_VERSION_NAME/etc/php-fpm.conf + fi + sudo a2enmod rewrite actions fastcgi alias + echo "cgi.fix_pathinfo = 1" >> ~/.phpenv/versions/$PHP_VERSION_NAME/etc/php.ini + if [ "$DEBUG" = true ]; then + cat ~/.phpenv/versions/$PHP_VERSION_NAME/etc/php.ini + fi + ~/.phpenv/versions/$PHP_VERSION_NAME/sbin/php-fpm + # configure apache virtual hosts + sudo cp -f build/travis-ci/apache.conf /etc/apache2/sites-available/default + sudo sed -e "s?%TRAVIS_BUILD_DIR%?$TRAVIS_BUILD_DIR?g" --in-place /etc/apache2/sites-available/default + if [ "$DEBUG" = true ]; then + sudo cat /etc/apache2/sites-available/default + fi + sudo service apache2 restart + echo + +script: +- | + echo "Checking webserver availability" + # Ensure we catch errors + set -e + wget http://127.0.0.1 + if [ "$DEBUG" = true ]; then + cat index.html + fi + set +e + echo + +- | + echo "Checking PHP syntax errors" + # Ensure we catch errors + set -e + parallel-lint --exclude htdocs/includes --blame . + set +e + echo + +# TODO: dev/* checks + +- | + echo "Checking coding style" + # Ensure we catch errors + set -e + # Exclusions are defined in the ruleset.xml file + phpcs -s -n -p -d memory_limit=-1 --colors --tab-width=4 --standard=dev/codesniffer/ruleset.xml --encoding=utf-8 . + set +e + echo + +# TODO: Check Javascript (jshint?) + +# TODO: Check CSS (csslint?) + +# TODO: check SQL syntax (pgsanity?) + +- | + echo "Upgrading Dolibarr" + # Ensure we catch errors + set -e + cd htdocs/install + php upgrade.php 3.5.0 3.6.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade350360.log + php upgrade2.php 3.5.0 3.6.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade350360-2.log + php upgrade.php 3.6.0 3.7.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade360370.log + php upgrade2.php 3.6.0 3.7.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade360370-2.log + php upgrade.php 3.7.0 3.8.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade370380.log + php upgrade2.php 3.7.0 3.8.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade370380-2.log + php upgrade.php 3.8.0 3.9.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade380390.log + php upgrade2.php 3.8.0 3.9.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade380390-2.log + cd - + set +e + echo + +- | + echo "Unit testing" + # Ensure we catch errors + set -e + phpunit -d memory_limit=-1 -c test/phpunit/phpunittest.xml test/phpunit/AllTests.php + set +e + echo + +after_success: + +after_failure: +- | + if [ "$DEBUG" = true ]; then + echo "Debugging informations" + # Upgrade log files + cat *.log + # Dolibarr log file + cat documents/dolibarr.log + # Apache log file + sudo cat /var/log/apache2/error.log + # MariaDB log file + sudo cat /var/log/mysql/error.log + # TODO: PostgreSQL log file + echo + fi + +after_script: diff --git a/build/aps/configure.php b/build/aps/configure.php index f4bd03b5d9e..1b2565e3dc8 100755 --- a/build/aps/configure.php +++ b/build/aps/configure.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php <?php /*----------------------------------------------------- * diff --git a/build/generate_filecheck_xml.php b/build/generate_filecheck_xml.php index dbe96b4c0e9..665bb3a65d1 100644 --- a/build/generate_filecheck_xml.php +++ b/build/generate_filecheck_xml.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php <?php /* Copyright (C) 2015 Laurent Destailleur <eldy@users.sourceforge.net> * diff --git a/build/travis-ci/apache.conf b/build/travis-ci/apache.conf new file mode 100644 index 00000000000..5ba713924f2 --- /dev/null +++ b/build/travis-ci/apache.conf @@ -0,0 +1,18 @@ +<VirtualHost *:80> + DocumentRoot %TRAVIS_BUILD_DIR%/htdocs + + <Directory "%TRAVIS_BUILD_DIR%/htdocs"> + Options FollowSymLinks MultiViews ExecCGI + AllowOverride All + Order deny,allow + Allow from all + </Directory> + + # Wire up Apache to use Travis CI's php-fpm. + <IfModule mod_fastcgi.c> + AddHandler php5-fcgi .php + Action php5-fcgi /php5-fcgi + Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi + FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -host 127.0.0.1:9000 -pass-header Authorization + </IfModule> +</VirtualHost> diff --git a/composer.json.phpcs b/composer.json.phpcs deleted file mode 100644 index 5f5ea2d1fdf..00000000000 --- a/composer.json.phpcs +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "dolibarr/dolibarr", - "type": "project", - "description": "Dolibarr ERP & CRM is a modern and easy to use web software to manage your business", - "keywords": ["erp","crm","invoice","sme","proposal","order","stock"], - "homepage": "http://www.dolibarr.org", - "license": "GPL-3.0+", - "support": { - "issues": "https://github.com/Dolibarr/dolibarr/issues", - "forum": "http://www.dolibarr.org/forum", - "wiki": "http://wiki.dolibarr.org", - "irc": "irc://chat.freenode.net/dolibarr", - "source": "https://github.com/Dolibarr/dolibarr" - }, - "config": { - "vendor-dir": "htdocs/includes" - } -} diff --git a/dev/codesniffer/ruleset.xml b/dev/codesniffer/ruleset.xml index 321560ff6f9..64194c7b756 100644 --- a/dev/codesniffer/ruleset.xml +++ b/dev/codesniffer/ruleset.xml @@ -3,12 +3,12 @@ <ruleset name="Dolibarr"> <description>Dolibarr coding standard.</description> - <exclude-pattern>*/conf.php</exclude-pattern> - <exclude-pattern>*/includes/*</exclude-pattern> - <exclude-pattern>*/documents/*</exclude-pattern> - <exclude-pattern>*/dev/vagrant/*</exclude-pattern> - <exclude-pattern>*/custom/*</exclude-pattern> - <exclude-pattern>*/nltechno*</exclude-pattern> + <exclude-pattern type="relative">build/html</exclude-pattern> + <exclude-pattern type="relative">documents</exclude-pattern> + <exclude-pattern type="relative">htdocs/custom</exclude-pattern> + <exclude-pattern type="relative">htdocs/includes</exclude-pattern> + <exclude-pattern type="relative">htdocs/conf.php</exclude-pattern> + <exclude-pattern type="relative">*/nltechno*</exclude-pattern> <!-- List of all tests --> diff --git a/dev/examples/create_invoice.php b/dev/examples/create_invoice.php index d59655ef613..bd82d38d306 100755 --- a/dev/examples/create_invoice.php +++ b/dev/examples/create_invoice.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php <?php /* Copyright (C) 2009 Laurent Destailleur <eldy@users.sourceforge.net> * diff --git a/dev/examples/create_order.php b/dev/examples/create_order.php index d490d230b77..4575e9e28f3 100755 --- a/dev/examples/create_order.php +++ b/dev/examples/create_order.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php <?php /* Copyright (C) 2009 Laurent Destailleur <eldy@users.sourceforge.net> * diff --git a/dev/examples/create_product.php b/dev/examples/create_product.php index 6ecce081d45..61598ff59d9 100755 --- a/dev/examples/create_product.php +++ b/dev/examples/create_product.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php <?php /* Copyright (C) 2009 Laurent Destailleur <eldy@users.sourceforge.net> * diff --git a/dev/examples/create_user.php b/dev/examples/create_user.php index d6126af2cba..f745032f575 100755 --- a/dev/examples/create_user.php +++ b/dev/examples/create_user.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php <?php /* Copyright (C) 2009 Laurent Destailleur <eldy@users.sourceforge.net> * diff --git a/dev/examples/get_contracts.php b/dev/examples/get_contracts.php index d1be3d9d7bf..1262fe3eebd 100755 --- a/dev/examples/get_contracts.php +++ b/dev/examples/get_contracts.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php <?php /* Copyright (C) 2009 Laurent Destailleur <eldy@users.sourceforge.net> * diff --git a/dev/initdata/generate-invoice.php b/dev/initdata/generate-invoice.php index 321cc6af06a..c1b2f2646a5 100755 --- a/dev/initdata/generate-invoice.php +++ b/dev/initdata/generate-invoice.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php <?php /* Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org> * diff --git a/dev/initdata/generate-order.php b/dev/initdata/generate-order.php index 6ba813c5135..082d5428c97 100755 --- a/dev/initdata/generate-order.php +++ b/dev/initdata/generate-order.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php <?php /* Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org> * Copyright (C) 2004-2007 Laurent Destailleur <eldy@users.sourceforge.net> diff --git a/dev/initdata/generate-product.php b/dev/initdata/generate-product.php index 38c0e755db3..975fc1ba33d 100755 --- a/dev/initdata/generate-product.php +++ b/dev/initdata/generate-product.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php <?php /* Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org> * Copyright (C) 2004-2010 Laurent Destailleur <eldy@users.sourceforge.net> diff --git a/dev/initdata/generate-proposal.php b/dev/initdata/generate-proposal.php index 8e17e673b86..8d413a518c1 100755 --- a/dev/initdata/generate-proposal.php +++ b/dev/initdata/generate-proposal.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php <?php /* Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org> * Copyright (C) 2007 Laurent Destailleur <eldy@users.sourceforge.net> diff --git a/dev/initdata/generate-thirdparty.php b/dev/initdata/generate-thirdparty.php index 9d928db6ac0..d6e9d4c9393 100755 --- a/dev/initdata/generate-thirdparty.php +++ b/dev/initdata/generate-thirdparty.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php <?php /* Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org> * Copyright (C) 2006-2013 Laurent Destailleur <eldy@users.sourceforge.net> diff --git a/dev/initdata/sftpget_and_loaddump.php b/dev/initdata/sftpget_and_loaddump.php index 72a33cf197c..64c5ddeb24d 100755 --- a/dev/initdata/sftpget_and_loaddump.php +++ b/dev/initdata/sftpget_and_loaddump.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php <?php /* Copyright (C) 2012 Laurent Destailleur <eldy@users.sourceforge.net> * diff --git a/dev/skeletons/build_api_class.php b/dev/skeletons/build_api_class.php index 4ed122c95d8..6263eabcd6e 100755 --- a/dev/skeletons/build_api_class.php +++ b/dev/skeletons/build_api_class.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php <?php /* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr> * diff --git a/dev/skeletons/build_class_from_table.php b/dev/skeletons/build_class_from_table.php index 803a6c8b8f5..4de319dabc9 100755 --- a/dev/skeletons/build_class_from_table.php +++ b/dev/skeletons/build_class_from_table.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php <?php /* Copyright (C) 2008-2014 Laurent Destailleur <eldy@users.sourceforge.net> * diff --git a/dev/skeletons/build_webservice_from_class.php b/dev/skeletons/build_webservice_from_class.php index ee8772a8a44..c91347a424d 100755 --- a/dev/skeletons/build_webservice_from_class.php +++ b/dev/skeletons/build_webservice_from_class.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php <?php /* Copyright (C) 2009 Laurent Destailleur <eldy@users.sourceforge.net> * diff --git a/dev/skeletons/skeleton_script.php b/dev/skeletons/skeleton_script.php index 35904c9bfd3..5eb1565d4a3 100644 --- a/dev/skeletons/skeleton_script.php +++ b/dev/skeletons/skeleton_script.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php <?php /* Copyright (C) 2007-2013 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) ---Put here your own copyright and developer email--- diff --git a/dev/translation/autotranslator.php b/dev/translation/autotranslator.php index 7fe21adfd73..58314a23b9e 100755 --- a/dev/translation/autotranslator.php +++ b/dev/translation/autotranslator.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php <?php /* Copyright (C) 2009-2012 Laurent Destailleur <eldy@users.sourceforge.net> * diff --git a/dev/translation/sanity_check_en_langfiles.php b/dev/translation/sanity_check_en_langfiles.php index f54c179ac09..5eb92509eb1 100755 --- a/dev/translation/sanity_check_en_langfiles.php +++ b/dev/translation/sanity_check_en_langfiles.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php <?php /* Copyright (c) 2015 Tommaso Basilici <t.basilici@19.coop> * Copyright (c) 2015 Laurent Destailleur <eldy@destailleur.fr> diff --git a/dev/translation/strip_language_file.php b/dev/translation/strip_language_file.php index d612ff66abf..647b571c788 100755 --- a/dev/translation/strip_language_file.php +++ b/dev/translation/strip_language_file.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php <?php /* Copyright (C) 2014 by FromDual GmbH, licensed under GPL v2 * Copyright (C) 2014 Laurent Destailleur <eldy@users.sourceforge.net> diff --git a/htdocs/filefunc.inc.php b/htdocs/filefunc.inc.php index 7abc17b49cd..534ef2587bc 100644 --- a/htdocs/filefunc.inc.php +++ b/htdocs/filefunc.inc.php @@ -166,7 +166,11 @@ define('DOL_DOCUMENT_ROOT', $dolibarr_main_document_root); // Filesystem core $tmp=''; $found=0; $real_dolibarr_main_document_root=str_replace('\\','/',realpath($dolibarr_main_document_root)); // A) Value found into config file, to say where are store htdocs files. Ex: C:/xxx/dolibarr, C:/xxx/dolibarr/htdocs -$pathroot=$_SERVER["DOCUMENT_ROOT"]; // B) Value reported by web server setup, to say where is root of web server instance. Ex: C:/xxx/dolibarr, C:/xxx/dolibarr/htdocs +if (!empty($_SERVER["DOCUMENT_ROOT"])) { + $pathroot = $_SERVER["DOCUMENT_ROOT"]; // B) Value reported by web server setup, to say where is root of web server instance. Ex: C:/xxx/dolibarr, C:/xxx/dolibarr/htdocs +} else { + $pathroot = 'BOGUS'; +} $paths=explode('/',str_replace('\\','/',$_SERVER["SCRIPT_NAME"])); // C) Value reported by web server, to say full path on filesystem of a file. Ex: /dolibarr/htdocs/admin/system/phpinfo.php // Try to detect if $_SERVER["DOCUMENT_ROOT"]+start of $_SERVER["SCRIPT_NAME"] is $dolibarr_main_document_root. If yes, relative url to add before dol files is this start part. $concatpath=''; diff --git a/scripts/accountancy/export-thirdpartyaccount.php b/scripts/accountancy/export-thirdpartyaccount.php index 0613df19501..05236aabf7e 100755 --- a/scripts/accountancy/export-thirdpartyaccount.php +++ b/scripts/accountancy/export-thirdpartyaccount.php @@ -1,4 +1,5 @@ -<?PHP +#!/usr/bin/env php +<?php /* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com> * Copyright (C) 2013-2014 Alexandre Spangaro <aspangaro.dolibarr@gmail.com> * Copyright (C) 2014 Florian Henry <florian.henry@open-concept.pro> diff --git a/scripts/bank/export-bank-receipts.php b/scripts/bank/export-bank-receipts.php index 91b1140d1a1..98ec3dd84cd 100755 --- a/scripts/bank/export-bank-receipts.php +++ b/scripts/bank/export-bank-receipts.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php <?php /* * Copyright (C) 2013 Laurent Destailleur <eldy@users.sourceforge.net> diff --git a/scripts/company/export-contacts-xls-example.php b/scripts/company/export-contacts-xls-example.php index f9469848c31..5fd7806a26c 100755 --- a/scripts/company/export-contacts-xls-example.php +++ b/scripts/company/export-contacts-xls-example.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php <?php /* * Copyright (C) 2004 Rodolphe Quiedeville <rodolphe@quiedeville.org> diff --git a/scripts/company/sync_contacts_dolibarr2ldap.php b/scripts/company/sync_contacts_dolibarr2ldap.php index 2223cd1ca8f..900cdbc35ed 100755 --- a/scripts/company/sync_contacts_dolibarr2ldap.php +++ b/scripts/company/sync_contacts_dolibarr2ldap.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php <?php /* * Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org> diff --git a/scripts/contracts/email_expire_services_to_customers.php b/scripts/contracts/email_expire_services_to_customers.php index 8f2fef6a9d6..0f5c91817db 100755 --- a/scripts/contracts/email_expire_services_to_customers.php +++ b/scripts/contracts/email_expire_services_to_customers.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php <?php /* * Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org> diff --git a/scripts/contracts/email_expire_services_to_representatives.php b/scripts/contracts/email_expire_services_to_representatives.php index 44ccb4c7e97..ad7ccebcba7 100755 --- a/scripts/contracts/email_expire_services_to_representatives.php +++ b/scripts/contracts/email_expire_services_to_representatives.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php <?php /* * Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org> diff --git a/scripts/cron/cron_run_jobs.php b/scripts/cron/cron_run_jobs.php index 81b1955d35f..e163f41e9fc 100755 --- a/scripts/cron/cron_run_jobs.php +++ b/scripts/cron/cron_run_jobs.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php <?php /* Copyright (C) 2012 Nicolas Villa aka Boyquotes http://informetic.fr * Copyright (C) 2013 Florian Henry <forian.henry@open-concept.pro diff --git a/scripts/emailings/mailing-send.php b/scripts/emailings/mailing-send.php index 9896db73352..cfe26e3d2a4 100755 --- a/scripts/emailings/mailing-send.php +++ b/scripts/emailings/mailing-send.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php <?php /* * Copyright (C) 2004 Rodolphe Quiedeville <rodolphe@quiedeville.org> diff --git a/scripts/invoices/email_unpaid_invoices_to_customers.php b/scripts/invoices/email_unpaid_invoices_to_customers.php index 0b5e66f49da..02e9db2e0ce 100755 --- a/scripts/invoices/email_unpaid_invoices_to_customers.php +++ b/scripts/invoices/email_unpaid_invoices_to_customers.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php <?php /* * Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org> diff --git a/scripts/invoices/email_unpaid_invoices_to_representatives.php b/scripts/invoices/email_unpaid_invoices_to_representatives.php index 2870766ff21..e134d693d74 100755 --- a/scripts/invoices/email_unpaid_invoices_to_representatives.php +++ b/scripts/invoices/email_unpaid_invoices_to_representatives.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php <?php /* * Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org> diff --git a/scripts/invoices/rebuild_merge_pdf.php b/scripts/invoices/rebuild_merge_pdf.php index 6fbcdb59538..6727dc5cab7 100755 --- a/scripts/invoices/rebuild_merge_pdf.php +++ b/scripts/invoices/rebuild_merge_pdf.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php <?php /* * Copyright (C) 2009-2012 Laurent Destailleur <eldy@users.sourceforge.net> diff --git a/scripts/members/sync_members_dolibarr2ldap.php b/scripts/members/sync_members_dolibarr2ldap.php index bfe16330b79..a0c393d01c2 100755 --- a/scripts/members/sync_members_dolibarr2ldap.php +++ b/scripts/members/sync_members_dolibarr2ldap.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php <?php /** * Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org> diff --git a/scripts/members/sync_members_ldap2dolibarr.php b/scripts/members/sync_members_ldap2dolibarr.php index b6a27250557..2319a10a0fd 100755 --- a/scripts/members/sync_members_ldap2dolibarr.php +++ b/scripts/members/sync_members_ldap2dolibarr.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php <?php /** * Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org> diff --git a/scripts/product/migrate_picture_path.php b/scripts/product/migrate_picture_path.php index a03e2549006..9d3cba8452f 100755 --- a/scripts/product/migrate_picture_path.php +++ b/scripts/product/migrate_picture_path.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php <?php /* Copyright (C) 2007-2013 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2015 Jean Heimburger <http://tiaris.eu> diff --git a/scripts/user/sync_groups_dolibarr2ldap.php b/scripts/user/sync_groups_dolibarr2ldap.php index d751c5ed90c..e661a85beb5 100755 --- a/scripts/user/sync_groups_dolibarr2ldap.php +++ b/scripts/user/sync_groups_dolibarr2ldap.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php <?php /** * Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org> diff --git a/scripts/user/sync_groups_ldap2dolibarr.php b/scripts/user/sync_groups_ldap2dolibarr.php index b48a4af974e..45b960878ab 100755 --- a/scripts/user/sync_groups_ldap2dolibarr.php +++ b/scripts/user/sync_groups_ldap2dolibarr.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php <?php /** * Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org> diff --git a/scripts/user/sync_users_dolibarr2ldap.php b/scripts/user/sync_users_dolibarr2ldap.php index 91ad440e9b2..dd5e3d18de4 100755 --- a/scripts/user/sync_users_dolibarr2ldap.php +++ b/scripts/user/sync_users_dolibarr2ldap.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php <?php /** * Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org> diff --git a/scripts/user/sync_users_ldap2dolibarr.php b/scripts/user/sync_users_ldap2dolibarr.php index 48917cc1042..9a04f81c557 100755 --- a/scripts/user/sync_users_ldap2dolibarr.php +++ b/scripts/user/sync_users_ldap2dolibarr.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php <?php /** * Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org> diff --git a/scripts/withdrawals/build_withdrawal_file.php b/scripts/withdrawals/build_withdrawal_file.php index cb01c3f6678..1a8c673c5f9 100755 --- a/scripts/withdrawals/build_withdrawal_file.php +++ b/scripts/withdrawals/build_withdrawal_file.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php <?php /* * Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org> diff --git a/test/phpunit/AllTests.php b/test/phpunit/AllTests.php index d7bd828527f..96e48a7264d 100644 --- a/test/phpunit/AllTests.php +++ b/test/phpunit/AllTests.php @@ -36,17 +36,17 @@ require_once dirname(__FILE__).'/../../htdocs/master.inc.php'; if ($langs->defaultlang != 'en_US') { print "Error: Default language for company to run tests must be set to en_US or auto. Current is ".$langs->defaultlang."\n"; - exit; + exit(1); } if (empty($conf->adherent->enabled)) { - print "Error: Module member must be enabled to have significatn results.\n"; - exit; + print "Error: Module member must be enabled to have significant results.\n"; + exit(1); } if (! empty($conf->ldap->enabled)) { print "Error: LDAP module should not be enabled.\n"; - exit; + exit(1); } if (! empty($conf->google->enabled)) { diff --git a/test/phpunit/ContactTest.php b/test/phpunit/ContactTest.php index d9532417fc2..cb0f37875b3 100755 --- a/test/phpunit/ContactTest.php +++ b/test/phpunit/ContactTest.php @@ -33,7 +33,7 @@ $langs->load("dict"); if ($langs->defaultlang != 'en_US') { print "Error: Default language for company to run tests must be set to en_US or auto. Current is ".$langs->defaultlang."\n"; - exit; + exit(1); } if (empty($user->id)) diff --git a/test/phpunit/PricesTest.php b/test/phpunit/PricesTest.php index bb8c90d5f1c..5e0169f9b36 100755 --- a/test/phpunit/PricesTest.php +++ b/test/phpunit/PricesTest.php @@ -42,7 +42,7 @@ $conf->global->MAIN_DISABLE_ALL_MAILS=1; if (! empty($conf->global->MAIN_ROUNDING_RULE_TOT)) { print "Parameter MAIN_ROUNDING_RULE_TOT must be set to 0 or not set.\n"; - exit; + exit(1); } /** diff --git a/test/phpunit/WebservicesProductsTest.php b/test/phpunit/WebservicesProductsTest.php index a751faddb4b..fecc58a65e1 100755 --- a/test/phpunit/WebservicesProductsTest.php +++ b/test/phpunit/WebservicesProductsTest.php @@ -43,7 +43,7 @@ $conf->global->MAIN_DISABLE_ALL_MAILS=1; if (empty($conf->service->enabled)) { print "Error: Module service must be enabled.\n"; - exit; + exit(1); } /** -- GitLab From 0ec62c05cc8c9e342a77b4975c8ddecf9b760fc0 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Mon, 14 Dec 2015 09:14:34 +0100 Subject: [PATCH 174/197] Fix bad var name. Removed warning. --- htdocs/comm/action/class/actioncomm.class.php | 4 +- htdocs/core/class/conf.class.php | 68 +++++++++++-------- 2 files changed, 43 insertions(+), 29 deletions(-) diff --git a/htdocs/comm/action/class/actioncomm.class.php b/htdocs/comm/action/class/actioncomm.class.php index 55dd28d8029..5b75bbadd00 100644 --- a/htdocs/comm/action/class/actioncomm.class.php +++ b/htdocs/comm/action/class/actioncomm.class.php @@ -891,7 +891,7 @@ class ActionComm extends CommonObject $agenda_static = new ActionComm($this->db); $response = new WorkboardResponse(); - $response->warning_delay = $conf->actions->warning_delay/60/60/24; + $response->warning_delay = $conf->agenda->warning_delay/60/60/24; $response->label = $langs->trans("ActionsToDo"); $response->url = DOL_URL_ROOT.'/comm/action/listactions.php?status=todo&mainmenu=agenda'; $response->img = img_object($langs->trans("Actions"),"action"); @@ -1380,7 +1380,7 @@ class ActionComm extends CommonObject $now = dol_now(); - return $this->datep && ($this->datep < ($now - $conf->actions->warning_delay)); + return $this->datep && ($this->datep < ($now - $conf->agenda->warning_delay)); } } diff --git a/htdocs/core/class/conf.class.php b/htdocs/core/class/conf.class.php index 3aac36f3f37..7adcd79d364 100644 --- a/htdocs/core/class/conf.class.php +++ b/htdocs/core/class/conf.class.php @@ -469,33 +469,47 @@ class Conf // Delay before warnings // Avoid strict errors. TODO: Replace xxx->warning_delay with a property ->warning_delay_xxx - $this->propal->cloture = new stdClass(); - $this->propal->facturation = new stdClass(); - $this->commande->client = new stdClass(); - $this->commande->fournisseur = new stdClass(); - $this->facture->client = new stdClass(); - $this->facture->fournisseur = new stdClass(); - $this->contrat->services = new stdClass(); - $this->contrat->services->inactifs = new stdClass(); - $this->contrat->services->expires = new stdClass(); - $this->adherent->cotisation = new stdClass(); - $this->bank->rappro = new stdClass(); - $this->bank->cheque = new stdClass(); - $this->expensereport->payment = new stdClass(); - $this->actions->warning_delay=(isset($this->global->MAIN_DELAY_ACTIONS_TODO)?$this->global->MAIN_DELAY_ACTIONS_TODO:7)*24*60*60; - $this->commande->client->warning_delay=(isset($this->global->MAIN_DELAY_ORDERS_TO_PROCESS)?$this->global->MAIN_DELAY_ORDERS_TO_PROCESS:2)*24*60*60; - $this->commande->fournisseur->warning_delay=(isset($this->global->MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS)?$this->global->MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS:7)*24*60*60; - $this->propal->cloture->warning_delay=(isset($this->global->MAIN_DELAY_PROPALS_TO_CLOSE)?$this->global->MAIN_DELAY_PROPALS_TO_CLOSE:0)*24*60*60; - $this->propal->facturation->warning_delay=(isset($this->global->MAIN_DELAY_PROPALS_TO_BILL)?$this->global->MAIN_DELAY_PROPALS_TO_BILL:0)*24*60*60; - $this->facture->client->warning_delay=(isset($this->global->MAIN_DELAY_CUSTOMER_BILLS_UNPAYED)?$this->global->MAIN_DELAY_CUSTOMER_BILLS_UNPAYED:0)*24*60*60; - $this->facture->fournisseur->warning_delay=(isset($this->global->MAIN_DELAY_SUPPLIER_BILLS_TO_PAY)?$this->global->MAIN_DELAY_SUPPLIER_BILLS_TO_PAY:0)*24*60*60; - $this->contrat->services->inactifs->warning_delay=(isset($this->global->MAIN_DELAY_NOT_ACTIVATED_SERVICES)?$this->global->MAIN_DELAY_NOT_ACTIVATED_SERVICES:0)*24*60*60; - $this->contrat->services->expires->warning_delay=(isset($this->global->MAIN_DELAY_RUNNING_SERVICES)?$this->global->MAIN_DELAY_RUNNING_SERVICES:0)*24*60*60; - $this->adherent->cotisation->warning_delay=(isset($this->global->MAIN_DELAY_MEMBERS)?$this->global->MAIN_DELAY_MEMBERS:0)*24*60*60; - $this->bank->rappro->warning_delay=(isset($this->global->MAIN_DELAY_TRANSACTIONS_TO_CONCILIATE)?$this->global->MAIN_DELAY_TRANSACTIONS_TO_CONCILIATE:0)*24*60*60; - $this->bank->cheque->warning_delay=(isset($this->global->MAIN_DELAY_CHEQUES_TO_DEPOSIT)?$this->global->MAIN_DELAY_CHEQUES_TO_DEPOSIT:0)*24*60*60; - $this->expensereport->payment->warning_delay=(isset($this->global->MAIN_DELAY_EXPENSEREPORTS_TO_PAY)?$this->global->MAIN_DELAY_EXPENSEREPORTS_TO_PAY:0)*24*60*60; - + if (isset($this->agenda)) { + $this->adherent->cotisation = new stdClass(); + $this->adherent->cotisation->warning_delay=(isset($this->global->MAIN_DELAY_MEMBERS)?$this->global->MAIN_DELAY_MEMBERS:0)*24*60*60; + } + if (isset($this->agenda)) $this->agenda->warning_delay=(isset($this->global->MAIN_DELAY_ACTIONS_TODO)?$this->global->MAIN_DELAY_ACTIONS_TODO:7)*24*60*60; + if (isset($this->commande)) { + $this->commande->client = new stdClass(); + $this->commande->fournisseur = new stdClass(); + $this->commande->client->warning_delay=(isset($this->global->MAIN_DELAY_ORDERS_TO_PROCESS)?$this->global->MAIN_DELAY_ORDERS_TO_PROCESS:2)*24*60*60; + $this->commande->fournisseur->warning_delay=(isset($this->global->MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS)?$this->global->MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS:7)*24*60*60; + } + if (isset($this->propal)) { + $this->propal->cloture = new stdClass(); + $this->propal->facturation = new stdClass(); + $this->propal->cloture->warning_delay=(isset($this->global->MAIN_DELAY_PROPALS_TO_CLOSE)?$this->global->MAIN_DELAY_PROPALS_TO_CLOSE:0)*24*60*60; + $this->propal->facturation->warning_delay=(isset($this->global->MAIN_DELAY_PROPALS_TO_BILL)?$this->global->MAIN_DELAY_PROPALS_TO_BILL:0)*24*60*60; + } + if (isset($this->facture)) { + $this->facture->client = new stdClass(); + $this->facture->fournisseur = new stdClass(); + $this->facture->client->warning_delay=(isset($this->global->MAIN_DELAY_CUSTOMER_BILLS_UNPAYED)?$this->global->MAIN_DELAY_CUSTOMER_BILLS_UNPAYED:0)*24*60*60; + $this->facture->fournisseur->warning_delay=(isset($this->global->MAIN_DELAY_SUPPLIER_BILLS_TO_PAY)?$this->global->MAIN_DELAY_SUPPLIER_BILLS_TO_PAY:0)*24*60*60; + } + if (isset($this->contrat)) { + $this->contrat->services = new stdClass(); + $this->contrat->services->inactifs = new stdClass(); + $this->contrat->services->expires = new stdClass(); + $this->contrat->services->inactifs->warning_delay=(isset($this->global->MAIN_DELAY_NOT_ACTIVATED_SERVICES)?$this->global->MAIN_DELAY_NOT_ACTIVATED_SERVICES:0)*24*60*60; + $this->contrat->services->expires->warning_delay=(isset($this->global->MAIN_DELAY_RUNNING_SERVICES)?$this->global->MAIN_DELAY_RUNNING_SERVICES:0)*24*60*60; + } + if (isset($this->commande)) { + $this->bank->rappro = new stdClass(); + $this->bank->cheque = new stdClass(); + $this->bank->rappro->warning_delay=(isset($this->global->MAIN_DELAY_TRANSACTIONS_TO_CONCILIATE)?$this->global->MAIN_DELAY_TRANSACTIONS_TO_CONCILIATE:0)*24*60*60; + $this->bank->cheque->warning_delay=(isset($this->global->MAIN_DELAY_CHEQUES_TO_DEPOSIT)?$this->global->MAIN_DELAY_CHEQUES_TO_DEPOSIT:0)*24*60*60; + } + if (isset($this->expensereport)) { + $this->expensereport->payment = new stdClass(); + $this->expensereport->payment->warning_delay=(isset($this->global->MAIN_DELAY_EXPENSEREPORTS_TO_PAY)?$this->global->MAIN_DELAY_EXPENSEREPORTS_TO_PAY:0)*24*60*60; + } + // For modules that want to disable top or left menu if (! empty($this->global->MAIN_HIDE_TOP_MENU)) $this->dol_hide_topmenu=$this->global->MAIN_HIDE_TOP_MENU; if (! empty($this->global->MAIN_HIDE_LEFT_MENU)) $this->dol_hide_leftmenu=$this->global->MAIN_HIDE_LEFT_MENU; -- GitLab From af5bcc5312ce891f547e07dfa3a80f47be2805b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= <frederic.france@free.fr> Date: Mon, 14 Dec 2015 09:31:40 +0100 Subject: [PATCH 175/197] Update mouvement.php --- htdocs/product/stock/mouvement.php | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/htdocs/product/stock/mouvement.php b/htdocs/product/stock/mouvement.php index a6085699a63..0eb538a4c29 100644 --- a/htdocs/product/stock/mouvement.php +++ b/htdocs/product/stock/mouvement.php @@ -203,6 +203,14 @@ if (! empty($search_product)) $sql.= " AND p.label LIKE '%".$db->escape($s if (! empty($search_warehouse)) $sql.= " AND e.label LIKE '%".$db->escape($search_warehouse)."%'"; if (! empty($search_user)) $sql.= " AND u.login LIKE '%".$db->escape($search_user)."%'"; if (! empty($search_batch)) $sql.= " AND m.batch LIKE '%".$db->escape($search_batch)."%'"; + +$nbtotalofrecords = 0; +if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) +{ + $result = $db->query($sql); + $nbtotalofrecords = $db->num_rows($result); +} + $sql.= $db->order($sortfield,$sortorder); $sql.= $db->plimit($conf->liste_limit+1, $offset); @@ -248,7 +256,7 @@ if ($resql) print '<table class="border" width="100%">'; - $linkback = '<a href="'.DOL_URL_ROOT.'/adherents/list.php">'.$langs->trans("BackToList").'</a>'; + $linkback = '<a href="'.DOL_URL_ROOT.'/product/stock/list.php">'.$langs->trans("BackToList").'</a>'; // Ref print '<tr><td width="25%">'.$langs->trans("Ref").'</td><td colspan="3">'; @@ -470,8 +478,8 @@ if ($resql) if (!empty($snom)) $param.='&snom='.urlencode($snom); // FIXME $snom is not defined if ($search_user) $param.='&search_user='.urlencode($search_user); if ($idproduct > 0) $param.='&idproduct='.$idproduct; - if ($id) print_barre_liste($texte, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder,'',$num,0,''); - else print_barre_liste($texte, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder,'',$num); + if ($id) print_barre_liste($texte, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder,'',$num, $nbtotalofrecords,''); + else print_barre_liste($texte, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder,'',$num, $nbtotalofrecords); print '<form method="get" action="'.$_SERVER["PHP_SELF"].'">'; if ($id) print '<input type="hidden" name="id" value="'.$id.'">'; -- GitLab From e415a3ddf279911383f60dc2511d892c071750c4 Mon Sep 17 00:00:00 2001 From: Bahfir Abbes <bafbes@gmail.com> Date: Mon, 14 Dec 2015 15:01:29 +0100 Subject: [PATCH 176/197] Update facture.php fix change customer function in customer invoices - include customers or prospects only --- htdocs/compta/facture.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php index 9ce11ee5abf..4d3c194bce1 100644 --- a/htdocs/compta/facture.php +++ b/htdocs/compta/facture.php @@ -2837,7 +2837,7 @@ else if ($id > 0 || ! empty($ref)) print '</tr></table>'; print '</td><td colspan="5">'; if ($action == 'editthirdparty') { - $form->form_thirdparty($_SERVER['PHP_SELF'] . '?facid=' . $object->id, $object->socid, 'socid'); + $form->form_thirdparty($_SERVER['PHP_SELF'] . '?facid=' . $object->id, $object->socid, 'socid','client>0'); } else { print ' ' . $soc->getNomUrl(1, 'compta'); print ' '; -- GitLab From 4c60569cc4bde2fe733217d8fd1c7c4597b94d69 Mon Sep 17 00:00:00 2001 From: Sof <virtualsof@yahoo.fr> Date: Mon, 14 Dec 2015 15:42:21 +0100 Subject: [PATCH 177/197] FIX : Fatal error: Cannot access empty property --- htdocs/admin/livraison.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/admin/livraison.php b/htdocs/admin/livraison.php index f9cee8a75f3..04183bed336 100644 --- a/htdocs/admin/livraison.php +++ b/htdocs/admin/livraison.php @@ -503,7 +503,7 @@ print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; print '<input type="hidden" name="action" value="set_DELIVERY_FREE_TEXT">'; print '<tr '.$bc[$var].'><td colspan="2">'; print $langs->trans("FreeLegalTextOnDeliveryReceipts").' ('.$langs->trans("AddCRIfTooLong").')<br>'; -print '<textarea name="DELIVERY_FREE_TEXT" class="flat" cols="120">'.$conf->global->DELIVERY_FREE_TEXT.'</textarea>'; +$variablename='DELIVERY_FREE_TEXT'; if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT)) { print '<textarea name="'.$variablename.'" class="flat" cols="120">'.$conf->global->$variablename.'</textarea>'; -- GitLab From 0fe64c6091be75e222f13cfaa6d25e7aeea4982c Mon Sep 17 00:00:00 2001 From: philippe grand <philippe.grand@atoo-net.com> Date: Mon, 14 Dec 2015 20:54:55 +0100 Subject: [PATCH 178/197] [Qual] Uniformize code --- htdocs/product/card.php | 44 ++++++++++++++++-------------- htdocs/product/document.php | 6 ++-- htdocs/product/fournisseurs.php | 16 +++++------ htdocs/product/list.php | 2 +- htdocs/product/price.php | 36 ++++++++++++------------ htdocs/product/stock/mouvement.php | 2 +- htdocs/product/stock/product.php | 4 +-- htdocs/product/stock/replenish.php | 8 +++--- htdocs/product/traduction.php | 6 ++-- 9 files changed, 63 insertions(+), 61 deletions(-) diff --git a/htdocs/product/card.php b/htdocs/product/card.php index 77b14b24c7a..e166b15c8ee 100644 --- a/htdocs/product/card.php +++ b/htdocs/product/card.php @@ -149,21 +149,21 @@ if (empty($reshook)) else $errors[] = 'FailedToValidateBarCode'; $error++; - setEventMessage($errors,'errors'); + setEventMessages($errors, null, 'errors'); } } if ($action == 'setaccountancy_code_buy') { $result = $object->setAccountancyCode('buy', GETPOST('accountancy_code_buy')); - if ($result < 0) setEventMessage(join(',',$object->errors), 'errors'); + if ($result < 0) setEventMessages(join(',',$object->errors), null, 'errors'); $action=""; } if ($action == 'setaccountancy_code_sell') { $result = $object->setAccountancyCode('sell', GETPOST('accountancy_code_sell')); - if ($result < 0) setEventMessage(join(',',$object->errors), 'errors'); + if ($result < 0) setEventMessages(join(',',$object->errors), null, 'errors'); $action=""; } @@ -174,13 +174,13 @@ if (empty($reshook)) if (! GETPOST('label')) { - setEventMessage($langs->trans('ErrorFieldRequired',$langs->transnoentities('Label')), 'errors'); + setEventMessages($langs->trans('ErrorFieldRequired',$langs->transnoentities('Label')), null, 'errors'); $action = "create"; $error++; } if (empty($ref)) { - setEventMessage($langs->trans('ErrorFieldRequired',$langs->transnoentities('Ref')), 'errors'); + setEventMessages($langs->trans('ErrorFieldRequired',$langs->transnoentities('Ref')), null, 'errors'); $action = "create"; $error++; } @@ -224,7 +224,8 @@ if (empty($reshook)) if ($result < 0) { $error++; - setEventMessage('Failed to get bar code type information '.$stdobject->error, 'errors'); + $mesg='Failed to get bar code type information '; + setEventMessages($mesg.$stdobject->error, $mesg.$stdobject->errors, 'errors'); } $object->barcode_type_code = $stdobject->barcode_type_code; $object->barcode_type_coder = $stdobject->barcode_type_coder; @@ -290,8 +291,8 @@ if (empty($reshook)) } else { - if (count($object->errors)) setEventMessage($object->errors, 'errors'); - else setEventMessage($langs->trans($object->error), 'errors'); + if (count($object->errors)) setEventMessages($object->error, $object->errors, 'errors'); + else setEventMessages($langs->trans($object->error), null, 'errors'); $action = "create"; } } @@ -353,7 +354,8 @@ if (empty($reshook)) if ($result < 0) { $error++; - setEventMessage('Failed to get bar code type information '.$stdobject->error, 'errors'); + $mesg='Failed to get bar code type information '; + setEventMessages($mesg.$stdobject->error, $mesg.$stdobject->errors, 'errors'); } $object->barcode_type_code = $stdobject->barcode_type_code; $object->barcode_type_coder = $stdobject->barcode_type_coder; @@ -378,15 +380,15 @@ if (empty($reshook)) } else { - if (count($object->errors)) setEventMessage($object->errors, 'errors'); - else setEventMessage($langs->trans($object->error), 'errors'); + if (count($object->errors)) setEventMessages($object->error, $object->errors, 'errors'); + else setEventMessages($langs->trans($object->error), null, 'errors'); $action = 'edit'; } } else { - if (count($object->errors)) setEventMessage($object->errors, 'errors'); - else setEventMessage($langs->trans("ErrorProductBadRefOrLabel"), 'errors'); + if (count($object->errors)) setEventMessages($object->error, $object->errors, 'errors'); + else setEventMessages($langs->trans("ErrorProductBadRefOrLabel"), null, 'errors'); $action = 'edit'; } } @@ -400,7 +402,7 @@ if (empty($reshook)) { if (! GETPOST('clone_content') && ! GETPOST('clone_prices') ) { - setEventMessage($langs->trans("NoCloneOptionsSpecified"), 'errors'); + setEventMessages($langs->trans("NoCloneOptionsSpecified"), null, 'errors'); } else { @@ -427,7 +429,7 @@ if (empty($reshook)) if ($result < 1) { $db->rollback(); - setEventMessage($langs->trans('ErrorProductClone'), 'errors'); + setEventMessages($langs->trans('ErrorProductClone'), null, 'errors'); header("Location: ".$_SERVER["PHP_SELF"]."?id=".$originalId); exit; } @@ -454,7 +456,7 @@ if (empty($reshook)) $mesg=$langs->trans("ErrorProductAlreadyExists",$object->ref); $mesg.=' <a href="'.$_SERVER["PHP_SELF"].'?ref='.$object->ref.'">'.$langs->trans("ShowCardHere").'</a>.'; - setEventMessage($mesg, 'errors'); + setEventMessages($mesg, null, 'errors'); $object->fetch($id); } else @@ -462,12 +464,12 @@ if (empty($reshook)) $db->rollback(); if (count($object->errors)) { - setEventMessage($object->errors, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); dol_print_error($db,$object->errors); } else { - setEventMessage($langs->trans($object->error), 'errors'); + setEventMessages($langs->trans($object->error), null, 'errors'); dol_print_error($db,$object->error); } } @@ -498,7 +500,7 @@ if (empty($reshook)) } else { - setEventMessage($langs->trans($object->error), 'errors'); + setEventMessages($langs->trans($object->error), null, 'errors'); $reload = 0; $action=''; } @@ -624,7 +626,7 @@ if (empty($reshook)) return; } - setEventMessage($langs->trans("ErrorUnknown") . ": $result", 'errors'); + setEventMessages($langs->trans("ErrorUnknown") . ": $result", null, 'errors'); } elseif (GETPOST('commandeid') > 0) { $result = $commande->addline( $desc, @@ -696,7 +698,7 @@ if (empty($reshook)) } else { $action=""; - setEventMessage($langs->trans("WarningSelectOneDocument"), 'warnings'); + setEventMessages($langs->trans("WarningSelectOneDocument"), null, 'warnings'); } } diff --git a/htdocs/product/document.php b/htdocs/product/document.php index ecb3d12bb52..8a4c68990c6 100644 --- a/htdocs/product/document.php +++ b/htdocs/product/document.php @@ -105,7 +105,7 @@ if (empty($reshook)) $filetomerge->file_name=$filename; $result=$filetomerge->delete_by_file($user); if ($result<0) { - setEventMessage($filetomerge->error,'errors'); + setEventMessages($filetomerge->error, $filetomerge->errors, 'errors'); } } } @@ -137,7 +137,7 @@ if ($action=='filemerge') $result=$filetomerge->delete_by_product($user, $object->id); } if ($result<0) { - setEventMessage($filetomerge->error,'errors'); + setEventMessages($filetomerge->error, $filetomerge->errors, 'errors'); } // for each file checked add it to the product @@ -152,7 +152,7 @@ if ($action=='filemerge') $result=$filetomerge->create($user); if ($result<0) { - setEventMessage($filetomerge->error,'errors'); + setEventMessages($filetomerge->error, $filetomerge->errors, 'errors'); } } } diff --git a/htdocs/product/fournisseurs.php b/htdocs/product/fournisseurs.php index 04007d2ede1..1f5e35a043a 100644 --- a/htdocs/product/fournisseurs.php +++ b/htdocs/product/fournisseurs.php @@ -101,7 +101,7 @@ if (empty($reshook)) if ($result > 0) { $object->cost_price = price2num($cost_price); - setEventMessage($langs->trans("RecordSaved")); + setEventMessages($langs->trans("RecordSaved"), null, 'mesgs'); } else { @@ -119,7 +119,7 @@ if (empty($reshook)) $action = ''; $result=$object->remove_product_fournisseur_price($rowid); if($result > 0){ - setEventMessage($langs->trans("PriceRemoved")); + setEventMessages($langs->trans("PriceRemoved"), null, 'mesgs'); }else{ $error++; setEventMessages($object->error, $object->errors, 'errors'); @@ -151,7 +151,7 @@ if (empty($reshook)) { $error++; $langs->load("errors"); - setEventMessage($langs->trans("ErrorFieldMustBeANumeric",'eeee'), 'errors'); + setEventMessages($langs->trans("ErrorFieldMustBeANumeric",'eeee'), null, 'errors'); } if (empty($quantity)) { @@ -199,12 +199,12 @@ if (empty($reshook)) $object->fetch($object->product_id_already_linked); $productLink = $object->getNomUrl(1,'supplier'); - setEventMessage($langs->trans("ReferenceSupplierIsAlreadyAssociatedWithAProduct",$productLink), 'errors'); + setEventMessages($langs->trans("ReferenceSupplierIsAlreadyAssociatedWithAProduct",$productLink), null, 'errors'); } else if ($ret < 0) { $error++; - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } @@ -220,7 +220,7 @@ if (empty($reshook)) { $error++; - setEventMessage($object->error, $object->errors, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } else { @@ -231,7 +231,7 @@ if (empty($reshook)) $price_result = $priceparser->parseProductSupplier($id, $price_expression, $quantity, $tva_tx); if ($price_result < 0) { //Expression is not valid $error++; - setEventMessage($priceparser->translatedError(), 'errors'); + setEventMessages($priceparser->translatedError(), null, 'errors'); } } if (! $error && ! empty($conf->dynamicprices->enabled)) { @@ -239,7 +239,7 @@ if (empty($reshook)) if ($ret < 0) { $error++; - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } } diff --git a/htdocs/product/list.php b/htdocs/product/list.php index b656b88efc6..335f6cd346a 100644 --- a/htdocs/product/list.php +++ b/htdocs/product/list.php @@ -293,7 +293,7 @@ else // Displays product removal confirmation if (GETPOST('delprod')) { - setEventMessage($langs->trans("ProductDeleted", GETPOST('delprod'))); + setEventMessages($langs->trans("ProductDeleted", GETPOST('delprod')), null, 'mesgs'); } if ($sref) $param="&sref=".$sref; diff --git a/htdocs/product/price.php b/htdocs/product/price.php index 2a770841c60..e5b93d981af 100644 --- a/htdocs/product/price.php +++ b/htdocs/product/price.php @@ -6,7 +6,7 @@ * Copyright (C) 2006 Andre Cianfarani <acianfa@free.fr> * Copyright (C) 2014 Florian Henry <florian.henry@open-concept.pro> * Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es> - * Copyright (C) 2014 Philippe Grand <philippe.grand@atoo-net.com> + * Copyright (C) 2014-2015 Philippe Grand <philippe.grand@atoo-net.com> * Copyright (C) 2014 Ion agorria <ion@agorria.com> * Copyright (C) 2015 Alexandre Spangaro <aspangaro.dolibarr@gmail.com> * Copyright (C) 2015 Marcos García <marcosgdf@gmail.com> @@ -131,7 +131,7 @@ if (empty($reshook)) if ($priceparser->parseProduct($object) < 0) { $error ++; - setEventMessage($priceparser->translatedError(), 'errors'); + setEventMessages($priceparser->translatedError(), null, 'errors'); } } } @@ -194,7 +194,7 @@ if (empty($reshook)) $newprice_min = price2num($val['price_min'], 'MU'); if (!empty($conf->global->PRODUCT_MINIMUM_RECOMMENDED_PRICE) && $newprice_min < $maxpricesupplier) { - setEventMessage($langs->trans("MinimumPriceLimit", price($maxpricesupplier, 0, '', 1, - 1, - 1, 'auto')), 'errors'); + setEventMessages($langs->trans("MinimumPriceLimit", price($maxpricesupplier, 0, '', 1, - 1, - 1, 'auto')), null, 'errors'); $error ++; break; } @@ -203,7 +203,7 @@ if (empty($reshook)) if ($res < 0) { $error ++; - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); break; } } @@ -211,12 +211,12 @@ if (empty($reshook)) if (!$error && $object->update($object->id, $user) < 0) { $error++; - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } if (empty($error)) { $action = ''; - setEventMessage($langs->trans("RecordSaved")); + setEventMessages($langs->trans("RecordSaved"), null, 'mesgs'); $db->commit(); } else { $action = 'edit_price'; @@ -229,7 +229,7 @@ if (empty($reshook)) { $result = $object->log_price_delete($user, $_GET ["lineid"]); if ($result < 0) { - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } @@ -341,7 +341,7 @@ if (empty($reshook)) if (! empty($conf->global->PRODUCT_MINIMUM_RECOMMENDED_PRICE) && $prodcustprice->price_min<$maxpricesupplier) { - setEventMessage($langs->trans("MinimumPriceLimit",price($maxpricesupplier,0,'',1,-1,-1,'auto')),'errors'); + setEventMessages($langs->trans("MinimumPriceLimit",price($maxpricesupplier,0,'',1,-1,-1,'auto')), null, 'errors'); $error++; $action='add_customer_price'; } @@ -351,9 +351,9 @@ if (empty($reshook)) $result = $prodcustprice->create($user, 0, $update_child_soc); if ($result < 0) { - setEventMessage($prodcustprice->error, 'errors'); + setEventMessages($prodcustprice->error, $prodcustprice->errors, 'errors'); } else { - setEventMessage($langs->trans('RecordSaved'), 'mesgs'); + setEventMessages($langs->trans('RecordSaved'), null, 'mesgs'); } $action = ''; @@ -367,9 +367,9 @@ if (empty($reshook)) $result = $prodcustprice->delete($user); if ($result < 0) { - setEventMessage($prodcustprice->error, 'mesgs'); + setEventMessages($prodcustprice->error, $prodcustprice->errors, 'mesgs'); } else { - setEventMessage($langs->trans('RecordDeleted'), 'errors'); + setEventMessages($langs->trans('RecordDeleted'), null, 'errors'); } $action = ''; } @@ -391,7 +391,7 @@ if (empty($reshook)) if ($prodcustprice->price_min<$maxpricesupplier && !empty($conf->global->PRODUCT_MINIMUM_RECOMMENDED_PRICE)) { - setEventMessage($langs->trans("MinimumPriceLimit",price($maxpricesupplier,0,'',1,-1,-1,'auto')),'errors'); + setEventMessages($langs->trans("MinimumPriceLimit",price($maxpricesupplier,0,'',1,-1,-1,'auto')), null, 'errors'); $error++; $action='update_customer_price'; } @@ -401,9 +401,9 @@ if (empty($reshook)) $result = $prodcustprice->update($user, 0, $update_child_soc); if ($result < 0) { - setEventMessage($prodcustprice->error, 'errors'); + setEventMessages($prodcustprice->error, $prodcustprice->errors, 'errors'); } else { - setEventMessage($langs->trans('Save'), 'mesgs'); + setEventMessages($langs->trans('Save'), null, 'mesgs'); } $action = ''; @@ -1257,7 +1257,7 @@ if (! empty($conf->global->PRODUIT_CUSTOMER_PRICES)) $result = $prodcustprice->fetch(GETPOST('lineid', 'int')); if ($result < 0) { - setEventMessage($prodcustprice->error, 'errors'); + setEventMessages($prodcustprice->error, $prodcustprice->errors, 'errors'); } print '<form action="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '" method="POST">'; @@ -1346,7 +1346,7 @@ if (! empty($conf->global->PRODUIT_CUSTOMER_PRICES)) $result = $prodcustprice->fetch_all_log($sortorder, $sortfield, $conf->liste_limit, $offset, $filter); if ($result < 0) { - setEventMessage($prodcustprice->error, 'errors'); + setEventMessages($prodcustprice->error, $prodcustprice->errors, 'errors'); } $option = '&socid=' . GETPOST('socid', 'int') . '&id=' . $object->id; @@ -1422,7 +1422,7 @@ if (! empty($conf->global->PRODUIT_CUSTOMER_PRICES)) $result = $prodcustprice->fetch_all($sortorder, $sortfield, $conf->liste_limit, $offset, $filter); if ($result < 0) { - setEventMessage($prodcustprice->error, 'errors'); + setEventMessages($prodcustprice->error, $prodcustprice->errors, 'errors'); } $option = '&search_soc=' . $search_soc . '&id=' . $object->id; diff --git a/htdocs/product/stock/mouvement.php b/htdocs/product/stock/mouvement.php index a6085699a63..463ac8c5468 100644 --- a/htdocs/product/stock/mouvement.php +++ b/htdocs/product/stock/mouvement.php @@ -100,7 +100,7 @@ if ($action == "correct_stock") if (! is_numeric($_POST["nbpiece"])) { $error++; - setEventMessage($langs->trans("ErrorFieldMustBeANumeric", $langs->transnoentitiesnoconv("NumberOfUnit")), 'errors'); + setEventMessages($langs->trans("ErrorFieldMustBeANumeric", $langs->transnoentitiesnoconv("NumberOfUnit")), null, 'errors'); $action='correction'; } diff --git a/htdocs/product/stock/product.php b/htdocs/product/stock/product.php index 0476a459f60..ad4acbe362a 100644 --- a/htdocs/product/stock/product.php +++ b/htdocs/product/stock/product.php @@ -77,7 +77,7 @@ if ($action == 'setstocklimit') $object->seuil_stock_alerte=$stocklimit; $result=$object->update($object->id,$user,0,'update'); if ($result < 0) - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); $action=''; } @@ -89,7 +89,7 @@ if ($action == 'setdesiredstock') $object->desiredstock=$desiredstock; $result=$object->update($object->id,$user,0,'update'); if ($result < 0) - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); $action=''; } diff --git a/htdocs/product/stock/replenish.php b/htdocs/product/stock/replenish.php index 620f1acbb40..5df580877c5 100644 --- a/htdocs/product/stock/replenish.php +++ b/htdocs/product/stock/replenish.php @@ -176,7 +176,7 @@ if ($action == 'order' && isset($_POST['valid'])) $fail++; $msg = $langs->trans('OrderFail') . " : "; $msg .= $order->error; - setEventMessage($msg, 'errors'); + setEventMessages($msg, null, 'errors'); } else { $id = $result; } @@ -195,7 +195,7 @@ if ($action == 'order' && isset($_POST['valid'])) $fail++; $msg = $langs->trans('OrderFail') . " : "; $msg .= $order->error; - setEventMessage($msg, 'errors'); + setEventMessages($msg, null, 'errors'); } $i++; } @@ -205,7 +205,7 @@ if ($action == 'order' && isset($_POST['valid'])) { $db->commit(); - setEventMessage($langs->trans('OrderCreated'), 'mesgs'); + setEventMessages($langs->trans('OrderCreated'), null, 'mesgs'); header('Location: replenishorders.php'); exit; } @@ -216,7 +216,7 @@ if ($action == 'order' && isset($_POST['valid'])) } if ($box == 0) { - setEventMessage($langs->trans('SelectProductWithNotNullQty'), 'warnings'); + setEventMessages($langs->trans('SelectProductWithNotNullQty'), null, 'warnings'); } } diff --git a/htdocs/product/traduction.php b/htdocs/product/traduction.php index a40b7b15cd9..96c94e9efff 100644 --- a/htdocs/product/traduction.php +++ b/htdocs/product/traduction.php @@ -94,7 +94,7 @@ $cancel != $langs->trans("Cancel") && else { $action = 'add'; - setEventMessage($object->error,'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } @@ -130,7 +130,7 @@ $cancel != $langs->trans("Cancel") && else { $action = 'edit'; - setEventMessage($object->error,'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } @@ -151,7 +151,7 @@ $cancel != $langs->trans("Cancel") && else { $action = 'edit'; - setEventMessage($object->error,'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } -- GitLab From ed88a4c398b981e9f6bce8b06f4888c6245b828d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Mon, 14 Dec 2015 21:38:04 +0100 Subject: [PATCH 179/197] Fix css --- htdocs/index.php | 20 +++++++++++--------- htdocs/theme/eldy/style.css.php | 15 ++++++++++++--- htdocs/theme/md/style.css.php | 13 +++++++++++++ 3 files changed, 36 insertions(+), 12 deletions(-) diff --git a/htdocs/index.php b/htdocs/index.php index 94445337720..8bc704520ca 100644 --- a/htdocs/index.php +++ b/htdocs/index.php @@ -287,12 +287,10 @@ if (empty($user->societe_id)) $var=!$var; if (!empty($langfile[$key])) $langs->load($langfile[$key]); $text=$langs->trans($titres[$key]); - print '<a href="'.$links[$key].'" class="thumbstat nobold nounderline">'; + print '<a href="'.$links[$key].'" class="boxstatsindicator thumbstat nobold nounderline">'; print '<div class="boxstats">'; print img_object("",$icons[$key]).' '.$text.'<br>'; - //print '</a>'; - //print '<a href="'.$links[$key].'">'; - print $board->nb[$val]; + print '<span class="boxstatsindicator">'.$board->nb[$val].'</span>'; print '</div>'; print '</a>'; } @@ -454,13 +452,17 @@ foreach($valid_dashboardlines as $board) { $var=!$var; print '<tr '.$bc[$var].'><td width="16">'.$board->img.'</td><td>'.$board->label.'</td>'; - print '<td align="right"><a href="'.$board->url.'">'.$board->nbtodo.'</a></td>'; + print '<td align="right"><a class="dashboardlineindicator" href="'.$board->url.'"><span class="dashboardlineindicator">'.$board->nbtodo.'</span></a></td>'; print '<td align="right">'; - print '<a href="'.$board->url.'">'; - print $board->nbtodolate; - print '</a></td>'; + //if ($board->nbtodolate > 0) + //{ + print '<a class="dashboardlineindicatorlate" href="'.$board->url.'"><span class="dashboardlineindicatorlate">'; + print $board->nbtodolate; + print '</span></a>'; + //} + print '</td>'; print '<td align="left">'; - if ($board->nbtodolate > 0) print img_picto($langs->trans("NActionsLate",$board->nbtodolate),"warning"); + if ($board->nbtodolate > 0) print img_picto($langs->trans("NActionsLate",$board->nbtodolate).' (>'.ceil($board->warning_delay).' '.$langs->trans("days").')',"warning"); else print ' '; print '</td>'; print '<td class="nowrap" align="right">'; diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index a83f3430bc4..d17cd7aec1f 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -2323,8 +2323,6 @@ div.pagination li.paginationafterarrows { { <?php if ($colorbacklinepairhover) { ?> background: rgb(<?php echo $colorbacklinepairhover; ?>) !important; -<?php } else { ?> - /* background: rgba(0, 0, 0, 0.05) !important; */ <?php } ?> } @@ -2524,9 +2522,20 @@ div.tabBar .noborder { border-radius: 4px; } .boxstats:hover { +<?php if ($colorbacklinepairhover) { ?> + background: rgb(<?php echo $colorbacklinepairhover; ?>) !important; +<?php } else { ?> background-color: #<?php echo colorArrayToHex(colorStringToArray($colorbacklinepair1)); ?>; +<?php } ?> +} +span.boxstatsindicator { + font-size: 110%; + font-weight: bold; +} +span.dashboardlineindicator, span.dashboardlineindicatorlate { + font-size: 120%; + font-weight: bold; } - .boxtable { -moz-box-shadow: 3px 3px 4px #DDD; -webkit-box-shadow: 3px 3px 4px #DDD; diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index ad4237dc769..453365f3908 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -2349,9 +2349,22 @@ div.tabBar .noborder { border: 1px solid #AAA; text-align: center; border-radius: 2px; + min-height: 38px; } .boxstats:hover { +<?php if ($colorbacklinepairhover) { ?> + background: rgb(<?php echo $colorbacklinepairhover; ?>) !important; +<?php } else { ?> background-color: #<?php echo colorArrayToHex(colorStringToArray($colorbacklinepair1)); ?>; +<?php } ?> +} +span.boxstatsindicator { + font-size: 110%; + font-weight: bold; +} +span.dashboardlineindicator, span.dashboardlineindicatorlate { + font-size: 120%; + font-weight: bold; } .boxtable { -- GitLab From 9fa742ceb2d4302c116031ec09b38ee0dddeff2b Mon Sep 17 00:00:00 2001 From: fappels <francis.appels@yahoo.com> Date: Mon, 14 Dec 2015 21:38:26 +0100 Subject: [PATCH 180/197] [QUAL] Shipment error handling --- htdocs/expedition/card.php | 29 +++++++------------ htdocs/expedition/class/expedition.class.php | 1 + .../stock/class/mouvementstock.class.php | 8 ++--- 3 files changed, 16 insertions(+), 22 deletions(-) diff --git a/htdocs/expedition/card.php b/htdocs/expedition/card.php index 36d85366805..dfe848808c8 100644 --- a/htdocs/expedition/card.php +++ b/htdocs/expedition/card.php @@ -224,7 +224,7 @@ if (empty($reshook)) $ret=$object->addline($entrepot_id,GETPOST($idl,'int'),GETPOST($qty,'int')); if ($ret < 0) { - $mesg='<div class="error">'.$object->error.'</div>'; + setEventMessages($object->error, $object->errors, 'errors'); $error++; } } @@ -237,7 +237,7 @@ if (empty($reshook)) $ret=$object->addline_batch($batch_line[$i]); if ($ret < 0) { - $mesg='<div class="error">'.$object->error.'</div>'; + setEventMessages($object->error, $object->errors, 'errors'); $error++; } } @@ -249,14 +249,14 @@ if (empty($reshook)) $ret=$object->create($user); // This create shipment (like Odoo picking) and line of shipments. Stock movement will when validating shipment. if ($ret <= 0) { - $mesg='<div class="error">'.$object->error.'</div>'; + setEventMessages($object->error, $object->errors, 'errors'); $error++; } } } else { - $mesg='<div class="error">'.$langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Qty")).'</div>'; + setEventMessages($langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("QtyToShip")), null, 'errors'); $error++; } @@ -287,7 +287,7 @@ if (empty($reshook)) } else { - $mesg=$object->error; + setEventMessages($object->error, $object->errors, 'errors'); } } @@ -337,19 +337,18 @@ if (empty($reshook)) } else { - $langs->load("errors"); - setEventMessages($langs->trans($object->error), null, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } - - else if ($action == 'reopen' && (! empty($user->rights->expedition->creer) || ! empty($user->rights->expedition->shipping_advance->validate))) + // TODO add alternative status + /*else if ($action == 'reopen' && (! empty($user->rights->expedition->creer) || ! empty($user->rights->expedition->shipping_advance->validate))) { $result = $object->setStatut(0); if ($result < 0) { - $mesg = $object->error; + setEventMessages($object->error, $object->errors, 'errors'); } - } + }*/ else if ($action == 'setdate_livraison' && $user->rights->expedition->creer) { @@ -360,7 +359,7 @@ if (empty($reshook)) $result=$object->set_date_livraison($user,$datedelivery); if ($result < 0) { - $mesg='<div class="error">'.$object->error.'</div>'; + setEventMessages($object->error, $object->errors, 'errors'); } } @@ -485,8 +484,6 @@ if ($action == 'create') setEventMessages($langs->trans("ErrorBadParameters"), null, 'errors'); } - dol_htmloutput_mesg($mesg); - if ($origin) { $classname = ucfirst($origin); @@ -928,8 +925,6 @@ else if ($id || $ref) if ($object->id > 0) { - dol_htmloutput_mesg($mesg); - if (!empty($object->origin)) { $typeobject = $object->origin; @@ -943,8 +938,6 @@ else if ($id || $ref) $head=shipping_prepare_head($object); dol_fiche_head($head, 'shipping', $langs->trans("Shipment"), 0, 'sending'); - dol_htmloutput_mesg($mesg); - /* * Confirmation de la suppression */ diff --git a/htdocs/expedition/class/expedition.class.php b/htdocs/expedition/class/expedition.class.php index d7bfc9aed98..08b53bf9e25 100644 --- a/htdocs/expedition/class/expedition.class.php +++ b/htdocs/expedition/class/expedition.class.php @@ -1068,6 +1068,7 @@ class Expedition extends CommonObject break; } } + if ($error) break; // break for loop incase of error } } } diff --git a/htdocs/product/stock/class/mouvementstock.class.php b/htdocs/product/stock/class/mouvementstock.class.php index 561b38977ac..dde89bfb6e5 100644 --- a/htdocs/product/stock/class/mouvementstock.class.php +++ b/htdocs/product/stock/class/mouvementstock.class.php @@ -139,15 +139,15 @@ class MouvementStock extends CommonObject $obj = $this->db->fetch_object($resql); if ($this->db->jdate($obj->eatby) != $eatby) { - $this->errors[]=$langs->trans("ThisSerialAlreadyExistWithDifferentDate", $batch, $this->db->jdate($obj->eatby), $eatby); - dol_syslog($langs->trans("ThisSerialAlreadyExistWithDifferentDate", $batch, $this->db->jdate($obj->eatby), $eatby)); + $this->errors[]=$langs->trans("ThisSerialAlreadyExistWithDifferentDate", $batch, dol_print_date($this->db->jdate($obj->eatby)), dol_print_date($eatby)); + dol_syslog($langs->transnoentities("ThisSerialAlreadyExistWithDifferentDate", $batch, dol_print_date($this->db->jdate($obj->eatby)), dol_print_date($eatby)), LOG_ERR); $this->db->rollback(); return -3; } if ($this->db->jdate($obj->sellby) != $sellby) { - $this->errors[]=$langs->trans("ThisSerialAlreadyExistWithDifferentDate", $batch, $this->db->jdate($obj->sellby), $sellby); - dol_syslog($langs->trans("ThisSerialAlreadyExistWithDifferentDate", $batch, $this->db->jdate($obj->sellby), $sellby)); + $this->errors[]=$langs->trans("ThisSerialAlreadyExistWithDifferentDate", $batch, dol_print_date($this->db->jdate($obj->sellby)), dol_print_date($sellby)); + dol_syslog($langs->transnoentities("ThisSerialAlreadyExistWithDifferentDate", $batch, dol_print_date($this->db->jdate($obj->sellby)), dol_print_date($sellby)), LOG_ERR); $this->db->rollback(); return -3; } -- GitLab From 687370071b245e9f15a5441bbe65c31c8aead3ea Mon Sep 17 00:00:00 2001 From: aspangaro <alexandre.spangaro@gmail.com> Date: Mon, 14 Dec 2015 21:38:30 +0100 Subject: [PATCH 181/197] A function to remove zero at the end of the account --- htdocs/core/lib/accounting.lib.php | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/htdocs/core/lib/accounting.lib.php b/htdocs/core/lib/accounting.lib.php index 6e6da6bd686..0b1bfb8f4fc 100644 --- a/htdocs/core/lib/accounting.lib.php +++ b/htdocs/core/lib/accounting.lib.php @@ -91,6 +91,33 @@ function accounting_prepare_head(AccountingAccount $object) return $head; } +/** + * Return accounting account without zero on the right + * + * @param string $account Accounting account + * @return string String without zero on the right + */ +function clean_account($account) +{ + global $conf; + + // Clean parameters + $i = strlen($account); + + if ($i >= 1) { + if (substr($account, -1) == 0) { + while ( $i >= 1 ) { + $account = substr($account, $i); + + $i --; + } + return $account; + } + } else { + return $account; + } +} + /** * Return general accounting account with defined length * @@ -131,7 +158,7 @@ function length_accountg($account) */ function length_accounta($accounta) { - global $conf, $langs; + global $conf; $a = $conf->global->ACCOUNTING_LENGTH_AACCOUNT; -- GitLab From 577040746467193dc5a83684c088b871bcc62fbc Mon Sep 17 00:00:00 2001 From: aspangaro <alexandre.spangaro@gmail.com> Date: Tue, 15 Dec 2015 06:10:33 +0100 Subject: [PATCH 182/197] Complete information on FEC format - french law --- ...ien_outil_de_test_agr\303\251\303\251.pdf" | Bin 0 -> 137080 bytes dev/iso-normes/format_FEC.pdf | Bin 46230 -> 196003 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 "dev/iso-normes/format_FEC-Lien_outil_de_test_agr\303\251\303\251.pdf" diff --git "a/dev/iso-normes/format_FEC-Lien_outil_de_test_agr\303\251\303\251.pdf" "b/dev/iso-normes/format_FEC-Lien_outil_de_test_agr\303\251\303\251.pdf" new file mode 100644 index 0000000000000000000000000000000000000000..1c0d0c91e739f88a744c877728edd1451da7ee2b GIT binary patch literal 137080 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 C=4#0R literal 0 HcmV?d00001 diff --git a/dev/iso-normes/format_FEC.pdf b/dev/iso-normes/format_FEC.pdf index 2b5770305506bdbee07afbf03ca11bd51dc9c37e..ad62797a1903c335112b68aa9ea34c378ae1132d 100644 GIT binary patch literal 196003 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�OocWt|M^f}5EB-?m~X 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 E07j+*!~g&Q literal 46230 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 E0KRtw6aWAK -- GitLab From 750443040acbf4110bbbdc8d661dcf753b465156 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Tue, 15 Dec 2015 09:29:21 +0100 Subject: [PATCH 183/197] Enhance ruleset.xml description --- dev/codesniffer/ruleset.dtd | 1 + 1 file changed, 1 insertion(+) diff --git a/dev/codesniffer/ruleset.dtd b/dev/codesniffer/ruleset.dtd index e307d564e12..276626a3a16 100644 --- a/dev/codesniffer/ruleset.dtd +++ b/dev/codesniffer/ruleset.dtd @@ -3,6 +3,7 @@ <!ATTLIST ruleset name CDATA ""> <!ELEMENT description (#PCDATA)> <!ELEMENT exclude-pattern (#PCDATA)> +<!ATTLIST exclude-pattern type CDATA ""> <!ELEMENT rule (properties*,severity*)> <!ATTLIST rule ref CDATA ""> <!ELEMENT properties (property+)> -- GitLab From 40269c3c70e89d3bbf2483e73710f4b7db9568c0 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Tue, 15 Dec 2015 09:32:09 +0100 Subject: [PATCH 184/197] Fix Remove syntax warnings --- htdocs/core/class/dolreceiptprinter.class.php | 10 +++++++--- htdocs/core/js/lib_head.js.php | 2 +- htdocs/core/modules/dons/html_cerfafr.html | 2 +- htdocs/public/test/test_arrays.php | 10 ++++------ htdocs/public/test/test_forms.php | 4 ++-- 5 files changed, 15 insertions(+), 13 deletions(-) diff --git a/htdocs/core/class/dolreceiptprinter.class.php b/htdocs/core/class/dolreceiptprinter.class.php index 5bee14b74d4..90bf948e215 100644 --- a/htdocs/core/class/dolreceiptprinter.class.php +++ b/htdocs/core/class/dolreceiptprinter.class.php @@ -80,7 +80,7 @@ * <dol_print_customer_points> Print customer points * <dol_print_order_points> Print number of points for this order * - * Conditional code at line start (if�then Print) + * Conditional code at line start (if�then Print) * <dol_print_if_customer> Print the line IF a customer is affected to the order * <dol_print_if_vendor> Print the line IF a vendor is affected to the order * <dol_print_if_happy_hour> Print the line IF Happy Hour @@ -520,8 +520,12 @@ class dolReceiptPrinter extends Escpos $ret = $this->InitPrinter($printerid); if ($ret>0) { setEventMessages($this->error, $this->errors, 'errors'); - } else { - for ($line=0; $line < count($vals); $line++) { + } + else + { + $nboflines = count($vals); + for ($line=0; $line < $nboflines; $line++) + { switch ($vals[$line]['tag']) { case 'DOL_ALIGN_CENTER': $this->printer->setJustification(Escpos::JUSTIFY_CENTER); diff --git a/htdocs/core/js/lib_head.js.php b/htdocs/core/js/lib_head.js.php index 15a25bf10ed..b843f83e1d0 100644 --- a/htdocs/core/js/lib_head.js.php +++ b/htdocs/core/js/lib_head.js.php @@ -940,7 +940,7 @@ function confirmConstantAction(action, url, code, input, box, entity, yesButton, function copyToClipboard(text,text2) { text = text.replace(/<br>/g,"\n"); - var newElem = "<textarea id=\"coords\" style=\"border: none; width: 90%; height: 120px;\">"+text+"</textarea><br><br>"+text2; + var newElem = '<textarea id="coords" style="border: none; width: 90%; height: 120px;">'+text+'</textarea><br><br>'+text2; $("#dialog").html(newElem); $("#dialog").dialog(); $("#coords").select(); diff --git a/htdocs/core/modules/dons/html_cerfafr.html b/htdocs/core/modules/dons/html_cerfafr.html index ea9dbee01e3..df6f58af77d 100644 --- a/htdocs/core/modules/dons/html_cerfafr.html +++ b/htdocs/core/modules/dons/html_cerfafr.html @@ -151,8 +151,8 @@ (1) ou n'indiquez que les renseignements concernant l'organisme <br> (2) dons effectués par les entreprises - </div> </font> + </div> <div style="height: 297mm; width: 210mm; page-break-inside: avoid;"> <table width="100%" border="1" cellspacing="0" cellpadding="1" bgcolor="#000000"> <tr> diff --git a/htdocs/public/test/test_arrays.php b/htdocs/public/test/test_arrays.php index 2801ebb8855..ac4d9eb3c54 100644 --- a/htdocs/public/test/test_arrays.php +++ b/htdocs/public/test/test_arrays.php @@ -65,8 +65,8 @@ else <h1> This page is a sample of page using tables. It is designed to make test with<br> -- css (add parameter &theme=newtheme to test another theme or edit css of current theme)<br> -- jmobile (add parameter <a href="<?php echo $_SERVER["PHP_SELF"].'?dol_use_jmobile=1&dol_optimize_smallscreen=1'; ?>">dol_use_jmobile=1&dol_optimize_smallscreen=1</a> to enable view with jmobile)<br> +- css (add parameter &theme=newtheme to test another theme or edit css of current theme)<br> +- jmobile (add parameter <a href="<?php echo $_SERVER["PHP_SELF"].'?dol_use_jmobile=1&dol_optimize_smallscreen=1'; ?>">dol_use_jmobile=1&dol_optimize_smallscreen=1</a> to enable view with jmobile)<br> - no javascript / usage for bind people (add parameter <a href="<?php echo $_SERVER["PHP_SELF"].'?nojs=1'; ?>">nojs=1</a> to force disable javascript)<br> - dataTables<br> - tablednd<br> @@ -181,8 +181,8 @@ if (! empty($moreforfilter)) print '</div>'; } -print '<table class="tagtable liste'.($moreforfilter?" listwithfilterbefore":"").'" id="tablelines3">'; ?> +<table class="tagtable liste<?php echo $moreforfilter?" listwithfilterbefore":""; ?>" id="tablelines3"> <tr class="liste_titre"> <?php print getTitleFieldOfList($langs->trans('title1'),0,$_SERVER["PHP_SELF"],'aaa','','','align="left"',$sortfield,$sortorder); ?> <?php print getTitleFieldOfList($langs->trans('title2'),0,$_SERVER["PHP_SELF"],'bbb','','','align="right"',$sortfield,$sortorder); ?> @@ -190,9 +190,7 @@ print '<table class="tagtable liste'.($moreforfilter?" listwithfilterbefore":"") </tr> <tr class="pair"><td><?php echo $productspecimen->getNomUrl(1); ?></td><td align="right">b1</td><td class="tdlineupdown" align="left">c1</td></tr> <tr class="impair"><td>a2</td><td align="right">b2</td><td class="tdlineupdown" align="left">c2</td></tr> -<?php -print '</table>'; -?> +</table> <br> diff --git a/htdocs/public/test/test_forms.php b/htdocs/public/test/test_forms.php index 7fec8e895b6..a697b371438 100644 --- a/htdocs/public/test/test_forms.php +++ b/htdocs/public/test/test_forms.php @@ -16,8 +16,8 @@ llxHeader(); <h1> This page is a sample of page using Dolibarr HTML widget methods. It is designed to make test with<br> -- css (add parameter &theme=newtheme to test another theme or edit css of current theme)<br> -- jmobile (add parameter <a href="<?php echo $_SERVER["PHP_SELF"].'?dol_use_jmobile=1&dol_optimize_smallscreen=1'; ?>">dol_use_jmobile=1&dol_optimize_smallscreen=1</a> to enable view with jmobile)<br> +- css (add parameter &theme=newtheme to test another theme or edit css of current theme)<br> +- jmobile (add parameter <a href="<?php echo $_SERVER["PHP_SELF"].'?dol_use_jmobile=1&dol_optimize_smallscreen=1'; ?>">dol_use_jmobile=1&dol_optimize_smallscreen=1</a> to enable view with jmobile)<br> - no javascript / usage for bind people (add parameter <a href="<?php echo $_SERVER["PHP_SELF"].'?nojs=1'; ?>">nojs=1</a> to force disable javascript)<br> </h1> <br> -- GitLab From af85ade7ff7deecce52f933c8d30561a9860bc48 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Tue, 15 Dec 2015 10:24:31 +0100 Subject: [PATCH 185/197] Minor css fix --- htdocs/theme/eldy/style.css.php | 1 - htdocs/theme/md/style.css.php | 1 - 2 files changed, 2 deletions(-) diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index d17cd7aec1f..54aa64a8cbe 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -3361,7 +3361,6 @@ ul.filedirelem li { } ul.ecmjqft { - font-size: 11px; line-height: 16px; padding: 0px; margin: 0px; diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 453365f3908..76d5e8147ac 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -3202,7 +3202,6 @@ ui-layout-north { } ul.ecmjqft { - font-size: 11px; line-height: 16px; padding: 0px; margin: 0px; -- GitLab From 011f0fbb0bd05c089f3b8b1607e0419a346e52bb Mon Sep 17 00:00:00 2001 From: Sof <virtualsof@yahoo.fr> Date: Tue, 15 Dec 2015 14:04:52 +0100 Subject: [PATCH 186/197] FIX : Typo error --- htdocs/fourn/class/fournisseur.commande.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index 1888cdc8adc..236eca113ff 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -996,7 +996,7 @@ class CommandeFournisseur extends CommonOrder { $result = -1; $this->error = $langs->trans('NotAuthorized'); - $this->errors[] = $lanfs->trans('NotAuthorized'); + $this->errors[] = $langs->trans('NotAuthorized'); dol_syslog(get_class($this)."::commande User not Authorized", LOG_ERR); } return $result ; -- GitLab From 90dbfc487049ff8b53efb186bcb0084fd8836f2e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Tue, 15 Dec 2015 15:52:20 +0100 Subject: [PATCH 187/197] Fix: to avoid confusion between amount of payment and amount distributed on invoice when a payment is done for several invoices, export of payment can export both fields. --- htdocs/core/modules/modFacture.class.php | 6 +++--- htdocs/langs/en_US/bills.lang | 3 +++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/htdocs/core/modules/modFacture.class.php b/htdocs/core/modules/modFacture.class.php index 807a2673849..72437d80b90 100644 --- a/htdocs/core/modules/modFacture.class.php +++ b/htdocs/core/modules/modFacture.class.php @@ -242,10 +242,10 @@ class modFacture extends DolibarrModules $this->export_label[$r]='CustomersInvoicesAndPayments'; // Translation key (used only if key ExportDataset_xxx_z not found) $this->export_icon[$r]='bill'; $this->export_permission[$r]=array(array("facture","facture","export")); - $this->export_fields_array[$r]=array('s.rowid'=>"IdCompany",'s.nom'=>'CompanyName','s.address'=>'Address','s.zip'=>'Zip','s.town'=>'Town','c.code'=>'CountryCode','s.phone'=>'Phone','s.siren'=>'ProfId1','s.siret'=>'ProfId2','s.ape'=>'ProfId3','s.idprof4'=>'ProfId4','s.code_compta'=>'CustomerAccountancyCode','s.code_compta_fournisseur'=>'SupplierAccountancyCode','s.tva_intra'=>'VATIntra','f.rowid'=>"InvoiceId",'f.facnumber'=>"InvoiceRef",'f.datec'=>"InvoiceDateCreation",'f.datef'=>"DateInvoice",'f.date_lim_reglement'=>"DateDue",'f.total'=>"TotalHT",'f.total_ttc'=>"TotalTTC",'f.tva'=>"TotalVAT",'f.paye'=>"InvoicePaid",'f.fk_statut'=>'InvoiceStatus','f.note_private'=>"NotePrivate",'f.note_public'=>"NotePublic",'f.fk_user_author'=>'CreatedById','uc.login'=>'CreatedByLogin','f.fk_user_valid'=>'ValidatedById','uv.login'=>'ValidatedByLogin','p.rowid'=>'PaymentId','pf.amount'=>'AmountPayment','p.datep'=>'DatePayment','p.num_paiement'=>'PaymentNumber','pt.code'=>'PaymentMode','p.fk_bank'=>'IdTransaction'); + $this->export_fields_array[$r]=array('s.rowid'=>"IdCompany",'s.nom'=>'CompanyName','s.address'=>'Address','s.zip'=>'Zip','s.town'=>'Town','c.code'=>'CountryCode','s.phone'=>'Phone','s.siren'=>'ProfId1','s.siret'=>'ProfId2','s.ape'=>'ProfId3','s.idprof4'=>'ProfId4','s.code_compta'=>'CustomerAccountancyCode','s.code_compta_fournisseur'=>'SupplierAccountancyCode','s.tva_intra'=>'VATIntra','f.rowid'=>"InvoiceId",'f.facnumber'=>"InvoiceRef",'f.datec'=>"InvoiceDateCreation",'f.datef'=>"DateInvoice",'f.date_lim_reglement'=>"DateDue",'f.total'=>"TotalHT",'f.total_ttc'=>"TotalTTC",'f.tva'=>"TotalVAT",'f.paye'=>"InvoicePaid",'f.fk_statut'=>'InvoiceStatus','f.note_private'=>"NotePrivate",'f.note_public'=>"NotePublic",'f.fk_user_author'=>'CreatedById','uc.login'=>'CreatedByLogin','f.fk_user_valid'=>'ValidatedById','uv.login'=>'ValidatedByLogin','p.rowid'=>'PaymentId','p.ref'=>'PaymentRef','p.amount'=>'AmountPayment','pf.amount'=>'AmountPaymentDistributedOnInvoice','p.datep'=>'DatePayment','p.num_paiement'=>'PaymentNumber','pt.code'=>'PaymentMode','p.note'=>'PaymentNote','p.fk_bank'=>'IdTransaction'); //$this->export_TypeFields_array[$r]=array('s.rowid'=>"List:societe:nom",'s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.code_compta'=>'Text','s.code_compta_fournisseur'=>'Text','s.tva_intra'=>'Text','f.rowid'=>"List:facture:facnumber",'f.facnumber'=>"Text",'f.datec'=>"Date",'f.datef'=>"Date",'f.date_lim_reglement'=>"Date",'f.total'=>"Numeric",'f.total_ttc'=>"Numeric",'f.tva'=>"Numeric",'f.paye'=>"Boolean",'f.fk_statut'=>'Status','f.note_private'=>"Text",'f.note_public'=>"Text",'pf.amount'=>'Numeric','p.datep'=>'Date','p.num_paiement'=>'Numeric','p.fk_bank'=>'Numeric'); - $this->export_TypeFields_array[$r]=array('s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.code_compta'=>'Text','s.code_compta_fournisseur'=>'Text','s.tva_intra'=>'Text','f.rowid'=>"List:facture:facnumber",'f.facnumber'=>"Text",'f.datec'=>"Date",'f.datef'=>"Date",'f.date_lim_reglement'=>"Date",'f.total'=>"Numeric",'f.total_ttc'=>"Numeric",'f.tva'=>"Numeric",'f.paye'=>"Boolean",'f.fk_statut'=>'Status','f.note_private'=>"Text",'f.note_public'=>"Text",'pf.amount'=>'Numeric','p.datep'=>'Date','p.num_paiement'=>'Numeric','p.fk_bank'=>'Numeric'); - $this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','c.code'=>'company','s.phone'=>'company','s.siren'=>'company','s.siret'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.code_compta'=>'company','s.code_compta_fournisseur'=>'company','s.tva_intra'=>'company','f.rowid'=>"invoice",'f.facnumber'=>"invoice",'f.datec'=>"invoice",'f.datef'=>"invoice",'f.date_lim_reglement'=>"invoice",'f.total'=>"invoice",'f.total_ttc'=>"invoice",'f.tva'=>"invoice",'f.paye'=>"invoice",'f.fk_statut'=>'invoice','f.note_private'=>"invoice",'f.note_public'=>"invoice",'p.rowid'=>'payment','pf.amount'=>'payment','p.datep'=>'payment','p.num_paiement'=>'payment','pt.code'=>'payment','p.fk_bank'=>'payment','f.fk_user_author'=>'user','uc.login'=>'user','f.fk_user_valid'=>'user','uv.login'=>'user'); + $this->export_TypeFields_array[$r]=array('s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.code_compta'=>'Text','s.code_compta_fournisseur'=>'Text','s.tva_intra'=>'Text','f.rowid'=>"List:facture:facnumber",'f.facnumber'=>"Text",'f.datec'=>"Date",'f.datef'=>"Date",'f.date_lim_reglement'=>"Date",'f.total'=>"Numeric",'f.total_ttc'=>"Numeric",'f.tva'=>"Numeric",'f.paye'=>"Boolean",'f.fk_statut'=>'Status','f.note_private'=>"Text",'f.note_public'=>"Text",'pf.amount'=>'Numeric','p.datep'=>'Date','p.num_paiement'=>'Numeric','p.fk_bank'=>'Numeric','p.note'=>'Text'); + $this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','c.code'=>'company','s.phone'=>'company','s.siren'=>'company','s.siret'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.code_compta'=>'company','s.code_compta_fournisseur'=>'company','s.tva_intra'=>'company','f.rowid'=>"invoice",'f.facnumber'=>"invoice",'f.datec'=>"invoice",'f.datef'=>"invoice",'f.date_lim_reglement'=>"invoice",'f.total'=>"invoice",'f.total_ttc'=>"invoice",'f.tva'=>"invoice",'f.paye'=>"invoice",'f.fk_statut'=>'invoice','f.note_private'=>"invoice",'f.note_public'=>"invoice",'p.rowid'=>'payment','p.ref'=>'payment','p.amount'=>'payment','pf.amount'=>'payment','p.datep'=>'payment','p.num_paiement'=>'payment','pt.code'=>'payment','p.fk_bank'=>'payment','p.note'=>'payment','f.fk_user_author'=>'user','uc.login'=>'user','f.fk_user_valid'=>'user','uv.login'=>'user'); $this->export_dependencies_array[$r]=array('payment'=>'p.rowid'); // To add unique key if we ask a field of a child to avoid the DISTINCT to discard them // Add extra fields $sql="SELECT name, label, type, param FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'facture'"; diff --git a/htdocs/langs/en_US/bills.lang b/htdocs/langs/en_US/bills.lang index db2b9ea4b62..20f6fe0619c 100644 --- a/htdocs/langs/en_US/bills.lang +++ b/htdocs/langs/en_US/bills.lang @@ -269,6 +269,7 @@ HelpAbandonBadCustomer=This amount has been abandoned (customer said to be a bad HelpAbandonOther=This amount has been abandoned since it was an error (wrong customer or invoice replaced by an other for example) IdSocialContribution=Social/fiscal tax payment id PaymentId=Payment id +PaymentRef=Payment ref. InvoiceId=Invoice id InvoiceRef=Invoice ref. InvoiceDateCreation=Invoice creation date @@ -296,6 +297,8 @@ RelatedSupplierInvoices=Related supplier invoices LatestRelatedBill=Latest related invoice WarningBillExist=Warning, one or more invoice already exist MergingPDFTool=Merging PDF tool +AmountPaymentDistributedOnInvoice=Payment amount distributed on invoice +PaymentNote=Payment note # PaymentConditions PaymentConditionShortRECEP=Immediate -- GitLab From c1e77daeb1208e9c944e93725cbe5cbeb775f9ad Mon Sep 17 00:00:00 2001 From: aspangaro <alexandre.spangaro@gmail.com> Date: Tue, 15 Dec 2015 20:48:06 +0100 Subject: [PATCH 188/197] New: Accountancy add a function to remove all zero at the right of the account. Thanks to Florian --- htdocs/core/lib/accounting.lib.php | 20 +++----------------- 1 file changed, 3 insertions(+), 17 deletions(-) diff --git a/htdocs/core/lib/accounting.lib.php b/htdocs/core/lib/accounting.lib.php index 0b1bfb8f4fc..502e83010f7 100644 --- a/htdocs/core/lib/accounting.lib.php +++ b/htdocs/core/lib/accounting.lib.php @@ -99,23 +99,9 @@ function accounting_prepare_head(AccountingAccount $object) */ function clean_account($account) { - global $conf; - - // Clean parameters - $i = strlen($account); - - if ($i >= 1) { - if (substr($account, -1) == 0) { - while ( $i >= 1 ) { - $account = substr($account, $i); - - $i --; - } - return $account; - } - } else { - return $account; - } + $account = rtrim($account,"0"); + + return $account; } /** -- GitLab From 5cd5413836640b17543e8266897de5806a2b5747 Mon Sep 17 00:00:00 2001 From: aspangaro <alexandre.spangaro@gmail.com> Date: Wed, 16 Dec 2015 05:22:50 +0100 Subject: [PATCH 189/197] Accountancy add a column in table bookkeeping to validate operations --- .../install/mysql/migration/3.9.0-4.0.0.sql | 25 +++++++++++++++++++ .../tables/llx_accounting_bookkeeping.sql | 3 ++- 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 htdocs/install/mysql/migration/3.9.0-4.0.0.sql diff --git a/htdocs/install/mysql/migration/3.9.0-4.0.0.sql b/htdocs/install/mysql/migration/3.9.0-4.0.0.sql new file mode 100644 index 00000000000..f8a74fec247 --- /dev/null +++ b/htdocs/install/mysql/migration/3.9.0-4.0.0.sql @@ -0,0 +1,25 @@ +-- +-- Be carefull to requests order. +-- This file must be loaded by calling /install/index.php page +-- when current version is 4.0.0 or higher. +-- +-- To rename a table: ALTER TABLE llx_table RENAME TO llx_table_new; +-- To add a column: ALTER TABLE llx_table ADD COLUMN newcol varchar(60) NOT NULL DEFAULT '0' AFTER existingcol; +-- To rename a column: ALTER TABLE llx_table CHANGE COLUMN oldname newname varchar(60); +-- To drop a column: ALTER TABLE llx_table DROP COLUMN oldname; +-- To change type of field: ALTER TABLE llx_table MODIFY COLUMN name varchar(60); +-- To drop a foreign key: ALTER TABLE llx_table DROP FOREIGN KEY fk_name; +-- To drop an index: -- VMYSQL4.0 DROP INDEX nomindex on llx_table +-- To drop an index: -- VPGSQL8.0 DROP INDEX nomindex +-- To restrict request to Mysql version x.y minimum use -- VMYSQLx.y +-- To restrict request to Pgsql version x.y minimum use -- VPGSQLx.y +-- To make pk to be auto increment (mysql): VMYSQL4.3 ALTER TABLE llx_c_shipment_mode CHANGE COLUMN rowid rowid INTEGER NOT NULL AUTO_INCREMENT; +-- To make pk to be auto increment (postgres): VPGSQL8.2 NOT POSSIBLE. MUST DELETE/CREATE TABLE +-- To set a field as NULL: VPGSQL8.2 ALTER TABLE llx_table ALTER COLUMN name DROP NOT NULL; +-- To set a field as default NULL: VPGSQL8.2 ALTER TABLE llx_table ALTER COLUMN name SET DEFAULT NULL; +-- Note: fields with type BLOB/TEXT can't have default value. +-- -- VPGSQL8.2 DELETE FROM llx_usergroup_user WHERE fk_user NOT IN (SELECT rowid from llx_user); +-- -- VMYSQL4.1 DELETE FROM llx_usergroup_user WHERE fk_usergroup NOT IN (SELECT rowid from llx_usergroup); + + +ALTER TABLE llx_accounting_bookkeeping ADD COLUMN validated tinyint DEFAULT 0 NOT NULL; diff --git a/htdocs/install/mysql/tables/llx_accounting_bookkeeping.sql b/htdocs/install/mysql/tables/llx_accounting_bookkeeping.sql index 660dd4745b3..dca4b70a5d5 100644 --- a/htdocs/install/mysql/tables/llx_accounting_bookkeeping.sql +++ b/htdocs/install/mysql/tables/llx_accounting_bookkeeping.sql @@ -35,5 +35,6 @@ CREATE TABLE llx_accounting_bookkeeping fk_user_author integer NOT NULL, import_key varchar(14), code_journal varchar(10) DEFAULT NULL, - piece_num integer NOT NULL + piece_num integer NOT NULL, + validated tinyint DEFAULT 0 NOT NULL -- 0 line not validated / 1 line validated (No deleting / No modification) ) ENGINE=innodb; -- GitLab From afe3e6ac27189705fe871f4bda35bb60e27cee69 Mon Sep 17 00:00:00 2001 From: BENKE Charlie <charles.fr@benke.fr> Date: Wed, 16 Dec 2015 12:38:32 +0100 Subject: [PATCH 190/197] fix ErrorBadValueForParamNotAString shit one again... --- htdocs/core/class/html.form.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 18580c4b6cc..a5643c26dc5 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -2017,8 +2017,8 @@ class Form { $dur=array("h"=>$langs->trans("Hour"),"d"=>$langs->trans("Day"),"w"=>$langs->trans("Week"),"m"=>$langs->trans("Month"),"y"=>$langs->trans("Year")); } - $opt.= ' - '.$duration_value.' '.$langs->trans($dur[$duration_unit]); - $outval.=' - '.$duration_value.' '.$langs->transnoentities($dur[$duration_unit]); + $opt.= ' - '.$duration_value.' '.($dur[$duration_unit]?$langs->trans($dur[$duration_unit]):''); + $outval.=' - '.$duration_value.' '.($dur[$duration_unit]?$langs->transnoentities($dur[$duration_unit]):''); } $opt.= "</option>\n"; -- GitLab From 3568b889bf571241ed2ec77ee3e025899b90c1e7 Mon Sep 17 00:00:00 2001 From: Francis Appels <francis.appels@yahoo.com> Date: Wed, 16 Dec 2015 15:42:24 +0100 Subject: [PATCH 191/197] Update list.php Fix page offset calculation --- htdocs/product/list.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/product/list.php b/htdocs/product/list.php index b656b88efc6..c09100bd198 100644 --- a/htdocs/product/list.php +++ b/htdocs/product/list.php @@ -61,7 +61,7 @@ $sortfield = GETPOST("sortfield",'alpha'); $sortorder = GETPOST("sortorder",'alpha'); $page = GETPOST("page",'int'); if ($page == -1) { $page = 0; } -$offset = $liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (! $sortfield) $sortfield="p.ref"; -- GitLab From 9e6698c6ca5283572790c55efb546447bf969956 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= <frederic.france@free.fr> Date: Wed, 16 Dec 2015 18:18:02 +0100 Subject: [PATCH 192/197] Update multiprix.php --- htdocs/comm/multiprix.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/htdocs/comm/multiprix.php b/htdocs/comm/multiprix.php index 645bdc580b4..fbaf00e53db 100644 --- a/htdocs/comm/multiprix.php +++ b/htdocs/comm/multiprix.php @@ -105,7 +105,10 @@ if ($_socid > 0) print '<option value="'.$i.'"' ; if($i == $objsoc->price_level) print 'selected'; - print '>'.$i.'</option>'; + print '>'.$i; + $keyforlabel='PRODUIT_MULTIPRICES_LABEL'.$i; + if (! empty($conf->global->$keyforlabel)) print ' - '.$langs->trans($conf->global->$keyforlabel); + print '</option>'; } print '</select>'; print '</td></tr>'; -- GitLab From f87ccc97e2221d5820e48ce9c87572dca2ea9108 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Wed, 16 Dec 2015 19:26:50 +0100 Subject: [PATCH 193/197] Miscellaneous fixes --- dev/skeletons/modMyModule.class.php | 6 +++++- htdocs/comm/propal/class/propal.class.php | 3 +-- htdocs/product/card.php | 8 +++++++- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/dev/skeletons/modMyModule.class.php b/dev/skeletons/modMyModule.class.php index a54aac470e5..ed8f8ed976e 100644 --- a/dev/skeletons/modMyModule.class.php +++ b/dev/skeletons/modMyModule.class.php @@ -166,7 +166,11 @@ class modMyModule extends DolibarrModules // Add here list of php file(s) stored in core/boxes that contains class to show a box. $this->boxes = array(); // List of boxes // Example: - //$this->boxes=array(array(0=>array('file'=>'myboxa.php','note'=>'','enabledbydefaulton'=>'Home'),1=>array('file'=>'myboxb.php','note'=>''),2=>array('file'=>'myboxc.php','note'=>''));); + //$this->boxes=array( + // 0=>array('file'=>'myboxa.php@mymodule','note'=>'','enabledbydefaulton'=>'Home'), + // 1=>array('file'=>'myboxb.php@mymodule','note'=>''), + // 2=>array('file'=>'myboxc.php@mymodule','note'=>'') + //); // Cronjobs $this->cronjobs = array(); // List of cron jobs entries to add diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php index 250687a5c02..cda28c80b37 100644 --- a/htdocs/comm/propal/class/propal.class.php +++ b/htdocs/comm/propal/class/propal.class.php @@ -2901,8 +2901,7 @@ class Propal extends CommonObject /** - * \class PropaleLigne - * \brief Class to manage commercial proposal lines + * Class to manage commercial proposal lines */ class PropaleLigne extends CommonObjectLine { diff --git a/htdocs/product/card.php b/htdocs/product/card.php index 77b14b24c7a..50a12726822 100644 --- a/htdocs/product/card.php +++ b/htdocs/product/card.php @@ -184,7 +184,13 @@ if (empty($reshook)) $action = "create"; $error++; } - + if (! empty(GETPOST('duration_value')) && empty(GETPOST('duration_unit'))) + { + setEventMessage($langs->trans('ErrorFieldRequired',$langs->transnoentities('Unit')), 'errors'); + $action = "create"; + $error++; + } + if (! $error) { $units = GETPOST('units', 'int'); -- GitLab From 9973315a07300c4830e37fe108f5f1ed861327fd Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Wed, 16 Dec 2015 19:38:40 +0100 Subject: [PATCH 194/197] Fix we muste have ($limit = $conf->liste_limite; $offset = $limit * $page) and not ($offset = $conf->liste_limite * $page). In a future $limit that could be overwrite from search post form. --- htdocs/accountancy/bookkeeping/list.php | 3 ++- htdocs/accountancy/bookkeeping/listbyyear.php | 3 ++- htdocs/comm/mailing/list.php | 3 ++- htdocs/commande/list.php | 4 ++-- htdocs/compta/deplacement/list.php | 4 ++-- htdocs/compta/facture/list.php | 4 ++-- htdocs/compta/paiement/cheque/list.php | 4 ++-- htdocs/compta/paiement/list.php | 4 ++-- htdocs/compta/ventilation/list.php | 4 ++-- htdocs/don/list.php | 4 ++-- htdocs/expedition/list.php | 5 ++--- htdocs/expensereport/list.php | 4 ++-- htdocs/fichinter/list.php | 4 ++-- htdocs/opensurvey/list.php | 5 ++--- htdocs/product/stock/mouvement.php | 3 ++- htdocs/public/members/public_list.php | 3 ++- htdocs/societe/price.php | 5 +++-- htdocs/supplier_proposal/list.php | 4 ++-- 18 files changed, 37 insertions(+), 33 deletions(-) diff --git a/htdocs/accountancy/bookkeeping/list.php b/htdocs/accountancy/bookkeeping/list.php index b6f412d5480..951a07d3171 100644 --- a/htdocs/accountancy/bookkeeping/list.php +++ b/htdocs/accountancy/bookkeeping/list.php @@ -44,13 +44,14 @@ $search_doc_ref = GETPOST("search_doc_ref"); $search_account = GETPOST("search_account"); $search_thirdparty = GETPOST("search_thirdparty"); $search_journal = GETPOST("search_journal"); +$limit = $conf->liste_limit; if ($sortorder == "") $sortorder = "ASC"; if ($sortfield == "") $sortfield = "bk.rowid"; -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $formventilation = new FormVentilation($db); $formother = new FormOther($db); diff --git a/htdocs/accountancy/bookkeeping/listbyyear.php b/htdocs/accountancy/bookkeeping/listbyyear.php index ce6d10f9730..fe185fd1118 100644 --- a/htdocs/accountancy/bookkeeping/listbyyear.php +++ b/htdocs/accountancy/bookkeeping/listbyyear.php @@ -36,6 +36,7 @@ $langs->load("accountancy"); $page = GETPOST("page"); $sortorder = GETPOST("sortorder"); $sortfield = GETPOST("sortfield"); +$limit = $conf->liste_limit; // Filter $year = GETPOST("year", 'int'); @@ -52,7 +53,7 @@ if ($sortorder == "") if ($sortfield == "") $sortfield = "bk.rowid"; -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; llxHeader('', $langs->trans("Bookkeeping")); diff --git a/htdocs/comm/mailing/list.php b/htdocs/comm/mailing/list.php index cc7bafa9f5d..20796db24f4 100644 --- a/htdocs/comm/mailing/list.php +++ b/htdocs/comm/mailing/list.php @@ -32,9 +32,10 @@ $result=restrictedArea($user,'mailing'); $sortfield = GETPOST("sortfield",'alpha'); $sortorder = GETPOST("sortorder",'alpha'); +$limit = $conf->liste_limit; $page = GETPOST("page",'int'); if ($page == -1) { $page = 0; } -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (! $sortorder) $sortorder="DESC"; diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php index b35aa1628f3..b7caa472425 100644 --- a/htdocs/commande/list.php +++ b/htdocs/commande/list.php @@ -67,13 +67,13 @@ $result = restrictedArea($user, 'commande', $id,''); $sortfield = GETPOST("sortfield",'alpha'); $sortorder = GETPOST("sortorder",'alpha'); $page = GETPOST("page",'int'); +$limit = $conf->liste_limit; if ($page == -1) { $page = 0; } -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (! $sortfield) $sortfield='c.rowid'; if (! $sortorder) $sortorder='DESC'; -$limit = $conf->liste_limit; $viewstatut=GETPOST('viewstatut'); diff --git a/htdocs/compta/deplacement/list.php b/htdocs/compta/deplacement/list.php index c3c5f7dd80b..7c849f67f50 100644 --- a/htdocs/compta/deplacement/list.php +++ b/htdocs/compta/deplacement/list.php @@ -46,13 +46,13 @@ $search_company=GETPOST('search_company','alpha'); $sortfield = GETPOST("sortfield",'alpha'); $sortorder = GETPOST("sortorder",'alpha'); $page = GETPOST("page",'int'); +$limit = $conf->liste_limit; if ($page == -1) { $page = 0; } -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (! $sortorder) $sortorder="DESC"; if (! $sortfield) $sortfield="d.dated"; -$limit = $conf->liste_limit; $year=GETPOST("year"); $month=GETPOST("month"); diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php index 707ad32eec7..0d0d1835732 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -77,14 +77,14 @@ if ($option == 'late') $filter = 'paye:0'; $sortfield = GETPOST("sortfield",'alpha'); $sortorder = GETPOST("sortorder",'alpha'); +$limit = $conf->liste_limit; $page = GETPOST("page",'int'); if ($page == -1) { $page = 0; } -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; if (! $sortorder) $sortorder='DESC'; if (! $sortfield) $sortfield='f.datef'; -$limit = $conf->liste_limit; $pageprev = $page - 1; $pagenext = $page + 1; diff --git a/htdocs/compta/paiement/cheque/list.php b/htdocs/compta/paiement/cheque/list.php index c322863efc1..f4451178e71 100644 --- a/htdocs/compta/paiement/cheque/list.php +++ b/htdocs/compta/paiement/cheque/list.php @@ -43,12 +43,12 @@ $search_account = GETPOST('search_account','int'); $search_amount = GETPOST('search_amount','alpha'); $sortfield = GETPOST("sortfield",'alpha'); $sortorder = GETPOST("sortorder",'alpha'); +$limit = $conf->liste_limit; $page = GETPOST("page",'int'); if ($page == -1) { $page = 0; } -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; -$limit = $conf->liste_limit; if (! $sortorder) $sortorder="DESC"; if (! $sortfield) $sortfield="dp"; diff --git a/htdocs/compta/paiement/list.php b/htdocs/compta/paiement/list.php index 6e3d31364ce..0a5c2cd1572 100644 --- a/htdocs/compta/paiement/list.php +++ b/htdocs/compta/paiement/list.php @@ -57,12 +57,12 @@ $search_amount=GETPOST("search_amount"); $search_company=GETPOST("search_company"); $sortfield = GETPOST("sortfield",'alpha'); $sortorder = GETPOST("sortorder",'alpha'); +$limit = $conf->liste_limit; $page = GETPOST("page",'int'); if ($page == -1) { $page = 0; } -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; -$limit = $conf->liste_limit; if (! $sortorder) $sortorder="DESC"; if (! $sortfield) $sortfield="p.rowid"; diff --git a/htdocs/compta/ventilation/list.php b/htdocs/compta/ventilation/list.php index 03a1b658cd2..264673049ad 100644 --- a/htdocs/compta/ventilation/list.php +++ b/htdocs/compta/ventilation/list.php @@ -47,12 +47,12 @@ llxHeader('','Ventilation'); $sortfield = GETPOST("sortfield",'alpha'); $sortorder = GETPOST("sortorder",'alpha'); +$limit = $conf->liste_limit; $page = GETPOST("page",'int'); if ($page == -1) { $page = 0; } -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; -$limit = $conf->liste_limit; $sql = "SELECT f.facnumber, f.rowid as facid, l.fk_product, l.description, f.total as price, l.rowid, l.fk_code_ventilation,"; $sql.= " p.rowid as product_id, p.ref as product_ref, p.label as product_label, p.fk_product_type as type"; diff --git a/htdocs/don/list.php b/htdocs/don/list.php index 0a91e59593d..9477e91837e 100644 --- a/htdocs/don/list.php +++ b/htdocs/don/list.php @@ -34,13 +34,13 @@ $langs->load("donations"); $sortfield = GETPOST("sortfield",'alpha'); $sortorder = GETPOST("sortorder",'alpha'); $page = GETPOST("page",'int'); +$limit = $conf->liste_limit; if ($page == -1) { $page = 0; } -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (! $sortorder) $sortorder="DESC"; if (! $sortfield) $sortfield="d.datedon"; -$limit = $conf->liste_limit; $statut=isset($_GET["statut"])?$_GET["statut"]:"-1"; $search_all=GETPOST('sall','alpha'); diff --git a/htdocs/expedition/list.php b/htdocs/expedition/list.php index 5339538901e..bee47fe25bd 100644 --- a/htdocs/expedition/list.php +++ b/htdocs/expedition/list.php @@ -43,15 +43,14 @@ $optioncss = GETPOST('optioncss','alpha'); $sortfield = GETPOST('sortfield','alpha'); $sortorder = GETPOST('sortorder','alpha'); $page = GETPOST('page','int'); +$limit = $conf->liste_limit; if ($page == -1) { $page = 0; } -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; -$limit = $conf->liste_limit; if (! $sortfield) $sortfield="e.ref"; if (! $sortorder) $sortorder="DESC"; -$limit = $conf->liste_limit; $viewstatut=GETPOST('viewstatut'); diff --git a/htdocs/expensereport/list.php b/htdocs/expensereport/list.php index 502125faf61..0d1dc22971a 100644 --- a/htdocs/expensereport/list.php +++ b/htdocs/expensereport/list.php @@ -93,15 +93,15 @@ $sortfield = GETPOST("sortfield"); $page = GETPOST("page"); if (!$sortorder) $sortorder="DESC"; if (!$sortfield) $sortfield="d.date_debut"; +$limit = $conf->liste_limit; if ($page == -1) { $page = 0 ; } -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; -$limit = $conf->liste_limit; $sql = "SELECT d.rowid, d.ref, d.fk_user_author, d.total_ht, d.total_tva, d.total_ttc, d.fk_statut as status,"; $sql.= " d.date_debut, d.date_fin,"; diff --git a/htdocs/fichinter/list.php b/htdocs/fichinter/list.php index 896d8c6a4fa..35224cb7780 100644 --- a/htdocs/fichinter/list.php +++ b/htdocs/fichinter/list.php @@ -44,9 +44,10 @@ $result = restrictedArea($user, 'ficheinter', $fichinterid,'fichinter'); $sortfield = GETPOST('sortfield','alpha'); $sortorder = GETPOST('sortorder','alpha'); +$limit = $conf->liste_limit; $page = GETPOST('page','int'); if ($page == -1) { $page = 0; } -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (! $sortorder) $sortorder="DESC"; @@ -55,7 +56,6 @@ if (! $sortfield) if (empty($conf->global->FICHINTER_DISABLE_DETAILS)) $sortfield="fd.date"; else $sortfield="f.ref"; } -$limit = $conf->liste_limit; $search_ref=GETPOST('search_ref')?GETPOST('search_ref','alpha'):GETPOST('search_inter','alpha'); $search_company=GETPOST('search_company','alpha'); diff --git a/htdocs/opensurvey/list.php b/htdocs/opensurvey/list.php index 4844d9f8e59..fe73419c98b 100644 --- a/htdocs/opensurvey/list.php +++ b/htdocs/opensurvey/list.php @@ -38,9 +38,10 @@ $status=GETPOST('status'); $sortfield = GETPOST("sortfield",'alpha'); $sortorder = GETPOST("sortorder",'alpha'); +$limit = $conf->liste_limit; $page = GETPOST("page",'int'); if ($page == -1) { $page = 0; } -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (! $sortfield) $sortfield="p.date_fin"; @@ -48,8 +49,6 @@ if (! $sortorder) $sortorder="DESC"; if ($page < 0) { $page = 0; } -$limit = $conf->liste_limit; -$offset = $limit * $page; $langs->load("opensurvey"); diff --git a/htdocs/product/stock/mouvement.php b/htdocs/product/stock/mouvement.php index c04766ab59f..fbb80551fad 100644 --- a/htdocs/product/stock/mouvement.php +++ b/htdocs/product/stock/mouvement.php @@ -54,11 +54,12 @@ $search_warehouse = trim(GETPOST("search_warehouse")); $search_inventorycode = trim(GETPOST("search_inventorycode")); $search_user = trim(GETPOST("search_user")); $search_batch = trim(GETPOST("search_batch")); +$limit = $conf->liste_limit; $page = GETPOST("page",'int'); $sortfield = GETPOST("sortfield",'alpha'); $sortorder = GETPOST("sortorder",'alpha'); if ($page < 0) $page = 0; -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; if (! $sortfield) $sortfield="m.datem"; if (! $sortorder) $sortorder="DESC"; diff --git a/htdocs/public/members/public_list.php b/htdocs/public/members/public_list.php index ea2b70c2447..d96d238c41b 100644 --- a/htdocs/public/members/public_list.php +++ b/htdocs/public/members/public_list.php @@ -81,9 +81,10 @@ function llxFooterVierge() $sortfield = GETPOST("sortfield",'alpha'); $sortorder = GETPOST("sortorder",'alpha'); +$limit = $conf->liste_limit; $page = GETPOST("page",'int'); if ($page == -1) { $page = 0; } -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; diff --git a/htdocs/societe/price.php b/htdocs/societe/price.php index 64ac2fbb256..6341f1dd37e 100644 --- a/htdocs/societe/price.php +++ b/htdocs/societe/price.php @@ -181,11 +181,12 @@ if (! empty($conf->global->PRODUIT_CUSTOMER_PRICES)) { $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); + $limit = $conf->liste_limit; $page = GETPOST("page", 'int'); if ($page == - 1) { $page = 0; } - $offset = $conf->liste_limit * $page; + $offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (! $sortorder) @@ -200,7 +201,7 @@ if (! empty($conf->global->PRODUIT_CUSTOMER_PRICES)) { $search_soc = GETPOST('search_soc'); if (! empty($search_soc)) { - $filter ['soc.nom'] = $search_soc; + $filter['soc.nom'] = $search_soc; } if ($action == 'add_customer_price') { diff --git a/htdocs/supplier_proposal/list.php b/htdocs/supplier_proposal/list.php index 6aad541c1f9..1df4b49b56a 100644 --- a/htdocs/supplier_proposal/list.php +++ b/htdocs/supplier_proposal/list.php @@ -139,15 +139,15 @@ $now=dol_now(); $sortfield = GETPOST("sortfield",'alpha'); $sortorder = GETPOST("sortorder",'alpha'); +$limit = $conf->liste_limit; $page = GETPOST("page",'int'); if ($page == -1) { $page = 0; } -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (! $sortfield) $sortfield='p.date_livraison'; if (! $sortorder) $sortorder='DESC'; -$limit = $conf->liste_limit; $sql = 'SELECT s.rowid, s.nom as name, s.town, s.client, s.code_client,'; -- GitLab From ba3c8de7858a68132d9d3984e4e0db89655cd772 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Thu, 17 Dec 2015 14:01:22 +0100 Subject: [PATCH 195/197] Update doc comment to make things cleaner to avoid confusion between old deprecated doActions of canvas and doActions of triggers. --- dev/skeletons/skeleton_card.php | 2 +- dev/skeletons/skeleton_list.php | 2 +- .../actions_adherentcard_common.class.php | 3 +- .../actions_contactcard_common.class.php | 3 +- htdocs/contact/list.php | 11 ++- htdocs/core/class/canvas.class.php | 7 +- .../resource/class/actions_resource.class.php | 86 ------------------- .../canvas/actions_card_common.class.php | 3 +- .../company/actions_card_company.class.php | 3 +- .../actions_card_individual.class.php | 1 + 10 files changed, 25 insertions(+), 96 deletions(-) delete mode 100644 htdocs/resource/class/actions_resource.class.php diff --git a/dev/skeletons/skeleton_card.php b/dev/skeletons/skeleton_card.php index 7f0ff1fc7d4..03f70955527 100644 --- a/dev/skeletons/skeleton_card.php +++ b/dev/skeletons/skeleton_card.php @@ -88,7 +88,7 @@ $extrafields = new ExtraFields($db); ********************************************************************/ $parameters=array(); -$reshook=$hookmanager->executeHooks('doActions',$parameters); // Note that $action and $object may have been modified by some hooks +$reshook=$hookmanager->executeHooks('doActions',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); if (empty($reshook)) diff --git a/dev/skeletons/skeleton_list.php b/dev/skeletons/skeleton_list.php index dec170ae169..834e0b07e2f 100644 --- a/dev/skeletons/skeleton_list.php +++ b/dev/skeletons/skeleton_list.php @@ -124,7 +124,7 @@ if (is_array($extrafields->attribute_label) && count($extrafields->attribute_lab ********************************************************************/ $parameters=array(); -$reshook=$hookmanager->executeHooks('doActions',$parameters); // Note that $action and $object may have been modified by some hooks +$reshook=$hookmanager->executeHooks('doActions',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); include DOL_DOCUMENT_ROOT.'/core/actions_changeselectedfields.inc.php'; diff --git a/htdocs/adherents/canvas/actions_adherentcard_common.class.php b/htdocs/adherents/canvas/actions_adherentcard_common.class.php index 06574f7ae10..8d629175902 100644 --- a/htdocs/adherents/canvas/actions_adherentcard_common.class.php +++ b/htdocs/adherents/canvas/actions_adherentcard_common.class.php @@ -98,7 +98,8 @@ abstract class ActionsAdherentCardCommon } /** - * Load data control + * doActions of a canvas is not the doActions of the hook + * @deprecated Use the doActions of hooks instead of this. * * @param string $action Type of action * @param int $id Id of object diff --git a/htdocs/contact/canvas/actions_contactcard_common.class.php b/htdocs/contact/canvas/actions_contactcard_common.class.php index 7e43270a32c..3d6b792d99b 100644 --- a/htdocs/contact/canvas/actions_contactcard_common.class.php +++ b/htdocs/contact/canvas/actions_contactcard_common.class.php @@ -94,7 +94,8 @@ abstract class ActionsContactCardCommon } /** - * Load data control + * doActions of a canvas is not the doActions of the hook + * @deprecated Use the doActions of hooks instead of this. * * @param string $action Type of action * @param int $id Id of object diff --git a/htdocs/contact/list.php b/htdocs/contact/list.php index dc2734b28a1..ac7411b49c3 100644 --- a/htdocs/contact/list.php +++ b/htdocs/contact/list.php @@ -36,7 +36,9 @@ $langs->load("companies"); $langs->load("suppliers"); // Security check +$id = GETPOST('id','int'); $contactid = GETPOST('id','int'); +$ref = ''; // There is no ref for contacts if ($user->societe_id) $socid=$user->societe_id; $result = restrictedArea($user, 'contact', $contactid,''); @@ -150,13 +152,20 @@ if (is_array($extrafields->attribute_label) && count($extrafields->attribute_lab } } +$object=new Contact($db); +if (($id > 0 || ! empty($ref)) && $action != 'add') +{ + $result=$object->fetch($id,$ref); + if ($result < 0) dol_print_error($db); +} + /* * Actions */ $parameters=array(); -$reshook=$hookmanager->executeHooks('doActions',$parameters); // Note that $action and $object may have been modified by some hooks +$reshook=$hookmanager->executeHooks('doActions',$parameters, $object, $action); // Note that $action and $object may have been modified by some hooks if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); include DOL_DOCUMENT_ROOT.'/core/actions_changeselectedfields.inc.php'; diff --git a/htdocs/core/class/canvas.class.php b/htdocs/core/class/canvas.class.php index a8bb07e6ec6..6851c124743 100644 --- a/htdocs/core/class/canvas.class.php +++ b/htdocs/core/class/canvas.class.php @@ -179,13 +179,14 @@ class Canvas } /** - * Shared method for canvas to execute actions + * Shared method for canvas to execute actions. + * @deprecated Use the doActions of hooks instead of this. + * This function is called if you add a doActions class inside your canvas. Try to not + * do that and add action code into a hook instead. * * @param string $action Action string * @param int $id Object id * @return mixed Return return code of doActions of canvas - * @deprecated This function is called if you add a doActions class inside your canvas. Try to not - * do that and add action code into a hook instead. * @see http://wiki.dolibarr.org/index.php/Canvas_development */ function doActions(&$action='view', $id=0) diff --git a/htdocs/resource/class/actions_resource.class.php b/htdocs/resource/class/actions_resource.class.php deleted file mode 100644 index f8f0b5412f9..00000000000 --- a/htdocs/resource/class/actions_resource.class.php +++ /dev/null @@ -1,86 +0,0 @@ -<?php -/* Copyright (C) 2013 Jean-François FERRY <jfefe@aternatik.fr> - * -* 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 3 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, see <http://www.gnu.org/licenses/>. -*/ - -/** - * \file resource/class/actions_resource.class.php - * \brief Place module actions - */ - -/** - * Actions class file for resources - * - * TODO Remove this class and replace a method into commonobject - */ -class ActionsResource -{ - - var $db; - var $error; - var $errors=array(); - - /** - * Constructor - * - * @param DoliDB $db Database handler - */ - function __construct($db) - { - $this->db = $db; - } - - /** - * doActions for resource module - * - * @param array $parameters parameters - * @param Object $object object - * @param string $action action - * @return void - */ - /* Why a hook action ? TODO Remove this class and replace a method into commonobject - function doActions($parameters, &$object, &$action) - { - global $langs,$user; - $langs->load('resource'); - - if (in_array('resource_card',explode(':',$parameters['context']))) - { - if($action == 'confirm_delete_resource' && !GETPOST('cancel')) - { - $res = $object->fetch(GETPOST('id')); - if($res) - { - - $result = $object->delete(GETPOST('id')); - - if ($result >= 0) - { - setEventMessage($langs->trans('RessourceSuccessfullyDeleted')); - Header("Location: list.php"); - exit; - } - else { - setEventMessage($object->error,'errors'); - } - } - else - { - setEventMessage($object->error,'errors'); - } - } - } - }*/ -} diff --git a/htdocs/societe/canvas/actions_card_common.class.php b/htdocs/societe/canvas/actions_card_common.class.php index 0dd71b42baa..782a7f070c4 100644 --- a/htdocs/societe/canvas/actions_card_common.class.php +++ b/htdocs/societe/canvas/actions_card_common.class.php @@ -89,7 +89,8 @@ abstract class ActionsCardCommon } /** - * Load data control + * doActions of a canvas is not the doActions of the hook + * @deprecated Use the doActions of hooks instead of this. * * @param int $action Action code * @return void diff --git a/htdocs/societe/canvas/company/actions_card_company.class.php b/htdocs/societe/canvas/company/actions_card_company.class.php index c7ed03080f6..19f9a2fbdb8 100644 --- a/htdocs/societe/canvas/company/actions_card_company.class.php +++ b/htdocs/societe/canvas/company/actions_card_company.class.php @@ -68,7 +68,8 @@ class ActionsCardCompany extends ActionsCardCommon /** - * Execute actions + * doActions of a canvas is not the doActions of the hook + * @deprecated Use the doActions of hooks instead of this. * * @param string $action Type of action * @param int $id Id of object diff --git a/htdocs/societe/canvas/individual/actions_card_individual.class.php b/htdocs/societe/canvas/individual/actions_card_individual.class.php index f38d0d034ef..78064004e37 100644 --- a/htdocs/societe/canvas/individual/actions_card_individual.class.php +++ b/htdocs/societe/canvas/individual/actions_card_individual.class.php @@ -69,6 +69,7 @@ class ActionsCardIndividual extends ActionsCardCommon /** * Execute actions + * @deprecated Use the doActions of hooks instead of this. * * @param string $action Action * @param int $id Id of object (may be empty for creation) -- GitLab From 5eea1ce7d99f554f036d4f6ade4535ff35632dca Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Thu, 17 Dec 2015 19:37:24 +0100 Subject: [PATCH 196/197] Fix several warnings --- htdocs/admin/limits.php | 18 ++++++------ htdocs/cashdesk/class/Facturation.class.php | 4 +-- htdocs/commande/class/commande.class.php | 2 +- .../facture/class/facture-rec.class.php | 4 ++- htdocs/compta/facture/class/facture.class.php | 8 ++++-- htdocs/expedition/class/expedition.class.php | 4 +-- htdocs/expensereport/card.php | 3 +- htdocs/install/upgrade2.php | 28 +++++++++++++------ htdocs/product/card.php | 2 +- .../class/supplier_proposal.class.php | 4 +-- 10 files changed, 47 insertions(+), 30 deletions(-) diff --git a/htdocs/admin/limits.php b/htdocs/admin/limits.php index 823866f8ce6..66c1ae1ce56 100644 --- a/htdocs/admin/limits.php +++ b/htdocs/admin/limits.php @@ -180,21 +180,21 @@ else // Always show vat rates with vat 0 $s=2/7;$qty=1;$vat=0; - $tmparray=calcul_price_total(1,$qty*price2num($s,'MU'),0,$vat,0,0,0,'HT',0,0); + $tmparray=calcul_price_total(1,$qty*price2num($s,'MU'),0,$vat,0,0,0,'HT',0,0,$mysoc); print $langs->trans("UnitPriceOfProduct").": ".price2num($s,'MU'); print " x ".$langs->trans("Quantity").": ".$qty; print " - ".$langs->trans("VAT").": ".$vat.'%'; print " -> ".$langs->trans("TotalPriceAfterRounding").": ".$tmparray[0].' / '.$tmparray[1].' / '.$tmparray[2]."<br>\n"; $s=10/3;$qty=1;$vat=0; - $tmparray=calcul_price_total(1,$qty*price2num($s,'MU'),0,$vat,0,0,0,'HT',0,0); + $tmparray=calcul_price_total(1,$qty*price2num($s,'MU'),0,$vat,0,0,0,'HT',0,0,$mysoc); print $langs->trans("UnitPriceOfProduct").": ".price2num($s,'MU'); print " x ".$langs->trans("Quantity").": ".$qty; print " - ".$langs->trans("VAT").": ".$vat.'%'; print " -> ".$langs->trans("TotalPriceAfterRounding").": ".$tmparray[0].' / '.$tmparray[1].' / '.$tmparray[2]."<br>\n"; $s=10/3;$qty=2;$vat=0; - $tmparray=calcul_price_total(1,$qty*price2num($s,'MU'),0,$vat,0,0,0,'HT',0, 0); + $tmparray=calcul_price_total(1,$qty*price2num($s,'MU'),0,$vat,0,0,0,'HT',0, 0,$mysoc); print $langs->trans("UnitPriceOfProduct").": ".price2num($s,'MU'); print " x ".$langs->trans("Quantity").": ".$qty; print " - ".$langs->trans("VAT").": ".$vat.'%'; @@ -230,7 +230,7 @@ else for ($qty=1; $qty<=2; $qty++) { $s=10/3; - $tmparray=calcul_price_total(1,$qty*price2num($s,'MU'),0,$vat,0,0,0,'HT',0, 0); + $tmparray=calcul_price_total(1,$qty*price2num($s,'MU'),0,$vat,0,0,0,'HT',0, 0,$mysoc); print $langs->trans("UnitPriceOfProduct").": ".price2num($s,'MU'); print " x ".$langs->trans("Quantity").": ".$qty; print " - ".$langs->trans("VAT").": ".$vat.'%'; @@ -245,14 +245,14 @@ else // were calculated to show all possible cases of rounding. If we change this, examples becomes useless or show the same rounding rule. $s=10/3;$qty=1;$vat=10; - $tmparray=calcul_price_total(1,$qty*price2num($s,'MU'),0,$vat,0,0,0,'HT',0, 0); + $tmparray=calcul_price_total(1,$qty*price2num($s,'MU'),0,$vat,0,0,0,'HT',0, 0,$mysoc); print $langs->trans("UnitPriceOfProduct").": ".price2num($s,'MU'); print " x ".$langs->trans("Quantity").": ".$qty; print " - ".$langs->trans("VAT").": ".$vat.'%'; print " -> ".$langs->trans("TotalPriceAfterRounding").": ".$tmparray[0].' / '.$tmparray[1].' / '.$tmparray[2]."<br>\n"; $s=10/3;$qty=2;$vat=10; - $tmparray=calcul_price_total(1,$qty*price2num($s,'MU'),0,$vat,0,0,0,'HT',0, 0); + $tmparray=calcul_price_total(1,$qty*price2num($s,'MU'),0,$vat,0,0,0,'HT',0, 0,$mysoc); print $langs->trans("UnitPriceOfProduct").": ".price2num($s,'MU'); print " x ".$langs->trans("Quantity").": ".$qty; print " - ".$langs->trans("VAT").": ".$vat.'%'; @@ -272,8 +272,8 @@ else $s2=2/7; // Round by line - $tmparray1=calcul_price_total(1,$qty*price2num($s1,'MU'),0,$vat,0,0,0,'HT',0, 0); - $tmparray2=calcul_price_total(1,$qty*price2num($s2,'MU'),0,$vat,0,0,0,'HT',0, 0); + $tmparray1=calcul_price_total(1,$qty*price2num($s1,'MU'),0,$vat,0,0,0,'HT',0, 0,$mysoc); + $tmparray2=calcul_price_total(1,$qty*price2num($s2,'MU'),0,$vat,0,0,0,'HT',0, 0,$mysoc); $total_ht = $tmparray1[0] + $tmparray2[0]; $total_tva = $tmparray1[1] + $tmparray2[1]; $total_ttc = $tmparray1[2] + $tmparray2[2]; @@ -296,7 +296,7 @@ else // Global round $subtotal_ht = (($qty*price2num($s1,'MU')) + ($qty*price2num($s2,'MU'))); - $tmparray3=calcul_price_total(1,$subtotal_ht,0,$vat,0,0,0,'HT',0, 0); + $tmparray3=calcul_price_total(1,$subtotal_ht,0,$vat,0,0,0,'HT',0, 0,$mysoc); $total_ht = $tmparray3[0]; $total_tva = $tmparray3[1]; $total_ttc = $tmparray3[2]; diff --git a/htdocs/cashdesk/class/Facturation.class.php b/htdocs/cashdesk/class/Facturation.class.php index 296ced0f172..fd67bf9e2ae 100644 --- a/htdocs/cashdesk/class/Facturation.class.php +++ b/htdocs/cashdesk/class/Facturation.class.php @@ -89,7 +89,7 @@ class Facturation */ public function ajoutArticle() { - global $conf,$db; + global $conf,$db,$mysoc; $thirdpartyid = $_SESSION['CASHDESK_ID_THIRDPARTY']; @@ -118,7 +118,7 @@ class Facturation } // Define part of HT, VAT, TTC - $resultarray=calcul_price_total($this->qte,$this->prix(),$this->remisePercent(),$vat_rate,0,0,0,'HT',0,$product->type,0); + $resultarray=calcul_price_total($this->qte,$this->prix(),$this->remisePercent(),$vat_rate,0,0,0,'HT',0,$product->type,$mysoc); // Calcul du total ht sans remise $total_ht = $resultarray[0]; diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index 8176d1f3c63..de32e30c5e6 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -1222,7 +1222,7 @@ class Commande extends CommonOrder $localtaxes_type=getLocalTaxesFromRate($txtva,0,$this->thirdparty,$mysoc); $txtva = preg_replace('/\s*\(.*\)/','',$txtva); // Remove code into vatrate. - $tabprice = calcul_price_total($qty, $pu, $remise_percent, $txtva, $txlocaltax1, $txlocaltax2, 0, $price_base_type, $info_bits, $product_type,'', $localtaxes_type); + $tabprice = calcul_price_total($qty, $pu, $remise_percent, $txtva, $txlocaltax1, $txlocaltax2, 0, $price_base_type, $info_bits, $product_type, $mysoc, $localtaxes_type); $total_ht = $tabprice[0]; $total_tva = $tabprice[1]; $total_ttc = $tabprice[2]; diff --git a/htdocs/compta/facture/class/facture-rec.class.php b/htdocs/compta/facture/class/facture-rec.class.php index 204092b257a..35238d71a2f 100644 --- a/htdocs/compta/facture/class/facture-rec.class.php +++ b/htdocs/compta/facture/class/facture-rec.class.php @@ -405,6 +405,8 @@ class FactureRec extends Facture */ function addline($desc, $pu_ht, $qty, $txtva, $fk_product=0, $remise_percent=0, $price_base_type='HT', $info_bits=0, $fk_remise_except='', $pu_ttc=0, $type=0, $rang=-1, $special_code=0, $label='', $fk_unit=null) { + global $mysoc; + $facid=$this->id; dol_syslog("FactureRec::addline facid=$facid,desc=$desc,pu_ht=$pu_ht,qty=$qty,txtva=$txtva,fk_product=$fk_product,remise_percent=$remise_percent,date_start=$date_start,date_end=$date_end,ventil=$ventil,info_bits=$info_bits,fk_remise_except=$fk_remise_except,price_base_type=$price_base_type,pu_ttc=$pu_ttc,type=$type,fk_unit=$fk_unit", LOG_DEBUG); @@ -437,7 +439,7 @@ class FactureRec extends Facture // qty, pu, remise_percent et txtva // TRES IMPORTANT: C'est au moment de l'insertion ligne qu'on doit stocker // la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva. - $tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, 0, 0, 0, $price_base_type, $info_bits, $type); + $tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, 0, 0, 0, $price_base_type, $info_bits, $type, $mysoc); $total_ht = $tabprice[0]; $total_tva = $tabprice[1]; $total_ttc = $tabprice[2]; diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index b58d2052b99..60f931ba90c 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -2401,18 +2401,20 @@ class Facture extends CommonInvoice /** * Update invoice line with percentage * - * @param FactureLigne $line Invoice line - * @param int $percent Percentage + * @param FactureLigne $line Invoice line + * @param int $percent Percentage * @return void */ function update_percent($line, $percent) { + global $mysoc; + include_once(DOL_DOCUMENT_ROOT . '/core/lib/price.lib.php'); // Cap percentages to 100 if ($percent > 100) $percent = 100; $line->situation_percent = $percent; - $tabprice = calcul_price_total($line->qty, $line->subprice, $line->remise_percent, $line->tva_tx, $line->localtax1_tx, $line->localtax2_tx, $line->product_type, 'HT', 0, 0, '', '', $percent); + $tabprice = calcul_price_total($line->qty, $line->subprice, $line->remise_percent, $line->tva_tx, $line->localtax1_tx, $line->localtax2_tx, $line->product_type, 'HT', 0, 0, $mysoc, '', $percent); $line->total_ht = $tabprice[0]; $line->total_tva = $tabprice[1]; $line->total_ttc = $tabprice[2]; diff --git a/htdocs/expedition/class/expedition.class.php b/htdocs/expedition/class/expedition.class.php index 08b53bf9e25..2513de4caaa 100644 --- a/htdocs/expedition/class/expedition.class.php +++ b/htdocs/expedition/class/expedition.class.php @@ -1181,7 +1181,7 @@ class Expedition extends CommonObject */ function fetch_lines() { - global $conf; + global $conf, $mysoc; // TODO: recuperer les champs du document associe a part $sql = "SELECT cd.rowid, cd.fk_product, cd.label as custom_label, cd.description, cd.qty as qty_asked"; @@ -1257,7 +1257,7 @@ class Expedition extends CommonObject $line->volume_units = $obj->volume_units; // For invoicing - $tabprice = calcul_price_total($obj->qty_shipped, $obj->subprice, $obj->remise_percent, $obj->tva_tx, $obj->localtax1_tx, $obj->localtax2_tx, 0, 'HT', $obj->info_bits, $obj->fk_product_type); // We force type to 0 + $tabprice = calcul_price_total($obj->qty_shipped, $obj->subprice, $obj->remise_percent, $obj->tva_tx, $obj->localtax1_tx, $obj->localtax2_tx, 0, 'HT', $obj->info_bits, $obj->fk_product_type, $mysoc); // We force type to 0 $line->desc = $obj->description; // We need ->desc because some code into CommonObject use desc (property defined for other elements) $line->qty = $line->qty_shipped; $line->total_ht = $tabprice[0]; diff --git a/htdocs/expensereport/card.php b/htdocs/expensereport/card.php index aa36b690619..30642ad09c5 100644 --- a/htdocs/expensereport/card.php +++ b/htdocs/expensereport/card.php @@ -886,7 +886,8 @@ if ($action == "addline") $object_ligne->fk_expensereport = $_POST['fk_expensereport']; $type = 0; // TODO What if service ? - $tmp = calcul_price_total($qty, $up, 0, $vatrate, 0, 0, 0, 'TTC', 0, $type); + $seller = ''; // seller is unknown + $tmp = calcul_price_total($qty, $up, 0, $vatrate, 0, 0, 0, 'TTC', 0, $type, $seller); $object_ligne->vatrate = price2num($vatrate); $object_ligne->total_ttc = $tmp[2]; diff --git a/htdocs/install/upgrade2.php b/htdocs/install/upgrade2.php index a5d43a0d95e..8729dedc0a5 100644 --- a/htdocs/install/upgrade2.php +++ b/htdocs/install/upgrade2.php @@ -1292,7 +1292,10 @@ function migrate_paiementfourn_facturefourn($db,$langs,$conf) function migrate_price_facture($db,$langs,$conf) { $err=0; - + + $tmpmysoc=new Societe($db); + $tmpmysoc->setMysoc($conf); + $db->begin(); print '<tr><td colspan="4">'; @@ -1333,7 +1336,7 @@ function migrate_price_facture($db,$langs,$conf) $facligne= new FactureLigne($db); $facligne->fetch($rowid); - $result=calcul_price_total($qty,$pu,$remise_percent,$vatrate, 0, 0,$remise_percent_global,'HT',$info_bits,0); + $result=calcul_price_total($qty,$pu,$remise_percent,$vatrate, 0, 0,$remise_percent_global,'HT',$info_bits,$facligne->product_type,$tmpmysoc); $total_ht = $result[0]; $total_tva = $result[1]; $total_ttc = $result[2]; @@ -1407,6 +1410,9 @@ function migrate_price_facture($db,$langs,$conf) */ function migrate_price_propal($db,$langs,$conf) { + $tmpmysoc=new Societe($db); + $tmpmysoc->setMysoc($conf); + $db->begin(); print '<tr><td colspan="4">'; @@ -1445,7 +1451,7 @@ function migrate_price_propal($db,$langs,$conf) $propalligne= new PropaleLigne($db); $propalligne->fetch($rowid); - $result=calcul_price_total($qty,$pu,$remise_percent,$vatrate,0,0,$remise_percent_global,'HT',$info_bits,0); + $result=calcul_price_total($qty,$pu,$remise_percent,$vatrate,0,0,$remise_percent_global,'HT',$info_bits,$propalligne->product_type,$tmpmysoc); $total_ht = $result[0]; $total_tva = $result[1]; $total_ttc = $result[2]; @@ -1552,9 +1558,9 @@ function migrate_price_contrat($db,$langs,$conf) // On met a jour les 3 nouveaux champs $contratligne= new ContratLigne($db); //$contratligne->fetch($rowid); Non requis car le update_total ne met a jour que chp redefinis - $contratligne->id=$rowid; + $contratligne->fetch($rowid); - $result=calcul_price_total($qty,$pu,$remise_percent,$vatrate,0,0,0,'HT',$info_bits,0,$tmpmysoc); + $result=calcul_price_total($qty,$pu,$remise_percent,$vatrate,0,0,0,'HT',$info_bits,$contratligne->product_type,$tmpmysoc); $total_ht = $result[0]; $total_tva = $result[1]; $total_ttc = $result[2]; @@ -1603,6 +1609,9 @@ function migrate_price_commande($db,$langs,$conf) { $db->begin(); + $tmpmysoc=new Societe($db); + $tmpmysoc->setMysoc($conf); + print '<tr><td colspan="4">'; print '<br>'; @@ -1639,7 +1648,7 @@ function migrate_price_commande($db,$langs,$conf) $commandeligne= new OrderLine($db); $commandeligne->fetch($rowid); - $result=calcul_price_total($qty,$pu,$remise_percent,$vatrate,0,0,$remise_percent_global,'HT',$info_bits,0); + $result=calcul_price_total($qty,$pu,$remise_percent,$vatrate,0,0,$remise_percent_global,'HT',$info_bits,$commandeligne->product_type,$tmpmysoc); $total_ht = $result[0]; $total_tva = $result[1]; $total_ttc = $result[2]; @@ -1716,7 +1725,10 @@ function migrate_price_commande($db,$langs,$conf) function migrate_price_commande_fournisseur($db,$langs,$conf) { $db->begin(); - + + $tmpmysoc=new Societe($db); + $tmpmysoc->setMysoc($conf); + print '<tr><td colspan="4">'; print '<br>'; @@ -1753,7 +1765,7 @@ function migrate_price_commande_fournisseur($db,$langs,$conf) $commandeligne= new CommandeFournisseurLigne($db); $commandeligne->fetch($rowid); - $result=calcul_price_total($qty,$pu,$remise_percent,$vatrate,0,0,$remise_percent_global,'HT',$info_bits,0); + $result=calcul_price_total($qty,$pu,$remise_percent,$vatrate,0,0,$remise_percent_global,'HT',$info_bits,$commandeligne->product_type,$tmpsoc); $total_ht = $result[0]; $total_tva = $result[1]; $total_ttc = $result[2]; diff --git a/htdocs/product/card.php b/htdocs/product/card.php index bdb19e39a6d..33a84719ba7 100644 --- a/htdocs/product/card.php +++ b/htdocs/product/card.php @@ -184,7 +184,7 @@ if (empty($reshook)) $action = "create"; $error++; } - if (! empty(GETPOST('duration_value')) && empty(GETPOST('duration_unit'))) + if (GETPOST('duration_value') && ! GETPOST('duration_unit')) { setEventMessage($langs->trans('ErrorFieldRequired',$langs->transnoentities('Unit')), 'errors'); $action = "create"; diff --git a/htdocs/supplier_proposal/class/supplier_proposal.class.php b/htdocs/supplier_proposal/class/supplier_proposal.class.php index 799a94a4104..54a578a1e61 100644 --- a/htdocs/supplier_proposal/class/supplier_proposal.class.php +++ b/htdocs/supplier_proposal/class/supplier_proposal.class.php @@ -371,7 +371,7 @@ class SupplierProposal extends CommonObject $localtaxes_type=getLocalTaxesFromRate($txtva,0,$this->thirdparty,$mysoc); $txtva = preg_replace('/\s*\(.*\)/','',$txtva); // Remove code into vatrate. - $tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, $txlocaltax1, $txlocaltax2, 0, $price_base_type, $info_bits, $type, '', $localtaxes_type); + $tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, $txlocaltax1, $txlocaltax2, 0, $price_base_type, $info_bits, $type, $this->thirdparty, $localtaxes_type); $total_ht = $tabprice[0]; $total_tva = $tabprice[1]; $total_ttc = $tabprice[2]; @@ -531,7 +531,7 @@ class SupplierProposal extends CommonObject $localtaxes_type=getLocalTaxesFromRate($txtva,0,$this->thirdparty,$mysoc); $txtva = preg_replace('/\s*\(.*\)/','',$txtva); // Remove code into vatrate. - $tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, $txlocaltax1, $txlocaltax2, 0, $price_base_type, $info_bits, $type,'', $localtaxes_type); + $tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, $txlocaltax1, $txlocaltax2, 0, $price_base_type, $info_bits, $type, $this->thirdparty, $localtaxes_type); $total_ht = $tabprice[0]; $total_tva = $tabprice[1]; $total_ttc = $tabprice[2]; -- GitLab From b10f9d4ca30b802a22e0b6a304f0f3cc859687fe Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Thu, 17 Dec 2015 20:40:33 +0100 Subject: [PATCH 197/197] Fix: when doing an export of extrafields, we must use different table alias for each extrafield table. --- htdocs/core/extrafieldsinexport.inc.php | 50 +++++++++++++ htdocs/core/modules/modCommande.class.php | 47 +++--------- htdocs/core/modules/modFacture.class.php | 90 +++-------------------- htdocs/core/modules/modPropale.class.php | 47 +++--------- htdocs/langs/en_US/products.lang | 2 +- 5 files changed, 79 insertions(+), 157 deletions(-) create mode 100644 htdocs/core/extrafieldsinexport.inc.php diff --git a/htdocs/core/extrafieldsinexport.inc.php b/htdocs/core/extrafieldsinexport.inc.php new file mode 100644 index 00000000000..1a608f6bc2e --- /dev/null +++ b/htdocs/core/extrafieldsinexport.inc.php @@ -0,0 +1,50 @@ +<?php + +if (empty($keyforselect) || empty($keyforelement) || empty($keyforaliasextra)) +{ + //print $keyforselet.' - '.$keyforelement.' - '.$keyforaliasextra; + dol_print_error('', 'include of file extrafieldsinexport.inc.php was done but var $keyforselect or $keyforelement or $keyforaliasextra was not set'); + exit; +} + +// Add extra fields +$sql="SELECT name, label, type, param FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = '".$keyforselect."' AND entity IN (0, ".$conf->entity.')'; +//print $sql; +$resql=$this->db->query($sql); +if ($resql) // This can fail when class is used on old database (during migration for example) +{ + while ($obj=$this->db->fetch_object($resql)) + { + $fieldname=$keyforaliasextra.'.'.$obj->name; + $fieldlabel=ucfirst($obj->label); + $typeFilter="Text"; + switch($obj->type) + { + case 'int': + case 'double': + case 'price': + $typeFilter="Numeric"; + break; + case 'date': + case 'datetime': + $typeFilter="Date"; + break; + case 'boolean': + $typeFilter="Boolean"; + break; + case 'sellist': + $tmp=''; + $tmpparam=unserialize($obj->param); // $tmp ay be array 'options' => array 'c_currencies:code_iso:code_iso' => null + if ($tmpparam['options'] && is_array($tmpparam['options'])) { + $tmpkeys=array_keys($tmpparam['options']); + $tmp=array_shift($tmpkeys); + } + if (preg_match('/[a-z0-9_]+:[a-z0-9_]+:[a-z0-9_]+/', $tmp)) $typeFilter="List:".$tmp; + break; + } + $this->export_fields_array[$r][$fieldname]=$fieldlabel; + $this->export_TypeFields_array[$r][$fieldname]=$typeFilter; + $this->export_entities_array[$r][$fieldname]=$keyforelement; + } +} +// End add axtra fields diff --git a/htdocs/core/modules/modCommande.class.php b/htdocs/core/modules/modCommande.class.php index 24a1c87182a..8390e1f10a0 100644 --- a/htdocs/core/modules/modCommande.class.php +++ b/htdocs/core/modules/modCommande.class.php @@ -183,52 +183,23 @@ class modCommande extends DolibarrModules $this->export_TypeFields_array[$r]=array('s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','co.label'=>'List:c_country:label:label','co.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','c.ref'=>"Text",'c.ref_client'=>"Text",'c.date_creation'=>"Date",'c.date_commande'=>"Date",'c.amount_ht'=>"Numeric",'c.remise_percent'=>"Numeric",'c.total_ht'=>"Numeric",'c.total_ttc'=>"Numeric",'c.facture'=>"Boolean",'c.fk_statut'=>'Status','c.note_public'=>"Text",'c.date_livraison'=>'Date','cd.description'=>"Text",'cd.product_type'=>'Boolean','cd.tva_tx'=>"Numeric",'cd.qty'=>"Numeric",'cd.total_ht'=>"Numeric",'cd.total_tva'=>"Numeric",'cd.total_ttc'=>"Numeric",'p.rowid'=>'List:product:ref','p.ref'=>'Text','p.label'=>'Text'); $this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','co.label'=>'company','co.code'=>'company','s.phone'=>'company','s.siren'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.siret'=>'company','c.rowid'=>"order",'c.ref'=>"order",'c.ref_client'=>"order",'c.fk_soc'=>"order",'c.date_creation'=>"order",'c.date_commande'=>"order",'c.amount_ht'=>"order",'c.remise_percent'=>"order",'c.total_ht'=>"order",'c.total_ttc'=>"order",'c.facture'=>"order",'c.fk_statut'=>"order",'c.note'=>"order",'c.date_livraison'=>"order",'cd.rowid'=>'order_line','cd.label'=>"order_line",'cd.description'=>"order_line",'cd.product_type'=>'order_line','cd.tva_tx'=>"order_line",'cd.qty'=>"order_line",'cd.total_ht'=>"order_line",'cd.total_tva'=>"order_line",'cd.total_ttc'=>"order_line",'p.rowid'=>'product','p.ref'=>'product','p.label'=>'product'); $this->export_dependencies_array[$r]=array('order_line'=>'cd.rowid','product'=>'cd.rowid'); // To add unique key if we ask a field of a child to avoid the DISTINCT to discard them - // Add extra fields - $sql="SELECT name, label, type FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'commande' AND entity IN (0, ".$conf->entity.')'; - $resql=$this->db->query($sql); - if ($resql) // This can fail when class is used on old database (during migration for example) - { - while ($obj=$this->db->fetch_object($resql)) - { - $fieldname='extra.'.$obj->name; - $fieldlabel=ucfirst($obj->label); - $typeFilter="Text"; - switch($obj->type) - { - case 'int': - case 'double': - case 'price': - $typeFilter="Numeric"; - break; - case 'date': - case 'datetime': - $typeFilter="Date"; - break; - case 'boolean': - $typeFilter="Boolean"; - break; - case 'sellist': - $tmp=''; - $tmpparam=unserialize($obj->param); // $tmp ay be array 'options' => array 'c_currencies:code_iso:code_iso' => null - if ($tmpparam['options'] && is_array($tmpparam['options'])) $tmp=array_shift(array_keys($tmpparam['options'])); - if (preg_match('/[a-z0-9_]+:[a-z0-9_]+:[a-z0-9_]+/', $tmp)) $typeFilter="List:".$tmp; - break; - } - $this->export_fields_array[$r][$fieldname]=$fieldlabel; - $this->export_TypeFields_array[$r][$fieldname]=$typeFilter; - $this->export_entities_array[$r][$fieldname]='order'; - } - } - // End add extra fields + $keyforselect='commande'; $keyforelement='order'; $keyforaliasextra='extra'; + include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php'; + $keyforselect='commandedet'; $keyforelement='order_line'; $keyforaliasextra='extra2'; + include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php'; + $keyforselect='product'; $keyforelement='product'; $keyforaliasextra='extra3'; + include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php'; $this->export_sql_start[$r]='SELECT DISTINCT '; $this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'societe as s'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_country as co ON s.fk_pays = co.rowid,'; $this->export_sql_end[$r] .=' '.MAIN_DB_PREFIX.'commande as c'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'user as uc ON c.fk_user_author = uc.rowid'; - $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'user as uv ON c.fk_user_valid = uc.rowid'; + $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'user as uv ON c.fk_user_valid = uv.rowid'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'commande_extrafields as extra ON c.rowid = extra.fk_object'; $this->export_sql_end[$r] .=' , '.MAIN_DB_PREFIX.'commandedet as cd'; + $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'commandedet_extrafields as extra2 on cd.rowid = extra2.fk_object'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'product as p on cd.fk_product = p.rowid'; + $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'product_extrafields as extra3 on p.rowid = extra3.fk_object'; $this->export_sql_end[$r] .=' WHERE c.fk_soc = s.rowid AND c.rowid = cd.fk_commande'; $this->export_sql_end[$r] .=' AND c.entity IN ('.getEntity('commande',1).')'; } diff --git a/htdocs/core/modules/modFacture.class.php b/htdocs/core/modules/modFacture.class.php index 72437d80b90..0b237c02c77 100644 --- a/htdocs/core/modules/modFacture.class.php +++ b/htdocs/core/modules/modFacture.class.php @@ -185,46 +185,12 @@ class modFacture extends DolibarrModules $this->export_TypeFields_array[$r]=array('s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.code_compta'=>'Text','s.code_compta_fournisseur'=>'Text','s.tva_intra'=>'Text','f.facnumber'=>"Text",'f.datec'=>"Date",'f.datef'=>"Date",'f.date_lim_reglement'=>"Date",'f.total'=>"Numeric",'f.total_ttc'=>"Numeric",'f.tva'=>"Numeric",'f.paye'=>"Boolean",'f.fk_statut'=>'Status','f.note_private'=>"Text",'f.note_public'=>"Text",'fd.description'=>"Text",'fd.subprice'=>"Numeric",'fd.tva_tx'=>"Numeric",'fd.qty'=>"Numeric",'fd.total_ht'=>"Numeric",'fd.total_tva'=>"Numeric",'fd.total_ttc'=>"Numeric",'fd.date_start'=>"Date",'fd.date_end'=>"Date",'fd.special_code'=>'Numeric','fd.product_type'=>"Numeric",'fd.fk_product'=>'List:product:label','p.ref'=>'Text','p.label'=>'Text','p.accountancy_code_sell'=>'Text'); $this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','c.code'=>'company','s.phone'=>'company','s.siren'=>'company','s.siret'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.code_compta'=>'company','s.code_compta_fournisseur'=>'company','s.tva_intra'=>'company','f.rowid'=>"invoice",'f.facnumber'=>"invoice",'f.datec'=>"invoice",'f.datef'=>"invoice",'f.date_lim_reglement'=>"invoice",'f.total'=>"invoice",'f.total_ttc'=>"invoice",'f.tva'=>"invoice",'f.paye'=>"invoice",'f.fk_statut'=>'invoice','f.note_private'=>"invoice",'f.note_public'=>"invoice",'fd.rowid'=>'invoice_line','fd.label'=>"invoice_line",'fd.description'=>"invoice_line",'fd.subprice'=>"invoice_line",'fd.total_ht'=>"invoice_line",'fd.total_tva'=>"invoice_line",'fd.total_ttc'=>"invoice_line",'fd.tva_tx'=>"invoice_line",'fd.qty'=>"invoice_line",'fd.date_start'=>"invoice_line",'fd.date_end'=>"invoice_line",'fd.special_code'=>'invoice_line','fd.product_type'=>'invoice_line','fd.fk_product'=>'product','p.ref'=>'product','p.label'=>'product','p.accountancy_code_sell'=>'product','f.fk_user_author'=>'user','uc.login'=>'user','f.fk_user_valid'=>'user','uv.login'=>'user'); $this->export_dependencies_array[$r]=array('invoice_line'=>'fd.rowid','product'=>'fd.rowid'); // To add unique key if we ask a field of a child to avoid the DISTINCT to discard them - // Add extra fields - $sql="SELECT name, label, type, param FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'facture'"; - $resql=$this->db->query($sql); - if ($resql) // This can fail when class is used on old database (during migration for example) - { - while ($obj=$this->db->fetch_object($resql)) - { - $fieldname='extra.'.$obj->name; - $fieldlabel=ucfirst($obj->label); - $typeFilter="Text"; - switch($obj->type) - { - case 'int': - case 'double': - case 'price': - $typeFilter="Numeric"; - break; - case 'date': - case 'datetime': - $typeFilter="Date"; - break; - case 'boolean': - $typeFilter="Boolean"; - break; - case 'sellist': - $tmp=''; - $tmpparam=unserialize($obj->param); // $tmp ay be array 'options' => array 'c_currencies:code_iso:code_iso' => null - if ($tmpparam['options'] && is_array($tmpparam['options'])) { - $tmpkeys=array_keys($tmpparam['options']); - $tmp=array_shift($tmpkeys); - } - if (preg_match('/[a-z0-9_]+:[a-z0-9_]+:[a-z0-9_]+/', $tmp)) $typeFilter="List:".$tmp; - break; - } - $this->export_fields_array[$r][$fieldname]=$fieldlabel; - $this->export_TypeFields_array[$r][$fieldname]=$typeFilter; - $this->export_entities_array[$r][$fieldname]='facture'; - } - } - // End add axtra fields + $keyforselect='facture'; $keyforelement='invoice'; $keyforaliasextra='extra'; + include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php'; + $keyforselect='facturedet'; $keyforelement='invoice_line'; $keyforaliasextra='extra2'; + include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php'; + $keyforselect='product'; $keyforelement='product'; $keyforaliasextra='extra3'; + include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php'; $this->export_sql_start[$r]='SELECT DISTINCT '; $this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'societe as s'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_country as c on s.fk_pays = c.rowid,'; @@ -233,7 +199,9 @@ class modFacture extends DolibarrModules $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'user as uv ON f.fk_user_valid = uv.rowid'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'facture_extrafields as extra ON f.rowid = extra.fk_object'; $this->export_sql_end[$r] .=' , '.MAIN_DB_PREFIX.'facturedet as fd'; + $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'facturedet_extrafields as extra2 on fd.rowid = extra2.fk_object'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'product as p on (fd.fk_product = p.rowid)'; + $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'product_extrafields as extra3 on p.rowid = extra3.fk_object'; $this->export_sql_end[$r] .=' WHERE f.fk_soc = s.rowid AND f.rowid = fd.fk_facture'; $this->export_sql_end[$r] .=' AND f.entity IN ('.getEntity('facture',1).')'; $r++; @@ -247,46 +215,8 @@ class modFacture extends DolibarrModules $this->export_TypeFields_array[$r]=array('s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.code_compta'=>'Text','s.code_compta_fournisseur'=>'Text','s.tva_intra'=>'Text','f.rowid'=>"List:facture:facnumber",'f.facnumber'=>"Text",'f.datec'=>"Date",'f.datef'=>"Date",'f.date_lim_reglement'=>"Date",'f.total'=>"Numeric",'f.total_ttc'=>"Numeric",'f.tva'=>"Numeric",'f.paye'=>"Boolean",'f.fk_statut'=>'Status','f.note_private'=>"Text",'f.note_public'=>"Text",'pf.amount'=>'Numeric','p.datep'=>'Date','p.num_paiement'=>'Numeric','p.fk_bank'=>'Numeric','p.note'=>'Text'); $this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','c.code'=>'company','s.phone'=>'company','s.siren'=>'company','s.siret'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.code_compta'=>'company','s.code_compta_fournisseur'=>'company','s.tva_intra'=>'company','f.rowid'=>"invoice",'f.facnumber'=>"invoice",'f.datec'=>"invoice",'f.datef'=>"invoice",'f.date_lim_reglement'=>"invoice",'f.total'=>"invoice",'f.total_ttc'=>"invoice",'f.tva'=>"invoice",'f.paye'=>"invoice",'f.fk_statut'=>'invoice','f.note_private'=>"invoice",'f.note_public'=>"invoice",'p.rowid'=>'payment','p.ref'=>'payment','p.amount'=>'payment','pf.amount'=>'payment','p.datep'=>'payment','p.num_paiement'=>'payment','pt.code'=>'payment','p.fk_bank'=>'payment','p.note'=>'payment','f.fk_user_author'=>'user','uc.login'=>'user','f.fk_user_valid'=>'user','uv.login'=>'user'); $this->export_dependencies_array[$r]=array('payment'=>'p.rowid'); // To add unique key if we ask a field of a child to avoid the DISTINCT to discard them - // Add extra fields - $sql="SELECT name, label, type, param FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'facture'"; - $resql=$this->db->query($sql); - if ($resql) // This can fail when class is used on old database (during migration for example) - { - while ($obj=$this->db->fetch_object($resql)) - { - $fieldname='extra.'.$obj->name; - $fieldlabel=ucfirst($obj->label); - $typeFilter="Text"; - switch($obj->type) - { - case 'int': - case 'double': - case 'price': - $typeFilter="Numeric"; - break; - case 'date': - case 'datetime': - $typeFilter="Date"; - break; - case 'boolean': - $typeFilter="Boolean"; - break; - case 'sellist': - $tmp=''; - $tmpparam=unserialize($obj->param); // $tmp ay be array 'options' => array 'c_currencies:code_iso:code_iso' => null - if ($tmpparam['options'] && is_array($tmpparam['options'])) { - $tmpkeys=array_keys($tmpparam['options']); - $tmp=array_shift($tmpkeys); - } - if (preg_match('/[a-z0-9_]+:[a-z0-9_]+:[a-z0-9_]+/', $tmp)) $typeFilter="List:".$tmp; - break; - } - $this->export_fields_array[$r][$fieldname]=$fieldlabel; - $this->export_TypeFields_array[$r][$fieldname]=$typeFilter; - $this->export_entities_array[$r][$fieldname]='facture'; - } - } - // End add axtra fields + $keyforselect='facture'; $keyforelement='invoice'; $keyforaliasextra='extra'; + include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php'; $this->export_sql_start[$r]='SELECT DISTINCT '; $this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'societe as s'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_country as c on s.fk_pays = c.rowid,'; diff --git a/htdocs/core/modules/modPropale.class.php b/htdocs/core/modules/modPropale.class.php index 62fe7d2defe..65f5a4729b5 100644 --- a/htdocs/core/modules/modPropale.class.php +++ b/htdocs/core/modules/modPropale.class.php @@ -176,52 +176,23 @@ class modPropale extends DolibarrModules $this->export_TypeFields_array[$r]=array('s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','co.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','c.ref'=>"Text",'c.ref_client'=>"Text",'c.datec'=>"Date",'c.datep'=>"Date",'c.fin_validite'=>"Date",'c.remise_percent'=>"Numeric",'c.total_ht'=>"Numeric",'c.total'=>"Numeric",'c.fk_statut'=>'Status','c.note_public'=>"Text",'c.date_livraison'=>'Date','cd.description'=>"Text",'cd.product_type'=>'Boolean','cd.tva_tx'=>"Numeric",'cd.qty'=>"Numeric",'cd.total_ht'=>"Numeric",'cd.total_tva'=>"Numeric",'cd.total_ttc'=>"Numeric",'p.ref'=>'Text','p.label'=>'Text'); $this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','co.code'=>'company','s.phone'=>'company','s.siren'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.siret'=>'company','c.rowid'=>"propal",'c.ref'=>"propal",'c.ref_client'=>"propal",'c.fk_soc'=>"propal",'c.datec'=>"propal",'c.datep'=>"propal",'c.fin_validite'=>"propal",'c.remise_percent'=>"propal",'c.total_ht'=>"propal",'c.total'=>"propal",'c.fk_statut'=>"propal",'c.note_public'=>"propal",'c.date_livraison'=>"propal",'cd.rowid'=>'propal_line','cd.label'=>"propal_line",'cd.description'=>"propal_line",'cd.product_type'=>'propal_line','cd.tva_tx'=>"propal_line",'cd.qty'=>"propal_line",'cd.total_ht'=>"propal_line",'cd.total_tva'=>"propal_line",'cd.total_ttc'=>"propal_line",'p.rowid'=>'product','p.ref'=>'product','p.label'=>'product'); $this->export_dependencies_array[$r]=array('propal_line'=>'cd.rowid','product'=>'cd.rowid'); // To add unique key if we ask a field of a child to avoid the DISTINCT to discard them - // Add extra fields - $sql="SELECT name, label, type FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'propal' AND entity IN (0, ".$conf->entity.')'; - $resql=$this->db->query($sql); - if ($resql) // This can fail when class is used on old database (during migration for example) - { - while ($obj=$this->db->fetch_object($resql)) - { - $fieldname='extra.'.$obj->name; - $fieldlabel=ucfirst($obj->label); - $typeFilter="Text"; - switch($obj->type) - { - case 'int': - case 'double': - case 'price': - $typeFilter="Numeric"; - break; - case 'date': - case 'datetime': - $typeFilter="Date"; - break; - case 'boolean': - $typeFilter="Boolean"; - break; - case 'sellist': - $tmp=''; - $tmpparam=unserialize($obj->param); // $tmp ay be array 'options' => array 'c_currencies:code_iso:code_iso' => null - if ($tmpparam['options'] && is_array($tmpparam['options'])) $tmp=array_shift(array_keys($tmpparam['options'])); - if (preg_match('/[a-z0-9_]+:[a-z0-9_]+:[a-z0-9_]+/', $tmp)) $typeFilter="List:".$tmp; - break; - } - $this->export_fields_array[$r][$fieldname]=$fieldlabel; - $this->export_TypeFields_array[$r][$fieldname]=$typeFilter; - $this->export_entities_array[$r][$fieldname]='propal'; - } - } - // End add extra fields + $keyforselect='propal'; $keyforelement='propal'; $keyforaliasextra='extra'; + include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php'; + $keyforselect='propaldet'; $keyforelement='propal_line'; $keyforaliasextra='extra2'; + include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php'; + $keyforselect='product'; $keyforelement='product'; $keyforaliasextra='extra3'; + include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php'; $this->export_sql_start[$r]='SELECT DISTINCT '; $this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'societe as s '; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_country as co ON s.fk_pays = co.rowid,'; $this->export_sql_end[$r] .=' '.MAIN_DB_PREFIX.'propal as c'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'user as uc ON c.fk_user_author = uc.rowid'; - $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'user as uv ON c.fk_user_valid = uc.rowid'; + $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'user as uv ON c.fk_user_valid = uv.rowid'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'propal_extrafields as extra ON c.rowid = extra.fk_object'; $this->export_sql_end[$r] .=', '.MAIN_DB_PREFIX.'propaldet as cd'; + $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'propaldet_extrafields as extra2 on cd.rowid = extra2.fk_object'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'product as p on (cd.fk_product = p.rowid)'; + $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'product_extrafields as extra3 on p.rowid = extra3.fk_object'; $this->export_sql_end[$r] .=' WHERE c.fk_soc = s.rowid AND c.rowid = cd.fk_propal'; $this->export_sql_end[$r] .=' AND c.entity IN ('.getEntity('propal',1).')'; } diff --git a/htdocs/langs/en_US/products.lang b/htdocs/langs/en_US/products.lang index f345e59891a..8c850fdabd3 100644 --- a/htdocs/langs/en_US/products.lang +++ b/htdocs/langs/en_US/products.lang @@ -252,7 +252,7 @@ UnitPmp=Net unit VWAP CostPmpHT=Net total VWAP ProductUsedForBuild=Auto consumed by production ProductBuilded=Production completed -ProductsMultiPrice=Product multi-price +ProductsMultiPrice=Products and prices for each price level ProductsOrServiceMultiPrice=Customer prices (of products or services, multi-prices) ProductSellByQuarterHT=Products turnover quarterly before tax ServiceSellByQuarterHT=Services turnover quarterly before tax -- GitLab